* src/tgbaalgos/ltl2tgba_fm.cc (ltl_trad_visitor::visit) <unop::G>:
suppress the GFy optimisation introduced on 2003-11-26, it is generalized by the identification of states with same symbolic rewriting introduced on 2004-02-02.
This commit is contained in:
parent
4741dc02bf
commit
5cb4048120
2 changed files with 19 additions and 17 deletions
|
|
@ -1,5 +1,10 @@
|
|||
2004-02-16 Alexandre Duret-Lutz <adl@src.lip6.fr>
|
||||
|
||||
* src/tgbaalgos/ltl2tgba_fm.cc (ltl_trad_visitor::visit) <unop::G>:
|
||||
suppress the GFy optimisation introduced on 2003-11-26, it is
|
||||
generalized by the identification of states with same symbolic
|
||||
rewriting introduced on 2004-02-02.
|
||||
|
||||
* lbtt/: Merge lbtt 1.0.3.
|
||||
|
||||
2004-02-13 Alexandre Duret-Lutz <adl@src.lip6.fr>
|
||||
|
|
|
|||
|
|
@ -321,25 +321,22 @@ namespace spot
|
|||
}
|
||||
case unop::G:
|
||||
{
|
||||
// The paper suggests that we optimize GFy
|
||||
// as
|
||||
// r(GFy) = (r(y) + a(y))r(XGFy)
|
||||
// instead of
|
||||
// r(GFy) = (r(y) + a(y)r(XFy)).r(XGFy)
|
||||
// but this is just a particular case
|
||||
// of the "merge all states with the same
|
||||
// symbolic rewriting" optimization we do later.
|
||||
// (r(Fy).r(GFy) and r(GFy) have the same symbolic
|
||||
// rewriting.) Let's keep things simple here.
|
||||
|
||||
// r(Gy) = r(y)r(XGy)
|
||||
const formula* child = node->child();
|
||||
int x = dict_.register_next_variable(node);
|
||||
// GFy is pretty frequent and easy to optimize, so we
|
||||
// want to detect it.
|
||||
const unop* Fy = dynamic_cast<const unop*>(child);
|
||||
if (Fy && Fy->op() == unop::F)
|
||||
{
|
||||
// r(GFy) = (r(y) + a(y))r(XGFy)
|
||||
const formula* child = Fy->child();
|
||||
bdd y = recurse(child);
|
||||
int a = dict_.register_a_variable(child);
|
||||
res_ = (y | bdd_ithvar(a)) & bdd_ithvar(x);
|
||||
}
|
||||
else
|
||||
{
|
||||
// r(Gy) = r(y)r(XGy)
|
||||
bdd y = recurse(child);
|
||||
res_ = y & bdd_ithvar(x);
|
||||
}
|
||||
bdd y = recurse(child);
|
||||
res_ = y & bdd_ithvar(x);
|
||||
return;
|
||||
}
|
||||
case unop::Not:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue