Inf(i)|Inf(j) -> Inf(k) and Fin(i)&Fin(j) -> Fin(k)

Implement those rules in simplify_acceptance_here().

* NEWS: Mention the change.
* spot/twa/acc.cc,
spot/twa/acc.hh (acc_cond::acc_code::used_once_sets): New method.
* spot/twaalgos/cleanacc.cc, spot/twaalgos/cleanacc.hh:
Implement the above rule.
* tests/core/remfin.test: Adjust expected results.
* tests/python/simplacc.py: New file.
* tests/Makefile.am: Add it.
This commit is contained in:
Alexandre Duret-Lutz 2020-01-27 22:50:17 +01:00
parent 5dc6da0b20
commit 50c0f880dc
8 changed files with 416 additions and 23 deletions

7
NEWS
View file

@ -61,6 +61,13 @@ New in spot 2.8.5.dev (not yet released)
degeneralization to get rid of conjunction of Inf terms in
acceptance conditions.
- simplify_acceptance_here() and simplify_acceptance() learned to
simplify subformulas like Fin(i)&Fin(j) or Inf(i)|Inf(j), or some
more complex variants of those. If i us uniquely used in the
acceptance condition these become respectively Fin(i) or Inf(i),
and the automaton is adjusted to that i also appears where j
appeared.
New in spot 2.8.5 (2020-01-04)
Bugs fixed: