22 #include <spot/misc/hash.hh>
24 #include <spot/twa/twa.hh>
28 #include <spot/misc/bddlt.hh>
29 #include <spot/ta/ta.hh>
34 class state_ta_explicit;
35 class ta_explicit_succ_iterator;
54 add_to_initial_states_set(
state* s, bdd condition = bddfalse);
60 bool add_at_beginning =
false);
63 delete_stuttering_transitions();
67 virtual const_states_set_t
68 get_initial_states_set()
const;
74 succ_iter(
const spot::state* s, bdd condition)
const;
86 is_livelock_accepting_state(
const spot::state* s)
const;
106 artificial_initial_state_ = s;
111 delete_stuttering_and_hole_successors(
const spot::state* s);
121 ta_explicit(
const ta_explicit& other) =
delete;
122 ta_explicit& operator=(
const ta_explicit& other) =
delete;
125 state_ta_explicit* artificial_initial_state_;
126 ta::states_set_t states_set_;
127 ta::const_states_set_t initial_states_set_;
145 typedef std::list<transition*> transitions;
148 bool is_initial_state =
false,
149 bool is_accepting_state =
false,
150 bool is_livelock_accepting_state =
false,
151 transitions* trans =
nullptr) :
152 tgba_state_(tgba_state), tgba_condition_(tgba_condition),
153 is_initial_state_(is_initial_state), is_accepting_state_(
154 is_accepting_state), is_livelock_accepting_state_(
155 is_livelock_accepting_state), transitions_(trans)
177 get_transitions()
const;
181 get_transitions(bdd condition)
const;
184 add_transition(transition* t,
bool add_at_beginning =
false);
187 get_tgba_state()
const;
189 get_tgba_condition()
const;
191 is_accepting_state()
const;
193 set_accepting_state(
bool is_accepting_state);
195 is_livelock_accepting_state()
const;
197 set_livelock_accepting_state(
bool is_livelock_accepting_state);
200 is_initial_state()
const;
202 set_initial_state(
bool is_initial_state);
206 is_hole_state()
const;
211 delete_stuttering_and_hole_successors();
216 state_ta_explicit* stuttering_reachable_livelock;
218 const state* tgba_state_;
219 const bdd tgba_condition_;
220 bool is_initial_state_;
221 bool is_accepting_state_;
222 bool is_livelock_accepting_state_;
223 transitions* transitions_;
224 std::unordered_map<int, transitions*, std::hash<int>>
225 transitions_by_condition;
237 virtual bool first();
239 virtual bool done()
const;
241 virtual const state* dst()
const;
242 virtual bdd cond()
const;
247 state_ta_explicit::transitions* transitions_;
248 state_ta_explicit::transitions::const_iterator i_;
251 typedef std::shared_ptr<ta_explicit> ta_explicit_ptr;
252 typedef std::shared_ptr<const ta_explicit> const_ta_explicit_ptr;
254 inline ta_explicit_ptr
255 make_ta_explicit(
const const_twa_ptr& tgba,
259 return std::make_shared<ta_explicit>(tgba, n_acc, artificial_initial_state);
Successor iterators used by spot::ta_explicit.
Definition: taexplicit.hh:230
spot::state * get_artificial_initial_state() const
Get the artificial initial state set of the automaton. Return 0 if this artificial state is not imple...
Definition: taexplicit.hh:98
Abstract class for states.
Definition: twa.hh:43
Explicit transitions.
Definition: taexplicit.hh:138
Definition: taexplicit.hh:40
virtual void destroy() const
Release a state.
Definition: taexplicit.hh:167
Definition: taexplicit.hh:132
A Testing Automaton.
Definition: ta.hh:75
Iterate over the successors of a state.
Definition: ta.hh:197