Go to the documentation of this file.
12 #ifndef CPROVER_SOLVERS_FLATTENING_ARRAYS_H
13 #define CPROVER_SOLVERS_FLATTENING_ARRAYS_H
17 #include <unordered_set>
169 #endif // CPROVER_SOLVERS_FLATTENING_ARRAYS_H
Class that provides messages with a built-in verbosity 'level'.
Operator to update elements in structs and arrays.
std::unordered_set< irep_idt > array_comprehension_args
lazy_constraintt(lazy_typet _type, const exprt &_lazy)
literalt record_array_equality(const equal_exprt &expr)
The type of an expression, extends irept.
The trinary if-then-else operator.
virtual void finish_eager_conversion_arrays()
void collect_arrays(const exprt &a)
std::map< std::size_t, index_sett > index_mapt
Base class for all expressions.
std::set< std::size_t > update_indices
array_constraint_countt array_constraint_count
void finish_eager_conversion() override
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
void add_array_constraints_with(const index_sett &index_set, const with_exprt &expr)
std::list< array_equalityt > array_equalitiest
void add_array_constraints()
std::list< lazy_constraintt > lazy_array_constraints
auto lazy(funt fun) -> lazyt< decltype(fun())>
Delay the computation of fun to the next time the force method is called.
Array constructor from single element.
array_equalitiest array_equalities
virtual bool is_unbounded_array(const typet &type) const =0
std::set< exprt > index_sett
void finish_eager_conversion() override
std::map< exprt, bool > expr_map
void record_array_index(const index_exprt &expr)
void add_array_Ackermann_constraints()
Operator to update elements in structs and arrays.
void display_array_constraint_count()
void add_array_constraints_update(const index_sett &index_set, const update_exprt &expr)
void add_array_constraints_comprehension(const index_sett &index_set, const array_comprehension_exprt &expr)
std::map< constraint_typet, size_t > array_constraint_countt
void add_array_constraints_array_constant(const index_sett &index_set, const array_exprt &exprt)
void add_array_constraints_array_of(const index_sett &index_set, const array_of_exprt &exprt)
void update_index_map(bool update_all)
union_find< exprt, irep_hash > arrays
Expression to define a mapping from an argument (index) to elements.
void add_array_constraint(const lazy_constraintt &lazy, bool refine=true)
adds array constraints (refine=true...lazily for the refinement loop)
bool get_array_constraints
message_handlert & message_handler
Array constructor from list of elements.
void add_array_constraints_equality(const index_sett &index_set, const array_equalityt &array_equality)
arrayst(const namespacet &_ns, propt &_prop, message_handlert &message_handler, bool get_array_constraints=false)
std::string enum_to_string(constraint_typet)
void add_array_constraints_if(const index_sett &index_set, const if_exprt &exprt)