ignore false edges in emptiness checks and scc_info

Based on reports by Florian Renkin and Jens Kreber.

* spot/twaalgos/bfssteps.cc, spot/twaalgos/couvreurnew.cc,
spot/twaalgos/gtec/gtec.cc, spot/twaalgos/gv04.cc,
spot/twaalgos/magic.cc, spot/twaalgos/sccinfo.cc
spot/twaalgos/se05.cc, spot/twaalgos/tau03.cc: Ignore bddfalse edges.
* spot/twaalgos/gtec/gtec.hh: Remove debugging function.
* tests/core/neverclaimread.test: Adjust.
* tests/python/ecfalse.py: New test file.
* tests/Makefile.am: Add it.
* NEWS: Mention the bug.
This commit is contained in:
Alexandre Duret-Lutz 2020-04-11 11:09:10 +02:00
parent 67fa19cb08
commit 0b25820211
13 changed files with 206 additions and 61 deletions

View file

@ -1,5 +1,5 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2011, 2013-2019 Laboratoire de recherche et
// Copyright (C) 2011, 2013-2020 Laboratoire de recherche et
// développement de l'Epita (LRDE).
// Copyright (C) 2004, 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
@ -199,6 +199,8 @@ namespace spot
// Go down the edge (f.s, <label, acc>, s_prime)
f.it->next();
inc_transitions();
if (SPOT_UNLIKELY(label == bddfalse))
continue;
typename heap::color_ref c = h.get_color_ref(s_prime);
if (c.is_white())
{
@ -286,6 +288,8 @@ namespace spot
// Go down the edge (f.s, <label, acc>, s_prime)
f.it->next();
inc_transitions();
if (SPOT_UNLIKELY(label == bddfalse))
continue;
typename heap::color_ref c = h.get_color_ref(s_prime);
if (c.is_white())
{