* src/tgba/succiterconcrete.cc (tgba_succ_iterator_concrete::next):

Fix computation of states sharing the same accepting state.
This commit is contained in:
Alexandre Duret-Lutz 2003-07-09 14:05:49 +00:00
parent 2a8b1b7471
commit d14eee25bf
2 changed files with 17 additions and 3 deletions

View file

@ -1,5 +1,8 @@
2003-07-09 Alexandre Duret-Lutz <aduret@src.lip6.fr>
* src/tgba/succiterconcrete.cc (tgba_succ_iterator_concrete::next):
Fix computation of states sharing the same accepting state.
Make sure we only output one initial state in LBTT's output.
* src/tgbaalgos/lbtt.cc (fill_todo): Add the 'first' argument
to designate initial states.

View file

@ -100,10 +100,21 @@ namespace spot
bdd prop = bdd_exist(cube, data_.acc_set);
// prop = (!a)&b
current_acc_ = bdd_forall(bdd_restrict(as, prop), data_.var_set);
// acc = (Acc[a] | Acc[b])
bdd all = as & current_acc_;
// current_acc_ = (Acc[a] | Acc[b])
assert(current_acc_ != bddfalse);
// Find other transitions included in each of these
// accepting sets.
bdd all = bddtrue;
bdd acc = current_acc_;
do
{
bdd one_acc = bdd_satone(acc);
acc &= !one_acc;
all &= bdd_relprod(as, one_acc, data_.acc_set);
}
while (acc != bddfalse);
// all = (a | (!a)&b) & (Acc[a] | Acc[b])
current_ = bdd_exist(all, data_.acc_set) & dest;
current_ = all & dest;
// current_ = (a | (!a)&b) & (Next...)
}
else