ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
smt_tuple_sym.h
Go to the documentation of this file.
1#ifndef SOLVERS_SMT_TUPLE_SMT_TUPLE_SYM_H_
2#define SOLVERS_SMT_TUPLE_SMT_TUPLE_SYM_H_
3
6
9
11{
12public:
14 : ctx(_ctx), ns(_ns)
15 {
16 }
17
18 virtual ~smt_tuple_sym_flattener() = default;
19
20 smt_sortt mk_struct_sort(const type2tc &type) override;
21 smt_astt tuple_create(const expr2tc &structdef) override;
22 smt_astt tuple_fresh(smt_sortt s, std::string name = "") override;
23 smt_astt tuple_array_of(const expr2tc &init_value, unsigned long domain_width)
24 override;
25 smt_astt mk_tuple_symbol(const std::string &name, smt_sortt s) override;
26 smt_astt mk_tuple_array_symbol(const expr2tc &expr) override;
27 expr2tc tuple_get(const expr2tc &expr) override;
28 expr2tc tuple_get(const type2tc &type, smt_astt a) override;
29
32 uint64_t index,
33 const type2tc &subtype) override;
34
37 const type2tc &array_type,
38 smt_astt *input_args,
39 bool const_array,
40 smt_sortt domain) override;
41
43 const namespacet &ns;
44};
45
46#endif
Definition toml.hpp:6607
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_sym.cpp:206
const namespacet & ns
Definition smt_tuple_sym.h:43
smt_astt tuple_array_create(const type2tc &array_type, smt_astt *input_args, bool const_array, smt_sortt domain) override
Definition smt_tuple_sym.cpp:65
smt_solver_baset * ctx
Definition smt_tuple_sym.h:42
smt_astt tuple_fresh(smt_sortt s, std::string name="") override
Create a fresh tuple, with freely valued fields.
Definition smt_tuple_sym.cpp:31
expr2tc tuple_get_rec(tuple_sym_smt_astt tuple)
smt_tuple_sym_flattener(smt_solver_baset *_ctx, const namespacet &_ns)
Definition smt_tuple_sym.h:13
smt_astt tuple_create(const expr2tc &structdef) override
Create a new tuple from a struct definition.
Definition smt_tuple_sym.cpp:9
smt_astt mk_tuple_array_symbol(const expr2tc &expr) override
Like mk_tuple_symbol, but for arrays.
Definition smt_tuple_sym.cpp:56
smt_astt mk_tuple_symbol(const std::string &name, smt_sortt s) override
Convert a symbol to a tuple_smt_ast.
Definition smt_tuple_sym.cpp:43
virtual ~smt_tuple_sym_flattener()=default
smt_sortt mk_struct_sort(const type2tc &type) override
Create a sort representing a struct.
Definition smt_tuple_sym.cpp:218
expr2tc tuple_get(const expr2tc &expr) override
Extract the assignment to a tuple-typed symbol from the SMT solvers model.
Definition smt_tuple_sym.cpp:126
smt_astt tuple_array_of(const expr2tc &init_value, unsigned long domain_width) override
Create a potentially /large/ array of tuples.
Definition smt_tuple_sym.cpp:168
Definition smt_tuple.h:27
Definition smt_tuple_sym_ast.h:12
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_sym_smt_ast * tuple_sym_smt_astt
Definition smt_tuple_sym.h:8