3#include <boost/optional.hpp>
4#include <unordered_map>
20struct ArrayEliminatorData;
24namespace expressions {
25template<
typename ValueType>
26class ExpressionEvaluator;
33template<
typename VariableType>
55template<
typename ValueType>
57 std::vector<std::pair<TransientVariableData<bool>
const*,
bool>>
booleanValues;
58 std::vector<std::pair<TransientVariableData<int64_t>
const*, int64_t>>
integerValues;
59 std::vector<std::pair<TransientVariableData<ValueType>
const*, ValueType>>
rationalValues;
73 evaluator.setBooleanValue(varValue.first->variable, varValue.second);
76 if (explorationChecks) {
77 STORM_LOG_THROW(!varValue.first->lowerBound.is_initialized() || varValue.first->lowerBound.get() <= varValue.second,
78 storm::exceptions::OutOfRangeException,
79 "The assigned value for transient variable " << varValue.first->variable.getName() <<
" is smaller than its lower bound.");
80 STORM_LOG_THROW(!varValue.first->upperBound.is_initialized() || varValue.second <= varValue.first->upperBound.get(),
81 storm::exceptions::OutOfRangeException,
82 "The assigned value for transient variable " << varValue.first->variable.getName() <<
" is higher than its upper bound.");
84 evaluator.setIntegerValue(varValue.first->variable, varValue.second);
87 evaluator.setRationalValue(varValue.first->variable, varValue.second);
93template<
typename ValueType>
101 std::vector<uint64_t>
const& arrayIndexVector)
const;
103 std::vector<uint64_t>
const& arrayIndexVector)
const;
105 std::vector<uint64_t>
const& arrayIndexVector)
const;
120 void sortVariables();
#define STORM_LOG_THROW(cond, exception, message)
boost::optional< VariableType > lowerBound
boost::optional< VariableType > upperBound
VariableType defaultValue
storm::expressions::Variable variable
std::vector< std::pair< TransientVariableData< ValueType > const *, ValueType > > rationalValues
std::vector< std::pair< TransientVariableData< bool > const *, bool > > booleanValues
void setInEvaluator(storm::expressions::ExpressionEvaluator< ValueType > &evaluator, bool explorationChecks) const
std::vector< std::pair< TransientVariableData< int64_t > const *, int64_t > > integerValues