scc_filter: do not remove Fin sets from rejecting SCCs

* src/twaalgos/sccfilter.cc (acc_filter_some, acc_filter_all): Merge
into...
(acc_filter_mask): ... this single parametrized class, and only
remove sets that are only used as Inf.
* src/twa/acc.hh: Add missing operator~.
* src/tests/sccsimpl.test: Add test case.
* src/tests/sccdot.test: Adjust.
* NEWS: Mention the bug.
This commit is contained in:
Alexandre Duret-Lutz 2015-06-30 16:05:24 +02:00
parent 5d9e7d1f93
commit 5cb19a290b
5 changed files with 148 additions and 50 deletions

View file

@ -168,7 +168,7 @@ State: 2
[0&1] 0 {0 1}
State: 3
[1] 1
[!1] 3
[!1] 3 {2}
State: 4
[!0&1] 4 {0 1}
[0&1] 4 {0 2}

View file

@ -240,3 +240,105 @@ grep 'Acceptance: 2 ' out8.txt
run 0 ../ikwiad -R3 -s -RDS -ks \
'(G(!((b) R (a)))) R (((c) R (!(d))) U (G((a) | (!(G(e))))))' > out9.txt
grep 'states: 6$' out9.txt
# Spot 1.99.1 used to incorrectly remove Fin sets from rejecting SCCs
# in scc_filter().
cat >input <<EOF
HOA: v1
States: 2
Start: 1
Acceptance: 1 Fin(0)
AP: 1 "p0"
--BODY--
State: 0
[t] 0
State: 1
[!0] 1 {0}
[0] 0
--END--
HOA: v1
States: 2
Start: 1
Acceptance: 2 Fin(0)&Inf(1)
AP: 1 "p0"
--BODY--
State: 0 {1}
[t] 0
State: 1
[!0] 1 {0 1}
[0] 0
--END--
EOF
# run 0 ../../bin/autfilt -C -H --any --high input >output
# cat >expected <<EOF
# HOA: v1
# States: 2
# Start: 1
# AP: 1 "p0"
# acc-name: Buchi
# Acceptance: 1 Inf(0)
# properties: trans-labels explicit-labels state-acc complete
# properties: deterministic inherently-weak
# --BODY--
# State: 0 {0}
# [t] 0
# State: 1
# [0] 0
# [!0] 1
# --END--
# HOA: v1
# States: 2
# Start: 1
# AP: 1 "p0"
# acc-name: Buchi
# Acceptance: 1 Inf(0)
# properties: trans-labels explicit-labels state-acc complete
# properties: deterministic inherently-weak
# --BODY--
# State: 0 {0}
# [t] 0
# State: 1
# [0] 0
# [!0] 1
# --END--
# EOF
# cat output
# diff output expected
run 0 ../../bin/autfilt -C -H --det --high input >output
cat >expected <<EOF
HOA: v1
States: 2
Start: 1
AP: 1 "p0"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic inherently-weak
--BODY--
State: 0 {0}
[t] 0
State: 1
[0] 0
[!0] 1
--END--
HOA: v1
States: 2
Start: 1
AP: 1 "p0"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic inherently-weak
--BODY--
State: 0 {0}
[t] 0
State: 1
[0] 0
[!0] 1
--END--
EOF
cat output
diff output expected