* src/tgba/succiterconcrete.cc (tgba_succ_iterator_concrete::next):
Fix so that !p.!Acc[g].Acc[f] + p.!Acc[g].Acc[f] + p.Acc[g].!Acc[f] is factored as !p.!Acc[g].Acc[f] + p.(!Acc[g].Acc[f] + Acc[g].!Acc[f]), not !Acc[g].Acc[f] + p.Acc[g].!Acc[f].
This commit is contained in:
parent
bbba8ca966
commit
977d389724
2 changed files with 22 additions and 3 deletions
|
|
@ -1,3 +1,10 @@
|
||||||
|
2003-07-10 Alexandre Duret-Lutz <aduret@src.lip6.fr>
|
||||||
|
|
||||||
|
* src/tgba/succiterconcrete.cc (tgba_succ_iterator_concrete::next):
|
||||||
|
Fix so that !p.!Acc[g].Acc[f] + p.!Acc[g].Acc[f] + p.Acc[g].!Acc[f]
|
||||||
|
is factored as !p.!Acc[g].Acc[f] + p.(!Acc[g].Acc[f] + Acc[g].!Acc[f]),
|
||||||
|
not !Acc[g].Acc[f] + p.Acc[g].!Acc[f].
|
||||||
|
|
||||||
2003-07-09 Alexandre Duret-Lutz <aduret@src.lip6.fr>
|
2003-07-09 Alexandre Duret-Lutz <aduret@src.lip6.fr>
|
||||||
|
|
||||||
* lbtt/: New directory. Contains a patched version of lbtt 1.0.1.
|
* lbtt/: New directory. Contains a patched version of lbtt 1.0.1.
|
||||||
|
|
|
||||||
|
|
@ -102,15 +102,27 @@ namespace spot
|
||||||
current_acc_ = bdd_forall(bdd_restrict(as, prop), data_.var_set);
|
current_acc_ = bdd_forall(bdd_restrict(as, prop), data_.var_set);
|
||||||
// current_acc_ = (Acc[a] | Acc[b])
|
// current_acc_ = (Acc[a] | Acc[b])
|
||||||
assert(current_acc_ != bddfalse);
|
assert(current_acc_ != bddfalse);
|
||||||
// Find other transitions included in each of these
|
// Find other transitions included exactly in each of these
|
||||||
// accepting sets.
|
// accepting sets and are not included in other sets.
|
||||||
|
// Consider
|
||||||
|
// !p.!Acc[g].Acc[f] + p.!Acc[g].Acc[f] + p.Acc[g].!Acc[f]
|
||||||
|
// if current_acc_ = !Acc[g].Acc[f] we
|
||||||
|
// want to compute !p, not (!p + p), because p really
|
||||||
|
// belongs to !Acc[g].Acc[f] + Acc[g].!Acc[f], not
|
||||||
|
// only !Acc[g].Acc[f].
|
||||||
|
// So, first, filter out all transitions like p, which
|
||||||
|
// are also in other accepting sets.
|
||||||
|
bdd fout = bdd_relprod(as, !current_acc_, data_.acc_set);
|
||||||
|
bdd as_fout = as & !fout;
|
||||||
|
// Then, pick the remaining term that are exactly in all
|
||||||
|
// required accepting sets.
|
||||||
bdd all = bddtrue;
|
bdd all = bddtrue;
|
||||||
bdd acc = current_acc_;
|
bdd acc = current_acc_;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
bdd one_acc = bdd_satone(acc);
|
bdd one_acc = bdd_satone(acc);
|
||||||
acc &= !one_acc;
|
acc &= !one_acc;
|
||||||
all &= bdd_relprod(as, one_acc, data_.acc_set);
|
all &= bdd_relprod(as_fout, one_acc, data_.acc_set);
|
||||||
}
|
}
|
||||||
while (acc != bddfalse);
|
while (acc != bddfalse);
|
||||||
// all = (a | (!a)&b) & (Acc[a] | Acc[b])
|
// all = (a | (!a)&b) & (Acc[a] | Acc[b])
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue