1#ifndef STORM_ADAPTERS_Z3EXPRESSIONADAPTER_H_
2#define STORM_ADAPTERS_Z3EXPRESSIONADAPTER_H_
4#include <unordered_map>
7#include "storm-config.h"
26class Z3ExpressionAdapter :
public storm::expressions::ExpressionVisitor {
35 Z3ExpressionAdapter(storm::expressions::ExpressionManager& manager, z3::context& context);
43 z3::expr translateExpression(storm::expressions::Expression
const& expression);
51 z3::expr translateExpression(storm::expressions::Variable
const& variable);
53 storm::expressions::Expression translateExpression(z3::expr
const& expr);
61 storm::expressions::Variable
const& getVariable(z3::func_decl z3Declaration);
63 virtual boost::any visit(storm::expressions::BinaryBooleanFunctionExpression
const& expression, boost::any
const& data)
override;
65 virtual boost::any visit(storm::expressions::BinaryNumericalFunctionExpression
const& expression, boost::any
const& data)
override;
67 virtual boost::any visit(storm::expressions::BinaryRelationExpression
const& expression, boost::any
const& data)
override;
69 virtual boost::any visit(storm::expressions::BooleanLiteralExpression
const& expression, boost::any
const& data)
override;
71 virtual boost::any visit(storm::expressions::RationalLiteralExpression
const& expression, boost::any
const& data)
override;
73 virtual boost::any visit(storm::expressions::IntegerLiteralExpression
const& expression, boost::any
const& data)
override;
75 virtual boost::any visit(storm::expressions::UnaryBooleanFunctionExpression
const& expression, boost::any
const& data)
override;
77 virtual boost::any visit(storm::expressions::UnaryNumericalFunctionExpression
const& expression, boost::any
const& data)
override;
79 virtual boost::any visit(storm::expressions::IfThenElseExpression
const& expression, boost::any
const& data)
override;
81 virtual boost::any visit(storm::expressions::VariableExpression
const& expression, boost::any
const& data)
override;
89 z3::expr createVariable(storm::expressions::Variable
const& variable);
92 storm::expressions::ExpressionManager&
manager;
99 std::vector<z3::expr> additionalAssertions;
102 std::unordered_map<storm::expressions::Variable, z3::expr> variableToExpressionMapping;
105 std::unordered_map<Z3_func_decl, storm::expressions::Variable> declarationToVariableMapping;
108 std::unordered_map<storm::expressions::BaseExpression const*, z3::expr> expressionCache;
The base class of all expression classes.
SettingsManager const & manager()
Retrieves the settings manager.