21 return arrayIndexVector.empty();
42 return arrayIndexVector;
47 return arrayIndexVector;
51 STORM_LOG_ASSERT(
isArray(),
"Tried to check for variables in the array index of an LValue that does not refer to an array.");
52 for (
auto const& expr : arrayIndexVector) {
53 if (expr.containsVariables()) {
62 arrayIndexVector = newIndex;
67 arrayIndexVector.push_back(index);
75 auto it = remapping.find(variable);
76 if (it == remapping.end()) {
80 return LValue(it->second, arrayIndexVector);
91 for (
auto const& i : arrayIndexVector) {
92 result +=
"[" + i.toString() +
"]";
112 return std::lexicographical_compare(arrayIndexVector.begin(), arrayIndexVector.end(), other.
getArrayIndexVector().begin(),
123 for (uint64_t i = 0; i < arrayIndexVector.size(); ++i) {
bool isSyntacticallyEqual(storm::expressions::Expression const &expression1, storm::expressions::Expression const &expression2)
uint64_t getNestingDegree() const
ArrayType const & asArrayType() const
virtual bool isArrayType() const
bool arrayIndexContainsVariable() const
bool operator==(LValue const &other) const
bool isFullArrayAccess() const
Returns true if the lValue refers to an array access.
std::string getName() const
void addArrayAccessIndex(storm::expressions::Expression const &index)
Adds an array access index.
void setArrayIndex(std::vector< storm::expressions::Expression > const &newIndex)
LValue changeAssignmentVariables(std::map< Variable const *, std::reference_wrapper< Variable const > > const &remapping) const
bool operator<(LValue const &other) const
LValue(storm::jani::Variable const &variable)
bool isArray() const
Returns true if the lValue refers to a variable (potentially of type array).
std::vector< storm::expressions::Expression > & getArrayIndexVector()
Returns the referred variable. In case of an array access, this is the referred array variable.
bool isArrayAccess() const
Returns true if the lValue refers either to an array variable or to an array access.
storm::jani::Variable const & getVariable() const
To check if the array is fully accessed, so result will be of the most inner child Type....
storm::expressions::Variable const & getExpressionVariable() const
Retrieves the associated expression variable.
std::string const & getName() const
Retrieves the name of the variable.
#define STORM_LOG_ASSERT(cond, message)
#define STORM_LOG_THROW(cond, exception, message)
std::ostream & operator<<(std::ostream &stream, Assignment const &assignment)