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:
parent
13377542cd
commit
0e71dd70c1
20 changed files with 857 additions and 842 deletions
|
|
@ -76,10 +76,10 @@ Acceptance: 1 Fin(0)
|
|||
properties: trans-labels explicit-labels state-acc complete
|
||||
properties: deterministic very-weak
|
||||
--BODY--
|
||||
State: 0
|
||||
State: 0 {0}
|
||||
[0] 2
|
||||
[!0] 3
|
||||
State: 1
|
||||
State: 1 {0}
|
||||
[t] 0
|
||||
State: 2 {0}
|
||||
[t] 2
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (C) 2013-2016, 2018, 2020, 2022 Laboratoire de Recherche
|
||||
# et Développement de l'Epita (LRDE).
|
||||
# Copyright (C) 2013-2016, 2018, 2020, 2022, 2023 Laboratoire de
|
||||
# Recherche et Développement de l'Epita (LRDE).
|
||||
#
|
||||
# This file is part of Spot, a model checking library.
|
||||
#
|
||||
|
|
@ -298,7 +298,7 @@ digraph "aut.dsa" {
|
|||
I [label="", style=invis, width=0]
|
||||
I -> 0
|
||||
0 [label="0"]
|
||||
0 -> 0 [label="1\n{0}"]
|
||||
0 -> 0 [label="1"]
|
||||
}
|
||||
EOF
|
||||
|
||||
|
|
|
|||
|
|
@ -736,7 +736,7 @@ there are 2 subformulas
|
|||
trying to create strategy directly for (b & (b | y)) -> y
|
||||
direct strategy might exist but was not found.
|
||||
translating formula done in X seconds
|
||||
automaton has 2 states and 1 colors
|
||||
automaton has 2 states and 0 colors
|
||||
LAR construction done in X seconds
|
||||
DPA has 2 states, 0 colors
|
||||
split inputs and outputs done in X seconds
|
||||
|
|
@ -747,7 +747,7 @@ simplification took X seconds
|
|||
trying to create strategy directly for (a | x) -> x
|
||||
direct strategy might exist but was not found.
|
||||
translating formula done in X seconds
|
||||
automaton has 2 states and 1 colors
|
||||
automaton has 2 states and 0 colors
|
||||
LAR construction done in X seconds
|
||||
DPA has 2 states, 0 colors
|
||||
split inputs and outputs done in X seconds
|
||||
|
|
@ -850,7 +850,7 @@ there are 3 subformulas
|
|||
trying to create strategy directly for a -> b
|
||||
direct strategy might exist but was not found.
|
||||
translating formula done in X seconds
|
||||
automaton has 2 states and 1 colors
|
||||
automaton has 2 states and 0 colors
|
||||
LAR construction done in X seconds
|
||||
DPA has 2 states, 0 colors
|
||||
split inputs and outputs done in X seconds
|
||||
|
|
@ -861,7 +861,7 @@ simplification took X seconds
|
|||
trying to create strategy directly for a -> c
|
||||
direct strategy might exist but was not found.
|
||||
translating formula done in X seconds
|
||||
automaton has 2 states and 1 colors
|
||||
automaton has 2 states and 0 colors
|
||||
LAR construction done in X seconds
|
||||
DPA has 2 states, 0 colors
|
||||
split inputs and outputs done in X seconds
|
||||
|
|
@ -872,7 +872,7 @@ simplification took X seconds
|
|||
trying to create strategy directly for a -> d
|
||||
direct strategy might exist but was not found.
|
||||
translating formula done in X seconds
|
||||
automaton has 2 states and 1 colors
|
||||
automaton has 2 states and 0 colors
|
||||
LAR construction done in X seconds
|
||||
DPA has 2 states, 0 colors
|
||||
split inputs and outputs done in X seconds
|
||||
|
|
@ -934,7 +934,7 @@ ltlsynt -f 'G(c) & (G(a) <-> GFb)' --outs=b,c --decompose=yes --pol=no \
|
|||
cat >exp <<EOF
|
||||
there are 2 subformulas
|
||||
translating formula done in X seconds
|
||||
automaton has 1 states and 1 colors
|
||||
automaton has 1 states and 0 colors
|
||||
LAR construction done in X seconds
|
||||
DPA has 1 states, 0 colors
|
||||
split inputs and outputs done in X seconds
|
||||
|
|
@ -967,7 +967,7 @@ solving game with acceptance: generalized-Streett 1 1
|
|||
game solved in X seconds
|
||||
simplification took X seconds
|
||||
translating formula done in X seconds
|
||||
automaton has 1 states and 1 colors
|
||||
automaton has 1 states and 0 colors
|
||||
ACD construction done in X seconds
|
||||
DPA has 1 states, 0 colors
|
||||
split inputs and outputs done in X seconds
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -106,12 +106,12 @@ HOA: v1
|
|||
States: 1
|
||||
Start: 0
|
||||
AP: 0
|
||||
acc-name: Buchi
|
||||
Acceptance: 1 Inf(0)
|
||||
properties: trans-labels explicit-labels state-acc colored complete
|
||||
acc-name: all
|
||||
Acceptance: 0 t
|
||||
properties: trans-labels explicit-labels state-acc complete
|
||||
properties: deterministic terminal very-weak
|
||||
--BODY--
|
||||
State: 0 {0}
|
||||
State: 0
|
||||
[t] 0
|
||||
--END--
|
||||
EOF
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue