22 #include "misc/hash.hh"
28 #include "misc/bddlt.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(
spot::state* s);
121 ta_explicit(
const ta_explicit& other) SPOT_DELETED;
122 ta_explicit& operator=(
const ta_explicit& other) SPOT_DELETED;
125 state_ta_explicit* artificial_initial_state_;
126 ta::states_set_t states_set_;
127 ta::states_set_t initial_states_set_;
145 typedef std::list<transition*> transitions;
148 bool is_initial_state =
false,
bool is_accepting_state =
false,
149 bool is_livelock_accepting_state =
false, transitions* trans = 0) :
150 tgba_state_(tgba_state), tgba_condition_(tgba_condition),
151 is_initial_state_(is_initial_state), is_accepting_state_(
152 is_accepting_state), is_livelock_accepting_state_(
153 is_livelock_accepting_state), transitions_(trans)
175 get_transitions()
const;
179 get_transitions(bdd condition)
const;
182 add_transition(transition* t,
bool add_at_beginning =
false);
185 get_tgba_state()
const;
187 get_tgba_condition()
const;
189 is_accepting_state()
const;
191 set_accepting_state(
bool is_accepting_state);
193 is_livelock_accepting_state()
const;
195 set_livelock_accepting_state(
bool is_livelock_accepting_state);
198 is_initial_state()
const;
200 set_initial_state(
bool is_initial_state);
204 is_hole_state()
const;
209 delete_stuttering_and_hole_successors();
214 state_ta_explicit* stuttering_reachable_livelock;
216 const state* tgba_state_;
217 const bdd tgba_condition_;
218 bool is_initial_state_;
219 bool is_accepting_state_;
220 bool is_livelock_accepting_state_;
221 transitions* transitions_;
222 std::unordered_map<int, transitions*, std::hash<int>>
223 transitions_by_condition;
235 virtual bool first();
237 virtual bool done()
const;
240 current_state()
const;
242 current_condition()
const;
245 current_acceptance_conditions()
const;
248 state_ta_explicit::transitions* transitions_;
249 state_ta_explicit::transitions::const_iterator i_;
252 typedef std::shared_ptr<ta_explicit> ta_explicit_ptr;
253 typedef std::shared_ptr<const ta_explicit> const_ta_explicit_ptr;
255 inline ta_explicit_ptr make_ta_explicit(
const const_twa_ptr& tgba,
258 artificial_initial_state = 0)
260 return std::make_shared<ta_explicit>(tgba, n_acc, artificial_initial_state);
Successor iterators used by spot::ta_explicit.
Definition: taexplicit.hh:228
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:40
Explicit transitions.
Definition: taexplicit.hh:138
Definition: taexplicit.hh:40
virtual void destroy() const
Release a state.
Definition: taexplicit.hh:165
Definition: taexplicit.hh:132
A Testing Automaton.
Definition: ta.hh:75
Iterate over the successors of a state.
Definition: ta.hh:196