Merge the core and python tests in the tests/ directory
* tests/: Rename as... * tests/core/: ... this. * python/tests/: Rename as... * tests/python/: ... this. * python/tests/run.in: Move as... * tests/run.in: This, and adjust. * tests/Makefile.am: Adjust to run both core and python tests. * configure.ac, README, debian/python3-spot.examples, debian/rules, doc/org/tut.org, python/Makefile.am, spot/ltsmin/Makefile.am, spot/ltsmin/kripke.test, spot/sanity/ipynb.test: Adjust.
This commit is contained in:
parent
18572db39f
commit
5cb94a1a3f
197 changed files with 734 additions and 715 deletions
5
README
5
README
|
|
@ -151,7 +151,9 @@ spot/ Sources for libspot.
|
||||||
sanity/ Sanity tests for the whole project.
|
sanity/ Sanity tests for the whole project.
|
||||||
bin/ Command-line tools built on top of libspot.
|
bin/ Command-line tools built on top of libspot.
|
||||||
man/ Man pages for the above tools.
|
man/ Man pages for the above tools.
|
||||||
tests/ Tests for libspot and the binaries.
|
tests/ Test suite
|
||||||
|
core/ Tests for libspot and the binaries.
|
||||||
|
python/ Tests for Python bindings.
|
||||||
doc/ Documentation for Spot.
|
doc/ Documentation for Spot.
|
||||||
org/ Source of userdoc/ as org-mode files.
|
org/ Source of userdoc/ as org-mode files.
|
||||||
tl/ Documentation of the Temporal Logic operators.
|
tl/ Documentation of the Temporal Logic operators.
|
||||||
|
|
@ -167,7 +169,6 @@ bench/ Benchmarks for ...
|
||||||
stutter/ ... stutter-invariance checking algorithms,
|
stutter/ ... stutter-invariance checking algorithms,
|
||||||
wdba/ ... WDBA minimization (for obligation properties).
|
wdba/ ... WDBA minimization (for obligation properties).
|
||||||
python/ Python bindings for Spot and BuDDy
|
python/ Python bindings for Spot and BuDDy
|
||||||
tests/ Tests for these bindings
|
|
||||||
ajax/ LTL-to-TGBA translator with web interface, using Javascript.
|
ajax/ LTL-to-TGBA translator with web interface, using Javascript.
|
||||||
|
|
||||||
Third party software
|
Third party software
|
||||||
|
|
|
||||||
|
|
@ -219,14 +219,13 @@ AC_CONFIG_FILES([
|
||||||
spot/twa/Makefile
|
spot/twa/Makefile
|
||||||
python/ajax/Makefile
|
python/ajax/Makefile
|
||||||
python/Makefile
|
python/Makefile
|
||||||
python/tests/Makefile
|
tests/core/defs
|
||||||
tests/defs
|
|
||||||
tests/Makefile
|
tests/Makefile
|
||||||
tools/x-to-1
|
tools/x-to-1
|
||||||
])
|
])
|
||||||
AC_CONFIG_FILES([doc/org/g++wrap], [chmod +x doc/org/g++wrap])
|
AC_CONFIG_FILES([doc/org/g++wrap], [chmod +x doc/org/g++wrap])
|
||||||
AC_CONFIG_FILES([doc/dot], [chmod +x doc/dot])
|
AC_CONFIG_FILES([doc/dot], [chmod +x doc/dot])
|
||||||
AC_CONFIG_FILES([python/tests/run], [chmod +x python/tests/run])
|
AC_CONFIG_FILES([tests/run], [chmod +x tests/run])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
case $VERSION:$enable_devel in
|
case $VERSION:$enable_devel in
|
||||||
|
|
|
||||||
4
debian/python3-spot.examples
vendored
4
debian/python3-spot.examples
vendored
|
|
@ -1,2 +1,2 @@
|
||||||
python/tests/*.ipynb
|
tests/python/*.ipynb
|
||||||
python/tests/*.html
|
tests/python/*.html
|
||||||
|
|
|
||||||
4
debian/rules
vendored
4
debian/rules
vendored
|
|
@ -84,8 +84,8 @@ override_dh_python3:
|
||||||
dh_python3 -p python3-spot
|
dh_python3 -p python3-spot
|
||||||
override_dh_auto_build:
|
override_dh_auto_build:
|
||||||
dh_auto_build
|
dh_auto_build
|
||||||
$(MAKE) -C python/tests nb-html
|
$(MAKE) -C tests/python nb-html
|
||||||
|
|
||||||
fix-mathjax:
|
fix-mathjax:
|
||||||
perl -pi -e 's|http://orgmode.org/mathjax/MathJax.js|file:///usr/share/javascript/mathjax/MathJax.js|' doc/userdoc/*.html
|
perl -pi -e 's|http://orgmode.org/mathjax/MathJax.js|file:///usr/share/javascript/mathjax/MathJax.js|' doc/userdoc/*.html
|
||||||
perl -pi -e 's|https://cdn.mathjax.org/mathjax/latest/MathJax.js|file:///usr/share/javascript/mathjax/MathJax.js|' python/tests/*.html
|
perl -pi -e 's|https://cdn.mathjax.org/mathjax/latest/MathJax.js|file:///usr/share/javascript/mathjax/MathJax.js|' tests/python/*.html
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ three interfaces supported by Spot: shell commands, Python, or C++.
|
||||||
|
|
||||||
* Examples in Python only
|
* Examples in Python only
|
||||||
|
|
||||||
In directory =python/tests=, the [[file:install.org][Spot tarball]] contains a small
|
In directory the, =python/tests= [[file:install.org][Spot tarball]] contains a small
|
||||||
collection of IPython notebooks. As the name of the directory implies,
|
collection of IPython notebooks. As the name of the directory implies,
|
||||||
these are part of the test suite for the Python bindings, however they
|
these are part of the test suite for the Python bindings, however they
|
||||||
can be interesting to look at if you want to see more code examples.
|
can be interesting to look at if you want to see more code examples.
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
## You should have received a copy of the GNU General Public License
|
## You should have received a copy of the GNU General Public License
|
||||||
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
SUBDIRS = . ajax tests
|
SUBDIRS = . ajax
|
||||||
|
|
||||||
AM_CPPFLAGS = -I$(PYTHONINC) -I$(top_builddir) -I$(top_srcdir) \
|
AM_CPPFLAGS = -I$(PYTHONINC) -I$(top_builddir) -I$(top_srcdir) \
|
||||||
$(BUDDY_CPPFLAGS) -DSWIG_TYPE_TABLE=spot
|
$(BUDDY_CPPFLAGS) -DSWIG_TYPE_TABLE=spot
|
||||||
|
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
||||||
## -*- coding: utf-8 -*-
|
|
||||||
## Copyright (C) 2010, 2012, 2013, 2014, 2015 Labortatoire de
|
|
||||||
## Recherche et Développement de l'EPITA.
|
|
||||||
## 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 3 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
$(TESTS) \
|
|
||||||
ltl2tgba.py \
|
|
||||||
ipnbdoctest.py
|
|
||||||
|
|
||||||
LOG_COMPILER = ./run
|
|
||||||
LOG_DRIVER = $(TEST_LOG_DRIVER)
|
|
||||||
# ensure run is rebuilt before the tests are run.
|
|
||||||
check_SCRIPTS = run
|
|
||||||
|
|
||||||
TESTS = \
|
|
||||||
acc_cond.ipynb \
|
|
||||||
accparse.ipynb \
|
|
||||||
accparse2.py \
|
|
||||||
alarm.py \
|
|
||||||
automata.ipynb \
|
|
||||||
automata-io.ipynb \
|
|
||||||
bddnqueen.py \
|
|
||||||
decompose.ipynb \
|
|
||||||
formulas.ipynb \
|
|
||||||
implies.py \
|
|
||||||
interdep.py \
|
|
||||||
ltl2tgba.test \
|
|
||||||
ltlparse.py \
|
|
||||||
ltlsimple.py \
|
|
||||||
minato.py \
|
|
||||||
optionmap.py \
|
|
||||||
parsetgba.py \
|
|
||||||
piperead.ipynb \
|
|
||||||
product.ipynb \
|
|
||||||
randaut.ipynb \
|
|
||||||
randgen.py \
|
|
||||||
randltl.ipynb \
|
|
||||||
relabel.py \
|
|
||||||
remfin.py \
|
|
||||||
satmin.py \
|
|
||||||
setxor.py \
|
|
||||||
testingaut.ipynb
|
|
||||||
|
|
||||||
SUFFIXES = .ipynb .html
|
|
||||||
.ipynb.html:
|
|
||||||
$(IPYTHON) nbconvert $< --to html
|
|
||||||
|
|
||||||
.PHONY: nb-html
|
|
||||||
nb-html: $(TESTS:.ipynb=.html)
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# Copyright (C) 2014 Laboratoire de Recherche et
|
|
||||||
# Développement de l'EPITA.
|
|
||||||
# Copyright (C) 2003 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 3 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# We don't check the output, but just running these might be enough to
|
|
||||||
# trigger assertions.
|
|
||||||
|
|
||||||
./run $srcdir/ltl2tgba.py -T a
|
|
||||||
./run $srcdir/ltl2tgba.py -T 'a U b'
|
|
||||||
./run $srcdir/ltl2tgba.py -T 'X a'
|
|
||||||
./run $srcdir/ltl2tgba.py -T 'a & b & c'
|
|
||||||
./run $srcdir/ltl2tgba.py -T 'a | b | (c U (d & (g U (h ^ i))))'
|
|
||||||
./run $srcdir/ltl2tgba.py -T 'Xa & (b U !a) & (b U !a)'
|
|
||||||
./run $srcdir/ltl2tgba.py -T 'Fa & Xb & GFc & Gd'
|
|
||||||
./run $srcdir/ltl2tgba.py -T 'Fa & Xa & GFc & Gc'
|
|
||||||
./run $srcdir/ltl2tgba.py -T 'Fc & X(a | Xb) & GF(a | Xb) & Gc'
|
|
||||||
|
|
||||||
./run $srcdir/ltl2tgba.py -f a
|
|
||||||
./run $srcdir/ltl2tgba.py -f 'a U b'
|
|
||||||
./run $srcdir/ltl2tgba.py -f 'X a'
|
|
||||||
./run $srcdir/ltl2tgba.py -f 'a & b & c'
|
|
||||||
./run $srcdir/ltl2tgba.py -f 'a | b | (c U (d & (g U (h ^ i))))'
|
|
||||||
./run $srcdir/ltl2tgba.py -f 'Xa & (b U !a) & (b U !a)'
|
|
||||||
./run $srcdir/ltl2tgba.py -f 'Fa & Xb & GFc & Gd'
|
|
||||||
./run $srcdir/ltl2tgba.py -f 'Fa & Xa & GFc & Gc'
|
|
||||||
./run $srcdir/ltl2tgba.py -f 'Fc & X(a | Xb) & GF(a | Xb) & Gc'
|
|
||||||
|
|
||||||
./run $srcdir/ltl2tgba.py -W -f 'Ga | Gb | Gc'
|
|
||||||
./run $srcdir/ltl2tgba.py -W -T 'Ga | Gb | Gc'
|
|
||||||
|
|
@ -42,11 +42,11 @@ check_SCRIPTS = defs
|
||||||
TESTS = check.test finite.test finite2.test kripke.test
|
TESTS = check.test finite.test finite2.test kripke.test
|
||||||
EXTRA_DIST = $(TESTS) beem-peterson.4.dve finite.dve finite.pm
|
EXTRA_DIST = $(TESTS) beem-peterson.4.dve finite.dve finite.pm
|
||||||
|
|
||||||
kripke.test: $(top_builddir)/tests/parse_print$(EXEEXT)
|
kripke.test: $(top_builddir)/tests/core/parse_print$(EXEEXT)
|
||||||
|
|
||||||
$(top_builddir)/tests/parse_print$(EXEEXT):
|
$(top_builddir)/tests/core/parse_print$(EXEEXT):
|
||||||
cd $(top_builddir)/tests && \
|
cd $(top_builddir)/tests && \
|
||||||
$(MAKE) $(AM_MAKEFLAGS) parse_print$(EXEEXT)
|
$(MAKE) $(AM_MAKEFLAGS) core/parse_print$(EXEEXT)
|
||||||
|
|
||||||
distclean-local:
|
distclean-local:
|
||||||
rm -rf $(TESTS:.test=.dir)
|
rm -rf $(TESTS:.test=.dir)
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,9 @@ fi
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
run 0 ../modelcheck -gK $srcdir/finite.dve 'F("P.a > 5")' > output
|
run 0 ../modelcheck -gK $srcdir/finite.dve 'F("P.a > 5")' > output
|
||||||
run 0 $top_builddir/tests/parse_print output | tr -d '"' > output2
|
run 0 $top_builddir/tests/core/parse_print output | tr -d '"' > output2
|
||||||
tr -d '"' < output >outputF
|
tr -d '"' < output >outputF
|
||||||
cmp outputF output2
|
cmp outputF output2
|
||||||
|
|
||||||
../modelcheck -gK $srcdir/beem-peterson.4.dve '!G("pos[1] < 3")' > outputP
|
../modelcheck -gK $srcdir/beem-peterson.4.dve '!G("pos[1] < 3")' > outputP
|
||||||
$top_builddir/tests/ikwiad -e -KPoutputP '!G("pos[1] < 3")'
|
$top_builddir/tests/core/ikwiad -e -KPoutputP '!G("pos[1] < 3")'
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ my $top_srcdir = $ENV{top_srcdir} || "../../";
|
||||||
my $top_srcdir_len = length($top_srcdir) + 1;
|
my $top_srcdir_len = length($top_srcdir) + 1;
|
||||||
|
|
||||||
my $tut = "$top_srcdir/doc/org/tut.org";
|
my $tut = "$top_srcdir/doc/org/tut.org";
|
||||||
my $dir = "$top_srcdir/python/tests";
|
my $dir = "$top_srcdir/tests/python";
|
||||||
unless (-f $tut)
|
unless (-f $tut)
|
||||||
{
|
{
|
||||||
print STDERR "$tut not found";
|
print STDERR "$tut not found";
|
||||||
|
|
@ -58,10 +58,10 @@ while (<FD>)
|
||||||
}
|
}
|
||||||
close(FD);
|
close(FD);
|
||||||
|
|
||||||
open(FD, "$dir/Makefile.am") or die $!;
|
open(FD, "$dir/../Makefile.am") or die "$!";
|
||||||
while (<FD>)
|
while (<FD>)
|
||||||
{
|
{
|
||||||
if (m:\s([\w-]+\.ipynb):)
|
if (m:python/([\w-]+\.ipynb):)
|
||||||
{
|
{
|
||||||
# print "$1 exist";
|
# print "$1 exist";
|
||||||
unless (exists $seen{$1})
|
unless (exists $seen{$1})
|
||||||
|
|
|
||||||
71
tests/.gitignore
vendored
71
tests/.gitignore
vendored
|
|
@ -1,70 +1 @@
|
||||||
acc
|
*.dir
|
||||||
apcollect
|
|
||||||
bddprod
|
|
||||||
bitvect
|
|
||||||
blue_counter
|
|
||||||
checkpsl
|
|
||||||
checkta
|
|
||||||
complement
|
|
||||||
consterm
|
|
||||||
defs
|
|
||||||
.deps
|
|
||||||
*.dot
|
|
||||||
eltl2tgba
|
|
||||||
emptchk
|
|
||||||
defs
|
|
||||||
equals
|
|
||||||
expect
|
|
||||||
expldot
|
|
||||||
explicit
|
|
||||||
explicit2
|
|
||||||
explicit3
|
|
||||||
explprod
|
|
||||||
graph
|
|
||||||
genltl
|
|
||||||
input
|
|
||||||
intvcomp
|
|
||||||
intvcmp2
|
|
||||||
kind
|
|
||||||
length
|
|
||||||
.libs
|
|
||||||
ikwiad
|
|
||||||
ltl2dot
|
|
||||||
ltl2text
|
|
||||||
ltlmagic
|
|
||||||
ltlprod
|
|
||||||
ltlrel
|
|
||||||
lunabbrev
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
maskacc
|
|
||||||
mixprod
|
|
||||||
nequals
|
|
||||||
nenoform
|
|
||||||
ngraph
|
|
||||||
output1
|
|
||||||
output2
|
|
||||||
parse_print
|
|
||||||
powerset
|
|
||||||
*.ps
|
|
||||||
randltl
|
|
||||||
randtgba
|
|
||||||
readsat
|
|
||||||
readsave
|
|
||||||
reduc
|
|
||||||
reduceu
|
|
||||||
reductau
|
|
||||||
reductaustr
|
|
||||||
reduccmp
|
|
||||||
reductgba
|
|
||||||
stdout
|
|
||||||
spotlbtt
|
|
||||||
syntimpl
|
|
||||||
taatgba
|
|
||||||
tgbagraph
|
|
||||||
tgbaread
|
|
||||||
tostring
|
|
||||||
tripprod
|
|
||||||
tunabbrev
|
|
||||||
tunenoform
|
|
||||||
unabbrevwm
|
|
||||||
|
|
|
||||||
|
|
@ -20,234 +20,282 @@
|
||||||
## You should have received a copy of the GNU General Public License
|
## You should have received a copy of the GNU General Public License
|
||||||
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = subdir-objects
|
||||||
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) $(BUDDY_CPPFLAGS)
|
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) $(BUDDY_CPPFLAGS)
|
||||||
AM_CXXFLAGS = $(WARNING_CXXFLAGS)
|
AM_CXXFLAGS = $(WARNING_CXXFLAGS)
|
||||||
LDADD = $(top_builddir)/spot/libspot.la
|
LDADD = $(top_builddir)/spot/libspot.la
|
||||||
|
|
||||||
# These are the most used test programs, and they are also useful
|
# These are the most used test programs, and they are also useful
|
||||||
# to run manually outside the test suite. Always build them.
|
# to run manually outside the test suite. Always build them.
|
||||||
noinst_PROGRAMS = ikwiad randtgba
|
noinst_PROGRAMS = core/ikwiad core/randtgba
|
||||||
|
|
||||||
|
TEST_EXTENTIONS = .test .py .ipynb
|
||||||
|
|
||||||
|
LOG_COMPILER = ./run
|
||||||
|
TEST_LOG_COMPILER = ./run
|
||||||
|
LOG_DRIVER = $(TEST_LOG_DRIVER)
|
||||||
|
# ensure run is rebuilt before the tests are run.
|
||||||
|
check_SCRIPTS = run core/defs
|
||||||
|
|
||||||
check_SCRIPTS = defs
|
|
||||||
# Keep this sorted alphabetically.
|
# Keep this sorted alphabetically.
|
||||||
check_PROGRAMS = \
|
check_PROGRAMS = \
|
||||||
acc \
|
core/acc \
|
||||||
bitvect \
|
core/bitvect \
|
||||||
complement \
|
core/complement \
|
||||||
checkpsl \
|
core/checkpsl \
|
||||||
checkta \
|
core/checkta \
|
||||||
consterm \
|
core/consterm \
|
||||||
emptchk \
|
core/emptchk \
|
||||||
equals \
|
core/equals \
|
||||||
graph \
|
core/graph \
|
||||||
kind \
|
core/kind \
|
||||||
length \
|
core/length \
|
||||||
intvcomp \
|
core/intvcomp \
|
||||||
intvcmp2 \
|
core/intvcmp2 \
|
||||||
ltlprod \
|
core/ltlprod \
|
||||||
ltl2dot \
|
core/ltl2dot \
|
||||||
ltl2text \
|
core/ltl2text \
|
||||||
ltlrel \
|
core/ltlrel \
|
||||||
lunabbrev \
|
core/lunabbrev \
|
||||||
nequals \
|
core/nequals \
|
||||||
nenoform \
|
core/nenoform \
|
||||||
ngraph \
|
core/ngraph \
|
||||||
parse_print \
|
core/parse_print \
|
||||||
readsat \
|
core/readsat \
|
||||||
reduc \
|
core/reduc \
|
||||||
reduccmp \
|
core/reduccmp \
|
||||||
reduceu \
|
core/reduceu \
|
||||||
reductaustr \
|
core/reductaustr \
|
||||||
syntimpl \
|
core/syntimpl \
|
||||||
taatgba \
|
core/taatgba \
|
||||||
tgbagraph \
|
core/tgbagraph \
|
||||||
tostring \
|
core/tostring \
|
||||||
tunabbrev \
|
core/tunabbrev \
|
||||||
tunenoform
|
core/tunenoform
|
||||||
|
|
||||||
# Keep this sorted alphabetically.
|
# Keep this sorted alphabetically.
|
||||||
acc_SOURCES = acc.cc
|
core_acc_SOURCES = core/acc.cc
|
||||||
bitvect_SOURCES = bitvect.cc
|
core_bitvect_SOURCES = core/bitvect.cc
|
||||||
checkpsl_SOURCES = checkpsl.cc
|
core_checkpsl_SOURCES = core/checkpsl.cc
|
||||||
checkta_SOURCES = checkta.cc
|
core_checkta_SOURCES = core/checkta.cc
|
||||||
complement_SOURCES = complementation.cc
|
core_complement_SOURCES = core/complementation.cc
|
||||||
emptchk_SOURCES = emptchk.cc
|
core_emptchk_SOURCES = core/emptchk.cc
|
||||||
graph_SOURCES = graph.cc
|
core_graph_SOURCES = core/graph.cc
|
||||||
ikwiad_SOURCES = ikwiad.cc
|
core_ikwiad_SOURCES = core/ikwiad.cc
|
||||||
intvcomp_SOURCES = intvcomp.cc
|
core_intvcomp_SOURCES = core/intvcomp.cc
|
||||||
intvcmp2_SOURCES = intvcmp2.cc
|
core_intvcmp2_SOURCES = core/intvcmp2.cc
|
||||||
ltlprod_SOURCES = ltlprod.cc
|
core_ltlprod_SOURCES = core/ltlprod.cc
|
||||||
ngraph_SOURCES = ngraph.cc
|
core_ngraph_SOURCES = core/ngraph.cc
|
||||||
parse_print_SOURCES = parse_print_test.cc
|
core_parse_print_SOURCES = core/parse_print_test.cc
|
||||||
randtgba_SOURCES = randtgba.cc
|
core_randtgba_SOURCES = core/randtgba.cc
|
||||||
readsat_SOURCES = readsat.cc
|
core_readsat_SOURCES = core/readsat.cc
|
||||||
taatgba_SOURCES = taatgba.cc
|
core_taatgba_SOURCES = core/taatgba.cc
|
||||||
tgbagraph_SOURCES = twagraph.cc
|
core_tgbagraph_SOURCES = core/twagraph.cc
|
||||||
consterm_SOURCES = consterm.cc
|
core_consterm_SOURCES = core/consterm.cc
|
||||||
equals_SOURCES = equalsf.cc
|
core_equals_SOURCES = core/equalsf.cc
|
||||||
kind_SOURCES = kind.cc
|
core_kind_SOURCES = core/kind.cc
|
||||||
length_SOURCES = length.cc
|
core_length_SOURCES = core/length.cc
|
||||||
ltl2dot_SOURCES = readltl.cc
|
core_ltl2dot_SOURCES = core/readltl.cc
|
||||||
ltl2dot_CPPFLAGS = $(AM_CPPFLAGS) -DDOTTY
|
core_ltl2dot_CPPFLAGS = $(AM_CPPFLAGS) -DDOTTY
|
||||||
ltl2text_SOURCES = readltl.cc
|
core_ltl2text_SOURCES = core/readltl.cc
|
||||||
ltlrel_SOURCES = ltlrel.cc
|
core_ltlrel_SOURCES = core/ltlrel.cc
|
||||||
lunabbrev_SOURCES = equalsf.cc
|
core_lunabbrev_SOURCES = core/equalsf.cc
|
||||||
lunabbrev_CPPFLAGS = $(AM_CPPFLAGS) -DUNABBREV='"^ie"'
|
core_lunabbrev_CPPFLAGS = $(AM_CPPFLAGS) -DUNABBREV='"^ie"'
|
||||||
nenoform_SOURCES = equalsf.cc
|
core_nenoform_SOURCES = core/equalsf.cc
|
||||||
nenoform_CPPFLAGS = $(AM_CPPFLAGS) -DNENOFORM
|
core_nenoform_CPPFLAGS = $(AM_CPPFLAGS) -DNENOFORM
|
||||||
nequals_SOURCES = equalsf.cc
|
core_nequals_SOURCES = core/equalsf.cc
|
||||||
nequals_CPPFLAGS = $(AM_CPPFLAGS) -DNEGATE
|
core_nequals_CPPFLAGS = $(AM_CPPFLAGS) -DNEGATE
|
||||||
reduc_SOURCES = reduc.cc
|
core_reduc_SOURCES = core/reduc.cc
|
||||||
reduccmp_SOURCES = equalsf.cc
|
core_reduccmp_SOURCES = core/equalsf.cc
|
||||||
reduccmp_CPPFLAGS = $(AM_CPPFLAGS) -DREDUC
|
core_reduccmp_CPPFLAGS = $(AM_CPPFLAGS) -DREDUC
|
||||||
reduceu_SOURCES = equalsf.cc
|
core_reduceu_SOURCES = core/equalsf.cc
|
||||||
reduceu_CPPFLAGS = $(AM_CPPFLAGS) -DREDUC -DEVENT_UNIV
|
core_reduceu_CPPFLAGS = $(AM_CPPFLAGS) -DREDUC -DEVENT_UNIV
|
||||||
reductaustr_SOURCES = equalsf.cc
|
core_reductaustr_SOURCES = core/equalsf.cc
|
||||||
reductaustr_CPPFLAGS = $(AM_CPPFLAGS) -DREDUC_TAUSTR
|
core_reductaustr_CPPFLAGS = $(AM_CPPFLAGS) -DREDUC_TAUSTR
|
||||||
syntimpl_SOURCES = syntimpl.cc
|
core_syntimpl_SOURCES = core/syntimpl.cc
|
||||||
tostring_SOURCES = tostring.cc
|
core_tostring_SOURCES = core/tostring.cc
|
||||||
tunabbrev_SOURCES = equalsf.cc
|
core_tunabbrev_SOURCES = core/equalsf.cc
|
||||||
tunabbrev_CPPFLAGS = $(AM_CPPFLAGS) -DUNABBREV='"^ieFG"'
|
core_tunabbrev_CPPFLAGS = $(AM_CPPFLAGS) -DUNABBREV='"^ieFG"'
|
||||||
tunenoform_SOURCES = equalsf.cc
|
core_tunenoform_SOURCES = core/equalsf.cc
|
||||||
tunenoform_CPPFLAGS = $(AM_CPPFLAGS) -DNENOFORM -DUNABBREV='"^ieFG"'
|
core_tunenoform_CPPFLAGS = $(AM_CPPFLAGS) -DNENOFORM -DUNABBREV='"^ieFG"'
|
||||||
|
|
||||||
|
|
||||||
# Keep this sorted by STRENGTH. Test basic things first,
|
# Keep this sorted by STRENGTH. Test basic things first,
|
||||||
# because such failures will be easier to diagnose and fix.
|
# because such failures will be easier to diagnose and fix.
|
||||||
TESTS = $(TESTS_ltl) $(TESTS_graph) $(TESTS_kripke) $(TESTS_twa)
|
TESTS = $(TESTS_tl) $(TESTS_graph) $(TESTS_kripke) $(TESTS_twa) $(TESTS_python)
|
||||||
|
|
||||||
TESTS_ltl = \
|
TESTS_tl = \
|
||||||
bare.test \
|
core/bare.test \
|
||||||
parse.test \
|
core/parse.test \
|
||||||
parseerr.test \
|
core/parseerr.test \
|
||||||
utf8.test \
|
core/utf8.test \
|
||||||
length.test \
|
core/length.test \
|
||||||
equals.test \
|
core/equals.test \
|
||||||
tostring.test \
|
core/tostring.test \
|
||||||
lunabbrev.test \
|
core/lunabbrev.test \
|
||||||
tunabbrev.test \
|
core/tunabbrev.test \
|
||||||
nenoform.test \
|
core/nenoform.test \
|
||||||
tunenoform.test \
|
core/tunenoform.test \
|
||||||
unabbrevwm.test \
|
core/unabbrevwm.test \
|
||||||
consterm.test \
|
core/consterm.test \
|
||||||
kind.test \
|
core/kind.test \
|
||||||
remove_x.test \
|
core/remove_x.test \
|
||||||
ltlrel.test \
|
core/ltlrel.test \
|
||||||
ltlgrind.test \
|
core/ltlgrind.test \
|
||||||
ltlcrossgrind.test \
|
core/ltlcrossgrind.test \
|
||||||
ltlfilt.test \
|
core/ltlfilt.test \
|
||||||
exclusive-ltl.test \
|
core/exclusive-ltl.test \
|
||||||
latex.test \
|
core/latex.test \
|
||||||
lbt.test \
|
core/lbt.test \
|
||||||
lenient.test \
|
core/lenient.test \
|
||||||
rand.test \
|
core/rand.test \
|
||||||
isop.test \
|
core/isop.test \
|
||||||
syntimpl.test \
|
core/syntimpl.test \
|
||||||
reduc.test \
|
core/reduc.test \
|
||||||
reduc0.test \
|
core/reduc0.test \
|
||||||
reducpsl.test \
|
core/reducpsl.test \
|
||||||
reduccmp.test \
|
core/reduccmp.test \
|
||||||
uwrm.test \
|
core/uwrm.test \
|
||||||
eventuniv.test \
|
core/eventuniv.test \
|
||||||
stutter-ltl.test
|
core/stutter-ltl.test
|
||||||
|
|
||||||
TESTS_graph = \
|
TESTS_graph = \
|
||||||
graph.test \
|
core/graph.test \
|
||||||
ngraph.test \
|
core/ngraph.test \
|
||||||
tgbagraph.test
|
core/tgbagraph.test
|
||||||
|
|
||||||
TESTS_kripke = \
|
TESTS_kripke = \
|
||||||
kripke.test
|
core/kripke.test
|
||||||
|
|
||||||
TESTS_twa = \
|
TESTS_twa = \
|
||||||
acc.test \
|
core/acc.test \
|
||||||
acc2.test \
|
core/acc2.test \
|
||||||
intvcomp.test \
|
core/intvcomp.test \
|
||||||
bitvect.test \
|
core/bitvect.test \
|
||||||
ltlcross3.test \
|
core/ltlcross3.test \
|
||||||
taatgba.test \
|
core/taatgba.test \
|
||||||
renault.test \
|
core/renault.test \
|
||||||
nondet.test \
|
core/nondet.test \
|
||||||
det.test \
|
core/det.test \
|
||||||
neverclaimread.test \
|
core/neverclaimread.test \
|
||||||
parseaut.test \
|
core/parseaut.test \
|
||||||
optba.test \
|
core/optba.test \
|
||||||
complete.test \
|
core/complete.test \
|
||||||
complement.test \
|
core/complement.test \
|
||||||
remfin.test \
|
core/remfin.test \
|
||||||
dstar.test \
|
core/dstar.test \
|
||||||
readsave.test \
|
core/readsave.test \
|
||||||
ltldo.test \
|
core/ltldo.test \
|
||||||
ltldo2.test \
|
core/ltldo2.test \
|
||||||
maskacc.test \
|
core/maskacc.test \
|
||||||
maskkeep.test \
|
core/maskkeep.test \
|
||||||
prodor.test \
|
core/prodor.test \
|
||||||
simdet.test \
|
core/simdet.test \
|
||||||
sim2.test \
|
core/sim2.test \
|
||||||
sim3.test \
|
core/sim3.test \
|
||||||
ltl2tgba.test \
|
core/ltl2tgba.test \
|
||||||
ltl2neverclaim.test \
|
core/ltl2neverclaim.test \
|
||||||
ltl2neverclaim-lbtt.test \
|
core/ltl2neverclaim-lbtt.test \
|
||||||
ltlprod.test \
|
core/ltlprod.test \
|
||||||
explprod.test \
|
core/explprod.test \
|
||||||
explpro2.test \
|
core/explpro2.test \
|
||||||
explpro3.test \
|
core/explpro3.test \
|
||||||
explpro4.test \
|
core/explpro4.test \
|
||||||
tripprod.test \
|
core/tripprod.test \
|
||||||
dupexp.test \
|
core/dupexp.test \
|
||||||
exclusive-tgba.test \
|
core/exclusive-tgba.test \
|
||||||
remprop.test \
|
core/remprop.test \
|
||||||
degendet.test \
|
core/degendet.test \
|
||||||
degenid.test \
|
core/degenid.test \
|
||||||
degenlskip.test \
|
core/degenlskip.test \
|
||||||
randomize.test \
|
core/randomize.test \
|
||||||
lbttparse.test \
|
core/lbttparse.test \
|
||||||
scc.test \
|
core/scc.test \
|
||||||
sccdot.test \
|
core/sccdot.test \
|
||||||
sccsimpl.test \
|
core/sccsimpl.test \
|
||||||
sepsets.test \
|
core/sepsets.test \
|
||||||
dbacomp.test \
|
core/dbacomp.test \
|
||||||
obligation.test \
|
core/obligation.test \
|
||||||
wdba.test \
|
core/wdba.test \
|
||||||
wdba2.test \
|
core/wdba2.test \
|
||||||
babiak.test \
|
core/babiak.test \
|
||||||
monitor.test \
|
core/monitor.test \
|
||||||
dra2dba.test \
|
core/dra2dba.test \
|
||||||
unambig.test \
|
core/unambig.test \
|
||||||
ltlcross4.test \
|
core/ltlcross4.test \
|
||||||
ltl3dra.test \
|
core/ltl3dra.test \
|
||||||
ltl2dstar.test \
|
core/ltl2dstar.test \
|
||||||
ltl2dstar2.test \
|
core/ltl2dstar2.test \
|
||||||
ltl2dstar3.test \
|
core/ltl2dstar3.test \
|
||||||
ltl2dstar4.test \
|
core/ltl2dstar4.test \
|
||||||
ltl2ta.test \
|
core/ltl2ta.test \
|
||||||
ltl2ta2.test \
|
core/ltl2ta2.test \
|
||||||
randaut.test \
|
core/randaut.test \
|
||||||
randtgba.test \
|
core/randtgba.test \
|
||||||
isomorph.test \
|
core/isomorph.test \
|
||||||
uniq.test \
|
core/uniq.test \
|
||||||
sbacc.test \
|
core/sbacc.test \
|
||||||
stutter-tgba.test \
|
core/stutter-tgba.test \
|
||||||
strength.test \
|
core/strength.test \
|
||||||
emptchk.test \
|
core/emptchk.test \
|
||||||
emptchke.test \
|
core/emptchke.test \
|
||||||
dfs.test \
|
core/dfs.test \
|
||||||
ltlcrossce.test \
|
core/ltlcrossce.test \
|
||||||
ltlcrossce2.test \
|
core/ltlcrossce2.test \
|
||||||
emptchkr.test \
|
core/emptchkr.test \
|
||||||
ltlcounter.test \
|
core/ltlcounter.test \
|
||||||
basimul.test \
|
core/basimul.test \
|
||||||
satmin.test \
|
core/satmin.test \
|
||||||
satmin2.test \
|
core/satmin2.test \
|
||||||
spotlbtt.test \
|
core/spotlbtt.test \
|
||||||
ltlcross.test \
|
core/ltlcross.test \
|
||||||
spotlbtt2.test \
|
core/spotlbtt2.test \
|
||||||
ltlcross2.test \
|
core/ltlcross2.test \
|
||||||
complementation.test \
|
core/complementation.test \
|
||||||
randpsl.test \
|
core/randpsl.test \
|
||||||
cycles.test
|
core/cycles.test
|
||||||
|
|
||||||
EXTRA_DIST = $(TESTS)
|
|
||||||
|
|
||||||
distclean-local:
|
distclean-local:
|
||||||
rm -rf $(TESTS:.test=.dir)
|
rm -rf $(TESTS:.test=.dir)
|
||||||
|
|
||||||
|
TESTS_python = \
|
||||||
|
python/acc_cond.ipynb \
|
||||||
|
python/accparse.ipynb \
|
||||||
|
python/accparse2.py \
|
||||||
|
python/alarm.py \
|
||||||
|
python/automata.ipynb \
|
||||||
|
python/automata-io.ipynb \
|
||||||
|
python/bddnqueen.py \
|
||||||
|
python/decompose.ipynb \
|
||||||
|
python/formulas.ipynb \
|
||||||
|
python/implies.py \
|
||||||
|
python/interdep.py \
|
||||||
|
python/ltl2tgba.test \
|
||||||
|
python/ltlparse.py \
|
||||||
|
python/ltlsimple.py \
|
||||||
|
python/minato.py \
|
||||||
|
python/optionmap.py \
|
||||||
|
python/parsetgba.py \
|
||||||
|
python/piperead.ipynb \
|
||||||
|
python/product.ipynb \
|
||||||
|
python/randaut.ipynb \
|
||||||
|
python/randgen.py \
|
||||||
|
python/randltl.ipynb \
|
||||||
|
python/relabel.py \
|
||||||
|
python/remfin.py \
|
||||||
|
python/satmin.py \
|
||||||
|
python/setxor.py \
|
||||||
|
python/testingaut.ipynb
|
||||||
|
|
||||||
|
SUFFIXES = .ipynb .html
|
||||||
|
.ipynb.html:
|
||||||
|
$(IPYTHON) nbconvert $< --to html --stdout >$@
|
||||||
|
|
||||||
|
.PHONY: nb-html
|
||||||
|
nb-html: $(TESTS_python:.ipynb=.html)
|
||||||
|
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
$(TESTS) \
|
||||||
|
python/ltl2tgba.py \
|
||||||
|
python/ipnbdoctest.py
|
||||||
|
|
|
||||||
70
tests/core/.gitignore
vendored
Normal file
70
tests/core/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
acc
|
||||||
|
apcollect
|
||||||
|
bddprod
|
||||||
|
bitvect
|
||||||
|
blue_counter
|
||||||
|
checkpsl
|
||||||
|
checkta
|
||||||
|
complement
|
||||||
|
consterm
|
||||||
|
defs
|
||||||
|
.deps
|
||||||
|
*.dot
|
||||||
|
eltl2tgba
|
||||||
|
emptchk
|
||||||
|
defs
|
||||||
|
equals
|
||||||
|
expect
|
||||||
|
expldot
|
||||||
|
explicit
|
||||||
|
explicit2
|
||||||
|
explicit3
|
||||||
|
explprod
|
||||||
|
graph
|
||||||
|
genltl
|
||||||
|
input
|
||||||
|
intvcomp
|
||||||
|
intvcmp2
|
||||||
|
kind
|
||||||
|
length
|
||||||
|
.libs
|
||||||
|
ikwiad
|
||||||
|
ltl2dot
|
||||||
|
ltl2text
|
||||||
|
ltlmagic
|
||||||
|
ltlprod
|
||||||
|
ltlrel
|
||||||
|
lunabbrev
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
maskacc
|
||||||
|
mixprod
|
||||||
|
nequals
|
||||||
|
nenoform
|
||||||
|
ngraph
|
||||||
|
output1
|
||||||
|
output2
|
||||||
|
parse_print
|
||||||
|
powerset
|
||||||
|
*.ps
|
||||||
|
randltl
|
||||||
|
randtgba
|
||||||
|
readsat
|
||||||
|
readsave
|
||||||
|
reduc
|
||||||
|
reduceu
|
||||||
|
reductau
|
||||||
|
reductaustr
|
||||||
|
reduccmp
|
||||||
|
reductgba
|
||||||
|
stdout
|
||||||
|
spotlbtt
|
||||||
|
syntimpl
|
||||||
|
taatgba
|
||||||
|
tgbagraph
|
||||||
|
tgbaread
|
||||||
|
tostring
|
||||||
|
tripprod
|
||||||
|
tunabbrev
|
||||||
|
tunenoform
|
||||||
|
unabbrevwm
|
||||||
|
|
@ -23,10 +23,10 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
../../bin/ltl2tgba -H 'GFa & GFb' > in
|
ltl2tgba -H 'GFa & GFb' > in
|
||||||
grep 'Acceptance:' in > expected
|
grep 'Acceptance:' in > expected
|
||||||
../../bin/ltl2tgba -H 'GFa & GFb' --stats='Acceptance: %a %g' > out1
|
ltl2tgba -H 'GFa & GFb' --stats='Acceptance: %a %g' > out1
|
||||||
../../bin/autfilt -H in --stats='Acceptance: %A %G' > out2
|
autfilt -H in --stats='Acceptance: %A %G' > out2
|
||||||
diff out1 expected
|
diff out1 expected
|
||||||
diff out2 expected
|
diff out2 expected
|
||||||
|
|
||||||
|
|
@ -64,7 +64,7 @@ EOF
|
||||||
while IFS=, read a b
|
while IFS=, read a b
|
||||||
do
|
do
|
||||||
(cat header; echo 'Acceptance:' $a; cat body) |
|
(cat header; echo 'Acceptance:' $a; cat body) |
|
||||||
../../bin/autfilt -H --dnf-acc --stats '%A %G, %a %g'
|
autfilt -H --dnf-acc --stats '%A %G, %a %g'
|
||||||
done < acceptances > output
|
done < acceptances > output
|
||||||
|
|
||||||
diff acceptances output
|
diff acceptances output
|
||||||
|
|
@ -86,7 +86,7 @@ EOF
|
||||||
while IFS=, read a b
|
while IFS=, read a b
|
||||||
do
|
do
|
||||||
(cat header; echo 'Acceptance:' $a; cat body) |
|
(cat header; echo 'Acceptance:' $a; cat body) |
|
||||||
../../bin/autfilt -H --cnf-acc --stats '%A %G, %a %g'
|
autfilt -H --cnf-acc --stats '%A %G, %a %g'
|
||||||
done < acceptances > output
|
done < acceptances > output
|
||||||
|
|
||||||
diff acceptances output
|
diff acceptances output
|
||||||
|
|
@ -109,7 +109,7 @@ EOF
|
||||||
while IFS=, read a b
|
while IFS=, read a b
|
||||||
do
|
do
|
||||||
(cat header; echo 'Acceptance:' $a; cat body) |
|
(cat header; echo 'Acceptance:' $a; cat body) |
|
||||||
../../bin/autfilt -H --complement-acc --stats '%A %G, %a %g'
|
autfilt -H --complement-acc --stats '%A %G, %a %g'
|
||||||
done < acceptances > output
|
done < acceptances > output
|
||||||
|
|
||||||
diff acceptances output
|
diff acceptances output
|
||||||
|
|
@ -41,7 +41,7 @@ EOF
|
||||||
|
|
||||||
ltl2tgba=../ikwiad
|
ltl2tgba=../ikwiad
|
||||||
|
|
||||||
../../bin/ltlcross <formulae \
|
ltlcross <formulae \
|
||||||
"$ltl2tgba -t %f >%T" \
|
"$ltl2tgba -t %f >%T" \
|
||||||
"$ltl2tgba -N -r4 -R3f %f >%N" \
|
"$ltl2tgba -N -r4 -R3f %f >%N" \
|
||||||
"$ltl2tgba -N -r7 -R3 -x -Rm %f >%N" \
|
"$ltl2tgba -N -r7 -R3 -x -Rm %f >%N" \
|
||||||
|
|
@ -21,13 +21,13 @@
|
||||||
. ./defs
|
. ./defs
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
test "`../../bin/ltlfilt -p -f 'GFP_0.b_c'`" = "G(F(P_0.b_c))"
|
test "`ltlfilt -p -f 'GFP_0.b_c'`" = "G(F(P_0.b_c))"
|
||||||
test "`../../bin/ltlfilt -f 'GFP_0.b_c'`" = "GFP_0.b_c"
|
test "`ltlfilt -f 'GFP_0.b_c'`" = "GFP_0.b_c"
|
||||||
foo=`../../bin/ltlfilt -p -f 'GF"P_0.b_c"'`
|
foo=`ltlfilt -p -f 'GF"P_0.b_c"'`
|
||||||
test "$foo" = "G(F(P_0.b_c))"
|
test "$foo" = "G(F(P_0.b_c))"
|
||||||
|
|
||||||
foo=`../../bin/ltlfilt -p -f '"a.b" U c.d.e'`
|
foo=`ltlfilt -p -f '"a.b" U c.d.e'`
|
||||||
test "$foo" = "(a.b) U (c.d.e)"
|
test "$foo" = "(a.b) U (c.d.e)"
|
||||||
|
|
||||||
foo=`../../bin/ltlfilt -f '"a.b" U c.d.e'`
|
foo=`ltlfilt -f '"a.b" U c.d.e'`
|
||||||
test "$foo" = "a.b U c.d.e"
|
test "$foo" = "a.b U c.d.e"
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
|
|
||||||
|
|
||||||
# This bug was found while working on the state-based acceptance
|
# This bug was found while working on the state-based acceptance
|
||||||
|
|
@ -54,7 +54,7 @@ ltl2tgba=../../bin/ltl2tgba
|
||||||
# --spin -x ba-simul=2
|
# --spin -x ba-simul=2
|
||||||
# --spin -x ba-simul=3
|
# --spin -x ba-simul=3
|
||||||
|
|
||||||
../../bin/ltlcross --seed=0 --products=5 --json=out.json \
|
ltlcross --seed=0 --products=5 --json=out.json \
|
||||||
-f 'X((F(Xa | b) W c) U (Xc W (a & d)))' \
|
-f 'X((F(Xa | b) W c) U (Xc W (a & d)))' \
|
||||||
-f '((<> p5 V ((p0 U p1) <-> (p5 \/ p1))) -> ((<> p4 V p2) M p2))' \
|
-f '((<> p5 V ((p0 U p1) <-> (p5 \/ p1))) -> ((<> p4 V p2) M p2))' \
|
||||||
-f '!p2 & (Fp5 R (((p0 U p1) & (p5 | p1)) | (!p5 & (!p0 R !p1))))' \
|
-f '!p2 & (Fp5 R (((p0 U p1) & (p5 | p1)) | (!p5 & (!p0 R !p1))))' \
|
||||||
|
|
@ -22,9 +22,9 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
autfilt=../../bin/autfilt
|
autfilt=autfilt
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
randaut=../../bin/randaut
|
randaut=randaut
|
||||||
|
|
||||||
$randaut -H -A 'random 0..4' -Q1..10 -D -n 50 0..2 >aut
|
$randaut -H -A 'random 0..4' -Q1..10 -D -n 50 0..2 >aut
|
||||||
run 0 $autfilt --complement -H aut >/dev/null
|
run 0 $autfilt --complement -H aut >/dev/null
|
||||||
|
|
@ -66,4 +66,4 @@ run 0 ../complement -H -a x.hoa > nx.hoa
|
||||||
run 0 ../ikwiad -XH -e nx.hoa
|
run 0 ../ikwiad -XH -e nx.hoa
|
||||||
# however the intersection of both should not
|
# however the intersection of both should not
|
||||||
# accept any run.
|
# accept any run.
|
||||||
run 1 ../../bin/autfilt -q nx.hoa --intersect x.hoa
|
run 1 autfilt -q nx.hoa --intersect x.hoa
|
||||||
|
|
@ -114,6 +114,6 @@ State: 1
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt -CH automaton >out
|
run 0 autfilt -CH automaton >out
|
||||||
cat out
|
cat out
|
||||||
diff out expected
|
diff out expected
|
||||||
|
|
@ -56,4 +56,4 @@ EOF
|
||||||
|
|
||||||
# Check emptiness of product with complement.
|
# Check emptiness of product with complement.
|
||||||
run 0 ../ikwiad -H -DC -C -XH input.hoa > output.hoa
|
run 0 ../ikwiad -H -DC -C -XH input.hoa > output.hoa
|
||||||
run 1 ../../bin/autfilt -q input.hoa --intersect output.hoa
|
run 1 autfilt -q input.hoa --intersect output.hoa
|
||||||
|
|
@ -58,14 +58,13 @@ case $srcdir in
|
||||||
esac
|
esac
|
||||||
|
|
||||||
DOT='@DOT@'
|
DOT='@DOT@'
|
||||||
top_builddir='../@top_builddir@'
|
|
||||||
LBTT="@LBTT@"
|
LBTT="@LBTT@"
|
||||||
LBTT_TRANSLATE="@LBTT_TRANSLATE@"
|
LBTT_TRANSLATE="@LBTT_TRANSLATE@"
|
||||||
VALGRIND='@VALGRIND@'
|
VALGRIND='@VALGRIND@'
|
||||||
SPIN='@SPIN@'
|
SPIN='@SPIN@'
|
||||||
LTL2BA='@LTL2BA@'
|
LTL2BA='@LTL2BA@'
|
||||||
PYTHON='@PYTHON@'
|
PYTHON='@PYTHON@'
|
||||||
top_srcdir='../@top_srcdir@'
|
top_srcdir='@abs_top_srcdir@'
|
||||||
|
|
||||||
# The test cases assume these variable are undefined
|
# The test cases assume these variable are undefined
|
||||||
unset SPOT_DOTEXTRA
|
unset SPOT_DOTEXTRA
|
||||||
|
|
@ -83,9 +82,16 @@ run()
|
||||||
shift
|
shift
|
||||||
exitcode=0
|
exitcode=0
|
||||||
if test -n "$VALGRIND"; then
|
if test -n "$VALGRIND"; then
|
||||||
|
# Replace the command name by a full path after lookup in $PATH, so
|
||||||
|
# that valgrind will find it.
|
||||||
|
cmd=`command -v $1`
|
||||||
|
shift
|
||||||
|
test -n "$cmd" || exit 1
|
||||||
|
set $cmd "$@"
|
||||||
|
# Run valgrind.
|
||||||
exec 6>valgrind.err
|
exec 6>valgrind.err
|
||||||
GLIBCPP_FORCE_NEW=1 \
|
GLIBCXX_FORCE_NEW=1 \
|
||||||
../../libtool --mode=execute \
|
@abs_top_builddir@/libtool --mode=execute \
|
||||||
$VALGRIND --tool=memcheck --leak-check=yes --log-fd=6 -q "$@" ||
|
$VALGRIND --tool=memcheck --leak-check=yes --log-fd=6 -q "$@" ||
|
||||||
exitcode=$?
|
exitcode=$?
|
||||||
cat valgrind.err 1>&2
|
cat valgrind.err 1>&2
|
||||||
|
|
@ -133,7 +133,7 @@ grep 'states: 8' out
|
||||||
# This automaton should have a 3-state BA, but it's really
|
# This automaton should have a 3-state BA, but it's really
|
||||||
# easy to obtain a 4-state BA when tweaking the degeneralization
|
# easy to obtain a 4-state BA when tweaking the degeneralization
|
||||||
# to ignore arc entering an SCC.
|
# to ignore arc entering an SCC.
|
||||||
test 3 = "`../../bin/ltl2tgba -B 'G(a|G(b|Fc))' --stats=%s`"
|
test 3 = "`ltl2tgba -B 'G(a|G(b|Fc))' --stats=%s`"
|
||||||
|
|
||||||
|
|
||||||
# This 7-state DRA (built with
|
# This 7-state DRA (built with
|
||||||
|
|
@ -220,12 +220,12 @@ Acc-Sig:
|
||||||
0
|
0
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/dstar2tgba in.dra -BD --stats=%s > out.stat
|
run 0 dstar2tgba in.dra -BD --stats=%s > out.stat
|
||||||
test 5 = "`cat out.stat`"
|
test 5 = "`cat out.stat`"
|
||||||
|
|
||||||
# Only one state should be accepting. In spot 1.2.x an initial state
|
# Only one state should be accepting. In spot 1.2.x an initial state
|
||||||
# in a trivial SCC was marked as accepting: this is superfluous.
|
# in a trivial SCC was marked as accepting: this is superfluous.
|
||||||
../../bin/ltl2tgba -BH 'a & GFb & GFc' > out
|
ltl2tgba -BH 'a & GFb & GFc' > out
|
||||||
cat out
|
cat out
|
||||||
cat >expected<<EOF
|
cat >expected<<EOF
|
||||||
HOA: v1
|
HOA: v1
|
||||||
|
|
@ -25,11 +25,11 @@ set -e
|
||||||
# Make sure degen-skip=0 and degen-skip=1 produce the expected
|
# Make sure degen-skip=0 and degen-skip=1 produce the expected
|
||||||
# automata for 'GFa & GFb'
|
# automata for 'GFa & GFb'
|
||||||
|
|
||||||
../../bin/ltl2tgba -B 'GFa & GFb' --hoa > out1
|
ltl2tgba -B 'GFa & GFb' --hoa > out1
|
||||||
../../bin/ltl2tgba -B -x degen-lskip=1 'GFa & GFb' --hoa > out2
|
ltl2tgba -B -x degen-lskip=1 'GFa & GFb' --hoa > out2
|
||||||
../../bin/ltl2tgba -B -x degen-lskip=0 'GFa & GFb' --hoa > out3
|
ltl2tgba -B -x degen-lskip=0 'GFa & GFb' --hoa > out3
|
||||||
../../bin/ltl2tgba -B -x degen-lskip=1,degen-lowinit=1 'GFa & GFb' --hoa > out4
|
ltl2tgba -B -x degen-lskip=1,degen-lowinit=1 'GFa & GFb' --hoa > out4
|
||||||
../../bin/ltl2tgba -B -x degen-lskip=0,degen-lowinit=1 'GFa & GFb' --hoa > out5
|
ltl2tgba -B -x degen-lskip=0,degen-lowinit=1 'GFa & GFb' --hoa > out5
|
||||||
|
|
||||||
diff out1 out2
|
diff out1 out2
|
||||||
cmp out2 out3 && exit 1
|
cmp out2 out3 && exit 1
|
||||||
|
|
@ -122,13 +122,13 @@ State: 2
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
run 0 ../../bin/autfilt -q -F out2 --isomorph expected2
|
run 0 autfilt -q -F out2 --isomorph expected2
|
||||||
run 0 ../../bin/autfilt -q -F out3 --isomorph expected3
|
run 0 autfilt -q -F out3 --isomorph expected3
|
||||||
|
|
||||||
cat out4 out5
|
cat out4 out5
|
||||||
|
|
||||||
../../bin/autfilt -q out4 --isomorph expected2 && exit 1
|
autfilt -q out4 --isomorph expected2 && exit 1
|
||||||
../../bin/autfilt -q out5 --isomorph expected3 && exit 1
|
autfilt -q out5 --isomorph expected3 && exit 1
|
||||||
|
|
||||||
../../bin/autfilt -q out4 --isomorph expected4
|
autfilt -q out4 --isomorph expected4
|
||||||
../../bin/autfilt -q out5 --isomorph expected5
|
autfilt -q out5 --isomorph expected5
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
. ./defs
|
. ./defs
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
|
|
||||||
cat >formulas <<'EOF'
|
cat >formulas <<'EOF'
|
||||||
1,13,X((a M F((!b & !c) | (b & c))) W (G!c U b))
|
1,13,X((a M F((!b & !c) | (b & c))) W (G!c U b))
|
||||||
|
|
@ -111,8 +111,8 @@ State: 4 {0}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../ikwiad -H -DC -XH in.hoa > out.hoa
|
run 0 ../ikwiad -H -DC -XH in.hoa > out.hoa
|
||||||
run 1 ../../bin/autfilt -q --are-isomorph in.hoa out.hoa
|
run 1 autfilt -q --are-isomorph in.hoa out.hoa
|
||||||
run 0 ../../bin/autfilt -q --are-isomorph ex.hoa out.hoa
|
run 0 autfilt -q --are-isomorph ex.hoa out.hoa
|
||||||
|
|
||||||
run 0 ../ikwiad -x -DC 'GFa & XGFb' > out.tgba
|
run 0 ../ikwiad -x -DC 'GFa & XGFb' > out.tgba
|
||||||
cat >ex.tgba <<EOF
|
cat >ex.tgba <<EOF
|
||||||
|
|
@ -138,7 +138,7 @@ diff out.tgba ex.tgba
|
||||||
|
|
||||||
# This formula produce a co-deterministic automaton that is not deterministic,
|
# This formula produce a co-deterministic automaton that is not deterministic,
|
||||||
# and a bug in the cosimulation caused the result to be marked as deterministic.
|
# and a bug in the cosimulation caused the result to be marked as deterministic.
|
||||||
run 0 ../../bin/ltl2tgba -H '(0 R Xa) R (a xor Fa)' > out.hoa
|
run 0 ltl2tgba -H '(0 R Xa) R (a xor Fa)' > out.hoa
|
||||||
grep deterministic out.hoa && exit 1
|
grep deterministic out.hoa && exit 1
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -154,7 +154,7 @@ G(!a | XXXXXXa),64
|
||||||
G(!a | XXXXXXXa),128
|
G(!a | XXXXXXXa),128
|
||||||
G(!a | XXXXXXXXa),256
|
G(!a | XXXXXXXXa),256
|
||||||
EOF
|
EOF
|
||||||
run 0 ../../bin/ltl2tgba -D -F input/1 --stats='%f,%s' > output
|
run 0 ltl2tgba -D -F input/1 --stats='%f,%s' > output
|
||||||
cat output
|
cat output
|
||||||
diff input output
|
diff input output
|
||||||
|
|
||||||
|
|
@ -329,5 +329,5 @@ Acc-Sig: +2
|
||||||
13
|
13
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test `../../bin/dstar2tgba -D in.dra --stats="%d:%s:%e"` = "1:23:143"
|
test `dstar2tgba -D in.dra --stats="%d:%s:%e"` = "1:23:143"
|
||||||
|
|
||||||
|
|
@ -148,8 +148,8 @@ EOF
|
||||||
diff expected stdout
|
diff expected stdout
|
||||||
|
|
||||||
# These one could be reduced to 2 5 0 0 and 3 8 1 0
|
# These one could be reduced to 2 5 0 0 and 3 8 1 0
|
||||||
test "`../../bin/dstar2tgba -D dsa.dstar --stats '%s %t %p %d'`" = "4 8 0 0"
|
test "`dstar2tgba -D dsa.dstar --stats '%s %t %p %d'`" = "4 8 0 0"
|
||||||
test "`../../bin/dstar2tgba -DC dsa.dstar --stats '%s %t %p %d'`" = "5 11 1 0"
|
test "`dstar2tgba -DC dsa.dstar --stats '%s %t %p %d'`" = "5 11 1 0"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -212,7 +212,7 @@ State: 3 "str\n\"ing" Acc-Sig: -0 +1 3 3 3 3
|
||||||
State: 4 "more\"string\"" Acc-Sig: +0 +1 3 4 3 4
|
State: 4 "more\"string\"" Acc-Sig: +0 +1 3 4 3 4
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt -B dra.dstar | tee stdout
|
run 0 autfilt -B dra.dstar | tee stdout
|
||||||
|
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
digraph G {
|
digraph G {
|
||||||
|
|
@ -262,7 +262,7 @@ cat >expected <<EOF
|
||||||
2 4 0 1 dra.dstar:43.1-54.1
|
2 4 0 1 dra.dstar:43.1-54.1
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
../../bin/dstar2tgba --name=%F:%L -D dra.dstar --stats '%s %t %p %d %m' > out
|
dstar2tgba --name=%F:%L -D dra.dstar --stats '%s %t %p %d %m' > out
|
||||||
cat out
|
cat out
|
||||||
diff expected out
|
diff expected out
|
||||||
|
|
||||||
|
|
@ -281,7 +281,7 @@ State: 0
|
||||||
Acc-Sig:
|
Acc-Sig:
|
||||||
0
|
0
|
||||||
EOF
|
EOF
|
||||||
run 0 ../../bin/dstar2tgba --name=%F --dot=nt aut.dsa | tee stdout
|
run 0 dstar2tgba --name=%F --dot=nt aut.dsa | tee stdout
|
||||||
|
|
||||||
cat >expected<<EOF
|
cat >expected<<EOF
|
||||||
digraph G {
|
digraph G {
|
||||||
|
|
@ -39,18 +39,18 @@ GFa
|
||||||
(a U (b U (c U (d U e)))) & G(!(a & b) & !(a & c) & !(b & c) & !(d & e))
|
(a U (b U (c U (d U e)))) & G(!(a & b) & !(a & c) & !(b & c) & !(d & e))
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/ltlfilt --exclusive-ap=a,b,c --exclusive-ap=d,e formulas >out
|
run 0 ltlfilt --exclusive-ap=a,b,c --exclusive-ap=d,e formulas >out
|
||||||
cat out
|
cat out
|
||||||
diff out expected
|
diff out expected
|
||||||
|
|
||||||
run 0 ../../bin/ltlfilt --exclusive-ap='"a" ,b, "c" ' --exclusive-ap=' d , e' \
|
run 0 ltlfilt --exclusive-ap='"a" ,b, "c" ' --exclusive-ap=' d , e' \
|
||||||
formulas >out
|
formulas >out
|
||||||
cat out
|
cat out
|
||||||
diff out expected
|
diff out expected
|
||||||
|
|
||||||
../../bin/ltlfilt --exclusive-ap='"a","b' 2>stderr && exit 1
|
ltlfilt --exclusive-ap='"a","b' 2>stderr && exit 1
|
||||||
grep 'missing closing ."' stderr
|
grep 'missing closing ."' stderr
|
||||||
../../bin/ltlfilt --exclusive-ap='a,,b' 2>stderr && exit 1
|
ltlfilt --exclusive-ap='a,,b' 2>stderr && exit 1
|
||||||
grep "unexpected ',' in a,,b" stderr
|
grep "unexpected ',' in a,,b" stderr
|
||||||
../../bin/ltlfilt --exclusive-ap='"a"b' 2>stderr && exit 1
|
ltlfilt --exclusive-ap='"a"b' 2>stderr && exit 1
|
||||||
grep "unexpected character 'b' in \"a\"b" stderr
|
grep "unexpected character 'b' in \"a\"b" stderr
|
||||||
|
|
@ -82,12 +82,12 @@ State: 2 {0}
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt -H --exclusive-ap=a,b,c --exclusive-ap=d,e \
|
run 0 autfilt -H --exclusive-ap=a,b,c --exclusive-ap=d,e \
|
||||||
automaton >out
|
automaton >out
|
||||||
cat out
|
cat out
|
||||||
diff out expected
|
diff out expected
|
||||||
|
|
||||||
run 0 ../../bin/autfilt -H --exclusive-ap=a,b,c --exclusive-ap=d,e \
|
run 0 autfilt -H --exclusive-ap=a,b,c --exclusive-ap=d,e \
|
||||||
--simplify-exclusive-ap automaton >out2
|
--simplify-exclusive-ap automaton >out2
|
||||||
cat out2
|
cat out2
|
||||||
diff out2 expected-simpl
|
diff out2 expected-simpl
|
||||||
|
|
@ -151,12 +151,12 @@ State: 2 {0}
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt -H --exclusive-ap=a,b,c --exclusive-ap=d,e \
|
run 0 autfilt -H --exclusive-ap=a,b,c --exclusive-ap=d,e \
|
||||||
automaton >out
|
automaton >out
|
||||||
cat out
|
cat out
|
||||||
diff out expected
|
diff out expected
|
||||||
|
|
||||||
run 0 ../../bin/autfilt -H --exclusive-ap=a,b,c --exclusive-ap=d,e \
|
run 0 autfilt -H --exclusive-ap=a,b,c --exclusive-ap=d,e \
|
||||||
--simplify-exclusive-ap automaton >out2
|
--simplify-exclusive-ap automaton >out2
|
||||||
cat out2
|
cat out2
|
||||||
diff out2 expected-simpl
|
diff out2 expected-simpl
|
||||||
|
|
@ -77,7 +77,7 @@ State: 2
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt input1 --product input2 --hoa | tee stdout
|
run 0 autfilt input1 --product input2 --hoa | tee stdout
|
||||||
run 0 ../../bin/autfilt -F stdout --isomorph expected
|
run 0 autfilt -F stdout --isomorph expected
|
||||||
|
|
||||||
rm input1 input2 stdout expected
|
rm input1 input2 stdout expected
|
||||||
|
|
@ -77,6 +77,6 @@ State: 2
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt input1 --product input2 --hoa | tee stdout
|
run 0 autfilt input1 --product input2 --hoa | tee stdout
|
||||||
run 0 ../../bin/autfilt -F stdout --isomorph expected
|
run 0 autfilt -F stdout --isomorph expected
|
||||||
rm input1 input2 stdout expected
|
rm input1 input2 stdout expected
|
||||||
|
|
@ -84,8 +84,8 @@ State: 0
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt input1 --product input2 --hoa | tee stdout
|
run 0 autfilt input1 --product input2 --hoa | tee stdout
|
||||||
run 0 ../../bin/autfilt -q stdout --isomorph expected
|
run 0 autfilt -q stdout --isomorph expected
|
||||||
run 1 ../../bin/autfilt -q stdout --isomorph unexpected
|
run 1 autfilt -q stdout --isomorph unexpected
|
||||||
|
|
||||||
true
|
true
|
||||||
|
|
@ -80,7 +80,7 @@ State: 3
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt input1 --product input2 --hoa | tee stdout
|
run 0 autfilt input1 --product input2 --hoa | tee stdout
|
||||||
diff stdout expected
|
diff stdout expected
|
||||||
|
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
|
|
@ -96,7 +96,7 @@ State: 0
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt input1 --product input2 --hoa --small | tee stdout
|
run 0 autfilt input1 --product input2 --hoa --small | tee stdout
|
||||||
run 0 ../../bin/autfilt -F stdout --isomorph expected
|
run 0 autfilt -F stdout --isomorph expected
|
||||||
|
|
||||||
rm input1 input2 stdout expected
|
rm input1 input2 stdout expected
|
||||||
|
|
@ -23,17 +23,17 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
for i in 0 1 2; do
|
for i in 0 1 2; do
|
||||||
../../bin/randaut a b --seed=$i -Q10 --hoa >iso$i
|
randaut a b --seed=$i -Q10 --hoa >iso$i
|
||||||
../../bin/autfilt iso$i --randomize --hoa >aut$i
|
autfilt iso$i --randomize --hoa >aut$i
|
||||||
done
|
done
|
||||||
for i in 3 4 5; do
|
for i in 3 4 5; do
|
||||||
../../bin/randaut a b --seed=$i -Q10 -D --hoa >iso$i
|
randaut a b --seed=$i -Q10 -D --hoa >iso$i
|
||||||
../../bin/autfilt iso$i --randomize --hoa >aut$i
|
autfilt iso$i --randomize --hoa >aut$i
|
||||||
done
|
done
|
||||||
|
|
||||||
cat aut0 aut1 aut2 aut3 aut4 aut5 > all
|
cat aut0 aut1 aut2 aut3 aut4 aut5 > all
|
||||||
(for i in 0 1 2 3 4 5; do
|
(for i in 0 1 2 3 4 5; do
|
||||||
run 0 ../../bin/autfilt all --are-isomorphic iso$i --hoa
|
run 0 autfilt all --are-isomorphic iso$i --hoa
|
||||||
done) > output
|
done) > output
|
||||||
diff all output
|
diff all output
|
||||||
|
|
||||||
|
|
@ -104,8 +104,8 @@ State: 2 [t] 2 [t] 2
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt aut1 --are-isomorphic aut2
|
run 0 autfilt aut1 --are-isomorphic aut2
|
||||||
run 0 ../../bin/autfilt aut3 --are-isomorphic aut4
|
run 0 autfilt aut3 --are-isomorphic aut4
|
||||||
|
|
||||||
run 0 ../../bin/autfilt -u aut1 aut2 aut2 aut3 -c >out
|
run 0 autfilt -u aut1 aut2 aut2 aut3 -c >out
|
||||||
test 2 = "`cat out`"
|
test 2 = "`cat out`"
|
||||||
|
|
@ -29,7 +29,7 @@ GF((a | b) & (b | d))
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Make sure --boolean-to-isop works as expected...
|
# Make sure --boolean-to-isop works as expected...
|
||||||
run 0 ../../bin/ltlfilt --boolean-to-isop input > output
|
run 0 ltlfilt --boolean-to-isop input > output
|
||||||
|
|
||||||
cat> expected<<EOF
|
cat> expected<<EOF
|
||||||
(!a & !b) | (b & d)
|
(!a & !b) | (b & d)
|
||||||
|
|
@ -42,7 +42,7 @@ cat output
|
||||||
diff output expected
|
diff output expected
|
||||||
|
|
||||||
# Make sure it would not give the same output without the option...
|
# Make sure it would not give the same output without the option...
|
||||||
run 0 ../../bin/ltlfilt input > output
|
run 0 ltlfilt input > output
|
||||||
|
|
||||||
cat> expected<<EOF
|
cat> expected<<EOF
|
||||||
(a -> b) & (b -> d)
|
(a -> b) & (b -> d)
|
||||||
|
|
@ -48,8 +48,8 @@ cat <<\EOF
|
||||||
\begin{document}
|
\begin{document}
|
||||||
\begin{tabular}{ll}
|
\begin{tabular}{ll}
|
||||||
EOF
|
EOF
|
||||||
( ../../bin/ltlfilt --latex input --format='\texttt{%F:%L} & $%f$ \\';
|
( ltlfilt --latex input --format='\texttt{%F:%L} & $%f$ \\';
|
||||||
../../bin/genltl --go-theta=1..3 --latex \
|
genltl --go-theta=1..3 --latex \
|
||||||
--format='\texttt{--%F:%L} & $%f$ \\')
|
--format='\texttt{--%F:%L} & $%f$ \\')
|
||||||
cat <<\EOF
|
cat <<\EOF
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
|
|
@ -21,9 +21,9 @@
|
||||||
. ./defs
|
. ./defs
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ltlfilt=../../bin/ltlfilt
|
ltlfilt=ltlfilt
|
||||||
randltl=../../bin/randltl
|
randltl=randltl
|
||||||
genltl=../../bin/genltl
|
genltl=genltl
|
||||||
|
|
||||||
# Some example formulas taken from Ruediger Ehlers's dbaminimizer
|
# Some example formulas taken from Ruediger Ehlers's dbaminimizer
|
||||||
# http://react.cs.uni-saarland.de/tools/dbaminimizer
|
# http://react.cs.uni-saarland.de/tools/dbaminimizer
|
||||||
|
|
@ -25,38 +25,38 @@ set -e
|
||||||
for f in 'p0 U p1 U p2' 'Gp00 | Gp13 | Gp42' '{(1;1)*}[]->p1'
|
for f in 'p0 U p1 U p2' 'Gp00 | Gp13 | Gp42' '{(1;1)*}[]->p1'
|
||||||
do
|
do
|
||||||
# Make sure Spot can read the LBTT it produces
|
# Make sure Spot can read the LBTT it produces
|
||||||
run 0 ../../bin/ltl2tgba --lbtt "$f" > out
|
run 0 ltl2tgba --lbtt "$f" > out
|
||||||
s=`wc -l < out`
|
s=`wc -l < out`
|
||||||
if ../../bin/ltl2tgba -H "$f" | grep 'properties:.*state-acc'; then
|
if ltl2tgba -H "$f" | grep 'properties:.*state-acc'; then
|
||||||
head -n 1 out | grep t && exit 1
|
head -n 1 out | grep t && exit 1
|
||||||
else
|
else
|
||||||
head -n 1 out | grep t
|
head -n 1 out | grep t
|
||||||
fi
|
fi
|
||||||
run 0 ../../bin/autfilt --lbtt out > out2
|
run 0 autfilt --lbtt out > out2
|
||||||
s2=`wc -l < out2`
|
s2=`wc -l < out2`
|
||||||
test "$s" -eq "$s2"
|
test "$s" -eq "$s2"
|
||||||
|
|
||||||
# The LBTT output use 2 lines par state, one line per transition,
|
# The LBTT output use 2 lines par state, one line per transition,
|
||||||
# and one extra line for header.
|
# and one extra line for header.
|
||||||
run 0 ../../bin/ltl2tgba "$f" --stats 'expr %s \* 2 + %e + 1' > size
|
run 0 ltl2tgba "$f" --stats 'expr %s \* 2 + %e + 1' > size
|
||||||
l=$(eval "$(cat size)")
|
l=$(eval "$(cat size)")
|
||||||
test "$s" -eq "$l"
|
test "$s" -eq "$l"
|
||||||
|
|
||||||
# Make sure we output the state-based format
|
# Make sure we output the state-based format
|
||||||
# for BA...
|
# for BA...
|
||||||
run 0 ../../bin/ltl2tgba --ba --lbtt --low --any "$f" >out4
|
run 0 ltl2tgba --ba --lbtt --low --any "$f" >out4
|
||||||
head -n 1 out4 | grep t && exit 1
|
head -n 1 out4 | grep t && exit 1
|
||||||
s4=`wc -l < out4`
|
s4=`wc -l < out4`
|
||||||
test "$s" -eq "$s4"
|
test "$s" -eq "$s4"
|
||||||
run 0 ../../bin/autfilt --lbtt out4 > out5
|
run 0 autfilt --lbtt out4 > out5
|
||||||
run 0 ../../bin/autfilt out4 --are-isomorphic out5
|
run 0 autfilt out4 --are-isomorphic out5
|
||||||
# ... unless --lbtt=t is used.
|
# ... unless --lbtt=t is used.
|
||||||
run 0 ../../bin/ltl2tgba --ba --lbtt=t --low --any "$f" >out6
|
run 0 ltl2tgba --ba --lbtt=t --low --any "$f" >out6
|
||||||
head -n 1 out6 | grep t
|
head -n 1 out6 | grep t
|
||||||
s6=`wc -l < out6`
|
s6=`wc -l < out6`
|
||||||
test "$s" -eq "$s6"
|
test "$s" -eq "$s6"
|
||||||
run 0 ../../bin/autfilt --lbtt out6 > out7
|
run 0 autfilt --lbtt out6 > out7
|
||||||
run 0 ../../bin/autfilt out6 --are-isomorphic out7
|
run 0 autfilt out6 --are-isomorphic out7
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -148,7 +148,7 @@ cat >input <<EOF
|
||||||
-1
|
-1
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt --stats '%s %t %e %a' input > output
|
run 0 autfilt --stats '%s %t %e %a' input > output
|
||||||
cat >expected<<EOF
|
cat >expected<<EOF
|
||||||
4 16 6 1
|
4 16 6 1
|
||||||
4 16 6 1
|
4 16 6 1
|
||||||
|
|
@ -175,6 +175,6 @@ input:3.5-20: failed to parse guard: & ! "a" ! "b" !
|
||||||
input:3.20: syntax error, unexpected '!', expecting end of formula
|
input:3.20: syntax error, unexpected '!', expecting end of formula
|
||||||
input:3.20: ignoring trailing garbage
|
input:3.20: ignoring trailing garbage
|
||||||
EOF
|
EOF
|
||||||
../../bin/autfilt -q input 2> stderr && exit 1
|
autfilt -q input 2> stderr && exit 1
|
||||||
cat stderr
|
cat stderr
|
||||||
diff stderr expected
|
diff stderr expected
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ltlfilt=../../bin/ltlfilt
|
ltlfilt=ltlfilt
|
||||||
|
|
||||||
cat >input <<EOF
|
cat >input <<EOF
|
||||||
(a < b) U (b == c - 1)
|
(a < b) U (b == c - 1)
|
||||||
|
|
@ -28,12 +28,12 @@ set -e
|
||||||
# Skip this test if ltl2dstar is not installed.
|
# Skip this test if ltl2dstar is not installed.
|
||||||
(ltl2dstar --version) || exit 77
|
(ltl2dstar --version) || exit 77
|
||||||
|
|
||||||
ltlfilt=../../bin/ltlfilt
|
ltlfilt=ltlfilt
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
ltlcross=../../bin/ltlcross
|
ltlcross=ltlcross
|
||||||
randltl=../../bin/randltl
|
randltl=randltl
|
||||||
ltlfilt=../../bin/ltlfilt
|
ltlfilt=ltlfilt
|
||||||
dstar2tgba=../../bin/dstar2tgba
|
dstar2tgba=dstar2tgba
|
||||||
|
|
||||||
$ltlfilt -f 'a U b' -l |
|
$ltlfilt -f 'a U b' -l |
|
||||||
ltl2dstar --ltl2nba=spin:$ltl2tgba@-s - - |
|
ltl2dstar --ltl2nba=spin:$ltl2tgba@-s - - |
|
||||||
|
|
@ -70,7 +70,7 @@ test `grep -c 'info: check_empty.*Comp' err` = 2
|
||||||
|
|
||||||
|
|
||||||
# Make sure ltldo preserve the Rabin acceptance by default
|
# Make sure ltldo preserve the Rabin acceptance by default
|
||||||
../../bin/ltldo \
|
ltldo \
|
||||||
"ltl2dstar --ltl2nba=spin:$ltl2tgba@-s --output-format=hoa %L %O" \
|
"ltl2dstar --ltl2nba=spin:$ltl2tgba@-s --output-format=hoa %L %O" \
|
||||||
-f 'GFa -> GFb' -Hi > out.hoa
|
-f 'GFa -> GFb' -Hi > out.hoa
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
|
|
@ -28,10 +28,10 @@ set -e
|
||||||
# Skip this test if ltl2dstar is not installed.
|
# Skip this test if ltl2dstar is not installed.
|
||||||
(ltl2dstar --version) || exit 77
|
(ltl2dstar --version) || exit 77
|
||||||
|
|
||||||
ltlfilt=../../bin/ltlfilt
|
ltlfilt=ltlfilt
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
dstar2tgba=../../bin/dstar2tgba
|
dstar2tgba=dstar2tgba
|
||||||
randltl=../../bin/randltl
|
randltl=randltl
|
||||||
|
|
||||||
|
|
||||||
# Make sure all recurrence formulas are translated into deterministic
|
# Make sure all recurrence formulas are translated into deterministic
|
||||||
|
|
@ -26,12 +26,12 @@ set -e
|
||||||
# Skip this test if ltl2dstar is not installed.
|
# Skip this test if ltl2dstar is not installed.
|
||||||
(ltl2dstar --version) || exit 77
|
(ltl2dstar --version) || exit 77
|
||||||
|
|
||||||
ltlfilt=../../bin/ltlfilt
|
ltlfilt=ltlfilt
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
ltlcross=../../bin/ltlcross
|
ltlcross=ltlcross
|
||||||
randltl=../../bin/randltl
|
randltl=randltl
|
||||||
ltlfilt=../../bin/ltlfilt
|
ltlfilt=ltlfilt
|
||||||
dstar2tgba=../../bin/dstar2tgba
|
dstar2tgba=dstar2tgba
|
||||||
|
|
||||||
RAB='--automata=rabin --output-format=hoa'
|
RAB='--automata=rabin --output-format=hoa'
|
||||||
STR='--automata=streett --output-format=hoa'
|
STR='--automata=streett --output-format=hoa'
|
||||||
|
|
@ -28,12 +28,12 @@ set -e
|
||||||
# Skip this test if ltl2dstar is not installed.
|
# Skip this test if ltl2dstar is not installed.
|
||||||
(ltl2dstar --version) || exit 77
|
(ltl2dstar --version) || exit 77
|
||||||
|
|
||||||
ltlfilt=../../bin/ltlfilt
|
ltlfilt=ltlfilt
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
ltlcross=../../bin/ltlcross
|
ltlcross=ltlcross
|
||||||
randltl=../../bin/randltl
|
randltl=randltl
|
||||||
autfilt=../../bin/autfilt
|
autfilt=autfilt
|
||||||
ltldo=../../bin/ltldo
|
ltldo=ltldo
|
||||||
|
|
||||||
STR='--automata=streett --output-format=hoa'
|
STR='--automata=streett --output-format=hoa'
|
||||||
|
|
||||||
|
|
@ -27,8 +27,8 @@ set -e
|
||||||
|
|
||||||
ltl2tgba=../ikwiad
|
ltl2tgba=../ikwiad
|
||||||
|
|
||||||
../../bin/randltl -n 100 p1 p2 p3 p4 p5 p6 --tree-size 5..15 |
|
randltl -n 100 p1 p2 p3 p4 p5 p6 --tree-size 5..15 |
|
||||||
../../bin/ltlcross \
|
ltlcross \
|
||||||
"$ltl2tgba -t %f > %T" \
|
"$ltl2tgba -t %f > %T" \
|
||||||
"$ltl2tgba -t -r4 -R3f %f > %T" \
|
"$ltl2tgba -t -r4 -R3f %f > %T" \
|
||||||
"$ltl2tgba -N %f > %N" \
|
"$ltl2tgba -N %f > %N" \
|
||||||
|
|
@ -25,4 +25,4 @@ set -e
|
||||||
|
|
||||||
# This used to trigger an assert because of BA simulation not
|
# This used to trigger an assert because of BA simulation not
|
||||||
# returning an instance of spot::sba.
|
# returning an instance of spot::sba.
|
||||||
run 0 ../../bin/ltl2tgta --ta 'G(F(a U b) U (c M d))'
|
run 0 ltl2tgta --ta 'G(F(a U b) U (c M d))'
|
||||||
|
|
@ -98,7 +98,7 @@ EOF
|
||||||
run 0 ../checkpsl check.txt
|
run 0 ../checkpsl check.txt
|
||||||
|
|
||||||
# Make sure False has one acceptance set when generating Büchi automata
|
# Make sure False has one acceptance set when generating Büchi automata
|
||||||
test 1 -eq `../../bin/ltl2tgba -B false --stats %a`
|
test 1 -eq `ltl2tgba -B false --stats %a`
|
||||||
|
|
||||||
# In particular, Spot 0.9 would incorrectly reject the sequence:
|
# In particular, Spot 0.9 would incorrectly reject the sequence:
|
||||||
# (a̅b;a̅b;a̅b̅);(a̅b;a̅b;a̅b̅);(a̅b;a̅b;a̅b̅);... in 'G!{(b;1)*;a}'
|
# (a̅b;a̅b;a̅b̅);(a̅b;a̅b;a̅b̅);(a̅b;a̅b;a̅b̅);... in 'G!{(b;1)*;a}'
|
||||||
|
|
@ -194,28 +194,28 @@ grep 'states: 4$' stdout
|
||||||
|
|
||||||
# A bug in the translation of !{xxx} when xxx reduces to false caused
|
# A bug in the translation of !{xxx} when xxx reduces to false caused
|
||||||
# the following formula to be considered equivalent to anything...
|
# the following formula to be considered equivalent to anything...
|
||||||
../../bin/ltlfilt -f '!{[*2] && [*0..1]}' --equivalent-to 'false' && exit 1
|
ltlfilt -f '!{[*2] && [*0..1]}' --equivalent-to 'false' && exit 1
|
||||||
../../bin/ltlfilt -f '!{[*2] && [*0..1]}' --equivalent-to 'true'
|
ltlfilt -f '!{[*2] && [*0..1]}' --equivalent-to 'true'
|
||||||
|
|
||||||
# Test some equivalences fixed in Spot 1.1.4
|
# Test some equivalences fixed in Spot 1.1.4
|
||||||
../../bin/ltlfilt -f '{{a;b}[*]}' --equivalent-to 'a & Xb'
|
ltlfilt -f '{{a;b}[*]}' --equivalent-to 'a & Xb'
|
||||||
../../bin/ltlfilt -r -f '{{a;b}[*]}' --equivalent-to 'a & Xb'
|
ltlfilt -r -f '{{a;b}[*]}' --equivalent-to 'a & Xb'
|
||||||
../../bin/ltlfilt -f '!{{a;b}[*]}' --equivalent-to '!a | X!b'
|
ltlfilt -f '!{{a;b}[*]}' --equivalent-to '!a | X!b'
|
||||||
../../bin/ltlfilt -r -f '!{{a;b}[*]}' --equivalent-to '!a | X!b'
|
ltlfilt -r -f '!{{a;b}[*]}' --equivalent-to '!a | X!b'
|
||||||
../../bin/ltlfilt -f '{a[*];b[*]}' --equivalent-to 'a | b'
|
ltlfilt -f '{a[*];b[*]}' --equivalent-to 'a | b'
|
||||||
../../bin/ltlfilt -r -f '{a[*];b[*]}' --equivalent-to 'a | b'
|
ltlfilt -r -f '{a[*];b[*]}' --equivalent-to 'a | b'
|
||||||
|
|
||||||
|
|
||||||
# A couple of tests for the [:*i..j] operator
|
# A couple of tests for the [:*i..j] operator
|
||||||
../../bin/ltlfilt -q -f '{{a;b}[:*1..2];c}' \
|
ltlfilt -q -f '{{a;b}[:*1..2];c}' \
|
||||||
--equivalent-to '(a&X(b&Xc)) | a&(X(b&a&X(b&Xc)))'
|
--equivalent-to '(a&X(b&Xc)) | a&(X(b&a&X(b&Xc)))'
|
||||||
../../bin/ltlfilt -q -r -f '{{a;b}[:*1..2];c}' \
|
ltlfilt -q -r -f '{{a;b}[:*1..2];c}' \
|
||||||
--equivalent-to '(a&X(b&Xc)) | a&(X(b&a&X(b&Xc)))'
|
--equivalent-to '(a&X(b&Xc)) | a&(X(b&a&X(b&Xc)))'
|
||||||
../../bin/ltlfilt -q -f '{{a*}[:+];c}' --equivalent-to 'Xc R a'
|
ltlfilt -q -f '{{a*}[:+];c}' --equivalent-to 'Xc R a'
|
||||||
../../bin/ltlfilt -q -r -f '{{a*}[:+];c}' --equivalent-to 'Xc R a'
|
ltlfilt -q -r -f '{{a*}[:+];c}' --equivalent-to 'Xc R a'
|
||||||
../../bin/ltlfilt -q -f '{c && {b | [*0]}[:+]}' --equivalent-to 'c & b'
|
ltlfilt -q -f '{c && {b | [*0]}[:+]}' --equivalent-to 'c & b'
|
||||||
../../bin/ltlfilt -q -r -f '{c && {b | [*0]}[:+]}' --equivalent-to 'c & b'
|
ltlfilt -q -r -f '{c && {b | [*0]}[:+]}' --equivalent-to 'c & b'
|
||||||
|
|
||||||
# test unknown dot options
|
# test unknown dot options
|
||||||
../../bin/ltl2tgba --dot=@ a 2>stderr && exit 1
|
ltl2tgba --dot=@ a 2>stderr && exit 1
|
||||||
grep 'ltl2tgba: unknown option.*@' stderr
|
grep 'ltl2tgba: unknown option.*@' stderr
|
||||||
|
|
@ -30,7 +30,7 @@ set -e
|
||||||
|
|
||||||
# This used to crash ltlcross because the number of
|
# This used to crash ltlcross because the number of
|
||||||
# acceptance sets generated was to high.
|
# acceptance sets generated was to high.
|
||||||
../../bin/ltlcross '../../bin/ltl2tgba' 'ltl3dra' -f '(<>((((p0) &&
|
ltlcross 'ltl2tgba' 'ltl3dra' -f '(<>((((p0) &&
|
||||||
(!(<>(p2)))) || ((!(p0)) && (<>(p2)))) U ((<>(((p0) && (!([](((!(p1))
|
(!(<>(p2)))) || ((!(p0)) && (<>(p2)))) U ((<>(((p0) && (!([](((!(p1))
|
||||||
&& ([](p3))) || ((p1) && (!([](p3)))))))) || ((!(p0)) && ([](((!(p1))
|
&& ([](p3))) || ((p1) && (!([](p3)))))))) || ((!(p0)) && ([](((!(p1))
|
||||||
&& ([](p3))) || ((p1) && (!([](p3))))))))) && (((p0) && (!(<>(p2))))
|
&& ([](p3))) || ((p1) && (!([](p3))))))))) && (((p0) && (!(<>(p2))))
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
pwd
|
pwd
|
||||||
lc="../../bin/genltl"
|
lc="genltl"
|
||||||
|
|
||||||
run='run 0'
|
run='run 0'
|
||||||
|
|
||||||
|
|
@ -36,9 +36,9 @@ p0 xor (p0 W X!p0)
|
||||||
p0 & (!p0 W Xp0)
|
p0 & (!p0 W Xp0)
|
||||||
EOF
|
EOF
|
||||||
# Random formulas
|
# Random formulas
|
||||||
../../bin/randltl -n 100 p1 p2 p3 p4 p5 p6 --tree-size 5..15
|
randltl -n 100 p1 p2 p3 p4 p5 p6 --tree-size 5..15
|
||||||
) |
|
) |
|
||||||
../../bin/ltlcross --products=2 \
|
ltlcross --products=2 \
|
||||||
"$ltl2tgba -t -f %f > %T" \
|
"$ltl2tgba -t -f %f > %T" \
|
||||||
"$ltl2tgba -t -f -y %f > %T" \
|
"$ltl2tgba -t -f -y %f > %T" \
|
||||||
"$ltl2tgba -t -f -fu %f > %T" \
|
"$ltl2tgba -t -f -fu %f > %T" \
|
||||||
|
|
@ -21,10 +21,10 @@
|
||||||
. ./defs
|
. ./defs
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
|
|
||||||
../../bin/randltl -P -n 100 p1 p2 p3 p4 p5 p6 --tree-size 5..15 --seed=314 |
|
randltl -P -n 100 p1 p2 p3 p4 p5 p6 --tree-size 5..15 --seed=314 |
|
||||||
../../bin/ltlcross --products=3 --timeout=60 \
|
ltlcross --products=3 --timeout=60 \
|
||||||
"$ltl2tgba --lbtt --any --low %f > %T" \
|
"$ltl2tgba --lbtt --any --low %f > %T" \
|
||||||
"$ltl2tgba --lbtt --any --medium %f > %T" \
|
"$ltl2tgba --lbtt --any --medium %f > %T" \
|
||||||
"$ltl2tgba --hoa --any --high %f > %H" \
|
"$ltl2tgba --hoa --any --high %f > %H" \
|
||||||
|
|
@ -31,21 +31,21 @@ check_csv()
|
||||||
done)
|
done)
|
||||||
}
|
}
|
||||||
|
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
|
|
||||||
# Make sure ltlcross quotes formulas correctly
|
# Make sure ltlcross quotes formulas correctly
|
||||||
cat >formula <<\EOF
|
cat >formula <<\EOF
|
||||||
G"a'-'>'b"
|
G"a'-'>'b"
|
||||||
EOF
|
EOF
|
||||||
run 0 ../../bin/ltlcross -F formula --csv=out.csv \
|
run 0 ltlcross -F formula --csv=out.csv \
|
||||||
"$ltl2tgba -s %f >%N" \
|
"$ltl2tgba -s %f >%N" \
|
||||||
"$ltl2tgba --lenient -s %s >%N"
|
"$ltl2tgba --lenient -s %s >%N"
|
||||||
|
|
||||||
run 2 ../../bin/ltlcross "$ltl2tgba -s %f >%N" 'foo bar' 2>stderr -f a
|
run 2 ltlcross "$ltl2tgba -s %f >%N" 'foo bar' 2>stderr -f a
|
||||||
grep 'ltlcross.*no input.*in.*foo bar' stderr
|
grep 'ltlcross.*no input.*in.*foo bar' stderr
|
||||||
|
|
||||||
# Make sure non-zero exit codes are reported...
|
# Make sure non-zero exit codes are reported...
|
||||||
run 1 ../../bin/ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
|
run 1 ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
|
||||||
-f a --csv=out.csv 2>stderr
|
-f a --csv=out.csv 2>stderr
|
||||||
grep '"exit_status"' out.csv
|
grep '"exit_status"' out.csv
|
||||||
grep '"exit_code"' out.csv
|
grep '"exit_code"' out.csv
|
||||||
|
|
@ -54,7 +54,7 @@ test `grep '"exit code",1' out.csv | wc -l` -eq 2
|
||||||
check_csv out.csv
|
check_csv out.csv
|
||||||
|
|
||||||
# ... unless --omit-missing is supplied.
|
# ... unless --omit-missing is supplied.
|
||||||
run 1 ../../bin/ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
|
run 1 ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
|
||||||
-f a --csv=out.csv --omit-missing 2>stderr
|
-f a --csv=out.csv --omit-missing 2>stderr
|
||||||
grep '"exit_status"' out.csv && exit 1
|
grep '"exit_status"' out.csv && exit 1
|
||||||
grep '"exit_code"' out.csv && exit 1
|
grep '"exit_code"' out.csv && exit 1
|
||||||
|
|
@ -64,7 +64,7 @@ check_csv out.csv
|
||||||
|
|
||||||
# Likewise for timeouts
|
# Likewise for timeouts
|
||||||
echo foo >bug
|
echo foo >bug
|
||||||
run 0 ../../bin/ltlcross 'sleep 5; false %f >%N' 'false %f >%N' \
|
run 0 ltlcross 'sleep 5; false %f >%N' 'false %f >%N' \
|
||||||
--timeout 2 -f a --csv=out.csv \
|
--timeout 2 -f a --csv=out.csv \
|
||||||
--ignore-execution-failures \
|
--ignore-execution-failures \
|
||||||
--save-bogus=bug 2>stderr
|
--save-bogus=bug 2>stderr
|
||||||
|
|
@ -83,7 +83,7 @@ check_csv out.csv
|
||||||
test -f bug
|
test -f bug
|
||||||
test -s bug && exit 1
|
test -s bug && exit 1
|
||||||
|
|
||||||
run 0 ../../bin/ltlcross 'sleep 5; false %f >%N' \
|
run 0 ltlcross 'sleep 5; false %f >%N' \
|
||||||
--timeout 2 --omit-missing -f a --csv=out.csv 2>stderr
|
--timeout 2 --omit-missing -f a --csv=out.csv 2>stderr
|
||||||
grep '"exit_status"' out.csv && exit 1
|
grep '"exit_status"' out.csv && exit 1
|
||||||
grep '"exit_code"' out.csv && exit 1
|
grep '"exit_code"' out.csv && exit 1
|
||||||
|
|
@ -92,7 +92,7 @@ test `wc -l < out.csv` -eq 1
|
||||||
check_csv out.csv
|
check_csv out.csv
|
||||||
|
|
||||||
# Check with --products=5 --automata
|
# Check with --products=5 --automata
|
||||||
run 1 ../../bin/ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
|
run 1 ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
|
||||||
-f a --csv=out.csv --products=5 --automata 2>stderr
|
-f a --csv=out.csv --products=5 --automata 2>stderr
|
||||||
p=`sed 's/[^,]//g;q' out.csv | wc -c`
|
p=`sed 's/[^,]//g;q' out.csv | wc -c`
|
||||||
grep '"exit_status"' out.csv
|
grep '"exit_status"' out.csv
|
||||||
|
|
@ -103,7 +103,7 @@ test `grep '"HOA:.*--BODY--.*--END--"' out.csv | wc -l` -eq 2
|
||||||
check_csv out.csv
|
check_csv out.csv
|
||||||
|
|
||||||
# ... unless --omit-missing is supplied.
|
# ... unless --omit-missing is supplied.
|
||||||
run 1 ../../bin/ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
|
run 1 ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
|
||||||
-f a --csv=out.csv --omit-missing --products=5 2>stderr
|
-f a --csv=out.csv --omit-missing --products=5 2>stderr
|
||||||
grep '"exit_status"' out.csv && exit 1
|
grep '"exit_status"' out.csv && exit 1
|
||||||
grep '"exit_code"' out.csv && exit 1
|
grep '"exit_code"' out.csv && exit 1
|
||||||
|
|
@ -113,7 +113,7 @@ check_csv out.csv
|
||||||
|
|
||||||
|
|
||||||
# Check with --products=+5
|
# Check with --products=+5
|
||||||
run 1 ../../bin/ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
|
run 1 ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
|
||||||
-f a --csv=out.csv --products=+5 --automata 2>stderr
|
-f a --csv=out.csv --products=+5 --automata 2>stderr
|
||||||
q=`sed 's/[^,]//g;q' out.csv | wc -c`
|
q=`sed 's/[^,]//g;q' out.csv | wc -c`
|
||||||
grep '"exit_status"' out.csv
|
grep '"exit_status"' out.csv
|
||||||
|
|
@ -124,7 +124,7 @@ test `grep '"HOA:.*--BODY--.*--END--"' out.csv | wc -l` -eq 2
|
||||||
check_csv out.csv
|
check_csv out.csv
|
||||||
|
|
||||||
# ... unless --omit-missing is supplied.
|
# ... unless --omit-missing is supplied.
|
||||||
run 1 ../../bin/ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
|
run 1 ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
|
||||||
-f a --csv=out.csv --omit-missing --products=+5 2>stderr
|
-f a --csv=out.csv --omit-missing --products=+5 2>stderr
|
||||||
grep '"exit_status"' out.csv && exit 1
|
grep '"exit_status"' out.csv && exit 1
|
||||||
grep '"exit_code"' out.csv && exit 1
|
grep '"exit_code"' out.csv && exit 1
|
||||||
|
|
@ -138,7 +138,7 @@ test $q -eq `expr $p + 12`
|
||||||
# Check with Rabin/Streett output
|
# Check with Rabin/Streett output
|
||||||
first="should not be erased"
|
first="should not be erased"
|
||||||
echo "$first" > bug.txt
|
echo "$first" > bug.txt
|
||||||
run 1 ../../bin/ltlcross "$ltl2tgba -s %f >%N" 'false %f >%D' \
|
run 1 ltlcross "$ltl2tgba -s %f >%N" 'false %f >%D' \
|
||||||
-f 'X a' --csv=out.csv --save-bogus='>>bug.txt' 2>stderr
|
-f 'X a' --csv=out.csv --save-bogus='>>bug.txt' 2>stderr
|
||||||
q=`sed 's/[^,]//g;q' out.csv | wc -c`
|
q=`sed 's/[^,]//g;q' out.csv | wc -c`
|
||||||
test $q -eq `expr $p - 1`
|
test $q -eq `expr $p - 1`
|
||||||
|
|
@ -152,7 +152,7 @@ test "`head -n 1 bug.txt`" = "$first"
|
||||||
|
|
||||||
|
|
||||||
# Support for --ABORT-- in HOA.
|
# Support for --ABORT-- in HOA.
|
||||||
run 1 ../../bin/ltlcross 'echo HOA: --ABORT-- %f > %H' \
|
run 1 ltlcross 'echo HOA: --ABORT-- %f > %H' \
|
||||||
-f a --csv=out.csv 2>stderr
|
-f a --csv=out.csv 2>stderr
|
||||||
grep '"exit_status"' out.csv
|
grep '"exit_status"' out.csv
|
||||||
grep '"exit_code"' out.csv
|
grep '"exit_code"' out.csv
|
||||||
|
|
@ -162,7 +162,7 @@ test 3 = `wc -l < out.csv`
|
||||||
check_csv out.csv
|
check_csv out.csv
|
||||||
|
|
||||||
# The header of CSV file is not output in append mode
|
# The header of CSV file is not output in append mode
|
||||||
run 1 ../../bin/ltlcross 'echo HOA: --ABORT-- %f > %H' \
|
run 1 ltlcross 'echo HOA: --ABORT-- %f > %H' \
|
||||||
-f a --csv='>>out.csv' 2>stderr
|
-f a --csv='>>out.csv' 2>stderr
|
||||||
grep '"exit_status"' out.csv
|
grep '"exit_status"' out.csv
|
||||||
grep '"exit_code"' out.csv
|
grep '"exit_code"' out.csv
|
||||||
|
|
@ -173,7 +173,7 @@ check_csv out.csv
|
||||||
|
|
||||||
|
|
||||||
# Diagnose empty automata, and make sure %% is correctly replaced by %
|
# Diagnose empty automata, and make sure %% is correctly replaced by %
|
||||||
run 1 ../../bin/ltlcross ': %f >%O; echo %%>foo' -f a 2>stderr
|
run 1 ltlcross ': %f >%O; echo %%>foo' -f a 2>stderr
|
||||||
test 2 = `grep -c ':.*empty input' stderr`
|
test 2 = `grep -c ':.*empty input' stderr`
|
||||||
cat foo
|
cat foo
|
||||||
cat >expected<<EOF
|
cat >expected<<EOF
|
||||||
|
|
@ -23,14 +23,14 @@ set -e
|
||||||
|
|
||||||
test -z "$PYTHON" && exit 77
|
test -z "$PYTHON" && exit 77
|
||||||
|
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
|
|
||||||
cat >formulas.txt <<EOF
|
cat >formulas.txt <<EOF
|
||||||
GFa & GFb
|
GFa & GFb
|
||||||
GFa -> GFb
|
GFa -> GFb
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
../../bin/ltlcross -F formulas.txt \
|
ltlcross -F formulas.txt \
|
||||||
"{ltl2tgba any} $ltl2tgba --lbtt --any %f > %T" \
|
"{ltl2tgba any} $ltl2tgba --lbtt --any %f > %T" \
|
||||||
"{ltl2tgba det} $ltl2tgba --lbtt --deterministic %f > %T" \
|
"{ltl2tgba det} $ltl2tgba --lbtt --deterministic %f > %T" \
|
||||||
"{ltl2tgba sma} $ltl2tgba --lbtt --small %f > %T" \
|
"{ltl2tgba sma} $ltl2tgba --lbtt --small %f > %T" \
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
. ./defs
|
. ./defs
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
|
|
||||||
# The following "fake" script behaves as
|
# The following "fake" script behaves as
|
||||||
# version 1.5.9 of modella, when run as
|
# version 1.5.9 of modella, when run as
|
||||||
|
|
@ -85,7 +85,7 @@ esac
|
||||||
EOF
|
EOF
|
||||||
chmod +x fake
|
chmod +x fake
|
||||||
|
|
||||||
run 1 ../../bin/ltlcross -f 'G(F(p0) & F(G(!p1))) | (F(G(!p0)) & G(F(p1)))' \
|
run 1 ltlcross -f 'G(F(p0) & F(G(!p1))) | (F(G(!p0)) & G(F(p1)))' \
|
||||||
"$ltl2tgba --lbtt %f >%T" "./fake %l >%T" 2> errors
|
"$ltl2tgba --lbtt %f >%T" "./fake %l >%T" 2> errors
|
||||||
cat errors
|
cat errors
|
||||||
grep 'error: P0\*N1 is nonempty' errors
|
grep 'error: P0\*N1 is nonempty' errors
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
. ./defs
|
. ./defs
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
|
|
||||||
cat >fake <<\EOF
|
cat >fake <<\EOF
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
@ -62,7 +62,7 @@ esac
|
||||||
EOF
|
EOF
|
||||||
chmod +x fake
|
chmod +x fake
|
||||||
|
|
||||||
run 1 ../../bin/ltlcross -f 'G(a <-> Fb) U c' \
|
run 1 ltlcross -f 'G(a <-> Fb) U c' \
|
||||||
"$ltl2tgba --lbtt %f >%T" "./fake %l >%T" 2> errors
|
"$ltl2tgba --lbtt %f >%T" "./fake %l >%T" 2> errors
|
||||||
cat errors
|
cat errors
|
||||||
grep 'error: P0\*N1 is nonempty' errors
|
grep 'error: P0\*N1 is nonempty' errors
|
||||||
|
|
@ -24,13 +24,13 @@ set -e
|
||||||
|
|
||||||
cat >fake <<EOF
|
cat >fake <<EOF
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
../../bin/ltl2tgba -s -f "\$1" | sed 's/p0/p1/g'
|
ltl2tgba -s -f "\$1" | sed 's/p0/p1/g'
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chmod +x fake
|
chmod +x fake
|
||||||
|
|
||||||
run 1 ../../bin/ltlcross -f 'p0 U p1' "./fake %f >%N" \
|
run 1 ltlcross -f 'p0 U p1' "./fake %f >%N" \
|
||||||
"../../bin/ltl2tgba -s -f %f >%N" --grind=bogus.grind
|
"ltl2tgba -s -f %f >%N" --grind=bogus.grind
|
||||||
|
|
||||||
echo p0 >exp
|
echo p0 >exp
|
||||||
diff bogus.grind exp
|
diff bogus.grind exp
|
||||||
|
|
@ -21,9 +21,9 @@
|
||||||
. ./defs
|
. ./defs
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ltldo=../../bin/ltldo
|
ltldo=ltldo
|
||||||
ltl2tgba=../../bin/ltl2tgba
|
ltl2tgba=ltl2tgba
|
||||||
genltl=../../bin/genltl
|
genltl=genltl
|
||||||
|
|
||||||
run 0 $ltldo -f a -f 'a&b' -t 'echo %f,%s' >output
|
run 0 $ltldo -f a -f 'a&b' -t 'echo %f,%s' >output
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
|
|
@ -21,8 +21,8 @@
|
||||||
. ./defs
|
. ./defs
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ltldo=../../bin/ltldo
|
ltldo=ltldo
|
||||||
genltl=../../bin/genltl
|
genltl=genltl
|
||||||
|
|
||||||
test -n "$LTL2BA" || exit 77
|
test -n "$LTL2BA" || exit 77
|
||||||
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ltlfilt=../../bin/ltlfilt
|
ltlfilt=ltlfilt
|
||||||
|
|
||||||
checkopt()
|
checkopt()
|
||||||
{
|
{
|
||||||
|
|
@ -25,7 +25,7 @@ set -e
|
||||||
checkopt_noparse()
|
checkopt_noparse()
|
||||||
{
|
{
|
||||||
cat >exp
|
cat >exp
|
||||||
run 0 ../../bin/ltlgrind --sort "$@" > out
|
run 0 ltlgrind --sort "$@" > out
|
||||||
diff exp out
|
diff exp out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -33,7 +33,7 @@ checkopt()
|
||||||
{
|
{
|
||||||
checkopt_noparse "$@"
|
checkopt_noparse "$@"
|
||||||
# The result must be parsable
|
# The result must be parsable
|
||||||
../../bin/ltlfilt out
|
ltlfilt out
|
||||||
}
|
}
|
||||||
|
|
||||||
checkopt -f 'Xp1 U (p4 | (p3 xor (p4 W p0)))' <<EOF
|
checkopt -f 'Xp1 U (p4 | (p3 xor (p4 W p0)))' <<EOF
|
||||||
|
|
@ -65,7 +65,7 @@ State: 3
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt --mask-acc=0 input1 -H >output
|
run 0 autfilt --mask-acc=0 input1 -H >output
|
||||||
diff output expect1
|
diff output expect1
|
||||||
|
|
||||||
cat >expect2 <<EOF
|
cat >expect2 <<EOF
|
||||||
|
|
@ -88,7 +88,7 @@ State: 3
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt --mask-acc=1 input1 -H >output
|
run 0 autfilt --mask-acc=1 input1 -H >output
|
||||||
diff output expect2
|
diff output expect2
|
||||||
|
|
||||||
cat >expect3 <<EOF
|
cat >expect3 <<EOF
|
||||||
|
|
@ -104,10 +104,10 @@ State: 0
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt --mask-acc=0,1,2 input1 -H >output
|
run 0 autfilt --mask-acc=0,1,2 input1 -H >output
|
||||||
diff output expect3
|
diff output expect3
|
||||||
|
|
||||||
run 0 ../../bin/autfilt --mask-acc=0 --mask-acc=1 input1 -H >output
|
run 0 autfilt --mask-acc=0 --mask-acc=1 input1 -H >output
|
||||||
diff output expect3
|
diff output expect3
|
||||||
|
|
||||||
cat >input4 <<EOF
|
cat >input4 <<EOF
|
||||||
|
|
@ -152,10 +152,10 @@ State: 3
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt --mask-acc=1 input4 -H >output
|
run 0 autfilt --mask-acc=1 input4 -H >output
|
||||||
diff output expect4
|
diff output expect4
|
||||||
|
|
||||||
# Errors
|
# Errors
|
||||||
run 2 ../../bin/autfilt --mask-acc=a3 input1
|
run 2 autfilt --mask-acc=a3 input1
|
||||||
run 2 ../../bin/autfilt --mask-acc=3-2 input1
|
run 2 autfilt --mask-acc=3-2 input1
|
||||||
run 2 ../../bin/autfilt --mask-acc=0,9999,1 input1
|
run 2 autfilt --mask-acc=0,9999,1 input1
|
||||||
|
|
@ -59,10 +59,10 @@ State: 0
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt --keep-states=0 input1 -H >output
|
run 0 autfilt --keep-states=0 input1 -H >output
|
||||||
diff output expect1
|
diff output expect1
|
||||||
|
|
||||||
run 0 ../../bin/autfilt --keep-states=1 input1 -H >output
|
run 0 autfilt --keep-states=1 input1 -H >output
|
||||||
diff output expect1
|
diff output expect1
|
||||||
|
|
||||||
cat >expect3 <<EOF
|
cat >expect3 <<EOF
|
||||||
|
|
@ -100,14 +100,14 @@ State: 1
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
run 0 ../../bin/autfilt --keep-states=0,1,2 input1 -H >output
|
run 0 autfilt --keep-states=0,1,2 input1 -H >output
|
||||||
diff output expect3
|
diff output expect3
|
||||||
run 0 ../../bin/autfilt --keep-states=0,9999,1,2 input1 -H >output
|
run 0 autfilt --keep-states=0,9999,1,2 input1 -H >output
|
||||||
diff output expect3
|
diff output expect3
|
||||||
|
|
||||||
run 0 ../../bin/autfilt --keep-states=1,2,0 input1 -H >output
|
run 0 autfilt --keep-states=1,2,0 input1 -H >output
|
||||||
diff output expect4
|
diff output expect4
|
||||||
|
|
||||||
# Errors
|
# Errors
|
||||||
run 2 ../../bin/autfilt --keep-states=a3 input1
|
run 2 autfilt --keep-states=a3 input1
|
||||||
run 2 ../../bin/autfilt --keep-states=3-2 input1
|
run 2 autfilt --keep-states=3-2 input1
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue