1#ifndef STORM_SOLVER_MATHSATSMTSOLVER
2#define STORM_SOLVER_MATHSATSMTSOLVER
4#include <boost/container/flat_map.hpp>
5#include "storm-config.h"
40 std::unordered_map<storm::expressions::Variable, uint_fast64_t>
const& variableNameToSlotMapping);
45 virtual std::string toString()
const override;
50 std::unordered_map<storm::expressions::Variable, uint_fast64_t>
const& variableToSlotMapping;
58 storm::adapters::MathsatExpressionAdapter& expressionAdapter);
63 virtual std::string toString()
const override;
67 storm::adapters::MathsatExpressionAdapter& expressionAdapter;
75 virtual void push()
override;
77 virtual void pop()
override;
79 virtual void pop(uint_fast64_t n)
override;
81 virtual void reset()
override;
95 virtual std::shared_ptr<SmtSolver::ModelReference>
getModel()
override;
97 virtual std::vector<storm::expressions::SimpleValuation>
allSat(std::vector<storm::expressions::Variable>
const& important)
override;
99 virtual uint_fast64_t
allSat(std::vector<storm::expressions::Variable>
const& important,
102 virtual uint_fast64_t
allSat(std::vector<storm::expressions::Variable>
const& important, std::function<
bool(
ModelReference&)>
const& callback)
override;
113#ifdef STORM_HAVE_MSAT
119 std::unique_ptr<storm::adapters::MathsatExpressionAdapter> expressionAdapter;
123 bool lastCheckAssumptions;
129 typedef boost::container::flat_map<uint_fast64_t, int> InterpolationGroupMapType;
130 InterpolationGroupMapType interpolationGroups;
This class is responsible for managing a set of typed variables and all expressions using these varia...
A simple implementation of the valuation interface.
A class that captures options that may be passed to the Mathsat solver.
Options(bool enableModelGeneration=true, bool enableUnsatCoreGeneration=false, bool enableInterpolantGeneration=false)
bool enableUnsatCoreGeneration
bool enableModelGeneration
bool enableInterpolantGeneration
virtual std::vector< storm::expressions::Expression > getUnsatAssumptions() override
If the last call to checkWithAssumptions() returned Unsat, this function can be used to retrieve a su...
virtual storm::expressions::Expression getInterpolant(std::vector< uint_fast64_t > const &groupsA) override
If the last call to check() returned Unsat, the solver has been instantiated with support for interpo...
virtual std::shared_ptr< SmtSolver::ModelReference > getModel() override
If the last call to check() or checkWithAssumptions() returned Sat, this method retrieves a model tha...
virtual void add(storm::expressions::Expression const &assertion) override
Adds an assertion to the solver's stack.
virtual uint_fast64_t allSat(std::vector< storm::expressions::Variable > const &important, std::function< bool(ModelReference &)> const &callback) override
Performs AllSat over the (provided) important atoms.
virtual void pop() override
Pops a backtracking point from the solver's stack.
virtual CheckResult check() override
Checks whether the conjunction of assertions that are currently on the solver's stack is satisfiable.
virtual void reset() override
Removes all assertions from the solver's stack.
virtual std::vector< storm::expressions::SimpleValuation > allSat(std::vector< storm::expressions::Variable > const &important) override
Performs AllSat over the (provided) important atoms.
virtual ~MathsatSmtSolver()
virtual void push() override
Pushes a backtracking point on the solver's stack.
virtual CheckResult checkWithAssumptions(std::set< storm::expressions::Expression > const &assumptions) override
Checks whether the conjunction of assertions that are currently on the solver's stack together with t...
virtual storm::expressions::SimpleValuation getModelAsValuation() override
If the last call to check() or checkWithAssumptions() returned Sat, this method retrieves a model tha...
virtual void setInterpolationGroup(uint_fast64_t group) override
Sets the current interpolation group.
The base class for all model references.
An interface that captures the functionality of an SMT solver.
CheckResult
possible check results