From 9eb0125f77fdd1f0db2b9769d9fb192d05e43226 Mon Sep 17 00:00:00 2001 From: "Hoang M. Le" Date: Thu, 5 Oct 2017 15:50:21 +0200 Subject: add support for CVC4 and Yices2 via metaSMT --- lib/Solver/MetaSMTSolver.cpp | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'lib/Solver') diff --git a/lib/Solver/MetaSMTSolver.cpp b/lib/Solver/MetaSMTSolver.cpp index 9b49f995..9003b119 100644 --- a/lib/Solver/MetaSMTSolver.cpp +++ b/lib/Solver/MetaSMTSolver.cpp @@ -23,14 +23,18 @@ #include #include #include +#include +#include #define Expr VCExpr #define Type VCType #define STP STP_Backend +#define type_t STP_type_t #include #undef Expr #undef Type #undef STP +#undef type_t #include #include @@ -405,30 +409,35 @@ void MetaSMTSolver::setCoreSolverTimeout(double timeout) { impl->setCoreSolverTimeout(timeout); } -template class MetaSMTSolver >; -template class MetaSMTSolver >; -template class MetaSMTSolver >; - Solver *createMetaSMTSolver() { - using metaSMT::DirectSolver_Context; - using namespace metaSMT::solver; + using namespace metaSMT; Solver *coreSolver = NULL; std::string backend; switch (MetaSMTBackend) { case METASMT_BACKEND_STP: backend = "STP"; - coreSolver = new MetaSMTSolver >( + coreSolver = new MetaSMTSolver >( UseForkedCoreSolver, CoreSolverOptimizeDivides); break; case METASMT_BACKEND_Z3: backend = "Z3"; - coreSolver = new MetaSMTSolver >( + coreSolver = new MetaSMTSolver >( UseForkedCoreSolver, CoreSolverOptimizeDivides); break; case METASMT_BACKEND_BOOLECTOR: backend = "Boolector"; - coreSolver = new MetaSMTSolver >( + coreSolver = new MetaSMTSolver >( + UseForkedCoreSolver, CoreSolverOptimizeDivides); + break; + case METASMT_BACKEND_CVC4: + backend = "CVC4"; + coreSolver = new MetaSMTSolver >( + UseForkedCoreSolver, CoreSolverOptimizeDivides); + break; + case METASMT_BACKEND_YICES2: + backend = "Yices2"; + coreSolver = new MetaSMTSolver >( UseForkedCoreSolver, CoreSolverOptimizeDivides); break; default: -- cgit 1.4.1