ltlfilt: Fix handling --universal, --eventual, and --stutter-invariant.

* src/bin/ltlfilt.cc: Handle --universal and --eventual.  Match
only LTL formulas with --stutter-invariant.
* src/ltltest/ltlfilt.test: New file.
* src/ltltest/Makefile.am (TESTS): Add it.
* NEWS: Mention these bug fixes.
This commit is contained in:
Alexandre Duret-Lutz 2013-05-10 21:21:48 +02:00
parent eed7e2df8f
commit 2cab8197e5
4 changed files with 149 additions and 1 deletions

View file

@ -273,6 +273,9 @@ parse_opt(int key, char* arg, struct argp_state*)
equivalent_to = parse_formula_arg(arg);
break;
}
case OPT_EVENTUAL:
eventual = true;
break;
case OPT_GUARANTEE:
guarantee = obligation = true;
break;
@ -349,6 +352,9 @@ parse_opt(int key, char* arg, struct argp_state*)
case OPT_SYNTACTIC_PERSISTENCE:
syntactic_persistence = true;
break;
case OPT_UNIVERSAL:
universal = true;
break;
default:
return ARGP_ERR_UNKNOWN;
}
@ -495,7 +501,8 @@ namespace
matched &= !implied_by || simpl.implication(implied_by, f);
matched &= !imply || simpl.implication(f, imply);
matched &= !equivalent_to || simpl.are_equivalent(f, equivalent_to);
matched &= !stutter_insensitive || is_stutter_insensitive(f);
matched &= !stutter_insensitive || (f->is_ltl_formula()
&& is_stutter_insensitive(f));
// Match obligations and subclasses using WDBA minimization.
// Because this is costly, we compute it later, so that we don't