1#ifndef SOLVERS_SMT_SMT_AST_H_
2#define SOLVERS_SMT_SMT_AST_H_
95 log_status(
"Chosen solver doesn't support printing the AST\n");
99template <
typename solver_ast>
113# define dynamic_cast static_cast
115template <
typename derived_
class>
118 const derived_class *r =
dynamic_cast<const derived_class *
>(s);
virtual ~smt_ast()=default
virtual void dump() const
Definition smt_ast.h:93
virtual smt_astt project(smt_solver_baset *ctx, unsigned int elem) const
Project a member from a structure, or an field-array from a struct array.
Definition smt_solver.cpp:4362
virtual smt_astt ite(smt_solver_baset *ctx, smt_astt cond, smt_astt falseop) const
Definition smt_solver.cpp:4307
virtual smt_astt select(smt_solver_baset *ctx, const expr2tc &idx) const
Select a value from an array, for both normal arrays and tuple arrays.
Definition smt_solver.cpp:4350
virtual smt_astt with_sort(smt_solver_baset *ctx, smt_sortt s) const
The same solver term under a different sort.
Definition smt_solver.cpp:4312
const smt_solver_baset * context
The solver context.
Definition smt_ast.h:39
smt_sortt sort
The sort of this function application.
Definition smt_ast.h:36
virtual smt_astt eq(smt_solver_baset *ctx, smt_astt other) const
Abstractly produce an equality.
Definition smt_solver.cpp:4318
virtual smt_astt update(smt_solver_baset *ctx, smt_astt value, unsigned int idx, const expr2tc &idx_expr=expr2tc()) const
Abstractly produce an "update", i.e., an array 'with' or tuple 'with'.
Definition smt_solver.cpp:4324
smt_ast(smt_solver_baset *ctx, smt_sortt s)
Definition smt_solver.h:1270
virtual void assign(smt_solver_baset *ctx, smt_astt sym) const
Abstractly produce an assign.
Definition smt_solver.cpp:4301
The base SMT-conversion class/interface.
Definition smt_solver.h:170
solver_smt_ast(smt_solver_baset *ctx, solver_ast _a, smt_sortt s)
Definition smt_ast.h:103
solver_ast_type a
Definition smt_ast.h:109
solver_ast solver_ast_type
Definition smt_ast.h:108
@ other
Definition converter_compare.cpp:887
pthread_cond_t cond
Definition cuda.h:50
irep_container< expr2t > expr2tc
Definition irep2.h:431
#define log_status(fmt,...)
Definition message.h:101
const smt_ast * smt_astt
Definition smt_ast.h:30
const derived_class * to_solver_smt_ast(smt_astt s)
Definition smt_ast.h:116
const smt_sort * smt_sortt
Definition smt_sort.h:37