23 #include <spot/twa/twagraph.hh> 32 typedef std::vector<unsigned> scc_succs;
37 std::vector<unsigned> states_;
44 acc_(0
U), trivial_(
true), accepting_(
false),
45 rejecting_(
false), useful_(
false)
50 acc_(acc), trivial_(trivial), accepting_(
false),
51 rejecting_(
false), useful_(
false)
55 bool is_trivial()
const 78 bool is_useful()
const 88 const std::vector<unsigned>& states()
const 93 const scc_succs& succ()
const 118 typedef scc_info_node::scc_succs scc_succs;
122 std::vector<unsigned> sccof_;
123 std::vector<scc_node> node_;
124 const_twa_graph_ptr aut_;
127 void determine_usefulness();
129 const scc_node& node(
unsigned scc)
const 137 const_twa_graph_ptr get_aut()
const 142 unsigned scc_count()
const 147 bool reachable_state(
unsigned st)
const 149 return scc_of(st) != -1
U;
152 unsigned scc_of(
unsigned st)
const 157 std::vector<scc_node>::const_iterator begin()
const 159 return node_.begin();
162 std::vector<scc_node>::const_iterator end()
const 167 std::vector<scc_node>::const_iterator cbegin()
const 169 return node_.cbegin();
172 std::vector<scc_node>::const_iterator cend()
const 177 std::vector<scc_node>::const_reverse_iterator rbegin()
const 179 return node_.rbegin();
182 std::vector<scc_node>::const_reverse_iterator rend()
const 187 const std::vector<unsigned>& states_of(
unsigned scc)
const 189 return node(scc).states();
192 unsigned one_state_of(
unsigned scc)
const 194 return states_of(scc).front();
200 SPOT_ASSERT(scc_count() - 1 == scc_of(aut_->get_init_state_number()));
201 return scc_count() - 1;
204 const scc_succs& succ(
unsigned scc)
const 206 return node(scc).succ();
209 bool is_trivial(
unsigned scc)
const 211 return node(scc).is_trivial();
216 return node(scc).acc_marks();
219 bool is_accepting_scc(
unsigned scc)
const 221 return node(scc).is_accepting();
224 bool is_rejecting_scc(
unsigned scc)
const 226 return node(scc).is_rejecting();
231 void determine_unknown_acceptance();
233 bool is_useful_scc(
unsigned scc)
const 235 return node(scc).is_useful();
238 bool is_useful_state(
unsigned st)
const 240 return reachable_state(st) && node(scc_of(st)).is_useful();
245 std::vector<std::set<acc_cond::mark_t>> used_acc()
const;
247 std::set<acc_cond::mark_t> used_acc_of(
unsigned scc)
const;
251 std::vector<bool> weak_sccs()
const;
253 bdd scc_ap_support(
unsigned scc)
const;
260 SPOT_API std::ostream&
262 const_twa_graph_ptr aut,
scc_info* sccinfo =
nullptr);
Compute an SCC map and gather assorted information.
Definition: sccinfo.hh:112
Storage for SCC related information.
Definition: sccinfo.hh:29
bool is_accepting() const
True if we are sure that the SCC is accepting.
Definition: sccinfo.hh:64
std::ostream & dump_scc_info_dot(std::ostream &out, const_twa_graph_ptr aut, scc_info *sccinfo=nullptr)
Dump the SCC graph of aut on out.
unsigned initial() const
Get number of the SCC containing the initial state.
Definition: sccinfo.hh:198
bool is_rejecting() const
Definition: sccinfo.hh:73