Avoid containment checks on equal formulae.
* src/ltlvisit/contain.cc (language_containment_checker::contained, language_containment_checker::neg_contained, language_containment_checker::contained_neg): Detect cases where both formulae are equal.
This commit is contained in:
parent
58bbaa0859
commit
c54627bebd
1 changed files with 8 additions and 0 deletions
|
|
@ -89,6 +89,8 @@ namespace spot
|
|||
bool
|
||||
language_containment_checker::contained(const formula* l, const formula* g)
|
||||
{
|
||||
if (l == g)
|
||||
return true;
|
||||
record_* rl = register_formula_(l);
|
||||
const formula* ng = unop::instance(unop::Not, g->clone());
|
||||
record_* rng = register_formula_(ng);
|
||||
|
|
@ -101,12 +103,16 @@ namespace spot
|
|||
language_containment_checker::neg_contained(const formula* l,
|
||||
const formula* g)
|
||||
{
|
||||
if (l == g)
|
||||
return false;
|
||||
const formula* nl = unop::instance(unop::Not, l->clone());
|
||||
record_* rnl = register_formula_(nl);
|
||||
const formula* ng = unop::instance(unop::Not, g->clone());
|
||||
record_* rng = register_formula_(ng);
|
||||
nl->destroy();
|
||||
ng->destroy();
|
||||
if (nl == g)
|
||||
return true;
|
||||
return incompatible_(rnl, rng);
|
||||
}
|
||||
|
||||
|
|
@ -115,6 +121,8 @@ namespace spot
|
|||
language_containment_checker::contained_neg(const formula* l,
|
||||
const formula* g)
|
||||
{
|
||||
if (l == g)
|
||||
return false;
|
||||
record_* rl = register_formula_(l);
|
||||
record_* rg = register_formula_(g);
|
||||
return incompatible_(rl, rg);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue