def check_exist(self, formula, init_states): tableau = Tableau(formula, self._atomic_str) prod = tableau.product(self._model) # return False return prod.has_fair_path(tableau.initial_states & init_states, tableau.fairness_constraints)
def get_exists_nodes(self, formula): tableau = Tableau(formula, self._atomic_str) prod = tableau.product(self._model) print('#relations', prod.count_relations()) print( '#reachable states', prod.count_reachable_states(tableau.initial_states & self._model.atomic)) states = prod.find_fair_nodes(tableau.initial_states, tableau.fairness_constraints) states = bdd_utils.only_consider_prims(states, self._model.msb) bdd_utils.print_debug_bdd('states', states) return states