diff options
Diffstat (limited to 'src/smt/solver_engine.cpp')
-rw-r--r-- | src/smt/solver_engine.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/smt/solver_engine.cpp b/src/smt/solver_engine.cpp index 2cf4862a9..32838eccf 100644 --- a/src/smt/solver_engine.cpp +++ b/src/smt/solver_engine.cpp @@ -1193,6 +1193,8 @@ std::vector<Node> SolverEngine::getAssertionsInternal() return res; } +const Options& SolverEngine::options() const { return d_env->getOptions(); } + std::vector<Node> SolverEngine::getExpandedAssertions() { std::vector<Node> easserts = getAssertions(); @@ -1270,7 +1272,7 @@ UnsatCore SolverEngine::getUnsatCoreInternal() Assert(pe != nullptr); std::shared_ptr<ProofNode> pepf; - if (options::unsatCoresMode() == options::UnsatCoresMode::ASSUMPTIONS) + if (options().smt.unsatCoresMode == options::UnsatCoresMode::ASSUMPTIONS) { pepf = pe->getRefutation(); } @@ -1282,7 +1284,7 @@ UnsatCore SolverEngine::getUnsatCoreInternal() std::shared_ptr<ProofNode> pfn = d_pfManager->getFinalProof(pepf, *d_asserts); std::vector<Node> core; d_ucManager->getUnsatCore(pfn, *d_asserts, core); - if (options::minimalUnsatCores()) + if (options().smt.minimalUnsatCores) { core = reduceUnsatCore(core); } @@ -1291,7 +1293,7 @@ UnsatCore SolverEngine::getUnsatCoreInternal() std::vector<Node> SolverEngine::reduceUnsatCore(const std::vector<Node>& core) { - Assert(options::unsatCores()) + Assert(options().smt.unsatCores) << "cannot reduce unsat core if unsat cores are turned off"; d_env->verbose(1) << "SolverEngine::reduceUnsatCore(): reducing unsat core" @@ -1386,7 +1388,7 @@ void SolverEngine::checkUnsatCore() theory::TrustSubstitutionMap& tls = d_env->getTopLevelSubstitutions(); for (UnsatCore::iterator i = core.begin(); i != core.end(); ++i) { - Node assertionAfterExpansion = tls.apply(*i, false); + Node assertionAfterExpansion = tls.apply(*i); d_env->verbose(1) << "SolverEngine::checkUnsatCore(): pushing core member " << *i << ", expanded to " << assertionAfterExpansion << std::endl; @@ -1432,7 +1434,7 @@ void SolverEngine::checkModel(bool hardFailure) Assert(m != nullptr); // check the model with the theory engine for debugging - if (options::debugCheckModels()) + if (options().smt.debugCheckModels) { TheoryEngine* te = getTheoryEngine(); Assert(te != nullptr); @@ -1527,8 +1529,8 @@ void SolverEngine::printInstantiations(std::ostream& out) && getSmtMode() == SmtMode::UNSAT) { // minimize instantiations based on proof manager - getRelevantInstantiationTermVectors(rinsts, - options::dumpInstantiationsDebug()); + getRelevantInstantiationTermVectors( + rinsts, options().driver.dumpInstantiationsDebug); } else { @@ -1601,6 +1603,13 @@ bool SolverEngine::getSynthSolutions(std::map<Node, Node>& solMap) return d_sygusSolver->getSynthSolutions(solMap); } +bool SolverEngine::getSubsolverSynthSolutions(std::map<Node, Node>& solMap) +{ + SolverEngineScope smts(this); + finishInit(); + return d_sygusSolver->getSubsolverSynthSolutions(solMap); +} + Node SolverEngine::getQuantifierElimination(Node q, bool doFull, bool strict) { SolverEngineScope smts(this); |