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

@ -62,8 +62,8 @@ namespace spot
gf_guarantee_set_ = true;
}
ltl_split_ = opt->get("ltl-split", 1);
int tls_max_states = opt->get("tls-max-states", 64);
tls_max_states_ = std::max(0, tls_max_states);
tls_max_states_ = std::max(0, opt->get("tls-max-states", 64));
tls_max_ops_ = std::max(0, opt->get("tls-max-ops", 16));
exprop_ = opt->get("exprop", -1);
branchpost_ = opt->get("branch-post", -1);
}
@ -72,6 +72,7 @@ namespace spot
{
tl_simplifier_options options(false, false, false);
options.containment_max_states = tls_max_states_;
options.containment_max_ops = tls_max_ops_;
switch (level_)
{
case High:

View file

@ -155,7 +155,8 @@ namespace spot
bool gf_guarantee_set_ = false;
bool ltl_split_;
int branchpost_ = -1;
unsigned tls_max_states_ = 0;
unsigned tls_max_states_ = 64;
unsigned tls_max_ops_ = 16;
int exprop_;
const option_map* opt_;
};