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

@ -59,32 +59,47 @@ check '(Ga|Fc) -> Fb' 'xLPopr'
check '(Ga|Fa) -> Gb' 'xLPopr'
check '{a;c*;b}|->!Xb' '&fPsopr'
check '{a;c*;b}|->X!b' '&!fPsopr'
check '{a;c*;b}|->!Fb' '&xPsopr'
check '{a;c*;b}|->G!b' '&!xPsopr'
check '{a;c*;b}|->!Gb' '&xPr'
check '{a;c*;b}|->F!b' '&!xPr'
check '{a;c*;b}|->GFa' '&!xPr'
check '{a;c*;b}|->FGa' '&!xP'
check '{a;c*;b}|->!Fb' '&Psopr'
check '{a;c*;b}|->G!b' '&!Psopr'
check '{a;c*;b}|->!Gb' '&Pr'
check '{a;c*;b}|->F!b' '&!Pr'
check '{a;c*;b}|->GFa' '&!Pr'
check '{a;c*;b}|->FGa' '&!P'
check '{a[+];c[+];b*}|->!Fb' '&xPsopr'
check '{a[+];c*;b[+]}|->G!b' '&!xPsopr'
check '{a*;c[+];b[+]}|->!Gb' '&xPr'
check '{a[+];c*;b[+]}|->F!b' '&!xPr'
check '{a[+];c[+];b*}|->GFa' '&!xPr'
check '{a*;c[+];b[+]}|->FGa' '&!xP'
check '{a;c;b|(d;e)}|->!Xb' '&fPFsgopr'
check '{a;c;b|(d;e)}|->X!b' '&!fPFsgopr'
check '{a;c;b|(d;e)}|->!Fb' '&xPsopr'
check '{a;c;b|(d;e)}|->G!b' '&!xPsopr'
check '{a;c;b|(d;e)}|->!Gb' '&xPgopr'
check '{a;c;b|(d;e)}|->F!b' '&!xPgopr'
check '{a;c;b|(d;e)}|->GFa' '&!xPr'
check '{a;c;b|(d;e)}|->FGa' '&!xPp'
check '{a;c*;b}<>->!Gb' '&xPgopr'
check '{a;c*;b}<>->F!b' '&!xPgopr'
check '{a;c*;b}<>->FGb' '&!xPp'
check '{a;c*;b}<>->!GFb' '&xPp'
check '{a;c*;b}<>->GFb' '&!xP'
check '{a;c*;b}<>->!FGb' '&xP'
check '{a;c|d;b}<>->!Gb' '&xPgopr'
check '{a;c|d;b}<>->G!b' '&!xPsopr'
check '{a;c|d;b}<>->FGb' '&!xPp'
check '{a;c|d;b}<>->!GFb' '&xPp'
check '{a;c|d;b}<>->GFb' '&!xPr'
check '{a;c|d;b}<>->!FGb' '&xPr'
check '{a;c;b|(d;e)}|->!Fb' '&Psopr'
check '{a;c;b|(d;e)}|->G!b' '&!Psopr'
check '{a;c;b|(d;e)}|->!Gb' '&Pgopr'
check '{a;c;b|(d;e)}|->F!b' '&!Pgopr'
check '{a;c;b|(d;e)}|->GFa' '&!Pr'
check '{a;c;b|(d;e)}|->FGa' '&!Pp'
check '{a[+] && c[+]}|->!Xb' '&fPsopr'
check '{a[+] && c[+]}|->X!b' '&!fPsopr'
check '{a[+] && c[+]}|->!Fb' '&xPsopr'
check '{a[+] && c[+]}|->G!b' '&!xPsopr'
check '{a[+] && c[+]}|->!Gb' '&xPr'
check '{a[+] && c[+]}|->F!b' '&!xPr'
check '{a[+] && c[+]}|->GFa' '&!xPr'
check '{a[+] && c[+]}|->FGa' '&!xP'
check '{a;c*;b}<>->!Gb' '&Pgopr'
check '{a;c*;b}<>->F!b' '&!Pgopr'
check '{a;c*;b}<>->FGb' '&!Pp'
check '{a;c*;b}<>->!GFb' '&Pp'
check '{a;c*;b}<>->GFb' '&!P'
check '{a;c*;b}<>->!FGb' '&P'
check '{a*;c[+];b[+]}<>->!FGb' '&xP'
check '{a;c|d;b}<>->!Gb' '&Pgopr'
check '{a;c|d;b}<>->G!b' '&!Psopr'
check '{a;c|d;b}<>->FGb' '&!Pp'
check '{a;c|d;b}<>->!GFb' '&Pp'
check '{a;c|d;b}<>->GFb' '&!Pr'
check '{a;c|d;b}<>->!FGb' '&Pr'
check '{a:b:c:d}!' 'B&!xfLEPSFsgopr' # Equivalent to a&b&c&d
check 'a&b&c&d' 'B&!xfLEPSFsgopr'
check '(Xa <-> XXXc) U (b & Fe)' 'LPgopr'
@ -110,11 +125,15 @@ check 'FGa W FGb' '&!xLPeu'
check 'Ga W FGb' '&!xLPup'
check 'Ga W b' '&!xLPsopr'
check 'Fa M b' '&!xLPgopr'
check '{a;b*;c}' '&!xfPsopr'
check '{a;b*;c}!' '&!xfPgopr'
check '!{a;b*;c}!' '&xfPsopr' # The negative normal form is {a;b*;c}[]->0
check '{a;b*;c}[]->0' '&!xfPsopr'
check '!{a;b*;c}' '&!xfPgopr'
check '{a;b*;c}' '&!fPsopr'
check '{a;b*;c}!' '&!fPgopr'
check '!{a;b*;c}!' '&fPsopr' # The negative normal form is {a;b*;c}[]->0
check '{a;b*;c}[]->0' '&!fPsopr'
check '!{a;b*;c}' '&!fPgopr'
check '!{a[+];b*;c[+]}' '&!xfPgopr'
check '{a[+];b*;c[+]}' '&!xfPsopr'
check '{a[+] && b || c[+]}' '&!fPsopr'
check '{a[+] && b[+] || c[+]}' '&!xfPsopr'
run 0 ../consterm '1'
run 0 ../consterm '0'