summaryrefslogtreecommitdiff
path: root/src/theory/theory.h
diff options
context:
space:
mode:
authorMorgan Deters <mdeters@cs.nyu.edu>2014-01-22 10:06:04 -0500
committerMorgan Deters <mdeters@cs.nyu.edu>2014-01-22 11:29:58 -0500
commit02efc4635cc200deb7884e55bf62feb7f19248b8 (patch)
tree3bd688f325b3f0f8fab0e1a105b1d5aae4b22019 /src/theory/theory.h
parent8d5aa1c32c047ec023375284fac40d41347fe643 (diff)
Delay QuantifiersEngine and UF strong solver initialization until after final options/logic are set.
Diffstat (limited to 'src/theory/theory.h')
-rw-r--r--src/theory/theory.h22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/theory/theory.h b/src/theory/theory.h
index 43d35ac9d..2359d5d86 100644
--- a/src/theory/theory.h
+++ b/src/theory/theory.h
@@ -239,8 +239,7 @@ protected:
* Construct a Theory.
*/
Theory(TheoryId id, context::Context* satContext, context::UserContext* userContext,
- OutputChannel& out, Valuation valuation, const LogicInfo& logicInfo,
- QuantifiersEngine* qe, eq::EqualityEngine* master = 0) throw()
+ OutputChannel& out, Valuation valuation, const LogicInfo& logicInfo) throw()
: d_id(id)
, d_satContext(satContext)
, d_userContext(userContext)
@@ -248,8 +247,8 @@ protected:
, d_facts(satContext)
, d_factsHead(satContext, 0)
, d_sharedTermsIndex(satContext, 0)
- , d_careGraph(0)
- , d_quantEngine(qe)
+ , d_careGraph(NULL)
+ , d_quantEngine(NULL)
, d_computeCareGraphTime(statName(id, "computeCareGraphTime"))
, d_sharedTerms(satContext)
, d_out(&out)
@@ -474,6 +473,14 @@ public:
}
/**
+ * Finish theory initialization. At this point, options and the logic
+ * setting are final, and the master equality engine and quantifiers
+ * engine (if any) are initialized. This base class implementation
+ * does nothing.
+ */
+ virtual void finishInit() { }
+
+ /**
* Pre-register a term. Done one time for a Node, ever.
*/
virtual void preRegisterTerm(TNode) { }
@@ -498,6 +505,13 @@ public:
virtual void setMasterEqualityEngine(eq::EqualityEngine* eq) { }
/**
+ * Called to set the quantifiers engine.
+ */
+ virtual void setQuantifiersEngine(QuantifiersEngine* qe) {
+ d_quantEngine = qe;
+ }
+
+ /**
* Return the current theory care graph. Theories should overload computeCareGraph to do
* the actual computation, and use addCarePair to add pairs to the care graph.
*/
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback