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

branching_postponement.
* src/tgbaalgos/ltl2tgba_fm.cc (fill_dests): New function, extracted
from ltl_to_tgba_fm().
(ltl_to_tgba_fm): Implement the branching_postponement optimization.
* src/tgbatest/ltl2tgba.cc: Add the -p option.
* src/tgbatest/spotlbtt.test: Exercise branching postponement.
* wrap/python/cgi/ltl2tgba.in: Make it an option.
This commit is contained in:
Alexandre Duret-Lutz 2004-05-07 10:00:34 +00:00
parent f11df7679a
commit 6b06e28f3d
6 changed files with 150 additions and 44 deletions

View file

@ -72,6 +72,7 @@ syntax(char* prog)
<< std::endl
<< " -N display the never clain for Spin "
<< "(implies -D)" << std::endl
<< " -p branching postponement (implies -f)" << std::endl
<< " -r display the relation BDD, not the reachability graph"
<< std::endl
<< " -R same as -r, but as a set" << std::endl
@ -111,6 +112,7 @@ main(int argc, char** argv)
bool magic_many = false;
bool expect_counter_example = false;
bool from_file = false;
bool post_branching = false;
for (;;)
{
@ -194,6 +196,11 @@ main(int argc, char** argv)
degeneralize_opt = true;
output = 8;
}
else if (!strcmp(argv[formula_index], "-p"))
{
post_branching = true;
fm_opt = true;
}
else if (!strcmp(argv[formula_index], "-r"))
{
output = 1;
@ -300,7 +307,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);
fm_symb_merge_opt,
post_branching);
else
to_free = a = concrete = spot::ltl_to_tgba_lacim(f, dict);
}

View file

@ -119,6 +119,27 @@ Algorithm
Enabled = yes
}
Algorithm
{
Name = "Spot (Couvreur -- FM post_branch + exprop)"
Path = "${LBTT_TRANSLATE} --spot './ltl2tgba -F -f -x -p -t'"
Enabled = yes
}
Algorithm
{
Name = "Spot (Couvreur -- FM post_branch + exprop), degeneralized"
Path = "${LBTT_TRANSLATE} --spot './ltl2tgba -F -f -p -x -t -D'"
Enabled = yes
}
Algorithm
{
Name = "Spot (Couvreur -- FM exprop + post_branch), fake"
Path = "${LBTT_TRANSLATE} --spot './ltl2tgba -F -f -x -p -T'"
Enabled = no
}
Algorithm
{
Name = "Spot (Couvreur -- FM exprop), fake"