Regression cmu-dis-0707-3.smt2 has been timing out when using an ASan
build after commit
a4f38d6. Before that
commit --strings-exp implicitly enabled --fmf-bound. After the
commit, the solver was supposed to apply the same reasoning but only to
interal quantifiers and without enabling --fmf-bound. However, the
commit missed some options checks that now also have to check whether
--strings-exp is enabled. This commit updates those option checks.
With this fix, we get a slightly different value for bug590.smt2 after
replying unknown. This commit updates the regression to be more lenient
with the value returned.
#include "expr/skolem_manager.h"
#include "options/quantifiers_options.h"
+#include "options/strings_options.h"
#include "options/theory_options.h"
#include "options/uf_options.h"
#include "theory/quantifiers/first_order_model.h"
d_star_insts[f].push_back(i);
continue;
}
- if (options::fmfBound())
+ if (options::fmfBound() || options::stringExp())
{
std::vector<Node> cond;
cond.push_back(d_quant_cond[f]);
#include "theory/quantifiers/fmf/model_builder.h"
#include "options/quantifiers_options.h"
+#include "options/strings_options.h"
#include "theory/quantifiers/first_order_model.h"
#include "theory/quantifiers/fmf/model_engine.h"
#include "theory/quantifiers/instantiate.h"
}
bool QModelBuilder::optUseModel() {
- return options::mbqiMode() != options::MbqiMode::NONE || options::fmfBound();
+ return options::mbqiMode() != options::MbqiMode::NONE || options::fmfBound()
+ || options::stringExp();
}
bool QModelBuilder::preProcessBuildModel(TheoryModel* m) {
#include "options/printer_options.h"
#include "options/quantifiers_options.h"
#include "options/smt_options.h"
+#include "options/strings_options.h"
#include "options/uf_options.h"
#include "smt/smt_engine_scope.h"
#include "theory/quantifiers/equality_query.h"
// Finite model finding requires specialized ways of building the model.
// We require constructing the model here, since it is required for
// initializing the CombinationEngine and the rest of quantifiers engine.
- if (options::fmfBound()
+ if (options::fmfBound() || options::stringExp()
|| (options::finiteModelFind()
&& (options::mbqiMode() == options::MbqiMode::FMC
|| options::mbqiMode() == options::MbqiMode::TRUST)))
+; SCRUBBER: grep -o "unknown\|((charlst2 ("
; EXPECT: unknown
-; EXPECT: ((charlst2 ((as const (Array Int String)) "")))
+; EXPECT: ((charlst2 (
(set-logic ALL)
(set-option :strings-exp true)