Commit cdb4e361 authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz
Browse files

* iface/dve2/dve2check.cc: Add option -W and simplify formulae.

parent 1719287b
2011-07-26 Alexandre Duret-Lutz <adl@lrde.epita.fr>
* iface/dve2/dve2check.cc: Add option -W and simplify formulae.
2011-07-26 Alexandre Duret-Lutz <adl@lrde.epita.fr> 2011-07-26 Alexandre Duret-Lutz <adl@lrde.epita.fr>
-e means we expect an accepting run. -e means we expect an accepting run.
......
...@@ -23,8 +23,10 @@ ...@@ -23,8 +23,10 @@
#include "ltlenv/defaultenv.hh" #include "ltlenv/defaultenv.hh"
#include "ltlast/allnodes.hh" #include "ltlast/allnodes.hh"
#include "ltlparse/public.hh" #include "ltlparse/public.hh"
#include "ltlvisit/reduce.hh"
#include "tgbaalgos/ltl2tgba_fm.hh" #include "tgbaalgos/ltl2tgba_fm.hh"
#include "tgbaalgos/sccfilter.hh" #include "tgbaalgos/sccfilter.hh"
#include "tgbaalgos/minimize.hh"
#include "tgbaalgos/emptiness.hh" #include "tgbaalgos/emptiness.hh"
#include "tgbaalgos/reducerun.hh" #include "tgbaalgos/reducerun.hh"
#include "tgba/tgbaproduct.hh" #include "tgba/tgbaproduct.hh"
...@@ -60,6 +62,8 @@ syntax(char* prog) ...@@ -60,6 +62,8 @@ syntax(char* prog)
<< std::endl << std::endl
<< " -T time the different phases of the execution" << " -T time the different phases of the execution"
<< std::endl << std::endl
<< " -W enable WDBA minimization"
<< std::endl
<< " -z compress states to handle larger models" << " -z compress states to handle larger models"
<< std::endl << std::endl
<< " -Z compress states (faster) " << " -Z compress states (faster) "
...@@ -80,6 +84,7 @@ main(int argc, char **argv) ...@@ -80,6 +84,7 @@ main(int argc, char **argv)
output = EmptinessCheck; output = EmptinessCheck;
bool accepting_run = false; bool accepting_run = false;
bool expect_counter_example = false; bool expect_counter_example = false;
bool wdba = false;
char *dead = 0; char *dead = 0;
int compress_states = 0; int compress_states = 0;
...@@ -130,6 +135,9 @@ main(int argc, char **argv) ...@@ -130,6 +135,9 @@ main(int argc, char **argv)
case 'T': case 'T':
use_timer = true; use_timer = true;
break; break;
case 'W':
wdba = true;
break;
case 'z': case 'z':
compress_states = 1; compress_states = 1;
break; break;
...@@ -159,7 +167,7 @@ main(int argc, char **argv) ...@@ -159,7 +167,7 @@ main(int argc, char **argv)
spot::ltl::atomic_prop_set ap; spot::ltl::atomic_prop_set ap;
spot::bdd_dict* dict = new spot::bdd_dict(); spot::bdd_dict* dict = new spot::bdd_dict();
spot::kripke* model = 0; spot::kripke* model = 0;
spot::tgba* prop = 0; const spot::tgba* prop = 0;
spot::tgba* product = 0; spot::tgba* product = 0;
spot::emptiness_check_instantiator* echeck_inst = 0; spot::emptiness_check_instantiator* echeck_inst = 0;
int exit_code = 0; int exit_code = 0;
...@@ -204,6 +212,14 @@ main(int argc, char **argv) ...@@ -204,6 +212,14 @@ main(int argc, char **argv)
if (exit_code) if (exit_code)
goto safe_exit; goto safe_exit;
tm.start("reducing formula");
{
spot::ltl::formula* r = spot::ltl::reduce(f);
f->destroy();
f = r;
}
tm.stop("reducing formula");
atomic_prop_collect(f, &ap); atomic_prop_collect(f, &ap);
...@@ -241,6 +257,22 @@ main(int argc, char **argv) ...@@ -241,6 +257,22 @@ main(int argc, char **argv)
} }
tm.stop("reducing A_f w/ SCC"); tm.stop("reducing A_f w/ SCC");
if (wdba)
{
tm.start("WDBA minimization");
const spot::tgba* minimized = 0;
minimized = minimize_obligation(prop, f);
if (minimized != prop)
{
delete prop;
prop = minimized;
}
tm.stop("WDBA minimization");
}
if (output == DotFormula) if (output == DotFormula)
{ {
tm.start("dotty output"); tm.start("dotty output");
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment