Ignore sub-"SERE" that have been proved useless already.

* src/tgbaalgos/ltl2tgba_fm.cc (ratexp_to_dfa::translate): Do not
translate a subformula if we have already proved it useless in
a previous rational expression.
* src/tgbatest/ltl2tgba.test: Add an example, although that
test does not ensure the subformula is ignored early in the
translation.  I.e., it would still work without the patch.
This commit is contained in:
Alexandre Duret-Lutz 2011-11-12 23:10:40 +01:00
parent b6702fc23a
commit 098e121a36
2 changed files with 12 additions and 0 deletions

View file

@ -935,6 +935,14 @@ namespace spot
const formula* dest =
dict_.bdd_to_formula(bdd_exist(res & label, dict_.var_set));
f2a_t::const_iterator i = f2a_.find(dest);
if (i != f2a_.end() && i->second == 0)
{
// This state is useless. Ignore it.
dest->destroy();
continue;
}
bool seen = a->has_state(dest);
state_explicit_formula::transition* t =
a->create_transition(now, dest);