Fix translation of !{r}.

We need a marked version of !{r} to perform breakpoint unroling.

* src/ltlast/unop.cc, src/ltlast/unop.hh: Declare a NegClosureMarked
operator.
* src/ltlvisit/mark.hh, src/ltlvisit/mark.cc,
src/tgbaalgos/ltl2tgba_fm.cc: Adjust to deal with NegClosureMarked
and NegClosure as apropriate.
* src/ltlvisit/simplify.cc, src/ltlvisit/tostring.cc,
src/ltlvisit/tunabbrev.cc, src/tgbaalgos/eltl2tgba_lacim.cc,
src/tgbaalgos/ltl2taa.cc, src/tgbaalgos/ltl2tgba_lacim.cc,
src/tgba/formula2bdd.cc: Deal with NegClosureMarked in the same way as
we deal with NegClosure.
* src/tgbatest/ltl2tgba.test: More tests.
* src/ltltest/kind.test: Adjust.
* doc/tl/tl.tex: Mention the marked negated closure.
This commit is contained in:
Alexandre Duret-Lutz 2012-05-12 11:48:02 +02:00
parent 14144f3b3b
commit e2f70e72b8
16 changed files with 140 additions and 58 deletions

View file

@ -508,6 +508,7 @@ namespace spot
case unop::Finish:
case unop::Closure:
case unop::NegClosure:
case unop::NegClosureMarked:
assert(!"not a rational operator");
return;
case unop::Not:
@ -1178,7 +1179,7 @@ namespace spot
}
case unop::Closure:
{
rat_seen_ = true;
// rat_seen_ = true;
const formula* f = node->child();
if (f->accepts_eword())
{
@ -1217,18 +1218,23 @@ namespace spot
}
break;
case unop::NegClosureMarked:
has_marked_ = true;
case unop::NegClosure:
rat_seen_ = true;
{
rat_seen_ = true;
has_marked_ = true;
if (node->child()->accepts_eword())
const formula* c = node->child();
if (c->accepts_eword())
{
res_ = bddfalse;
return;
}
bdd f1 = translate_ratexp(node->child(), dict_);
if (mark_all_)
{
op = unop::NegClosureMarked;
has_marked_ = true;
}
bdd f1 = translate_ratexp(c, dict_);
// trace_ltl_bdd(dict_, f1);