21#include <spot/ta/ta.hh>
22#include <spot/kripke/kripke.hh>
39 ta_state_(ta_state), kripke_state_(kripke_state)
55 get_kripke_state()
const
68 const state* ta_state_;
69 const state* kripke_state_;
84 virtual bool next()
override;
85 virtual bool done()
const override;
89 virtual bdd
cond()
const override;
99 bool next_non_stuttering_();
114 bdd current_condition_;
116 bool is_stuttering_transition_;
117 bdd kripke_source_condition;
118 const state* kripke_current_dest_state;
132 const const_kripke_ptr& kripke_structure);
137 virtual ta::const_states_set_t
178 const const_kripke_ptr&
187 const_kripke_ptr kripke_;
190 ta_product(
const ta_product&) =
delete;
191 ta_product& operator=(
const ta_product&) =
delete;
195 typedef std::shared_ptr<ta_product> ta_product_ptr;
196 typedef std::shared_ptr<const ta_product> const_ta_product_ptr;
197 inline ta_product_ptr product(
const const_ta_ptr& testing_automaton,
198 const const_kripke_ptr& kripke_structure)
200 return std::make_shared<ta_product>(testing_automaton, kripke_structure);
Interface for a Kripke structure.
Definition: kripke.hh:177
A state for spot::ta_product.
Definition: taproduct.hh:33
virtual int compare(const state *other) const override
Compares two states (that come from the same automaton).
state_ta_product(const state *ta_state, const state *kripke_state)
Constructor.
Definition: taproduct.hh:38
virtual size_t hash() const override
Hash a state.
virtual state_ta_product * clone() const override
Duplicate a state.
Abstract class for states.
Definition: twa.hh:47
A lazy product between a Testing automaton and a Kripke structure. (States are computed on the fly....
Definition: taproduct.hh:126
virtual bool is_livelock_accepting_state(const spot::state *s) const override
Return true if s is a livelock-accepting state , otherwise false.
virtual ta_succ_iterator_product * succ_iter(const spot::state *s, bdd changeset) const override
Get an iterator over the successors of state filtred by the changeset on transitions.
virtual ta_succ_iterator_product * succ_iter(const spot::state *s) const override
Get an iterator over the successors of state.
virtual bdd get_state_condition(const spot::state *s) const override
Return a BDD condition that represents the valuation of atomic propositions in the state s.
virtual bool is_initial_state(const spot::state *s) const override
Return true if s is an initial state, otherwise false.
ta_product(const const_ta_ptr &testing_automaton, const const_kripke_ptr &kripke_structure)
Constructor.
virtual std::string format_state(const spot::state *s) const override
Format the state as a string for printing.
virtual ta::const_states_set_t get_initial_states_set() const override
Get the initial states set of the automaton.
virtual bool is_accepting_state(const spot::state *s) const override
Return true if s is a Buchi-accepting state, otherwise false.
bool is_hole_state_in_ta_component(const spot::state *s) const
Return true if the state s has no successor in the TA automaton (the TA component of the product auto...
virtual void free_state(const spot::state *s) const override
Release a state s.
Definition: taproduct.hh:205
void next_kripke_dest()
Move to the next successor in the Kripke structure.
Iterate over the successors of a product computed on the fly.
Definition: taproduct.hh:74
virtual state_ta_product * dst() const override
Get the destination state of the current edge.
virtual bool first() override
Position the iterator on the first successor (if any).
virtual bool done() const override
Check whether the iteration is finished.
bool is_stuttering_transition() const
Return true if the changeset of the current transition is empty.
virtual bool next() override
Jump to the next successor (if any).
virtual bdd cond() const override
Get the condition on the edge leading to this successor.
void next_kripke_dest()
Move to the next successor in the kripke structure.
virtual acc_cond::mark_t acc() const override
Get the acceptance mark of the edge leading to this successor.
void step_()
Internal routines to advance to the next successor.
Iterate over the successors of a state.
Definition: ta.hh:197
A Testing Automaton.
Definition: ta.hh:75
Iterate over the successors of a state.
Definition: twa.hh:394
Definition: automata.hh:26
An acceptance mark.
Definition: acc.hh:84