sbacc: ignore false edges and unreachable states
* spot/twaalgos/sbacc.cc: Here.
This commit is contained in:
parent
f2d034130a
commit
1a2746e182
1 changed files with 25 additions and 21 deletions
|
|
@ -1,5 +1,5 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2015-2018, 2021 Laboratoire de Recherche et Développement
|
||||
// Copyright (C) 2015-2018, 2021, 2023 Laboratoire de Recherche et Développement
|
||||
// de l'Epita (LRDE).
|
||||
//
|
||||
// This file is part of Spot, a model checking library.
|
||||
|
|
@ -59,6 +59,7 @@ namespace spot
|
|||
// about a possible uninitialized use later.
|
||||
unsigned true_state_last = unsigned();
|
||||
for (auto& e: old->edges())
|
||||
if (SPOT_LIKELY(e.cond != bddfalse && si.reachable_state(e.src)))
|
||||
for (unsigned d: old->univ_dests(e.dst))
|
||||
if (si.scc_of(e.src) == si.scc_of(d))
|
||||
{
|
||||
|
|
@ -79,6 +80,7 @@ namespace spot
|
|||
for (unsigned s = 0; s < ns; ++s)
|
||||
common_out[s] |= common_in[s];
|
||||
for (auto& e: old->edges())
|
||||
if (SPOT_LIKELY(e.cond != bddfalse && si.reachable_state(e.src)))
|
||||
for (unsigned d: old->univ_dests(e.dst))
|
||||
if (si.scc_of(e.src) == si.scc_of(d))
|
||||
one_in[d] = e.acc - common_out[e.src];
|
||||
|
|
@ -159,6 +161,8 @@ namespace spot
|
|||
bool maybe_accepting = !si.is_rejecting_scc(scc_src);
|
||||
for (auto& t: old->out(one.first.first))
|
||||
{
|
||||
if (SPOT_UNLIKELY(t.cond == bddfalse))
|
||||
continue;
|
||||
std::vector<unsigned> dests;
|
||||
for (unsigned d: old->univ_dests(t.dst))
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue