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:
Alexandre Duret-Lutz 2014-07-08 16:22:43 +02:00
parent 26b932828b
commit 116fe8654f
43 changed files with 111 additions and 2291 deletions

View file

@ -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 \

View file

@ -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'

View file

@ -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

View file

@ -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'

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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" \

View file

@ -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;

View file

@ -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;
}

View file

@ -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

View file

@ -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"

View file

@ -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

View file

@ -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"