is_unambiguous: fix false negatives again
Reported by Simon Jantsch and David Müller. * spot/twaalgos/isunamb.cc (is_unambiguous): Rewrite wihtout assuming that the product of two accepting SCCs is accepting, Also use the result of is_accepting_scc()/is_rejectng_scc() when available. * spot/twaalgos/sccinfo.cc, spot/twaalgos/sccinfo.hh: Make it possible to check the acceptance of a unique SCC. * tests/core/unambig.test: Add more test cases.
This commit is contained in:
parent
befdb03c9a
commit
2fe67769d7
4 changed files with 107 additions and 32 deletions
|
|
@ -285,6 +285,7 @@ EOF
|
|||
run 1 autfilt -q --is-unambiguous smaller.hoa
|
||||
|
||||
# These automata come from Simon Jantsch and David Müller.
|
||||
# They exposed bugs in the optimized version of our unambiguous check.
|
||||
cat >sjdb.hoa <<EOF
|
||||
HOA: v1
|
||||
name: "G(!a | !b) & (Ga | G(b | XGb))"
|
||||
|
|
@ -332,6 +333,51 @@ State: 3
|
|||
State: 4 {0}
|
||||
[!0&1] 4
|
||||
--END--
|
||||
HOA: v1
|
||||
States: 3
|
||||
Start: 0
|
||||
AP: 2 "p0" "p1"
|
||||
acc-name: Buchi
|
||||
Acceptance: 1 Inf(0)
|
||||
properties: trans-labels explicit-labels trans-acc
|
||||
--BODY--
|
||||
State: 0 "((G (! (p0))) R ((! (p1)) | (G (! (p0)))))"
|
||||
[!0] 1 {0}
|
||||
[0&!1] 0 {0}
|
||||
[!0&!1] 2
|
||||
State: 1 "(G (! (p0)))"
|
||||
[!0] 1 {0}
|
||||
State: 2 "((G (! (p0))) R ((! (p1)) | (G (! (p0))))) & (F (p0))"
|
||||
[0&!1] 0 {0}
|
||||
[!0&!1] 2
|
||||
--END--
|
||||
EOF
|
||||
|
||||
test 2 = `autfilt -c --is-unambiguous sjdb.hoa`
|
||||
test 3 = `autfilt -c --is-unambiguous sjdb.hoa`
|
||||
|
||||
# This automaton requires emptiness of SCC with Fin-acceptance.
|
||||
cat >ambig.hoa<<EOF
|
||||
HOA: v1
|
||||
States: 5
|
||||
Start: 4
|
||||
AP: 2 "p0" "p1"
|
||||
Acceptance: 4 Fin(0) & Fin(1)
|
||||
--BODY--
|
||||
State: 0
|
||||
[0] 0 {0}
|
||||
[!0] 1
|
||||
State: 1
|
||||
[1] 1 {1}
|
||||
[!1] 0
|
||||
State: 2
|
||||
[0] 2 {0}
|
||||
[!0] 3
|
||||
State: 3
|
||||
[1] 3 {1}
|
||||
[!1] 2
|
||||
State: 4
|
||||
[0] 0
|
||||
[0] 2
|
||||
--END--
|
||||
EOF
|
||||
test 0 = `autfilt -c --is-unambiguous ambig.hoa`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue