ltl: rename is_X_free() into is_syntactic_stutter_invariant()

and adjust it to detect siPSL formulas, as in the paper of Dax et
al. (ATVA'09).  For issue #51.

* src/ltlast/atomic_prop.cc, src/ltlast/binop.cc,
src/ltlast/bunop.cc, src/ltlast/constant.cc, src/ltlast/formula.cc,
src/ltlast/formula.hh, src/ltlast/multop.cc, src/ltlast/unop.cc: Rename
the property, and adjust its computation on siSERE.
* src/ltlvisit/remove_x.cc, src/ltlvisit/simplify.cc,
src/tgbaalgos/stutter.cc: Adjust to new names.
* src/bin/ltlfilt.cc: Add option --syntactic-sutter-invariant.
* src/ltltest/kind.test: Update tests and add some new.
This commit is contained in:
Alexandre Duret-Lutz 2015-01-15 23:09:24 +01:00
parent a79db4eefe
commit 34f1601b9b
13 changed files with 185 additions and 86 deletions

View file

@ -2805,7 +2805,7 @@ namespace spot
// a & (Xa U b) = b M a
// a & (b | X(b R a)) = b R a
// a & (b | X(b M a)) = b M a
if (!mo->is_X_free())
if (!mo->is_syntactic_stutter_invariant()) // Skip if no X.
{
typedef std::unordered_set<const formula*,
ptr_hash<formula>> fset_t;
@ -2825,7 +2825,7 @@ namespace spot
{
if (!(*res)[n])
continue;
if ((*res)[n]->is_X_free())
if ((*res)[n]->is_syntactic_stutter_invariant())
continue;
const formula* xarg = is_XWU((*res)[n]);
@ -3530,7 +3530,7 @@ namespace spot
// a | (Xa M b) = b U a
// a | (b & X(b W a)) = b W a
// a | (b & X(b U a)) = b U a
if (!mo->is_X_free())
if (!mo->is_syntactic_stutter_invariant()) // Skip if no X
{
typedef std::unordered_set<const formula*,
ptr_hash<formula>> fset_t;
@ -3551,7 +3551,7 @@ namespace spot
{
if (!(*res)[n])
continue;
if ((*res)[n]->is_X_free())
if ((*res)[n]->is_syntactic_stutter_invariant())
continue;
const formula* xarg = is_XRM((*res)[n]);