safra: Ensure parity min even acceptance

* src/tests/safra.cc, src/tests/safra.test:  Use HOA format in tests.
* src/twaalgos/safra.cc:  Make sure the number of sets are always odd so
that cycles without any acceptance set are rejected.
This commit is contained in:
Alexandre Lewkowicz 2015-05-27 16:42:19 +02:00 committed by Alexandre Duret-Lutz
parent d0d42f86f9
commit 8362bf3a5f
3 changed files with 91 additions and 54 deletions

View file

@ -41,28 +41,31 @@ State: 1
EOF
cat >out.exp << EOF
digraph G {
rankdir=LR
node [shape="circle"]
I [label="", style=invis, width=0]
I -> 0
0 [label="0"]
0 -> 1 [label="a"]
1 [label="1"]
1 -> 2 [label="a\n{0}"]
1 -> 3 [label="!a & b\n{3}"]
2 [label="2"]
2 -> 1 [label="a"]
2 -> 3 [label="!a & b"]
3 [label="3"]
3 -> 0 [label="a & !b"]
3 -> 2 [label="a & b"]
3 -> 3 [label="!a & b"]
}
HOA: v1
States: 4
Start: 0
AP: 2 "a" "b"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels trans-acc deterministic
--BODY--
State: 0
[0] 1
State: 1
[0] 2 {0}
[!0&1] 3
State: 2
[0] 1
[!0&1] 3
State: 3
[0&!1] 0
[0&1] 2
[!0&1] 3
--END--
EOF
run 0 ../safra --hoa double_a.hoa > out.dot
diff out.dot out.exp
run 0 ../safra --hoa double_a.hoa -H > out.hoa
diff out.hoa out.exp
cat >double_b.hoa << EOF
HOA: v1
@ -83,33 +86,36 @@ State: 1
EOF
cat >out.exp << EOF
digraph G {
rankdir=LR
node [shape="circle"]
I [label="", style=invis, width=0]
I -> 0
0 [label="0"]
0 -> 1 [label="a"]
1 [label="1"]
1 -> 1 [label="a & !b"]
1 -> 2 [label="a & b"]
1 -> 3 [label="!a & b\n{0}"]
2 [label="2"]
2 -> 3 [label="!a & b\n{0}"]
2 -> 4 [label="a & !b"]
2 -> 5 [label="a & b"]
3 [label="3"]
3 -> 0 [label="a & !b"]
3 -> 2 [label="a & b"]
3 -> 3 [label="!a & b\n{0}"]
4 [label="4"]
4 -> 1 [label="a\n{0}"]
4 -> 3 [label="!a & b\n{0}"]
5 [label="5"]
5 -> 1 [label="a\n{0}"]
5 -> 3 [label="!a & b\n{0}"]
}
HOA: v1
States: 6
Start: 0
AP: 2 "a" "b"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels trans-acc deterministic
--BODY--
State: 0
[0] 1
State: 1
[0&!1] 1
[0&1] 2
[!0&1] 3 {0}
State: 2
[!0&1] 3 {0}
[0&!1] 4
[0&1] 5
State: 3
[0&!1] 0
[0&1] 2
[!0&1] 3 {0}
State: 4
[0] 1 {0}
[!0&1] 3 {0}
State: 5
[0] 1 {0}
[!0&1] 3 {0}
--END--
EOF
run 0 ../safra --hoa double_b.hoa > out.dot
diff out.dot out.exp
run 0 ../safra --hoa double_b.hoa -H > out.hoa
diff out.hoa out.exp