Z3
 
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions
Context Class Reference
+ Inheritance diagram for Context:

Public Member Functions

 Context ()
 
 Context (Map< String, String > settings)
 
IntSymbol mkSymbol (int i)
 
StringSymbol mkSymbol (String name)
 
BoolSort getBoolSort ()
 
IntSort getIntSort ()
 
RealSort getRealSort ()
 
BoolSort mkBoolSort ()
 
CharSort mkCharSort ()
 
SeqSort< CharSortgetStringSort ()
 
UninterpretedSort mkUninterpretedSort (Symbol s)
 
UninterpretedSort mkUninterpretedSort (String str)
 
IntSort mkIntSort ()
 
RealSort mkRealSort ()
 
BitVecSort mkBitVecSort (int size)
 
final< D extends Sort, R extends Sort > ArraySort< D, R > mkArraySort (D domain, R range)
 
final< R extends Sort > ArraySort< Sort, R > mkArraySort (Sort[] domains, R range)
 
SeqSort< CharSortmkStringSort ()
 
final< R extends Sort > SeqSort< R > mkSeqSort (R s)
 
final< R extends Sort > ReSort< R > mkReSort (R s)
 
TupleSort mkTupleSort (Symbol name, Symbol[] fieldNames, Sort[] fieldSorts)
 
final< R > EnumSort< R > mkEnumSort (Symbol name, Symbol... enumNames)
 
final< R > EnumSort< R > mkEnumSort (String name, String... enumNames)
 
final< R extends Sort > ListSort< R > mkListSort (Symbol name, R elemSort)
 
final< R extends Sort > ListSort< R > mkListSort (String name, R elemSort)
 
final< R > FiniteDomainSort< R > mkFiniteDomainSort (Symbol name, long size)
 
final< R > FiniteDomainSort< R > mkFiniteDomainSort (String name, long size)
 
final< R > Constructor< R > mkConstructor (Symbol name, Symbol recognizer, Symbol[] fieldNames, Sort[] sorts, int[] sortRefs)
 
final< R > Constructor< R > mkConstructor (String name, String recognizer, String[] fieldNames, Sort[] sorts, int[] sortRefs)
 
final< R > DatatypeSort< R > mkDatatypeSort (Symbol name, Constructor< R >[] constructors)
 
final< R > DatatypeSort< R > mkDatatypeSort (String name, Constructor< R >[] constructors)
 
DatatypeSort< Object >[] mkDatatypeSorts (Symbol[] names, Constructor< Object >[][] c)
 
DatatypeSort< Object >[] mkDatatypeSorts (String[] names, Constructor< Object >[][] c)
 
final< F extends Sort, R extends Sort > Expr< R > mkUpdateField (FuncDecl< F > field, Expr< R > t, Expr< F > v) throws Z3Exception
 
final< R extends Sort > FuncDecl< R > mkFuncDecl (Symbol name, Sort[] domain, R range)
 
final< R extends Sort > FuncDecl< R > mkPropagateFunction (Symbol name, Sort[] domain, R range)
 
final< R extends Sort > FuncDecl< R > mkFuncDecl (Symbol name, Sort domain, R range)
 
final< R extends Sort > FuncDecl< R > mkFuncDecl (String name, Sort[] domain, R range)
 
final< R extends Sort > FuncDecl< R > mkFuncDecl (String name, Sort domain, R range)
 
final< R extends Sort > FuncDecl< R > mkRecFuncDecl (Symbol name, Sort[] domain, R range)
 
final< R extends Sort > void AddRecDef (FuncDecl< R > f, Expr<?>[] args, Expr< R > body)
 
final< R extends Sort > FuncDecl< R > mkFreshFuncDecl (String prefix, Sort[] domain, R range)
 
final< R extends Sort > FuncDecl< R > mkConstDecl (Symbol name, R range)
 
final< R extends Sort > FuncDecl< R > mkConstDecl (String name, R range)
 
final< R extends Sort > FuncDecl< R > mkFreshConstDecl (String prefix, R range)
 
final< R extends Sort > Expr< R > mkBound (int index, R ty)
 
final Pattern mkPattern (Expr<?>... terms)
 
final< R extends Sort > Expr< R > mkConst (Symbol name, R range)
 
final< R extends Sort > Expr< R > mkConst (String name, R range)
 
final< R extends Sort > Expr< R > mkFreshConst (String prefix, R range)
 
final< R extends Sort > Expr< R > mkConst (FuncDecl< R > f)
 
BoolExpr mkBoolConst (Symbol name)
 
BoolExpr mkBoolConst (String name)
 
IntExpr mkIntConst (Symbol name)
 
IntExpr mkIntConst (String name)
 
RealExpr mkRealConst (Symbol name)
 
RealExpr mkRealConst (String name)
 
BitVecExpr mkBVConst (Symbol name, int size)
 
BitVecExpr mkBVConst (String name, int size)
 
final< R extends Sort > Expr< R > mkApp (FuncDecl< R > f, Expr<?>... args)
 
BoolExpr mkTrue ()
 
BoolExpr mkFalse ()
 
BoolExpr mkBool (boolean value)
 
BoolExpr mkEq (Expr<?> x, Expr<?> y)
 
final BoolExpr mkDistinct (Expr<?>... args)
 
final BoolExpr mkNot (Expr< BoolSort > a)
 
final< R extends Sort > Expr< R > mkITE (Expr< BoolSort > t1, Expr<? extends R > t2, Expr<? extends R > t3)
 
BoolExpr mkIff (Expr< BoolSort > t1, Expr< BoolSort > t2)
 
BoolExpr mkImplies (Expr< BoolSort > t1, Expr< BoolSort > t2)
 
BoolExpr mkXor (Expr< BoolSort > t1, Expr< BoolSort > t2)
 
final BoolExpr mkAnd (Expr< BoolSort >... t)
 
final BoolExpr mkOr (Expr< BoolSort >... t)
 
final< R extends ArithSort > ArithExpr< R > mkAdd (Expr<? extends R >... t)
 
final< R extends ArithSort > ArithExpr< R > mkMul (Expr<? extends R >... t)
 
final< R extends ArithSort > ArithExpr< R > mkSub (Expr<? extends R >... t)
 
final< R extends ArithSort > ArithExpr< R > mkUnaryMinus (Expr< R > t)
 
final< R extends ArithSort > ArithExpr< R > mkDiv (Expr<? extends R > t1, Expr<? extends R > t2)
 
IntExpr mkMod (Expr< IntSort > t1, Expr< IntSort > t2)
 
IntExpr mkRem (Expr< IntSort > t1, Expr< IntSort > t2)
 
final< R extends ArithSort > ArithExpr< R > mkPower (Expr<? extends R > t1, Expr<? extends R > t2)
 
BoolExpr mkLt (Expr<? extends ArithSort > t1, Expr<? extends ArithSort > t2)
 
BoolExpr mkLe (Expr<? extends ArithSort > t1, Expr<? extends ArithSort > t2)
 
BoolExpr mkGt (Expr<? extends ArithSort > t1, Expr<? extends ArithSort > t2)
 
BoolExpr mkGe (Expr<? extends ArithSort > t1, Expr<? extends ArithSort > t2)
 
RealExpr mkInt2Real (Expr< IntSort > t)
 
IntExpr mkReal2Int (Expr< RealSort > t)
 
BoolExpr mkIsInteger (Expr< RealSort > t)
 
BitVecExpr mkBVNot (Expr< BitVecSort > t)
 
BitVecExpr mkBVRedAND (Expr< BitVecSort > t)
 
BitVecExpr mkBVRedOR (Expr< BitVecSort > t)
 
BitVecExpr mkBVAND (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVOR (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVXOR (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVNAND (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVNOR (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVXNOR (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVNeg (Expr< BitVecSort > t)
 
BitVecExpr mkBVAdd (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVSub (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVMul (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVUDiv (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVSDiv (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVURem (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVSRem (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVSMod (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BoolExpr mkBVULT (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BoolExpr mkBVSLT (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BoolExpr mkBVULE (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BoolExpr mkBVSLE (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BoolExpr mkBVUGE (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BoolExpr mkBVSGE (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BoolExpr mkBVUGT (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BoolExpr mkBVSGT (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkConcat (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkExtract (int high, int low, Expr< BitVecSort > t)
 
BitVecExpr mkSignExt (int i, Expr< BitVecSort > t)
 
BitVecExpr mkZeroExt (int i, Expr< BitVecSort > t)
 
BitVecExpr mkRepeat (int i, Expr< BitVecSort > t)
 
BitVecExpr mkBVSHL (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVLSHR (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVASHR (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVRotateLeft (int i, Expr< BitVecSort > t)
 
BitVecExpr mkBVRotateRight (int i, Expr< BitVecSort > t)
 
BitVecExpr mkBVRotateLeft (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkBVRotateRight (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BitVecExpr mkInt2BV (int n, Expr< IntSort > t)
 
IntExpr mkBV2Int (Expr< BitVecSort > t, boolean signed)
 
BoolExpr mkBVAddNoOverflow (Expr< BitVecSort > t1, Expr< BitVecSort > t2, boolean isSigned)
 
BoolExpr mkBVAddNoUnderflow (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BoolExpr mkBVSubNoOverflow (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BoolExpr mkBVSubNoUnderflow (Expr< BitVecSort > t1, Expr< BitVecSort > t2, boolean isSigned)
 
BoolExpr mkBVSDivNoOverflow (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
BoolExpr mkBVNegNoOverflow (Expr< BitVecSort > t)
 
BoolExpr mkBVMulNoOverflow (Expr< BitVecSort > t1, Expr< BitVecSort > t2, boolean isSigned)
 
BoolExpr mkBVMulNoUnderflow (Expr< BitVecSort > t1, Expr< BitVecSort > t2)
 
final< D extends Sort, R extends Sort > ArrayExpr< D, R > mkArrayConst (Symbol name, D domain, R range)
 
final< D extends Sort, R extends Sort > ArrayExpr< D, R > mkArrayConst (String name, D domain, R range)
 
final< D extends Sort, R extends Sort > Expr< R > mkSelect (Expr< ArraySort< D, R > > a, Expr< D > i)
 
final< R extends Sort > Expr< R > mkSelect (Expr< ArraySort< Sort, R > > a, Expr<?>[] args)
 
final< D extends Sort, R extends Sort > ArrayExpr< D, R > mkStore (Expr< ArraySort< D, R > > a, Expr< D > i, Expr< R > v)
 
final< R extends Sort > ArrayExpr< Sort, R > mkStore (Expr< ArraySort< Sort, R > > a, Expr<?>[] args, Expr< R > v)
 
final< D extends Sort, R extends Sort > ArrayExpr< D, R > mkConstArray (D domain, Expr< R > v)
 
final< D extends Sort, R1 extends Sort, R2 extends Sort > ArrayExpr< D, R2 > mkMap (FuncDecl< R2 > f, Expr< ArraySort< D, R1 > >... args)
 
final< D extends Sort, R extends Sort > Expr< R > mkTermArray (Expr< ArraySort< D, R > > array)
 
final< D extends Sort, R extends Sort > Expr< D > mkArrayExt (Expr< ArraySort< D, R > > arg1, Expr< ArraySort< D, R > > arg2)
 
final< D extends Sort > SetSort< D > mkSetSort (D ty)
 
final< D extends Sort > ArrayExpr< D, BoolSortmkEmptySet (D domain)
 
final< D extends Sort > ArrayExpr< D, BoolSortmkFullSet (D domain)
 
final< D extends Sort > ArrayExpr< D, BoolSortmkSetAdd (Expr< ArraySort< D, BoolSort > > set, Expr< D > element)
 
final< D extends Sort > ArrayExpr< D, BoolSortmkSetDel (Expr< ArraySort< D, BoolSort > > set, Expr< D > element)
 
final< D extends Sort > ArrayExpr< D, BoolSortmkSetUnion (Expr< ArraySort< D, BoolSort > >... args)
 
final< D extends Sort > ArrayExpr< D, BoolSortmkSetIntersection (Expr< ArraySort< D, BoolSort > >... args)
 
final< D extends Sort > ArrayExpr< D, BoolSortmkSetDifference (Expr< ArraySort< D, BoolSort > > arg1, Expr< ArraySort< D, BoolSort > > arg2)
 
final< D extends Sort > ArrayExpr< D, BoolSortmkSetComplement (Expr< ArraySort< D, BoolSort > > arg)
 
final< D extends Sort > BoolExpr mkSetMembership (Expr< D > elem, Expr< ArraySort< D, BoolSort > > set)
 
final< D extends Sort > BoolExpr mkSetSubset (Expr< ArraySort< D, BoolSort > > arg1, Expr< ArraySort< D, BoolSort > > arg2)
 
final< R extends Sort > SeqExpr< R > mkEmptySeq (R s)
 
final< R extends Sort > SeqExpr< R > mkUnit (Expr< R > elem)
 
SeqExpr< CharSortmkString (String s)
 
SeqExpr< CharSortintToString (Expr< IntSort > e)
 
SeqExpr< CharSortubvToString (Expr< BitVecSort > e)
 
SeqExpr< CharSortsbvToString (Expr< BitVecSort > e)
 
IntExpr stringToInt (Expr< SeqSort< CharSort > > e)
 
final< R extends Sort > SeqExpr< R > mkConcat (Expr< SeqSort< R > >... t)
 
final< R extends Sort > IntExpr mkLength (Expr< SeqSort< R > > s)
 
final< R extends Sort > BoolExpr mkPrefixOf (Expr< SeqSort< R > > s1, Expr< SeqSort< R > > s2)
 
final< R extends Sort > BoolExpr mkSuffixOf (Expr< SeqSort< R > > s1, Expr< SeqSort< R > > s2)
 
final< R extends Sort > BoolExpr mkContains (Expr< SeqSort< R > > s1, Expr< SeqSort< R > > s2)
 
BoolExpr MkStringLt (Expr< SeqSort< CharSort > > s1, Expr< SeqSort< CharSort > > s2)
 
BoolExpr MkStringLe (Expr< SeqSort< CharSort > > s1, Expr< SeqSort< CharSort > > s2)
 
final< R extends Sort > SeqExpr< R > mkAt (Expr< SeqSort< R > > s, Expr< IntSort > index)
 
final< R extends Sort > Expr< R > mkNth (Expr< SeqSort< R > > s, Expr< IntSort > index)
 
final< R extends Sort > SeqExpr< R > mkExtract (Expr< SeqSort< R > > s, Expr< IntSort > offset, Expr< IntSort > length)
 
final< R extends Sort > IntExpr mkIndexOf (Expr< SeqSort< R > > s, Expr< SeqSort< R > > substr, Expr< IntSort > offset)
 
final< R extends Sort > IntExpr mkLastIndexOf (Expr< SeqSort< R > > s, Expr< SeqSort< R > > substr)
 
final< R extends Sort > SeqExpr< R > mkReplace (Expr< SeqSort< R > > s, Expr< SeqSort< R > > src, Expr< SeqSort< R > > dst)
 
final< R extends Sort > SeqExpr< R > mkReplaceAll (Expr< SeqSort< R > > s, Expr< SeqSort< R > > src, Expr< SeqSort< R > > dst)
 
final< R extends Sort > SeqExpr< R > mkReplaceRe (Expr< SeqSort< R > > s, ReExpr< SeqSort< R > > re, Expr< SeqSort< R > > dst)
 
final< R extends Sort > SeqExpr< R > mkReplaceReAll (Expr< SeqSort< R > > s, ReExpr< SeqSort< R > > re, Expr< SeqSort< R > > dst)
 
final< R extends Sort > ReExpr< SeqSort< R > > mkToRe (Expr< SeqSort< R > > s)
 
final< R extends Sort > BoolExpr mkInRe (Expr< SeqSort< R > > s, ReExpr< SeqSort< R > > re)
 
final< R extends Sort > ReExpr< R > mkStar (Expr< ReSort< R > > re)
 
final< R extends Sort > ReExpr< R > mkPower (Expr< ReSort< R > > re, int n)
 
final< R extends Sort > ReExpr< R > mkLoop (Expr< ReSort< R > > re, int lo, int hi)
 
final< R extends Sort > ReExpr< R > mkLoop (Expr< ReSort< R > > re, int lo)
 
final< R extends Sort > ReExpr< R > mkPlus (Expr< ReSort< R > > re)
 
final< R extends Sort > ReExpr< R > mkOption (Expr< ReSort< R > > re)
 
final< R extends Sort > ReExpr< R > mkComplement (Expr< ReSort< R > > re)
 
final< R extends Sort > ReExpr< R > mkConcat (ReExpr< R >... t)
 
final< R extends Sort > ReExpr< R > mkUnion (Expr< ReSort< R > >... t)
 
final< R extends Sort > ReExpr< R > mkIntersect (Expr< ReSort< R > >... t)
 
final< R extends Sort > ReExpr< R > mkDiff (Expr< ReSort< R > > a, Expr< ReSort< R > > b)
 
final< R extends Sort > ReExpr< R > mkEmptyRe (ReSort< R > s)
 
final< R extends Sort > ReExpr< R > mkFullRe (ReSort< R > s)
 
final< R extends Sort > ReExpr< R > mkAllcharRe (ReSort< R > s)
 
final ReExpr< SeqSort< CharSort > > mkRange (Expr< SeqSort< CharSort > > lo, Expr< SeqSort< CharSort > > hi)
 
BoolExpr mkCharLe (Expr< CharSort > ch1, Expr< CharSort > ch2)
 
IntExpr charToInt (Expr< CharSort > ch)
 
BitVecExpr charToBv (Expr< CharSort > ch)
 
Expr< CharSortcharFromBv (BitVecExpr bv)
 
BoolExpr mkIsDigit (Expr< CharSort > ch)
 
BoolExpr mkAtMost (Expr< BoolSort >[] args, int k)
 
BoolExpr mkAtLeast (Expr< BoolSort >[] args, int k)
 
BoolExpr mkPBLe (int[] coeffs, Expr< BoolSort >[] args, int k)
 
BoolExpr mkPBGe (int[] coeffs, Expr< BoolSort >[] args, int k)
 
BoolExpr mkPBEq (int[] coeffs, Expr< BoolSort >[] args, int k)
 
final< R extends Sort > Expr< R > mkNumeral (String v, R ty)
 
final< R extends Sort > Expr< R > mkNumeral (int v, R ty)
 
final< R extends Sort > Expr< R > mkNumeral (long v, R ty)
 
RatNum mkReal (int num, int den)
 
RatNum mkReal (String v)
 
RatNum mkReal (int v)
 
RatNum mkReal (long v)
 
IntNum mkInt (String v)
 
IntNum mkInt (int v)
 
IntNum mkInt (long v)
 
BitVecNum mkBV (String v, int size)
 
BitVecNum mkBV (int v, int size)
 
BitVecNum mkBV (long v, int size)
 
Quantifier mkForall (Sort[] sorts, Symbol[] names, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
 
Quantifier mkForall (Expr<?>[] boundConstants, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
 
Quantifier mkExists (Sort[] sorts, Symbol[] names, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
 
Quantifier mkExists (Expr<?>[] boundConstants, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
 
Quantifier mkQuantifier (boolean universal, Sort[] sorts, Symbol[] names, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
 
Quantifier mkQuantifier (boolean universal, Expr<?>[] boundConstants, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
 
final< R extends Sort > Lambda< R > mkLambda (Sort[] sorts, Symbol[] names, Expr< R > body)
 
final< R extends Sort > Lambda< R > mkLambda (Expr<?>[] boundConstants, Expr< R > body)
 
void setPrintMode (Z3_ast_print_mode value)
 
String benchmarkToSMTString (String name, String logic, String status, String attributes, Expr< BoolSort >[] assumptions, Expr< BoolSort > formula)
 
BoolExpr[] parseSMTLIB2String (String str, Symbol[] sortNames, Sort[] sorts, Symbol[] declNames, FuncDecl<?>[] decls)
 
BoolExpr[] parseSMTLIB2File (String fileName, Symbol[] sortNames, Sort[] sorts, Symbol[] declNames, FuncDecl<?>[] decls)
 
Goal mkGoal (boolean models, boolean unsatCores, boolean proofs)
 
Params mkParams ()
 
int getNumTactics ()
 
String[] getTacticNames ()
 
String getTacticDescription (String name)
 
Tactic mkTactic (String name)
 
Tactic andThen (Tactic t1, Tactic t2, Tactic... ts)
 
Tactic then (Tactic t1, Tactic t2, Tactic... ts)
 
Tactic orElse (Tactic t1, Tactic t2)
 
Tactic tryFor (Tactic t, int ms)
 
Tactic when (Probe p, Tactic t)
 
Tactic cond (Probe p, Tactic t1, Tactic t2)
 
Tactic repeat (Tactic t, int max)
 
Tactic skip ()
 
Tactic fail ()
 
Tactic failIf (Probe p)
 
Tactic failIfNotDecided ()
 
Tactic usingParams (Tactic t, Params p)
 
Tactic with (Tactic t, Params p)
 
Tactic parOr (Tactic... t)
 
Tactic parAndThen (Tactic t1, Tactic t2)
 
void interrupt ()
 
int getNumSimplifiers ()
 
String[] getSimplifierNames ()
 
String getSimplifierDescription (String name)
 
Simplifier mkSimplifier (String name)
 
Simplifier andThen (Simplifier t1, Simplifier t2, Simplifier... ts)
 
Simplifier then (Simplifier t1, Simplifier t2, Simplifier... ts)
 
Simplifier usingParams (Simplifier t, Params p)
 
Simplifier with (Simplifier t, Params p)
 
int getNumProbes ()
 
String[] getProbeNames ()
 
String getProbeDescription (String name)
 
Probe mkProbe (String name)
 
Probe constProbe (double val)
 
Probe lt (Probe p1, Probe p2)
 
Probe gt (Probe p1, Probe p2)
 
Probe le (Probe p1, Probe p2)
 
Probe ge (Probe p1, Probe p2)
 
Probe eq (Probe p1, Probe p2)
 
Probe and (Probe p1, Probe p2)
 
Probe or (Probe p1, Probe p2)
 
Probe not (Probe p)
 
Solver mkSolver ()
 
Solver mkSolver (Symbol logic)
 
Solver mkSolver (String logic)
 
Solver mkSimpleSolver ()
 
Solver mkSolver (Tactic t)
 
Solver mkSolver (Solver s, Simplifier simp)
 
Fixedpoint mkFixedpoint ()
 
Optimize mkOptimize ()
 
FPRMSort mkFPRoundingModeSort ()
 
FPRMExpr mkFPRoundNearestTiesToEven ()
 
FPRMNum mkFPRNE ()
 
FPRMNum mkFPRoundNearestTiesToAway ()
 
FPRMNum mkFPRNA ()
 
FPRMNum mkFPRoundTowardPositive ()
 
FPRMNum mkFPRTP ()
 
FPRMNum mkFPRoundTowardNegative ()
 
FPRMNum mkFPRTN ()
 
FPRMNum mkFPRoundTowardZero ()
 
FPRMNum mkFPRTZ ()
 
FPSort mkFPSort (int ebits, int sbits)
 
FPSort mkFPSortHalf ()
 
FPSort mkFPSort16 ()
 
FPSort mkFPSortSingle ()
 
FPSort mkFPSort32 ()
 
FPSort mkFPSortDouble ()
 
FPSort mkFPSort64 ()
 
FPSort mkFPSortQuadruple ()
 
FPSort mkFPSort128 ()
 
FPNum mkFPNaN (FPSort s)
 
FPNum mkFPInf (FPSort s, boolean negative)
 
FPNum mkFPZero (FPSort s, boolean negative)
 
FPNum mkFPNumeral (float v, FPSort s)
 
FPNum mkFPNumeral (double v, FPSort s)
 
FPNum mkFPNumeral (int v, FPSort s)
 
FPNum mkFPNumeral (boolean sgn, int exp, int sig, FPSort s)
 
FPNum mkFPNumeral (boolean sgn, long exp, long sig, FPSort s)
 
FPNum mkFP (float v, FPSort s)
 
FPNum mkFP (double v, FPSort s)
 
FPNum mkFP (int v, FPSort s)
 
FPNum mkFP (boolean sgn, int exp, int sig, FPSort s)
 
FPNum mkFP (boolean sgn, long exp, long sig, FPSort s)
 
FPExpr mkFPAbs (Expr< FPSort > t)
 
FPExpr mkFPNeg (Expr< FPSort > t)
 
FPExpr mkFPAdd (Expr< FPRMSort > rm, Expr< FPSort > t1, Expr< FPSort > t2)
 
FPExpr mkFPSub (Expr< FPRMSort > rm, Expr< FPSort > t1, Expr< FPSort > t2)
 
FPExpr mkFPMul (Expr< FPRMSort > rm, Expr< FPSort > t1, Expr< FPSort > t2)
 
FPExpr mkFPDiv (Expr< FPRMSort > rm, Expr< FPSort > t1, Expr< FPSort > t2)
 
FPExpr mkFPFMA (Expr< FPRMSort > rm, Expr< FPSort > t1, Expr< FPSort > t2, Expr< FPSort > t3)
 
FPExpr mkFPSqrt (Expr< FPRMSort > rm, Expr< FPSort > t)
 
FPExpr mkFPRem (Expr< FPSort > t1, Expr< FPSort > t2)
 
FPExpr mkFPRoundToIntegral (Expr< FPRMSort > rm, Expr< FPSort > t)
 
FPExpr mkFPMin (Expr< FPSort > t1, Expr< FPSort > t2)
 
FPExpr mkFPMax (Expr< FPSort > t1, Expr< FPSort > t2)
 
BoolExpr mkFPLEq (Expr< FPSort > t1, Expr< FPSort > t2)
 
BoolExpr mkFPLt (Expr< FPSort > t1, Expr< FPSort > t2)
 
BoolExpr mkFPGEq (Expr< FPSort > t1, Expr< FPSort > t2)
 
BoolExpr mkFPGt (Expr< FPSort > t1, Expr< FPSort > t2)
 
BoolExpr mkFPEq (Expr< FPSort > t1, Expr< FPSort > t2)
 
BoolExpr mkFPIsNormal (Expr< FPSort > t)
 
BoolExpr mkFPIsSubnormal (Expr< FPSort > t)
 
BoolExpr mkFPIsZero (Expr< FPSort > t)
 
BoolExpr mkFPIsInfinite (Expr< FPSort > t)
 
BoolExpr mkFPIsNaN (Expr< FPSort > t)
 
BoolExpr mkFPIsNegative (Expr< FPSort > t)
 
BoolExpr mkFPIsPositive (Expr< FPSort > t)
 
FPExpr mkFP (Expr< BitVecSort > sgn, Expr< BitVecSort > sig, Expr< BitVecSort > exp)
 
FPExpr mkFPToFP (Expr< BitVecSort > bv, FPSort s)
 
FPExpr mkFPToFP (Expr< FPRMSort > rm, FPExpr t, FPSort s)
 
FPExpr mkFPToFP (Expr< FPRMSort > rm, RealExpr t, FPSort s)
 
FPExpr mkFPToFP (Expr< FPRMSort > rm, Expr< BitVecSort > t, FPSort s, boolean signed)
 
FPExpr mkFPToFP (FPSort s, Expr< FPRMSort > rm, Expr< FPSort > t)
 
BitVecExpr mkFPToBV (Expr< FPRMSort > rm, Expr< FPSort > t, int sz, boolean signed)
 
RealExpr mkFPToReal (Expr< FPSort > t)
 
BitVecExpr mkFPToIEEEBV (Expr< FPSort > t)
 
BitVecExpr mkFPToFP (Expr< FPRMSort > rm, Expr< IntSort > exp, Expr< RealSort > sig, FPSort s)
 
final< R extends Sort > FuncDecl< BoolSortmkLinearOrder (R sort, int index)
 
final< R extends Sort > FuncDecl< BoolSortmkPartialOrder (R sort, int index)
 
AST wrapAST (long nativeObject)
 
long unwrapAST (AST a)
 
String SimplifyHelp ()
 
ParamDescrs getSimplifyParameterDescriptions ()
 
void updateParamValue (String id, String value)
 
long nCtx ()
 
void close ()
 

Protected Member Functions

 Context (long m_ctx)
 

Detailed Description

The main interaction with Z3 happens via the Context. For applications that spawn an unbounded number of contexts, the proper use is within a try-with-resources scope so that the Context object gets garbage collected in a predictable way. Contexts maintain all data-structures related to terms and formulas that are created relative to them.

Definition at line 36 of file Context.java.

Constructor & Destructor Documentation

◆ Context() [1/3]

Context ( )
inline

Definition at line 40 of file Context.java.

40 {
41 synchronized (creation_lock) {
42 m_ctx = Native.mkContextRc(0);
43 init();
44 }
45 }

◆ Context() [2/3]

Context ( long  m_ctx)
inlineprotected

Definition at line 47 of file Context.java.

47 {
48 synchronized (creation_lock) {
49 this.m_ctx = m_ctx;
50 init();
51 }
52 }

◆ Context() [3/3]

Context ( Map< String, String >  settings)
inline

Constructor. Remarks: The following parameters can be set:

  • proof (Boolean) Enable proof generation
  • debug_ref_count (Boolean) Enable debug support for Z3_ast reference counting
  • trace (Boolean) Tracing support for VCC
  • trace_file_name (String) Trace out file for VCC traces
  • timeout (unsigned) default timeout (in milliseconds) used for solvers
  • well_sorted_check type checker
  • auto_config use heuristics to automatically select solver and configure it
  • model model generation for solvers, this parameter can be overwritten when creating a solver
  • model_validate validate models produced by solvers
  • unsat_core unsat-core generation for solvers, this parameter can be overwritten when creating a solver Note that in previous versions of Z3, this constructor was also used to set global and module parameters. For this purpose we should now use Global.setParameter

Definition at line 72 of file Context.java.

72 {
73 synchronized (creation_lock) {
74 long cfg = Native.mkConfig();
75 for (Map.Entry<String, String> kv : settings.entrySet()) {
76 Native.setParamValue(cfg, kv.getKey(), kv.getValue());
77 }
78 m_ctx = Native.mkContextRc(cfg);
79 Native.delConfig(cfg);
80 init();
81 }
82 }
Map(f, *args)
Definition z3py.py:4957

Member Function Documentation

◆ AddRecDef()

final< R extends Sort > void AddRecDef ( FuncDecl< R >  f,
Expr<?>[]  args,
Expr< R >  body 
)
inline

Bind a definition to a recursive function declaration. The function must have previously been created using MkRecFuncDecl. The body may contain recursive uses of the function or other mutually recursive functions.

Definition at line 572 of file Context.java.

573 {
574 checkContextMatch(f);
575 checkContextMatch(args);
576 checkContextMatch(body);
577 long[] argsNative = AST.arrayToNative(args);
578 Native.addRecDef(nCtx(), f.getNativeObject(), args.length, argsNative, body.getNativeObject());
579 }

◆ and()

Probe and ( Probe  p1,
Probe  p2 
)
inline

Create a probe that evaluates to true when the value p1 and p2 evaluate to true.

Definition at line 3395 of file Context.java.

3396 {
3397 checkContextMatch(p1);
3398 checkContextMatch(p2);
3399 return new Probe(this, Native.probeAnd(nCtx(), p1.getNativeObject(),
3400 p2.getNativeObject()));
3401 }

◆ andThen() [1/2]

Simplifier andThen ( Simplifier  t1,
Simplifier  t2,
Simplifier...  ts 
)
inline

Create a simplifier that applies t1 and then t1

Definition at line 3225 of file Context.java.

3227 {
3228 checkContextMatch(t1);
3229 checkContextMatch(t2);
3230 checkContextMatch(ts);
3231
3232 long last = 0;
3233 if (ts != null && ts.length > 0)
3234 {
3235 last = ts[ts.length - 1].getNativeObject();
3236 for (int i = ts.length - 2; i >= 0; i--) {
3237 last = Native.simplifierAndThen(nCtx(), ts[i].getNativeObject(),
3238 last);
3239 }
3240 }
3241 if (last != 0)
3242 {
3243 last = Native.simplifierAndThen(nCtx(), t2.getNativeObject(), last);
3244 return new Simplifier(this, Native.simplifierAndThen(nCtx(),
3245 t1.getNativeObject(), last));
3246 } else
3247 return new Simplifier(this, Native.simplifierAndThen(nCtx(),
3248 t1.getNativeObject(), t2.getNativeObject()));
3249 }

◆ andThen() [2/2]

Tactic andThen ( Tactic  t1,
Tactic  t2,
Tactic...  ts 
)
inline

Create a tactic that applies t1 to a Goal and then t2 to every subgoal produced by t1

Definition at line 2991 of file Context.java.

2993 {
2994 checkContextMatch(t1);
2995 checkContextMatch(t2);
2996 checkContextMatch(ts);
2997
2998 long last = 0;
2999 if (ts != null && ts.length > 0)
3000 {
3001 last = ts[ts.length - 1].getNativeObject();
3002 for (int i = ts.length - 2; i >= 0; i--) {
3003 last = Native.tacticAndThen(nCtx(), ts[i].getNativeObject(),
3004 last);
3005 }
3006 }
3007 if (last != 0)
3008 {
3009 last = Native.tacticAndThen(nCtx(), t2.getNativeObject(), last);
3010 return new Tactic(this, Native.tacticAndThen(nCtx(),
3011 t1.getNativeObject(), last));
3012 } else
3013 return new Tactic(this, Native.tacticAndThen(nCtx(),
3014 t1.getNativeObject(), t2.getNativeObject()));
3015 }

◆ benchmarkToSMTString()

String benchmarkToSMTString ( String  name,
String  logic,
String  status,
String  attributes,
Expr< BoolSort >[]  assumptions,
Expr< BoolSort formula 
)
inline

Convert a benchmark into an SMT-LIB formatted string.

Parameters
nameName of the benchmark. The argument is optional.
logicThe benchmark logic.
statusThe status string (sat, unsat, or unknown)
attributesOther attributes, such as source, difficulty or category.
assumptionsAuxiliary assumptions.
formulaFormula to be checked for consistency in conjunction with assumptions.
Returns
A string representation of the benchmark.

Definition at line 2869 of file Context.java.

2872 {
2873
2874 return Native.benchmarkToSmtlibString(nCtx(), name, logic, status,
2875 attributes, assumptions.length,
2876 AST.arrayToNative(assumptions), formula.getNativeObject());
2877 }

◆ charFromBv()

Expr< CharSort > charFromBv ( BitVecExpr  bv)
inline

Create a character from a bit-vector (code point).

Definition at line 2461 of file Context.java.

2462 {
2463 checkContextMatch(bv);
2464 return (Expr<CharSort>) Expr.create(this, Native.mkCharFromBv(nCtx(), bv.getNativeObject()));
2465 }

◆ charToBv()

BitVecExpr charToBv ( Expr< CharSort ch)
inline

Create a bit-vector (code point) from character.

Definition at line 2452 of file Context.java.

2453 {
2454 checkContextMatch(ch);
2455 return (BitVecExpr) Expr.create(this, Native.mkCharToBv(nCtx(), ch.getNativeObject()));
2456 }

◆ charToInt()

IntExpr charToInt ( Expr< CharSort ch)
inline

Create an integer (code point) from character.

Definition at line 2443 of file Context.java.

2444 {
2445 checkContextMatch(ch);
2446 return (IntExpr) Expr.create(this, Native.mkCharToInt(nCtx(), ch.getNativeObject()));
2447 }

◆ close()

void close ( )
inline

Disposes of the context.

Definition at line 4414 of file Context.java.

4415 {
4416 if (m_ctx == 0)
4417 return;
4418
4419 m_RefQueue.forceClear();
4420
4421 m_boolSort = null;
4422 m_intSort = null;
4423 m_realSort = null;
4424 m_stringSort = null;
4425 m_RefQueue = null;
4426
4427 synchronized (creation_lock) {
4428 Native.delContext(m_ctx);
4429 }
4430 m_ctx = 0;
4431 }

◆ cond()

Tactic cond ( Probe  p,
Tactic  t1,
Tactic  t2 
)
inline

Create a tactic that applies t1 to a given goal if the probe p evaluates to true and t2 otherwise.

Definition at line 3073 of file Context.java.

3074 {
3075 checkContextMatch(p);
3076 checkContextMatch(t1);
3077 checkContextMatch(t2);
3078 return new Tactic(this, Native.tacticCond(nCtx(), p.getNativeObject(),
3079 t1.getNativeObject(), t2.getNativeObject()));
3080 }

◆ constProbe()

Probe constProbe ( double  val)
inline

Create a probe that always evaluates to val.

Definition at line 3325 of file Context.java.

3326 {
3327 return new Probe(this, Native.probeConst(nCtx(), val));
3328 }

◆ eq()

Probe eq ( Probe  p1,
Probe  p2 
)
inline

Create a probe that evaluates to true when the value returned by p1 is equal to the value returned by p2

Definition at line 3384 of file Context.java.

3385 {
3386 checkContextMatch(p1);
3387 checkContextMatch(p2);
3388 return new Probe(this, Native.probeEq(nCtx(), p1.getNativeObject(),
3389 p2.getNativeObject()));
3390 }

Referenced by AstRef.__eq__(), and SortRef.cast().

◆ fail()

Tactic fail ( )
inline

Create a tactic always fails.

Definition at line 3104 of file Context.java.

3105 {
3106 return new Tactic(this, Native.tacticFail(nCtx()));
3107 }

◆ failIf()

Tactic failIf ( Probe  p)
inline

Create a tactic that fails if the probe p evaluates to false.

Definition at line 3113 of file Context.java.

3114 {
3115 checkContextMatch(p);
3116 return new Tactic(this,
3117 Native.tacticFailIf(nCtx(), p.getNativeObject()));
3118 }

◆ failIfNotDecided()

Tactic failIfNotDecided ( )
inline

Create a tactic that fails if the goal is not trivially satisfiable (i.e., empty) or trivially unsatisfiable (i.e., contains ‘false’).

Definition at line 3124 of file Context.java.

3125 {
3126 return new Tactic(this, Native.tacticFailIfNotDecided(nCtx()));
3127 }

◆ ge()

Probe ge ( Probe  p1,
Probe  p2 
)
inline

Create a probe that evaluates to true when the value returned by p1 is greater than or equal the value returned by p2

Definition at line 3372 of file Context.java.

3373 {
3374 checkContextMatch(p1);
3375 checkContextMatch(p2);
3376 return new Probe(this, Native.probeGe(nCtx(), p1.getNativeObject(),
3377 p2.getNativeObject()));
3378 }

◆ getBoolSort()

BoolSort getBoolSort ( )
inline

Retrieves the Boolean sort of the context.

Definition at line 128 of file Context.java.

129 {
130 if (m_boolSort == null) {
131 m_boolSort = new BoolSort(this);
132 }
133 return m_boolSort;
134 }
BoolSort(ctx=None)
Definition z3py.py:1783

◆ getIntSort()

IntSort getIntSort ( )
inline

Retrieves the Integer sort of the context.

Definition at line 139 of file Context.java.

140 {
141 if (m_intSort == null) {
142 m_intSort = new IntSort(this);
143 }
144 return m_intSort;
145 }
IntSort(ctx=None)
Definition z3py.py:3246

◆ getNumProbes()

int getNumProbes ( )
inline

The number of supported Probes.

Definition at line 3287 of file Context.java.

3288 {
3289 return Native.getNumProbes(nCtx());
3290 }

◆ getNumSimplifiers()

int getNumSimplifiers ( )
inline

The number of supported simplifiers.

Definition at line 3187 of file Context.java.

3188 {
3189 return Native.getNumSimplifiers(nCtx());
3190 }

◆ getNumTactics()

int getNumTactics ( )
inline

The number of supported tactics.

Definition at line 2952 of file Context.java.

2953 {
2954 return Native.getNumTactics(nCtx());
2955 }

◆ getProbeDescription()

String getProbeDescription ( String  name)
inline

Returns a string containing a description of the probe with the given name.

Definition at line 3309 of file Context.java.

3310 {
3311 return Native.probeGetDescr(nCtx(), name);
3312 }

◆ getProbeNames()

String[] getProbeNames ( )
inline

The names of all supported Probes.

Definition at line 3295 of file Context.java.

3296 {
3297
3298 int n = getNumProbes();
3299 String[] res = new String[n];
3300 for (int i = 0; i < n; i++)
3301 res[i] = Native.getProbeName(nCtx(), i);
3302 return res;
3303 }
String(name, ctx=None)
Definition z3py.py:11228

◆ getRealSort()

RealSort getRealSort ( )
inline

Retrieves the Real sort of the context.

Definition at line 150 of file Context.java.

151 {
152 if (m_realSort == null) {
153 m_realSort = new RealSort(this);
154 }
155 return m_realSort;
156 }
RealSort(ctx=None)
Definition z3py.py:3263

◆ getSimplifierDescription()

String getSimplifierDescription ( String  name)
inline

Returns a string containing a description of the simplifier with the given name.

Definition at line 3209 of file Context.java.

3210 {
3211 return Native.simplifierGetDescr(nCtx(), name);
3212 }

◆ getSimplifierNames()

String[] getSimplifierNames ( )
inline

The names of all supported simplifiers.

Definition at line 3195 of file Context.java.

3196 {
3197
3198 int n = getNumSimplifiers();
3199 String[] res = new String[n];
3200 for (int i = 0; i < n; i++)
3201 res[i] = Native.getSimplifierName(nCtx(), i);
3202 return res;
3203 }

◆ getSimplifyParameterDescriptions()

ParamDescrs getSimplifyParameterDescriptions ( )
inline

Retrieves parameter descriptions for simplifier.

Definition at line 4353 of file Context.java.

4354 {
4355 return new ParamDescrs(this, Native.simplifyGetParamDescrs(nCtx()));
4356 }

◆ getStringSort()

SeqSort< CharSort > getStringSort ( )
inline

Retrieves the String sort of the context.

Definition at line 178 of file Context.java.

179 {
180 if (m_stringSort == null) {
181 m_stringSort = mkStringSort();
182 }
183 return m_stringSort;
184 }
SeqSort< CharSort > mkStringSort()
Definition Context.java:251

◆ getTacticDescription()

String getTacticDescription ( String  name)
inline

Returns a string containing a description of the tactic with the given name.

Definition at line 2974 of file Context.java.

2975 {
2976 return Native.tacticGetDescr(nCtx(), name);
2977 }

◆ getTacticNames()

String[] getTacticNames ( )
inline

The names of all supported tactics.

Definition at line 2960 of file Context.java.

2961 {
2962
2963 int n = getNumTactics();
2964 String[] res = new String[n];
2965 for (int i = 0; i < n; i++)
2966 res[i] = Native.getTacticName(nCtx(), i);
2967 return res;
2968 }

◆ gt()

Probe gt ( Probe  p1,
Probe  p2 
)
inline

Create a probe that evaluates to true when the value returned by p1 is greater than the value returned by p2

Definition at line 3346 of file Context.java.

3347 {
3348 checkContextMatch(p1);
3349 checkContextMatch(p2);
3350 return new Probe(this, Native.probeGt(nCtx(), p1.getNativeObject(),
3351 p2.getNativeObject()));
3352 }

◆ interrupt()

void interrupt ( )
inline

Interrupt the execution of a Z3 procedure. Remarks: This procedure can be used to interrupt: solvers, simplifiers and tactics.

Definition at line 3179 of file Context.java.

3180 {
3181 Native.interrupt(nCtx());
3182 }

◆ intToString()

SeqExpr< CharSort > intToString ( Expr< IntSort e)
inline

Convert an integer expression to a string.

Definition at line 2096 of file Context.java.

2097 {
2098 return (SeqExpr<CharSort>) Expr.create(this, Native.mkIntToStr(nCtx(), e.getNativeObject()));
2099 }

◆ le()

Probe le ( Probe  p1,
Probe  p2 
)
inline

Create a probe that evaluates to true when the value returned by p1 is less than or equal the value returned by p2

Definition at line 3359 of file Context.java.

3360 {
3361 checkContextMatch(p1);
3362 checkContextMatch(p2);
3363 return new Probe(this, Native.probeLe(nCtx(), p1.getNativeObject(),
3364 p2.getNativeObject()));
3365 }

◆ lt()

Probe lt ( Probe  p1,
Probe  p2 
)
inline

Create a probe that evaluates to true when the value returned by p1 is less than the value returned by p2

Definition at line 3334 of file Context.java.

3335 {
3336 checkContextMatch(p1);
3337 checkContextMatch(p2);
3338 return new Probe(this, Native.probeLt(nCtx(), p1.getNativeObject(),
3339 p2.getNativeObject()));
3340 }

◆ mkAdd()

final< R extends ArithSort > ArithExpr< R > mkAdd ( Expr<? extends R >...  t)
inline

Create an expression representing t[0] + t[1] + ....

Definition at line 901 of file Context.java.

902 {
903 checkContextMatch(t);
904 return (ArithExpr<R>) Expr.create(this,
905 Native.mkAdd(nCtx(), t.length, AST.arrayToNative(t)));
906 }

◆ mkAllcharRe()

final< R extends Sort > ReExpr< R > mkAllcharRe ( ReSort< R >  s)
inline

Create regular expression that accepts all characters R has to be a sequence sort. Corresponds to re.allchar

Definition at line 2417 of file Context.java.

2418 {
2419 return (ReExpr<R>) Expr.create(this, Native.mkReAllchar(nCtx(), s.getNativeObject()));
2420 }

◆ mkAnd()

final BoolExpr mkAnd ( Expr< BoolSort >...  t)
inline

Create an expression representing t[0] and t[1] and ....

Definition at line 879 of file Context.java.

880 {
881 checkContextMatch(t);
882 return new BoolExpr(this, Native.mkAnd(nCtx(), t.length,
883 AST.arrayToNative(t)));
884 }

Referenced by Goal.AsBoolExpr().

◆ mkApp()

final< R extends Sort > Expr< R > mkApp ( FuncDecl< R >  f,
Expr<?>...  args 
)
inline

Create a new function application.

Definition at line 764 of file Context.java.

765 {
766 checkContextMatch(f);
767 checkContextMatch(args);
768 return Expr.create(this, f, args);
769 }

Referenced by ListSort< R extends Sort >.getNil().

◆ mkArrayConst() [1/2]

final< D extends Sort, R extends Sort > ArrayExpr< D, R > mkArrayConst ( String  name,
domain,
range 
)
inline

Create an array constant.

Definition at line 1768 of file Context.java.

1770 {
1771 return (ArrayExpr<D, R>) mkConst(mkSymbol(name), mkArraySort(domain, range));
1772 }
final< D extends Sort, R extends Sort > ArraySort< D, R > mkArraySort(D domain, R range)
Definition Context.java:230
final< R extends Sort > Expr< R > mkConst(Symbol name, R range)
Definition Context.java:656
IntSymbol mkSymbol(int i)
Definition Context.java:94

◆ mkArrayConst() [2/2]

final< D extends Sort, R extends Sort > ArrayExpr< D, R > mkArrayConst ( Symbol  name,
domain,
range 
)
inline

Create an array constant.

Definition at line 1759 of file Context.java.

1761 {
1762 return (ArrayExpr<D, R>) mkConst(name, mkArraySort(domain, range));
1763 }

◆ mkArrayExt()

final< D extends Sort, R extends Sort > Expr< D > mkArrayExt ( Expr< ArraySort< D, R > >  arg1,
Expr< ArraySort< D, R > >  arg2 
)
inline

Create Extentionality index. Two arrays are equal if and only if they are equal on the index returned by MkArrayExt.

Definition at line 1923 of file Context.java.

1924 {
1925 checkContextMatch(arg1);
1926 checkContextMatch(arg2);
1927 return (Expr<D>) Expr.create(this, Native.mkArrayExt(nCtx(), arg1.getNativeObject(), arg2.getNativeObject()));
1928 }

◆ mkArraySort() [1/2]

final< D extends Sort, R extends Sort > ArraySort< D, R > mkArraySort ( domain,
range 
)
inline

Create a new array sort.

Definition at line 230 of file Context.java.

231 {
232 checkContextMatch(domain);
233 checkContextMatch(range);
234 return new ArraySort<>(this, domain, range);
235 }

◆ mkArraySort() [2/2]

final< R extends Sort > ArraySort< Sort, R > mkArraySort ( Sort[]  domains,
range 
)
inline

Create a new array sort.

Definition at line 241 of file Context.java.

242 {
243 checkContextMatch(domains);
244 checkContextMatch(range);
245 return new ArraySort<>(this, domains, range);
246 }

◆ mkAt()

final< R extends Sort > SeqExpr< R > mkAt ( Expr< SeqSort< R > >  s,
Expr< IntSort index 
)
inline

Retrieve sequence of length one at index.

Definition at line 2195 of file Context.java.

2196 {
2197 checkContextMatch(s, index);
2198 return (SeqExpr<R>) Expr.create(this, Native.mkSeqAt(nCtx(), s.getNativeObject(), index.getNativeObject()));
2199 }

◆ mkAtLeast()

BoolExpr mkAtLeast ( Expr< BoolSort >[]  args,
int  k 
)
inline

Create an at-least-k constraint.

Definition at line 2488 of file Context.java.

2489 {
2490 checkContextMatch(args);
2491 return (BoolExpr) Expr.create(this, Native.mkAtleast(nCtx(), args.length, AST.arrayToNative(args), k));
2492 }

◆ mkAtMost()

BoolExpr mkAtMost ( Expr< BoolSort >[]  args,
int  k 
)
inline

Create an at-most-k constraint.

Definition at line 2479 of file Context.java.

2480 {
2481 checkContextMatch(args);
2482 return (BoolExpr) Expr.create(this, Native.mkAtmost(nCtx(), args.length, AST.arrayToNative(args), k));
2483 }

◆ mkBitVecSort()

BitVecSort mkBitVecSort ( int  size)
inline

Create a new bit-vector sort.

Definition at line 222 of file Context.java.

223 {
224 return new BitVecSort(this, Native.mkBvSort(nCtx(), size));
225 }
BitVecSort(sz, ctx=None)
Definition z3py.py:4116

◆ mkBool()

BoolExpr mkBool ( boolean  value)
inline

Creates a Boolean value.

Definition at line 790 of file Context.java.

791 {
792 return value ? mkTrue() : mkFalse();
793 }

Referenced by UserPropagatorBase.conflict().

◆ mkBoolConst() [1/2]

BoolExpr mkBoolConst ( String  name)
inline

Create a Boolean constant.

Definition at line 707 of file Context.java.

708 {
709 return (BoolExpr) mkConst(mkSymbol(name), getBoolSort());
710 }

◆ mkBoolConst() [2/2]

BoolExpr mkBoolConst ( Symbol  name)
inline

Create a Boolean constant.

Definition at line 699 of file Context.java.

700 {
701 return (BoolExpr) mkConst(name, getBoolSort());
702 }

◆ mkBoolSort()

BoolSort mkBoolSort ( )
inline

Create a new Boolean sort.

Definition at line 161 of file Context.java.

162 {
163 return new BoolSort(this);
164 }

◆ mkBound()

final< R extends Sort > Expr< R > mkBound ( int  index,
ty 
)
inline

Creates a new bound variable.

Parameters
indexThe de-Bruijn index of the variable
tyThe sort of the variable

Definition at line 632 of file Context.java.

633 {
634 return (Expr<R>) Expr.create(this,
635 Native.mkBound(nCtx(), index, ty.getNativeObject()));
636 }

◆ mkBV() [1/3]

BitVecNum mkBV ( int  v,
int  size 
)
inline

Create a bit-vector numeral.

Parameters
vvalue of the numeral.
sizethe size of the bit-vector

Definition at line 2681 of file Context.java.

2682 {
2683 return (BitVecNum) mkNumeral(v, mkBitVecSort(size));
2684 }
final< R extends Sort > Expr< R > mkNumeral(String v, R ty)
BitVecSort mkBitVecSort(int size)
Definition Context.java:222

◆ mkBV() [2/3]

BitVecNum mkBV ( long  v,
int  size 
)
inline

Create a bit-vector numeral.

Parameters
vvalue of the numeral. *
sizethe size of the bit-vector

Definition at line 2691 of file Context.java.

2692 {
2693 return (BitVecNum) mkNumeral(v, mkBitVecSort(size));
2694 }

◆ mkBV() [3/3]

BitVecNum mkBV ( String  v,
int  size 
)
inline

Create a bit-vector numeral.

Parameters
vA string representing the value in decimal notation.
sizethe size of the bit-vector

Definition at line 2671 of file Context.java.

2672 {
2673 return (BitVecNum) mkNumeral(v, mkBitVecSort(size));
2674 }

◆ mkBV2Int()

IntExpr mkBV2Int ( Expr< BitVecSort t,
boolean signed   
)
inline

Create an integer from the bit-vector argument t. Remarks: If is_signed is false, then the bit-vector t1 is treated as unsigned. So the result is non-negative and in the range [0..2^N-1], where N are the number of bits in t. If is_signed is true, t1 is treated as a signed bit-vector.

NB. This function is essentially treated as uninterpreted. So you cannot expect Z3 to precisely reflect the semantics of this function when solving constraints with this function.

The argument must be of bit-vector sort.

Definition at line 1639 of file Context.java.

1640 {
1641 checkContextMatch(t);
1642 return new IntExpr(this, Native.mkBv2int(nCtx(), t.getNativeObject(),
1643 (signed)));
1644 }

◆ mkBVAdd()

BitVecExpr mkBVAdd ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Two's complement addition. Remarks: The arguments must have the same bit-vector sort.

Definition at line 1202 of file Context.java.

1203 {
1204 checkContextMatch(t1);
1205 checkContextMatch(t2);
1206 return new BitVecExpr(this, Native.mkBvadd(nCtx(),
1207 t1.getNativeObject(), t2.getNativeObject()));
1208 }

◆ mkBVAddNoOverflow()

BoolExpr mkBVAddNoOverflow ( Expr< BitVecSort t1,
Expr< BitVecSort t2,
boolean  isSigned 
)
inline

Create a predicate that checks that the bit-wise addition does not overflow. Remarks: The arguments must be of bit-vector sort.

Definition at line 1651 of file Context.java.

1653 {
1654 checkContextMatch(t1);
1655 checkContextMatch(t2);
1656 return new BoolExpr(this, Native.mkBvaddNoOverflow(nCtx(), t1
1657 .getNativeObject(), t2.getNativeObject(), (isSigned)));
1658 }

◆ mkBVAddNoUnderflow()

BoolExpr mkBVAddNoUnderflow ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Create a predicate that checks that the bit-wise addition does not underflow. Remarks: The arguments must be of bit-vector sort.

Definition at line 1665 of file Context.java.

1667 {
1668 checkContextMatch(t1);
1669 checkContextMatch(t2);
1670 return new BoolExpr(this, Native.mkBvaddNoUnderflow(nCtx(),
1671 t1.getNativeObject(), t2.getNativeObject()));
1672 }

◆ mkBVAND()

BitVecExpr mkBVAND ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Bitwise conjunction. Remarks: The arguments must have a bit-vector sort.

Definition at line 1113 of file Context.java.

1114 {
1115 checkContextMatch(t1);
1116 checkContextMatch(t2);
1117 return new BitVecExpr(this, Native.mkBvand(nCtx(),
1118 t1.getNativeObject(), t2.getNativeObject()));
1119 }

◆ mkBVASHR()

BitVecExpr mkBVASHR ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Arithmetic shift right Remarks: It is like logical shift right except that the most significant bits of the result always copy the most significant bit of the second argument.

NB. The semantics of shift operations varies between environments. This definition does not necessarily capture directly the semantics of the programming language or assembly architecture you are modeling.

The arguments must have a bit-vector sort.

Definition at line 1547 of file Context.java.

1548 {
1549 checkContextMatch(t1);
1550 checkContextMatch(t2);
1551 return new BitVecExpr(this, Native.mkBvashr(nCtx(),
1552 t1.getNativeObject(), t2.getNativeObject()));
1553 }

◆ mkBVConst() [1/2]

BitVecExpr mkBVConst ( String  name,
int  size 
)
inline

Creates a bit-vector constant.

Definition at line 755 of file Context.java.

756 {
757 return (BitVecExpr) mkConst(name, mkBitVecSort(size));
758 }

◆ mkBVConst() [2/2]

BitVecExpr mkBVConst ( Symbol  name,
int  size 
)
inline

Creates a bit-vector constant.

Definition at line 747 of file Context.java.

748 {
749 return (BitVecExpr) mkConst(name, mkBitVecSort(size));
750 }

◆ mkBVLSHR()

BitVecExpr mkBVLSHR ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Logical shift right Remarks: It is equivalent to unsigned division by 2^x where x is the value of t2.

NB. The semantics of shift operations varies between environments. This definition does not necessarily capture directly the semantics of the programming language or assembly architecture you are modeling.

The arguments must have a bit-vector sort.

Definition at line 1527 of file Context.java.

1528 {
1529 checkContextMatch(t1);
1530 checkContextMatch(t2);
1531 return new BitVecExpr(this, Native.mkBvlshr(nCtx(),
1532 t1.getNativeObject(), t2.getNativeObject()));
1533 }

◆ mkBVMul()

BitVecExpr mkBVMul ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Two's complement multiplication. Remarks: The arguments must have the same bit-vector sort.

Definition at line 1228 of file Context.java.

1229 {
1230 checkContextMatch(t1);
1231 checkContextMatch(t2);
1232 return new BitVecExpr(this, Native.mkBvmul(nCtx(),
1233 t1.getNativeObject(), t2.getNativeObject()));
1234 }

◆ mkBVMulNoOverflow()

BoolExpr mkBVMulNoOverflow ( Expr< BitVecSort t1,
Expr< BitVecSort t2,
boolean  isSigned 
)
inline

Create a predicate that checks that the bit-wise multiplication does not overflow. Remarks: The arguments must be of bit-vector sort.

Definition at line 1733 of file Context.java.

1735 {
1736 checkContextMatch(t1);
1737 checkContextMatch(t2);
1738 return new BoolExpr(this, Native.mkBvmulNoOverflow(nCtx(), t1
1739 .getNativeObject(), t2.getNativeObject(), (isSigned)));
1740 }

◆ mkBVMulNoUnderflow()

BoolExpr mkBVMulNoUnderflow ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Create a predicate that checks that the bit-wise multiplication does not underflow. Remarks: The arguments must be of bit-vector sort.

Definition at line 1747 of file Context.java.

1749 {
1750 checkContextMatch(t1);
1751 checkContextMatch(t2);
1752 return new BoolExpr(this, Native.mkBvmulNoUnderflow(nCtx(),
1753 t1.getNativeObject(), t2.getNativeObject()));
1754 }

◆ mkBVNAND()

BitVecExpr mkBVNAND ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Bitwise NAND. Remarks: The arguments must have a bit-vector sort.

Definition at line 1152 of file Context.java.

1153 {
1154 checkContextMatch(t1);
1155 checkContextMatch(t2);
1156 return new BitVecExpr(this, Native.mkBvnand(nCtx(),
1157 t1.getNativeObject(), t2.getNativeObject()));
1158 }

◆ mkBVNeg()

BitVecExpr mkBVNeg ( Expr< BitVecSort t)
inline

Standard two's complement unary minus. Remarks: The arguments must have a bit-vector sort.

Definition at line 1191 of file Context.java.

1192 {
1193 checkContextMatch(t);
1194 return new BitVecExpr(this, Native.mkBvneg(nCtx(), t.getNativeObject()));
1195 }

◆ mkBVNegNoOverflow()

BoolExpr mkBVNegNoOverflow ( Expr< BitVecSort t)
inline

Create a predicate that checks that the bit-wise negation does not overflow. Remarks: The arguments must be of bit-vector sort.

Definition at line 1721 of file Context.java.

1722 {
1723 checkContextMatch(t);
1724 return new BoolExpr(this, Native.mkBvnegNoOverflow(nCtx(),
1725 t.getNativeObject()));
1726 }

◆ mkBVNOR()

BitVecExpr mkBVNOR ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Bitwise NOR. Remarks: The arguments must have a bit-vector sort.

Definition at line 1165 of file Context.java.

1166 {
1167 checkContextMatch(t1);
1168 checkContextMatch(t2);
1169 return new BitVecExpr(this, Native.mkBvnor(nCtx(),
1170 t1.getNativeObject(), t2.getNativeObject()));
1171 }

◆ mkBVNot()

BitVecExpr mkBVNot ( Expr< BitVecSort t)
inline

Bitwise negation. Remarks: The argument must have a bit-vector sort.

Definition at line 1078 of file Context.java.

1079 {
1080 checkContextMatch(t);
1081 return new BitVecExpr(this, Native.mkBvnot(nCtx(), t.getNativeObject()));
1082 }

◆ mkBVOR()

BitVecExpr mkBVOR ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Bitwise disjunction. Remarks: The arguments must have a bit-vector sort.

Definition at line 1126 of file Context.java.

1127 {
1128 checkContextMatch(t1);
1129 checkContextMatch(t2);
1130 return new BitVecExpr(this, Native.mkBvor(nCtx(), t1.getNativeObject(),
1131 t2.getNativeObject()));
1132 }

◆ mkBVRedAND()

BitVecExpr mkBVRedAND ( Expr< BitVecSort t)
inline

Take conjunction of bits in a vector, return vector of length 1.

Remarks: The argument must have a bit-vector sort.

Definition at line 1089 of file Context.java.

1090 {
1091 checkContextMatch(t);
1092 return new BitVecExpr(this, Native.mkBvredand(nCtx(),
1093 t.getNativeObject()));
1094 }

◆ mkBVRedOR()

BitVecExpr mkBVRedOR ( Expr< BitVecSort t)
inline

Take disjunction of bits in a vector, return vector of length 1.

Remarks: The argument must have a bit-vector sort.

Definition at line 1101 of file Context.java.

1102 {
1103 checkContextMatch(t);
1104 return new BitVecExpr(this, Native.mkBvredor(nCtx(),
1105 t.getNativeObject()));
1106 }

◆ mkBVRotateLeft() [1/2]

BitVecExpr mkBVRotateLeft ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Rotate Left. Remarks: Rotate bits of t1 to the left t2 times. The arguments must have the same bit-vector sort.

Definition at line 1585 of file Context.java.

1587 {
1588 checkContextMatch(t1);
1589 checkContextMatch(t2);
1590 return new BitVecExpr(this, Native.mkExtRotateLeft(nCtx(),
1591 t1.getNativeObject(), t2.getNativeObject()));
1592 }

◆ mkBVRotateLeft() [2/2]

BitVecExpr mkBVRotateLeft ( int  i,
Expr< BitVecSort t 
)
inline

Rotate Left. Remarks: Rotate bits of t to the left i times. The argument t must have a bit-vector sort.

Definition at line 1560 of file Context.java.

1561 {
1562 checkContextMatch(t);
1563 return new BitVecExpr(this, Native.mkRotateLeft(nCtx(), i,
1564 t.getNativeObject()));
1565 }

◆ mkBVRotateRight() [1/2]

BitVecExpr mkBVRotateRight ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Rotate Right. Remarks: Rotate bits of t1 to the rightt2 times. The arguments must have the same bit-vector sort.

Definition at line 1600 of file Context.java.

1602 {
1603 checkContextMatch(t1);
1604 checkContextMatch(t2);
1605 return new BitVecExpr(this, Native.mkExtRotateRight(nCtx(),
1606 t1.getNativeObject(), t2.getNativeObject()));
1607 }

◆ mkBVRotateRight() [2/2]

BitVecExpr mkBVRotateRight ( int  i,
Expr< BitVecSort t 
)
inline

Rotate Right. Remarks: Rotate bits of t to the right i times. The argument t must have a bit-vector sort.

Definition at line 1572 of file Context.java.

1573 {
1574 checkContextMatch(t);
1575 return new BitVecExpr(this, Native.mkRotateRight(nCtx(), i,
1576 t.getNativeObject()));
1577 }

◆ mkBVSDiv()

BitVecExpr mkBVSDiv ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Signed division. Remarks: It is defined in the following way:

  • The floor of t1/t2 if t2 is different from zero, and t1*t2 >= 0.
  • The ceiling of t1/t2 if t2 is different from zero, and t1*t2 &lt; 0.

If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.

Definition at line 1264 of file Context.java.

1265 {
1266 checkContextMatch(t1);
1267 checkContextMatch(t2);
1268 return new BitVecExpr(this, Native.mkBvsdiv(nCtx(),
1269 t1.getNativeObject(), t2.getNativeObject()));
1270 }

◆ mkBVSDivNoOverflow()

BoolExpr mkBVSDivNoOverflow ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Create a predicate that checks that the bit-wise signed division does not overflow. Remarks: The arguments must be of bit-vector sort.

Definition at line 1707 of file Context.java.

1709 {
1710 checkContextMatch(t1);
1711 checkContextMatch(t2);
1712 return new BoolExpr(this, Native.mkBvsdivNoOverflow(nCtx(),
1713 t1.getNativeObject(), t2.getNativeObject()));
1714 }

◆ mkBVSGE()

BoolExpr mkBVSGE ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Two's complement signed greater than or equal to. Remarks: The arguments must have the same bit-vector sort.

Definition at line 1389 of file Context.java.

1390 {
1391 checkContextMatch(t1);
1392 checkContextMatch(t2);
1393 return new BoolExpr(this, Native.mkBvsge(nCtx(), t1.getNativeObject(),
1394 t2.getNativeObject()));
1395 }

◆ mkBVSGT()

BoolExpr mkBVSGT ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Two's complement signed greater-than. Remarks: The arguments must have the same bit-vector sort.

Definition at line 1415 of file Context.java.

1416 {
1417 checkContextMatch(t1);
1418 checkContextMatch(t2);
1419 return new BoolExpr(this, Native.mkBvsgt(nCtx(), t1.getNativeObject(),
1420 t2.getNativeObject()));
1421 }

◆ mkBVSHL()

BitVecExpr mkBVSHL ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Shift left. Remarks: It is equivalent to multiplication by 2^x where x is the value of t2.

NB. The semantics of shift operations varies between environments. This definition does not necessarily capture directly the semantics of the programming language or assembly architecture you are modeling.

The arguments must have a bit-vector sort.

Definition at line 1508 of file Context.java.

1509 {
1510 checkContextMatch(t1);
1511 checkContextMatch(t2);
1512 return new BitVecExpr(this, Native.mkBvshl(nCtx(),
1513 t1.getNativeObject(), t2.getNativeObject()));
1514 }

◆ mkBVSLE()

BoolExpr mkBVSLE ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Two's complement signed less-than or equal to. Remarks: The arguments must have the same bit-vector sort.

Definition at line 1363 of file Context.java.

1364 {
1365 checkContextMatch(t1);
1366 checkContextMatch(t2);
1367 return new BoolExpr(this, Native.mkBvsle(nCtx(), t1.getNativeObject(),
1368 t2.getNativeObject()));
1369 }

◆ mkBVSLT()

BoolExpr mkBVSLT ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Two's complement signed less-than Remarks: The arguments must have the same bit-vector sort.

Definition at line 1337 of file Context.java.

1338 {
1339 checkContextMatch(t1);
1340 checkContextMatch(t2);
1341 return new BoolExpr(this, Native.mkBvslt(nCtx(), t1.getNativeObject(),
1342 t2.getNativeObject()));
1343 }

◆ mkBVSMod()

BitVecExpr mkBVSMod ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Two's complement signed remainder (sign follows divisor). Remarks: If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.

Definition at line 1311 of file Context.java.

1312 {
1313 checkContextMatch(t1);
1314 checkContextMatch(t2);
1315 return new BitVecExpr(this, Native.mkBvsmod(nCtx(),
1316 t1.getNativeObject(), t2.getNativeObject()));
1317 }

◆ mkBVSRem()

BitVecExpr mkBVSRem ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Signed remainder. Remarks: It is defined as t1 - (t1 /s t2) * t2, where /s represents signed division. The most significant bit (sign) of the result is equal to the most significant bit of t1.

If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.

Definition at line 1297 of file Context.java.

1298 {
1299 checkContextMatch(t1);
1300 checkContextMatch(t2);
1301 return new BitVecExpr(this, Native.mkBvsrem(nCtx(),
1302 t1.getNativeObject(), t2.getNativeObject()));
1303 }

◆ mkBVSub()

BitVecExpr mkBVSub ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Two's complement subtraction. Remarks: The arguments must have the same bit-vector sort.

Definition at line 1215 of file Context.java.

1216 {
1217 checkContextMatch(t1);
1218 checkContextMatch(t2);
1219 return new BitVecExpr(this, Native.mkBvsub(nCtx(),
1220 t1.getNativeObject(), t2.getNativeObject()));
1221 }

◆ mkBVSubNoOverflow()

BoolExpr mkBVSubNoOverflow ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Create a predicate that checks that the bit-wise subtraction does not overflow. Remarks: The arguments must be of bit-vector sort.

Definition at line 1679 of file Context.java.

1681 {
1682 checkContextMatch(t1);
1683 checkContextMatch(t2);
1684 return new BoolExpr(this, Native.mkBvsubNoOverflow(nCtx(),
1685 t1.getNativeObject(), t2.getNativeObject()));
1686 }

◆ mkBVSubNoUnderflow()

BoolExpr mkBVSubNoUnderflow ( Expr< BitVecSort t1,
Expr< BitVecSort t2,
boolean  isSigned 
)
inline

Create a predicate that checks that the bit-wise subtraction does not underflow. Remarks: The arguments must be of bit-vector sort.

Definition at line 1693 of file Context.java.

1695 {
1696 checkContextMatch(t1);
1697 checkContextMatch(t2);
1698 return new BoolExpr(this, Native.mkBvsubNoUnderflow(nCtx(), t1
1699 .getNativeObject(), t2.getNativeObject(), (isSigned)));
1700 }

◆ mkBVUDiv()

BitVecExpr mkBVUDiv ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Unsigned division. Remarks: It is defined as the floor of t1/t2 if t2 is different from zero. If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.

Definition at line 1243 of file Context.java.

1244 {
1245 checkContextMatch(t1);
1246 checkContextMatch(t2);
1247 return new BitVecExpr(this, Native.mkBvudiv(nCtx(),
1248 t1.getNativeObject(), t2.getNativeObject()));
1249 }

◆ mkBVUGE()

BoolExpr mkBVUGE ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Unsigned greater than or equal to. Remarks: The arguments must have the same bit-vector sort.

Definition at line 1376 of file Context.java.

1377 {
1378 checkContextMatch(t1);
1379 checkContextMatch(t2);
1380 return new BoolExpr(this, Native.mkBvuge(nCtx(), t1.getNativeObject(),
1381 t2.getNativeObject()));
1382 }

◆ mkBVUGT()

BoolExpr mkBVUGT ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Unsigned greater-than. Remarks: The arguments must have the same bit-vector sort.

Definition at line 1402 of file Context.java.

1403 {
1404 checkContextMatch(t1);
1405 checkContextMatch(t2);
1406 return new BoolExpr(this, Native.mkBvugt(nCtx(), t1.getNativeObject(),
1407 t2.getNativeObject()));
1408 }

◆ mkBVULE()

BoolExpr mkBVULE ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Unsigned less-than or equal to. Remarks: The arguments must have the same bit-vector sort.

Definition at line 1350 of file Context.java.

1351 {
1352 checkContextMatch(t1);
1353 checkContextMatch(t2);
1354 return new BoolExpr(this, Native.mkBvule(nCtx(), t1.getNativeObject(),
1355 t2.getNativeObject()));
1356 }

◆ mkBVULT()

BoolExpr mkBVULT ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Unsigned less-than Remarks: The arguments must have the same bit-vector sort.

Definition at line 1324 of file Context.java.

1325 {
1326 checkContextMatch(t1);
1327 checkContextMatch(t2);
1328 return new BoolExpr(this, Native.mkBvult(nCtx(), t1.getNativeObject(),
1329 t2.getNativeObject()));
1330 }

◆ mkBVURem()

BitVecExpr mkBVURem ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Unsigned remainder. Remarks: It is defined as t1 - (t1 /u t2) * t2, where /u represents unsigned division. If t2 is zero, then the result is undefined. The arguments must have the same bit-vector sort.

Definition at line 1279 of file Context.java.

1280 {
1281 checkContextMatch(t1);
1282 checkContextMatch(t2);
1283 return new BitVecExpr(this, Native.mkBvurem(nCtx(),
1284 t1.getNativeObject(), t2.getNativeObject()));
1285 }

◆ mkBVXNOR()

BitVecExpr mkBVXNOR ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Bitwise XNOR. Remarks: The arguments must have a bit-vector sort.

Definition at line 1178 of file Context.java.

1179 {
1180 checkContextMatch(t1);
1181 checkContextMatch(t2);
1182 return new BitVecExpr(this, Native.mkBvxnor(nCtx(),
1183 t1.getNativeObject(), t2.getNativeObject()));
1184 }

◆ mkBVXOR()

BitVecExpr mkBVXOR ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Bitwise XOR. Remarks: The arguments must have a bit-vector sort.

Definition at line 1139 of file Context.java.

1140 {
1141 checkContextMatch(t1);
1142 checkContextMatch(t2);
1143 return new BitVecExpr(this, Native.mkBvxor(nCtx(),
1144 t1.getNativeObject(), t2.getNativeObject()));
1145 }

◆ mkCharLe()

BoolExpr mkCharLe ( Expr< CharSort ch1,
Expr< CharSort ch2 
)
inline

Create less than or equal to between two characters.

Definition at line 2434 of file Context.java.

2435 {
2436 checkContextMatch(ch1, ch2);
2437 return (BoolExpr) Expr.create(this, Native.mkCharLe(nCtx(), ch1.getNativeObject(), ch2.getNativeObject()));
2438 }

◆ mkCharSort()

CharSort mkCharSort ( )
inline

Creates character sort object.

Definition at line 170 of file Context.java.

171 {
172 return new CharSort(this);
173 }
CharSort(ctx=None)
Definition z3py.py:11052

◆ mkComplement()

final< R extends Sort > ReExpr< R > mkComplement ( Expr< ReSort< R > >  re)
inline

Create the complement regular expression.

Definition at line 2348 of file Context.java.

2349 {
2350 checkContextMatch(re);
2351 return (ReExpr<R>) Expr.create(this, Native.mkReComplement(nCtx(), re.getNativeObject()));
2352 }

◆ mkConcat() [1/3]

BitVecExpr mkConcat ( Expr< BitVecSort t1,
Expr< BitVecSort t2 
)
inline

Bit-vector concatenation. Remarks: The arguments must have a bit-vector sort.

Returns
The result is a bit-vector of size n1+n2, where n1 (n2) is the size of t1 (t2).

Definition at line 1433 of file Context.java.

1434 {
1435 checkContextMatch(t1);
1436 checkContextMatch(t2);
1437 return new BitVecExpr(this, Native.mkConcat(nCtx(),
1438 t1.getNativeObject(), t2.getNativeObject()));
1439 }

◆ mkConcat() [2/3]

final< R extends Sort > SeqExpr< R > mkConcat ( Expr< SeqSort< R > >...  t)
inline

Concatenate sequences.

Definition at line 2129 of file Context.java.

2130 {
2131 checkContextMatch(t);
2132 return (SeqExpr<R>) Expr.create(this, Native.mkSeqConcat(nCtx(), t.length, AST.arrayToNative(t)));
2133 }

◆ mkConcat() [3/3]

final< R extends Sort > ReExpr< R > mkConcat ( ReExpr< R >...  t)
inline

Create the concatenation of regular languages.

Definition at line 2358 of file Context.java.

2359 {
2360 checkContextMatch(t);
2361 return (ReExpr<R>) Expr.create(this, Native.mkReConcat(nCtx(), t.length, AST.arrayToNative(t)));
2362 }

◆ mkConst() [1/3]

final< R extends Sort > Expr< R > mkConst ( FuncDecl< R >  f)
inline

Creates a fresh constant from the FuncDecl f.

Parameters
fA decl of a 0-arity function

Definition at line 691 of file Context.java.

692 {
693 return mkApp(f, (Expr<?>[]) null);
694 }
final< R extends Sort > Expr< R > mkApp(FuncDecl< R > f, Expr<?>... args)
Definition Context.java:764

◆ mkConst() [2/3]

final< R extends Sort > Expr< R > mkConst ( String  name,
range 
)
inline

Creates a new Constant of sort range and named name.

Definition at line 671 of file Context.java.

672 {
673 return mkConst(mkSymbol(name), range);
674 }

◆ mkConst() [3/3]

final< R extends Sort > Expr< R > mkConst ( Symbol  name,
range 
)
inline

Creates a new Constant of sort range and named name.

Definition at line 656 of file Context.java.

657 {
658 checkContextMatch(name);
659 checkContextMatch(range);
660
661 return (Expr<R>) Expr.create(
662 this,
663 Native.mkConst(nCtx(), name.getNativeObject(),
664 range.getNativeObject()));
665 }
expr range(expr const &lo, expr const &hi)
Definition z3++.h:4185

◆ mkConstArray()

final< D extends Sort, R extends Sort > ArrayExpr< D, R > mkConstArray ( domain,
Expr< R >  v 
)
inline

Create a constant array. Remarks: The resulting term is an array, such that a select on an arbitrary index produces the value v.

See also
#mkArraySort(Sort[], R)
#mkSelect(Expr<ArraySort<D, R>> a, Expr<D> i)

Definition at line 1876 of file Context.java.

1877 {
1878 checkContextMatch(domain);
1879 checkContextMatch(v);
1880 return new ArrayExpr<>(this, Native.mkConstArray(nCtx(),
1881 domain.getNativeObject(), v.getNativeObject()));
1882 }

◆ mkConstDecl() [1/2]

final< R extends Sort > FuncDecl< R > mkConstDecl ( String  name,
range 
)
inline

Creates a new constant function declaration.

Definition at line 608 of file Context.java.

609 {
610 checkContextMatch(range);
611 return new FuncDecl<>(this, mkSymbol(name), null, range);
612 }

◆ mkConstDecl() [2/2]

final< R extends Sort > FuncDecl< R > mkConstDecl ( Symbol  name,
range 
)
inline

Creates a new constant function declaration.

Definition at line 598 of file Context.java.

599 {
600 checkContextMatch(name);
601 checkContextMatch(range);
602 return new FuncDecl<>(this, name, null, range);
603 }

◆ mkConstructor() [1/2]

final< R > Constructor< R > mkConstructor ( String  name,
String  recognizer,
String[]  fieldNames,
Sort[]  sorts,
int[]  sortRefs 
)
inline

Create a datatype constructor.

Definition at line 365 of file Context.java.

367 {
368 return of(this, mkSymbol(name), mkSymbol(recognizer), mkSymbols(fieldNames), sorts, sortRefs);
369 }

◆ mkConstructor() [2/2]

final< R > Constructor< R > mkConstructor ( Symbol  name,
Symbol  recognizer,
Symbol[]  fieldNames,
Sort[]  sorts,
int[]  sortRefs 
)
inline

Create a datatype constructor.

Parameters
nameconstructor name
recognizername of recognizer function.
fieldNamesnames of the constructor fields.
sortsfield sorts, 0 if the field sort refers to a recursive sort.
sortRefsreference to datatype sort that is an argument to the constructor; if the corresponding sort reference is 0, then the value in sort_refs should be an index referring to one of the recursive datatypes that is declared.

Definition at line 355 of file Context.java.

358 {
359 return of(this, name, recognizer, fieldNames, sorts, sortRefs);
360 }

◆ mkContains()

final< R extends Sort > BoolExpr mkContains ( Expr< SeqSort< R > >  s1,
Expr< SeqSort< R > >  s2 
)
inline

Check for sequence containment of s2 in s1.

Definition at line 2166 of file Context.java.

2167 {
2168 checkContextMatch(s1, s2);
2169 return (BoolExpr) Expr.create(this, Native.mkSeqContains(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2170 }

◆ mkDatatypeSort() [1/2]

final< R > DatatypeSort< R > mkDatatypeSort ( String  name,
Constructor< R >[]  constructors 
)
inline

Create a new datatype sort.

Definition at line 384 of file Context.java.

386 {
387 checkContextMatch(constructors);
388 return new DatatypeSort<>(this, mkSymbol(name), constructors);
389 }

◆ mkDatatypeSort() [2/2]

final< R > DatatypeSort< R > mkDatatypeSort ( Symbol  name,
Constructor< R >[]  constructors 
)
inline

Create a new datatype sort.

Definition at line 374 of file Context.java.

375 {
376 checkContextMatch(name);
377 checkContextMatch(constructors);
378 return new DatatypeSort<>(this, name, constructors);
379 }

◆ mkDatatypeSorts() [1/2]

DatatypeSort< Object >[] mkDatatypeSorts ( String[]  names,
Constructor< Object >  c[][] 
)
inline

Create mutually recursive data-types.

Definition at line 470 of file Context.java.

472 {
473 return mkDatatypeSorts(mkSymbols(names), c);
474 }
DatatypeSort< Object >[] mkDatatypeSorts(Symbol[] names, Constructor< Object >[][] c)
Definition Context.java:444

◆ mkDatatypeSorts() [2/2]

DatatypeSort< Object >[] mkDatatypeSorts ( Symbol[]  names,
Constructor< Object >  c[][] 
)
inline

Create mutually recursive datatypes.

Parameters
namesnames of datatype sorts
clist of constructors, one list per sort.

Definition at line 444 of file Context.java.

445 {
446 checkContextMatch(names);
447 int n = names.length;
448 ConstructorList<Object>[] cla = new ConstructorList[n];
449 long[] n_constr = new long[n];
450 for (int i = 0; i < n; i++)
451 {
452 Constructor<Object>[] constructor = c[i];
453
454 checkContextMatch(constructor);
455 cla[i] = new ConstructorList<>(this, constructor);
456 n_constr[i] = cla[i].getNativeObject();
457 }
458 long[] n_res = new long[n];
459 Native.mkDatatypes(nCtx(), n, Symbol.arrayToNative(names), n_res,
460 n_constr);
461 DatatypeSort<Object>[] res = new DatatypeSort[n];
462 for (int i = 0; i < n; i++)
463 res[i] = new DatatypeSort<>(this, n_res[i]);
464 return res;
465 }
DatatypeSort(name, params=None, ctx=None)
Definition z3py.py:5485

◆ mkDiff()

final< R extends Sort > ReExpr< R > mkDiff ( Expr< ReSort< R > >  a,
Expr< ReSort< R > >  b 
)
inline

Create a difference regular expression.

Definition at line 2387 of file Context.java.

2388 {
2389 checkContextMatch(a, b);
2390 return (ReExpr<R>) Expr.create(this, Native.mkReDiff(nCtx(), a.getNativeObject(), b.getNativeObject()));
2391 }

◆ mkDistinct()

final BoolExpr mkDistinct ( Expr<?>...  args)
inline

Creates a distinct term.

Definition at line 810 of file Context.java.

811 {
812 checkContextMatch(args);
813 return new BoolExpr(this, Native.mkDistinct(nCtx(), args.length,
814 AST.arrayToNative(args)));
815 }

◆ mkDiv()

final< R extends ArithSort > ArithExpr< R > mkDiv ( Expr<? extends R >  t1,
Expr<? extends R >  t2 
)
inline

Create an expression representing t1 / t2.

Definition at line 943 of file Context.java.

944 {
945 checkContextMatch(t1);
946 checkContextMatch(t2);
947 return (ArithExpr<R>) Expr.create(this, Native.mkDiv(nCtx(),
948 t1.getNativeObject(), t2.getNativeObject()));
949 }

◆ mkEmptyRe()

final< R extends Sort > ReExpr< R > mkEmptyRe ( ReSort< R >  s)
inline

Create the empty regular expression. Corresponds to re.none

Definition at line 2398 of file Context.java.

2399 {
2400 return (ReExpr<R>) Expr.create(this, Native.mkReEmpty(nCtx(), s.getNativeObject()));
2401 }

◆ mkEmptySeq()

final< R extends Sort > SeqExpr< R > mkEmptySeq ( s)
inline

Sequences, Strings and regular expressions. Create the empty sequence.

Definition at line 2062 of file Context.java.

2063 {
2064 checkContextMatch(s);
2065 return (SeqExpr<R>) Expr.create(this, Native.mkSeqEmpty(nCtx(), s.getNativeObject()));
2066 }

◆ mkEmptySet()

final< D extends Sort > ArrayExpr< D, BoolSort > mkEmptySet ( domain)
inline

Create an empty set.

Definition at line 1943 of file Context.java.

1944 {
1945 checkContextMatch(domain);
1946 return (ArrayExpr<D, BoolSort>) Expr.create(this,
1947 Native.mkEmptySet(nCtx(), domain.getNativeObject()));
1948 }

◆ mkEnumSort() [1/2]

final< R > EnumSort< R > mkEnumSort ( String  name,
String...  enumNames 
)
inline

Create a new enumeration sort.

Definition at line 300 of file Context.java.

302 {
303 return new EnumSort<>(this, mkSymbol(name), mkSymbols(enumNames));
304 }

◆ mkEnumSort() [2/2]

final< R > EnumSort< R > mkEnumSort ( Symbol  name,
Symbol...  enumNames 
)
inline

Create a new enumeration sort.

Definition at line 289 of file Context.java.

291 {
292 checkContextMatch(name);
293 checkContextMatch(enumNames);
294 return new EnumSort<>(this, name, enumNames);
295 }

◆ mkEq()

BoolExpr mkEq ( Expr<?>  x,
Expr<?>  y 
)
inline

Creates the equality x = y

Definition at line 798 of file Context.java.

799 {
800 checkContextMatch(x);
801 checkContextMatch(y);
802 return new BoolExpr(this, Native.mkEq(nCtx(), x.getNativeObject(),
803 y.getNativeObject()));
804 }

◆ mkExists() [1/2]

Quantifier mkExists ( Expr<?>[]  boundConstants,
Expr< BoolSort body,
int  weight,
Pattern[]  patterns,
Expr<?>[]  noPatterns,
Symbol  quantifierID,
Symbol  skolemID 
)
inline

Creates an existential quantifier using a list of constants that will form the set of bound variables.

See also
#mkForall(Sort[],Symbol[],Expr<BoolSort>,int,Pattern[],Expr<?>[],Symbol,Symbol)

Definition at line 2759 of file Context.java.

2762 {
2763
2764 return Quantifier.of(this, false, boundConstants, body, weight,
2765 patterns, noPatterns, quantifierID, skolemID);
2766 }

◆ mkExists() [2/2]

Quantifier mkExists ( Sort[]  sorts,
Symbol[]  names,
Expr< BoolSort body,
int  weight,
Pattern[]  patterns,
Expr<?>[]  noPatterns,
Symbol  quantifierID,
Symbol  skolemID 
)
inline

Creates an existential quantifier using de-Bruijn indexed variables.

See also
#mkForall(Sort[],Symbol[],Expr<BoolSort>,int,Pattern[],Expr<?>[],Symbol,Symbol)

Definition at line 2746 of file Context.java.

2749 {
2750
2751 return Quantifier.of(this, false, sorts, names, body, weight,
2752 patterns, noPatterns, quantifierID, skolemID);
2753 }

◆ mkExtract() [1/2]

final< R extends Sort > SeqExpr< R > mkExtract ( Expr< SeqSort< R > >  s,
Expr< IntSort offset,
Expr< IntSort length 
)
inline

Extract subsequence.

Definition at line 2214 of file Context.java.

2215 {
2216 checkContextMatch(s, offset, length);
2217 return (SeqExpr<R>) Expr.create(this, Native.mkSeqExtract(nCtx(), s.getNativeObject(), offset.getNativeObject(), length.getNativeObject()));
2218 }

◆ mkExtract() [2/2]

BitVecExpr mkExtract ( int  high,
int  low,
Expr< BitVecSort t 
)
inline

Bit-vector extraction. Remarks: Extract the bits high down to low from a bitvector of size m to yield a new bitvector of size n, where n = high - low + 1. The argument t must have a bit-vector sort.

Definition at line 1449 of file Context.java.

1451 {
1452 checkContextMatch(t);
1453 return new BitVecExpr(this, Native.mkExtract(nCtx(), high, low,
1454 t.getNativeObject()));
1455 }

◆ mkFalse()

BoolExpr mkFalse ( )
inline

The false Term.

Definition at line 782 of file Context.java.

783 {
784 return new BoolExpr(this, Native.mkFalse(nCtx()));
785 }

◆ mkFiniteDomainSort() [1/2]

final< R > FiniteDomainSort< R > mkFiniteDomainSort ( String  name,
long  size 
)
inline

Create a new finite domain sort.

Definition at line 338 of file Context.java.

340 {
341 return new FiniteDomainSort<>(this, mkSymbol(name), size);
342 }

◆ mkFiniteDomainSort() [2/2]

final< R > FiniteDomainSort< R > mkFiniteDomainSort ( Symbol  name,
long  size 
)
inline

Create a new finite domain sort.

Definition at line 328 of file Context.java.

330 {
331 checkContextMatch(name);
332 return new FiniteDomainSort<>(this, name, size);
333 }

◆ mkFixedpoint()

Fixedpoint mkFixedpoint ( )
inline

Create a Fixedpoint context.

Definition at line 3493 of file Context.java.

3494 {
3495 return new Fixedpoint(this);
3496 }

◆ mkForall() [1/2]

Quantifier mkForall ( Expr<?>[]  boundConstants,
Expr< BoolSort body,
int  weight,
Pattern[]  patterns,
Expr<?>[]  noPatterns,
Symbol  quantifierID,
Symbol  skolemID 
)
inline

Creates a universal quantifier using a list of constants that will form the set of bound variables.

See also
#mkForall(Sort[],Symbol[],Expr<BoolSort>,int,Pattern[],Expr<?>[],Symbol,Symbol)

Definition at line 2733 of file Context.java.

2736 {
2737
2738 return Quantifier.of(this, true, boundConstants, body, weight,
2739 patterns, noPatterns, quantifierID, skolemID);
2740 }

◆ mkForall() [2/2]

Quantifier mkForall ( Sort[]  sorts,
Symbol[]  names,
Expr< BoolSort body,
int  weight,
Pattern[]  patterns,
Expr<?>[]  noPatterns,
Symbol  quantifierID,
Symbol  skolemID 
)
inline

Create a universal Quantifier.

Parameters
sortsthe sorts of the bound variables.
namesnames of the bound variables
bodythe body of the quantifier.
weightquantifiers are associated with weights indicating the importance of using the quantifier during instantiation. By default, pass the weight 0.
patternsarray containing the patterns created using MkPattern.
noPatternsarray containing the anti-patterns created using MkPattern.
quantifierIDoptional symbol to track quantifier.
skolemIDoptional symbol to track skolem constants.
Returns
Creates a forall formula, where weight is the weight, patterns is an array of patterns, sorts is an array with the sorts of the bound variables, names is an array with the 'names' of the bound variables, and body is the body of the quantifier. Quantifiers are associated with weights indicating the importance of using the quantifier during instantiation. Note that the bound variables are de-Bruijn indices created using {#mkBound}. Z3 applies the convention that the last element in names and sorts refers to the variable with index 0, the second to last element of names and sorts refers to the variable with index 1, etc.

Definition at line 2721 of file Context.java.

2724 {
2725 return Quantifier.of(this, true, sorts, names, body, weight, patterns,
2726 noPatterns, quantifierID, skolemID);
2727 }

◆ mkFP() [1/6]

FPNum mkFP ( boolean  sgn,
int  exp,
int  sig,
FPSort  s 
)
inline

Create a numeral of FloatingPoint sort from a sign bit and two integers.

Parameters
sgnthe sign.
expthe exponent.
sigthe significand.
sFloatingPoint sort.
Exceptions
Z3Exception

Definition at line 3823 of file Context.java.

3824 {
3825 return mkFPNumeral(sgn, exp, sig, s);
3826 }
FPNum mkFPNumeral(float v, FPSort s)

◆ mkFP() [2/6]

FPNum mkFP ( boolean  sgn,
long  exp,
long  sig,
FPSort  s 
)
inline

Create a numeral of FloatingPoint sort from a sign bit and two 64-bit integers.

Parameters
sgnthe sign.
expthe exponent.
sigthe significand.
sFloatingPoint sort.
Exceptions
Z3Exception

Definition at line 3836 of file Context.java.

3837 {
3838 return mkFPNumeral(sgn, exp, sig, s);
3839 }

◆ mkFP() [3/6]

FPNum mkFP ( double  v,
FPSort  s 
)
inline

Create a numeral of FloatingPoint sort from a double.

Parameters
vnumeral value.
sFloatingPoint sort.
Exceptions
Z3Exception

Definition at line 3798 of file Context.java.

3799 {
3800 return mkFPNumeral(v, s);
3801 }

◆ mkFP() [4/6]

FPExpr mkFP ( Expr< BitVecSort sgn,
Expr< BitVecSort sig,
Expr< BitVecSort exp 
)
inline

Create an expression of FloatingPoint sort from three bit-vector expressions.

Parameters
sgnbit-vector term (of size 1) representing the sign.
sigbit-vector term representing the significand.
expbit-vector term representing the exponent. Remarks: This is the operator named ‘fp’ in the SMT FP theory definition. Note that sgn is required to be a bit-vector of size 1. Significand and exponent are required to be greater than 1 and 2 respectively. The FloatingPoint sort of the resulting expression is automatically determined from the bit-vector sizes of the arguments.
Exceptions
Z3Exception

Definition at line 4121 of file Context.java.

4122 {
4123 return new FPExpr(this, Native.mkFpaFp(nCtx(), sgn.getNativeObject(), sig.getNativeObject(), exp.getNativeObject()));
4124 }

◆ mkFP() [5/6]

FPNum mkFP ( float  v,
FPSort  s 
)
inline

Create a numeral of FloatingPoint sort from a float.

Parameters
vnumeral value.
sFloatingPoint sort.
Exceptions
Z3Exception

Definition at line 3787 of file Context.java.

3788 {
3789 return mkFPNumeral(v, s);
3790 }

◆ mkFP() [6/6]

FPNum mkFP ( int  v,
FPSort  s 
)
inline

Create a numeral of FloatingPoint sort from an int.

Parameters
vnumeral value.
sFloatingPoint sort.
Exceptions
Z3Exception

Definition at line 3810 of file Context.java.

3811 {
3812 return mkFPNumeral(v, s);
3813 }

◆ mkFPAbs()

FPExpr mkFPAbs ( Expr< FPSort t)
inline

Floating-point absolute value

Parameters
tfloating-point term
Exceptions
Z3Exception

Definition at line 3847 of file Context.java.

3848 {
3849 return new FPExpr(this, Native.mkFpaAbs(nCtx(), t.getNativeObject()));
3850 }

◆ mkFPAdd()

FPExpr mkFPAdd ( Expr< FPRMSort rm,
Expr< FPSort t1,
Expr< FPSort t2 
)
inline

Floating-point addition

Parameters
rmrounding mode term
t1floating-point term
t2floating-point term
Exceptions
Z3Exception

Definition at line 3869 of file Context.java.

3870 {
3871 return new FPExpr(this, Native.mkFpaAdd(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject()));
3872 }

◆ mkFPDiv()

FPExpr mkFPDiv ( Expr< FPRMSort rm,
Expr< FPSort t1,
Expr< FPSort t2 
)
inline

Floating-point division

Parameters
rmrounding mode term
t1floating-point term
t2floating-point term
Exceptions
Z3Exception

Definition at line 3905 of file Context.java.

3906 {
3907 return new FPExpr(this, Native.mkFpaDiv(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject()));
3908 }

◆ mkFPEq()

BoolExpr mkFPEq ( Expr< FPSort t1,
Expr< FPSort t2 
)
inline

Floating-point equality.

Parameters
t1floating-point term
t2floating-point term Remarks: Note that this is IEEE 754 equality (as opposed to standard =).
Exceptions
Z3Exception

Definition at line 4033 of file Context.java.

4034 {
4035 return new BoolExpr(this, Native.mkFpaEq(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
4036 }

◆ mkFPFMA()

FPExpr mkFPFMA ( Expr< FPRMSort rm,
Expr< FPSort t1,
Expr< FPSort t2,
Expr< FPSort t3 
)
inline

Floating-point fused multiply-add

Parameters
rmrounding mode term
t1floating-point term
t2floating-point term
t3floating-point term Remarks: The result is round((t1 * t2) + t3)
Exceptions
Z3Exception

Definition at line 3920 of file Context.java.

3921 {
3922 return new FPExpr(this, Native.mkFpaFma(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject(), t3.getNativeObject()));
3923 }

◆ mkFPGEq()

BoolExpr mkFPGEq ( Expr< FPSort t1,
Expr< FPSort t2 
)
inline

Floating-point greater than or equal.

Parameters
t1floating-point term
t2floating-point term
Exceptions
Z3Exception

Definition at line 4009 of file Context.java.

4010 {
4011 return new BoolExpr(this, Native.mkFpaGeq(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
4012 }

◆ mkFPGt()

BoolExpr mkFPGt ( Expr< FPSort t1,
Expr< FPSort t2 
)
inline

Floating-point greater than.

Parameters
t1floating-point term
t2floating-point term
Exceptions
Z3Exception

Definition at line 4020 of file Context.java.

4021 {
4022 return new BoolExpr(this, Native.mkFpaGt(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
4023 }

◆ mkFPInf()

FPNum mkFPInf ( FPSort  s,
boolean  negative 
)
inline

Create a floating-point infinity of sort s.

Parameters
sFloatingPoint sort.
negativeindicates whether the result should be negative.
Exceptions
Z3Exception

Definition at line 3706 of file Context.java.

3707 {
3708 return new FPNum(this, Native.mkFpaInf(nCtx(), s.getNativeObject(), negative));
3709 }

◆ mkFPIsInfinite()

BoolExpr mkFPIsInfinite ( Expr< FPSort t)
inline

Predicate indicating whether t is a floating-point number representing +oo or -oo.

Parameters
tfloating-point term
Exceptions
Z3Exception

Definition at line 4073 of file Context.java.

4074 {
4075 return new BoolExpr(this, Native.mkFpaIsInfinite(nCtx(), t.getNativeObject()));
4076 }

◆ mkFPIsNaN()

BoolExpr mkFPIsNaN ( Expr< FPSort t)
inline

Predicate indicating whether t is a NaN.

Parameters
tfloating-point term
Exceptions
Z3Exception

Definition at line 4083 of file Context.java.

4084 {
4085 return new BoolExpr(this, Native.mkFpaIsNan(nCtx(), t.getNativeObject()));
4086 }

◆ mkFPIsNegative()

BoolExpr mkFPIsNegative ( Expr< FPSort t)
inline

Predicate indicating whether t is a negative floating-point number.

Parameters
tfloating-point term
Exceptions
Z3Exception

Definition at line 4093 of file Context.java.

4094 {
4095 return new BoolExpr(this, Native.mkFpaIsNegative(nCtx(), t.getNativeObject()));
4096 }

◆ mkFPIsNormal()

BoolExpr mkFPIsNormal ( Expr< FPSort t)
inline

Predicate indicating whether t is a normal floating-point number.\

Parameters
tfloating-point term
Exceptions
Z3Exception

Definition at line 4043 of file Context.java.

4044 {
4045 return new BoolExpr(this, Native.mkFpaIsNormal(nCtx(), t.getNativeObject()));
4046 }

◆ mkFPIsPositive()

BoolExpr mkFPIsPositive ( Expr< FPSort t)
inline

Predicate indicating whether t is a positive floating-point number.

Parameters
tfloating-point term
Exceptions
Z3Exception

Definition at line 4103 of file Context.java.

4104 {
4105 return new BoolExpr(this, Native.mkFpaIsPositive(nCtx(), t.getNativeObject()));
4106 }

◆ mkFPIsSubnormal()

BoolExpr mkFPIsSubnormal ( Expr< FPSort t)
inline

Predicate indicating whether t is a subnormal floating-point number.\

Parameters
tfloating-point term
Exceptions
Z3Exception

Definition at line 4053 of file Context.java.

4054 {
4055 return new BoolExpr(this, Native.mkFpaIsSubnormal(nCtx(), t.getNativeObject()));
4056 }

◆ mkFPIsZero()

BoolExpr mkFPIsZero ( Expr< FPSort t)
inline

Predicate indicating whether t is a floating-point number with zero value, i.e., +0 or -0.

Parameters
tfloating-point term
Exceptions
Z3Exception

Definition at line 4063 of file Context.java.

4064 {
4065 return new BoolExpr(this, Native.mkFpaIsZero(nCtx(), t.getNativeObject()));
4066 }

◆ mkFPLEq()

BoolExpr mkFPLEq ( Expr< FPSort t1,
Expr< FPSort t2 
)
inline

Floating-point less than or equal.

Parameters
t1floating-point term
t2floating-point term
Exceptions
Z3Exception

Definition at line 3987 of file Context.java.

3988 {
3989 return new BoolExpr(this, Native.mkFpaLeq(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
3990 }

◆ mkFPLt()

BoolExpr mkFPLt ( Expr< FPSort t1,
Expr< FPSort t2 
)
inline

Floating-point less than.

Parameters
t1floating-point term
t2floating-point term
Exceptions
Z3Exception

Definition at line 3998 of file Context.java.

3999 {
4000 return new BoolExpr(this, Native.mkFpaLt(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
4001 }

◆ mkFPMax()

FPExpr mkFPMax ( Expr< FPSort t1,
Expr< FPSort t2 
)
inline

Maximum of floating-point numbers.

Parameters
t1floating-point term
t2floating-point term
Exceptions
Z3Exception

Definition at line 3976 of file Context.java.

3977 {
3978 return new FPExpr(this, Native.mkFpaMax(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
3979 }

◆ mkFPMin()

FPExpr mkFPMin ( Expr< FPSort t1,
Expr< FPSort t2 
)
inline

Minimum of floating-point numbers.

Parameters
t1floating-point term
t2floating-point term
Exceptions
Z3Exception

Definition at line 3965 of file Context.java.

3966 {
3967 return new FPExpr(this, Native.mkFpaMin(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
3968 }

◆ mkFPMul()

FPExpr mkFPMul ( Expr< FPRMSort rm,
Expr< FPSort t1,
Expr< FPSort t2 
)
inline

Floating-point multiplication

Parameters
rmrounding mode term
t1floating-point term
t2floating-point term
Exceptions
Z3Exception

Definition at line 3893 of file Context.java.

3894 {
3895 return new FPExpr(this, Native.mkFpaMul(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject()));
3896 }

◆ mkFPNaN()

FPNum mkFPNaN ( FPSort  s)
inline

Create a NaN of sort s.

Parameters
sFloatingPoint sort.
Exceptions
Z3Exception

Definition at line 3695 of file Context.java.

3696 {
3697 return new FPNum(this, Native.mkFpaNan(nCtx(), s.getNativeObject()));
3698 }

◆ mkFPNeg()

FPExpr mkFPNeg ( Expr< FPSort t)
inline

Floating-point negation

Parameters
tfloating-point term
Exceptions
Z3Exception

Definition at line 3857 of file Context.java.

3858 {
3859 return new FPExpr(this, Native.mkFpaNeg(nCtx(), t.getNativeObject()));
3860 }

◆ mkFPNumeral() [1/5]

FPNum mkFPNumeral ( boolean  sgn,
int  exp,
int  sig,
FPSort  s 
)
inline

Create a numeral of FloatingPoint sort from a sign bit and two integers.

Parameters
sgnthe sign.
expthe exponent.
sigthe significand.
sFloatingPoint sort.
Exceptions
Z3Exception

Definition at line 3763 of file Context.java.

3764 {
3765 return new FPNum(this, Native.mkFpaNumeralIntUint(nCtx(), sgn, exp, sig, s.getNativeObject()));
3766 }

◆ mkFPNumeral() [2/5]

FPNum mkFPNumeral ( boolean  sgn,
long  exp,
long  sig,
FPSort  s 
)
inline

Create a numeral of FloatingPoint sort from a sign bit and two 64-bit integers.

Parameters
sgnthe sign.
expthe exponent.
sigthe significand.
sFloatingPoint sort.
Exceptions
Z3Exception

Definition at line 3776 of file Context.java.

3777 {
3778 return new FPNum(this, Native.mkFpaNumeralInt64Uint64(nCtx(), sgn, exp, sig, s.getNativeObject()));
3779 }

◆ mkFPNumeral() [3/5]

FPNum mkFPNumeral ( double  v,
FPSort  s 
)
inline

Create a numeral of FloatingPoint sort from a double.

Parameters
vnumeral value.
sFloatingPoint sort.
Exceptions
Z3Exception

Definition at line 3739 of file Context.java.

3740 {
3741 return new FPNum(this, Native.mkFpaNumeralDouble(nCtx(), v, s.getNativeObject()));
3742 }

◆ mkFPNumeral() [4/5]

FPNum mkFPNumeral ( float  v,
FPSort  s 
)
inline

Create a numeral of FloatingPoint sort from a float.

Parameters
vnumeral value.
sFloatingPoint sort.
Exceptions
Z3Exception

Definition at line 3728 of file Context.java.

3729 {
3730 return new FPNum(this, Native.mkFpaNumeralFloat(nCtx(), v, s.getNativeObject()));
3731 }

◆ mkFPNumeral() [5/5]

FPNum mkFPNumeral ( int  v,
FPSort  s 
)
inline

Create a numeral of FloatingPoint sort from an int.

Parameters
vnumeral value.
sFloatingPoint sort.
Exceptions
Z3Exception

Definition at line 3750 of file Context.java.

3751 {
3752 return new FPNum(this, Native.mkFpaNumeralInt(nCtx(), v, s.getNativeObject()));
3753 }

◆ mkFPRem()

FPExpr mkFPRem ( Expr< FPSort t1,
Expr< FPSort t2 
)
inline

Floating-point remainder

Parameters
t1floating-point term
t2floating-point term
Exceptions
Z3Exception

Definition at line 3942 of file Context.java.

3943 {
3944 return new FPExpr(this, Native.mkFpaRem(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
3945 }

◆ mkFPRNA()

FPRMNum mkFPRNA ( )
inline

Create a numeral of RoundingMode sort which represents the NearestTiesToAway rounding mode.

Exceptions
Z3Exception

Definition at line 3547 of file Context.java.

3548 {
3549 return new FPRMNum(this, Native.mkFpaRna(nCtx()));
3550 }

◆ mkFPRNE()

FPRMNum mkFPRNE ( )
inline

Create a numeral of RoundingMode sort which represents the NearestTiesToEven rounding mode.

Exceptions
Z3Exception

Definition at line 3529 of file Context.java.

3530 {
3531 return new FPRMNum(this, Native.mkFpaRne(nCtx()));
3532 }

◆ mkFPRoundingModeSort()

FPRMSort mkFPRoundingModeSort ( )
inline

Create the floating-point RoundingMode sort.

Exceptions
Z3Exception

Definition at line 3511 of file Context.java.

3512 {
3513 return new FPRMSort(this);
3514 }

◆ mkFPRoundNearestTiesToAway()

FPRMNum mkFPRoundNearestTiesToAway ( )
inline

Create a numeral of RoundingMode sort which represents the NearestTiesToAway rounding mode.

Exceptions
Z3Exception

Definition at line 3538 of file Context.java.

3539 {
3540 return new FPRMNum(this, Native.mkFpaRoundNearestTiesToAway(nCtx()));
3541 }

◆ mkFPRoundNearestTiesToEven()

FPRMExpr mkFPRoundNearestTiesToEven ( )
inline

Create a numeral of RoundingMode sort which represents the NearestTiesToEven rounding mode.

Exceptions
Z3Exception

Definition at line 3520 of file Context.java.

3521 {
3522 return new FPRMExpr(this, Native.mkFpaRoundNearestTiesToEven(nCtx()));
3523 }

◆ mkFPRoundToIntegral()

FPExpr mkFPRoundToIntegral ( Expr< FPRMSort rm,
Expr< FPSort t 
)
inline

Floating-point roundToIntegral. Rounds a floating-point number to the closest integer, again represented as a floating-point number.

Parameters
rmterm of RoundingMode sort
tfloating-point term
Exceptions
Z3Exception

Definition at line 3954 of file Context.java.

3955 {
3956 return new FPExpr(this, Native.mkFpaRoundToIntegral(nCtx(), rm.getNativeObject(), t.getNativeObject()));
3957 }

◆ mkFPRoundTowardNegative()

FPRMNum mkFPRoundTowardNegative ( )
inline

Create a numeral of RoundingMode sort which represents the RoundTowardNegative rounding mode.

Exceptions
Z3Exception

Definition at line 3574 of file Context.java.

3575 {
3576 return new FPRMNum(this, Native.mkFpaRoundTowardNegative(nCtx()));
3577 }

◆ mkFPRoundTowardPositive()

FPRMNum mkFPRoundTowardPositive ( )
inline

Create a numeral of RoundingMode sort which represents the RoundTowardPositive rounding mode.

Exceptions
Z3Exception

Definition at line 3556 of file Context.java.

3557 {
3558 return new FPRMNum(this, Native.mkFpaRoundTowardPositive(nCtx()));
3559 }

◆ mkFPRoundTowardZero()

FPRMNum mkFPRoundTowardZero ( )
inline

Create a numeral of RoundingMode sort which represents the RoundTowardZero rounding mode.

Exceptions
Z3Exception

Definition at line 3592 of file Context.java.

3593 {
3594 return new FPRMNum(this, Native.mkFpaRoundTowardZero(nCtx()));
3595 }

◆ mkFPRTN()

FPRMNum mkFPRTN ( )
inline

Create a numeral of RoundingMode sort which represents the RoundTowardNegative rounding mode.

Exceptions
Z3Exception

Definition at line 3583 of file Context.java.

3584 {
3585 return new FPRMNum(this, Native.mkFpaRtn(nCtx()));
3586 }

◆ mkFPRTP()

FPRMNum mkFPRTP ( )
inline

Create a numeral of RoundingMode sort which represents the RoundTowardPositive rounding mode.

Exceptions
Z3Exception

Definition at line 3565 of file Context.java.

3566 {
3567 return new FPRMNum(this, Native.mkFpaRtp(nCtx()));
3568 }

◆ mkFPRTZ()

FPRMNum mkFPRTZ ( )
inline

Create a numeral of RoundingMode sort which represents the RoundTowardZero rounding mode.

Exceptions
Z3Exception

Definition at line 3601 of file Context.java.

3602 {
3603 return new FPRMNum(this, Native.mkFpaRtz(nCtx()));
3604 }

◆ mkFPSort()

FPSort mkFPSort ( int  ebits,
int  sbits 
)
inline

Create a FloatingPoint sort.

Parameters
ebitsexponent bits in the FloatingPoint sort.
sbitssignificand bits in the FloatingPoint sort.
Exceptions
Z3Exception

Definition at line 3612 of file Context.java.

3613 {
3614 return new FPSort(this, ebits, sbits);
3615 }
FPSort(ebits, sbits, ctx=None)
Definition z3py.py:10198

◆ mkFPSort128()

FPSort mkFPSort128 ( )
inline

Create the quadruple-precision (128-bit) FloatingPoint sort.

Exceptions
Z3Exception

Definition at line 3684 of file Context.java.

3685 {
3686 return new FPSort(this, Native.mkFpaSort128(nCtx()));
3687 }

◆ mkFPSort16()

FPSort mkFPSort16 ( )
inline

Create the half-precision (16-bit) FloatingPoint sort.

Exceptions
Z3Exception

Definition at line 3630 of file Context.java.

3631 {
3632 return new FPSort(this, Native.mkFpaSort16(nCtx()));
3633 }

◆ mkFPSort32()

FPSort mkFPSort32 ( )
inline

Create the single-precision (32-bit) FloatingPoint sort.

Exceptions
Z3Exception

Definition at line 3648 of file Context.java.

3649 {
3650 return new FPSort(this, Native.mkFpaSort32(nCtx()));
3651 }

◆ mkFPSort64()

FPSort mkFPSort64 ( )
inline

Create the double-precision (64-bit) FloatingPoint sort.

Exceptions
Z3Exception

Definition at line 3666 of file Context.java.

3667 {
3668 return new FPSort(this, Native.mkFpaSort64(nCtx()));
3669 }

◆ mkFPSortDouble()

FPSort mkFPSortDouble ( )
inline

Create the double-precision (64-bit) FloatingPoint sort.

Exceptions
Z3Exception

Definition at line 3657 of file Context.java.

3658 {
3659 return new FPSort(this, Native.mkFpaSortDouble(nCtx()));
3660 }

◆ mkFPSortHalf()

FPSort mkFPSortHalf ( )
inline

Create the half-precision (16-bit) FloatingPoint sort.

Exceptions
Z3Exception

Definition at line 3621 of file Context.java.

3622 {
3623 return new FPSort(this, Native.mkFpaSortHalf(nCtx()));
3624 }

◆ mkFPSortQuadruple()

FPSort mkFPSortQuadruple ( )
inline

Create the quadruple-precision (128-bit) FloatingPoint sort.

Exceptions
Z3Exception

Definition at line 3675 of file Context.java.

3676 {
3677 return new FPSort(this, Native.mkFpaSortQuadruple(nCtx()));
3678 }

◆ mkFPSortSingle()

FPSort mkFPSortSingle ( )
inline

Create the single-precision (32-bit) FloatingPoint sort.

Exceptions
Z3Exception

Definition at line 3639 of file Context.java.

3640 {
3641 return new FPSort(this, Native.mkFpaSortSingle(nCtx()));
3642 }

◆ mkFPSqrt()

FPExpr mkFPSqrt ( Expr< FPRMSort rm,
Expr< FPSort t 
)
inline

Floating-point square root

Parameters
rmrounding mode term
tfloating-point term
Exceptions
Z3Exception

Definition at line 3931 of file Context.java.

3932 {
3933 return new FPExpr(this, Native.mkFpaSqrt(nCtx(), rm.getNativeObject(), t.getNativeObject()));
3934 }

◆ mkFPSub()

FPExpr mkFPSub ( Expr< FPRMSort rm,
Expr< FPSort t1,
Expr< FPSort t2 
)
inline

Floating-point subtraction

Parameters
rmrounding mode term
t1floating-point term
t2floating-point term
Exceptions
Z3Exception

Definition at line 3881 of file Context.java.

3882 {
3883 return new FPExpr(this, Native.mkFpaSub(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject()));
3884 }

◆ mkFPToBV()

BitVecExpr mkFPToBV ( Expr< FPRMSort rm,
Expr< FPSort t,
int  sz,
boolean signed   
)
inline

Conversion of a floating-point term into a bit-vector.

Parameters
rmRoundingMode term.
tFloatingPoint term
szSize of the resulting bit-vector.
signedIndicates whether the result is a signed or unsigned bit-vector. Remarks: Produces a term that represents the conversion of the floating-point term t into a bit-vector term of size sz in 2's complement format (signed when signed==true). If necessary, the result will be rounded according to rounding mode rm.
Exceptions
Z3Exception

Definition at line 4222 of file Context.java.

4223 {
4224 if (signed)
4225 return new BitVecExpr(this, Native.mkFpaToSbv(nCtx(), rm.getNativeObject(), t.getNativeObject(), sz));
4226 else
4227 return new BitVecExpr(this, Native.mkFpaToUbv(nCtx(), rm.getNativeObject(), t.getNativeObject(), sz));
4228 }

◆ mkFPToFP() [1/6]

FPExpr mkFPToFP ( Expr< BitVecSort bv,
FPSort  s 
)
inline

Conversion of a single IEEE 754-2008 bit-vector into a floating-point number.

Parameters
bvbit-vector value (of size m).
sFloatingPoint sort (ebits+sbits == m) Remarks: Produces a term that represents the conversion of a bit-vector term bv to a floating-point term of sort s. The bit-vector size of bv (m) must be equal to ebits+sbits of s. The format of the bit-vector is as defined by the IEEE 754-2008 interchange format.
Exceptions
Z3Exception

Definition at line 4137 of file Context.java.

4138 {
4139 return new FPExpr(this, Native.mkFpaToFpBv(nCtx(), bv.getNativeObject(), s.getNativeObject()));
4140 }

◆ mkFPToFP() [2/6]

FPExpr mkFPToFP ( Expr< FPRMSort rm,
Expr< BitVecSort t,
FPSort  s,
boolean signed   
)
inline

Conversion of a 2's complement signed bit-vector term into a term of FloatingPoint sort.

Parameters
rmRoundingMode term.
tterm of bit-vector sort.
sFloatingPoint sort.
signedflag indicating whether t is interpreted as signed or unsigned bit-vector. Remarks: Produces a term that represents the conversion of the bit-vector term t into a floating-point term of sort s. The bit-vector t is taken to be in signed 2's complement format (when signed==true, otherwise unsigned). If necessary, the result will be rounded according to rounding mode rm.
Exceptions
Z3Exception

Definition at line 4187 of file Context.java.

4188 {
4189 if (signed)
4190 return new FPExpr(this, Native.mkFpaToFpSigned(nCtx(), rm.getNativeObject(), t.getNativeObject(), s.getNativeObject()));
4191 else
4192 return new FPExpr(this, Native.mkFpaToFpUnsigned(nCtx(), rm.getNativeObject(), t.getNativeObject(), s.getNativeObject()));
4193 }

◆ mkFPToFP() [3/6]

BitVecExpr mkFPToFP ( Expr< FPRMSort rm,
Expr< IntSort exp,
Expr< RealSort sig,
FPSort  s 
)
inline

Conversion of a real-sorted significand and an integer-sorted exponent into a term of FloatingPoint sort.

Parameters
rmRoundingMode term.
expExponent term of Int sort.
sigSignificand term of Real sort.
sFloatingPoint sort. Remarks: Produces a term that represents the conversion of sig * 2^exp into a floating-point term of sort s. If necessary, the result will be rounded according to rounding mode rm.
Exceptions
Z3Exception

Definition at line 4272 of file Context.java.

4273 {
4274 return new BitVecExpr(this, Native.mkFpaToFpIntReal(nCtx(), rm.getNativeObject(), exp.getNativeObject(), sig.getNativeObject(), s.getNativeObject()));
4275 }

◆ mkFPToFP() [4/6]

FPExpr mkFPToFP ( Expr< FPRMSort rm,
FPExpr  t,
FPSort  s 
)
inline

Conversion of a FloatingPoint term into another term of different FloatingPoint sort.

Parameters
rmRoundingMode term.
tFloatingPoint term.
sFloatingPoint sort. Remarks: Produces a term that represents the conversion of a floating-point term t to a floating-point term of sort s. If necessary, the result will be rounded according to rounding mode rm.
Exceptions
Z3Exception

Definition at line 4153 of file Context.java.

4154 {
4155 return new FPExpr(this, Native.mkFpaToFpFloat(nCtx(), rm.getNativeObject(), t.getNativeObject(), s.getNativeObject()));
4156 }

◆ mkFPToFP() [5/6]

FPExpr mkFPToFP ( Expr< FPRMSort rm,
RealExpr  t,
FPSort  s 
)
inline

Conversion of a term of real sort into a term of FloatingPoint sort.

Parameters
rmRoundingMode term.
tterm of Real sort.
sFloatingPoint sort. Remarks: Produces a term that represents the conversion of term t of real sort into a floating-point term of sort s. If necessary, the result will be rounded according to rounding mode rm.
Exceptions
Z3Exception

Definition at line 4169 of file Context.java.

4170 {
4171 return new FPExpr(this, Native.mkFpaToFpReal(nCtx(), rm.getNativeObject(), t.getNativeObject(), s.getNativeObject()));
4172 }

◆ mkFPToFP() [6/6]

FPExpr mkFPToFP ( FPSort  s,
Expr< FPRMSort rm,
Expr< FPSort t 
)
inline

Conversion of a floating-point number to another FloatingPoint sort s.

Parameters
sFloatingPoint sort
rmfloating-point rounding mode term
tfloating-point term Remarks: Produces a term that represents the conversion of a floating-point term t to a different FloatingPoint sort s. If necessary, rounding according to rm is applied.
Exceptions
Z3Exception

Definition at line 4205 of file Context.java.

4206 {
4207 return new FPExpr(this, Native.mkFpaToFpFloat(nCtx(), s.getNativeObject(), rm.getNativeObject(), t.getNativeObject()));
4208 }

◆ mkFPToIEEEBV()

BitVecExpr mkFPToIEEEBV ( Expr< FPSort t)
inline

Conversion of a floating-point term into a bit-vector term in IEEE 754-2008 format.

Parameters
tFloatingPoint term. Remarks: The size of the resulting bit-vector is automatically determined. Note that IEEE 754-2008 allows multiple different representations of NaN. This conversion knows only one NaN and it will always produce the same bit-vector representation of that NaN.
Exceptions
Z3Exception

Definition at line 4254 of file Context.java.

4255 {
4256 return new BitVecExpr(this, Native.mkFpaToIeeeBv(nCtx(), t.getNativeObject()));
4257 }

◆ mkFPToReal()

RealExpr mkFPToReal ( Expr< FPSort t)
inline

Conversion of a floating-point term into a real-numbered term.

Parameters
tFloatingPoint term Remarks: Produces a term that represents the conversion of the floating-point term t into a real number. Note that this type of conversion will often result in non-linear constraints over real terms.
Exceptions
Z3Exception

Definition at line 4239 of file Context.java.

4240 {
4241 return new RealExpr(this, Native.mkFpaToReal(nCtx(), t.getNativeObject()));
4242 }

◆ mkFPZero()

FPNum mkFPZero ( FPSort  s,
boolean  negative 
)
inline

Create a floating-point zero of sort s.

Parameters
sFloatingPoint sort.
negativeindicates whether the result should be negative.
Exceptions
Z3Exception

Definition at line 3717 of file Context.java.

3718 {
3719 return new FPNum(this, Native.mkFpaZero(nCtx(), s.getNativeObject(), negative));
3720 }

◆ mkFreshConst()

final< R extends Sort > Expr< R > mkFreshConst ( String  prefix,
range 
)
inline

Creates a fresh Constant of sort range and a name prefixed with prefix.

Definition at line 680 of file Context.java.

681 {
682 checkContextMatch(range);
683 return (Expr<R>) Expr.create(this,
684 Native.mkFreshConst(nCtx(), prefix, range.getNativeObject()));
685 }

◆ mkFreshConstDecl()

final< R extends Sort > FuncDecl< R > mkFreshConstDecl ( String  prefix,
range 
)
inline

Creates a fresh constant function declaration with a name prefixed with prefix.

See also
#mkFuncDecl(String,Sort,Sort)
#mkFuncDecl(String,Sort[],Sort)

Definition at line 620 of file Context.java.

622 {
623 checkContextMatch(range);
624 return new FuncDecl<>(this, prefix, null, range);
625 }

◆ mkFreshFuncDecl()

final< R extends Sort > FuncDecl< R > mkFreshFuncDecl ( String  prefix,
Sort[]  domain,
range 
)
inline

Creates a fresh function declaration with a name prefixed with prefix.

See also
#mkFuncDecl(String,Sort,Sort)
#mkFuncDecl(String,Sort[],Sort)

Definition at line 587 of file Context.java.

589 {
590 checkContextMatch(domain);
591 checkContextMatch(range);
592 return new FuncDecl<>(this, prefix, domain, range);
593 }

◆ mkFullRe()

final< R extends Sort > ReExpr< R > mkFullRe ( ReSort< R >  s)
inline

Create the full regular expression. Corresponds to re.all

Definition at line 2407 of file Context.java.

2408 {
2409 return (ReExpr<R>) Expr.create(this, Native.mkReFull(nCtx(), s.getNativeObject()));
2410 }

◆ mkFullSet()

final< D extends Sort > ArrayExpr< D, BoolSort > mkFullSet ( domain)
inline

Create the full set.

Definition at line 1953 of file Context.java.

1954 {
1955 checkContextMatch(domain);
1956 return (ArrayExpr<D, BoolSort>) Expr.create(this,
1957 Native.mkFullSet(nCtx(), domain.getNativeObject()));
1958 }

◆ mkFuncDecl() [1/4]

final< R extends Sort > FuncDecl< R > mkFuncDecl ( String  name,
Sort  domain,
range 
)
inline

Creates a new function declaration.

Definition at line 545 of file Context.java.

547 {
548 checkContextMatch(domain);
549 checkContextMatch(range);
550 Sort[] q = new Sort[] { domain };
551 return new FuncDecl<>(this, mkSymbol(name), q, range);
552 }

◆ mkFuncDecl() [2/4]

final< R extends Sort > FuncDecl< R > mkFuncDecl ( String  name,
Sort[]  domain,
range 
)
inline

Creates a new function declaration.

Definition at line 534 of file Context.java.

536 {
537 checkContextMatch(domain);
538 checkContextMatch(range);
539 return new FuncDecl<>(this, mkSymbol(name), domain, range);
540 }

◆ mkFuncDecl() [3/4]

final< R extends Sort > FuncDecl< R > mkFuncDecl ( Symbol  name,
Sort  domain,
range 
)
inline

Creates a new function declaration.

Definition at line 521 of file Context.java.

523 {
524 checkContextMatch(name);
525 checkContextMatch(domain);
526 checkContextMatch(range);
527 Sort[] q = new Sort[] { domain };
528 return new FuncDecl<>(this, name, q, range);
529 }

◆ mkFuncDecl() [4/4]

final< R extends Sort > FuncDecl< R > mkFuncDecl ( Symbol  name,
Sort[]  domain,
range 
)
inline

Creates a new function declaration.

Definition at line 495 of file Context.java.

496 {
497 checkContextMatch(name);
498 checkContextMatch(domain);
499 checkContextMatch(range);
500 return new FuncDecl<>(this, name, domain, range);
501 }

◆ mkGe()

BoolExpr mkGe ( Expr<? extends ArithSort t1,
Expr<? extends ArithSort t2 
)
inline

Create an expression representing t1 &gt;= t2

Definition at line 1027 of file Context.java.

1028 {
1029 checkContextMatch(t1);
1030 checkContextMatch(t2);
1031 return new BoolExpr(this, Native.mkGe(nCtx(), t1.getNativeObject(),
1032 t2.getNativeObject()));
1033 }

◆ mkGoal()

Goal mkGoal ( boolean  models,
boolean  unsatCores,
boolean  proofs 
)
inline

Creates a new Goal. Remarks: Note that the Context must have been created with proof generation support if proofs is set to true here.

Parameters
modelsIndicates whether model generation should be enabled.
unsatCoresIndicates whether unsat core generation should be enabled.
proofsIndicates whether proof generation should be enabled.

Definition at line 2936 of file Context.java.

2937 {
2938 return new Goal(this, models, unsatCores, proofs);
2939 }

◆ mkGt()

BoolExpr mkGt ( Expr<? extends ArithSort t1,
Expr<? extends ArithSort t2 
)
inline

Create an expression representing t1 &gt; t2

Definition at line 1016 of file Context.java.

1017 {
1018 checkContextMatch(t1);
1019 checkContextMatch(t2);
1020 return new BoolExpr(this, Native.mkGt(nCtx(), t1.getNativeObject(),
1021 t2.getNativeObject()));
1022 }

◆ mkIff()

BoolExpr mkIff ( Expr< BoolSort t1,
Expr< BoolSort t2 
)
inline

Create an expression representing t1 iff t2.

Definition at line 845 of file Context.java.

846 {
847 checkContextMatch(t1);
848 checkContextMatch(t2);
849 return new BoolExpr(this, Native.mkIff(nCtx(), t1.getNativeObject(),
850 t2.getNativeObject()));
851 }

◆ mkImplies()

BoolExpr mkImplies ( Expr< BoolSort t1,
Expr< BoolSort t2 
)
inline

Create an expression representing t1 -> t2.

Definition at line 856 of file Context.java.

857 {
858 checkContextMatch(t1);
859 checkContextMatch(t2);
860 return new BoolExpr(this, Native.mkImplies(nCtx(),
861 t1.getNativeObject(), t2.getNativeObject()));
862 }

◆ mkIndexOf()

final< R extends Sort > IntExpr mkIndexOf ( Expr< SeqSort< R > >  s,
Expr< SeqSort< R > >  substr,
Expr< IntSort offset 
)
inline

Extract index of sub-string starting at offset.

Definition at line 2223 of file Context.java.

2224 {
2225 checkContextMatch(s, substr, offset);
2226 return (IntExpr)Expr.create(this, Native.mkSeqIndex(nCtx(), s.getNativeObject(), substr.getNativeObject(), offset.getNativeObject()));
2227 }

◆ mkInRe()

final< R extends Sort > BoolExpr mkInRe ( Expr< SeqSort< R > >  s,
ReExpr< SeqSort< R > >  re 
)
inline

Check for regular expression membership.

Definition at line 2287 of file Context.java.

2288 {
2289 checkContextMatch(s, re);
2290 return (BoolExpr) Expr.create(this, Native.mkSeqInRe(nCtx(), s.getNativeObject(), re.getNativeObject()));
2291 }

◆ mkInt() [1/3]

IntNum mkInt ( int  v)
inline

Create an integer numeral.

Parameters
vvalue of the numeral.
Returns
A Term with value v and sort Integer

Definition at line 2646 of file Context.java.

2647 {
2648
2649 return new IntNum(this, Native.mkInt(nCtx(), v, getIntSort()
2650 .getNativeObject()));
2651 }

◆ mkInt() [2/3]

IntNum mkInt ( long  v)
inline

Create an integer numeral.

Parameters
vvalue of the numeral.
Returns
A Term with value v and sort Integer

Definition at line 2659 of file Context.java.

2660 {
2661
2662 return new IntNum(this, Native.mkInt64(nCtx(), v, getIntSort()
2663 .getNativeObject()));
2664 }

◆ mkInt() [3/3]

IntNum mkInt ( String  v)
inline

Create an integer numeral.

Parameters
vA string representing the Term value in decimal notation.

Definition at line 2633 of file Context.java.

2634 {
2635
2636 return new IntNum(this, Native.mkNumeral(nCtx(), v, getIntSort()
2637 .getNativeObject()));
2638 }

◆ mkInt2BV()

BitVecExpr mkInt2BV ( int  n,
Expr< IntSort t 
)
inline

Create an n bit bit-vector from the integer argument t. Remarks: NB. This function is essentially treated as uninterpreted. So you cannot expect Z3 to precisely reflect the semantics of this function when solving constraints with this function.

The argument must be of integer sort.

Definition at line 1618 of file Context.java.

1619 {
1620 checkContextMatch(t);
1621 return new BitVecExpr(this, Native.mkInt2bv(nCtx(), n,
1622 t.getNativeObject()));
1623 }

◆ mkInt2Real()

RealExpr mkInt2Real ( Expr< IntSort t)
inline

Coerce an integer to a real. Remarks: There is also a converse operation exposed. It follows the semantics prescribed by the SMT-LIB standard.

You can take the floor of a real by creating an auxiliary integer Term k and asserting MakeInt2Real(k) &lt;= t1 &lt; MkInt2Real(k)+1. The argument must be of integer sort.

Definition at line 1045 of file Context.java.

1046 {
1047 checkContextMatch(t);
1048 return new RealExpr(this,
1049 Native.mkInt2real(nCtx(), t.getNativeObject()));
1050 }

◆ mkIntConst() [1/2]

IntExpr mkIntConst ( String  name)
inline

Creates an integer constant.

Definition at line 723 of file Context.java.

724 {
725 return (IntExpr) mkConst(name, getIntSort());
726 }

◆ mkIntConst() [2/2]

IntExpr mkIntConst ( Symbol  name)
inline

Creates an integer constant.

Definition at line 715 of file Context.java.

716 {
717 return (IntExpr) mkConst(name, getIntSort());
718 }

◆ mkIntersect()

final< R extends Sort > ReExpr< R > mkIntersect ( Expr< ReSort< R > >...  t)
inline

Create the intersection of regular languages.

Definition at line 2378 of file Context.java.

2379 {
2380 checkContextMatch(t);
2381 return (ReExpr<R>) Expr.create(this, Native.mkReIntersect(nCtx(), t.length, AST.arrayToNative(t)));
2382 }

◆ mkIntSort()

IntSort mkIntSort ( )
inline

Create a new integer sort.

Definition at line 206 of file Context.java.

207 {
208 return new IntSort(this);
209 }

◆ mkIsDigit()

BoolExpr mkIsDigit ( Expr< CharSort ch)
inline

Create a check if the character is a digit.

Definition at line 2470 of file Context.java.

2471 {
2472 checkContextMatch(ch);
2473 return (BoolExpr) Expr.create(this, Native.mkCharIsDigit(nCtx(), ch.getNativeObject()));
2474 }

◆ mkIsInteger()

BoolExpr mkIsInteger ( Expr< RealSort t)
inline

Creates an expression that checks whether a real number is an integer.

Definition at line 1067 of file Context.java.

1068 {
1069 checkContextMatch(t);
1070 return new BoolExpr(this, Native.mkIsInt(nCtx(), t.getNativeObject()));
1071 }

◆ mkITE()

final< R extends Sort > Expr< R > mkITE ( Expr< BoolSort t1,
Expr<? extends R >  t2,
Expr<? extends R >  t3 
)
inline

Create an expression representing an if-then-else: ite(t1, t2, t3).

Parameters
t1An expression with Boolean sort
t2An expression
t3An expression with the same sort as t2

Definition at line 833 of file Context.java.

834 {
835 checkContextMatch(t1);
836 checkContextMatch(t2);
837 checkContextMatch(t3);
838 return (Expr<R>) Expr.create(this, Native.mkIte(nCtx(), t1.getNativeObject(),
839 t2.getNativeObject(), t3.getNativeObject()));
840 }

◆ mkLambda() [1/2]

final< R extends Sort > Lambda< R > mkLambda ( Expr<?>[]  boundConstants,
Expr< R >  body 
)
inline

Create a lambda expression.

Creates a lambda expression using a list of constants that will form the set of bound variables.

Definition at line 2831 of file Context.java.

2832 {
2833 return Lambda.of(this, boundConstants, body);
2834 }
Lambda(vs, body)
Definition z3py.py:2363

◆ mkLambda() [2/2]

final< R extends Sort > Lambda< R > mkLambda ( Sort[]  sorts,
Symbol[]  names,
Expr< R >  body 
)
inline

Create a lambda expression.

sorts is an array with the sorts of the bound variables, names is an array with the 'names' of the bound variables, and body is the body of the lambda. Note that the bound variables are de-Bruijn indices created using {#mkBound} Z3 applies the convention that the last element in names and sorts refers to the variable with index 0, the second to last element of names and sorts refers to the variable with index 1, etc.

Parameters
sortsthe sorts of the bound variables.
namesnames of the bound variables.
bodythe body of the quantifier.

Definition at line 2820 of file Context.java.

2821 {
2822 return Lambda.of(this, sorts, names, body);
2823 }

◆ mkLastIndexOf()

final< R extends Sort > IntExpr mkLastIndexOf ( Expr< SeqSort< R > >  s,
Expr< SeqSort< R > >  substr 
)
inline

Extract the last index of sub-string.

Definition at line 2232 of file Context.java.

2233 {
2234 checkContextMatch(s, substr);
2235 return (IntExpr)Expr.create(this, Native.mkSeqLastIndex(nCtx(), s.getNativeObject(), substr.getNativeObject()));
2236 }

◆ mkLe()

BoolExpr mkLe ( Expr<? extends ArithSort t1,
Expr<? extends ArithSort t2 
)
inline

Create an expression representing t1 &lt;= t2

Definition at line 1005 of file Context.java.

1006 {
1007 checkContextMatch(t1);
1008 checkContextMatch(t2);
1009 return new BoolExpr(this, Native.mkLe(nCtx(), t1.getNativeObject(),
1010 t2.getNativeObject()));
1011 }

◆ mkLength()

final< R extends Sort > IntExpr mkLength ( Expr< SeqSort< R > >  s)
inline

Retrieve the length of a given sequence.

Definition at line 2139 of file Context.java.

2140 {
2141 checkContextMatch(s);
2142 return (IntExpr) Expr.create(this, Native.mkSeqLength(nCtx(), s.getNativeObject()));
2143 }

◆ mkLinearOrder()

final< R extends Sort > FuncDecl< BoolSort > mkLinearOrder ( sort,
int  index 
)
inline

Creates or a linear order.

Parameters
indexThe index of the order.
sortThe sort of the order.

Definition at line 4282 of file Context.java.

4282 {
4283 return (FuncDecl<BoolSort>) FuncDecl.create(
4284 this,
4285 Native.mkLinearOrder(
4286 nCtx(),
4287 sort.getNativeObject(),
4288 index
4289 )
4290 );
4291 }

◆ mkListSort() [1/2]

final< R extends Sort > ListSort< R > mkListSort ( String  name,
elemSort 
)
inline

Create a new list sort.

Definition at line 319 of file Context.java.

320 {
321 checkContextMatch(elemSort);
322 return new ListSort<>(this, mkSymbol(name), elemSort);
323 }

◆ mkListSort() [2/2]

final< R extends Sort > ListSort< R > mkListSort ( Symbol  name,
elemSort 
)
inline

Create a new list sort.

Definition at line 309 of file Context.java.

310 {
311 checkContextMatch(name);
312 checkContextMatch(elemSort);
313 return new ListSort<>(this, name, elemSort);
314 }

◆ mkLoop() [1/2]

final< R extends Sort > ReExpr< R > mkLoop ( Expr< ReSort< R > >  re,
int  lo 
)
inline

Take the lower-bounded Kleene star of a regular expression.

Definition at line 2321 of file Context.java.

2322 {
2323 return (ReExpr<R>) Expr.create(this, Native.mkReLoop(nCtx(), re.getNativeObject(), lo, 0));
2324 }

◆ mkLoop() [2/2]

final< R extends Sort > ReExpr< R > mkLoop ( Expr< ReSort< R > >  re,
int  lo,
int  hi 
)
inline

Take the lower and upper-bounded Kleene star of a regular expression.

Definition at line 2313 of file Context.java.

2314 {
2315 return (ReExpr<R>) Expr.create(this, Native.mkReLoop(nCtx(), re.getNativeObject(), lo, hi));
2316 }

◆ mkLt()

BoolExpr mkLt ( Expr<? extends ArithSort t1,
Expr<? extends ArithSort t2 
)
inline

Create an expression representing t1 &lt; t2

Definition at line 994 of file Context.java.

995 {
996 checkContextMatch(t1);
997 checkContextMatch(t2);
998 return new BoolExpr(this, Native.mkLt(nCtx(), t1.getNativeObject(),
999 t2.getNativeObject()));
1000 }

◆ mkMap()

final< D extends Sort, R1 extends Sort, R2 extends Sort > ArrayExpr< D, R2 > mkMap ( FuncDecl< R2 >  f,
Expr< ArraySort< D, R1 > >...  args 
)
inline

Maps f on the argument arrays. Remarks: Each element of args must be of an array sort [domain_i -> range_i]. The function declaration f must have type range_1 .. range_n -> range. v must have sort range. The sort of the result is [domain_i -> range].

See also
#mkArraySort(Sort[], R)
#mkSelect(Expr<ArraySort<D, R>> a, Expr<D> i)
#mkStore(Expr<ArraySort<D, R>> a, Expr<D> i, Expr<R> v)

Definition at line 1898 of file Context.java.

1899 {
1900 checkContextMatch(f);
1901 checkContextMatch(args);
1902 return (ArrayExpr<D, R2>) Expr.create(this, Native.mkMap(nCtx(),
1903 f.getNativeObject(), AST.arrayLength(args),
1904 AST.arrayToNative(args)));
1905 }

◆ mkMod()

IntExpr mkMod ( Expr< IntSort t1,
Expr< IntSort t2 
)
inline

Create an expression representing t1 mod t2. Remarks: The arguments must have int type.

Definition at line 956 of file Context.java.

957 {
958 checkContextMatch(t1);
959 checkContextMatch(t2);
960 return new IntExpr(this, Native.mkMod(nCtx(), t1.getNativeObject(),
961 t2.getNativeObject()));
962 }

◆ mkMul()

final< R extends ArithSort > ArithExpr< R > mkMul ( Expr<? extends R >...  t)
inline

Create an expression representing t[0] * t[1] * ....

Definition at line 912 of file Context.java.

913 {
914 checkContextMatch(t);
915 return (ArithExpr<R>) Expr.create(this,
916 Native.mkMul(nCtx(), t.length, AST.arrayToNative(t)));
917 }

◆ mkNot()

final BoolExpr mkNot ( Expr< BoolSort a)
inline

Create an expression representing not(a).

Definition at line 820 of file Context.java.

821 {
822 checkContextMatch(a);
823 return new BoolExpr(this, Native.mkNot(nCtx(), a.getNativeObject()));
824 }

◆ mkNth()

final< R extends Sort > Expr< R > mkNth ( Expr< SeqSort< R > >  s,
Expr< IntSort index 
)
inline

Retrieve element at index.

Definition at line 2204 of file Context.java.

2205 {
2206 checkContextMatch(s, index);
2207 return (Expr<R>) Expr.create(this, Native.mkSeqNth(nCtx(), s.getNativeObject(), index.getNativeObject()));
2208 }

◆ mkNumeral() [1/3]

final< R extends Sort > Expr< R > mkNumeral ( int  v,
ty 
)
inline

Create a Term of a given sort. This function can be used to create numerals that fit in a machine integer. It is slightly faster than MakeNumeral since it is not necessary to parse a string.

Parameters
vValue of the numeral
tySort of the numeral
Returns
A Term with value v and type ty

Definition at line 2549 of file Context.java.

2550 {
2551 checkContextMatch(ty);
2552 return (Expr<R>) Expr.create(this, Native.mkInt(nCtx(), v, ty.getNativeObject()));
2553 }

◆ mkNumeral() [2/3]

final< R extends Sort > Expr< R > mkNumeral ( long  v,
ty 
)
inline

Create a Term of a given sort. This function can be used to create numerals that fit in a machine integer. It is slightly faster than MakeNumeral since it is not necessary to parse a string.

Parameters
vValue of the numeral
tySort of the numeral
Returns
A Term with value v and type ty

Definition at line 2565 of file Context.java.

2566 {
2567 checkContextMatch(ty);
2568 return (Expr<R>) Expr.create(this,
2569 Native.mkInt64(nCtx(), v, ty.getNativeObject()));
2570 }

◆ mkNumeral() [3/3]

final< R extends Sort > Expr< R > mkNumeral ( String  v,
ty 
)
inline

Create a Term of a given sort.

Parameters
vA string representing the term value in decimal notation. If the given sort is a real, then the Term can be a rational, that is, a string of the form [num]* / [num]*.
tyThe sort of the numeral. In the current implementation, the given sort can be an int, real, or bit-vectors of arbitrary size.
Returns
A Term with value v and sort ty

Definition at line 2532 of file Context.java.

2533 {
2534 checkContextMatch(ty);
2535 return (Expr<R>) Expr.create(this,
2536 Native.mkNumeral(nCtx(), v, ty.getNativeObject()));
2537 }

◆ mkOptimize()

Optimize mkOptimize ( )
inline

Create a Optimize context.

Definition at line 3501 of file Context.java.

3502 {
3503 return new Optimize(this);
3504 }

◆ mkOption()

final< R extends Sort > ReExpr< R > mkOption ( Expr< ReSort< R > >  re)
inline

Create the optional regular expression.

Definition at line 2339 of file Context.java.

2340 {
2341 checkContextMatch(re);
2342 return (ReExpr<R>) Expr.create(this, Native.mkReOption(nCtx(), re.getNativeObject()));
2343 }

◆ mkOr()

final BoolExpr mkOr ( Expr< BoolSort >...  t)
inline

Create an expression representing t[0] or t[1] or ....

Definition at line 890 of file Context.java.

891 {
892 checkContextMatch(t);
893 return new BoolExpr(this, Native.mkOr(nCtx(), t.length,
894 AST.arrayToNative(t)));
895 }

◆ mkParams()

Params mkParams ( )
inline

Creates a new ParameterSet.

Definition at line 2944 of file Context.java.

2945 {
2946 return new Params(this);
2947 }

◆ mkPartialOrder()

final< R extends Sort > FuncDecl< BoolSort > mkPartialOrder ( sort,
int  index 
)
inline

Creates or a partial order.

Parameters
indexThe index of the order.
sortThe sort of the order.

Definition at line 4298 of file Context.java.

4298 {
4299 return (FuncDecl<BoolSort>) FuncDecl.create(
4300 this,
4301 Native.mkPartialOrder(
4302 nCtx(),
4303 sort.getNativeObject(),
4304 index
4305 )
4306 );
4307 }

◆ mkPattern()

final Pattern mkPattern ( Expr<?>...  terms)
inline

Create a quantifier pattern.

Definition at line 642 of file Context.java.

643 {
644 if (terms.length == 0)
645 throw new Z3Exception("Cannot create a pattern from zero terms");
646
647 long[] termsNative = AST.arrayToNative(terms);
648 return new Pattern(this, Native.mkPattern(nCtx(), terms.length,
649 termsNative));
650 }

◆ mkPBEq()

BoolExpr mkPBEq ( int[]  coeffs,
Expr< BoolSort >[]  args,
int  k 
)
inline

Create a pseudo-Boolean equal constraint.

Definition at line 2515 of file Context.java.

2516 {
2517 checkContextMatch(args);
2518 return (BoolExpr) Expr.create(this, Native.mkPbeq(nCtx(), args.length, AST.arrayToNative(args), coeffs, k));
2519 }

◆ mkPBGe()

BoolExpr mkPBGe ( int[]  coeffs,
Expr< BoolSort >[]  args,
int  k 
)
inline

Create a pseudo-Boolean greater-or-equal constraint.

Definition at line 2506 of file Context.java.

2507 {
2508 checkContextMatch(args);
2509 return (BoolExpr) Expr.create(this, Native.mkPbge(nCtx(), args.length, AST.arrayToNative(args), coeffs, k));
2510 }

◆ mkPBLe()

BoolExpr mkPBLe ( int[]  coeffs,
Expr< BoolSort >[]  args,
int  k 
)
inline

Create a pseudo-Boolean less-or-equal constraint.

Definition at line 2497 of file Context.java.

2498 {
2499 checkContextMatch(args);
2500 return (BoolExpr) Expr.create(this, Native.mkPble(nCtx(), args.length, AST.arrayToNative(args), coeffs, k));
2501 }

◆ mkPlus()

final< R extends Sort > ReExpr< R > mkPlus ( Expr< ReSort< R > >  re)
inline

Take the Kleene plus of a regular expression.

Definition at line 2330 of file Context.java.

2331 {
2332 checkContextMatch(re);
2333 return (ReExpr<R>) Expr.create(this, Native.mkRePlus(nCtx(), re.getNativeObject()));
2334 }

◆ mkPower() [1/2]

final< R extends Sort > ReExpr< R > mkPower ( Expr< ReSort< R > >  re,
int  n 
)
inline

Create power regular expression.

Definition at line 2305 of file Context.java.

2306 {
2307 return (ReExpr<R>) Expr.create(this, Native.mkRePower(nCtx(), re.getNativeObject(), n));
2308 }

◆ mkPower() [2/2]

final< R extends ArithSort > ArithExpr< R > mkPower ( Expr<? extends R >  t1,
Expr<? extends R >  t2 
)
inline

Create an expression representing t1 ^ t2.

Definition at line 980 of file Context.java.

982 {
983 checkContextMatch(t1);
984 checkContextMatch(t2);
985 return (ArithExpr<R>) Expr.create(
986 this,
987 Native.mkPower(nCtx(), t1.getNativeObject(),
988 t2.getNativeObject()));
989 }

◆ mkPrefixOf()

final< R extends Sort > BoolExpr mkPrefixOf ( Expr< SeqSort< R > >  s1,
Expr< SeqSort< R > >  s2 
)
inline

Check for sequence prefix.

Definition at line 2148 of file Context.java.

2149 {
2150 checkContextMatch(s1, s2);
2151 return (BoolExpr) Expr.create(this, Native.mkSeqPrefix(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2152 }

◆ mkProbe()

Probe mkProbe ( String  name)
inline

Creates a new Probe.

Definition at line 3317 of file Context.java.

3318 {
3319 return new Probe(this, name);
3320 }

◆ mkPropagateFunction()

final< R extends Sort > FuncDecl< R > mkPropagateFunction ( Symbol  name,
Sort[]  domain,
range 
)
inline

Definition at line 503 of file Context.java.

504 {
505 checkContextMatch(name);
506 checkContextMatch(domain);
507 checkContextMatch(range);
508 long f = Native.solverPropagateDeclare(
509 this.nCtx(),
510 name.getNativeObject(),
511 AST.arrayLength(domain),
512 AST.arrayToNative(domain),
513 range.getNativeObject());
514 return new FuncDecl<>(this, f);
515 }

◆ mkQuantifier() [1/2]

Quantifier mkQuantifier ( boolean  universal,
Expr<?>[]  boundConstants,
Expr< BoolSort body,
int  weight,
Pattern[]  patterns,
Expr<?>[]  noPatterns,
Symbol  quantifierID,
Symbol  skolemID 
)
inline

Create a Quantifier

See also
#mkForall(Sort[],Symbol[],Expr<BoolSort>,int,Pattern[],Expr<?>[],Symbol,Symbol)

Definition at line 2790 of file Context.java.

2793 {
2794
2795 if (universal)
2796 return mkForall(boundConstants, body, weight, patterns, noPatterns,
2797 quantifierID, skolemID);
2798 else
2799 return mkExists(boundConstants, body, weight, patterns, noPatterns,
2800 quantifierID, skolemID);
2801 }
Quantifier mkForall(Sort[] sorts, Symbol[] names, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
Quantifier mkExists(Sort[] sorts, Symbol[] names, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)

◆ mkQuantifier() [2/2]

Quantifier mkQuantifier ( boolean  universal,
Sort[]  sorts,
Symbol[]  names,
Expr< BoolSort body,
int  weight,
Pattern[]  patterns,
Expr<?>[]  noPatterns,
Symbol  quantifierID,
Symbol  skolemID 
)
inline

Create a Quantifier.

See also
#mkForall(Sort[],Symbol[],Expr<BoolSort>,int,Pattern[],Expr<?>[],Symbol,Symbol)

Definition at line 2772 of file Context.java.

2776 {
2777
2778 if (universal)
2779 return mkForall(sorts, names, body, weight, patterns, noPatterns,
2780 quantifierID, skolemID);
2781 else
2782 return mkExists(sorts, names, body, weight, patterns, noPatterns,
2783 quantifierID, skolemID);
2784 }

◆ mkRange()

final ReExpr< SeqSort< CharSort > > mkRange ( Expr< SeqSort< CharSort > >  lo,
Expr< SeqSort< CharSort > >  hi 
)
inline

Create a range expression.

Definition at line 2425 of file Context.java.

2426 {
2427 checkContextMatch(lo, hi);
2428 return (ReExpr<SeqSort<CharSort>>) Expr.create(this, Native.mkReRange(nCtx(), lo.getNativeObject(), hi.getNativeObject()));
2429 }

◆ mkReal() [1/4]

RatNum mkReal ( int  num,
int  den 
)
inline

Create a real from a fraction.

Parameters
numnumerator of rational.
dendenominator of rational.
Returns
A Term with value num/den and sort Real
See also
#mkNumeral(String v, R ty)

Definition at line 2581 of file Context.java.

2582 {
2583 if (den == 0) {
2584 throw new Z3Exception("Denominator is zero");
2585 }
2586
2587 return new RatNum(this, Native.mkReal(nCtx(), num, den));
2588 }

◆ mkReal() [2/4]

RatNum mkReal ( int  v)
inline

Create a real numeral.

Parameters
vvalue of the numeral.
Returns
A Term with value v and sort Real

Definition at line 2609 of file Context.java.

2610 {
2611
2612 return new RatNum(this, Native.mkInt(nCtx(), v, getRealSort()
2613 .getNativeObject()));
2614 }

◆ mkReal() [3/4]

RatNum mkReal ( long  v)
inline

Create a real numeral.

Parameters
vvalue of the numeral.
Returns
A Term with value v and sort Real

Definition at line 2622 of file Context.java.

2623 {
2624
2625 return new RatNum(this, Native.mkInt64(nCtx(), v, getRealSort()
2626 .getNativeObject()));
2627 }

◆ mkReal() [4/4]

RatNum mkReal ( String  v)
inline

Create a real numeral.

Parameters
vA string representing the Term value in decimal notation.
Returns
A Term with value v and sort Real

Definition at line 2596 of file Context.java.

2597 {
2598
2599 return new RatNum(this, Native.mkNumeral(nCtx(), v, getRealSort()
2600 .getNativeObject()));
2601 }

◆ mkReal2Int()

IntExpr mkReal2Int ( Expr< RealSort t)
inline

Coerce a real to an integer. Remarks: The semantics of this function follows the SMT-LIB standard for the function to_int. The argument must be of real sort.

Definition at line 1058 of file Context.java.

1059 {
1060 checkContextMatch(t);
1061 return new IntExpr(this, Native.mkReal2int(nCtx(), t.getNativeObject()));
1062 }

◆ mkRealConst() [1/2]

RealExpr mkRealConst ( String  name)
inline

Creates a real constant.

Definition at line 739 of file Context.java.

740 {
741 return (RealExpr) mkConst(name, getRealSort());
742 }

◆ mkRealConst() [2/2]

RealExpr mkRealConst ( Symbol  name)
inline

Creates a real constant.

Definition at line 731 of file Context.java.

732 {
733 return (RealExpr) mkConst(name, getRealSort());
734 }

◆ mkRealSort()

RealSort mkRealSort ( )
inline

Create a real sort.

Definition at line 214 of file Context.java.

215 {
216 return new RealSort(this);
217 }

◆ mkRecFuncDecl()

final< R extends Sort > FuncDecl< R > mkRecFuncDecl ( Symbol  name,
Sort[]  domain,
range 
)
inline

Creates a new recursive function declaration.

Definition at line 557 of file Context.java.

558 {
559 checkContextMatch(name);
560 checkContextMatch(domain);
561 checkContextMatch(range);
562 return new FuncDecl<>(this, name, domain, range, true);
563 }

◆ mkRem()

IntExpr mkRem ( Expr< IntSort t1,
Expr< IntSort t2 
)
inline

Create an expression representing t1 rem t2. Remarks: The arguments must have int type.

Definition at line 969 of file Context.java.

970 {
971 checkContextMatch(t1);
972 checkContextMatch(t2);
973 return new IntExpr(this, Native.mkRem(nCtx(), t1.getNativeObject(),
974 t2.getNativeObject()));
975 }

◆ mkRepeat()

BitVecExpr mkRepeat ( int  i,
Expr< BitVecSort t 
)
inline

Bit-vector repetition. Remarks: The argument t must have a bit-vector sort.

Definition at line 1490 of file Context.java.

1491 {
1492 checkContextMatch(t);
1493 return new BitVecExpr(this, Native.mkRepeat(nCtx(), i,
1494 t.getNativeObject()));
1495 }

◆ mkReplace()

final< R extends Sort > SeqExpr< R > mkReplace ( Expr< SeqSort< R > >  s,
Expr< SeqSort< R > >  src,
Expr< SeqSort< R > >  dst 
)
inline

Replace the first occurrence of src by dst in s.

Definition at line 2241 of file Context.java.

2242 {
2243 checkContextMatch(s, src, dst);
2244 return (SeqExpr<R>) Expr.create(this, Native.mkSeqReplace(nCtx(), s.getNativeObject(), src.getNativeObject(), dst.getNativeObject()));
2245 }

◆ mkReplaceAll()

final< R extends Sort > SeqExpr< R > mkReplaceAll ( Expr< SeqSort< R > >  s,
Expr< SeqSort< R > >  src,
Expr< SeqSort< R > >  dst 
)
inline

Replace all occurrences of src by dst in s.

Definition at line 2250 of file Context.java.

2251 {
2252 checkContextMatch(s, src, dst);
2253 return (SeqExpr<R>) Expr.create(this, Native.mkSeqReplaceAll(nCtx(), s.getNativeObject(), src.getNativeObject(), dst.getNativeObject()));
2254 }

◆ mkReplaceRe()

final< R extends Sort > SeqExpr< R > mkReplaceRe ( Expr< SeqSort< R > >  s,
ReExpr< SeqSort< R > >  re,
Expr< SeqSort< R > >  dst 
)
inline

Replace the first occurrence of regular expression re with dst in s.

Definition at line 2259 of file Context.java.

2260 {
2261 checkContextMatch(s, re, dst);
2262 return (SeqExpr<R>) Expr.create(this, Native.mkSeqReplaceRe(nCtx(), s.getNativeObject(), re.getNativeObject(), dst.getNativeObject()));
2263 }

◆ mkReplaceReAll()

final< R extends Sort > SeqExpr< R > mkReplaceReAll ( Expr< SeqSort< R > >  s,
ReExpr< SeqSort< R > >  re,
Expr< SeqSort< R > >  dst 
)
inline

Replace all occurrences of regular expression re with dst in s.

Definition at line 2268 of file Context.java.

2269 {
2270 checkContextMatch(s, re, dst);
2271 return (SeqExpr<R>) Expr.create(this, Native.mkSeqReplaceReAll(nCtx(), s.getNativeObject(), re.getNativeObject(), dst.getNativeObject()));
2272 }

◆ mkReSort()

final< R extends Sort > ReSort< R > mkReSort ( s)
inline

Create a new regular expression sort

Definition at line 267 of file Context.java.

268 {
269 return new ReSort<>(this, Native.mkReSort(nCtx(), s.getNativeObject()));
270 }

◆ mkSelect() [1/2]

final< D extends Sort, R extends Sort > Expr< R > mkSelect ( Expr< ArraySort< D, R > >  a,
Expr< D >  i 
)
inline

Array read. Remarks: The argument a is the array and i is the index of the array that gets read.

The node a must have an array sort [domain -> range], and i must have the sort domain. The sort of the result is range.

See also
#mkArraySort(Sort[], R)
#mkStore(Expr<ArraySort<D, R>> a, Expr<D> i, Expr<R> v)

Definition at line 1786 of file Context.java.

1787 {
1788 checkContextMatch(a);
1789 checkContextMatch(i);
1790 return (Expr<R>) Expr.create(
1791 this,
1792 Native.mkSelect(nCtx(), a.getNativeObject(),
1793 i.getNativeObject()));
1794 }

◆ mkSelect() [2/2]

final< R extends Sort > Expr< R > mkSelect ( Expr< ArraySort< Sort, R > >  a,
Expr<?>[]  args 
)
inline

Array read. Remarks: The argument a is the array and args are the indices of the array that gets read.

The node a must have an array sort [domains -> range], and args must have the sorts domains. The sort of the result is range.

See also
#mkArraySort(Sort[], R)
#mkStore(Expr<ArraySort<D, R>> a, Expr<D> i, Expr<R> v)

Definition at line 1808 of file Context.java.

1809 {
1810 checkContextMatch(a);
1811 checkContextMatch(args);
1812 return (Expr<R>) Expr.create(
1813 this,
1814 Native.mkSelectN(nCtx(), a.getNativeObject(), args.length, AST.arrayToNative(args)));
1815 }

◆ mkSeqSort()

final< R extends Sort > SeqSort< R > mkSeqSort ( s)
inline

Create a new sequence sort

Definition at line 259 of file Context.java.

260 {
261 return new SeqSort<>(this, Native.mkSeqSort(nCtx(), s.getNativeObject()));
262 }

◆ mkSetAdd()

final< D extends Sort > ArrayExpr< D, BoolSort > mkSetAdd ( Expr< ArraySort< D, BoolSort > >  set,
Expr< D >  element 
)
inline

Add an element to the set.

Definition at line 1963 of file Context.java.

1964 {
1965 checkContextMatch(set);
1966 checkContextMatch(element);
1967 return (ArrayExpr<D, BoolSort>) Expr.create(this,
1968 Native.mkSetAdd(nCtx(), set.getNativeObject(),
1969 element.getNativeObject()));
1970 }

◆ mkSetComplement()

final< D extends Sort > ArrayExpr< D, BoolSort > mkSetComplement ( Expr< ArraySort< D, BoolSort > >  arg)
inline

Take the complement of a set.

Definition at line 2023 of file Context.java.

2024 {
2025 checkContextMatch(arg);
2026 return (ArrayExpr<D, BoolSort>)Expr.create(this,
2027 Native.mkSetComplement(nCtx(), arg.getNativeObject()));
2028 }

◆ mkSetDel()

final< D extends Sort > ArrayExpr< D, BoolSort > mkSetDel ( Expr< ArraySort< D, BoolSort > >  set,
Expr< D >  element 
)
inline

Remove an element from a set.

Definition at line 1975 of file Context.java.

1976 {
1977 checkContextMatch(set);
1978 checkContextMatch(element);
1979 return (ArrayExpr<D, BoolSort>)Expr.create(this,
1980 Native.mkSetDel(nCtx(), set.getNativeObject(),
1981 element.getNativeObject()));
1982 }

◆ mkSetDifference()

final< D extends Sort > ArrayExpr< D, BoolSort > mkSetDifference ( Expr< ArraySort< D, BoolSort > >  arg1,
Expr< ArraySort< D, BoolSort > >  arg2 
)
inline

Take the difference between two sets.

Definition at line 2011 of file Context.java.

2012 {
2013 checkContextMatch(arg1);
2014 checkContextMatch(arg2);
2015 return (ArrayExpr<D, BoolSort>) Expr.create(this,
2016 Native.mkSetDifference(nCtx(), arg1.getNativeObject(),
2017 arg2.getNativeObject()));
2018 }

◆ mkSetIntersection()

final< D extends Sort > ArrayExpr< D, BoolSort > mkSetIntersection ( Expr< ArraySort< D, BoolSort > >...  args)
inline

Take the intersection of a list of sets.

Definition at line 2000 of file Context.java.

2001 {
2002 checkContextMatch(args);
2003 return (ArrayExpr<D, BoolSort>) Expr.create(this,
2004 Native.mkSetIntersect(nCtx(), args.length,
2005 AST.arrayToNative(args)));
2006 }

◆ mkSetMembership()

final< D extends Sort > BoolExpr mkSetMembership ( Expr< D >  elem,
Expr< ArraySort< D, BoolSort > >  set 
)
inline

Check for set membership.

Definition at line 2033 of file Context.java.

2034 {
2035 checkContextMatch(elem);
2036 checkContextMatch(set);
2037 return (BoolExpr) Expr.create(this,
2038 Native.mkSetMember(nCtx(), elem.getNativeObject(),
2039 set.getNativeObject()));
2040 }

◆ mkSetSort()

final< D extends Sort > SetSort< D > mkSetSort ( ty)
inline

Create a set type.

Definition at line 1934 of file Context.java.

1935 {
1936 checkContextMatch(ty);
1937 return new SetSort<>(this, ty);
1938 }

◆ mkSetSubset()

final< D extends Sort > BoolExpr mkSetSubset ( Expr< ArraySort< D, BoolSort > >  arg1,
Expr< ArraySort< D, BoolSort > >  arg2 
)
inline

Check for subsetness of sets.

Definition at line 2045 of file Context.java.

2046 {
2047 checkContextMatch(arg1);
2048 checkContextMatch(arg2);
2049 return (BoolExpr) Expr.create(this,
2050 Native.mkSetSubset(nCtx(), arg1.getNativeObject(),
2051 arg2.getNativeObject()));
2052 }

◆ mkSetUnion()

final< D extends Sort > ArrayExpr< D, BoolSort > mkSetUnion ( Expr< ArraySort< D, BoolSort > >...  args)
inline

Take the union of a list of sets.

Definition at line 1988 of file Context.java.

1989 {
1990 checkContextMatch(args);
1991 return (ArrayExpr<D, BoolSort>)Expr.create(this,
1992 Native.mkSetUnion(nCtx(), args.length,
1993 AST.arrayToNative(args)));
1994 }

◆ mkSignExt()

BitVecExpr mkSignExt ( int  i,
Expr< BitVecSort t 
)
inline

Bit-vector sign extension. Remarks: Sign-extends the given bit-vector to the (signed) equivalent bitvector of size m+i, where m is the size of the given bit-vector. The argument t must have a bit-vector sort.

Definition at line 1464 of file Context.java.

1465 {
1466 checkContextMatch(t);
1467 return new BitVecExpr(this, Native.mkSignExt(nCtx(), i,
1468 t.getNativeObject()));
1469 }

◆ mkSimpleSolver()

Solver mkSimpleSolver ( )
inline

Creates a new (incremental) solver.

Definition at line 3464 of file Context.java.

3465 {
3466 return new Solver(this, Native.mkSimpleSolver(nCtx()));
3467 }

◆ mkSimplifier()

Simplifier mkSimplifier ( String  name)
inline

Creates a new Simplifier.

Definition at line 3217 of file Context.java.

3218 {
3219 return new Simplifier(this, name);
3220 }

◆ mkSolver() [1/5]

Solver mkSolver ( )
inline

Creates a new (incremental) solver. Remarks: This solver also uses a set of builtin tactics for handling the first check-sat command, and check-sat commands that take more than a given number of milliseconds to be solved.

Definition at line 3430 of file Context.java.

3431 {
3432 return mkSolver((Symbol) null);
3433 }

Referenced by Tactic.getSolver().

◆ mkSolver() [2/5]

Solver mkSolver ( Solver  s,
Simplifier  simp 
)
inline

Creates a solver that is uses the simplifier pre-processing.

Definition at line 3485 of file Context.java.

3486 {
3487 return new Solver(this, Native.solverAddSimplifier(nCtx(), s.getNativeObject(), simp.getNativeObject()));
3488 }

◆ mkSolver() [3/5]

Solver mkSolver ( String  logic)
inline

Creates a new (incremental) solver.

See also
#mkSolver(Symbol)

Definition at line 3456 of file Context.java.

3457 {
3458 return mkSolver(mkSymbol(logic));
3459 }

◆ mkSolver() [4/5]

Solver mkSolver ( Symbol  logic)
inline

Creates a new (incremental) solver. Remarks: This solver also uses a set of builtin tactics for handling the first check-sat command, and check-sat commands that take more than a given number of milliseconds to be solved.

Definition at line 3442 of file Context.java.

3443 {
3444
3445 if (logic == null)
3446 return new Solver(this, Native.mkSolver(nCtx()));
3447 else
3448 return new Solver(this, Native.mkSolverForLogic(nCtx(),
3449 logic.getNativeObject()));
3450 }

◆ mkSolver() [5/5]

Solver mkSolver ( Tactic  t)
inline

Creates a solver that is implemented using the given tactic. Remarks: The solver supports the commands Push and Pop, but it will always solve each check from scratch.

Definition at line 3475 of file Context.java.

3476 {
3477
3478 return new Solver(this, Native.mkSolverFromTactic(nCtx(),
3479 t.getNativeObject()));
3480 }

◆ mkStar()

final< R extends Sort > ReExpr< R > mkStar ( Expr< ReSort< R > >  re)
inline

Take the Kleene star of a regular expression.

Definition at line 2296 of file Context.java.

2297 {
2298 checkContextMatch(re);
2299 return (ReExpr<R>) Expr.create(this, Native.mkReStar(nCtx(), re.getNativeObject()));
2300 }

◆ mkStore() [1/2]

final< D extends Sort, R extends Sort > ArrayExpr< D, R > mkStore ( Expr< ArraySort< D, R > >  a,
Expr< D >  i,
Expr< R >  v 
)
inline

Array update. Remarks: The node a must have an array sort [domain -> range], i must have sort domain, v must have sort range. The sort of the result is [domain -> range]. The semantics of this function is given by the theory of arrays described in the SMT-LIB standard. See http://smtlib.org for more details. The result of this function is an array that is equal to a (with respect to select) on all indices except for i, where it maps to v (and the select of a with respect to i may be a different value).

See also
#mkArraySort(Sort[], R)
#mkSelect(Expr<ArraySort<D, R>> a, Expr<D> i)

Definition at line 1833 of file Context.java.

1834 {
1835 checkContextMatch(a);
1836 checkContextMatch(i);
1837 checkContextMatch(v);
1838 return new ArrayExpr<>(this, Native.mkStore(nCtx(), a.getNativeObject(),
1839 i.getNativeObject(), v.getNativeObject()));
1840 }

◆ mkStore() [2/2]

final< R extends Sort > ArrayExpr< Sort, R > mkStore ( Expr< ArraySort< Sort, R > >  a,
Expr<?>[]  args,
Expr< R >  v 
)
inline

Array update. Remarks: The node a must have an array sort [domains -> range], i must have sort domain, v must have sort range. The sort of the result is [domains -> range]. The semantics of this function is given by the theory of arrays described in the SMT-LIB standard. See http://smtlib.org for more details. The result of this function is an array that is equal to a (with respect to select) on all indices except for args, where it maps to v (and the select of a with respect to args may be a different value).

See also
#mkArraySort(Sort[], R)
#mkSelect(Expr<ArraySort<D, R>> a, Expr<D> i)

Definition at line 1858 of file Context.java.

1859 {
1860 checkContextMatch(a);
1861 checkContextMatch(args);
1862 checkContextMatch(v);
1863 return new ArrayExpr<>(this, Native.mkStoreN(nCtx(), a.getNativeObject(),
1864 args.length, AST.arrayToNative(args), v.getNativeObject()));
1865 }

◆ mkString()

SeqExpr< CharSort > mkString ( String  s)
inline

Create a string constant.

Definition at line 2080 of file Context.java.

2081 {
2082 StringBuilder buf = new StringBuilder();
2083 for (int i = 0; i < s.length(); i += Character.charCount(s.codePointAt(i))) {
2084 int code = s.codePointAt(i);
2085 if (code <= 32 || 127 < code)
2086 buf.append(String.format("\\u{%x}", code));
2087 else
2088 buf.append(s.charAt(i));
2089 }
2090 return (SeqExpr<CharSort>) Expr.create(this, Native.mkString(nCtx(), buf.toString()));
2091 }

◆ MkStringLe()

BoolExpr MkStringLe ( Expr< SeqSort< CharSort > >  s1,
Expr< SeqSort< CharSort > >  s2 
)
inline

Check if the string s1 is lexicographically less or equal to s2.

Definition at line 2185 of file Context.java.

2186 {
2187 checkContextMatch(s1, s2);
2188 return new BoolExpr(this, Native.mkStrLe(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2189 }

◆ MkStringLt()

BoolExpr MkStringLt ( Expr< SeqSort< CharSort > >  s1,
Expr< SeqSort< CharSort > >  s2 
)
inline

Check if the string s1 is lexicographically strictly less than s2.

Definition at line 2176 of file Context.java.

2177 {
2178 checkContextMatch(s1, s2);
2179 return new BoolExpr(this, Native.mkStrLt(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2180 }

◆ mkStringSort()

SeqSort< CharSort > mkStringSort ( )
inline

Create a new string sort

Definition at line 251 of file Context.java.

252 {
253 return new SeqSort<>(this, Native.mkStringSort(nCtx()));
254 }

◆ mkSub()

final< R extends ArithSort > ArithExpr< R > mkSub ( Expr<? extends R >...  t)
inline

Create an expression representing t[0] - t[1] - ....

Definition at line 923 of file Context.java.

924 {
925 checkContextMatch(t);
926 return (ArithExpr<R>) Expr.create(this,
927 Native.mkSub(nCtx(), t.length, AST.arrayToNative(t)));
928 }

◆ mkSuffixOf()

final< R extends Sort > BoolExpr mkSuffixOf ( Expr< SeqSort< R > >  s1,
Expr< SeqSort< R > >  s2 
)
inline

Check for sequence suffix.

Definition at line 2157 of file Context.java.

2158 {
2159 checkContextMatch(s1, s2);
2160 return (BoolExpr)Expr.create(this, Native.mkSeqSuffix(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2161 }

◆ mkSymbol() [1/2]

IntSymbol mkSymbol ( int  i)
inline

Creates a new symbol using an integer. Remarks: Not all integers can be passed to this function. The legal range of unsigned integers is 0 to 2^30-1.

Definition at line 94 of file Context.java.

95 {
96 return new IntSymbol(this, i);
97 }

◆ mkSymbol() [2/2]

StringSymbol mkSymbol ( String  name)
inline

Create a symbol using a string.

Definition at line 102 of file Context.java.

103 {
104 return new StringSymbol(this, name);
105 }

◆ mkTactic()

Tactic mkTactic ( String  name)
inline

Creates a new Tactic.

Definition at line 2982 of file Context.java.

2983 {
2984 return new Tactic(this, name);
2985 }

Referenced by Goal.simplify(), and Goal.simplify().

◆ mkTermArray()

final< D extends Sort, R extends Sort > Expr< R > mkTermArray ( Expr< ArraySort< D, R > >  array)
inline

Access the array default value. Remarks: Produces the default range value, for arrays that can be represented as finite maps with a default range value.

Definition at line 1913 of file Context.java.

1914 {
1915 checkContextMatch(array);
1916 return (Expr<R>) Expr.create(this,
1917 Native.mkArrayDefault(nCtx(), array.getNativeObject()));
1918 }

◆ mkToRe()

final< R extends Sort > ReExpr< SeqSort< R > > mkToRe ( Expr< SeqSort< R > >  s)
inline

Convert a regular expression that accepts sequence s.

Definition at line 2277 of file Context.java.

2278 {
2279 checkContextMatch(s);
2280 return (ReExpr<SeqSort<R>>) Expr.create(this, Native.mkSeqToRe(nCtx(), s.getNativeObject()));
2281 }

◆ mkTrue()

BoolExpr mkTrue ( )
inline

The true Term.

Definition at line 774 of file Context.java.

775 {
776 return new BoolExpr(this, Native.mkTrue(nCtx()));
777 }

Referenced by Goal.AsBoolExpr().

◆ mkTupleSort()

TupleSort mkTupleSort ( Symbol  name,
Symbol[]  fieldNames,
Sort[]  fieldSorts 
)
inline

Create a new tuple sort.

Definition at line 276 of file Context.java.

278 {
279 checkContextMatch(name);
280 checkContextMatch(fieldNames);
281 checkContextMatch(fieldSorts);
282 return new TupleSort(this, name, fieldNames.length, fieldNames,
283 fieldSorts);
284 }
TupleSort(name, sorts, ctx=None)
Definition z3py.py:5510

◆ mkUnaryMinus()

final< R extends ArithSort > ArithExpr< R > mkUnaryMinus ( Expr< R >  t)
inline

Create an expression representing -t.

Definition at line 933 of file Context.java.

934 {
935 checkContextMatch(t);
936 return (ArithExpr<R>) Expr.create(this,
937 Native.mkUnaryMinus(nCtx(), t.getNativeObject()));
938 }

◆ mkUninterpretedSort() [1/2]

UninterpretedSort mkUninterpretedSort ( String  str)
inline

Create a new uninterpreted sort.

Definition at line 198 of file Context.java.

199 {
200 return mkUninterpretedSort(mkSymbol(str));
201 }
UninterpretedSort mkUninterpretedSort(Symbol s)
Definition Context.java:189

◆ mkUninterpretedSort() [2/2]

UninterpretedSort mkUninterpretedSort ( Symbol  s)
inline

Create a new uninterpreted sort.

Definition at line 189 of file Context.java.

190 {
191 checkContextMatch(s);
192 return new UninterpretedSort(this, s);
193 }

◆ mkUnion()

final< R extends Sort > ReExpr< R > mkUnion ( Expr< ReSort< R > >...  t)
inline

Create the union of regular languages.

Definition at line 2368 of file Context.java.

2369 {
2370 checkContextMatch(t);
2371 return (ReExpr<R>) Expr.create(this, Native.mkReUnion(nCtx(), t.length, AST.arrayToNative(t)));
2372 }

◆ mkUnit()

final< R extends Sort > SeqExpr< R > mkUnit ( Expr< R >  elem)
inline

Create the singleton sequence.

Definition at line 2071 of file Context.java.

2072 {
2073 checkContextMatch(elem);
2074 return (SeqExpr<R>) Expr.create(this, Native.mkSeqUnit(nCtx(), elem.getNativeObject()));
2075 }

◆ mkUpdateField()

final< F extends Sort, R extends Sort > Expr< R > mkUpdateField ( FuncDecl< F >  field,
Expr< R >  t,
Expr< F >  v 
) throws Z3Exception
inline

Update a datatype field at expression t with value v. The function performs a record update at t. The field that is passed in as argument is updated with value v, the remaining fields of t are unchanged.

Definition at line 482 of file Context.java.

484 {
485 return (Expr<R>) Expr.create(this,
486 Native.datatypeUpdateField
487 (nCtx(), field.getNativeObject(),
488 t.getNativeObject(), v.getNativeObject()));
489 }

◆ mkXor()

BoolExpr mkXor ( Expr< BoolSort t1,
Expr< BoolSort t2 
)
inline

Create an expression representing t1 xor t2.

Definition at line 867 of file Context.java.

868 {
869 checkContextMatch(t1);
870 checkContextMatch(t2);
871 return new BoolExpr(this, Native.mkXor(nCtx(), t1.getNativeObject(),
872 t2.getNativeObject()));
873 }

◆ mkZeroExt()

BitVecExpr mkZeroExt ( int  i,
Expr< BitVecSort t 
)
inline

Bit-vector zero extension. Remarks: Extend the given bit-vector with zeros to the (unsigned) equivalent bitvector of size m+i, where m is the size of the given bit-vector. The argument t must have a bit-vector sort.

Definition at line 1478 of file Context.java.

1479 {
1480 checkContextMatch(t);
1481 return new BitVecExpr(this, Native.mkZeroExt(nCtx(), i,
1482 t.getNativeObject()));
1483 }

◆ nCtx()

long nCtx ( )
inline

◆ not()

Probe not ( Probe  p)
inline

Create a probe that evaluates to true when the value p does not evaluate to true.

Definition at line 3417 of file Context.java.

3418 {
3419 checkContextMatch(p);
3420 return new Probe(this, Native.probeNot(nCtx(), p.getNativeObject()));
3421 }

◆ or()

Probe or ( Probe  p1,
Probe  p2 
)
inline

Create a probe that evaluates to true when the value p1 or p2 evaluate to true.

Definition at line 3406 of file Context.java.

3407 {
3408 checkContextMatch(p1);
3409 checkContextMatch(p2);
3410 return new Probe(this, Native.probeOr(nCtx(), p1.getNativeObject(),
3411 p2.getNativeObject()));
3412 }

◆ orElse()

Tactic orElse ( Tactic  t1,
Tactic  t2 
)
inline

Create a tactic that first applies t1 to a Goal and if it fails then returns the result of t2 applied to the Goal.

Definition at line 3033 of file Context.java.

3034 {
3035 checkContextMatch(t1);
3036 checkContextMatch(t2);
3037 return new Tactic(this, Native.tacticOrElse(nCtx(),
3038 t1.getNativeObject(), t2.getNativeObject()));
3039 }

◆ parAndThen()

Tactic parAndThen ( Tactic  t1,
Tactic  t2 
)
inline

Create a tactic that applies t1 to a given goal and then t2 to every subgoal produced by t1. The subgoals are processed in parallel.

Definition at line 3166 of file Context.java.

3167 {
3168 checkContextMatch(t1);
3169 checkContextMatch(t2);
3170 return new Tactic(this, Native.tacticParAndThen(nCtx(),
3171 t1.getNativeObject(), t2.getNativeObject()));
3172 }

◆ parOr()

Tactic parOr ( Tactic...  t)
inline

Create a tactic that applies the given tactics in parallel until one of them succeeds (i.e., the first that doesn't fail).

Definition at line 3155 of file Context.java.

3156 {
3157 checkContextMatch(t);
3158 return new Tactic(this, Native.tacticParOr(nCtx(),
3159 Tactic.arrayLength(t), Tactic.arrayToNative(t)));
3160 }

◆ parseSMTLIB2File()

BoolExpr[] parseSMTLIB2File ( String  fileName,
Symbol[]  sortNames,
Sort[]  sorts,
Symbol[]  declNames,
FuncDecl<?>[]  decls 
)
inline

Parse the given file using the SMT-LIB2 parser.

See also
#parseSMTLIB2String

Definition at line 2909 of file Context.java.

2911 {
2912 int csn = Symbol.arrayLength(sortNames);
2913 int cs = Sort.arrayLength(sorts);
2914 int cdn = Symbol.arrayLength(declNames);
2915 int cd = AST.arrayLength(decls);
2916 if (csn != cs || cdn != cd)
2917 throw new Z3Exception("Argument size mismatch");
2918 ASTVector v = new ASTVector(this, Native.parseSmtlib2File(nCtx(),
2919 fileName, AST.arrayLength(sorts),
2920 Symbol.arrayToNative(sortNames), AST.arrayToNative(sorts),
2921 AST.arrayLength(decls), Symbol.arrayToNative(declNames),
2922 AST.arrayToNative(decls)));
2923 return v.ToBoolExprArray();
2924 }

◆ parseSMTLIB2String()

BoolExpr[] parseSMTLIB2String ( String  str,
Symbol[]  sortNames,
Sort[]  sorts,
Symbol[]  declNames,
FuncDecl<?>[]  decls 
)
inline

Parse the given string using the SMT-LIB2 parser.

Returns
A conjunction of assertions.

If the string contains push/pop commands, the set of assertions returned are the ones in the last scope level.

Definition at line 2888 of file Context.java.

2890 {
2891 int csn = Symbol.arrayLength(sortNames);
2892 int cs = Sort.arrayLength(sorts);
2893 int cdn = Symbol.arrayLength(declNames);
2894 int cd = AST.arrayLength(decls);
2895 if (csn != cs || cdn != cd) {
2896 throw new Z3Exception("Argument size mismatch");
2897 }
2898 ASTVector v = new ASTVector(this, Native.parseSmtlib2String(nCtx(),
2899 str, AST.arrayLength(sorts), Symbol.arrayToNative(sortNames),
2900 AST.arrayToNative(sorts), AST.arrayLength(decls),
2901 Symbol.arrayToNative(declNames), AST.arrayToNative(decls)));
2902 return v.ToBoolExprArray();
2903 }

◆ repeat()

Tactic repeat ( Tactic  t,
int  max 
)
inline

Create a tactic that keeps applying t until the goal is not modified anymore or the maximum number of iterations max is reached.

Definition at line 3086 of file Context.java.

3087 {
3088 checkContextMatch(t);
3089 return new Tactic(this, Native.tacticRepeat(nCtx(),
3090 t.getNativeObject(), max));
3091 }

◆ sbvToString()

SeqExpr< CharSort > sbvToString ( Expr< BitVecSort e)
inline

Convert an signed bitvector expression to a string.

Definition at line 2112 of file Context.java.

2113 {
2114 return (SeqExpr<CharSort>) Expr.create(this, Native.mkSbvToStr(nCtx(), e.getNativeObject()));
2115 }

◆ setPrintMode()

void setPrintMode ( Z3_ast_print_mode  value)
inline

Selects the format used for pretty-printing expressions. Remarks: The default mode for pretty printing expressions is to produce SMT-LIB style output where common subexpressions are printed at each occurrence. The mode is called Z3_PRINT_SMTLIB_FULL. To print shared common subexpressions only once, use the Z3_PRINT_LOW_LEVEL mode. To print in way that conforms to SMT-LIB standards and uses let expressions to share common sub-expressions use Z3_PRINT_SMTLIB_COMPLIANT.

See also
AST::toString
Pattern::toString
FuncDecl::toString
Sort::toString

Definition at line 2851 of file Context.java.

2852 {
2853 Native.setAstPrintMode(nCtx(), value.toInt());
2854 }

◆ SimplifyHelp()

String SimplifyHelp ( )
inline

Return a string describing all available parameters to Expr.Simplify.

Definition at line 4345 of file Context.java.

4346 {
4347 return Native.simplifyGetHelp(nCtx());
4348 }

◆ skip()

Tactic skip ( )
inline

Create a tactic that just returns the given goal.

Definition at line 3096 of file Context.java.

3097 {
3098 return new Tactic(this, Native.tacticSkip(nCtx()));
3099 }

◆ stringToInt()

IntExpr stringToInt ( Expr< SeqSort< CharSort > >  e)
inline

Convert an integer expression to a string.

Definition at line 2120 of file Context.java.

2121 {
2122 return (IntExpr) Expr.create(this, Native.mkStrToInt(nCtx(), e.getNativeObject()));
2123 }

◆ then() [1/2]

Simplifier then ( Simplifier  t1,
Simplifier  t2,
Simplifier...  ts 
)
inline

Create a simplifier that applies t1 and then t2

Remarks: Shorthand for AndThen.

Definition at line 3256 of file Context.java.

3257 {
3258 return andThen(t1, t2, ts);
3259 }
Tactic andThen(Tactic t1, Tactic t2, Tactic... ts)

◆ then() [2/2]

Tactic then ( Tactic  t1,
Tactic  t2,
Tactic...  ts 
)
inline

Create a tactic that applies t1 to a Goal and then t2 to every subgoal produced by t1

Remarks: Shorthand for AndThen.

Definition at line 3023 of file Context.java.

3024 {
3025 return andThen(t1, t2, ts);
3026 }

◆ tryFor()

Tactic tryFor ( Tactic  t,
int  ms 
)
inline

Create a tactic that applies t to a goal for ms milliseconds. Remarks: If t does not terminate within ms milliseconds, then it fails.

Definition at line 3047 of file Context.java.

3048 {
3049 checkContextMatch(t);
3050 return new Tactic(this, Native.tacticTryFor(nCtx(),
3051 t.getNativeObject(), ms));
3052 }

◆ ubvToString()

SeqExpr< CharSort > ubvToString ( Expr< BitVecSort e)
inline

Convert an unsigned bitvector expression to a string.

Definition at line 2104 of file Context.java.

2105 {
2106 return (SeqExpr<CharSort>) Expr.create(this, Native.mkUbvToStr(nCtx(), e.getNativeObject()));
2107 }

◆ unwrapAST()

long unwrapAST ( AST  a)
inline

Unwraps an AST. Remarks: This function is used for transitions between native and managed objects. It returns the native pointer to the AST. Note that AST objects are reference counted and unwrapping an AST disables automatic reference counting, i.e., all references to the IntPtr that is returned must be handled externally and through native calls (see e.g.,

See also
Native::incRef
#wrapAST
Parameters
aThe AST to unwrap.

Definition at line 4336 of file Context.java.

4337 {
4338 return a.getNativeObject();
4339 }

◆ updateParamValue()

void updateParamValue ( String  id,
String  value 
)
inline

Update a mutable configuration parameter. Remarks: The list of all configuration parameters can be obtained using the Z3 executable: z3.exe -ini? Only a few configuration parameters are mutable once the context is created. An exception is thrown when trying to modify an immutable parameter.

Definition at line 4366 of file Context.java.

4367 {
4368 Native.updateParamValue(nCtx(), id, value);
4369 }

◆ usingParams() [1/2]

Simplifier usingParams ( Simplifier  t,
Params  p 
)
inline

Create a simplifier that applies t using the given set of parameters p.

Definition at line 3265 of file Context.java.

3266 {
3267 checkContextMatch(t);
3268 checkContextMatch(p);
3269 return new Simplifier(this, Native.simplifierUsingParams(nCtx(),
3270 t.getNativeObject(), p.getNativeObject()));
3271 }

◆ usingParams() [2/2]

Tactic usingParams ( Tactic  t,
Params  p 
)
inline

Create a tactic that applies t using the given set of parameters p.

Definition at line 3133 of file Context.java.

3134 {
3135 checkContextMatch(t);
3136 checkContextMatch(p);
3137 return new Tactic(this, Native.tacticUsingParams(nCtx(),
3138 t.getNativeObject(), p.getNativeObject()));
3139 }

◆ when()

Tactic when ( Probe  p,
Tactic  t 
)
inline

Create a tactic that applies t to a given goal if the probe p evaluates to true. Remarks: If p evaluates to false, then the new tactic behaves like the skip tactic.

Definition at line 3060 of file Context.java.

3061 {
3062 checkContextMatch(t);
3063 checkContextMatch(p);
3064 return new Tactic(this, Native.tacticWhen(nCtx(), p.getNativeObject(),
3065 t.getNativeObject()));
3066 }

◆ with() [1/2]

Simplifier with ( Simplifier  t,
Params  p 
)
inline

Create a simplifier that applies t using the given set of parameters p. Remarks: Alias for UsingParams

Definition at line 3279 of file Context.java.

3280 {
3281 return usingParams(t, p);
3282 }
Tactic usingParams(Tactic t, Params p)

◆ with() [2/2]

Tactic with ( Tactic  t,
Params  p 
)
inline

Create a tactic that applies t using the given set of parameters p. Remarks: Alias for UsingParams

Definition at line 3147 of file Context.java.

3148 {
3149 return usingParams(t, p);
3150 }

◆ wrapAST()

AST wrapAST ( long  nativeObject)
inline

Wraps an AST. Remarks: This function is used for transitions between native and managed objects. Note that nativeObject must be a native object obtained from Z3 (e.g., through UnwrapAST) and that it must have a correct reference count.

See also
Native::incRef
#unwrapAST
Parameters
nativeObjectThe native pointer to wrap.

Definition at line 4319 of file Context.java.

4320 {
4321 return AST.create(this, nativeObject);
4322 }