Merge transitions in tgba_tba_proxy.

With this change the output of
ltl2tgba -f -x -k -DS "GF(p_1) & ... & GF(p_n)
uses less than (n+1)^2 transitions when it used
exactly (n+1)*(2^n) transitions before.

* src/tgba/tgbatba.cc (tgba_tba_proxy_succ_iterator): Merge
transitions going to the same states if they are both accepting or
if neither are.
(state_ptr_bool_t, state_ptr_bool_less_than): Helper type to
store a transition in tgba_tba_proxy_succ_iterator.
* src/tgba/tgbatba.cc, src/tgba/tgbatba.hh
(tgba_tba_proxy::transition_annotation): Remove.  We cannot
implement this method if transitions are merged.
This commit is contained in:
Alexandre Duret-Lutz 2010-12-11 20:48:53 +01:00
parent 87ee1cfe7d
commit 01843379a3
4 changed files with 135 additions and 89 deletions

View file

@ -70,9 +70,6 @@ namespace spot
virtual state* project_state(const state* s, const tgba* t) const;
virtual std::string
transition_annotation(const tgba_succ_iterator* t) const;
virtual bdd all_acceptance_conditions() const;
virtual bdd neg_acceptance_conditions() const;