translate, simplify: limit containment checks of n-ary operators

Fixes #521.

* spot/tl/simplify.cc, spot/tl/simplify.hh,
spot/twaalgos/translate.cc, spot/twaalgos/translate.hh: Add an option
to limit automata-based implication checks of n-ary operators when too
many operands are used.  Defaults to 16.
* bin/spot-x.cc, NEWS, doc/tl/tl.tex: Document it.
* tests/core/bdd.test: Disable the limit for this test.
This commit is contained in:
Alexandre Duret-Lutz 2022-11-15 17:27:10 +01:00
parent f2c65ea557
commit 843c4cdb91
8 changed files with 33 additions and 11 deletions

View file

@ -1926,6 +1926,12 @@ Many of the above rules were collected from the
literature~\cite{somenzi.00.cav,tauriainen.03.tr,babiak.12.tacas} and
sometimes generalized to support operators such as $\M$ and $\W$.
The first six rules, about n-ary operators $\AND$ and $\OR$, are
implemented for $n$ operands by testing each operand against all
other. To prevent the complexity to escalate, this is only performed
with up to 16 operands. That value can be changed in
``\verb|tl_simplifier_options::containment_max_ops|''.
The following rules mix implication-based checks with formulas that
are pure eventualities ($e$) or that are purely universal ($u$).