safra: Use sub-transitions during determinization

* src/tests/safra.cc, src/tests/safra.test:  Update results.
* src/twaalgos/safra.cc, src/twaalgos/safra.hh: The use of transitions
resulted in non deterministic automata.  By using sub-transitions the
problem is solved.
This commit is contained in:
Alexandre Lewkowicz 2015-05-25 18:24:39 +02:00 committed by Alexandre Duret-Lutz
parent 8b1f9d3712
commit d0d42f86f9
4 changed files with 104 additions and 31 deletions

View file

@ -22,7 +22,7 @@
. ./defs
set -e
cat >input.hoa << EOF
cat >double_a.hoa << EOF
HOA: v1
name: "F\"x > 1\""
States: 2
@ -50,20 +50,21 @@ digraph G {
0 -> 1 [label="a"]
1 [label="1"]
1 -> 2 [label="a\n{0}"]
1 -> 3 [label="b\n{3}"]
1 -> 3 [label="!a & b\n{3}"]
2 [label="2"]
2 -> 1 [label="a"]
2 -> 3 [label="b"]
2 -> 3 [label="!a & b"]
3 [label="3"]
3 -> 3 [label="b"]
3 -> 0 [label="a"]
3 -> 0 [label="a & !b"]
3 -> 2 [label="a & b"]
3 -> 3 [label="!a & b"]
}
EOF
run 0 ../safra --hoa input.hoa > out.dot
run 0 ../safra --hoa double_a.hoa > out.dot
diff out.dot out.exp
cat >input.hoa << EOF
cat >double_b.hoa << EOF
HOA: v1
name: "F\"x > 1\""
States: 2
@ -90,13 +91,25 @@ digraph G {
0 [label="0"]
0 -> 1 [label="a"]
1 [label="1"]
1 -> 1 [label="a"]
1 -> 2 [label="b\n{0}"]
1 -> 1 [label="a & !b"]
1 -> 2 [label="a & b"]
1 -> 3 [label="!a & b\n{0}"]
2 [label="2"]
2 -> 2 [label="b\n{0}"]
2 -> 0 [label="a"]
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}"]
}
EOF
run 0 ../safra --hoa input.hoa > out.dot
run 0 ../safra --hoa double_b.hoa > out.dot
diff out.dot out.exp