sccinfo: fix generation of self-loop accepting runs
Reported by Juraj Major. * spot/twaalgos/sccinfo.cc (scc_info::get_accepting_run): Do not assume TRACK_STATES is enabled. * tests/core/autcross5.test: New file. * tests/Makefile.am: Add it. * NEWS: Mention the bug.
This commit is contained in:
parent
ceb5210569
commit
150f815c87
4 changed files with 239 additions and 26 deletions
6
NEWS
6
NEWS
|
|
@ -113,6 +113,12 @@ New in spot 2.8.6.dev (not yet released)
|
||||||
- autfilt --uniq was not considering differences in acceptance
|
- autfilt --uniq was not considering differences in acceptance
|
||||||
conditions or number of states when discarding automata.
|
conditions or number of states when discarding automata.
|
||||||
|
|
||||||
|
- In an automaton with acceptance condition containing some Fin, and
|
||||||
|
whose accepting cycle could be reduced to a self-loop in an
|
||||||
|
otherwise larger SCC, the generation of an accepting run could be
|
||||||
|
wrong. This could in turn cause segfaults or infinite loops while
|
||||||
|
running autcross or autfilt --stats=%w.
|
||||||
|
|
||||||
New in spot 2.8.6 (2020-02-19)
|
New in spot 2.8.6 (2020-02-19)
|
||||||
|
|
||||||
Bugs fixed:
|
Bugs fixed:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// -*- coding: utf-8 -*-
|
// -*- coding: utf-8 -*-
|
||||||
// Copyright (C) 2014-2019 Laboratoire de Recherche et Développement
|
// Copyright (C) 2014-2020 Laboratoire de Recherche et Développement
|
||||||
// de l'Epita (LRDE).
|
// de l'Epita (LRDE).
|
||||||
//
|
//
|
||||||
// This file is part of Spot, a model checking library.
|
// This file is part of Spot, a model checking library.
|
||||||
|
|
@ -558,14 +558,20 @@ namespace spot
|
||||||
};
|
};
|
||||||
|
|
||||||
// The SCC exploration has a small optimization that can flag SCCs
|
// The SCC exploration has a small optimization that can flag SCCs
|
||||||
// has accepting if they contain accepting self-loops, even if the
|
// as accepting if they contain accepting self-loops, even if the
|
||||||
// SCC itself has some Fin acceptance to check. So we have to
|
// SCC itself has some Fin acceptance to check. So we have to
|
||||||
// deal with this situation before we look for the more complex
|
// deal with this situation before we look for the more complex
|
||||||
// case of satisfying the condition with a larger cycle. We do
|
// case of satisfying the condition with a larger cycle. We do
|
||||||
// this first, because it's good to return a small cycle if we
|
// this first, because it's good to return a small cycle if we
|
||||||
// can.
|
// can.
|
||||||
const acc_cond& acccond = aut_->acc();
|
const acc_cond& acccond = aut_->acc();
|
||||||
for (unsigned s: node.states())
|
unsigned num_states = aut_->num_states();
|
||||||
|
for (unsigned s = 0; s < num_states; ++s)
|
||||||
|
{
|
||||||
|
// We scan the entire state to find those in the SCC, because
|
||||||
|
// we cannot rely on TRACK_STATES being on.
|
||||||
|
if (scc_of(s) != scc)
|
||||||
|
continue;
|
||||||
for (auto& e: aut_->out(s))
|
for (auto& e: aut_->out(s))
|
||||||
if (e.src == e.dst && !filter(e) && acccond.accepting(e.acc))
|
if (e.src == e.dst && !filter(e) && acccond.accepting(e.acc))
|
||||||
{
|
{
|
||||||
|
|
@ -588,7 +594,7 @@ namespace spot
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Prefix search
|
// Prefix search
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -314,6 +314,7 @@ TESTS_twa = \
|
||||||
core/autcross2.test \
|
core/autcross2.test \
|
||||||
core/autcross3.test \
|
core/autcross3.test \
|
||||||
core/autcross4.test \
|
core/autcross4.test \
|
||||||
|
core/autcross5.test \
|
||||||
core/complementation.test \
|
core/complementation.test \
|
||||||
core/randpsl.test \
|
core/randpsl.test \
|
||||||
core/cycles.test \
|
core/cycles.test \
|
||||||
|
|
|
||||||
200
tests/core/autcross5.test
Executable file
200
tests/core/autcross5.test
Executable file
|
|
@ -0,0 +1,200 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (C) 2020 Laboratoire de Recherche et Développement
|
||||||
|
# de l'Epita (LRDE).
|
||||||
|
#
|
||||||
|
# This file is part of Spot, a model checking library.
|
||||||
|
#
|
||||||
|
# Spot is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Spot is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
# License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
. ./defs
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Based on a report by Juraj Major.
|
||||||
|
|
||||||
|
cat >a7.hoa <<EOF
|
||||||
|
HOA: v1 States: 34 Start: 0 AP: 5 "a" "b" "c" "d" "e" Acceptance:
|
||||||
|
7 (Fin(1) | Inf(2)) & (Fin(0) | Inf(5)) & (Inf(3)&Inf(4)&Inf(6))
|
||||||
|
properties: trans-labels explicit-labels trans-acc --BODY-- State:
|
||||||
|
0 [1&!2&4] 1 [0&1&2 | 1&!2&!4 | 1&2&3] 2 [!0&1&2&!3&4] 3 [0&1&2&4 |
|
||||||
|
1&2&3&4] 4 [!0&1&2&!3&!4] 5 [0&1&2&!4 | 1&2&3&!4] 6 [!1&!2&!4] 7 [!1&2&!4]
|
||||||
|
8 [!1&2&4] 9 [1&2&!4] 10 [0&1&2&!4 | 1&2&3&!4] 11 [!1&2&!4] 12 [!1&!2] 13
|
||||||
|
[0&!1&2 | !1&2&3] 14 State: 1 [1&!2&4] 1 {3 4 6} [0&1&2&!4 | 1&2&3&!4]
|
||||||
|
2 {6} [0&1&2&4 | 1&2&3&4] 2 {3 6} [1&!2&!4] 2 {4 6} [!0&1&2&!3&4]
|
||||||
|
3 {3 6} [0&1&2&4 | 1&2&3&4] 4 {3 6} [!0&1&2&!3&!4] 5 {6} [0&1&2&!4 |
|
||||||
|
1&2&3&!4] 6 {6} [1&2&!4] 10 [0&1&2&!4 | 1&2&3&!4] 11 State: 2 [1&!2&4]
|
||||||
|
1 {3 4 6} [0&1&2&!4 | 1&2&3&!4] 2 {6} [0&1&2&4 | 1&2&3&4] 2 {3 6}
|
||||||
|
[1&!2&!4] 2 {4 6} [!0&1&2&!3&4] 3 {3 6} [0&1&2&4 | 1&2&3&4] 4 {3 6}
|
||||||
|
[!0&1&2&!3&!4] 5 {6} [0&1&2&!4 | 1&2&3&!4] 6 {6} State: 3 [1&!2&4]
|
||||||
|
1 {3 4 6} [0&1&2&!4 | 1&2&3&!4] 2 {6} [0&1&2&4 | 1&2&3&4] 2 {3 6}
|
||||||
|
[1&!2&!4] 2 {4 6} [!0&1&2&!3&4] 3 {3 6} [0&1&2&4 | 1&2&3&4] 4 {3 6}
|
||||||
|
[!0&1&2&!3&!4] 5 {6} [0&1&2&!4 | 1&2&3&!4] 6 {6} [!1&!2&!4] 7 [!1&2&!4]
|
||||||
|
8 [!1&!2] 13 [0&!1&2 | !1&2&3] 15 State: 4 [!0&1&!2&!3&4] 1 {3 4 5 6}
|
||||||
|
[!0&1&!2&!3&!4] 2 {4 5 6} [!0&1&2&!3&4] 3 {3 5 6} [!0&1&2&!3&!4] 5 {5 6}
|
||||||
|
[!0&!1&!2&!3&!4] 7 [!0&!1&2&!3&!4] 8 [!0&!1&!2&!3] 13 [!0&1&!2&3&4] 16
|
||||||
|
{3 4 6} [0&1&!2&4] 16 {0 3 4 6} [!0&1&!2&3&!4] 17 {4 6} [0&1&!2&!4] 17
|
||||||
|
{0 4 6} [0&!1&!2&!4 | !1&!2&3&!4] 18 [0&!1&!2 | !1&!2&3] 19 [0&!1&2&!4 |
|
||||||
|
!1&2&3&!4] 20 State: 5 [1&!2&4] 1 {3 4 6} [0&1&2&!4 | 1&2&3&!4] 2 {6}
|
||||||
|
[0&1&2&4 | 1&2&3&4] 2 {3 6} [1&!2&!4] 2 {4 6} [!0&1&2&!3&4] 3 {3 6}
|
||||||
|
[0&1&2&4 | 1&2&3&4] 4 {3 6} [!0&1&2&!3&!4] 5 {6} [0&1&2&!4 | 1&2&3&!4]
|
||||||
|
6 {6} [!1&!2&4] 13 [0&!1&2&4 | !1&2&3&4] 15 [!1&!2&!4] 21 [0&!1&2&!4 |
|
||||||
|
!1&2&3&!4] 22 State: 6 [!0&1&!2&!3&4] 1 {3 4 5 6} [!0&1&!2&!3&!4] 2 {4
|
||||||
|
5 6} [!0&1&2&!3&4] 3 {3 5 6} [!0&1&2&!3&!4] 5 {5 6} [!0&!1&!2&!3&4] 13
|
||||||
|
[!0&1&!2&3&4] 16 {3 4 6} [0&1&!2&4] 16 {0 3 4 6} [!0&1&!2&3&!4] 17 {4 6}
|
||||||
|
[0&1&!2&!4] 17 {0 4 6} [0&!1&!2&4 | !1&!2&3&4] 19 [!0&!1&!2&!3&!4] 21
|
||||||
|
[0&!1&!2&!4 | !1&!2&3&!4] 23 State: 7 [!1&!2&!4] 7 {3 4 6} [!1&2&!4]
|
||||||
|
8 {3 6} [1&2&!4] 10 [0&1&2&!4 | 1&2&3&!4] 11 [0&!1&2&!4 | !1&2&3&!4]
|
||||||
|
24 State: 8 [!1&!2&!4] 7 {3 4 6} [!1&2&!4] 8 {3 6} State: 9 [!1&2&4] 9
|
||||||
|
{3 4 6} [1&2&!4] 10 [0&1&2&!4 | 1&2&3&!4] 11 [!1&2&!4] 12 {4 6} [0&!1&2 |
|
||||||
|
!1&2&3] 25 State: 10 [1&2&!4] 10 {3 4 6} [0&1&2&!4 | 1&2&3&!4] 11 {3 4 6}
|
||||||
|
State: 11 [!0&1&2&!3&!4] 10 {3 4 5 6} [!0&1&2&3&!4] 11 {3 4 6} [0&1&2&!4]
|
||||||
|
11 {0 3 4 6} State: 12 [!1&2&4] 9 {3 4 6} [!1&2&!4] 12 {4 6} State: 13
|
||||||
|
[!1&!2&!4] 7 [!1&2&!4] 8 [!1&2&4] 9 [!1&2&!4] 12 [!1&!2] 13 [0&!1&2 |
|
||||||
|
!1&2&3] 14 State: 14 [0&!1] 14 [!0&!1&3] 14 {1} [0&!1&!2&!4 | !1&!2&3&!4]
|
||||||
|
26 [0&!1&2&!4 | !1&2&3&!4] 27 [0&!1&2&4 | !1&2&3&4] 28 [0&!1&2&!4 |
|
||||||
|
!1&2&3&!4] 29 State: 15 [0&!1&!2 | !1&!2&3] 14 [0&!1&2] 15 [!0&!1&2&3]
|
||||||
|
15 {1} [0&!1&!2&!4 | !1&!2&3&!4] 26 [0&!1&2&!4 | !1&2&3&!4] 27 State:
|
||||||
|
16 [!0&1&!2&!3&4] 1 {3 4 5 6} [!0&1&!2&!3&!4] 2 {4 5 6} [!0&1&2&!3&4]
|
||||||
|
3 {3 5 6} [!0&1&2&!3&!4] 5 {5 6} [!0&1&2&!3&!4] 10 [!0&1&!2&3&4] 16
|
||||||
|
{3 4 6} [0&1&!2&4] 16 {0 3 4 6} [!0&1&!2&3&!4] 17 {4 6} [0&1&!2&!4] 17
|
||||||
|
{0 4 6} State: 17 [!0&1&!2&!3&4] 1 {3 4 5 6} [!0&1&!2&!3&!4] 2 {4 5 6}
|
||||||
|
[!0&1&2&!3&4] 3 {3 5 6} [!0&1&2&!3&!4] 5 {5 6} [!0&1&!2&3&4] 16 {3 4 6}
|
||||||
|
[0&1&!2&4] 16 {0 3 4 6} [!0&1&!2&3&!4] 17 {4 6} [0&1&!2&!4] 17 {0 4 6}
|
||||||
|
State: 18 [!0&!1&!2&!3&!4] 7 [!0&!1&2&!3&!4] 8 [!0&1&2&!3&!4] 10 [0&1&2&!4
|
||||||
|
| 1&2&3&!4] 11 [!0&!1&!2&3&!4] 18 {3 4 6} [0&!1&!2&!4] 18 {0 3 4 6}
|
||||||
|
[!0&!1&2&3&!4] 20 {3 6} [0&!1&2&!4] 20 {0 3 6} State: 19 [!0&!1&!2&!3&!4]
|
||||||
|
7 [!0&!1&2&!3&!4] 8 [!0&!1&2&!3&4] 9 [!0&!1&2&!3&!4] 12 [!0&!1&!2&!3] 13
|
||||||
|
[0&!1&!2&!4 | !1&!2&3&!4] 18 [!0&!1&!2&3] 19 [0&!1&!2] 19 {0} [0&!1&2&!4 |
|
||||||
|
!1&2&3&!4] 20 [0&!1&2&4 | !1&2&3&4] 30 [0&!1&2&!4 | !1&2&3&!4] 31 State:
|
||||||
|
20 [!0&!1&!2&!3&!4] 7 [!0&!1&2&!3&!4] 8 [!0&!1&!2&3&!4] 18 {3 4 6}
|
||||||
|
[0&!1&!2&!4] 18 {0 3 4 6} [!0&!1&2&3&!4] 20 {3 6} [0&!1&2&!4] 20 {0 3 6}
|
||||||
|
State: 21 [!1&2&4] 9 [!1&2&!4] 12 [!1&!2&4] 13 [0&!1&2&4 | !1&2&3&4] 14
|
||||||
|
[!1&!2&!4] 21 [0&!1&2&!4 | !1&2&3&!4] 32 State: 22 [0&!1&!2&4 | !1&!2&3&4]
|
||||||
|
14 [0&!1&2&4 | !1&2&3&4] 15 [0&!1&2&!4] 22 [!0&!1&2&3&!4] 22 {1}
|
||||||
|
[0&!1&!2&!4 | !1&!2&3&!4] 32 State: 23 [!0&!1&2&!3&4] 9 [!0&!1&2&!3&!4]
|
||||||
|
12 [!0&!1&!2&!3&4] 13 [0&!1&!2&4 | !1&!2&3&4] 19 [!0&!1&!2&!3&!4] 21
|
||||||
|
[!0&!1&!2&3&!4] 23 [0&!1&!2&!4] 23 {0} [0&!1&2&4 | !1&2&3&4] 30 [0&!1&2&!4
|
||||||
|
| !1&2&3&!4] 31 State: 24 [!0&!1&2&3&!4] 24 {1 3 4} [0&!1&2&!4] 24 {2 3 4}
|
||||||
|
[!0&!1&!2&3&!4] 26 {1 3 4 6} [0&!1&!2&!4] 26 {2 3 4 6} [!0&!1&2&3&!4]
|
||||||
|
27 {1 3 6} [0&!1&2&!4] 27 {2 3 6} State: 25 [!0&!1&2&3&!4] 25 {1 3 4}
|
||||||
|
[0&!1&2&!4] 25 {2 3 4} [!0&!1&2&3&4] 28 {1 3 4 6} [0&!1&2&4] 28 {2
|
||||||
|
3 4 6} [!0&!1&2&3&!4] 29 {1 4 6} [0&!1&2&!4] 29 {2 4 6} State: 26
|
||||||
|
[!0&!1&2&3&!4] 24 {1 3 4} [0&!1&2&!4] 24 {2 3 4} [!0&!1&!2&3&!4] 26 {1
|
||||||
|
3 4 6} [0&!1&!2&!4] 26 {2 3 4 6} [!0&!1&2&3&!4] 27 {1 3 6} [0&!1&2&!4]
|
||||||
|
27 {2 3 6} [0&1&2&!4 | 1&2&3&!4] 33 State: 27 [!0&!1&!2&3&!4] 26 {1 3 4 6}
|
||||||
|
[0&!1&!2&!4] 26 {2 3 4 6} [!0&!1&2&3&!4] 27 {1 3 6} [0&!1&2&!4] 27 {2 3 6}
|
||||||
|
State: 28 [!0&!1&2&3&!4] 25 {1 3 4} [0&!1&2&!4] 25 {2 3 4} [!0&!1&2&3&4]
|
||||||
|
28 {1 3 4 6} [0&!1&2&4] 28 {2 3 4 6} [!0&!1&2&3&!4] 29 {1 4 6} [0&!1&2&!4]
|
||||||
|
29 {2 4 6} [0&1&2&!4 | 1&2&3&!4] 33 State: 29 [!0&!1&2&3&4] 28 {1 3 4 6}
|
||||||
|
[0&!1&2&4] 28 {2 3 4 6} [!0&!1&2&3&!4] 29 {1 4 6} [0&!1&2&!4] 29 {2 4
|
||||||
|
6} State: 30 [!0&!1&2&!3&4] 9 [!0&1&2&!3&!4] 10 [0&1&2&!4 | 1&2&3&!4]
|
||||||
|
11 [!0&!1&2&!3&!4] 12 [!0&!1&2&3&4] 30 {3 4 6} [0&!1&2&4] 30 {0 3 4 6}
|
||||||
|
[!0&!1&2&3&!4] 31 {4 6} [0&!1&2&!4] 31 {0 4 6} State: 31 [!0&!1&2&!3&4]
|
||||||
|
9 [!0&!1&2&!3&!4] 12 [!0&!1&2&3&4] 30 {3 4 6} [0&!1&2&4] 30 {0 3 4 6}
|
||||||
|
[!0&!1&2&3&!4] 31 {4 6} [0&!1&2&!4] 31 {0 4 6} State: 32 [0&!1&4 |
|
||||||
|
!1&3&4] 14 [0&!1&2&4 | !1&2&3&4] 28 [0&!1&2&!4 | !1&2&3&!4] 29 [0&!1&!4]
|
||||||
|
32 [!0&!1&3&!4] 32 {1} State: 33 [!0&1&2&3&!4] 33 {1 3 4 6} [0&1&2&!4]
|
||||||
|
33 {2 3 4 6} --END--
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >_a7.hoa <<EOF
|
||||||
|
HOA: v1 States: 34 Start: 0 AP: 5 "a" "b" "c" "d" "e" Acceptance:
|
||||||
|
6 (Fin(0) & (Inf(1)&Inf(2))) | (Inf(3)&Inf(4)&Inf(5)) properties:
|
||||||
|
trans-labels explicit-labels trans-acc --BODY-- State: 0 [1&!2&4]
|
||||||
|
1 [0&1&2 | 1&!2&!4 | 1&2&3] 2 [!0&1&2&!3&4] 3 [0&1&2&4 | 1&2&3&4]
|
||||||
|
4 [!0&1&2&!3&!4] 5 [0&1&2&!4 | 1&2&3&!4] 6 [!1&!2&!4] 7 [!1&2&!4] 8
|
||||||
|
[!1&2&4] 9 [1&2&!4] 10 [0&1&2&!4 | 1&2&3&!4] 11 [!1&2&!4] 12 [!1&!2] 13
|
||||||
|
[0&!1&2 | !1&2&3] 14 State: 1 [1&!2&4] 1 {1 2 3 4} [0&1&2&!4 | 1&2&3&!4]
|
||||||
|
2 [0&1&2&4 | 1&2&3&4] 2 {1 3} [1&!2&!4] 2 {2 4} [!0&1&2&!3&4] 3 {1 3}
|
||||||
|
[0&1&2&4 | 1&2&3&4] 4 {1 3} [!0&1&2&!3&!4] 5 [0&1&2&!4 | 1&2&3&!4]
|
||||||
|
6 [1&2&!4] 10 [0&1&2&!4 | 1&2&3&!4] 11 State: 2 [1&!2&4] 1 {1 2 3 4}
|
||||||
|
[0&1&2&!4 | 1&2&3&!4] 2 [0&1&2&4 | 1&2&3&4] 2 {1 3} [1&!2&!4] 2 {2 4}
|
||||||
|
[!0&1&2&!3&4] 3 {1 3} [0&1&2&4 | 1&2&3&4] 4 {1 3} [!0&1&2&!3&!4]
|
||||||
|
5 [0&1&2&!4 | 1&2&3&!4] 6 State: 3 [1&!2&4] 1 {1 2 3 4} [0&1&2&!4 |
|
||||||
|
1&2&3&!4] 2 [0&1&2&4 | 1&2&3&4] 2 {1 3} [1&!2&!4] 2 {2 4} [!0&1&2&!3&4] 3
|
||||||
|
{1 3} [0&1&2&4 | 1&2&3&4] 4 {1 3} [!0&1&2&!3&!4] 5 [0&1&2&!4 | 1&2&3&!4]
|
||||||
|
6 [!1&!2&!4] 7 [!1&2&!4] 8 [!1&!2] 13 [0&!1&2 | !1&2&3] 15 State: 4
|
||||||
|
[!0&1&!2&!3&4] 1 {1 2 3 4 5} [!0&1&!2&!3&!4] 2 {2 4 5} [!0&1&2&!3&4]
|
||||||
|
3 {1 3 5} [!0&1&2&!3&!4] 5 {5} [!0&!1&!2&!3&!4] 7 [!0&!1&2&!3&!4] 8
|
||||||
|
[!0&!1&!2&!3] 13 [!0&1&!2&3&4] 16 {1 2 3 4} [0&1&!2&4] 16 {0 1 2 3 4}
|
||||||
|
[!0&1&!2&3&!4] 17 {2 4} [0&1&!2&!4] 17 {0 2 4} [0&!1&!2&!4 | !1&!2&3&!4]
|
||||||
|
18 [0&!1&!2 | !1&!2&3] 19 [0&!1&2&!4 | !1&2&3&!4] 20 State: 5 [1&!2&4]
|
||||||
|
1 {1 2 3 4} [0&1&2&!4 | 1&2&3&!4] 2 [0&1&2&4 | 1&2&3&4] 2 {1 3} [1&!2&!4]
|
||||||
|
2 {2 4} [!0&1&2&!3&4] 3 {1 3} [0&1&2&4 | 1&2&3&4] 4 {1 3} [!0&1&2&!3&!4] 5
|
||||||
|
[0&1&2&!4 | 1&2&3&!4] 6 [!1&!2&4] 13 [0&!1&2&4 | !1&2&3&4] 15 [!1&!2&!4]
|
||||||
|
21 [0&!1&2&!4 | !1&2&3&!4] 22 State: 6 [!0&1&!2&!3&4] 1 {1 2 3 4 5}
|
||||||
|
[!0&1&!2&!3&!4] 2 {2 4 5} [!0&1&2&!3&4] 3 {1 3 5} [!0&1&2&!3&!4]
|
||||||
|
5 {5} [!0&!1&!2&!3&4] 13 [!0&1&!2&3&4] 16 {1 2 3 4} [0&1&!2&4] 16 {0
|
||||||
|
1 2 3 4} [!0&1&!2&3&!4] 17 {2 4} [0&1&!2&!4] 17 {0 2 4} [0&!1&!2&4 |
|
||||||
|
!1&!2&3&4] 19 [!0&!1&!2&!3&!4] 21 [0&!1&!2&!4 | !1&!2&3&!4] 23 State:
|
||||||
|
7 [!1&!2&!4] 7 {1 2} [!1&2&!4] 8 {2} [1&2&!4] 10 [0&1&2&!4 | 1&2&3&!4]
|
||||||
|
11 [0&!1&2&!4 | !1&2&3&!4] 24 State: 8 [!1&!2&!4] 7 {1 2} [!1&2&!4]
|
||||||
|
8 {2} State: 9 [!1&2&4] 9 {1 2} [1&2&!4] 10 [0&1&2&!4 | 1&2&3&!4] 11
|
||||||
|
[!1&2&!4] 12 {2} [0&!1&2 | !1&2&3] 25 State: 10 [1&2&!4] 10 {1 2 4 5}
|
||||||
|
[0&1&2&!4 | 1&2&3&!4] 11 {1 2 4 5} State: 11 [!0&1&2&!3&!4] 10 {1 2 3 4 5}
|
||||||
|
[!0&1&2&3&!4] 11 {1 2 4 5} [0&1&2&!4] 11 {0 1 2 4 5} State: 12 [!1&2&4]
|
||||||
|
9 {1 2} [!1&2&!4] 12 {2} State: 13 [!1&!2&!4] 7 [!1&2&!4] 8 [!1&2&4] 9
|
||||||
|
[!1&2&!4] 12 [!1&!2] 13 [0&!1&2 | !1&2&3] 14 State: 14 [0&!1] 14 [!0&!1&3]
|
||||||
|
14 [0&!1&!2&!4 | !1&!2&3&!4] 26 [0&!1&2&!4 | !1&2&3&!4] 27 [0&!1&2&4 |
|
||||||
|
!1&2&3&4] 28 [0&!1&2&!4 | !1&2&3&!4] 29 State: 15 [0&!1&!2 | !1&!2&3]
|
||||||
|
14 [0&!1&2] 15 [!0&!1&2&3] 15 [0&!1&!2&!4 | !1&!2&3&!4] 26 [0&!1&2&!4 |
|
||||||
|
!1&2&3&!4] 27 State: 16 [!0&1&!2&!3&4] 1 {1 2 3 4 5} [!0&1&!2&!3&!4]
|
||||||
|
2 {2 4 5} [!0&1&2&!3&4] 3 {1 3 5} [!0&1&2&!3&!4] 5 {5} [!0&1&2&!3&!4]
|
||||||
|
10 [!0&1&!2&3&4] 16 {1 2 3 4} [0&1&!2&4] 16 {0 1 2 3 4} [!0&1&!2&3&!4]
|
||||||
|
17 {2 4} [0&1&!2&!4] 17 {0 2 4} State: 17 [!0&1&!2&!3&4] 1 {1 2 3 4 5}
|
||||||
|
[!0&1&!2&!3&!4] 2 {2 4 5} [!0&1&2&!3&4] 3 {1 3 5} [!0&1&2&!3&!4] 5 {5}
|
||||||
|
[!0&1&!2&3&4] 16 {1 2 3 4} [0&1&!2&4] 16 {0 1 2 3 4} [!0&1&!2&3&!4] 17 {2
|
||||||
|
4} [0&1&!2&!4] 17 {0 2 4} State: 18 [!0&!1&!2&!3&!4] 7 [!0&!1&2&!3&!4]
|
||||||
|
8 [!0&1&2&!3&!4] 10 [0&1&2&!4 | 1&2&3&!4] 11 [!0&!1&!2&3&!4] 18 {1 2}
|
||||||
|
[0&!1&!2&!4] 18 {0 1 2} [!0&!1&2&3&!4] 20 {2} [0&!1&2&!4] 20 {0 2} State:
|
||||||
|
19 [!0&!1&!2&!3&!4] 7 [!0&!1&2&!3&!4] 8 [!0&!1&2&!3&4] 9 [!0&!1&2&!3&!4]
|
||||||
|
12 [!0&!1&!2&!3] 13 [0&!1&!2&!4 | !1&!2&3&!4] 18 [!0&!1&!2&3] 19
|
||||||
|
[0&!1&!2] 19 [0&!1&2&!4 | !1&2&3&!4] 20 [0&!1&2&4 | !1&2&3&4] 30
|
||||||
|
[0&!1&2&!4 | !1&2&3&!4] 31 State: 20 [!0&!1&!2&!3&!4] 7 [!0&!1&2&!3&!4]
|
||||||
|
8 [!0&!1&!2&3&!4] 18 {1 2} [0&!1&!2&!4] 18 {0 1 2} [!0&!1&2&3&!4] 20 {2}
|
||||||
|
[0&!1&2&!4] 20 {0 2} State: 21 [!1&2&4] 9 [!1&2&!4] 12 [!1&!2&4] 13
|
||||||
|
[0&!1&2&4 | !1&2&3&4] 14 [!1&!2&!4] 21 [0&!1&2&!4 | !1&2&3&!4] 32 State:
|
||||||
|
22 [0&!1&!2&4 | !1&!2&3&4] 14 [0&!1&2&4 | !1&2&3&4] 15 [0&!1&2&!4] 22
|
||||||
|
[!0&!1&2&3&!4] 22 [0&!1&!2&!4 | !1&!2&3&!4] 32 State: 23 [!0&!1&2&!3&4]
|
||||||
|
9 [!0&!1&2&!3&!4] 12 [!0&!1&!2&!3&4] 13 [0&!1&!2&4 | !1&!2&3&4] 19
|
||||||
|
[!0&!1&!2&!3&!4] 21 [!0&!1&!2&3&!4] 23 [0&!1&!2&!4] 23 [0&!1&2&4 |
|
||||||
|
!1&2&3&4] 30 [0&!1&2&!4 | !1&2&3&!4] 31 State: 24 [!0&!1&2&3&!4]
|
||||||
|
24 {0 1 2 4} [0&!1&2&!4] 24 {1 2 3 4} [!0&!1&!2&3&!4] 26 {0 1 2 4 5}
|
||||||
|
[0&!1&!2&!4] 26 {1 2 3 4 5} [!0&!1&2&3&!4] 27 {0 1 2 5} [0&!1&2&!4] 27
|
||||||
|
{1 2 3 5} State: 25 [!0&!1&2&3&!4] 25 {0 1 2 4} [0&!1&2&!4] 25 {1 2 3 4}
|
||||||
|
[!0&!1&2&3&4] 28 {0 1 2 4 5} [0&!1&2&4] 28 {1 2 3 4 5} [!0&!1&2&3&!4] 29
|
||||||
|
{0 1 2 5} [0&!1&2&!4] 29 {1 2 3 5} State: 26 [!0&!1&2&3&!4] 24 {0 1 2 4}
|
||||||
|
[0&!1&2&!4] 24 {1 2 3 4} [!0&!1&!2&3&!4] 26 {0 1 2 4 5} [0&!1&!2&!4] 26 {1
|
||||||
|
2 3 4 5} [!0&!1&2&3&!4] 27 {0 1 2 5} [0&!1&2&!4] 27 {1 2 3 5} [0&1&2&!4
|
||||||
|
| 1&2&3&!4] 33 State: 27 [!0&!1&!2&3&!4] 26 {0 1 2 4 5} [0&!1&!2&!4] 26
|
||||||
|
{1 2 3 4 5} [!0&!1&2&3&!4] 27 {0 1 2 5} [0&!1&2&!4] 27 {1 2 3 5} State:
|
||||||
|
28 [!0&!1&2&3&!4] 25 {0 1 2 4} [0&!1&2&!4] 25 {1 2 3 4} [!0&!1&2&3&4]
|
||||||
|
28 {0 1 2 4 5} [0&!1&2&4] 28 {1 2 3 4 5} [!0&!1&2&3&!4] 29 {0 1 2 5}
|
||||||
|
[0&!1&2&!4] 29 {1 2 3 5} [0&1&2&!4 | 1&2&3&!4] 33 State: 29 [!0&!1&2&3&4]
|
||||||
|
28 {0 1 2 4 5} [0&!1&2&4] 28 {1 2 3 4 5} [!0&!1&2&3&!4] 29 {0 1 2 5}
|
||||||
|
[0&!1&2&!4] 29 {1 2 3 5} State: 30 [!0&!1&2&!3&4] 9 [!0&1&2&!3&!4]
|
||||||
|
10 [0&1&2&!4 | 1&2&3&!4] 11 [!0&!1&2&!3&!4] 12 [!0&!1&2&3&4] 30 {1 2}
|
||||||
|
[0&!1&2&4] 30 {0 1 2} [!0&!1&2&3&!4] 31 {2} [0&!1&2&!4] 31 {0 2} State:
|
||||||
|
31 [!0&!1&2&!3&4] 9 [!0&!1&2&!3&!4] 12 [!0&!1&2&3&4] 30 {1 2} [0&!1&2&4]
|
||||||
|
30 {0 1 2} [!0&!1&2&3&!4] 31 {2} [0&!1&2&!4] 31 {0 2} State: 32 [0&!1&4 |
|
||||||
|
!1&3&4] 14 [0&!1&2&4 | !1&2&3&4] 28 [0&!1&2&!4 | !1&2&3&!4] 29 [0&!1&!4]
|
||||||
|
32 [!0&!1&3&!4] 32 State: 33 [!0&1&2&3&!4] 33 {0 1 2 4 5} [0&1&2&!4]
|
||||||
|
33 {1 2 3 4 5} --END--
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# The following command used to do segfault or loop infinitely
|
||||||
|
# due to an incorrectly generated counterexample.
|
||||||
|
autcross -F a7.hoa 'autfilt' ': %H && cat _a7.hoa > %O' 2>stderr && exit 2
|
||||||
|
cat stderr
|
||||||
|
grep 'both automata accept the infinite word:' stderr
|
||||||
Loading…
Add table
Add a link
Reference in a new issue