ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
smt_tuple_sort.h
Go to the documentation of this file.
1#ifndef SOLVERS_SMT_TUPLE_SMT_TUPLE_SORT_H_
2#define SOLVERS_SMT_TUPLE_SMT_TUPLE_SORT_H_
3
5
6// True iff the given type lowers to a tuple sort in the SMT layer:
7// struct (incl. C++ class data), pointer (as the (object, offset)
8// pair lowered via pointer_struct), code (function pointer payload),
9// or complex (the (real, imag) pair).
10inline bool is_tuple_ast_type(const type2tc &t)
11{
12 return is_struct_type(t) || is_pointer_type(t) || is_code_type(t) ||
14}
15
16inline bool is_tuple_ast_type(const expr2tc &e)
17{
18 return is_tuple_ast_type(e->type);
19}
20
21inline bool is_tuple_array_ast_type(const type2tc &t)
22{
23 if (!is_array_type(t))
24 return false;
25
26 const array_type2t &arr_type = to_array_type(t);
27 type2tc range = arr_type.subtype;
28 while (is_array_type(range))
30
32}
33
34#endif
Array type.
Definition irep2_type.h:422
type2tc subtype
Definition irep2_type.h:504
const typet & subtype() const
Definition type.h:17
irep_container< type2t > type2tc
Definition irep2.h:430
irep_container< expr2t > expr2tc
Definition irep2.h:431
Definition range.py:1
bool is_tuple_array_ast_type(const type2tc &t)
Definition smt_tuple_sort.h:21
bool is_tuple_ast_type(const type2tc &t)
Definition smt_tuple_sort.h:10
const array_typet & to_array_type(const typet &type)
Definition std_types.h:425
bool is_complex_type(const typet &type)
Definition type_handler.h:39