27 #include "misc/hash.hh"
28 #include "misc/bddlt.hh"
37 typedef std::map<unsigned, bdd> succ_type;
38 typedef std::set<bdd, bdd_less_than> cond_set;
44 scc_map(
const const_twa_ptr& aut);
52 const_twa_ptr get_aut()
const;
59 unsigned scc_count()
const;
64 unsigned initial()
const;
69 const succ_type& succ(
unsigned n)
const;
76 bool trivial(
unsigned n)
const;
81 bool accepting(
unsigned n)
const;
86 const cond_set& cond_set_of(
unsigned n)
const;
98 bdd ap_set_of(
unsigned n)
const;
106 bdd aprec_set_of(
unsigned n)
const;
117 const std::set<acc_cond::mark_t>& useful_acc_of(
unsigned n)
const;
125 const std::list<const state*>& states_of(
unsigned n)
const;
133 const state* one_state_of(
unsigned n)
const;
138 unsigned scc_of_state(
const state* s)
const;
141 unsigned self_loops()
const;
144 bdd update_supp_rec(
unsigned state);
145 int relabel_component();
150 scc(
int index) : index(index), acc(0U),
151 supp(bddtrue), supp_rec(bddfalse),
175 typedef std::list<scc> stack_type;
177 std::stack<acc_cond::mark_t> arc_acc_;
179 std::stack<bdd> arc_cond_;
181 typedef std::unordered_map<
const state*, int,
188 typedef std::pair<const spot::state*, twa_succ_iterator*> pair_state_iter;
189 std::stack<pair_state_iter> todo_;
198 typedef std::vector<scc> scc_map_type;
199 scc_map_type scc_map_;
202 unsigned self_loops_;
205 SPOT_API std::ostream&
206 dump_scc_dot(
const const_twa_ptr& a,
207 std::ostream& out,
bool verbose =
false);
208 SPOT_API std::ostream&
209 dump_scc_dot(
const scc_map& m, std::ostream& out,
bool verbose =
false);
An Equivalence Relation for state*.
Definition: twa.hh:138
succ_type succ
Successor SCC.
Definition: scc.hh:167
Abstract class for states.
Definition: twa.hh:40
cond_set conds
Set of conditions used in the SCC.
Definition: scc.hh:161
std::set< acc_cond::mark_t > useful_acc
Set of acceptance combinations used in the SCC.
Definition: scc.hh:171
Hash Function for state*.
Definition: twa.hh:162
bdd supp_rec
Conjunction of atomic propositions used in the SCC.
Definition: scc.hh:165
bool trivial
Trivial SCC have one state and no self-loops.
Definition: scc.hh:169
acc_cond::mark_t acc
Definition: scc.hh:157
std::list< const state * > states
States of the component.
Definition: scc.hh:159
bdd supp
Conjunction of atomic propositions used in the SCC.
Definition: scc.hh:163
Build a map of Strongly Connected components in in a TGBA.
Definition: scc.hh:34