TheoryUF::TheoryUF(context::Context* c, context::UserContext* u, OutputChannel& out, Valuation valuation, const LogicInfo& logicInfo, QuantifiersEngine* qe) :
Theory(THEORY_UF, c, u, out, valuation, logicInfo, qe),
d_notify(*this),
+ /* The strong theory solver can be notified by EqualityEngine::init(),
+ * so make sure it's initialized first. */
+ d_thss(Options::current()->finiteModelFind ? new StrongSolverTheoryUf(c, u, out, this) : NULL),
d_equalityEngine(d_notify, c, "theory::uf::TheoryUF"),
d_conflict(c, false),
d_literalsToPropagate(c),
{
// The kinds we are treating as function application in congruence
d_equalityEngine.addFunctionKind(kind::APPLY_UF);
-
- if (Options::current()->finiteModelFind) {
- d_thss = new StrongSolverTheoryUf(c, u, out, this);
- } else {
- d_thss = NULL;
- }
-}/* TheoryUF::TheoryUF() */
+}
static Node mkAnd(const std::vector<TNode>& conjunctions) {
Assert(conjunctions.size() > 0);