* src/ltlvisit/syntimpl.cc: Fix detection of purely eventual formulae.

This commit is contained in:
Alexandre Duret-Lutz 2005-05-14 20:56:19 +00:00
parent 2e15a93525
commit 5a39d40b2c
2 changed files with 16 additions and 11 deletions

View file

@ -1,3 +1,7 @@
2005-05-13 Alexandre Duret-Lutz <adl@src.lip6.fr>
* src/ltlvisit/syntimpl.cc: Fix detection of purely eventual formulae.
2005-05-12 Alexandre Duret-Lutz <adl@src.lip6.fr> 2005-05-12 Alexandre Duret-Lutz <adl@src.lip6.fr>
* src/tgbaalgos/ltl2tgba_fm.cc: Fix handling of fair_loop_approx. * src/tgbaalgos/ltl2tgba_fm.cc: Fix handling of fair_loop_approx.

View file

@ -1,4 +1,4 @@
// Copyright (C) 2004 Laboratoire d'Informatique de Paris 6 (LIP6), // Copyright (C) 2004, 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
// département Systèmes Répartis Coopératifs (SRC), Université Pierre // département Systèmes Répartis Coopératifs (SRC), Université Pierre
// et Marie Curie. // et Marie Curie.
// //
@ -98,23 +98,24 @@ namespace spot
case binop::Xor: case binop::Xor:
case binop::Equiv: case binop::Equiv:
case binop::Implies: case binop::Implies:
universal = recurse_un(f1) & recurse_un(f2); universal = recurse_un(f1) && recurse_un(f2);
eventual = recurse_ev(f1) & recurse_ev(f2); eventual = recurse_ev(f1) && recurse_ev(f2);
return; return;
case binop::U: case binop::U:
universal = recurse_un(f1) & recurse_un(f2); universal = recurse_un(f1) & recurse_un(f2);
if ((f1 == constant::true_instance()) || if ((f1 == constant::true_instance())
(recurse_ev(f1))) // Both operand must be purely eventual, unlike in
// the proceedings of Concur'00. (The revision of
// the paper available at
// http://www1.bell-labs.com/project/TMP/ is fixed.)
|| (recurse_ev(f1) && recurse_ev(f2)))
eventual = true; eventual = true;
return; return;
case binop::R: case binop::R:
eventual = recurse_ev(f1) & recurse_ev(f2); eventual = recurse_ev(f1) && recurse_ev(f2);
if ((f1 == constant::false_instance())) if ((f1 == constant::false_instance())
//|| || (recurse_un(f1) && recurse_un(f2)))
//(recurse_un(f1)))
universal = true; universal = true;
if (!universal)
universal = recurse_un(f1) & recurse_un(f2);
return; return;
} }
/* Unreachable code. */ /* Unreachable code. */