Commit 8cbec952 authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz
Browse files

* src/tgba/tgbaproduct.cc: Fix computation of common acceptance

conditions.
parent c412cd4c
2006-07-19 Alexandre Duret-Lutz <adl@src.lip6.fr>
* src/tgba/tgbaproduct.cc: Fix computation of common acceptance
conditions.
* src/tgba/bdddict.cc, src/tgba/bdddict.cc (register_clone_acc):
New function.
* src/tgba/tgbaproduct.cc, src/tgba/tgbaproduct.hh: Use it to
distinguish acceptance conditions that are identical in both
operands.
* src/tgbatest/explpro4.test: New file.
* src/tgbatest/explpro2.test, src/tgbatest/Makefile.am: Adjust.
* src/tgbaalgos/ltl2tgba_fm.cc (language_containment_checker): Move ...
* src/ltlvisit/contain.cc, src/ltlvisit/contain.hh
(spot::ltl::language_containment_checker): ... in these new files.
......
......@@ -182,14 +182,18 @@ namespace spot
bdd rna = right_->neg_acceptance_conditions();
right_common_acc_ = bdd_newpair();
bdd common = bdd_exist(lna, bdd_exist(lna, rna));
while (common != bddtrue)
bdd tmp = lna;
while (tmp != bddtrue)
{
assert(bdd_high(common) == bddfalse);
int var = bdd_var(common);
int varclone = dict_->register_clone_acc(var, this);
bdd_setpair(right_common_acc_, var, varclone);
common = bdd_low(common);
assert(bdd_high(tmp) == bddfalse);
int var = bdd_var(tmp);
if ((bdd_nithvar(var) & rna) == rna)
{
int varclone = dict_->register_clone_acc(var, this);
bdd_setpair(right_common_acc_, var, varclone);
}
tmp = bdd_low(tmp);
}
bdd lac = left_->all_acceptance_conditions();
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment