* src/ltlvisit/basicreduce.cc (basic_reduce_visitor::visit(binop*)):
Factorize.
This commit is contained in:
parent
47e9ac108f
commit
473af5bb1d
2 changed files with 10 additions and 45 deletions
|
|
@ -1,5 +1,8 @@
|
||||||
2004-06-23 Alexandre Duret-Lutz <adl@gnu.org>
|
2004-06-23 Alexandre Duret-Lutz <adl@gnu.org>
|
||||||
|
|
||||||
|
* src/ltlvisit/basicreduce.cc (basic_reduce_visitor::visit(binop*)):
|
||||||
|
Factorize.
|
||||||
|
|
||||||
* src/ltlvisit/basicreduce.hh: New file, extracted from ...
|
* src/ltlvisit/basicreduce.hh: New file, extracted from ...
|
||||||
* src/ltlvisit/reducform.hh: ... here.
|
* src/ltlvisit/reducform.hh: ... here.
|
||||||
* src/ltlvisit/basereduc.cc: Rename as ...
|
* src/ltlvisit/basereduc.cc: Rename as ...
|
||||||
|
|
|
||||||
|
|
@ -232,56 +232,18 @@ namespace spot
|
||||||
switch (bo->op())
|
switch (bo->op())
|
||||||
{
|
{
|
||||||
case binop::Xor:
|
case binop::Xor:
|
||||||
result_ = binop::instance(binop::Xor,
|
|
||||||
basic_reduce(f1),
|
|
||||||
basic_reduce(f2));
|
|
||||||
return;
|
|
||||||
case binop::Equiv:
|
case binop::Equiv:
|
||||||
result_ = binop::instance(binop::Equiv,
|
|
||||||
basic_reduce(f1),
|
|
||||||
basic_reduce(f2));
|
|
||||||
return;
|
|
||||||
case binop::Implies:
|
case binop::Implies:
|
||||||
result_ = binop::instance(binop::Implies,
|
result_ = binop::instance(bo->op(),
|
||||||
basic_reduce(f1),
|
basic_reduce(f1),
|
||||||
basic_reduce(f2));
|
basic_reduce(f2));
|
||||||
return;
|
return;
|
||||||
case binop::U:
|
case binop::U:
|
||||||
|
case binop::R:
|
||||||
f2 = basic_reduce(f2);
|
f2 = basic_reduce(f2);
|
||||||
|
|
||||||
// a U false = false
|
// a U false = false
|
||||||
// a U true = true
|
// a U true = true
|
||||||
if (dynamic_cast<constant*>(f2))
|
|
||||||
{
|
|
||||||
result_ = f2;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
f1 = basic_reduce(f1);
|
|
||||||
|
|
||||||
// X(a) U X(b) = X(a U b)
|
|
||||||
fu1 = dynamic_cast<unop*>(f1);
|
|
||||||
fu2 = dynamic_cast<unop*>(f2);
|
|
||||||
if ((fu1 && fu2) &&
|
|
||||||
(fu1->op() == unop::X) &&
|
|
||||||
(fu2->op() == unop::X))
|
|
||||||
{
|
|
||||||
formula* ftmp = binop::instance(binop::U,
|
|
||||||
basic_reduce(fu1->child()),
|
|
||||||
basic_reduce(fu2->child()));
|
|
||||||
result_ = unop::instance(unop::X, basic_reduce(ftmp));
|
|
||||||
destroy(f1);
|
|
||||||
destroy(f2);
|
|
||||||
destroy(ftmp);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
result_ = binop::instance(binop::U, f1, f2);
|
|
||||||
return;
|
|
||||||
|
|
||||||
case binop::R:
|
|
||||||
f2 = basic_reduce(f2);
|
|
||||||
|
|
||||||
// a R false = false
|
// a R false = false
|
||||||
// a R true = true
|
// a R true = true
|
||||||
if (dynamic_cast<constant*>(f2))
|
if (dynamic_cast<constant*>(f2))
|
||||||
|
|
@ -292,12 +254,13 @@ namespace spot
|
||||||
|
|
||||||
f1 = basic_reduce(f1);
|
f1 = basic_reduce(f1);
|
||||||
|
|
||||||
|
// X(a) U X(b) = X(a U b)
|
||||||
// X(a) R X(b) = X(a R b)
|
// X(a) R X(b) = X(a R b)
|
||||||
fu1 = dynamic_cast<unop*>(f1);
|
fu1 = dynamic_cast<unop*>(f1);
|
||||||
fu2 = dynamic_cast<unop*>(f2);
|
fu2 = dynamic_cast<unop*>(f2);
|
||||||
if ((fu1 && fu2) &&
|
if (fu1 && fu2
|
||||||
(fu1->op() == unop::X) &&
|
&& fu1->op() == unop::X
|
||||||
(fu2->op() == unop::X))
|
&& fu2->op() == unop::X)
|
||||||
{
|
{
|
||||||
formula* ftmp = binop::instance(bo->op(),
|
formula* ftmp = binop::instance(bo->op(),
|
||||||
basic_reduce(fu1->child()),
|
basic_reduce(fu1->child()),
|
||||||
|
|
@ -309,8 +272,7 @@ namespace spot
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
result_ = binop::instance(bo->op(),
|
result_ = binop::instance(bo->op(), f1, f2);
|
||||||
f1, f2);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* Unreachable code. */
|
/* Unreachable code. */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue