* src/tgbaalgos/magic.hh: Fix a comment and remove se05 interface.

* src/tgbaalgos/magic.cc: Fix a comment.
* src/tgbaalgos/se05.hh: New file.
* src/tgbaalgos/se05.cc: Fix a comment.
* src/tgbaalgos/tau03.hh: New file.
* src/tgbaalgos/tau03.cc: New file.
* src/tgbaalgos/Makefile.am: Add it.
* src/tgbatest/ltl2tgba.cc: Add tau03 new emptiness check.
* src/tgbatest/randtgba.cc: Add tau03 new emptiness check.
* src/tgbatest/emptchkr: Fix a comment.
* src/tgbatest/tba_samples_from_spin/explicit1_1.tba,
src/tgbatest/tba_samples_from_spin/explicit1_2.tba,
src/tgbatest/tba_samples_from_spin/explicit1_3.tba,
src/tgbatest/tba_samples_from_spin/explicit1_4.tba,
src/tgbatest/tba_samples_from_spin/explicit1_5.tba,
src/tgbatest/tba_samples_from_spin/explicit1_6.tba,
src/tgbatest/tba_samples_from_spin/explicit1_7.tba,
src/tgbatest/tba_samples_from_spin/explicit1_8.tba,
src/tgbatest/tba_samples_from_spin/explicit1_9.tba,
src/tgbatest/tba_samples_from_spin/explicit2_1.tba,
src/tgbatest/tba_samples_from_spin/explicit2_2.tba,
src/tgbatest/tba_samples_from_spin/explicit2_3.tba,
src/tgbatest/tba_samples_from_spin/explicit2_4.tba,
src/tgbatest/tba_samples_from_spin/explicit2_5.tba,
src/tgbatest/tba_samples_from_spin/explicit2_6.tba,
src/tgbatest/tba_samples_from_spin/explicit2_7.tba,
src/tgbatest/tba_samples_from_spin/explicit2_8.tba,
src/tgbatest/tba_samples_from_spin/explicit2_9.tba: New files
* src/tgbatest/tba_samples_from_spin.test : New test.
* src/tgbatest/Makefile.am: Add it.
This commit is contained in:
Denis Poitrenaud 2004-11-17 17:07:25 +00:00
parent c3e399c837
commit 9bea364e40
31 changed files with 836079 additions and 133 deletions

View file

@ -84,6 +84,7 @@ TESTS = \
emptchke.test \
dfs.test \
emptchkr.test \
tba_samples_from_spin.test \
spotlbtt.test
EXTRA_DIST = $(TESTS) ltl2baw.pl

View file

@ -36,7 +36,7 @@ run 0 ./randtgba -e 100 -s 50 -r -a 1 0.1 -d 0.02
run 0 ./randtgba -e 100 -s 100 -r -a 1 0.1 -d 0.04
run 0 ./randtgba -e 100 -s 150 -r -a 1 0.1 -d 0.08
# Two acceptance conditions
# Four acceptance conditions
run 0 ./randtgba -e 100 -s 200 -r -a 4 0.1 -d 0.01
run 0 ./randtgba -e 100 -s 250 -r -a 4 0.1 -d 0.02
run 0 ./randtgba -e 100 -s 300 -r -a 4 0.1 -d 0.04

View file

@ -36,6 +36,8 @@
#include "tgbaalgos/lbtt.hh"
#include "tgba/tgbatba.hh"
#include "tgbaalgos/magic.hh"
#include "tgbaalgos/se05.hh"
#include "tgbaalgos/tau03.hh"
#include "tgbaalgos/gtec/gtec.hh"
#include "tgbaalgos/gtec/ce.hh"
#include "tgbaparse/public.hh"
@ -125,7 +127,8 @@ syntax(char* prog)
<< " bsh_se05_search[(heap size in MB - 10MB by default)]"
<< std::endl
<< " bsh_se05_search_repeated[(heap size in MB - 10MB"
<< " by default)]" << std::endl;
<< " by default)]" << std::endl
<< " tau03_search" << std::endl;
exit(2);
}
@ -144,9 +147,10 @@ main(int argc, char** argv)
int output = 0;
int formula_index = 0;
std::string echeck_algo;
enum { None, Couvreur, Couvreur2, MagicSearch, Se05Search } echeck = None;
enum { None, Couvreur, Couvreur2, MagicSearch, Se05Search, Tau03Search }
echeck = None;
enum { NoneDup, BFS, DFS } dupexp = NoneDup;
bool magic_many = false;
bool search_many = false;
bool bit_state_hashing = false;
int heap_size = 10*1024*1024;
bool expect_counter_example = false;
@ -368,7 +372,7 @@ main(int argc, char** argv)
{
echeck = MagicSearch;
degeneralize_maybe = true;
magic_many = true;
search_many = true;
}
else if (echeck_algo == "bsh_magic_search")
{
@ -381,7 +385,7 @@ main(int argc, char** argv)
echeck = MagicSearch;
degeneralize_maybe = true;
bit_state_hashing = true;
magic_many = true;
search_many = true;
}
else if (echeck_algo == "se05_search")
{
@ -392,7 +396,7 @@ main(int argc, char** argv)
{
echeck = Se05Search;
degeneralize_maybe = true;
magic_many = true;
search_many = true;
}
else if (echeck_algo == "bsh_se05_search")
{
@ -405,7 +409,11 @@ main(int argc, char** argv)
echeck = Se05Search;
degeneralize_maybe = true;
bit_state_hashing = true;
magic_many = true;
search_many = true;
}
else if (echeck_algo == "tau03_search")
{
echeck = Tau03Search;
}
else
{
@ -649,6 +657,19 @@ main(int argc, char** argv)
else
ec = spot::explicit_se05_search(a);
break;
case Tau03Search:
if (a->number_of_acceptance_conditions() == 0)
{
std::cout << "To apply tau03_search, the automaton must have at "
<< "least on accepting condition. Try with another "
<< "algorithm." << std::endl;
}
else
{
ec = spot::explicit_tau03_search(a);
}
break;
}
if (ec)
@ -702,7 +723,7 @@ main(int argc, char** argv)
}
delete res;
}
while (magic_many);
while (search_many);
delete ec;
}

View file

@ -34,6 +34,8 @@
#include "tgbaalgos/emptiness.hh"
#include "tgbaalgos/gtec/gtec.hh"
#include "tgbaalgos/magic.hh"
#include "tgbaalgos/se05.hh"
#include "tgbaalgos/tau03.hh"
#include "tgbaalgos/replayrun.hh"
void
@ -42,7 +44,7 @@ syntax(char* prog)
std::cerr << "Usage: "<< prog << " [OPTIONS...] PROPS..." << std::endl
<< std::endl
<< "Options:" << std::endl
<< " -a N F number of accepence conditions a propability that"
<< " -a N F number of acceptance conditions and probability that"
<< " one is true [0 0.0]" << std::endl
<< " -d F density of the graph [0.2]" << std::endl
<< " -e N compare result of all "
@ -205,6 +207,13 @@ main(int argc, char** argv)
ec_name.push_back("couvreur99_shy");
ec_safe.push_back(true);
if (opt_n_acc >= 1)
{
ec_obj.push_back(spot::explicit_tau03_search(a));
ec_name.push_back("explicit_tau03_search");
ec_safe.push_back(true);
}
if (opt_n_acc <= 1)
{
ec_obj.push_back(spot::explicit_magic_search(a));

View file

@ -0,0 +1,76 @@
#!/bin/sh
# Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
# département Systèmes Répartis Coopératifs (SRC), Université Pierre
# et Marie Curie.
#
# This file is part of Spot, a model checking library.
#
# Spot is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Spot is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Spot; see the file COPYING. If not, write to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
. ./defs
light_run()
{
expected_exitcode=$1
shift
exitcode=0
"$@" || exitcode=$?
test $exitcode = $expected_exitcode || exit 1
}
set -e
expect_ce()
{
light_run 0 ./ltl2tgba -X -e "$1"
light_run 0 ./ltl2tgba -X -ecouvreur99_shy "$1"
light_run 0 ./ltl2tgba -X -emagic_search "$1"
light_run 0 ./ltl2tgba -X -ebsh_magic_search "$1"
light_run 0 ./ltl2tgba -X -ese05_search "$1"
light_run 0 ./ltl2tgba -X -ebsh_se05_search "$1"
light_run 0 ./ltl2tgba -X -etau03_search "$1"
}
expect_no()
{
light_run 0 ./ltl2tgba -X -E "$1"
light_run 0 ./ltl2tgba -X -Ecouvreur99_shy "$1"
light_run 0 ./ltl2tgba -X -Emagic_search "$1"
light_run 0 ./ltl2tgba -X -Ebsh_magic_search "$1"
light_run 0 ./ltl2tgba -X -Ese05_search "$1"
light_run 0 ./ltl2tgba -X -Ebsh_se05_search "$1"
light_run 0 ./ltl2tgba -X -Etau03_search "$1"
}
expect_no tba_samples_from_spin/explicit1_1.tba
expect_ce tba_samples_from_spin/explicit1_2.tba
expect_no tba_samples_from_spin/explicit1_3.tba
expect_no tba_samples_from_spin/explicit1_4.tba
expect_ce tba_samples_from_spin/explicit1_5.tba
expect_no tba_samples_from_spin/explicit1_6.tba
expect_no tba_samples_from_spin/explicit1_7.tba
expect_ce tba_samples_from_spin/explicit1_8.tba
expect_ce tba_samples_from_spin/explicit1_9.tba
expect_ce tba_samples_from_spin/explicit2_1.tba
expect_ce tba_samples_from_spin/explicit2_2.tba
expect_no tba_samples_from_spin/explicit2_3.tba
expect_no tba_samples_from_spin/explicit2_4.tba
expect_ce tba_samples_from_spin/explicit2_5.tba
expect_no tba_samples_from_spin/explicit2_6.tba
expect_ce tba_samples_from_spin/explicit2_7.tba
expect_ce tba_samples_from_spin/explicit2_8.tba
expect_no tba_samples_from_spin/explicit2_9.tba

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff