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:
parent
516e9536df
commit
bd75ab5b39
5 changed files with 101 additions and 423 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue