symplify_acceptance: More rules

Fixes #297. Implement the following rules.

Fin(i) & Fin(j) by f if i and j are complementary
Fin(i) & Inf(i) by f
Inf(i) | Inf(j) by t if i and j are complementary
Fin(i) | Inf(i) by t.

* spot/twaalgos/cleanacc.cc, spot/twaalgos/cleanacc.hh: Here.
* tests/python/merge.py: Add more test cases.
* NEWS: Mention the change.
This commit is contained in:
Alexandre Duret-Lutz 2017-11-06 17:25:38 +01:00
parent d9f8c517fa
commit e5a37ff98f
4 changed files with 222 additions and 29 deletions

10
NEWS
View file

@ -160,6 +160,16 @@ New in spot 2.4.1.dev (not yet released)
conditions. The fmt parameter specify the format to use for that
name (e.g. to the style used in HOA, or that used by print_dot()).
- spot::simplify_acceptance() was already merging identical acceptance
sets, and detecting complementary sets i and j to perform the following
simplifications
Fin(i) & Inf(j) = Fin(i)
Fin(i) | Inf(j) = Inf(i)
It now additionally applies the following rules (again assuming i
and j are complementary):
Fin(i) & Fin(j) = f Inf(i) | Inf(j) = t
Fin(i) & Inf(i) = f Fin(i) | Inf(i) = t
Deprecation notices:
(These functions still work but compilers emit warnings.)