Have scc_map keep track of APs that are reachable from a SCC.
* src/tgbaalgos/scc.hh (scc_map::scc): Add a supp_rec member to hold reachable APs. * src/tgbaalgos/scc.cc (scc_map::update_supp_rec): New function, to update supp_rec. (scc_map::build_map): Call it. (scc_map::aprec_set_of): New function. (dump_scc_dot): Show the output of aprec_set_of().
This commit is contained in:
parent
b3486965a0
commit
fa8dd7f160
3 changed files with 63 additions and 5 deletions
|
|
@ -113,6 +113,14 @@ namespace spot
|
|||
/// \pre This should only be called once build_map() has run.
|
||||
bdd ap_set_of(unsigned n) const;
|
||||
|
||||
/// \brief Return the set of atomic properties reachable from this SCC.
|
||||
///
|
||||
/// \return a BDD that is a conjuction of all atomic properties
|
||||
/// occurring on the transitions reachable from this SCC n.
|
||||
///
|
||||
/// \pre This should only be called once build_map() has run.
|
||||
bdd aprec_set_of(unsigned n) const;
|
||||
|
||||
/// \brief Return the set of acceptance conditions occurring in an SCC.
|
||||
///
|
||||
/// \pre This should only be called once build_map() has run.
|
||||
|
|
@ -135,13 +143,14 @@ namespace spot
|
|||
unsigned self_loops() const;
|
||||
|
||||
protected:
|
||||
|
||||
bdd update_supp_rec(unsigned state);
|
||||
int relabel_component();
|
||||
|
||||
struct scc
|
||||
{
|
||||
public:
|
||||
scc(int index) : index(index), acc(bddfalse), supp(bddtrue) {};
|
||||
scc(int index) : index(index), acc(bddfalse),
|
||||
supp(bddtrue), supp_rec(bddtrue) {};
|
||||
/// Index of the SCC.
|
||||
int index;
|
||||
/// The union of all acceptance conditions of transitions which
|
||||
|
|
@ -153,6 +162,8 @@ namespace spot
|
|||
cond_set conds;
|
||||
/// Conjunction of atomic propositions used in the SCC.
|
||||
bdd supp;
|
||||
/// Conjunction of atomic propositions used in the SCC.
|
||||
bdd supp_rec;
|
||||
/// Successor SCC.
|
||||
succ_type succ;
|
||||
};
|
||||
|
|
@ -186,7 +197,7 @@ namespace spot
|
|||
// SCC number "n" in H_ corresponds to entry
|
||||
// "n" in SCC_MAP_.
|
||||
unsigned self_loops_; // Self loops count.
|
||||
};
|
||||
};
|
||||
|
||||
scc_stats build_scc_stats(const tgba* a);
|
||||
scc_stats build_scc_stats(const scc_map& m);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue