&& opts.prop.minisatSimpMode == options::MinisatSimpMode::ALL)
{
// cannot use minisat variable elimination for logics where a theory solver
- // introduces new literals into the search. This includes quantifiers
+ // introduces new literals into the search, or for parametric theories
+ // which may introduce Boolean term variables. This includes quantifiers
// (quantifier instantiation), and the lemma schemas used in non-linear
// and sets. We also can't use it if models are enabled.
if (logic.isTheoryEnabled(THEORY_SETS) || logic.isTheoryEnabled(THEORY_BAGS)
- || logic.isQuantified() || opts.smt.produceModels
- || opts.smt.produceAssignments || opts.smt.checkModels
+ || logic.isTheoryEnabled(THEORY_ARRAYS)
+ || logic.isTheoryEnabled(THEORY_STRINGS)
+ || logic.isTheoryEnabled(THEORY_DATATYPES) || logic.isQuantified()
+ || opts.smt.produceModels || opts.smt.produceAssignments
+ || opts.smt.checkModels
|| (logic.isTheoryEnabled(THEORY_ARITH) && !logic.isLinear()))
{
opts.prop.minisatSimpMode = options::MinisatSimpMode::CLAUSE_ELIM;
regress0/arrays/issue7596-define-array-uminus.smt2
regress0/arrays/issue8103-1-weak-equiv-models.smt2
regress0/arrays/issue8276-arith-getModelValue.smt2
+ regress0/arrays/proj-issue506-ms-var-elim.smt2
regress0/arrays/swap_t1_np_nf_ai_00005_007.cvc.smtv1.smt2
regress0/arrays/x2.smtv1.smt2
regress0/arrays/x3.smtv1.smt2