3#include "storm-config.h"
5#include <unordered_map>
8#ifdef STORM_HAVE_MATHSAT
15#ifdef STORM_HAVE_MATHSAT
19struct hash<msat_decl> {
20 size_t operator()(msat_decl
const& declaration)
const {
21 return hash<void*>()(declaration.repr);
27bool operator==(msat_decl decl1, msat_decl decl2);
38#ifdef STORM_HAVE_MATHSAT
40class MathsatExpressionAdapter :
public storm::expressions::ExpressionVisitor {
48 MathsatExpressionAdapter(storm::expressions::ExpressionManager& manager, msat_env& env);
56 msat_term translateExpression(storm::expressions::Expression
const& expression);
64 msat_term translateExpression(storm::expressions::Variable
const& variable);
66 bool hasAdditionalConstraints()
const;
71 std::vector<msat_term>
const& getAdditionalConstraints()
const;
79 storm::expressions::Variable
const& getVariable(msat_decl msatVariableDeclaration)
const;
81 std::unordered_map<storm::expressions::Variable, msat_decl>
const& getAllDeclaredVariables()
const;
83 virtual boost::any visit(storm::expressions::BinaryBooleanFunctionExpression
const& expression, boost::any
const& data)
override;
85 virtual boost::any visit(storm::expressions::BinaryNumericalFunctionExpression
const& expression, boost::any
const& data)
override;
87 virtual boost::any visit(storm::expressions::BinaryRelationExpression
const& expression, boost::any
const& data)
override;
89 virtual boost::any visit(storm::expressions::IfThenElseExpression
const& expression, boost::any
const& data)
override;
91 virtual boost::any visit(storm::expressions::BooleanLiteralExpression
const& expression, boost::any
const& data)
override;
93 virtual boost::any visit(storm::expressions::RationalLiteralExpression
const& expression, boost::any
const& data)
override;
95 virtual boost::any visit(storm::expressions::IntegerLiteralExpression
const& expression, boost::any
const& data)
override;
97 virtual boost::any visit(storm::expressions::UnaryBooleanFunctionExpression
const& expression, boost::any
const& data)
override;
99 virtual boost::any visit(storm::expressions::UnaryNumericalFunctionExpression
const& expression, boost::any
const& data)
override;
101 virtual boost::any visit(storm::expressions::VariableExpression
const& expression, boost::any
const& data)
override;
103 storm::expressions::Expression translateExpression(msat_term
const& term);
111 msat_decl createVariable(storm::expressions::Variable
const& variable);
114 storm::expressions::ExpressionManager&
manager;
121 std::vector<msat_term> additionalConstraints;
124 std::unordered_map<storm::expressions::Variable, msat_decl> variableToDeclarationMapping;
127 std::unordered_map<msat_decl, storm::expressions::Variable> declarationToVariableMapping;
This class is responsible for managing a set of typed variables and all expressions using these varia...
bool operator==(BEColourClass< ValueType > const &lhs, BEColourClass< ValueType > const &rhs)
SettingsManager const & manager()
Retrieves the settings manager.