game: reimplement parity game solving

* spot/misc/game.cc, spot/misc/game.hh: More efficient implementation
of Zielonka's algorithm to solve parity games.  Now supports SCC
decomposition and efficient handling of certain special cases.
* doc/org/concepts.org: Document "strategy" and "state-winner"
properties.
* bin/ltlsynt.cc, tests/python/paritygame.ipynb: Adjust.
* tests/core/ltlsynt.test: Add more tests.
This commit is contained in:
philipp 2020-09-22 20:45:34 +02:00 committed by Alexandre Duret-Lutz
parent f6ac69d0d2
commit 133896d584
6 changed files with 870 additions and 528 deletions

View file

@ -23,6 +23,27 @@
set -e
cat >exp <<EOF
parity 19;
0 1 0 8,9 "INIT";
9 3 1 1,2;
2 1 0 12,13;
13 5 1 1,4;
4 1 0 8,15;
15 3 1 5,6;
6 1 0 8,15;
8 3 1 2;
5 1 0 16,17;
17 4 1 5,6;
16 4 1 2;
1 1 0 10,11;
11 4 1 5,7;
7 1 0 18,19;
19 3 1 5,7;
18 3 1 2,3;
3 1 0 10,14;
14 4 1 1,4;
10 4 1 2,3;
12 5 1 2,3;
parity 16;
0 1 0 1,2 "INIT";
2 1 1 3;
@ -41,8 +62,18 @@ parity 16;
14 1 1 10,16;
16 1 0 14,15;
1 1 1 3,6;
parity 4;
3 2 0 1,4 "INIT";
4 3 1 0,3;
0 1 0 1,2;
2 1 1 0,0;
1 2 1 3,3;
EOF
ltlsynt --ins=a --outs=b -f 'GFa <-> GFb' --print-pg >out
: > out
for algo in ds sd lar; do
ltlsynt --ins=a --outs=b -f 'GFa <-> GFb' --algo=$algo --print-pg >>out
done
diff out exp
cat >exp <<EOF