clang
7.0.0
|
Generic base class for SMT Solvers. More...
#include "clang/StaticAnalyzer/Core/PathSensitive/SMTSolver.h"
Public Member Functions | |
SMTSolver ()=default | |
virtual | ~SMTSolver ()=default |
LLVM_DUMP_METHOD void | dump () const |
SMTSortRef | getFloatSort (unsigned BitWidth) |
SMTSortRef | mkSort (const QualType &Ty, unsigned BitWidth) |
SMTExprRef | fromUnOp (const UnaryOperator::Opcode Op, const SMTExprRef &Exp) |
Constructs an SMTExprRef from an unary operator. More... | |
SMTExprRef | fromFloatUnOp (const UnaryOperator::Opcode Op, const SMTExprRef &Exp) |
Constructs an SMTExprRef from a floating-point unary operator. More... | |
SMTExprRef | fromNBinOp (const BinaryOperator::Opcode Op, const std::vector< SMTExprRef > &ASTs) |
Construct an SMTExprRef from a n-ary binary operator. More... | |
SMTExprRef | fromBinOp (const SMTExprRef &LHS, const BinaryOperator::Opcode Op, const SMTExprRef &RHS, bool isSigned) |
Construct an SMTExprRef from a binary operator. More... | |
SMTExprRef | fromFloatSpecialBinOp (const SMTExprRef &LHS, const BinaryOperator::Opcode Op, const llvm::APFloat::fltCategory &RHS) |
Construct an SMTExprRef from a special floating-point binary operator. More... | |
SMTExprRef | fromFloatBinOp (const SMTExprRef &LHS, const BinaryOperator::Opcode Op, const SMTExprRef &RHS) |
Construct an SMTExprRef from a floating-point binary operator. More... | |
SMTExprRef | fromCast (const SMTExprRef &Exp, QualType ToTy, uint64_t ToBitWidth, QualType FromTy, uint64_t FromBitWidth) |
Construct an SMTExprRef from a QualType FromTy to a QualType ToTy, and their bit widths. More... | |
llvm::APSInt | castAPSInt (const llvm::APSInt &V, QualType ToTy, uint64_t ToWidth, QualType FromTy, uint64_t FromWidth) |
SMTExprRef | getExpr (ASTContext &Ctx, SymbolRef Sym, QualType *RetTy=nullptr, bool *hasComparison=nullptr) |
SMTExprRef | getZeroExpr (ASTContext &Ctx, const SMTExprRef &Exp, QualType Ty, bool Assumption) |
SMTExprRef | getSymExpr (ASTContext &Ctx, SymbolRef Sym, QualType *RetTy, bool *hasComparison) |
SMTExprRef | getCastExpr (ASTContext &Ctx, const SMTExprRef &Exp, QualType FromTy, QualType ToTy) |
SMTExprRef | getSymBinExpr (ASTContext &Ctx, const BinarySymExpr *BSE, bool *hasComparison, QualType *RetTy) |
SMTExprRef | getBinExpr (ASTContext &Ctx, const SMTExprRef &LHS, QualType LTy, BinaryOperator::Opcode Op, const SMTExprRef &RHS, QualType RTy, QualType *RetTy) |
SMTExprRef | getRangeExpr (ASTContext &Ctx, SymbolRef Sym, const llvm::APSInt &From, const llvm::APSInt &To, bool InRange) |
QualType | getAPSIntType (ASTContext &Ctx, const llvm::APSInt &Int) |
std::pair< llvm::APSInt, QualType > | fixAPSInt (ASTContext &Ctx, const llvm::APSInt &Int) |
void | doTypeConversion (ASTContext &Ctx, SMTExprRef &LHS, SMTExprRef &RHS, QualType <y, QualType &RTy) |
template<typename T , T(SMTSolver::*)(const T &, QualType, uint64_t, QualType, uint64_t) doCast> | |
void | doIntTypeConversion (ASTContext &Ctx, T &LHS, QualType <y, T &RHS, QualType &RTy) |
template<typename T , T(SMTSolver::*)(const T &, QualType, uint64_t, QualType, uint64_t) doCast> | |
void | doFloatTypeConversion (ASTContext &Ctx, T &LHS, QualType <y, T &RHS, QualType &RTy) |
virtual SMTSortRef | getBoolSort ()=0 |
virtual SMTSortRef | getBitvectorSort (const unsigned BitWidth)=0 |
virtual SMTSortRef | getFloat16Sort ()=0 |
virtual SMTSortRef | getFloat32Sort ()=0 |
virtual SMTSortRef | getFloat64Sort ()=0 |
virtual SMTSortRef | getFloat128Sort ()=0 |
virtual SMTSortRef | getSort (const SMTExprRef &AST)=0 |
virtual SMTExprRef | newExprRef (const SMTExpr &E) const =0 |
virtual void | addConstraint (const SMTExprRef &Exp) const =0 |
Given a constraint, adds it to the solver. More... | |
virtual SMTExprRef | mkBVAdd (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector addition operation. More... | |
virtual SMTExprRef | mkBVSub (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector subtraction operation. More... | |
virtual SMTExprRef | mkBVMul (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector multiplication operation. More... | |
virtual SMTExprRef | mkBVSRem (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector signed modulus operation. More... | |
virtual SMTExprRef | mkBVURem (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector unsigned modulus operation. More... | |
virtual SMTExprRef | mkBVSDiv (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector signed division operation. More... | |
virtual SMTExprRef | mkBVUDiv (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector unsigned division operation. More... | |
virtual SMTExprRef | mkBVShl (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector logical shift left operation. More... | |
virtual SMTExprRef | mkBVAshr (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector arithmetic shift right operation. More... | |
virtual SMTExprRef | mkBVLshr (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector logical shift right operation. More... | |
virtual SMTExprRef | mkBVNeg (const SMTExprRef &Exp)=0 |
Creates a bitvector negation operation. More... | |
virtual SMTExprRef | mkBVNot (const SMTExprRef &Exp)=0 |
Creates a bitvector not operation. More... | |
virtual SMTExprRef | mkBVXor (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector xor operation. More... | |
virtual SMTExprRef | mkBVOr (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector or operation. More... | |
virtual SMTExprRef | mkBVAnd (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector and operation. More... | |
virtual SMTExprRef | mkBVUlt (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector unsigned less-than operation. More... | |
virtual SMTExprRef | mkBVSlt (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector signed less-than operation. More... | |
virtual SMTExprRef | mkBVUgt (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector unsigned greater-than operation. More... | |
virtual SMTExprRef | mkBVSgt (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector signed greater-than operation. More... | |
virtual SMTExprRef | mkBVUle (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector unsigned less-equal-than operation. More... | |
virtual SMTExprRef | mkBVSle (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector signed less-equal-than operation. More... | |
virtual SMTExprRef | mkBVUge (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector unsigned greater-equal-than operation. More... | |
virtual SMTExprRef | mkBVSge (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector signed greater-equal-than operation. More... | |
virtual SMTExprRef | mkNot (const SMTExprRef &Exp)=0 |
Creates a boolean not operation. More... | |
virtual SMTExprRef | mkEqual (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a boolean equality operation. More... | |
virtual SMTExprRef | mkAnd (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a boolean and operation. More... | |
virtual SMTExprRef | mkOr (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a boolean or operation. More... | |
virtual SMTExprRef | mkIte (const SMTExprRef &Cond, const SMTExprRef &T, const SMTExprRef &F)=0 |
Creates a boolean ite operation. More... | |
virtual SMTExprRef | mkBVSignExt (unsigned i, const SMTExprRef &Exp)=0 |
Creates a bitvector sign extension operation. More... | |
virtual SMTExprRef | mkBVZeroExt (unsigned i, const SMTExprRef &Exp)=0 |
Creates a bitvector zero extension operation. More... | |
virtual SMTExprRef | mkBVExtract (unsigned High, unsigned Low, const SMTExprRef &Exp)=0 |
Creates a bitvector extract operation. More... | |
virtual SMTExprRef | mkBVConcat (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a bitvector concat operation. More... | |
virtual SMTExprRef | mkFPNeg (const SMTExprRef &Exp)=0 |
Creates a floating-point negation operation. More... | |
virtual SMTExprRef | mkFPIsInfinite (const SMTExprRef &Exp)=0 |
Creates a floating-point isInfinite operation. More... | |
virtual SMTExprRef | mkFPIsNaN (const SMTExprRef &Exp)=0 |
Creates a floating-point isNaN operation. More... | |
virtual SMTExprRef | mkFPIsNormal (const SMTExprRef &Exp)=0 |
Creates a floating-point isNormal operation. More... | |
virtual SMTExprRef | mkFPIsZero (const SMTExprRef &Exp)=0 |
Creates a floating-point isZero operation. More... | |
virtual SMTExprRef | mkFPMul (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a floating-point multiplication operation. More... | |
virtual SMTExprRef | mkFPDiv (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a floating-point division operation. More... | |
virtual SMTExprRef | mkFPRem (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a floating-point remainder operation. More... | |
virtual SMTExprRef | mkFPAdd (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a floating-point addition operation. More... | |
virtual SMTExprRef | mkFPSub (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a floating-point subtraction operation. More... | |
virtual SMTExprRef | mkFPLt (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a floating-point less-than operation. More... | |
virtual SMTExprRef | mkFPGt (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a floating-point greater-than operation. More... | |
virtual SMTExprRef | mkFPLe (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a floating-point less-than-or-equal operation. More... | |
virtual SMTExprRef | mkFPGe (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a floating-point greater-than-or-equal operation. More... | |
virtual SMTExprRef | mkFPEqual (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
Creates a floating-point equality operation. More... | |
virtual SMTExprRef | mkFPtoFP (const SMTExprRef &From, const SMTSortRef &To)=0 |
Creates a floating-point conversion from floatint-point to floating-point operation. More... | |
virtual SMTExprRef | mkFPtoSBV (const SMTExprRef &From, const SMTSortRef &To)=0 |
Creates a floating-point conversion from floatint-point to signed bitvector operation. More... | |
virtual SMTExprRef | mkFPtoUBV (const SMTExprRef &From, const SMTSortRef &To)=0 |
Creates a floating-point conversion from floatint-point to unsigned bitvector operation. More... | |
virtual SMTExprRef | mkSBVtoFP (const SMTExprRef &From, unsigned ToWidth)=0 |
Creates a floating-point conversion from signed bitvector to floatint-point operation. More... | |
virtual SMTExprRef | mkUBVtoFP (const SMTExprRef &From, unsigned ToWidth)=0 |
Creates a floating-point conversion from unsigned bitvector to floatint-point operation. More... | |
virtual SMTExprRef | mkSymbol (const char *Name, SMTSortRef Sort)=0 |
Creates a new symbol, given a name and a sort. More... | |
virtual SMTExprRef | getFloatRoundingMode ()=0 |
virtual llvm::APSInt | getBitvector (const SMTExprRef &Exp, unsigned BitWidth, bool isUnsigned)=0 |
virtual bool | getBoolean (const SMTExprRef &Exp)=0 |
virtual SMTExprRef | mkBoolean (const bool b)=0 |
Constructs an SMTExprRef from a boolean. More... | |
virtual SMTExprRef | mkFloat (const llvm::APFloat Float)=0 |
Constructs an SMTExprRef from a finite APFloat. More... | |
virtual SMTExprRef | mkBitvector (const llvm::APSInt Int, unsigned BitWidth)=0 |
Constructs an SMTExprRef from an APSInt and its bit width. More... | |
virtual bool | getInterpretation (const SMTExprRef &Exp, llvm::APSInt &Int)=0 |
Given an expression, extract the value of this operand in the model. More... | |
virtual bool | getInterpretation (const SMTExprRef &Exp, llvm::APFloat &Float)=0 |
Given an expression extract the value of this operand in the model. More... | |
virtual SMTExprRef | fromBoolean (const bool Bool)=0 |
Construct an SMTExprRef value from a boolean. More... | |
virtual SMTExprRef | fromAPFloat (const llvm::APFloat &Float)=0 |
Construct an SMTExprRef value from a finite APFloat. More... | |
virtual SMTExprRef | fromAPSInt (const llvm::APSInt &Int)=0 |
Construct an SMTExprRef value from an APSInt. More... | |
virtual SMTExprRef | fromInt (const char *Int, uint64_t BitWidth)=0 |
Construct an SMTExprRef value from an integer. More... | |
virtual SMTExprRef | fromData (const SymbolID ID, const QualType &Ty, uint64_t BitWidth)=0 |
Construct an SMTExprRef from a SymbolData. More... | |
virtual ConditionTruthVal | check () const =0 |
Check if the constraints are satisfiable. More... | |
virtual void | push ()=0 |
Push the current solver state. More... | |
virtual void | pop (unsigned NumStates=1)=0 |
Pop the previous solver state. More... | |
virtual void | reset () const =0 |
Reset the solver and remove all constraints. More... | |
virtual void | print (raw_ostream &OS) const =0 |
Generic base class for SMT Solvers.
This class is responsible for wrapping all sorts and expression generation, through the mk* methods. It also provides methods to create SMT expressions straight from clang's AST, through the from* methods.
Definition at line 33 of file SMTSolver.h.
|
default |
|
virtualdefault |
|
pure virtual |
Given a constraint, adds it to the solver.
|
inline |
Definition at line 321 of file SMTSolver.h.
References clang::ento::APSIntType::convert(), and clang::Type::isSignedIntegerOrEnumerationType().
Referenced by clang::ento::SMTConstraintManager::getSymVal().
|
pure virtual |
Check if the constraints are satisfiable.
|
inline |
Definition at line 697 of file SMTSolver.h.
References getBitvectorSort(), getBoolSort(), getFloat128Sort(), getFloat16Sort(), getFloat32Sort(), getFloat64Sort(), clang::ASTContext::getFloatingTypeOrder(), getSort(), clang::ASTContext::getTypeSize(), clang::Type::isRealFloatingType(), and newExprRef().
|
inline |
Definition at line 615 of file SMTSolver.h.
References clang::ASTContext::getCorrespondingUnsignedType(), clang::ASTContext::getIntegerTypeOrder(), clang::ASTContext::getPromotedIntegerType(), clang::ASTContext::getTypeSize(), clang::QualType::isNull(), clang::Type::isPromotableIntegerType(), and clang::Type::isSignedIntegerOrEnumerationType().
|
inline |
Definition at line 540 of file SMTSolver.h.
References fromCast(), clang::QualType::getCanonicalType(), clang::ASTContext::getTypeSize(), clang::Type::isAnyPointerType(), clang::Type::isArithmeticType(), clang::Type::isBlockPointerType(), clang::Type::isIntegralOrEnumerationType(), clang::QualType::isNull(), clang::Type::isNullPtrType(), clang::Type::isObjCObjectPointerType(), clang::Type::isRealFloatingType(), clang::Type::isReferenceType(), and clang::Type::isVoidPointerType().
Referenced by getBinExpr().
|
inline |
Definition at line 38 of file SMTSolver.h.
References print().
|
inline |
Definition at line 522 of file SMTSolver.h.
References clang::ASTContext::BoolTy, getAPSIntType(), clang::ASTContext::getTypeSize(), and clang::QualType::isNull().
Referenced by getRangeExpr(), and getSymBinExpr().
|
pure virtual |
Construct an SMTExprRef value from a finite APFloat.
Referenced by getZeroExpr().
|
pure virtual |
Construct an SMTExprRef value from an APSInt.
Referenced by getRangeExpr(), and getSymBinExpr().
|
inline |
Construct an SMTExprRef from a binary operator.
Definition at line 114 of file SMTSolver.h.
References fromUnOp(), getSort(), mkAnd(), mkBVAdd(), mkBVAnd(), mkBVAshr(), mkBVLshr(), mkBVMul(), mkBVOr(), mkBVSDiv(), mkBVSge(), mkBVSgt(), mkBVShl(), mkBVSle(), mkBVSlt(), mkBVSRem(), mkBVSub(), mkBVUDiv(), mkBVUge(), mkBVUgt(), mkBVUle(), mkBVUlt(), mkBVURem(), mkBVXor(), mkEqual(), and mkOr().
Referenced by fromFloatBinOp(), getBinExpr(), getRangeExpr(), and getZeroExpr().
|
pure virtual |
Construct an SMTExprRef value from a boolean.
|
inline |
Construct an SMTExprRef from a QualType FromTy to a QualType ToTy, and their bit widths.
Definition at line 273 of file SMTSolver.h.
References getFloatSort(), clang::Type::isAnyPointerType(), clang::Type::isBlockPointerType(), clang::Type::isBooleanType(), clang::Type::isIntegralOrEnumerationType(), clang::Type::isRealFloatingType(), clang::Type::isReferenceType(), clang::Type::isSignedIntegerOrEnumerationType(), mkBitvector(), mkBVExtract(), mkBVSignExt(), mkBVZeroExt(), mkFPtoFP(), mkFPtoSBV(), mkFPtoUBV(), mkIte(), mkSBVtoFP(), and mkUBVtoFP().
Referenced by doTypeConversion(), and getCastExpr().
|
pure virtual |
Construct an SMTExprRef from a SymbolData.
Referenced by getSymExpr().
|
inline |
Construct an SMTExprRef from a floating-point binary operator.
Definition at line 217 of file SMTSolver.h.
References fromBinOp(), fromFloatUnOp(), getSort(), mkFPAdd(), mkFPDiv(), mkFPEqual(), mkFPGe(), mkFPGt(), mkFPLe(), mkFPLt(), mkFPMul(), mkFPRem(), and mkFPSub().
Referenced by getBinExpr(), and getZeroExpr().
|
inline |
Construct an SMTExprRef from a special floating-point binary operator.
Definition at line 186 of file SMTSolver.h.
References fromFloatUnOp(), mkFPIsInfinite(), mkFPIsNaN(), mkFPIsNormal(), and mkFPIsZero().
|
inline |
Constructs an SMTExprRef from a floating-point unary operator.
Definition at line 85 of file SMTSolver.h.
References fromUnOp(), and mkFPNeg().
Referenced by fromFloatBinOp(), and fromFloatSpecialBinOp().
|
pure virtual |
Construct an SMTExprRef value from an integer.
Referenced by getZeroExpr().
|
inline |
Construct an SMTExprRef from a n-ary binary operator.
Definition at line 100 of file SMTSolver.h.
|
inline |
Constructs an SMTExprRef from an unary operator.
Definition at line 68 of file SMTSolver.h.
References mkBVNeg(), mkBVNot(), and mkNot().
Referenced by fromBinOp(), fromFloatUnOp(), and getZeroExpr().
|
inline |
Definition at line 517 of file SMTSolver.h.
References clang::ASTContext::getIntTypeForBitwidth().
Referenced by fixAPSInt().
|
inline |
Definition at line 446 of file SMTSolver.h.
References clang::ASTContext::BoolTy, doTypeConversion(), fromBinOp(), fromFloatBinOp(), clang::ASTContext::getPointerDiffType(), clang::Type::isAnyPointerType(), clang::BinaryOperator::isComparisonOp(), clang::BinaryOperator::isLogicalOp(), clang::Type::isRealFloatingType(), and clang::Type::isSignedIntegerOrEnumerationType().
Referenced by getRangeExpr(), and getSymBinExpr().
|
pure virtual |
|
pure virtual |
Referenced by doFloatTypeConversion(), and mkSort().
|
pure virtual |
|
pure virtual |
Referenced by doFloatTypeConversion(), and mkSort().
|
inline |
Definition at line 406 of file SMTSolver.h.
References fromCast(), and clang::ASTContext::getTypeSize().
Referenced by getSymExpr().
|
inline |
|
pure virtual |
Referenced by doFloatTypeConversion(), and getFloatSort().
|
pure virtual |
Referenced by doFloatTypeConversion(), and getFloatSort().
|
pure virtual |
Referenced by doFloatTypeConversion(), and getFloatSort().
|
pure virtual |
Referenced by doFloatTypeConversion(), and getFloatSort().
|
pure virtual |
|
inline |
Definition at line 41 of file SMTSolver.h.
References getFloat128Sort(), getFloat16Sort(), getFloat32Sort(), and getFloat64Sort().
Referenced by fromCast(), and mkSort().
|
pure virtual |
Given an expression, extract the value of this operand in the model.
|
pure virtual |
Given an expression extract the value of this operand in the model.
|
inline |
Definition at line 480 of file SMTSolver.h.
References fixAPSInt(), fromAPSInt(), fromBinOp(), getBinExpr(), getExpr(), and clang::Type::isSignedIntegerOrEnumerationType().
|
pure virtual |
Referenced by doFloatTypeConversion(), fromBinOp(), and fromFloatBinOp().
|
inline |
Definition at line 414 of file SMTSolver.h.
References fixAPSInt(), fromAPSInt(), getBinExpr(), clang::ento::BinarySymExpr::getOpcode(), and getSymExpr().
Referenced by getSymExpr().
|
inline |
Definition at line 369 of file SMTSolver.h.
References fromData(), getCastExpr(), getSymBinExpr(), clang::ento::SymExpr::getType(), clang::ASTContext::getTypeSize(), and clang::BinaryOperator::isComparisonOp().
Referenced by getExpr(), and getSymBinExpr().
|
inline |
Definition at line 343 of file SMTSolver.h.
References fromAPFloat(), fromBinOp(), fromFloatBinOp(), fromInt(), fromUnOp(), clang::ASTContext::getFloatTypeSemantics(), clang::ASTContext::getTypeSize(), clang::Type::isAnyPointerType(), clang::Type::isBlockPointerType(), clang::Type::isBooleanType(), clang::Type::isIntegralOrEnumerationType(), clang::Type::isRealFloatingType(), clang::Type::isReferenceType(), and clang::Type::isSignedIntegerOrEnumerationType().
|
pure virtual |
Creates a boolean and operation.
Referenced by fromBinOp(), and fromNBinOp().
|
pure virtual |
Constructs an SMTExprRef from an APSInt and its bit width.
Referenced by fromCast().
|
pure virtual |
Constructs an SMTExprRef from a boolean.
|
pure virtual |
Creates a bitvector addition operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector and operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector arithmetic shift right operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector concat operation.
|
pure virtual |
Creates a bitvector extract operation.
Referenced by fromCast().
|
pure virtual |
Creates a bitvector logical shift right operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector multiplication operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector negation operation.
Referenced by fromUnOp().
|
pure virtual |
Creates a bitvector not operation.
Referenced by fromUnOp().
|
pure virtual |
Creates a bitvector or operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector signed division operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector signed greater-equal-than operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector signed greater-than operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector logical shift left operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector sign extension operation.
Referenced by fromCast().
|
pure virtual |
Creates a bitvector signed less-equal-than operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector signed less-than operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector signed modulus operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector subtraction operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector unsigned division operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector unsigned greater-equal-than operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector unsigned greater-than operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector unsigned less-equal-than operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector unsigned less-than operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector unsigned modulus operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector xor operation.
Referenced by fromBinOp().
|
pure virtual |
Creates a bitvector zero extension operation.
Referenced by fromCast().
|
pure virtual |
Creates a boolean equality operation.
Referenced by fromBinOp().
|
pure virtual |
Constructs an SMTExprRef from a finite APFloat.
|
pure virtual |
Creates a floating-point addition operation.
Referenced by fromFloatBinOp().
|
pure virtual |
Creates a floating-point division operation.
Referenced by fromFloatBinOp().
|
pure virtual |
Creates a floating-point equality operation.
Referenced by fromFloatBinOp().
|
pure virtual |
Creates a floating-point greater-than-or-equal operation.
Referenced by fromFloatBinOp().
|
pure virtual |
Creates a floating-point greater-than operation.
Referenced by fromFloatBinOp().
|
pure virtual |
Creates a floating-point isInfinite operation.
Referenced by fromFloatSpecialBinOp().
|
pure virtual |
Creates a floating-point isNaN operation.
Referenced by fromFloatSpecialBinOp().
|
pure virtual |
Creates a floating-point isNormal operation.
Referenced by fromFloatSpecialBinOp().
|
pure virtual |
Creates a floating-point isZero operation.
Referenced by fromFloatSpecialBinOp().
|
pure virtual |
Creates a floating-point less-than-or-equal operation.
Referenced by fromFloatBinOp().
|
pure virtual |
Creates a floating-point less-than operation.
Referenced by fromFloatBinOp().
|
pure virtual |
Creates a floating-point multiplication operation.
Referenced by fromFloatBinOp().
|
pure virtual |
Creates a floating-point negation operation.
Referenced by fromFloatUnOp().
|
pure virtual |
Creates a floating-point remainder operation.
Referenced by fromFloatBinOp().
|
pure virtual |
Creates a floating-point subtraction operation.
Referenced by fromFloatBinOp().
|
pure virtual |
Creates a floating-point conversion from floatint-point to floating-point operation.
Referenced by fromCast().
|
pure virtual |
Creates a floating-point conversion from floatint-point to signed bitvector operation.
Referenced by fromCast().
|
pure virtual |
Creates a floating-point conversion from floatint-point to unsigned bitvector operation.
Referenced by fromCast().
|
pure virtual |
Creates a boolean ite operation.
Referenced by fromCast().
|
pure virtual |
Creates a boolean not operation.
Referenced by fromUnOp().
|
pure virtual |
Creates a boolean or operation.
Referenced by fromBinOp(), and fromNBinOp().
|
pure virtual |
Creates a floating-point conversion from signed bitvector to floatint-point operation.
Referenced by fromCast().
|
inline |
Definition at line 57 of file SMTSolver.h.
References getBitvectorSort(), getBoolSort(), getFloatSort(), clang::Type::isBooleanType(), and clang::Type::isRealFloatingType().
|
pure virtual |
Creates a new symbol, given a name and a sort.
|
pure virtual |
Creates a floating-point conversion from unsigned bitvector to floatint-point operation.
Referenced by fromCast().
|
pure virtual |
Referenced by doFloatTypeConversion().
|
pure virtual |
Pop the previous solver state.
|
pure virtual |
Referenced by dump().
|
pure virtual |
Push the current solver state.
|
pure virtual |
Reset the solver and remove all constraints.