diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2020-09-30 10:06:58 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-30 10:06:58 -0500 |
commit | 7127be18692e2fd32bd2dfce53e50c105ed8a25d (patch) | |
tree | 0ac218e0effcebf81629c4d90508a7d8bb4f3182 /src/theory/ee_manager_distributed.cpp | |
parent | 0cf0dc3b3661e668f8c03113faad5078d91cea98 (diff) |
Dynamic allocation of equality engine for shared solver (#5152)
This updates shared solver to have dynamic allocation of equality engine, analogous to theory solvers.
Diffstat (limited to 'src/theory/ee_manager_distributed.cpp')
-rw-r--r-- | src/theory/ee_manager_distributed.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/theory/ee_manager_distributed.cpp b/src/theory/ee_manager_distributed.cpp index 360b1257b..3fb5fc0ce 100644 --- a/src/theory/ee_manager_distributed.cpp +++ b/src/theory/ee_manager_distributed.cpp @@ -34,6 +34,18 @@ EqEngineManagerDistributed::~EqEngineManagerDistributed() void EqEngineManagerDistributed::initializeTheories() { context::Context* c = d_te.getSatContext(); + // initialize the shared solver + EeSetupInfo esis; + if (d_sharedSolver.needsEqualityEngine(esis)) + { + // allocate an equality engine for the shared terms database + d_stbEqualityEngine.reset(allocateEqualityEngine(esis, c)); + d_sharedSolver.setEqualityEngine(d_stbEqualityEngine.get()); + } + else + { + Unhandled() << "Expected shared solver to use equality engine"; + } // allocate equality engines per theory for (TheoryId theoryId = theory::THEORY_FIRST; |