1#ifndef STORM_STORAGE_EXPRESSIONS_TORATIONALFUNCTIONVISITOR_H_
2#define STORM_STORAGE_EXPRESSIONS_TORATIONALFUNCTIONVISITOR_H_
4#include <unordered_map>
15namespace expressions {
18template<
typename RationalFunctionType>
19class ToRationalFunctionVisitor :
public ExpressionVisitor {
21 ToRationalFunctionVisitor(ExpressionEvaluatorBase<RationalFunctionType>
const& evaluator);
23 RationalFunctionType toRationalFunction(Expression
const& expression);
25 virtual boost::any visit(IfThenElseExpression
const& expression, boost::any
const& data)
override;
26 virtual boost::any visit(BinaryBooleanFunctionExpression
const& expression, boost::any
const& data)
override;
27 virtual boost::any visit(BinaryNumericalFunctionExpression
const& expression, boost::any
const& data)
override;
28 virtual boost::any visit(BinaryRelationExpression
const& expression, boost::any
const& data)
override;
29 virtual boost::any visit(VariableExpression
const& expression, boost::any
const& data)
override;
30 virtual boost::any visit(UnaryBooleanFunctionExpression
const& expression, boost::any
const& data)
override;
31 virtual boost::any visit(UnaryNumericalFunctionExpression
const& expression, boost::any
const& data)
override;
32 virtual boost::any visit(BooleanLiteralExpression
const& expression, boost::any
const& data)
override;
33 virtual boost::any visit(IntegerLiteralExpression
const& expression, boost::any
const& data)
override;
34 virtual boost::any visit(RationalLiteralExpression
const& expression, boost::any
const& data)
override;
39 template<
typename TP =
typename RationalFunctionType::PolyType, carl::EnableIf<carl::needs_cache<TP>> = carl::dummy>
41 return RationalFunctionType(
typename RationalFunctionType::PolyType(
typename RationalFunctionType::PolyType::PolyType(variable), cache));
44 template<
typename TP =
typename RationalFunctionType::PolyType, carl::DisableIf<carl::needs_cache<TP>> = carl::dummy>
46 return RationalFunctionType(variable);
50 std::unordered_map<storm::expressions::Variable, storm::RationalFunctionVariable> variableToVariableMap;
53 std::shared_ptr<storm::RawPolynomialCache> cache;
56 std::unordered_map<storm::expressions::Variable, RationalFunctionType> valueMapping;
59 ExpressionEvaluatorBase<RationalFunctionType>
const& evaluator;
carl::Variable RationalFunctionVariable