ltlf: ensure alive holds initially

Reported by Shufang Zhu.

* spot/tl/ltlf.cc, spot/tl/ltlf.hh: Fix the transltion
and update the comments.
* tests/core/ltlfilt.test: Adjust test cases.
* NEWS: Mention the fix.
* THANKS: Add Shufang Zhu.
This commit is contained in:
Alexandre Duret-Lutz 2016-12-09 21:37:15 +01:00
parent 0ab8dc06c4
commit 413eab1d32
5 changed files with 31 additions and 23 deletions

View file

@ -182,30 +182,30 @@ EOF
run 0 ltlfilt --ltl formulas > formulas2
mv formulas2 formulas
checkopt --ltl --from-ltlf <<EOF
(G(!alive | F(a & alive)) | F(alive & G(!alive | b))) & (alive U G!alive)
F(alive & (G(!alive | F(a & alive)) | G(!alive | b))) & (alive U G!alive)
F(alive & ((!alive | b) W G(!alive | F(a & alive)))) & (alive U G!alive)
(G(!alive | F(a & alive)) | G(!alive | b)) & (alive U G!alive)
((!alive | b) W G(!alive | F(a & alive))) & (alive U G!alive)
(a U (alive & F(alive & b))) & (alive U G!alive)
G(!alive | (a & X(alive & b))) & (alive U G!alive)
X(a & alive) & (alive U G!alive)
F(a & alive & !X(a & alive) & X(alive & b)) & (alive U G!alive)
a & (b | c) & (alive U G!alive)
checkopt --ltl --from-ltlf=al <<EOF
al & (G(!al | F(a & al)) | F(al & G(!al | b))) & (al U G!al)
al & F(al & (G(!al | F(a & al)) | G(!al | b))) & (al U G!al)
al & F(al & ((!al | b) W G(!al | F(a & al)))) & (al U G!al)
al & (G(!al | F(a & al)) | G(!al | b)) & (al U G!al)
al & ((!al | b) W G(!al | F(a & al))) & (al U G!al)
al & (a U (al & F(al & b))) & (al U G!al)
al & G(!al | (a & X(al & b))) & (al U G!al)
al & X(a & al) & (al U G!al)
al & F(a & al & !X(a & al) & X(al & b)) & (al U G!al)
a & al & (b | c) & (al U G!al)
EOF
checkopt --ltl --from-ltlf='!dead' <<EOF
(G(dead | F(a & !dead)) | F(!dead & G(b | dead))) & (!dead U Gdead)
F(!dead & (G(dead | F(a & !dead)) | G(b | dead))) & (!dead U Gdead)
F(!dead & ((b | dead) W G(dead | F(a & !dead)))) & (!dead U Gdead)
(G(dead | F(a & !dead)) | G(b | dead)) & (!dead U Gdead)
((b | dead) W G(dead | F(a & !dead))) & (!dead U Gdead)
(a U (!dead & F(b & !dead))) & (!dead U Gdead)
G(dead | (a & X(b & !dead))) & (!dead U Gdead)
X(a & !dead) & (!dead U Gdead)
F(a & !dead & !X(a & !dead) & X(b & !dead)) & (!dead U Gdead)
a & (b | c) & (!dead U Gdead)
!dead & (G(dead | F(a & !dead)) | F(!dead & G(b | dead))) & (!dead U Gdead)
!dead & F(!dead & (G(dead | F(a & !dead)) | G(b | dead))) & (!dead U Gdead)
!dead & F(!dead & ((b | dead) W G(dead | F(a & !dead)))) & (!dead U Gdead)
!dead & (G(dead | F(a & !dead)) | G(b | dead)) & (!dead U Gdead)
!dead & ((b | dead) W G(dead | F(a & !dead))) & (!dead U Gdead)
!dead & (a U (!dead & F(b & !dead))) & (!dead U Gdead)
!dead & G(dead | (a & X(b & !dead))) & (!dead U Gdead)
!dead & X(a & !dead) & (!dead U Gdead)
!dead & F(a & !dead & !X(a & !dead) & X(b & !dead)) & (!dead U Gdead)
a & !dead & (b | c) & (!dead U Gdead)
EOF
cat >in <<EOF