* src/tgbaalgos/ltl2tgba_fm.hh (ltl_to_tgba_fm): Add argument

fair_loop_approx.
* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Implement the
fair_loop_approx optimization.
(ltl_promise_visitor, ltl_possible_fair_loop_visitor,
possible_fair_loop_checker): New classes.
* src/tgbatest/ltl2tgba.cc: Add the -L option.
* src/tgbatest/spotlbtt.test: Exercise fair_loop_approx.
* wrap/python/cgi/ltl2tgba.in: Make it an option.
This commit is contained in:
Alexandre Duret-Lutz 2004-05-10 10:41:28 +00:00
parent 6b06e28f3d
commit aa5cef3c83
6 changed files with 248 additions and 15 deletions

View file

@ -64,6 +64,7 @@ syntax(char* prog)
<< " -f use Couvreur's FM algorithm for translation"
<< std::endl
<< " -F read the formula from the file" << std::endl
<< " -L fair-loop approximation (implies -f)" << std::endl
<< " -m magic-search (implies -D), expect a counter-example"
<< std::endl
<< " -M magic-search (implies -D), expect no counter-example"
@ -113,6 +114,7 @@ main(int argc, char** argv)
bool expect_counter_example = false;
bool from_file = false;
bool post_branching = false;
bool fair_loop_approx = false;
for (;;)
{
@ -169,6 +171,11 @@ main(int argc, char** argv)
{
file_opt = true;
}
else if (!strcmp(argv[formula_index], "-L"))
{
fair_loop_approx = true;
fm_opt = true;
}
else if (!strcmp(argv[formula_index], "-m"))
{
echeck = MagicSearch;
@ -308,7 +315,8 @@ main(int argc, char** argv)
if (fm_opt)
to_free = a = spot::ltl_to_tgba_fm(f, dict, fm_exprop_opt,
fm_symb_merge_opt,
post_branching);
post_branching,
fair_loop_approx);
else
to_free = a = concrete = spot::ltl_to_tgba_lacim(f, dict);
}