from_ltlf: new LTL transformation.

Fixes #187.

* spot/tl/ltlf.cc, spot/tl/ltlf.hh: New files.
* spot/tl/Makefile.am: Add them.
* bin/ltlfilt.cc: Add a new option.
* bin/man/ltlfilt.x: Add bibliographic reference.
* tests/core/ltlfilt.test: Add more tests.
* tests/python/ltlf.py: New file.
* tests/Makefile.am: Add it.
* python/spot/impl.i: Python bindings.
* NEWS: Mention it.
This commit is contained in:
Alexandre Duret-Lutz 2016-11-05 17:52:38 +01:00
parent fe1f754d2e
commit 2e69e04583
10 changed files with 226 additions and 1 deletions

View file

@ -178,6 +178,35 @@ F(GFa | Gb)
F(b W GFa)
EOF
# Restrict to LTL
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)
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)
EOF
cat >in <<EOF
a & Xb & c