Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
TransientVariableInformation.h
Go to the documentation of this file.
1#pragma once
2
3#include <boost/optional.hpp>
4#include <unordered_map>
5#include <vector>
6
12
14
15namespace storm {
16
17namespace jani {
18class Model;
19class Automaton;
21class VariableSet;
22} // namespace jani
23
24namespace expressions {
25template<typename ValueType>
27}
28
29namespace storage::sparse {
31}
32
33namespace generator {
34
35template<typename ValueType>
37
38// A structure storing information about a transient variable
39template<typename VariableType>
41 TransientVariableData(storm::expressions::Variable const& variable, boost::optional<VariableType> const& lowerBound,
42 boost::optional<VariableType> const& upperBound, VariableType const& defaultValue, bool global = false);
43 TransientVariableData(storm::expressions::Variable const& variable, VariableType const& defaultValue, bool global = false);
44
45 // The integer variable.
47
48 // The lower bound of its range.
49 boost::optional<VariableType> lowerBound;
50
51 // The upper bound of its range.
52 boost::optional<VariableType> upperBound;
53
54 // Its default value
55 VariableType defaultValue;
56
57 // A flag indicating whether the variable is a global one.
58 bool global;
59};
60
61template<typename ValueType>
63 std::vector<std::pair<TransientVariableData<bool> const*, bool>> booleanValues;
64 std::vector<std::pair<TransientVariableData<int64_t> const*, int64_t>> integerValues;
65 std::vector<std::pair<TransientVariableData<ValueType> const*, ValueType>> rationalValues;
66
67 void clear();
68
69 bool empty() const;
70
71 void setInEvaluator(storm::expressions::ExpressionEvaluator<ValueType>& evaluator, bool explorationChecks) const;
72
73 void setInValuations(uint64_t const stateIndex, TransientVariableInformation<ValueType> const& info,
75};
76
77// A structure storing information about the used variables of the program.
78template<typename ValueType>
80 TransientVariableInformation(storm::jani::Model const& model, std::vector<std::reference_wrapper<storm::jani::Automaton const>> const& parallelAutomata);
81
83
86 std::vector<uint64_t> const& arrayIndexVector) const;
88 std::vector<uint64_t> const& arrayIndexVector) const;
90 std::vector<uint64_t> const& arrayIndexVector) const;
91
93
94 std::vector<TransientVariableData<bool>> booleanVariableInformation;
95 std::vector<TransientVariableData<int64_t>> integerVariableInformation;
96 std::vector<TransientVariableData<ValueType>> rationalVariableInformation;
97
99 std::unordered_map<storm::expressions::Variable, ArrayVariableReplacementInformation> arrayVariableToElementInformations;
100
101 private:
105 void sortVariables();
106
110 void createVariablesForAutomaton(storm::jani::Automaton const& automaton);
111
115 void createVariablesForVariableSet(storm::jani::VariableSet const& variableSet, bool global);
116};
117
118} // namespace generator
119} // namespace storm
Stores valuations of variables for a set of entities (e.g.
TransientVariableData(storm::expressions::Variable const &variable, boost::optional< VariableType > const &lowerBound, boost::optional< VariableType > const &upperBound, VariableType const &defaultValue, bool global=false)
std::vector< TransientVariableData< bool > > booleanVariableInformation
void registerArrayVariableReplacements(storm::jani::ArrayEliminatorData const &arrayEliminatorData)
void setDefaultValuesInEvaluator(storm::expressions::ExpressionEvaluator< ValueType > &evaluator) const
std::vector< TransientVariableData< ValueType > > rationalVariableInformation
std::unordered_map< storm::expressions::Variable, ArrayVariableReplacementInformation > arrayVariableToElementInformations
Replacements for each array variable.
TransientVariableData< int64_t > const & getIntegerArrayVariableReplacement(storm::expressions::Variable const &arrayVariable, std::vector< uint64_t > const &arrayIndexVector) const
std::vector< TransientVariableData< int64_t > > integerVariableInformation
TransientVariableData< bool > const & getBooleanArrayVariableReplacement(storm::expressions::Variable const &arrayVariable, std::vector< uint64_t > const &arrayIndexVector) const
TransientVariableData< ValueType > const & getRationalArrayVariableReplacement(storm::expressions::Variable const &arrayVariable, std::vector< uint64_t > const &arrayIndexVector) const
TransientVariableInformation(storm::jani::Model const &model, std::vector< std::reference_wrapper< storm::jani::Automaton const > > const &parallelAutomata)
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
void setInValuations(uint64_t const stateIndex, TransientVariableInformation< ValueType > const &info, storm::storage::sparse::ValuationsStorage &valuations) const