1#ifndef STORM_SOLVER_Z3SMTSOLVER
2#define STORM_SOLVER_Z3SMTSOLVER
4#include "storm-config.h"
25 virtual std::string
toString()
const override;
33 storm::adapters::Z3ExpressionAdapter& expressionAdapter;
41 virtual void push()
override;
43 virtual void pop()
override;
45 virtual void pop(uint_fast64_t n)
override;
47 virtual void reset()
override;
61 virtual std::shared_ptr<SmtSolver::ModelReference>
getModel()
override;
63 virtual std::vector<storm::expressions::SimpleValuation>
allSat(std::vector<storm::expressions::Variable>
const& important)
override;
65 virtual uint_fast64_t
allSat(std::vector<storm::expressions::Variable>
const& important,
68 virtual uint_fast64_t
allSat(std::vector<storm::expressions::Variable>
const& important, std::function<
bool(
ModelReference&)>
const& callback)
override;
72 virtual bool setTimeout(uint_fast64_t milliseconds)
override;
89 std::unique_ptr<z3::context> context;
92 std::unique_ptr<z3::solver> solver;
95 std::unique_ptr<storm::adapters::Z3ExpressionAdapter> expressionAdapter;
98 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.
An interface that captures the functionality of an SMT solver.
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 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 std::string getSmtLibString() const override
If supported by the solver, this function returns the current assertions in the SMT-LIB format.
virtual std::vector< storm::expressions::SimpleValuation > allSat(std::vector< storm::expressions::Variable > const &important) override
Performs AllSat over the (provided) important atoms.
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 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.