ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
smt_array.h
Go to the documentation of this file.
1#ifndef _ESBMC_SOLVERS_SMT_SMT_ARRAY_H_
2#define _ESBMC_SOLVERS_SMT_SMT_ARRAY_H_
3
6
7// Interface definition for array manipulation
8
10{
11public:
12 // This constructor makes this not qualify as an abstract interface according
13 // to strict definitions.
14 array_iface(bool _b, bool inf)
16 {
17 }
18
20 const std::string &name,
21 smt_sortt sort,
22 smt_sortt subtype) = 0;
23
30 virtual expr2tc
31 get_array_elem(smt_astt a, uint64_t idx, const type2tc &subtype) = 0;
32
45 virtual smt_astt
46 convert_array_of(smt_astt init_val, unsigned long domain_width) = 0;
47
49 smt_astt init_val,
50 unsigned long domain_width,
51 smt_solver_baset *ctx);
52
54
55 virtual void push_array_ctx() {};
56 virtual void pop_array_ctx() {};
57
58 // And everything else goes through the ast methods!
59
60 // Small piece of internal munging:
63};
64
65#endif /* _ESBMC_SOLVERS_SMT_SMT_ARRAY_H_ */
virtual smt_astt convert_array_of(smt_astt init_val, unsigned long domain_width)=0
Create an array with a single initializer.
virtual smt_astt mk_array_symbol(const std::string &name, smt_sortt sort, smt_sortt subtype)=0
virtual void push_array_ctx()
Definition smt_array.h:55
array_iface(bool _b, bool inf)
Definition smt_array.h:14
virtual void add_array_constraints_for_solving()
Definition smt_array.h:53
bool supports_bools_in_arrays
Definition smt_array.h:61
virtual expr2tc get_array_elem(smt_astt a, uint64_t idx, const type2tc &subtype)=0
Extract an element from the model of an array, at an explicit index.
smt_astt default_convert_array_of(smt_astt init_val, unsigned long domain_width, smt_solver_baset *ctx)
Definition smt_solver.cpp:4182
virtual void pop_array_ctx()
Definition smt_array.h:56
bool can_init_infinite_arrays
Definition smt_array.h:62
The base SMT-conversion class/interface.
Definition smt_solver.h:170
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