improve fuse_marks_here by detecting more patterns

This remove some restrictions that prevented fuse_marks_here from
simplifying certain patterns, as noted in the first comment of
issue #405.

* spot/twaalgos/cleanacc.cc (find_interm_rec, find_fusable): Remove
some unnecessary restrictions to singleton marks, and replace the hack
put one non-singleton mark at the beginning of the singleton list by a
sort.
* tests/python/simplacc.py: Add two test cases.
* tests/python/automata.ipynb, tests/core/remfin.test: Improve
expected results.
* NEWS: Mention the bug.
This commit is contained in:
Alexandre Duret-Lutz 2020-05-22 16:09:26 +02:00
parent 645935f796
commit 260a141b1c
5 changed files with 87 additions and 70 deletions

View file

@ -292,8 +292,6 @@ State: 1
--END--
EOF
acctwelve='Inf(0)&Inf(1)&Inf(2)&Inf(3)&Inf(4)&Inf(5)'
acctwelve=$acctwelve'&Inf(6)&Inf(7)&Inf(8)&Inf(9)&Inf(10)&Inf(11)'
cat >expected <<EOF
HOA: v1
States: 3
@ -339,21 +337,22 @@ HOA: v1
States: 3
Start: 0
AP: 2 "a" "b"
Acceptance: 3 (Inf(1)&Inf(2)) | Inf(0)
acc-name: generalized-Buchi 2
Acceptance: 2 Inf(0)&Inf(1)
properties: trans-labels explicit-labels trans-acc
--BODY--
State: 0
[t] 0 {2}
[0] 1 {2}
[!0] 2 {0 2}
[t] 0 {1}
[0] 1 {1}
[!0] 2 {0 1}
State: 1
[1] 0 {2}
[0&1] 1 {0 2}
[!0&1] 2 {1 2}
[1] 0 {1}
[0&1] 1 {0 1}
[!0&1] 2 {0 1}
State: 2
[!1] 0
[0&!1] 1 {0}
[!0&!1] 2 {0}
[0&!1] 1 {0 1}
[!0&!1] 2 {0 1}
--END--
HOA: v1
States: 1
@ -867,7 +866,7 @@ HOA: v1
States: 6
Start: 0
AP: 3 "a" "b" "c"
Acceptance: 4 (Inf(0)&Inf(2)&Inf(3)) | (Inf(0)&Inf(1)&Inf(3))
Acceptance: 3 (Inf(1)&Inf(2)) | (Inf(0)&Inf(2))
properties: trans-labels explicit-labels trans-acc
--BODY--
State: 0
@ -883,16 +882,16 @@ State: 1
[2] 4
[!2] 5
State: 2
[0] 2 {0 1 3}
[0] 2 {0 2}
State: 3
[0&2] 2 {0 1 3}
[0&!2] 3 {0 1}
[0&2] 2 {0 2}
[0&!2] 3 {0}
State: 4
[1 | 2] 4 {0 2 3}
[!1&!2] 5 {0 2}
[1 | 2] 4 {1 2}
[!1&!2] 5 {1}
State: 5
[2] 4 {0 2 3}
[!2] 5 {0 2}
[2] 4 {1 2}
[!2] 5 {1}
--END--
EOF