Remove ltl2tgba_lacim and all supporting classes.
This translator algorithm is seldom used in practice because we work with explicit automata everywhere, and this is only useful to build symbolic automata. Furthermore, the symbolic automata produced by this algorithm are larger (when looked at explicitly) than those produced by ltl2tgba_fm or other explicit translators. The nice side effect of this removal is that we can also remove a lot of supporting classes, that were relying a lot on BDDs. * src/tgba/public.hh, src/tgba/statebdd.cc, src/tgba/statebdd.hh, src/tgba/succiterconcrete.cc, src/tgba/succiterconcrete.hh, src/tgba/tgbabddconcrete.cc, src/tgba/tgbabddconcrete.hh, src/tgba/tgbabddconcretefactory.cc, src/tgba/tgbabddconcretefactory.hh, src/tgba/tgbabddconcreteproduct.cc, src/tgba/tgbabddconcreteproduct.hh, src/tgba/tgbabddcoredata.cc, src/tgba/tgbabddcoredata.hh, src/tgba/tgbabddfactory.hh, src/tgbaalgos/ltl2tgba_lacim.cc, src/tgbaalgos/ltl2tgba_lacim.hh, src/tgbatest/bddprod.test, src/tgbatest/mixprod.cc, src/tgbatest/mixprod.test: Delete all these files. * bench/ltlcounter/Makefile.am, bench/ltlcounter/README, bench/ltlcounter/plot.gnu, bench/ltlcounter/run, src/tgba/Makefile.am, src/tgbaalgos/Makefile.am, src/tgbatest/Makefile.am, src/tgbatest/cycles.test, src/tgbatest/dupexp.test, src/tgbatest/emptchk.test, src/tgbatest/ltl2tgba.cc, src/tgbatest/ltl2tgba.test, src/tgbatest/ltlcross.test, src/tgbatest/ltlprod.cc, src/tgbatest/spotlbtt.test, src/tgbatest/wdba.test, src/tgbatest/wdba2.test, src/tgba/tgbaexplicit.hh, wrap/python/ajax/ltl2tgba.html, wrap/python/ajax/spot.in, wrap/python/spot.i, wrap/python/tests/interdep.py, wrap/python/tests/ltl2tgba.py, wrap/python/tests/ltl2tgba.test: Adjust.
This commit is contained in:
parent
26b932828b
commit
116fe8654f
43 changed files with 111 additions and 2291 deletions
|
|
@ -31,7 +31,6 @@ noinst_PROGRAMS = ltl2tgba randtgba
|
|||
check_SCRIPTS = defs
|
||||
# Keep this sorted alphabetically.
|
||||
check_PROGRAMS = \
|
||||
bddprod \
|
||||
bitvect \
|
||||
complement \
|
||||
explicit \
|
||||
|
|
@ -43,7 +42,6 @@ check_PROGRAMS = \
|
|||
intvcmp2 \
|
||||
ltlprod \
|
||||
maskacc \
|
||||
mixprod \
|
||||
powerset \
|
||||
readsat \
|
||||
taatgba \
|
||||
|
|
@ -51,8 +49,6 @@ check_PROGRAMS = \
|
|||
tripprod
|
||||
|
||||
# Keep this sorted alphabetically.
|
||||
bddprod_SOURCES = ltlprod.cc
|
||||
bddprod_CXXFLAGS = -DBDD_CONCRETE_PRODUCT
|
||||
bitvect_SOURCES = bitvect.cc
|
||||
complement_SOURCES = complementation.cc
|
||||
explicit_SOURCES = explicit.cc
|
||||
|
|
@ -66,7 +62,6 @@ intvcmp2_SOURCES = intvcmp2.cc
|
|||
ltl2tgba_SOURCES = ltl2tgba.cc
|
||||
ltlprod_SOURCES = ltlprod.cc
|
||||
maskacc_SOURCES = maskacc.cc
|
||||
mixprod_SOURCES = mixprod.cc
|
||||
powerset_SOURCES = powerset.cc
|
||||
randtgba_SOURCES = randtgba.cc
|
||||
readsat_SOURCES = readsat.cc
|
||||
|
|
@ -100,13 +95,11 @@ TESTS = \
|
|||
ltl2ta.test \
|
||||
ltl2ta2.test \
|
||||
ltlprod.test \
|
||||
bddprod.test \
|
||||
explprod.test \
|
||||
explpro2.test \
|
||||
explpro3.test \
|
||||
explpro4.test \
|
||||
tripprod.test \
|
||||
mixprod.test \
|
||||
dupexp.test \
|
||||
degendet.test \
|
||||
degenid.test \
|
||||
|
|
|
|||
|
|
@ -1,38 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2009 Laboratoire de Recherche et Développement
|
||||
# de l'Epita (LRDE).
|
||||
# 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 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/>.
|
||||
|
||||
|
||||
. ./defs
|
||||
|
||||
set -e
|
||||
|
||||
# We don't check the output, but just running these might be enough to
|
||||
# trigger assertions.
|
||||
|
||||
run 0 ../bddprod a b
|
||||
run 0 ../bddprod a a
|
||||
run 0 ../bddprod 'a U b' 'X f'
|
||||
run 0 ../bddprod 'X a' 'X a'
|
||||
run 0 ../bddprod 'X a' 'a U b'
|
||||
run 0 ../bddprod 'a & b & c' 'b & d & c'
|
||||
run 0 ../bddprod 'a | b | (c U (d & (g U (h ^ i))))' 'h ^ i'
|
||||
run 0 ../bddprod 'Xa & (b U !a) & (b U !a)' '(b U !a) & f'
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2012 Laboratoire de Recherche et Développement
|
||||
# Copyright (C) 2012, 2014 Laboratoire de Recherche et Développement
|
||||
# de l'Epita (LRDE).
|
||||
#
|
||||
# This file is part of Spot, a model checking library.
|
||||
|
|
@ -82,7 +82,3 @@ test `wc -l < out` -eq 10
|
|||
run 0 ../ltl2tgba -KW '(Ga -> Gb) W c' > out
|
||||
test `grep 'is weak' out | wc -l` -eq 4
|
||||
test `grep 'is not weak' out | wc -l` -eq 1
|
||||
|
||||
run 0 ../ltl2tgba -l -KW 'F(Fa R (Gb & !a))' > out
|
||||
test `grep 'is weak' out | wc -l` -eq 7
|
||||
test `grep 'is not weak' out | wc -l` -eq 1
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2009 Laboratoire de Recherche et Développement
|
||||
# Copyright (C) 2009, 2014 Laboratoire de Recherche et Développement
|
||||
# de l'Epita (LRDE).
|
||||
# Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
# département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
|
|
@ -30,10 +30,6 @@ dorun()
|
|||
run 0 ../ltl2tgba -f -s "$1" >output1
|
||||
run 0 ../ltl2tgba -f -S "$1" >output2
|
||||
test `wc -l <output1` = `wc -l <output2`
|
||||
|
||||
run 0 ../ltl2tgba -l -s "$1" >output1
|
||||
run 0 ../ltl2tgba -l -S "$1" >output2
|
||||
test `wc -l <output1` = `wc -l <output2`
|
||||
}
|
||||
|
||||
dorun 'a'
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2008, 2009, 2010 Laboratoire de Recherche et
|
||||
# Copyright (C) 2008, 2009, 2010, 2014 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),
|
||||
|
|
@ -33,54 +33,54 @@ expect_ce_do()
|
|||
|
||||
expect_ce()
|
||||
{
|
||||
expect_ce_do -CR -e -l "$1"
|
||||
expect_ce_do -CR -e -l -D "$1"
|
||||
expect_ce_do -CR -e -taa "$1"
|
||||
expect_ce_do -CR -e -taa -D "$1"
|
||||
expect_ce_do -CR -e -f "$1"
|
||||
expect_ce_do -CR -e -f -D "$1"
|
||||
expect_ce_do -CR -e'Cou99(shy)' -l "$1"
|
||||
expect_ce_do -CR -e'Cou99(shy)' -l -D "$1"
|
||||
expect_ce_do -CR -e'Cou99(shy)' -taa "$1"
|
||||
expect_ce_do -CR -e'Cou99(shy)' -taa -D "$1"
|
||||
expect_ce_do -CR -e'Cou99(shy)' -f "$1"
|
||||
expect_ce_do -CR -e'Cou99(shy)' -f -D "$1"
|
||||
expect_ce_do -CR -eCVWY90 -l "$1"
|
||||
expect_ce_do -CR -eCVWY90 -taa "$1"
|
||||
expect_ce_do -CR -eCVWY90 -f "$1"
|
||||
run 0 ../ltl2tgba -CR -e'CVWY90(bsh=10M)' -l "$1"
|
||||
run 0 ../ltl2tgba -CR -e'CVWY90(bsh=10M)' -taa "$1"
|
||||
run 0 ../ltl2tgba -CR -e'CVWY90(bsh=10M)' -f "$1"
|
||||
run 0 ../ltl2tgba -CR -eSE05 -l "$1"
|
||||
run 0 ../ltl2tgba -CR -eSE05 -taa "$1"
|
||||
run 0 ../ltl2tgba -CR -eSE05 -f "$1"
|
||||
run 0 ../ltl2tgba -CR -e'SE05(bsh=10M)' -l "$1"
|
||||
run 0 ../ltl2tgba -CR -e'SE05(bsh=10M)' -taa "$1"
|
||||
run 0 ../ltl2tgba -CR -e'SE05(bsh=10M)' -f "$1"
|
||||
run 0 ../ltl2tgba -CR -eTau03_opt -f "$1"
|
||||
run 0 ../ltl2tgba -CR -eGV04 -f "$1"
|
||||
# Expect multiple accepting runs
|
||||
test `../ltl2tgba -C -e'CVWY90(repeated)' -l "$1" |
|
||||
test `../ltl2tgba -C -e'CVWY90(repeated)' -taa "$1" |
|
||||
grep Prefix: | wc -l` -ge $2
|
||||
test `../ltl2tgba -C -e'SE05(repeated)' -l "$1" |
|
||||
test `../ltl2tgba -C -e'SE05(repeated)' -taa "$1" |
|
||||
grep Prefix: | wc -l` -ge $2
|
||||
}
|
||||
|
||||
expect_no()
|
||||
{
|
||||
run 0 ../ltl2tgba -CR -E -l "$1"
|
||||
run 0 ../ltl2tgba -CR -E -l -D "$1"
|
||||
run 0 ../ltl2tgba -CR -E -taa "$1"
|
||||
run 0 ../ltl2tgba -CR -E -taa -D "$1"
|
||||
run 0 ../ltl2tgba -CR -E -f "$1"
|
||||
run 0 ../ltl2tgba -CR -E -f -D "$1"
|
||||
run 0 ../ltl2tgba -CR -E'Cou99(shy)' -l "$1"
|
||||
run 0 ../ltl2tgba -CR -E'Cou99(shy)' -l -D "$1"
|
||||
run 0 ../ltl2tgba -CR -E'Cou99(shy)' -taa "$1"
|
||||
run 0 ../ltl2tgba -CR -E'Cou99(shy)' -taa -D "$1"
|
||||
run 0 ../ltl2tgba -CR -E'Cou99(shy)' -f "$1"
|
||||
run 0 ../ltl2tgba -CR -E'Cou99(shy)' -f -D "$1"
|
||||
run 0 ../ltl2tgba -CR -ECVWY90 -l "$1"
|
||||
run 0 ../ltl2tgba -CR -ECVWY90 -taa "$1"
|
||||
run 0 ../ltl2tgba -CR -ECVWY90 -f "$1"
|
||||
run 0 ../ltl2tgba -CR -E'CVWY90(bsh=10M)' -l "$1"
|
||||
run 0 ../ltl2tgba -CR -E'CVWY90(bsh=10M)' -taa "$1"
|
||||
run 0 ../ltl2tgba -CR -E'CVWY90(bsh=10M)' -f "$1"
|
||||
run 0 ../ltl2tgba -CR -ESE05 -l "$1"
|
||||
run 0 ../ltl2tgba -CR -ESE05 -taa "$1"
|
||||
run 0 ../ltl2tgba -CR -ESE05 -f "$1"
|
||||
run 0 ../ltl2tgba -CR -E'SE05(bsh=10M)' -l "$1"
|
||||
run 0 ../ltl2tgba -CR -E'SE05(bsh=10M)' -taa "$1"
|
||||
run 0 ../ltl2tgba -CR -E'SE05(bsh=10M)' -f "$1"
|
||||
run 0 ../ltl2tgba -CR -ETau03_opt -f "$1"
|
||||
run 0 ../ltl2tgba -CR -EGV04 -f "$1"
|
||||
test `../ltl2tgba -C -e'CVWY90(repeated)' -l "!($1)" |
|
||||
test `../ltl2tgba -C -e'CVWY90(repeated)' -taa "!($1)" |
|
||||
grep Prefix: | wc -l` -ge $2
|
||||
test `../ltl2tgba -C -e'SE05(repeated)' -l "!($1)" |
|
||||
test `../ltl2tgba -C -e'SE05(repeated)' -taa "!($1)" |
|
||||
grep Prefix: | wc -l` -ge $2
|
||||
}
|
||||
|
||||
|
|
@ -94,5 +94,5 @@ expect_ce 'Fa & Xb & GFc & Gd' 1
|
|||
expect_ce 'Fa & Xa & GFc & Gc' 2
|
||||
expect_ce 'Fc & X(a | Xb) & GF(a | Xb) & Gc' 1
|
||||
expect_ce '!((FF a) <=> (F x))' 3
|
||||
expect_no 'Xa && (!a U b) && !b && X!b' 4
|
||||
expect_no '(a U !b) && Gb' 3
|
||||
expect_no 'Xa && (!a U b) && !b && X!b' 2
|
||||
expect_no '(a U !b) && Gb' 2
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@
|
|||
#include "ltlvisit/apcollect.hh"
|
||||
#include "ltlast/allnodes.hh"
|
||||
#include "ltlparse/public.hh"
|
||||
#include "tgbaalgos/ltl2tgba_lacim.hh"
|
||||
#include "tgbaalgos/ltl2tgba_fm.hh"
|
||||
#include "tgbaalgos/ltl2taa.hh"
|
||||
#include "tgba/bddprint.hh"
|
||||
|
|
@ -142,8 +141,6 @@ syntax(char* prog)
|
|||
<< "Translation algorithm:" << std::endl
|
||||
<< " -f use Couvreur's FM algorithm for LTL"
|
||||
<< " (default)" << std::endl
|
||||
<< " -l use Couvreur's LaCIM algorithm for LTL "
|
||||
<< std::endl
|
||||
<< " -taa use Tauriainen's TAA-based algorithm for LTL"
|
||||
<< std::endl
|
||||
<< " -u use Compositional translation"
|
||||
|
|
@ -165,19 +162,6 @@ syntax(char* prog)
|
|||
<< "(implies -f)" << std::endl
|
||||
<< std::endl
|
||||
|
||||
<< "Options for Couvreur's LaCIM algorithm (-l):"
|
||||
<< std::endl
|
||||
<< " -a display the acceptance_conditions BDD, not the "
|
||||
<< "reachability graph"
|
||||
<< std::endl
|
||||
<< " -A same as -a, but as a set" << std::endl
|
||||
<< " -r display the relation BDD, not the reachability graph"
|
||||
<< std::endl
|
||||
<< " -R same as -r, but as a set" << std::endl
|
||||
<< " -R3b symbolically prune unaccepting SCC from BDD relation"
|
||||
<< std::endl
|
||||
<< std::endl
|
||||
|
||||
<< "Options for Tauriainen's TAA-based algorithm (-taa):"
|
||||
<< std::endl
|
||||
<< " -c enable language containment checks (implies -taa)"
|
||||
|
|
@ -351,7 +335,7 @@ main(int argc, char** argv)
|
|||
bool utf8_opt = false;
|
||||
enum { NoDegen, DegenTBA, DegenSBA } degeneralize_opt = NoDegen;
|
||||
enum { TransitionLabeled, StateLabeled } labeling_opt = TransitionLabeled;
|
||||
enum { TransFM, TransLaCIM, TransTAA, TransCompo } translation = TransFM;
|
||||
enum { TransFM, TransTAA, TransCompo } translation = TransFM;
|
||||
bool fm_red = false;
|
||||
bool fm_exprop_opt = false;
|
||||
bool fm_symb_merge_opt = true;
|
||||
|
|
@ -377,7 +361,6 @@ main(int argc, char** argv)
|
|||
false, false, false);
|
||||
bool simpcache_stats = false;
|
||||
bool scc_filter_all = false;
|
||||
bool symbolic_scc_pruning = false;
|
||||
bool display_reduced_form = false;
|
||||
bool post_branching = false;
|
||||
bool fair_loop_approx = false;
|
||||
|
|
@ -443,14 +426,7 @@ main(int argc, char** argv)
|
|||
utf8_opt = true;
|
||||
spot::enable_utf8();
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-a"))
|
||||
{
|
||||
output = 2;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-A"))
|
||||
{
|
||||
output = 4;
|
||||
}
|
||||
|
||||
else if (!strcmp(argv[formula_index], "-b"))
|
||||
{
|
||||
output = 7;
|
||||
|
|
@ -613,10 +589,6 @@ main(int argc, char** argv)
|
|||
{
|
||||
output = 16;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-l"))
|
||||
{
|
||||
translation = TransLaCIM;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-L"))
|
||||
{
|
||||
fair_loop_approx = true;
|
||||
|
|
@ -668,10 +640,6 @@ main(int argc, char** argv)
|
|||
tm.stop("reading -P's argument");
|
||||
system_aut = s;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-r"))
|
||||
{
|
||||
output = 1;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-r1"))
|
||||
{
|
||||
simpltl = true;
|
||||
|
|
@ -714,10 +682,6 @@ main(int argc, char** argv)
|
|||
redopt.containment_checks = true;
|
||||
redopt.containment_checks_stronger = true;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-R"))
|
||||
{
|
||||
output = 3;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-R1q")
|
||||
|| !strcmp(argv[formula_index], "-R1t")
|
||||
|| !strcmp(argv[formula_index], "-R2q")
|
||||
|
|
@ -740,10 +704,6 @@ main(int argc, char** argv)
|
|||
scc_filter = true;
|
||||
scc_filter_all = true;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-R3b"))
|
||||
{
|
||||
symbolic_scc_pruning = true;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-rd"))
|
||||
{
|
||||
display_reduced_form = true;
|
||||
|
|
@ -1021,7 +981,6 @@ main(int argc, char** argv)
|
|||
switch (translation)
|
||||
{
|
||||
case TransFM:
|
||||
case TransLaCIM:
|
||||
case TransTAA:
|
||||
case TransCompo:
|
||||
{
|
||||
|
|
@ -1037,7 +996,6 @@ main(int argc, char** argv)
|
|||
|
||||
if (f || from_file)
|
||||
{
|
||||
spot::tgba_bdd_concrete* concrete = 0;
|
||||
const spot::tgba* to_free = 0;
|
||||
const spot::tgba* to_free2 = 0;
|
||||
spot::tgba* a = 0;
|
||||
|
|
@ -1212,9 +1170,6 @@ main(int argc, char** argv)
|
|||
case TransTAA:
|
||||
a = spot::ltl_to_taa(f, dict, containment);
|
||||
break;
|
||||
case TransLaCIM:
|
||||
a = concrete = spot::ltl_to_tgba_lacim(f, dict);
|
||||
break;
|
||||
}
|
||||
tm.stop("translating formula");
|
||||
to_free = a;
|
||||
|
|
@ -1240,35 +1195,7 @@ main(int argc, char** argv)
|
|||
}
|
||||
|
||||
if (opt_monitor && !scc_filter)
|
||||
{
|
||||
if (dynamic_cast<const spot::tgba_bdd_concrete*>(a))
|
||||
symbolic_scc_pruning = true;
|
||||
else
|
||||
scc_filter = true;
|
||||
}
|
||||
|
||||
if (symbolic_scc_pruning)
|
||||
{
|
||||
const spot::tgba_bdd_concrete* bc =
|
||||
dynamic_cast<const spot::tgba_bdd_concrete*>(a);
|
||||
if (!bc)
|
||||
{
|
||||
std::cerr << ("Error: Automaton is not symbolic: cannot "
|
||||
"prune SCCs symbolically.\n"
|
||||
" Try -R3 instead of -R3b, or use "
|
||||
"another translation.")
|
||||
<< std::endl;
|
||||
exit(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
tm.start("reducing A_f w/ symbolic SCC pruning");
|
||||
if (bc)
|
||||
const_cast<spot::tgba_bdd_concrete*>(bc)
|
||||
->delete_unaccepting_scc();
|
||||
tm.stop("reducing A_f w/ symbolic SCC pruning");
|
||||
}
|
||||
}
|
||||
scc_filter = true;
|
||||
|
||||
// Remove dead SCCs and useless acceptance conditions before
|
||||
// degeneralization.
|
||||
|
|
@ -1701,28 +1628,6 @@ main(int argc, char** argv)
|
|||
case 0:
|
||||
spot::dotty_reachable(std::cout, a, assume_sba);
|
||||
break;
|
||||
case 1:
|
||||
if (concrete)
|
||||
spot::bdd_print_dot(std::cout, concrete->get_dict(),
|
||||
concrete->get_core_data().relation);
|
||||
break;
|
||||
case 2:
|
||||
if (concrete)
|
||||
spot::bdd_print_dot(std::cout, concrete->get_dict(),
|
||||
concrete->
|
||||
get_core_data().acceptance_conditions);
|
||||
break;
|
||||
case 3:
|
||||
if (concrete)
|
||||
spot::bdd_print_set(std::cout, concrete->get_dict(),
|
||||
concrete->get_core_data().relation);
|
||||
break;
|
||||
case 4:
|
||||
if (concrete)
|
||||
spot::bdd_print_set(std::cout, concrete->get_dict(),
|
||||
concrete->
|
||||
get_core_data().acceptance_conditions);
|
||||
break;
|
||||
case 5:
|
||||
a->get_dict()->dump(std::cout);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (C) 2009, 2010, 2011, 2012, 2013 Laboratoire de Recherche et
|
||||
# Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Laboratoire de Recherche et
|
||||
# Développement de l'Epita (LRDE).
|
||||
# Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
# département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
|
|
@ -41,9 +41,9 @@ check_psl ()
|
|||
check_ltl ()
|
||||
{
|
||||
check_psl "$@"
|
||||
# Make cross products with LaCIM
|
||||
run 0 ../ltl2tgba -l -R3b -b "$1" > out.tgba
|
||||
run 0 ../ltl2tgba -l -R3b -Pout.tgba -E "!($1)"
|
||||
# Make cross products with TAA
|
||||
run 0 ../ltl2tgba -taa -R3 -b "$1" > out.tgba
|
||||
run 0 ../ltl2tgba -taa -R3 -Pout.tgba -E "!($1)"
|
||||
}
|
||||
|
||||
check_ltl a
|
||||
|
|
|
|||
|
|
@ -25,15 +25,12 @@ ltl2tgba=../ltl2tgba
|
|||
|
||||
../../bin/randltl -n 100 p1 p2 p3 p4 p5 p6 --tree-size 5..15 |
|
||||
../../bin/ltlcross --products=2 \
|
||||
"$ltl2tgba -t -l %f > %T" \
|
||||
"$ltl2tgba -t -l -R3b -r4 %f > %T" \
|
||||
"$ltl2tgba -t -f %f > %T" \
|
||||
"$ltl2tgba -t -f -y %f > %T" \
|
||||
"$ltl2tgba -t -f -r4 %f > %T" \
|
||||
"$ltl2tgba -t -f -R3 %f > %T" \
|
||||
"$ltl2tgba -t -f -R3 -Rm %f > %T" \
|
||||
"$ltl2tgba -t -f -R3 -RM %f > %T" \
|
||||
"$ltl2tgba -t -l -R3b -Rm %f > %T" \
|
||||
"$ltl2tgba -t -f -D %f > %T" \
|
||||
"$ltl2tgba -t -f -D %f > %T" \
|
||||
"$ltl2tgba -t -f -r4 -R3 -RDS %f > %T" \
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2008, 2009, 2012 Laboratoire de Recherche et
|
||||
// Copyright (C) 2008, 2009, 2012, 2014 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2003, 2004 Laboratoire d'Informatique de
|
||||
// Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC),
|
||||
|
|
@ -25,9 +25,8 @@
|
|||
#include <cstdlib>
|
||||
#include "ltlast/allnodes.hh"
|
||||
#include "ltlparse/public.hh"
|
||||
#include "tgbaalgos/ltl2tgba_lacim.hh"
|
||||
#include "tgba/tgbaproduct.hh"
|
||||
#include "tgba/tgbabddconcreteproduct.hh"
|
||||
#include "tgbaalgos/ltl2tgba_fm.hh"
|
||||
#include "tgbaalgos/dotty.hh"
|
||||
|
||||
void
|
||||
|
|
@ -61,16 +60,11 @@ main(int argc, char** argv)
|
|||
|
||||
spot::bdd_dict* dict = new spot::bdd_dict();
|
||||
{
|
||||
spot::tgba_bdd_concrete* a1 = spot::ltl_to_tgba_lacim(f1, dict);
|
||||
spot::tgba_bdd_concrete* a2 = spot::ltl_to_tgba_lacim(f2, dict);
|
||||
auto a1 = spot::ltl_to_tgba_fm(f1, dict);
|
||||
auto a2 = spot::ltl_to_tgba_fm(f2, dict);
|
||||
f1->destroy();
|
||||
f2->destroy();
|
||||
|
||||
#ifdef BDD_CONCRETE_PRODUCT
|
||||
spot::tgba_bdd_concrete* p = spot::product(a1, a2);
|
||||
#else
|
||||
spot::tgba_product* p = new spot::tgba_product(a1, a2);
|
||||
#endif
|
||||
auto p = new spot::tgba_product(a1, a2);
|
||||
spot::dotty_reachable(std::cout, p);
|
||||
delete p;
|
||||
delete a1;
|
||||
|
|
|
|||
|
|
@ -1,78 +0,0 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2008, 2009, 2012, 2014 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// 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 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/>.
|
||||
|
||||
#include <iostream>
|
||||
#include <cassert>
|
||||
#include <cstdlib>
|
||||
#include "ltlast/allnodes.hh"
|
||||
#include "ltlparse/public.hh"
|
||||
#include "tgbaalgos/ltl2tgba_lacim.hh"
|
||||
#include "tgba/tgbaproduct.hh"
|
||||
#include "tgba/tgbabddconcreteproduct.hh"
|
||||
#include "tgbaparse/public.hh"
|
||||
#include "tgbaalgos/save.hh"
|
||||
|
||||
void
|
||||
syntax(char* prog)
|
||||
{
|
||||
std::cerr << prog << " formula file" << std::endl;
|
||||
exit(2);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char** argv)
|
||||
{
|
||||
int exit_code = 0;
|
||||
|
||||
if (argc != 3)
|
||||
syntax(argv[0]);
|
||||
|
||||
spot::bdd_dict* dict = new spot::bdd_dict();
|
||||
|
||||
spot::ltl::environment& env(spot::ltl::default_environment::instance());
|
||||
|
||||
spot::ltl::parse_error_list pel1;
|
||||
const spot::ltl::formula* f1 = spot::ltl::parse(argv[1], pel1, env);
|
||||
if (spot::ltl::format_parse_errors(std::cerr, argv[1], pel1))
|
||||
return 2;
|
||||
|
||||
spot::tgba_parse_error_list pel2;
|
||||
spot::tgba* a2 = spot::tgba_parse(argv[2], pel2, dict, env);
|
||||
if (spot::format_tgba_parse_errors(std::cerr, argv[2], pel2))
|
||||
return 2;
|
||||
|
||||
{
|
||||
spot::tgba_bdd_concrete* a1 = spot::ltl_to_tgba_lacim(f1, dict);
|
||||
f1->destroy();
|
||||
spot::tgba_product p(a1, a2);
|
||||
spot::tgba_save_reachable(std::cout, &p);
|
||||
delete a1;
|
||||
}
|
||||
|
||||
assert(spot::ltl::unop::instance_count() == 0);
|
||||
assert(spot::ltl::binop::instance_count() == 0);
|
||||
assert(spot::ltl::multop::instance_count() == 0);
|
||||
delete a2;
|
||||
assert(spot::ltl::atomic_prop::instance_count() == 0);
|
||||
delete dict;
|
||||
return exit_code;
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2009 Laboratoire de Recherche et Développement
|
||||
# de l'Epita (LRDE).
|
||||
# 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 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/>.
|
||||
|
||||
|
||||
. ./defs
|
||||
|
||||
set -e
|
||||
|
||||
# We don't check the output, but just running this might be enough to
|
||||
# trigger assertions or I/O errors.
|
||||
|
||||
cat >input1 <<EOF
|
||||
acc = p1;
|
||||
s1, s3, "a",;
|
||||
s1, s2, "b", p1;
|
||||
s2, s1, "!a",;
|
||||
s2, s3, "c",;
|
||||
EOF
|
||||
|
||||
run 0 ../mixprod 'F(a U b) & Xa' input1 >stdout
|
||||
cat stdout
|
||||
|
||||
# Make sure we can read the produced output
|
||||
|
||||
run 0 ../mixprod 'G!a' stdout
|
||||
|
||||
rm input1 stdout
|
||||
|
|
@ -32,30 +32,6 @@ need_lbtt
|
|||
set -e
|
||||
|
||||
cat > config <<EOF
|
||||
Algorithm
|
||||
{
|
||||
Name = "Spot (Couvreur -- LaCIM)"
|
||||
Path = "${LBTT_TRANSLATE}"
|
||||
Parameters = "--spot '../ltl2tgba -l -F -t'"
|
||||
Enabled = yes
|
||||
}
|
||||
|
||||
Algorithm
|
||||
{
|
||||
Name = "Spot (Couvreur -- LaCIM), reduction of formula"
|
||||
Path = "${LBTT_TRANSLATE}"
|
||||
Parameters = "--spot '../ltl2tgba -l -F -t -r4'"
|
||||
Enabled = yes
|
||||
}
|
||||
|
||||
Algorithm
|
||||
{
|
||||
Name = "Spot (Couvreur -- LaCIM), degeneralized"
|
||||
Path = "${LBTT_TRANSLATE}"
|
||||
Parameters = "--spot '../ltl2tgba -l -F -t -D'"
|
||||
Enabled = no
|
||||
}
|
||||
|
||||
Algorithm
|
||||
{
|
||||
Name = "Spot (Couvreur -- LaCIM), fake"
|
||||
|
|
@ -136,14 +112,6 @@ Algorithm
|
|||
Enabled = yes
|
||||
}
|
||||
|
||||
Algorithm
|
||||
{
|
||||
Name = "Spot (Couvreur -- LaCIM), +pre +WDBA"
|
||||
Path = "${LBTT_TRANSLATE}"
|
||||
Parameters = "--spot '../ltl2tgba -r4 -R3b -Rm -F -l -t'"
|
||||
Enabled = yes
|
||||
}
|
||||
|
||||
Algorithm
|
||||
{
|
||||
Name = "Spot (Couvreur -- FM), without symb_merge"
|
||||
|
|
@ -201,15 +169,6 @@ Algorithm
|
|||
Enabled = yes
|
||||
}
|
||||
|
||||
|
||||
Algorithm
|
||||
{
|
||||
Name = "Spot (Couvreur -- LaCim), simulated"
|
||||
Path = "${LBTT_TRANSLATE}"
|
||||
Parameters = "--spot '../ltl2tgba -F -f -l -t -RDS -r4 -R3'"
|
||||
Enabled = yes
|
||||
}
|
||||
|
||||
Algorithm
|
||||
{
|
||||
Name = "Spot (Couvreur -- TAA), simulated"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2010 Laboratoire de Recherche et Développement
|
||||
# Copyright (C) 2010, 2014 Laboratoire de Recherche et Développement
|
||||
# de l'Epita (LRDE).
|
||||
#
|
||||
# This file is part of Spot, a model checking library.
|
||||
|
|
@ -114,7 +114,7 @@ while read f; do
|
|||
# to detect any crash. Do that only for the first few formula, because
|
||||
# it takes a long time.
|
||||
if test $i -lt 5; then
|
||||
run 0 ../ltl2tgba -l -R3b -DS -Rm "!($f)" >/dev/null
|
||||
run 0 ../ltl2tgba -taa -DS -Rm "!($f)" >/dev/null
|
||||
i=`expr $i + 1`
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (C) 2012 Laboratoire de Recherche et Développement
|
||||
# Copyright (C) 2012, 2014 Laboratoire de Recherche et Développement
|
||||
# de l'Epita (LRDE).
|
||||
#
|
||||
# This file is part of Spot, a model checking library.
|
||||
|
|
@ -37,11 +37,3 @@ run 0 ../ltl2tgba -Rm -kt 'Fa | XGd' > out2
|
|||
cmp out expected
|
||||
cmp out2 expected
|
||||
|
||||
|
||||
# This non-obligation formula used to be minimized by mistake when
|
||||
# translated with lacim.
|
||||
x=`../ltl2tgba -l -Rm 'F(Fa R (Gb & !a))' |
|
||||
grep -v -- '->' |
|
||||
sed -n 's/.*label="\(..*\)".*/\1/p' |
|
||||
tr -d '0-9\n'`
|
||||
test -n "$x"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue