Commit 150f815c authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz

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.
parent ceb52105
Pipeline #17497 passed with stage
in 120 minutes and 41 seconds
......@@ -113,6 +113,12 @@ New in spot 2.8.6.dev (not yet released)
- autfilt --uniq was not considering differences in acceptance
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)
Bugs fixed:
......
// -*- 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).
//
// This file is part of Spot, a model checking library.
......@@ -558,37 +558,43 @@ namespace spot
};
// 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
// deal with this situation before we look for the more complex
// case of satisfying the condition with a larger cycle. We do
// this first, because it's good to return a small cycle if we
// can.
const acc_cond& acccond = aut_->acc();
for (unsigned s: node.states())
for (auto& e: aut_->out(s))
if (e.src == e.dst && !filter(e) && acccond.accepting(e.acc))
{
// We have found an accepting self-loop. That's the cycle
// part of our accepting run.
r->cycle.clear();
r->cycle.emplace_front(aut_->state_from_number(e.src),
e.cond, e.acc);
// Add the prefix.
r->prefix.clear();
if (e.src != init)
explicit_bfs_steps(aut_, init, r->prefix,
[](const twa_graph::edge_storage_t&)
{
return false; // Do not filter.
},
[&](const twa_graph::edge_storage_t& t)
{
return t.dst == e.src;
});
return;
}
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))
if (e.src == e.dst && !filter(e) && acccond.accepting(e.acc))
{
// We have found an accepting self-loop. That's the cycle
// part of our accepting run.
r->cycle.clear();
r->cycle.emplace_front(aut_->state_from_number(e.src),
e.cond, e.acc);
// Add the prefix.
r->prefix.clear();
if (e.src != init)
explicit_bfs_steps(aut_, init, r->prefix,
[](const twa_graph::edge_storage_t&)
{
return false; // Do not filter.
},
[&](const twa_graph::edge_storage_t& t)
{
return t.dst == e.src;
});
return;
}
}
// Prefix search
......
......@@ -314,6 +314,7 @@ TESTS_twa = \
core/autcross2.test \
core/autcross3.test \
core/autcross4.test \
core/autcross5.test \
core/complementation.test \
core/randpsl.test \
core/cycles.test \
......
#!/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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment