|
ESBMC
Efficient SMT-based Context-Bounded Model Checker
|
#include <smt_tuple.h>
Public Member Functions | |
| virtual smt_sortt | mk_struct_sort (const type2tc &type)=0 |
| Create a sort representing a struct. | |
| virtual smt_astt | tuple_create (const expr2tc &structdef)=0 |
| Create a new tuple from a struct definition. | |
| virtual smt_astt | tuple_fresh (smt_sortt s, std::string name="")=0 |
| Create a fresh tuple, with freely valued fields. | |
| virtual smt_astt | tuple_array_create (const type2tc &array_type, smt_astt *inputargs, bool const_array, smt_sortt domain)=0 |
| virtual smt_astt | tuple_array_of (const expr2tc &init_value, unsigned long domain_width)=0 |
| Create a potentially /large/ array of tuples. | |
| virtual smt_astt | mk_tuple_symbol (const std::string &name, smt_sortt s)=0 |
| Convert a symbol to a tuple_smt_ast. | |
| virtual smt_astt | mk_tuple_array_symbol (const expr2tc &expr)=0 |
| Like mk_tuple_symbol, but for arrays. | |
| virtual expr2tc | tuple_get (const expr2tc &expr)=0 |
| Extract the assignment to a tuple-typed symbol from the SMT solvers model. | |
| virtual expr2tc | tuple_get (const type2tc &type, smt_astt a)=0 |
| virtual expr2tc | tuple_get_array_elem (smt_astt array, uint64_t index, const type2tc &subtype)=0 |
| virtual void | add_tuple_constraints_for_solving () |
| virtual void | push_tuple_ctx () |
| virtual void | pop_tuple_ctx () |
| virtual | ~tuple_iface ()=default |
|
virtualdefault |
|
inlinevirtual |
Reimplemented in smt_tuple_node_flattener.
Create a sort representing a struct.
i.e., a tuple. Ideally this should actually be part of the overridden tuple api, but due to history it isn't yet. If solvers don't support tuples, implement this to abort.
| type | The struct type to create a tuple representation of. |
Implemented in smt_tuple_node_flattener, smt_tuple_sym_flattener, yices_convt, and z3_convt.
Like mk_tuple_symbol, but for arrays.
Implemented in smt_tuple_node_flattener, smt_tuple_sym_flattener, yices_convt, and z3_convt.
|
pure virtual |
Convert a symbol to a tuple_smt_ast.
Implemented in smt_tuple_node_flattener, smt_tuple_sym_flattener, yices_convt, and z3_convt.
|
inlinevirtual |
Reimplemented in smt_tuple_node_flattener.
|
inlinevirtual |
Reimplemented in smt_tuple_node_flattener.
|
pure virtual |
Implemented in smt_tuple_node_flattener, smt_tuple_sym_flattener, and yices_convt.
|
pure virtual |
Create a potentially /large/ array of tuples.
This is called when we encounter an array_of operation, with a very large array size, of tuple sort.
| Expression | of tuple value to populate this array with. |
| domain_width | The size of array to create, in domain bits. |
Implemented in smt_tuple_node_flattener, smt_tuple_sym_flattener, yices_convt, and z3_convt.
Create a new tuple from a struct definition.
| structdef | A constant_struct2tc, describing all the members of the tuple to create. |
Implemented in smt_tuple_node_flattener, smt_tuple_sym_flattener, yices_convt, and z3_convt.
Create a fresh tuple, with freely valued fields.
| s | Sort of the tuple to create |
Implemented in smt_tuple_node_flattener, smt_tuple_sym_flattener, and yices_convt.
Extract the assignment to a tuple-typed symbol from the SMT solvers model.
Implemented in smt_tuple_node_flattener, smt_tuple_sym_flattener, yices_convt, and z3_convt.
Implemented in smt_tuple_node_flattener, smt_tuple_sym_flattener, yices_convt, and z3_convt.
|
pure virtual |
Implemented in smt_tuple_node_flattener, smt_tuple_sym_flattener, yices_convt, and z3_convt.