Generic base class for SMT Solvers

Synopsis

Declared in <llvm/Support/SMTAPI.h>

class SMTSolver;

Description

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.

Member Functions

Name

Description

SMTSolver [constructor]

Construct an empty SMT solver.

~SMTSolver [destructor] [virtual]

Destroy this SMT solver.

addConstraint [virtual]

Given a constraint, adds it to the solver

check [virtual]

Check if the constraints are satisfiable

dump

Dump this solver to the debug stream.

getBitvector [virtual]

If a model is available, return the value of a given bitvector symbol.

getBitvectorSort [virtual]

Return an appropriate bitvector sort for the given bitwidth.

getBoolSort [virtual]

Return a boolean sort.

getBoolean [virtual]

If a model is available, return the value of a given boolean symbol.

getFloat128Sort [virtual]

Return a floating‐point sort of width 128.

getFloat16Sort [virtual]

Return a floating‐point sort of width 16.

getFloat32Sort [virtual]

Return a floating‐point sort of width 32.

getFloat64Sort [virtual]

Return a floating‐point sort of width 64.

getFloatRoundingMode [virtual]

Return an appropriate floating‐point rounding mode.

getFloatSort

Return an appropriate floating‐point sort for the given bitwidth.

getInterpretation

getInterpretation overloads

getSort [virtual]

Return an appropriate sort for the given expression.

getStatistics [virtual]

Return statistics collected by this solver.

isFPSupported [virtual]

Checks if the solver supports floating‐points.

mkAnd [virtual]

Creates a boolean and operation

mkBVAdd [virtual]

Creates a bitvector addition operation

mkBVAddNoOverflow [virtual]

Creates a predicate that checks for overflow in a bitvector addition operation

mkBVAddNoUnderflow [virtual]

Creates a predicate that checks for underflow in a signed bitvector addition operation

mkBVAnd [virtual]

Creates a bitvector and operation

mkBVAshr [virtual]

Creates a bitvector arithmetic shift right operation

mkBVConcat [virtual]

Creates a bitvector concat operation

mkBVExtract [virtual]

Creates a bitvector extract operation

mkBVLshr [virtual]

Creates a bitvector logical shift right operation

mkBVMul [virtual]

Creates a bitvector multiplication operation

mkBVMulNoOverflow [virtual]

Creates a predicate that checks for overflow in a bitvector multiplication operation

mkBVMulNoUnderflow [virtual]

Creates a predicate that checks for underflow in a signed bitvector multiplication operation

mkBVNeg [virtual]

Creates a bitvector negation operation

mkBVNegNoOverflow [virtual]

Creates a predicate that checks for overflow in a bitvector negation operation

mkBVNot [virtual]

Creates a bitvector not operation

mkBVOr [virtual]

Creates a bitvector or operation

mkBVSDiv [virtual]

Creates a bitvector signed division operation

mkBVSDivNoOverflow [virtual]

Creates a predicate that checks for overflow in a signed bitvector division/modulus operation

mkBVSRem [virtual]

Creates a bitvector signed modulus operation

mkBVSge [virtual]

Creates a bitvector signed greater‐equal‐than operation

mkBVSgt [virtual]

Creates a bitvector signed greater‐than operation

mkBVShl [virtual]

Creates a bitvector logical shift left operation

mkBVSignExt [virtual]

Creates a bitvector sign extension operation

mkBVSle [virtual]

Creates a bitvector signed less‐equal‐than operation

mkBVSlt [virtual]

Creates a bitvector signed less‐than operation

mkBVSub [virtual]

Creates a bitvector subtraction operation

mkBVSubNoOverflow [virtual]

Creates a predicate that checks for overflow in a signed bitvector subtraction operation

mkBVSubNoUnderflow [virtual]

Creates a predicate that checks for underflow in a bitvector subtraction operation

mkBVUDiv [virtual]

Creates a bitvector unsigned division operation

mkBVURem [virtual]

Creates a bitvector unsigned modulus operation

mkBVUge [virtual]

Creates a bitvector unsigned greater‐equal‐than operation

mkBVUgt [virtual]

Creates a bitvector unsigned greater‐than operation

mkBVUle [virtual]

Creates a bitvector unsigned less‐equal‐than operation

mkBVUlt [virtual]

Creates a bitvector unsigned less‐than operation

mkBVXor [virtual]

Creates a bitvector xor operation

mkBVZeroExt [virtual]

Creates a bitvector zero extension operation

mkBitvector [virtual]

Constructs an SMTExprRef from an APSInt and its bit width

mkBoolean [virtual]

Constructs an SMTExprRef from a boolean.

mkEqual [virtual]

Creates a boolean equality operation

mkFPAdd [virtual]

Creates a floating‐point addition operation

mkFPDiv [virtual]

Creates a floating‐point division operation

mkFPEqual [virtual]

Creates a floating‐point equality operation

mkFPGe [virtual]

Creates a floating‐point greater‐than‐or‐equal operation

mkFPGt [virtual]

Creates a floating‐point greater‐than operation

mkFPIsInfinite [virtual]

Creates a floating‐point isInfinite operation

mkFPIsNaN [virtual]

Creates a floating‐point isNaN operation

mkFPIsNormal [virtual]

Creates a floating‐point isNormal operation

mkFPIsZero [virtual]

Creates a floating‐point isZero operation

mkFPLe [virtual]

Creates a floating‐point less‐than‐or‐equal operation

mkFPLt [virtual]

Creates a floating‐point less‐than operation

mkFPMul [virtual]

Creates a floating‐point multiplication operation

mkFPNeg [virtual]

Creates a floating‐point negation operation

mkFPRem [virtual]

Creates a floating‐point remainder operation

mkFPSub [virtual]

Creates a floating‐point subtraction operation

mkFPtoFP [virtual]

Creates a floating‐point conversion from floatint‐point to floating‐point operation

mkFPtoSBV [virtual]

Creates a floating‐point conversion from floatint‐point to signed bitvector operation

mkFPtoUBV [virtual]

Creates a floating‐point conversion from floatint‐point to unsigned bitvector operation

mkFloat [virtual]

Constructs an SMTExprRef from a finite APFloat.

mkIte [virtual]

Creates a boolean ite operation

mkNot [virtual]

Creates a boolean not operation

mkOr [virtual]

Creates a boolean or operation

mkSBVtoFP [virtual]

Creates a floating‐point conversion from signed bitvector to floatint‐point operation

mkSymbol [virtual]

Creates a new symbol, given a name and a sort

mkUBVtoFP [virtual]

Creates a floating‐point conversion from unsigned bitvector to floatint‐point operation

pop [virtual]

Pop the previous solver state

print [virtual]

Print this solver to an output stream.

push [virtual]

Push the current solver state

reset [virtual]

Reset the solver and remove all constraints.

setBoolParam [virtual]

Sets the requested option.

setUnsignedParam [virtual]

Set an unsigned solver option.

Created with MrDocs