#!/bin/sh # Copyright (C) 2009, 2010 Laboratoire de Recherche et Développement # de l'Epita (LRDE). # Copyright (C) 2003, 2004, 2005 Laboratoire d'Informatique de # Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC), # Université Pierre et Marie Curie. # # 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 2 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 Spot; see the file COPYING. If not, write to the Free # Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. . ./defs set -e expect_ce() { run 0 ../ltl2tgba -e -X "$1" run 0 ../ltl2tgba -e -D -X "$1" run 0 ../ltl2tgba -e'Cou99(shy)' -X "$1" run 0 ../ltl2tgba -e'Cou99(shy)' -D -X "$1" run 0 ../ltl2tgba -eCVWY90 -X "$1" run 0 ../ltl2tgba -eGV04 -X "$1" run 0 ../ltl2tgba -eSE05 -X "$1" run 0 ../ltl2tgba -eTau03 -X "$1" } cat >input <<'EOF' acc = c d; s1, "s2", "a & !b", c d; "s2", "state 3", "a", c; "state 3", s1,,; EOF expect_ce input # ________ # / v # >a--->d--->g # /^ /^ /^ # L | L | L |{A} # b->c e->f h->i # cat >input <<'EOF' acc = A; a, b, "1",; b, c, "1",; c, a, "1",; a, d, "1",; d, e, "1",; e, f, "1",; f, d, "1",; d, g, "1",; g, h, "1",; h, i, "1",; i, g, "1", A; a, g, "1",; EOF expect_ce input # v # d->a # ^ | # | v # c<-b<-. # ^ |A |B # B| v | # `--e->f # # The arcs are ordered so that Couvreur99 succeed after exploring # the following subgraph (which is one accepting SCC): # # v # d->a # ^ | # | v # c<-b<-. # |A |B # v | # e->f # # However when computing a counter-example the greedy BFS algorithm # will fail to return the minimal a->b->e->f->b run. Indeed it first # walks through a->b->e (which gives acceptance condition A), and # prefer to continue with e->c (because it gives acceptance condition B), # and finally closes the cycle with c->d->a # cat >input <<'EOF' acc = A B; a, b, "1",; b, c, "1",; c, d, "1",; d, a, "1",; b, e, "1", A; e, f, "1",; f, b, "1", B; e, c, "1", B; EOF expect_ce input # This graph was randomly generated, and contains one accepting path. # It triggered a bug in our implementation of GV04 (that didn't see any # accepting path). cat >input <