* 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:
parent
0f15d28fe8
commit
6cce60bed7
7 changed files with 332 additions and 1 deletions
|
|
@ -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)" |
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue