From c6fd015e6c11645f2df6875ef6028a8fdf1e72f0 Mon Sep 17 00:00:00 2001 From: Tim Quatmann <tim.quatmann@cs.rwth-aachen.de> Date: Mon, 18 Mar 2019 14:09:37 +0100 Subject: [PATCH] Picking a default SmtSolver, even if no CoreSettings are available. --- src/storm/utility/solver.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/storm/utility/solver.cpp b/src/storm/utility/solver.cpp index 67bef02ef..e944d4bd6 100644 --- a/src/storm/utility/solver.cpp +++ b/src/storm/utility/solver.cpp @@ -18,6 +18,7 @@ #include "storm/utility/NumberTraits.h" #include "storm/exceptions/InvalidSettingsException.h" +#include "storm/exceptions/InvalidOperationException.h" namespace storm { namespace utility { @@ -89,7 +90,18 @@ namespace storm { } std::unique_ptr<storm::solver::SmtSolver> SmtSolverFactory::create(storm::expressions::ExpressionManager& manager) const { - storm::solver::SmtSolverType smtSolverType = storm::settings::getModule<storm::settings::modules::CoreSettings>().getSmtSolver(); + storm::solver::SmtSolverType smtSolverType; + if (storm::settings::hasModule<storm::settings::modules::CoreSettings>()) { + smtSolverType = storm::settings::getModule<storm::settings::modules::CoreSettings>().getSmtSolver(); + } else { +#ifdef STORM_HAVE_Z3 + smtSolverType = storm::solver::SmtSolverType::Z3; +#elif STORM_HAVE_MSAT + smtSolverType = storm::solver::SmtSolverType::Mathsat; +#else + STORM_LOG_THROW(false, storm::exceptions::InvalidOperationException, "Requested an SMT solver but none was installed."); +#endif + } switch (smtSolverType) { case storm::solver::SmtSolverType::Z3: return std::unique_ptr<storm::solver::SmtSolver>(new storm::solver::Z3SmtSolver(manager)); case storm::solver::SmtSolverType::Mathsat: return std::unique_ptr<storm::solver::SmtSolver>(new storm::solver::MathsatSmtSolver(manager));