ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
smt_tuple_array_ast.h
Go to the documentation of this file.
1#ifndef SOLVERS_SMT_TUPLE_SMT_TUPLE_NODE_AST_H_
2#define SOLVERS_SMT_TUPLE_SMT_TUPLE_NODE_AST_H_
3
6
9
11{
12public:
15 smt_sortt s,
16 const std::string &_name)
17 : tuple_sym_smt_ast(ctx, s, _name)
18 {
19 }
20 virtual ~array_sym_smt_ast() = default;
21
23 ite(smt_solver_baset *ctx, smt_astt cond, smt_astt falseop) const override;
24 smt_astt eq(smt_solver_baset *ctx, smt_astt other) const override;
28 unsigned int idx,
29 const expr2tc &idx_expr = expr2tc()) const override;
30 smt_astt select(smt_solver_baset *ctx, const expr2tc &idx) const override;
31 smt_astt project(smt_solver_baset *ctx, unsigned int elem) const override;
32 void assign(smt_solver_baset *ctx, smt_astt sym) const override;
33};
34
36{
37 array_sym_smt_astt ta = dynamic_cast<array_sym_smt_astt>(a);
38 assert(ta != nullptr && "Tuple-Array AST mismatch");
39 return ta;
40}
41
42#endif
Definition smt_tuple_array_ast.h:11
smt_astt update(smt_solver_baset *ctx, smt_astt value, unsigned int idx, const expr2tc &idx_expr=expr2tc()) const override
Abstractly produce an "update", i.e., an array 'with' or tuple 'with'.
Definition smt_tuple_array_ast.cpp:81
virtual ~array_sym_smt_ast()=default
void assign(smt_solver_baset *ctx, smt_astt sym) const override
Abstractly produce an assign.
Definition smt_tuple_array_ast.cpp:192
smt_astt eq(smt_solver_baset *ctx, smt_astt other) const override
Abstractly produce an equality.
Definition smt_tuple_array_ast.cpp:49
smt_astt ite(smt_solver_baset *ctx, smt_astt cond, smt_astt falseop) const override
Definition smt_tuple_array_ast.cpp:7
array_sym_smt_ast(smt_solver_baset *ctx, smt_sortt s, const std::string &_name)
Definition smt_tuple_array_ast.h:13
smt_astt project(smt_solver_baset *ctx, unsigned int elem) const override
Project a member from a structure, or an field-array from a struct array.
Definition smt_tuple_array_ast.cpp:160
smt_astt select(smt_solver_baset *ctx, const expr2tc &idx) const override
Select a value from an array, for both normal arrays and tuple arrays.
Definition smt_tuple_array_ast.cpp:129
The base SMT-conversion class/interface.
Definition smt_solver.h:170
tuple_sym_smt_ast(smt_solver_baset *ctx, smt_sortt s, std::string _name)
Primary constructor.
Definition smt_tuple_sym_ast.h:18
Definition toml.hpp:1531
@ other
Definition converter_compare.cpp:887
pthread_cond_t cond
Definition cuda.h:50
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
array_sym_smt_astt to_array_sym_ast(smt_astt a)
Definition smt_tuple_array_ast.h:35
const array_sym_smt_ast * array_sym_smt_astt
Definition smt_tuple_array_ast.h:8