|
| SMTSolver ()=default |
|
virtual | ~SMTSolver ()=default |
|
LLVM_DUMP_METHOD void | dump () const |
|
SMTSortRef | getFloatSort (unsigned BitWidth) |
|
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 void | addConstraint (const SMTExprRef &Exp) const =0 |
| Given a constraint, adds it to the solver.
|
|
virtual SMTExprRef | mkBVAdd (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector addition operation.
|
|
virtual SMTExprRef | mkBVSub (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector subtraction operation.
|
|
virtual SMTExprRef | mkBVMul (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector multiplication operation.
|
|
virtual SMTExprRef | mkBVSRem (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector signed modulus operation.
|
|
virtual SMTExprRef | mkBVURem (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector unsigned modulus operation.
|
|
virtual SMTExprRef | mkBVSDiv (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector signed division operation.
|
|
virtual SMTExprRef | mkBVUDiv (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector unsigned division operation.
|
|
virtual SMTExprRef | mkBVShl (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector logical shift left operation.
|
|
virtual SMTExprRef | mkBVAshr (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector arithmetic shift right operation.
|
|
virtual SMTExprRef | mkBVLshr (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector logical shift right operation.
|
|
virtual SMTExprRef | mkBVNeg (const SMTExprRef &Exp)=0 |
| Creates a bitvector negation operation.
|
|
virtual SMTExprRef | mkBVNot (const SMTExprRef &Exp)=0 |
| Creates a bitvector not operation.
|
|
virtual SMTExprRef | mkBVXor (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector xor operation.
|
|
virtual SMTExprRef | mkBVOr (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector or operation.
|
|
virtual SMTExprRef | mkBVAnd (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector and operation.
|
|
virtual SMTExprRef | mkBVUlt (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector unsigned less-than operation.
|
|
virtual SMTExprRef | mkBVSlt (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector signed less-than operation.
|
|
virtual SMTExprRef | mkBVUgt (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector unsigned greater-than operation.
|
|
virtual SMTExprRef | mkBVSgt (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector signed greater-than operation.
|
|
virtual SMTExprRef | mkBVUle (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector unsigned less-equal-than operation.
|
|
virtual SMTExprRef | mkBVSle (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector signed less-equal-than operation.
|
|
virtual SMTExprRef | mkBVUge (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector unsigned greater-equal-than operation.
|
|
virtual SMTExprRef | mkBVSge (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector signed greater-equal-than operation.
|
|
virtual SMTExprRef | mkNot (const SMTExprRef &Exp)=0 |
| Creates a boolean not operation.
|
|
virtual SMTExprRef | mkEqual (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a boolean equality operation.
|
|
virtual SMTExprRef | mkAnd (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a boolean and operation.
|
|
virtual SMTExprRef | mkOr (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a boolean or operation.
|
|
virtual SMTExprRef | mkIte (const SMTExprRef &Cond, const SMTExprRef &T, const SMTExprRef &F)=0 |
| Creates a boolean ite operation.
|
|
virtual SMTExprRef | mkBVSignExt (unsigned i, const SMTExprRef &Exp)=0 |
| Creates a bitvector sign extension operation.
|
|
virtual SMTExprRef | mkBVZeroExt (unsigned i, const SMTExprRef &Exp)=0 |
| Creates a bitvector zero extension operation.
|
|
virtual SMTExprRef | mkBVExtract (unsigned High, unsigned Low, const SMTExprRef &Exp)=0 |
| Creates a bitvector extract operation.
|
|
virtual SMTExprRef | mkBVConcat (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a bitvector concat operation.
|
|
virtual SMTExprRef | mkBVAddNoOverflow (const SMTExprRef &LHS, const SMTExprRef &RHS, bool isSigned)=0 |
| Creates a predicate that checks for overflow in a bitvector addition operation.
|
|
virtual SMTExprRef | mkBVAddNoUnderflow (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a predicate that checks for underflow in a signed bitvector addition operation.
|
|
virtual SMTExprRef | mkBVSubNoOverflow (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a predicate that checks for overflow in a signed bitvector subtraction operation.
|
|
virtual SMTExprRef | mkBVSubNoUnderflow (const SMTExprRef &LHS, const SMTExprRef &RHS, bool isSigned)=0 |
| Creates a predicate that checks for underflow in a bitvector subtraction operation.
|
|
virtual SMTExprRef | mkBVSDivNoOverflow (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a predicate that checks for overflow in a signed bitvector division/modulus operation.
|
|
virtual SMTExprRef | mkBVNegNoOverflow (const SMTExprRef &Exp)=0 |
| Creates a predicate that checks for overflow in a bitvector negation operation.
|
|
virtual SMTExprRef | mkBVMulNoOverflow (const SMTExprRef &LHS, const SMTExprRef &RHS, bool isSigned)=0 |
| Creates a predicate that checks for overflow in a bitvector multiplication operation.
|
|
virtual SMTExprRef | mkBVMulNoUnderflow (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a predicate that checks for underflow in a signed bitvector multiplication operation.
|
|
virtual SMTExprRef | mkFPNeg (const SMTExprRef &Exp)=0 |
| Creates a floating-point negation operation.
|
|
virtual SMTExprRef | mkFPIsInfinite (const SMTExprRef &Exp)=0 |
| Creates a floating-point isInfinite operation.
|
|
virtual SMTExprRef | mkFPIsNaN (const SMTExprRef &Exp)=0 |
| Creates a floating-point isNaN operation.
|
|
virtual SMTExprRef | mkFPIsNormal (const SMTExprRef &Exp)=0 |
| Creates a floating-point isNormal operation.
|
|
virtual SMTExprRef | mkFPIsZero (const SMTExprRef &Exp)=0 |
| Creates a floating-point isZero operation.
|
|
virtual SMTExprRef | mkFPMul (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a floating-point multiplication operation.
|
|
virtual SMTExprRef | mkFPDiv (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a floating-point division operation.
|
|
virtual SMTExprRef | mkFPRem (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a floating-point remainder operation.
|
|
virtual SMTExprRef | mkFPAdd (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a floating-point addition operation.
|
|
virtual SMTExprRef | mkFPSub (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a floating-point subtraction operation.
|
|
virtual SMTExprRef | mkFPLt (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a floating-point less-than operation.
|
|
virtual SMTExprRef | mkFPGt (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a floating-point greater-than operation.
|
|
virtual SMTExprRef | mkFPLe (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a floating-point less-than-or-equal operation.
|
|
virtual SMTExprRef | mkFPGe (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a floating-point greater-than-or-equal operation.
|
|
virtual SMTExprRef | mkFPEqual (const SMTExprRef &LHS, const SMTExprRef &RHS)=0 |
| Creates a floating-point equality operation.
|
|
virtual SMTExprRef | mkFPtoFP (const SMTExprRef &From, const SMTSortRef &To)=0 |
| Creates a floating-point conversion from floatint-point to floating-point operation.
|
|
virtual SMTExprRef | mkSBVtoFP (const SMTExprRef &From, const SMTSortRef &To)=0 |
| Creates a floating-point conversion from signed bitvector to floatint-point operation.
|
|
virtual SMTExprRef | mkUBVtoFP (const SMTExprRef &From, const SMTSortRef &To)=0 |
| Creates a floating-point conversion from unsigned bitvector to floatint-point operation.
|
|
virtual SMTExprRef | mkFPtoSBV (const SMTExprRef &From, unsigned ToWidth)=0 |
| Creates a floating-point conversion from floatint-point to signed bitvector operation.
|
|
virtual SMTExprRef | mkFPtoUBV (const SMTExprRef &From, unsigned ToWidth)=0 |
| Creates a floating-point conversion from floatint-point to unsigned bitvector operation.
|
|
virtual SMTExprRef | mkSymbol (const char *Name, SMTSortRef Sort)=0 |
| Creates a new symbol, given a name and a sort.
|
|
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.
|
|
virtual SMTExprRef | mkFloat (const llvm::APFloat Float)=0 |
| Constructs an SMTExprRef from a finite APFloat.
|
|
virtual SMTExprRef | mkBitvector (const llvm::APSInt Int, unsigned BitWidth)=0 |
| Constructs an SMTExprRef from an APSInt and its bit width.
|
|
virtual bool | getInterpretation (const SMTExprRef &Exp, llvm::APSInt &Int)=0 |
| Given an expression, extract the value of this operand in the model.
|
|
virtual bool | getInterpretation (const SMTExprRef &Exp, llvm::APFloat &Float)=0 |
| Given an expression extract the value of this operand in the model.
|
|
virtual std::optional< bool > | check () const =0 |
| Check if the constraints are satisfiable.
|
|
virtual void | push ()=0 |
| Push the current solver state.
|
|
virtual void | pop (unsigned NumStates=1)=0 |
| Pop the previous solver state.
|
|
virtual void | reset ()=0 |
| Reset the solver and remove all constraints.
|
|
virtual bool | isFPSupported ()=0 |
| Checks if the solver supports floating-points.
|
|
virtual void | print (raw_ostream &OS) const =0 |
|
virtual void | setBoolParam (StringRef Key, bool Value)=0 |
| Sets the requested option.
|
|
virtual void | setUnsignedParam (StringRef Key, unsigned Value)=0 |
|
virtual std::unique_ptr< SMTSolverStatistics > | getStatistics () 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 149 of file SMTAPI.h.