3#include "storm-config.h"
24 virtual std::string
toString()
const override;
32 storm::adapters::Z3ExpressionAdapter& expressionAdapter;
40 virtual void push()
override;
42 virtual void pop()
override;
44 virtual void pop(uint_fast64_t n)
override;
46 virtual void reset()
override;
60 virtual std::shared_ptr<SmtSolver::ModelReference>
getModel()
override;
62 virtual std::vector<storm::expressions::SimpleValuation>
allSat(std::vector<storm::expressions::Variable>
const& important)
override;
64 virtual uint_fast64_t
allSat(std::vector<storm::expressions::Variable>
const& important,
67 virtual uint_fast64_t
allSat(std::vector<storm::expressions::Variable>
const& important, std::function<
bool(
ModelReference&)>
const& callback)
override;
71 virtual bool setTimeout(uint_fast64_t milliseconds)
override;
88 std::unique_ptr<z3::context> context;
91 std::unique_ptr<z3::solver>
solver;
94 std::unique_ptr<storm::adapters::Z3ExpressionAdapter> expressionAdapter;
97 bool lastCheckAssumptions;
This class is responsible for managing a set of typed variables and all expressions using these varia...
A simple implementation of the valuation interface.
The base class for all model references.
SmtSolver(storm::expressions::ExpressionManager &manager)
Constructs a new Smt solver with the given options.
CheckResult
possible check results
virtual bool getBooleanValue(storm::expressions::Variable const &variable) const override
virtual std::string toString() const override
virtual int_fast64_t getIntegerValue(storm::expressions::Variable const &variable) const override
virtual double getRationalValue(storm::expressions::Variable const &variable) const override
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 add(storm::expressions::Expression const &assertion) override
Adds an assertion to the solver's stack.
virtual bool unsetTimeout() override
If supported by the solver, this unsets a previous timeout.
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 storm::expressions::SimpleValuation getModelAsValuation() override
If the last call to check() or checkWithAssumptions() returned Sat, this method retrieves a model tha...
virtual std::string getSmtLibString() const override
If supported by the solver, this function returns the current assertions in the SMT-LIB format.
Z3SmtSolver(storm::expressions::ExpressionManager &manager)
virtual std::vector< storm::expressions::SimpleValuation > allSat(std::vector< storm::expressions::Variable > const &important) override
Performs AllSat over the (provided) important atoms.
virtual CheckResult checkWithAssumptions(storm::expressions::ExpressionSet const &assumptions) override
Checks whether the conjunction of assertions that are currently on the solver's stack together with t...
virtual void reset() override
Removes all assertions from the solver's stack.
virtual void push() override
Pushes a backtracking point on the solver's stack.
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 bool setTimeout(uint_fast64_t milliseconds) override
If supported by the solver, this will limit all subsequent satisfiability queries to the given number...
virtual void addNotCurrentModel(bool performSolverReset=true) override
If supported by the solver, this function tells the SMT solver to produce a model different from the ...
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.
std::set< Expression, ExpressionComparator > ExpressionSet