sccfilter: some inherently-weak automata should have t acceptance

* spot/twaalgos/sccfilter.cc: If an inherently-weak automaton has
no rejecting cycle, reduce its acceptance to t instead of Büchi.
* spot/twa/acc.hh (operator==, operator<): Fix comparisons of
true acceptances.
* NEWS: Mention these two changes.
* spot/twaalgos/sccfilter.hh: Update documentation.
* spot/twaalgos/determinize.cc (tgba_determinize): The call
to scc_filter assume that the input BA is never reduced to t
acceptance.  Call scc_filter with an extra option to ensure that.
* spot/twaalgos/postproc.cc (do_scc_filter): Adjust to add the
extra option when we want to build Büchi or coBuchi.
(ensure_ba): Don't mark trivial SCCs as accepting.
* tests/core/complement.test, tests/core/dstar.test,
tests/core/ltlsynt.test, tests/core/readsave.test,
tests/core/wdba2.test, tests/python/_product_susp.ipynb,
tests/python/automata-io.ipynb, tests/python/dualize.py,
tests/python/highlighting.ipynb, tests/python/intrun.py,
tests/python/setacc.py, tests/python/simstate.py,
tests/python/stutter-inv.ipynb, tests/python/zlktree.py: Adjust test
cases.
This commit is contained in:
Alexandre Duret-Lutz 2023-11-17 13:41:19 +01:00
parent 13377542cd
commit 0e71dd70c1
20 changed files with 857 additions and 842 deletions

View file

@ -125,13 +125,13 @@ cat >expected <<EOF
<F(b | Ga), 3 states>, 5, 1
<F(!b & G(!b | G!a)), 3 states>, 5, 1
<XF!b, 3 states>, 4, 1
<G!b | Gb, 3 states>, 4, 1
<XFb, 3 states>, 4, 1
<F(b W a), 3 states>, 6, 1
<(a & !b & (b | (!b M F!a))) | (!a & (b | (!b & (b W Ga)))), 3 states>, 5, 1
<(a & (a U !b)) | (!a & (!a R b)), 3 states>, 5, 1
<a | G((a & GFa) | (!a & FG!a)), 3 states>, 4, 1
<XXG(!a & (Fa W Gb)), 3 states>, 3, 1
<X(b M !a), 3 states>, 4, 1
<((a & F!b) | (!a & Gb)) U (Fa & G!b), 3 states>, 6, 1
<XF(b | (!b & ((a & !b) | (!a & b)))), 3 states>, 4, 1
EOF
diff output expected
@ -580,12 +580,12 @@ digraph "" {
rankdir=LR
node [shape="ellipse",width="0.5",height="0.5"]
I [label="", style=invis, width=0]
0 [label="6", peripheries=2]
0 [label="6"]
u0 [label="...", shape=none, width=0, height=0, tooltip="hidden successors"]
1 [label="0", peripheries=2]
2 [label="1", peripheries=2]
3 [label="2", peripheries=2]
4 [label="3", peripheries=2]
1 [label="0"]
2 [label="1"]
3 [label="2"]
4 [label="3"]
}
EOF
@ -806,8 +806,8 @@ HOA: v1
States: 3
Start: 1
AP: 2 "a" "b"
acc-name: Buchi
Acceptance: 1 Inf(0)
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc deterministic
properties: very-weak
--BODY--
@ -815,7 +815,7 @@ State: 0
[1] 2
State: 1
[0] 0
State: 2 {0}
State: 2
[0] 2
--END--
EOF
@ -824,14 +824,15 @@ diff output4 expect4
diff output4b expect4
diff output4c expect4
autfilt -Hv --small input4 >output5
test `autfilt --is-weak -c output4` = 1
test `autfilt -B --small output4d | autfilt --is-terminal -c` = 0
test `autfilt --is-terminal -c output4` = 0
sed 's/\[0\]/[t]/g' expect4 > output4d
test `autfilt --is-terminal -c output4d` = 1
test `autfilt -B --small output4d | autfilt --is-terminal -c` = 1
test `autfilt --is-terminal -c output4d` = 0 # FIXME: Issue #553
autfilt -B -Hv --small input4 >output5
cat >expect5<<EOF
HOA: v1
States: 3