10#ifndef KLEE_Z3BUILDER_H
11#define KLEE_Z3BUILDER_H
13#include "klee/Config/config.h"
17#include <unordered_map>
63 "Can't have non nullptr node with nullptr context");
77 operator T()
const {
return node; }
84 return ::Z3_sort_to_ast(context, node);
90template <> inline ::Z3_ast
Z3NodeHandle<Z3_ast>::as_ast() {
return node; }
165 unsigned valueWidth);
174 std::unordered_map<const Array *, std::vector<Z3ASTHandle> >
void *__dso_handle __attribute__((__weak__))
Class representing a byte update of an array.
virtual ~Z3ArrayExprHash()
Z3ASTHandle bvSignExtend(Z3ASTHandle src, unsigned width)
Z3ASTHandle bvXorExpr(Z3ASTHandle lhs, Z3ASTHandle rhs)
Z3ASTHandle construct(ref< Expr > e)
Z3ASTHandle bvVarArithRightShift(Z3ASTHandle expr, Z3ASTHandle shift)
Z3ASTHandle iffExpr(Z3ASTHandle lhs, Z3ASTHandle rhs)
Z3ASTHandle sbvLeExpr(Z3ASTHandle lhs, Z3ASTHandle rhs)
Z3ASTHandle bvVarLeftShift(Z3ASTHandle expr, Z3ASTHandle shift)
Z3ASTHandle buildArray(const char *name, unsigned indexWidth, unsigned valueWidth)
Z3ASTHandle iteExpr(Z3ASTHandle condition, Z3ASTHandle whenTrue, Z3ASTHandle whenFalse)
Z3ASTHandle bvConst32(unsigned width, uint32_t value)
Z3ASTHandle getInitialArray(const Array *os)
bool autoClearConstructCache
Z3ASTHandle bvZExtConst(unsigned width, uint64_t value)
Z3ASTHandle bvLeExpr(Z3ASTHandle lhs, Z3ASTHandle rhs)
Z3SortHandle getArraySort(Z3SortHandle domainSort, Z3SortHandle rangeSort)
Z3ASTHandle bvExtract(Z3ASTHandle expr, unsigned top, unsigned bottom)
Z3ASTHandle bvMinusOne(unsigned width)
Z3SortHandle getBvSort(unsigned width)
Z3ASTHandle bvNotExpr(Z3ASTHandle expr)
Z3ASTHandle bvOne(unsigned width)
Z3ASTHandle bvLtExpr(Z3ASTHandle lhs, Z3ASTHandle rhs)
unsigned getBVLength(Z3ASTHandle expr)
Z3ASTHandle eqExpr(Z3ASTHandle a, Z3ASTHandle b)
Z3ASTHandle bvBoolExtract(Z3ASTHandle expr, int bit)
Z3ASTHandle sbvLtExpr(Z3ASTHandle lhs, Z3ASTHandle rhs)
Z3ASTHandle bvRightShift(Z3ASTHandle expr, unsigned shift)
Z3ASTHandle constructAShrByConstant(Z3ASTHandle expr, unsigned shift, Z3ASTHandle isSigned)
Z3ASTHandle writeExpr(Z3ASTHandle array, Z3ASTHandle index, Z3ASTHandle value)
std::unordered_map< const Array *, std::vector< Z3ASTHandle > > constant_array_assertions
Z3ASTHandle bvSExtConst(unsigned width, uint64_t value)
Z3ASTHandle getInitialRead(const Array *os, unsigned index)
Z3ASTHandle bvVarRightShift(Z3ASTHandle expr, Z3ASTHandle shift)
Z3ASTHandle bvOrExpr(Z3ASTHandle lhs, Z3ASTHandle rhs)
ExprHashMap< std::pair< Z3ASTHandle, unsigned > > constructed
std::string z3LogInteractionFile
Z3ASTHandle construct(ref< Expr > e, int *width_out)
Z3ASTHandle bvAndExpr(Z3ASTHandle lhs, Z3ASTHandle rhs)
Z3ASTHandle bvZero(unsigned width)
Z3ASTHandle readExpr(Z3ASTHandle array, Z3ASTHandle index)
Z3ASTHandle bvConst64(unsigned width, uint64_t value)
Z3ASTHandle orExpr(Z3ASTHandle lhs, Z3ASTHandle rhs)
Z3ASTHandle bvLeftShift(Z3ASTHandle expr, unsigned shift)
void clearConstructCache()
Z3ASTHandle andExpr(Z3ASTHandle lhs, Z3ASTHandle rhs)
Z3Builder(bool autoClearConstructCache, const char *z3LogInteractionFile)
Z3ASTHandle notExpr(Z3ASTHandle expr)
Z3ASTHandle constructActual(ref< Expr > e, int *width_out)
Z3ArrayExprHash _arr_hash
Z3ASTHandle getArrayForUpdate(const Array *root, const UpdateNode *un)
Z3NodeHandle(const T _node, const ::Z3_context _context)
Z3NodeHandle & operator=(const Z3NodeHandle &b)
Z3NodeHandle(const Z3NodeHandle &b)
Z3NodeHandle< Z3_ast > Z3ASTHandle
Z3NodeHandle< Z3_sort > Z3SortHandle