* iface/gspn/eesrg.cc (connected_component_eesrg::has_state):
Free filtered states. (emptiness_check_shy_eesrg): New class. (emptiness_check_eesrg_shy): New function. * iface/gspn/eesrg.hh (emptiness_check_eesrg_shy): New function. * iface/gspn/ltlgspn.cc (main) [EESRG]: Handle -e3, -e4, and -e5. * * src/tgbaalgos/gtec/gtec.hh, src/tgbaalgos/gtec/gtec.cc (emptiness_check_shy::check): Move arc, num, succ_queue, and todo as attributes. (emptiness_check_shy::find_state): New virtual function.
This commit is contained in:
parent
1e360ec689
commit
be4f4e3370
6 changed files with 189 additions and 42 deletions
|
|
@ -53,7 +53,15 @@ syntax(char* prog)
|
|||
<< " (instead of just checking for emptiness)" << std::endl
|
||||
<< std::endl
|
||||
<< " -e use Couvreur's emptiness-check (default)" << std::endl
|
||||
<< " -e2 use Couvreur's emptiness-check variant" << std::endl
|
||||
<< " -e2 use Couvreur's emptiness-check's shy variant" << std::endl
|
||||
#ifdef EESRG
|
||||
<< " -e3 use semi-d. incl. Couvreur's emptiness-check"
|
||||
<< std::endl
|
||||
<< " -e4 use semi-d. incl. Couvreur's emptiness-check's shy variant"
|
||||
<< std::endl
|
||||
<< " -e5 use d. incl. Couvreur's emptiness-check's shy variant"
|
||||
<< std::endl
|
||||
#endif
|
||||
<< " -m degeneralize and perform a magic-search" << std::endl
|
||||
<< std::endl
|
||||
<< " -l use Couvreur's LaCIM algorithm for translation (default)"
|
||||
|
|
@ -68,7 +76,8 @@ main(int argc, char **argv)
|
|||
try
|
||||
{
|
||||
int formula_index = 1;
|
||||
enum { Couvreur, Couvreur2, Magic } check = Couvreur;
|
||||
enum { Couvreur, Couvreur2, Couvreur3,
|
||||
Couvreur4, Couvreur5, Magic } check = Couvreur;
|
||||
enum { Lacim, Fm } trans = Lacim;
|
||||
bool compute_counter_example = false;
|
||||
bool proj = true;
|
||||
|
|
@ -89,6 +98,18 @@ main(int argc, char **argv)
|
|||
{
|
||||
check = Couvreur2;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-e3"))
|
||||
{
|
||||
check = Couvreur3;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-e4"))
|
||||
{
|
||||
check = Couvreur4;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-e5"))
|
||||
{
|
||||
check = Couvreur5;
|
||||
}
|
||||
else if (!strcmp(argv[formula_index], "-m"))
|
||||
{
|
||||
check = Magic;
|
||||
|
|
@ -169,20 +190,34 @@ main(int argc, char **argv)
|
|||
{
|
||||
case Couvreur:
|
||||
case Couvreur2:
|
||||
case Couvreur3:
|
||||
case Couvreur4:
|
||||
case Couvreur5:
|
||||
{
|
||||
spot::emptiness_check* ec;
|
||||
|
||||
#ifndef EESRG
|
||||
if (check == Couvreur)
|
||||
ec = new spot::emptiness_check(prod);
|
||||
else
|
||||
ec = new spot::emptiness_check_shy(prod);
|
||||
#else
|
||||
if (check == Couvreur)
|
||||
ec = spot::emptiness_check_eesrg_semi(prod);
|
||||
else
|
||||
ec = spot::emptiness_check_eesrg_shy_semi(prod);
|
||||
switch (check)
|
||||
{
|
||||
case Couvreur:
|
||||
ec = new spot::emptiness_check(prod);
|
||||
break;
|
||||
case Couvreur2:
|
||||
ec = new spot::emptiness_check_shy(prod);
|
||||
break;
|
||||
#ifdef EESRG
|
||||
case Couvreur3:
|
||||
ec = spot::emptiness_check_eesrg_semi(prod);
|
||||
break;
|
||||
case Couvreur4:
|
||||
ec = spot::emptiness_check_eesrg_shy_semi(prod);
|
||||
break;
|
||||
case Couvreur5:
|
||||
ec = spot::emptiness_check_eesrg_shy(prod);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
|
||||
bool res = ec->check();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue