Add an option to use WDBA only if it reduces the size of the automaton.

* src/tgba/tgbaexplicit.hh (num_states): New method.
* src/tgbaalgos/minimize.hh, src/tgbaalgos/minimize.cc
(minimize_obligation): Add a reject_bigger option.
* src/tgbatest/ltl2tgba.cc (-RM): New option.
* src/tgbatest/spotlbtt.test: Test -RM.
* bench/ltl2tgba/algorithms: Include -RM in addition to -Rm, and
replace -RDS by -RIS.
* NEWS: Mention this.
This commit is contained in:
Alexandre Duret-Lutz 2012-08-28 10:25:02 +02:00
parent f7af4e65f6
commit 60ec3acea0
7 changed files with 77 additions and 12 deletions

View file

@ -210,6 +210,9 @@ syntax(char* prog)
<< std::endl
<< " -Rm attempt to WDBA-minimize the automaton" << std::endl
<< std::endl
<< " -RM attempt to WDBA-minimize the automaton unless the "
<< "result is bigger" << std::endl
<< std::endl
<< "Automaton conversion:" << std::endl
<< " -M convert into a deterministic minimal monitor "
@ -341,6 +344,7 @@ main(int argc, char** argv)
bool graph_run_tgba_opt = false;
bool opt_reduce = false;
bool opt_minimize = false;
bool reject_bigger = false;
bool opt_bisim_ta = false;
bool opt_monitor = false;
bool containment = false;
@ -682,6 +686,11 @@ main(int argc, char** argv)
{
opt_minimize = true;
}
else if (!strcmp(argv[formula_index], "-RM"))
{
opt_minimize = true;
reject_bigger = true;
}
else if (!strcmp(argv[formula_index], "-RT"))
{
opt_bisim_ta = true;
@ -1025,7 +1034,7 @@ main(int argc, char** argv)
if (opt_minimize)
{
tm.start("obligation minimization");
minimized = minimize_obligation(a, f);
minimized = minimize_obligation(a, f, 0, reject_bigger);
tm.stop("obligation minimization");
if (minimized == 0)