Add a has_lbt_atomic_props() method to LTL formulas.

* src/ltlast/formula.hh (has_lbt_atomic_props): New method.
* src/ltlast/formula.cc (printprops): Display it.
* src/ltlast/atomic_prop.cc: Update it.
* src/bin/ltlcheck.cc, src/bin/genltl.cc: Use it.
* doc/tl/tl.tex: Menton has_lbt_atomic_props().
This commit is contained in:
Alexandre Duret-Lutz 2012-10-14 15:52:53 +02:00
parent f40925f67b
commit b2de0136b2
6 changed files with 46 additions and 7 deletions

View file

@ -41,6 +41,7 @@
#include "ltlvisit/tostring.hh"
#include "ltlvisit/apcollect.hh"
#include "ltlvisit/lbt.hh"
#include "ltlvisit/relabel.hh"
#include "tgbaalgos/lbtt.hh"
#include "tgba/tgbaproduct.hh"
#include "tgbaalgos/gtec/gtec.hh"
@ -414,6 +415,8 @@ namespace
// Run-specific variables
printable_result_filename output;
public:
using spot::formater::has;
translator_runner()
{
declare('f', &string_ltl_spot);
@ -704,6 +707,16 @@ namespace
pstats->resize(m);
nstats->resize(m);
// If we need LBT atomic proposition in any of the input or
// output, relabel the formula.
if (!f->has_lbt_atomic_props() &&
(runner.has('l') || runner.has('L') || runner.has('T')))
{
const spot::ltl::formula* g = spot::ltl::relabel(f, spot::ltl::Pnn);
f->destroy();
f = g;
}
// ---------- Positive Formula ----------
runner.round_formula(f, round);