Esempio n. 1
0
    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)
Esempio n. 2
0
    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