Introduce new ways to split an automaton
The explicit way of splitting suffers if there are too many input APs, two new ways of splitting are introduced as well as a heuristic to chose between them. * NEWS: update * spot/twaalgos/synthesis.cc, spot/twaalgos/synthesis.hh: New fonctions * bin/ltlsynt.cc: Add corresponding option * tests/core/gamehoa.test, tests/core/ltlsynt.test, tests/python/_partitioned_relabel.ipynb, tests/python/_synthesis.ipynb, tests/python/game.py, tests/python/split.py, tests/python/synthesis.py: Adjusting and adding test
This commit is contained in:
parent
2274308cad
commit
5ddac258e1
11 changed files with 1372 additions and 138 deletions
|
|
@ -21,11 +21,13 @@
|
|||
|
||||
set -x
|
||||
|
||||
ltlsynt --ins=a,c --outs=b -f 'GF(a <-> XXXc) <-> GFb' --print-game-hoa >out
|
||||
ltlsynt --ins=a,c --outs=b -f 'GF(a <-> XXXc) <-> GFb' --print-game-hoa \
|
||||
--splittype=expl >out
|
||||
grep spot-state-player: out
|
||||
autfilt out >out2
|
||||
diff out out2
|
||||
ltlsynt --ins=a,c --outs=b -f 'GF(a <-> XXXc) <-> GFb' --print-game-hoa=l >out3
|
||||
ltlsynt --ins=a,c --outs=b -f 'GF(a <-> XXXc) <-> GFb' --print-game-hoa=l \
|
||||
--splittype=expl >out3
|
||||
test 1 = `wc -l < out3`
|
||||
cmp out out3 && exit 1
|
||||
autfilt out3 >out2
|
||||
|
|
|
|||
|
|
@ -484,10 +484,22 @@ i3 i3
|
|||
o0 o0
|
||||
o1 o1
|
||||
EOF
|
||||
ltlsynt -f "G((i0 && i1)<->X(o0)) && G((i2|i3)<->X(o1))" --outs="o0,o1"\
|
||||
--aiger=isop+ud --algo=lar --decompose=no --simpl=no >out
|
||||
ltlsynt -f "G((i0 && i1)<->X(o0)) && G((i2|i3)<->X(o1))" --outs="o0,o1" \
|
||||
--aiger=isop+ud --algo=lar --decompose=no --simpl=no \
|
||||
--splittype=expl >out
|
||||
diff out exp
|
||||
|
||||
for splitt in expl semisym fullysym auto
|
||||
do
|
||||
res=$(ltlsynt -f "G((i0 && i1)<->X(o0)) && G((i2|i3)<->X(o1))" \
|
||||
--outs="o0,o1" --aiger=isop+ud --algo=lar --decompose=no \
|
||||
--simpl=no --splittype="$splitt" --realizability)
|
||||
if [[ "$res" != "REALIZABLE" ]]; then
|
||||
echo "Expected realizable"
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
cat >exp <<EOF
|
||||
REALIZABLE
|
||||
aag 54 4 3 2 47
|
||||
|
|
@ -555,7 +567,8 @@ o0 o0
|
|||
o1 o1
|
||||
EOF
|
||||
ltlsynt -f "G((i0 && i1)<->X(o0)) && G((i2|i3)<->X(o1))" --outs="o0,o1"\
|
||||
--aiger=isop --algo=lar --decompose=no --simpl=no >out
|
||||
--aiger=isop --algo=lar --decompose=no --simpl=no \
|
||||
--splittype=expl >out
|
||||
diff out exp
|
||||
|
||||
|
||||
|
|
@ -590,10 +603,10 @@ o0 o0
|
|||
o1 o1
|
||||
EOF
|
||||
ltlsynt -f "G((i0 && i1)<->X(o0)) && G((i2|i3)<->X(o1))" --outs="o0,o1"\
|
||||
--aiger=isop+ud --algo=lar --decompose=yes --simpl=no >out
|
||||
--aiger=isop+ud --algo=lar --decompose=yes --simpl=no --splittype=expl >out
|
||||
diff out exp
|
||||
ltlsynt -f "G((i0 && i1)<->X(o0)) && G((i2|i3)<->X(o1))" --outs="o0,o1"\
|
||||
--aiger=isop+ud --algo=lar --simpl=no >out
|
||||
--aiger=isop+ud --algo=lar --simpl=no --splittype=expl >out
|
||||
diff out exp
|
||||
|
||||
# Issue #477
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue