diff --git a/src/tgbaalgos/scc.cc b/src/tgbaalgos/scc.cc index 7360680b6..0f707d92d 100644 --- a/src/tgbaalgos/scc.cc +++ b/src/tgbaalgos/scc.cc @@ -1,5 +1,6 @@ -// Copyright (C) 2008, 2009, 2011 Laboratoire de Recherche et -// Developpement de l'Epita. +// -*- coding: utf-8 -*- +// Copyright (C) 2008, 2009, 2011, 2012 Laboratoire de Recherche et +// Développement de l'Epita. // // This file is part of Spot, a model checking library. // @@ -212,6 +213,7 @@ namespace spot ++self_loops_; bdd acc = succ->current_acceptance_conditions(); bdd cond = succ->current_condition(); + root_.front().supp &= bdd_support(cond); // ... and point the iterator to the next successor, for // the next iteration. succ->next(); @@ -268,7 +270,7 @@ namespace spot succ_type succs; cond_set conds; conds.insert(cond); - bdd supp = bdd_support(cond); + bdd supp = bddtrue; bdd all = aut_->all_acceptance_conditions(); bdd useful = conv.as_full_product(acc); while (threshold > root_.front().index) diff --git a/src/tgbaalgos/scc.hh b/src/tgbaalgos/scc.hh index 8baf634f1..3525d25ef 100644 --- a/src/tgbaalgos/scc.hh +++ b/src/tgbaalgos/scc.hh @@ -1,5 +1,6 @@ -// Copyright (C) 2008, 2009, 2010, 2011 Laboratoire de Recherche et -// Developpement de l'Epita. +// -*- coding: utf-8 -*- +// Copyright (C) 2008, 2009, 2010, 2011, 2012 Laboratoire de Recherche +// et Développement de l'Epita. // // This file is part of Spot, a model checking library. // @@ -122,10 +123,14 @@ namespace spot /// \pre This should only be called once build_map() has run. const cond_set& cond_set_of(unsigned n) const; - /// \brief Return the set of atomic properties occurring in an SCC. + /// \brief Return the set of atomic properties occurring on the + /// transitions leaving states from SCC \a n. + /// + /// The transitions considered are all transitions inside SCC + /// \a n, as well as the transitions leaving SCC \a n. /// /// \return a BDD that is a conjuction of all atomic properties - /// occurring on the transitions in the SCC n. + /// occurring on the transitions leaving the states of SCC \a n. /// /// \pre This should only be called once build_map() has run. bdd ap_set_of(unsigned n) const; diff --git a/src/tgbatest/kv.test b/src/tgbatest/kv.test index e4a71a8f4..719d4e0dc 100755 --- a/src/tgbatest/kv.test +++ b/src/tgbatest/kv.test @@ -1,6 +1,7 @@ #!/bin/sh -# Copyright (C) 2009, 2010, 2011 Laboratoire de Recherche et -# Development de l'EPITA. +# -*- coding: utf-8 -*- +# Copyright (C) 2009, 2010, 2011, 2012 Laboratoire de Recherche et +# Développement de l'EPITA. # # This file is part of Spot, a model checking library. # @@ -40,3 +41,14 @@ check '((Xp2)U(X(1)))&(p1 R(p2 R p0))' # Make sure escaped variables print OK. check '"G1"U"GG" && "FF"' + + +# Make sure we count 4 atomic propositions in +# G("P_1.p2" <-> (F"P_1.p3" & ("P_0.p3" | (X"P_1.CS" U "P_1.p2")))) U G"P_1.p2" +# even after iterated simulation +# Report from Etienne Renault. + +../ltl2tgba -KV -R3 -RIS >out \ +'G("P_1.p2" <-> (F"P_1.p3" & ("P_0.p3" | (X"P_1.CS" U "P_1.p2")))) U G"P_1.p2"' +x=`sed -n '/APre/{s/.*APrec=\[\([^]]*\)\].*/\1/p;q}' out | tr ' ' '\n' | wc -l` +test "$x" = 4