Do not apply fmfBound to standard quantifiers when only stringsExp is enabled (#6816)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 30 Jun 2021 16:50:33 +0000 (11:50 -0500)
committerGitHub <noreply@github.com>
Wed, 30 Jun 2021 16:50:33 +0000 (16:50 +0000)
commita4f38d64da67dda3bba7a132328e5477807837b9
tree8e042403dc6bf42792e2c91fa571acb566d16ef4
parenta633cd03e1fe118a0e5a7b50db25395b387173a1
Do not apply fmfBound to standard quantifiers when only stringsExp is enabled (#6816)

There are compelling use cases that combine strings/sequences and quantifiers. Prior to this PR, strings enabled "bounded integer" quantifier instantiation so that internally generated quantifiers for strings reductions are handled in a complete manner. However, this enabled bounded integer quantifier instantiation globally. This degrades performance for "unsat" on quantified formulas in general.

After this PR, we do not enable bounded integer quantifier globally. Instead, we ensure that bounded integer quantification is applied to at least the internally generated quantified formulas; all other quantified formulas are handled as usual.

Notice this required ensuring that all quantified formulas generated by strings are marked properly. It also required adding --fmf-bound to a few regressions that explicitly require it.
13 files changed:
src/smt/set_defaults.cpp
src/theory/quantifiers/fmf/bounded_integers.cpp
src/theory/quantifiers/quantifiers_modules.cpp
src/theory/strings/regexp_elim.cpp
src/theory/strings/regexp_operation.cpp
src/theory/strings/theory_strings_preprocess.cpp
src/theory/strings/theory_strings_preprocess.h
src/theory/strings/theory_strings_utils.cpp
src/theory/strings/theory_strings_utils.h
test/regress/CMakeLists.txt
test/regress/regress1/fmf/bug651.smt2
test/regress/regress1/quantifiers/issue3537.smt2
test/regress/regress1/strings/seq-quant-infinite-branch.smt2 [new file with mode: 0644]