Go to the documentation of this file.
12 #ifndef CPROVER_ANALYSES_VARIABLE_SENSITIVITY_FULL_ARRAY_ABSTRACT_OBJECT_H
13 #define CPROVER_ANALYSES_VARIABLE_SENSITIVITY_FULL_ARRAY_ABSTRACT_OBJECT_H
22 full_array_abstract_objectt,
23 array_aggregate_typet>
123 const std::stack<exprt> &stack,
126 bool merging_write)
const override;
151 bool verify()
const override;
166 const std::stack<exprt> &stack,
169 bool merging_write)
const;
174 const std::stack<exprt> &stack,
177 bool merging_write)
const;
184 bool merging_write)
const;
193 return std::hash<BigInt::ullong_t>{}(i.to_ulong());
241 #endif // CPROVER_ANALYSES_VARIABLE_SENSITIVITY_FULL_ARRAY_ABSTRACT_OBJECT_H
abstract_object_pointert write_sub_element(abstract_environmentt &environment, const namespacet &ns, const std::stack< exprt > &stack, const exprt &expr, const abstract_object_pointert &value, bool merging_write) const
sharing_ptrt< class abstract_objectt > abstract_object_pointert
goto_programt::const_targett locationt
A map implemented as a tree where subtrees can be shared between different maps.
The type of an expression, extends irept.
abstract_object_pointert write_location_context(const locationt &location) const override
Update the location context for an abstract object.
virtual const typet & type() const
Get the real type of the variable this abstract object is representing.
size_t operator()(const mp_integer &i) const
abstract_object_pointert write_leaf_element(abstract_environmentt &environment, const namespacet &ns, const exprt &expr, const abstract_object_pointert &value, bool merging_write) const
abstract_object_pointert read_element(const abstract_environmentt &env, const exprt &expr, const namespacet &ns) const
Base class for all expressions.
std::shared_ptr< const T > sharing_ptrt
Merge is designed to allow different abstractions to be merged gracefully.
abstract_object_pointert write_component(abstract_environmentt &environment, const namespacet &ns, const std::stack< exprt > &stack, const exprt &expr, const abstract_object_pointert &value, bool merging_write) const override
A helper function to evaluate writing to a index of an array.
exprt to_predicate_internal(const exprt &name) const override
to_predicate implementation - derived classes will override
void output(std::ostream &out, const ai_baset &ai, const namespacet &ns) const override
the current known value about this object.
abstract_object_pointert write_element(abstract_environmentt &environment, const namespacet &ns, const std::stack< exprt > &stack, const exprt &expr, const abstract_object_pointert &value, bool merging_write) const
abstract_object_pointert full_array_merge(const full_array_pointert &other, const widen_modet &widen_mode) const
Merges an array into this array.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
abstract_object_pointert visit_sub_elements(const abstract_object_visitort &visitor) const override
Apply a visitor operation to all sub elements of this abstract_object.
abstract_object_pointert map_find_or_top(mp_integer index, const abstract_environmentt &env, const namespacet &ns) const
void map_put(mp_integer index, const abstract_object_pointert &value, bool overrun)
sharing_mapt< mp_integer, abstract_object_pointert, false, mp_integer_hasht > shared_array_mapt
full_array_abstract_objectt(typet type)
std::set< abstract_object_pointert > abstract_object_visitedt
Pure virtual interface required of a client that can apply a copy-on-write operation to a given abstr...
abstract_object_pointert merge(const abstract_object_pointert &other, const widen_modet &widen_mode) const override
Tries to do an array/array merge if merging with a constant array If it can't, falls back to parent m...
abstract_object_pointert merge_location_context(const locationt &location) const override
Update the merge location context for an abstract object.
This is the basic interface of the abstract interpreter with default implementations of the core func...
abstract_aggregate_objectt< full_array_abstract_objectt, array_aggregate_typet > abstract_aggregate_baset
const sharing_ptrt< full_array_abstract_objectt > full_array_pointert
void statistics(abstract_object_statisticst &statistics, abstract_object_visitedt &visited, const abstract_environmentt &env, const namespacet &ns) const override
abstract_object_pointert get_top_entry(const abstract_environmentt &env, const namespacet &ns) const
Short hand method for creating a top element of the array.
bool verify() const override
To validate that the struct object is in a valid state.
abstract_object_pointert read_component(const abstract_environmentt &env, const exprt &expr, const namespacet &ns) const override
A helper function to read elements from an array.
void set_top_internal() override
Perform any additional structural modifications when setting this object to TOP.