ltlsynt: rework synthesis algorithms

ltlsynt now offers two algorithms: one where splitting occurs before
determinization (the historical one) and one where determinization
occurs before splitting.

* bin/ltlsynt.cc: here
* tests/core/ltlsynt.test: test it and refactor test file
* NEWS: document it
* spot/misc/game.hh, spot/misc/game.cc: remove Calude's algorithm
This commit is contained in:
Maximilien Colange 2018-05-04 18:12:47 +02:00
parent 516e9536df
commit bd75ab5b39
5 changed files with 101 additions and 423 deletions

View file

@ -104,7 +104,11 @@ diff out exp
cat >exp <<EOF
translating formula done
split inputs and outputs done
automaton has 9 states
determinization done
dpa has 14 states
simulation done
dpa has 14 states
parity game built
EOF
ltlsynt --ins='a' --outs='b' -f 'GFa <-> GFb' --verbose --realizability 2> out
@ -179,10 +183,11 @@ for i in 0 1 7 8 9; do
IN=$(eval echo \$IN$i)
OUT=$(eval echo \$OUT$i)
EXP=$(eval echo \$EXP$i)
test $EXP = $(ltlsynt -f "$F" --ins="$IN" --outs="$OUT" --realizability \
--algo=rec)
test $EXP = $(ltlsynt -f "$F" --ins="$IN" --outs="$OUT" --realizability \
--algo=qp)
for algo in sd ds; do
test $EXP = $(ltlsynt -f "$F" --ins="$IN" --outs="$OUT" --realizability \
--algo=$algo)
done
done
for i in 2 3 4 5 6 10; do
@ -190,11 +195,18 @@ for i in 2 3 4 5 6 10; do
IN=$(eval echo \$IN$i)
OUT=$(eval echo \$OUT$i)
EXP=$(eval echo \$EXP$i)
ltlsynt -f "$F" --ins="$IN" --outs="$OUT" > out$i
REAL=`head -1 out$i`
test $REAL = $EXP
tail -n +2 out$i > res$i
ltl2tgba -f "!($F)" > negf_aut$i
# check that the L(strategy) is included in L(F)
autfilt -q -v --intersect=negf_aut$i res$i
# test ltlsynt
for algo in sd ds; do
ltlsynt -f "$F" --ins="$IN" --outs="$OUT" --algo=$algo > out$i || true
REAL=`head -1 out$i`
test $REAL = $EXP
tail -n +2 out$i > res$i
# check that the L(strategy) is included in L(F)
autfilt -q -v --intersect=negf_aut$i res$i
# check that all environment actions are possible
autfilt --remove-ap="$OUT" res$i | autfilt --dualize | autfilt --is-empty -q
done
done