minimize_wdba: fix handling of input with useless SCCs

* spot/twaalgos/minimize.cc (minimize_wdba): Diminish the color of
terminal SCCs that are incomplete, as if they had a non-accepting
sink as successor.
* spot/twaalgos/strength.hh, spot/twaalgos/strength.cc
(is_terminal_automaton): Add an option to ignore trivial SCC as we did
before, since it matters for deciding membership to the guarantee
class.
(is_safety_mwdba): Rewrite as ...
(is_safety_automaton): ... generalizating to any acceptance, and
ignoring trivial SCCs.
* bin/ltlfilt.cc, python/ajax/spotcgi.in, spot/tl/hierarchy.cc,
tests/core/ikwiad.cc: Adjust usage of is_terminal_automaton and
is_safety_automaton().
* tests/core/hierarchy.test: Add a problematic formula as test-case.
* NEWS: Mention the bug.
This commit is contained in:
Alexandre Duret-Lutz 2017-01-11 18:06:41 +01:00
parent 7d9ce0d6fc
commit c9918f6407
9 changed files with 94 additions and 50 deletions

View file

@ -1,5 +1,5 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2007-2016 Laboratoire de Recherche et Développement
// Copyright (C) 2007-2017 Laboratoire de Recherche et Développement
// de l'Epita (LRDE).
// Copyright (C) 2003-2007 Laboratoire d'Informatique de Paris 6
// (LIP6), département Systèmes Répartis Coopératifs (SRC), Université
@ -1373,8 +1373,9 @@ checked_main(int argc, char** argv)
}
else
{
bool g = is_terminal_automaton(ensure_digraph(a));
bool s = is_safety_mwdba(ensure_digraph(a));
bool g = is_terminal_automaton(ensure_digraph(a),
nullptr, true);
bool s = is_safety_automaton(ensure_digraph(a));
if (g && !s)
{
std::cout << "this is a guarantee property (hence, "