namespace strings {
SolverState::SolverState(context::Context* c,
+ context::UserContext* u,
eq::EqualityEngine& ee,
Valuation& v)
: d_context(c),
+ d_ucontext(u),
d_ee(ee),
d_eeDisequalities(c),
d_valuation(v),
}
}
+context::Context* SolverState::getSatContext() const { return d_context; }
+context::UserContext* SolverState::getUserContext() const { return d_ucontext; }
+
Node SolverState::getRepresentative(Node t) const
{
if (d_ee.hasTerm(t))
typedef context::CDList<Node> NodeList;
public:
- SolverState(context::Context* c, eq::EqualityEngine& ee, Valuation& v);
+ SolverState(context::Context* c,
+ context::UserContext* u,
+ eq::EqualityEngine& ee,
+ Valuation& v);
~SolverState();
+ /** Get the SAT context */
+ context::Context* getSatContext() const;
+ /** Get the user context */
+ context::UserContext* getUserContext() const;
//-------------------------------------- equality information
/**
* Get the representative of t in the equality engine of this class, or t
Node d_zero;
/** Pointer to the SAT context object used by the theory of strings. */
context::Context* d_context;
+ /** Pointer to the user context object used by the theory of strings. */
+ context::UserContext* d_ucontext;
/** Reference to equality engine of the theory of strings. */
eq::EqualityEngine& d_ee;
/**
d_notify(*this),
d_statistics(),
d_equalityEngine(d_notify, c, "theory::strings::ee", true),
- d_state(c, d_equalityEngine, d_valuation),
+ d_state(c, u, d_equalityEngine, d_valuation),
d_termReg(c, u, d_equalityEngine, out, d_statistics),
d_im(nullptr),
d_rewriter(&d_statistics.d_rewrites),