1#ifndef SOLVERS_SMT_TUPLE_SMT_TUPLE_NODE_H_
2#define SOLVERS_SMT_TUPLE_SMT_TUPLE_NODE_H_
33 const type2tc &subtype)
override;
64 std::map<unsigned int, std::vector<tuple_node_smt_ast *>> populated_elements;
Definition array_conv.h:105
Definition namespace.h:10
The base SMT-conversion class/interface.
Definition smt_solver.h:170
expr2tc tuple_get_array_elem(smt_astt array, uint64_t index, const type2tc &subtype) override
Definition smt_tuple_node.cpp:270
expr2tc tuple_get_rec(tuple_node_smt_astt tuple)
Definition smt_tuple_node.cpp:204
array_convt array_conv
Definition smt_tuple_node.h:59
smt_astt tuple_fresh(smt_sortt s, std::string name="") override
Create a fresh tuple, with freely valued fields.
Definition smt_tuple_node.cpp:30
smt_astt tuple_array_create(const type2tc &array_type, smt_astt *input_args, bool const_array, smt_sortt domain) override
Definition smt_tuple_node.cpp:135
void note_elements_populated(tuple_node_smt_ast *tuple)
Record that tuple had its elements installed at the current context level, having itself been created...
Definition smt_tuple_node.cpp:320
smt_astt tuple_array_of(const expr2tc &init_value, unsigned long domain_width) override
Create a potentially /large/ array of tuples.
Definition smt_tuple_node.cpp:279
virtual ~smt_tuple_node_flattener()=default
smt_solver_baset * ctx
Definition smt_tuple_node.h:57
smt_astt tuple_create(const expr2tc &structdef) override
Create a new tuple from a struct definition.
Definition smt_tuple_node.cpp:9
void push_tuple_ctx() override
Definition smt_tuple_node.cpp:315
void pop_tuple_ctx() override
Definition smt_tuple_node.cpp:326
smt_astt mk_tuple_symbol(const std::string &name, smt_sortt s) override
Convert a symbol to a tuple_smt_ast.
Definition smt_tuple_node.cpp:47
smt_astt mk_tuple_array_symbol(const expr2tc &expr) override
Like mk_tuple_symbol, but for arrays.
Definition smt_tuple_node.cpp:68
expr2tc tuple_get(const expr2tc &expr) override
Extract the assignment to a tuple-typed symbol from the SMT solvers model.
Definition smt_tuple_node.cpp:198
smt_sortt mk_struct_sort(const type2tc &type) override
Create a sort representing a struct.
Definition smt_tuple_node.cpp:292
void add_tuple_constraints_for_solving() override
Definition smt_tuple_node.cpp:310
smt_tuple_node_flattener(smt_solver_baset *_ctx, const namespacet &_ns)
Definition smt_tuple_node.h:14
const namespacet & ns
Definition smt_tuple_node.h:58
Definition smt_tuple.h:27
Function app representing a tuple sorted value.
Definition smt_tuple_node_ast.h:24
irep_container< type2t > type2tc
Definition irep2.h:430
irep_container< expr2t > expr2tc
Definition irep2.h:431
const smt_ast * smt_astt
Definition smt_ast.h:30
const smt_sort * smt_sortt
Definition smt_sort.h:37
const tuple_node_smt_ast * tuple_node_smt_astt
Definition smt_tuple_node.h:9