Strip useless acceptance conditions in scc_filter().
A useless acceptance conditions is one that is always implied by another. * src/misc/bddop.hh, src/misc/bddop.cc (compute_neg_acceptance_conditions): New function. * src/tgba/tgbaexplicit.hh, src/tgba/tgbaexplicit.cc (set_acceptance_conditions): New function. * src/tgbaalgos/scc.cc (build_map, build_scc_stats, dump_scc_dot): Keep track of useful acceptance conditions. (useful_acc_of): New function. * src/tgbaalgos/scc.hh (scc_stats, scc_map::scc::useful_scc): New attributes. * src/tgbaalgos/sccfilter.cc (filter_iter): Adjust to filter useless acceptance conditions. (scc_filter): Compute useful acceptance conditions and pass them to filter_iter.
This commit is contained in:
parent
5d427f6d15
commit
dfb9c6622b
8 changed files with 130 additions and 11 deletions
|
|
@ -48,4 +48,19 @@ namespace spot
|
|||
|
||||
return all;
|
||||
}
|
||||
|
||||
bdd
|
||||
compute_neg_acceptance_conditions(bdd all_acceptance_conditions)
|
||||
{
|
||||
bdd cur = bdd_support(all_acceptance_conditions);
|
||||
bdd neg = bddtrue;
|
||||
while (cur != bddtrue)
|
||||
{
|
||||
neg &= bdd_nithvar(bdd_var(cur));
|
||||
assert(bdd_low(cur) != bddtrue);
|
||||
cur = bdd_high(cur);
|
||||
}
|
||||
return neg;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue