* src/tgbaalgos/gv04.cc, src/tgbaalgos/gv04.hh: New files, partly

based on Thomas Martinez's src/tgbaalgos/tarjan_on_fly.cc and
src/tgbaalgos/tarjan_on_fly.hh former implementation.
* src/tgbaalgos/Makefile.am (libtgbaalgos_la_SOURCES,
tgbaalgos_HEADERS): Add them.
* src/tgbatest/ltl2tgba.cc, src/tgbatest/randtgba.cc: Bind the
new algorithm.
* src/tgbatest/emptchk.test: Test it.
This commit is contained in:
Alexandre Duret-Lutz 2004-11-22 16:57:31 +00:00
parent 0f15d28fe8
commit 6cce60bed7
7 changed files with 332 additions and 1 deletions

View file

@ -50,6 +50,7 @@ expect_ce()
run 0 ./ltl2tgba -ebsh_se05_search "$1"
run 0 ./ltl2tgba -ebsh_se05_search -f "$1"
run 0 ./ltl2tgba -etau03_opt_search -f "$1"
run 0 ./ltl2tgba -egv04 -f "$1"
# Expect multiple accepting runs
test `./ltl2tgba -emagic_search_repeated "$1" | grep Prefix: | wc -l` -ge $2
test `./ltl2tgba -ese05_search_repeated "$1" | grep Prefix: | wc -l` -ge $2
@ -74,6 +75,7 @@ expect_no()
run 0 ./ltl2tgba -Ebsh_se05_search "$1"
run 0 ./ltl2tgba -Ebsh_se05_search -f "$1"
run 0 ./ltl2tgba -Etau03_opt_search -f "$1"
run 0 ./ltl2tgba -Egv04 -f "$1"
test `./ltl2tgba -emagic_search_repeated "!($1)" |
grep Prefix: | wc -l` -ge $2
test `./ltl2tgba -ese05_search_repeated "!($1)" |

View file

@ -35,6 +35,7 @@
#include "tgbaalgos/dotty.hh"
#include "tgbaalgos/lbtt.hh"
#include "tgba/tgbatba.hh"
#include "tgbaalgos/gv04.hh"
#include "tgbaalgos/magic.hh"
#include "tgbaalgos/se05.hh"
#include "tgbaalgos/tau03.hh"
@ -150,7 +151,7 @@ main(int argc, char** argv)
int formula_index = 0;
std::string echeck_algo;
enum { None, Couvreur, Couvreur2, MagicSearch, Se05Search,
Tau03Search, Tau03OptSearch } echeck = None;
Tau03Search, Tau03OptSearch, Gv04 } echeck = None;
enum { NoneDup, BFS, DFS } dupexp = NoneDup;
bool search_many = false;
bool bit_state_hashing = false;
@ -421,6 +422,11 @@ main(int argc, char** argv)
{
echeck = Tau03OptSearch;
}
else if (echeck_algo == "gv04")
{
echeck = Gv04;
degeneralize_maybe = true;
}
else
{
std::cerr << "unknown emptiness-check: " << echeck_algo << std::endl;
@ -679,6 +685,9 @@ main(int argc, char** argv)
case Tau03OptSearch:
ec = spot::explicit_tau03_opt_search(a);
break;
case Gv04:
ec = spot::explicit_gv04_check(a);
break;
}
if (ec)

View file

@ -36,6 +36,7 @@
#include "tgbaalgos/emptiness.hh"
#include "tgbaalgos/emptiness_stats.hh"
#include "tgbaalgos/gtec/gtec.hh"
#include "tgbaalgos/gv04.hh"
#include "tgbaalgos/magic.hh"
#include "tgbaalgos/se05.hh"
#include "tgbaalgos/tau03.hh"
@ -337,6 +338,10 @@ main(int argc, char** argv)
ec_obj.push_back(spot::bit_state_hashing_se05_search(a, 4096));
ec_name.push_back("bit_state_hashing_se05_search");
ec_safe.push_back(false);
ec_obj.push_back(spot::explicit_gv04_check(a));
ec_name.push_back("explicit_gv04");
ec_safe.push_back(true);
}
if (opt_n_acc >= 1)