spot/src/tgbatest/explprod.test
Alexandre Duret-Lutz 1d72cdc86e * src/tgba/tgbaexplicit.cc (tgba_explicit::get_acceptance_condition):
Do not treat true and false specially.  Otherwise it breaks
translation of F(false).
* src/tgbatest/explprod.test, src/tgbatest/tripprod.test: Do not
use true as acceptance condition.

* src/tgbaalgos/ltl2tgba_fm.cc (ltl_trad_visitor): Use Acc[b] as
acceptance condition for Fb, not Acc[Fb].

After this change, degeneralized automata are 40% smaller
2004-01-29 17:05:19 +00:00

57 lines
1.6 KiB
Bash
Executable file

#!/bin/sh
# Copyright (C) 2003, 2004 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
cat >input1 <<EOF
acc = p1;
s1, s3, "a", p1;
s1, s2, "b", p1;
s2, s1, "!a", p1;
s2, s3, "c", p1;
EOF
cat >input2 <<EOF
acc=p2 p3;
s1, s2, "b", p2;
s2, s1, "a", p3;
EOF
cat >expected <<EOF
acc = "p1" "p2" "p3";
"s1 * s1", "s3 * s2", "(a & b)", "p1" "p2";
"s1 * s1", "s2 * s2", "b", "p1" "p2";
"s2 * s2", "s3 * s1", "(a & c)", "p1" "p3";
EOF
run 0 ./explprod input1 input2 > stdout
# Sort out some possible inversions in the output.
# (The order is not guaranteed by SPOT.)
perl -pe 's/("\w+") ("\w+")(?: ("\w+"))?/@{[sort $1, $2, $3]}/g;s/\(c & a\)/(a & c)/g;s/\(b & a\)/(a & b)/g' \
stdout > tmp_ && mv tmp_ stdout
cat stdout
diff stdout expected
rm input1 input2 stdout expected