Add a new algorithm (from Tauriainen) to translate LTL formulae to

TGBA which uses TAA as an intermediate representation.  This is a
basic version, optimizations and enhancements will come later.

* src/tgbaalgos/ltl2taa.cc, src/tgbaalgos/ltl2taa.hh: The algortihm.
* src/tgbaalgos/Makefile.am: Adjust.
* src/tgbatest/ltl2tgba: New option: -taa, which uses this new
translation algorithm.
* src/tgbatest/spotlbtt.test: Add ltl2tgba -taa.
This commit is contained in:
Damien Lefortier 2009-10-16 16:49:24 +02:00
parent 20c1f01e48
commit 627b667712
6 changed files with 416 additions and 2 deletions

View file

@ -33,6 +33,7 @@
#include "ltlparse/public.hh"
#include "tgbaalgos/ltl2tgba_lacim.hh"
#include "tgbaalgos/ltl2tgba_fm.hh"
#include "tgbaalgos/ltl2taa.hh"
#include "tgba/bddprint.hh"
#include "tgbaalgos/save.hh"
#include "tgbaalgos/dotty.hh"
@ -79,6 +80,7 @@ syntax(char* prog)
<< " -E[ALGO] emptiness-check, expect no accepting run"
<< std::endl
<< " -f use Couvreur's FM algorithm for translation"
<< " -taa use Tauriainen's TAA-based algorithm for translation"
<< std::endl
<< " -fr1 use -r1 (see below) at each step of FM" << std::endl
<< " -fr2 use -r2 (see below) at each step of FM" << std::endl
@ -172,6 +174,7 @@ main(int argc, char** argv)
bool paper_opt = false;
enum { NoDegen, DegenTBA, DegenSBA } degeneralize_opt = NoDegen;
enum { TransitionLabeled, StateLabeled } labeling_opt = TransitionLabeled;
bool taa_opt = false;
bool fm_opt = false;
int fm_red = spot::ltl::Reduce_None;
bool fm_exprop_opt = false;
@ -279,6 +282,10 @@ main(int argc, char** argv)
expect_counter_example = false;
output = -1;
}
else if (!strcmp(argv[formula_index], "-taa"))
{
taa_opt = true;
}
else if (!strcmp(argv[formula_index], "-f"))
{
fm_opt = true;
@ -584,7 +591,10 @@ main(int argc, char** argv)
fair_loop_approx, unobservables,
fm_red, containment);
else
to_free = a = concrete = spot::ltl_to_tgba_lacim(f, dict);
if (taa_opt)
to_free = a = spot::ltl_to_taa(f, dict);
else
to_free = a = concrete = spot::ltl_to_tgba_lacim(f, dict);
}
spot::tgba_tba_proxy* degeneralized = 0;