38 Contract.Ensures(Contract.Result<
Expr>() !=
null);
43 return Expr.Create(
Context, Native.Z3_simplify_ex(
Context.nCtx, NativeObject, p.NativeObject));
53 Contract.Ensures(Contract.Result<
FuncDecl>() !=
null);
64 get {
return (
Z3_lbool)Native.Z3_get_bool_value(
Context.nCtx, NativeObject); }
72 get {
return Native.Z3_get_app_num_args(
Context.nCtx, NativeObject); }
82 Contract.Ensures(Contract.Result<
Expr[]>() !=
null);
86 for (uint i = 0; i < n; i++)
98 Contract.Requires(args !=
null);
99 Contract.Requires(Contract.ForAll(args, a => a !=
null));
103 throw new Z3Exception(
"Number of arguments does not match");
104 NativeObject = Native.Z3_update_term(
Context.nCtx, NativeObject, (uint)args.Length,
Expr.ArrayToNative(args));
117 Contract.Requires(from !=
null);
118 Contract.Requires(to !=
null);
119 Contract.Requires(Contract.ForAll(from, f => f !=
null));
120 Contract.Requires(Contract.ForAll(to, t => t !=
null));
121 Contract.Ensures(Contract.Result<
Expr>() !=
null);
125 if (from.Length != to.Length)
126 throw new Z3Exception(
"Argument sizes do not match");
127 return Expr.Create(
Context, Native.Z3_substitute(
Context.nCtx, NativeObject, (uint)from.Length,
Expr.ArrayToNative(from),
Expr.ArrayToNative(to)));
136 Contract.Requires(from !=
null);
137 Contract.Requires(to !=
null);
138 Contract.Ensures(Contract.Result<
Expr>() !=
null);
151 Contract.Requires(to !=
null);
152 Contract.Requires(Contract.ForAll(to, t => t !=
null));
153 Contract.Ensures(Contract.Result<
Expr>() !=
null);
156 return Expr.Create(
Context, Native.Z3_substitute_vars(
Context.nCtx, NativeObject, (uint)to.Length,
Expr.ArrayToNative(to)));
166 Contract.Requires(ctx !=
null);
167 Contract.Ensures(Contract.Result<
Expr>() !=
null);
169 if (ReferenceEquals(
Context, ctx))
172 return Expr.Create(ctx, Native.Z3_translate(
Context.nCtx, NativeObject, ctx.nCtx));
180 return base.ToString();
188 get {
return Native.Z3_is_numeral_ast(
Context.nCtx, NativeObject) != 0; }
197 get {
return Native.Z3_is_well_sorted(
Context.nCtx, NativeObject) != 0; }
207 Contract.Ensures(Contract.Result<
Sort>() !=
null);
222 #region Integer Numerals 232 #region Real Numerals 242 #region Algebraic Numbers 248 get {
return Native.Z3_is_algebraic_number(
Context.nCtx, NativeObject) != 0; }
252 #region Term Kind Tests 254 #region Boolean Terms 263 Native.Z3_is_eq_sort(
Context.nCtx,
264 Native.Z3_mk_bool_sort(
Context.nCtx),
265 Native.Z3_get_sort(
Context.nCtx, NativeObject)) != 0);
326 #region Interpolation 334 #region Arithmetic Terms 340 get {
return Native.Z3_get_sort_kind(
Context.nCtx, Native.Z3_get_sort(
Context.nCtx, NativeObject)) == (uint)
Z3_sort_kind.Z3_INT_SORT; }
348 get {
return Native.Z3_get_sort_kind(
Context.nCtx, Native.Z3_get_sort(
Context.nCtx, NativeObject)) == (uint)
Z3_sort_kind.Z3_REAL_SORT; }
440 return (Native.Z3_is_app(
Context.nCtx, NativeObject) != 0 &&
511 #region Bit-vector terms 517 get {
return Native.Z3_get_sort_kind(
Context.nCtx, Native.Z3_get_sort(
Context.nCtx, NativeObject)) == (uint)
Z3_sort_kind.Z3_BV_SORT; }
1308 #region Relational Terms 1316 return (Native.Z3_is_app(
Context.nCtx, NativeObject) != 0 &&
1317 Native.Z3_get_sort_kind(
Context.nCtx, Native.Z3_get_sort(
Context.nCtx, NativeObject))
1430 #region Finite domain terms 1438 return (Native.Z3_is_app(
Context.nCtx, NativeObject) != 0 &&
1439 Native.Z3_get_sort_kind(
Context.nCtx, Native.Z3_get_sort(
Context.nCtx, NativeObject)) == (uint)
Z3_sort_kind.Z3_FINITE_DOMAIN_SORT);
1449 #region Floating-point terms 1455 get {
return Native.Z3_get_sort_kind(
Context.nCtx, Native.Z3_get_sort(
Context.nCtx, NativeObject)) == (uint)
Z3_sort_kind.Z3_FLOATING_POINT_SORT; }
1463 get {
return Native.Z3_get_sort_kind(
Context.nCtx, Native.Z3_get_sort(
Context.nCtx, NativeObject)) == (uint)
Z3_sort_kind.Z3_ROUNDING_MODE_SORT; }
1725 #region Bound Variables 1750 throw new Z3Exception(
"Term is not a bound variable.");
1752 Contract.EndContractBlock();
1754 return Native.Z3_get_index_value(
Context.nCtx, NativeObject);
1760 internal protected Expr(
Context ctx, IntPtr obj) : base(ctx, obj) { Contract.Requires(ctx !=
null); }
1767 internal override void CheckNativeObject(IntPtr obj)
1769 if (Native.Z3_is_app(Context.nCtx, obj) == 0 &&
1770 Native.Z3_get_ast_kind(Context.nCtx, obj) != (uint)
Z3_ast_kind.Z3_VAR_AST &&
1771 Native.Z3_get_ast_kind(Context.nCtx, obj) != (uint)
Z3_ast_kind.Z3_QUANTIFIER_AST)
1772 throw new Z3Exception(
"Underlying object is not a term");
1773 base.CheckNativeObject(obj);
1778 internal static Expr Create(Context ctx,
FuncDecl f, params
Expr[] arguments)
1780 Contract.Requires(ctx !=
null);
1781 Contract.Requires(f !=
null);
1782 Contract.Ensures(Contract.Result<
Expr>() !=
null);
1784 IntPtr obj = Native.Z3_mk_app(ctx.nCtx, f.NativeObject,
1785 AST.ArrayLength(arguments),
1786 AST.ArrayToNative(arguments));
1787 return Create(ctx, obj);
1791 new internal static Expr Create(Context ctx, IntPtr obj)
1793 Contract.Requires(ctx !=
null);
1794 Contract.Ensures(Contract.Result<
Expr>() !=
null);
1798 return new Quantifier(ctx, obj);
1799 IntPtr s = Native.Z3_get_sort(ctx.nCtx, obj);
1802 if (Native.Z3_is_algebraic_number(ctx.nCtx, obj) != 0)
1803 return new AlgebraicNum(ctx, obj);
1805 if (Native.Z3_is_numeral_ast(ctx.nCtx, obj) != 0)
1809 case Z3_sort_kind.Z3_INT_SORT:
return new IntNum(ctx, obj);
1810 case Z3_sort_kind.Z3_REAL_SORT:
return new RatNum(ctx, obj);
1811 case Z3_sort_kind.Z3_BV_SORT:
return new BitVecNum(ctx, obj);
1812 case Z3_sort_kind.Z3_FLOATING_POINT_SORT:
return new FPNum(ctx, obj);
1813 case Z3_sort_kind.Z3_ROUNDING_MODE_SORT:
return new FPRMNum(ctx, obj);
1814 case Z3_sort_kind.Z3_FINITE_DOMAIN_SORT:
return new FiniteDomainNum(ctx, obj);
1820 case Z3_sort_kind.Z3_BOOL_SORT:
return new BoolExpr(ctx, obj);
1821 case Z3_sort_kind.Z3_INT_SORT:
return new IntExpr(ctx, obj);
1822 case Z3_sort_kind.Z3_REAL_SORT:
return new RealExpr(ctx, obj);
1823 case Z3_sort_kind.Z3_BV_SORT:
return new BitVecExpr(ctx, obj);
1824 case Z3_sort_kind.Z3_ARRAY_SORT:
return new ArrayExpr(ctx, obj);
1825 case Z3_sort_kind.Z3_DATATYPE_SORT:
return new DatatypeExpr(ctx, obj);
1826 case Z3_sort_kind.Z3_FLOATING_POINT_SORT:
return new FPExpr(ctx, obj);
1827 case Z3_sort_kind.Z3_ROUNDING_MODE_SORT:
return new FPRMExpr(ctx, obj);
1828 case Z3_sort_kind.Z3_FINITE_DOMAIN_SORT:
return new FiniteDomainExpr(ctx, obj);
1829 case Z3_sort_kind.Z3_RE_SORT:
return new ReExpr(ctx, obj);
1830 case Z3_sort_kind.Z3_SEQ_SORT:
return new SeqExpr(ctx, obj);
1833 return new Expr(ctx, obj);
bool IsFPToFp
Indicates whether the term is a floating-point conversion term
bool IsFalse
Indicates whether the term is the constant false.
bool IsProofIFFOEQ
Indicates whether the term is a proof iff-oeq
bool IsBVUGE
Indicates whether the term is an unsigned bit-vector greater-than-or-equal
Z3_sort_kind
The different kinds of Z3 types (See #Z3_get_sort_kind).
bool IsLT
Indicates whether the term is a less-than
bool IsFPRMRoundTowardPositive
Indicates whether the term is the floating-point rounding numeral roundTowardPositive
bool IsInt
Indicates whether the term is of integer sort.
bool IsSetSubset
Indicates whether the term is set subset
bool IsRelationalJoin
Indicates whether the term is a relational join
bool IsFPAbs
Indicates whether the term is a floating-point term absolute value term
bool IsFPSub
Indicates whether the term is a floating-point subtraction term
bool IsBVXOR
Indicates whether the term is a bit-wise XOR
bool IsFPGe
Indicates whether the term is a floating-point greater-than or erqual term
bool IsBVShiftRightArithmetic
Indicates whether the term is a bit-vector arithmetic shift left
bool IsRemainder
Indicates whether the term is remainder (binary)
bool IsRelationComplement
Indicates whether the term is the complement of a relation
bool IsBVMul
Indicates whether the term is a bit-vector multiplication (binary)
bool IsBVAdd
Indicates whether the term is a bit-vector addition (binary)
bool IsProofSymmetry
Indicates whether the term is proof by symmetricity of a relation
bool IsBVReduceAND
Indicates whether the term is a bit-vector reduce AND
bool IsBVXOR3
Indicates whether the term is a bit-vector ternary XOR
Expr Simplify(Params p=null)
Returns a simplified version of the expression.
bool IsBVShiftRightLogical
Indicates whether the term is a bit-vector logical shift right
bool IsBVCarry
Indicates whether the term is a bit-vector carry
bool IsBVSLT
Indicates whether the term is a signed bit-vector less-than
bool IsFPRMRoundNearestTiesToAway
Indicates whether the term is the floating-point rounding numeral roundNearestTiesToAway
bool IsFPisPositive
Indicates whether the term is a floating-point isPositive predicate term
bool IsBVURem
Indicates whether the term is a bit-vector unsigned remainder (binary)
bool IsProofPushQuant
Indicates whether the term is a proof for pushing quantifiers in.
bool IsBVNumeral
Indicates whether the term is a bit-vector numeral
bool IsBVExtract
Indicates whether the term is a bit-vector extraction
uint DomainSize
The size of the domain of the function declaration Arity
bool IsIff
Indicates whether the term is an if-and-only-if (Boolean equivalence, binary)
bool IsFPNeg
Indicates whether the term is a floating-point negation term
bool IsBVSMod
Indicates whether the term is a bit-vector signed modulus
bool IsProofCommutativity
Indicates whether the term is a proof by commutativity
bool IsBVOR
Indicates whether the term is a bit-wise OR
bool IsRelationSelect
Indicates whether the term is a relational select
bool IsLabelLit
Indicates whether the term is a label literal (used by the Boogie Verification condition generator).
bool IsBVSLE
Indicates whether the term is a signed bit-vector less-than-or-equal
bool IsProofSkolemize
Indicates whether the term is a proof for a Skolemization step
bool IsFPToSBV
Indicates whether the term is a floating-point conversion to signed bit-vector term
bool IsDistinct
Indicates whether the term is an n-ary distinct predicate (every argument is mutually distinct).
bool IsProofDER
Indicates whether the term is a proof for destructive equality resolution
bool IsBVBitZero
Indicates whether the term is a one-bit bit-vector with value zero
bool IsAnd
Indicates whether the term is an n-ary conjunction
uint NumArgs
The number of arguments of the expression.
bool IsEq
Indicates whether the term is an equality predicate.
bool IsArray
Indicates whether the term is of an array sort.
bool IsFPLe
Indicates whether the term is a floating-point less-than or equal term
bool IsBool
Indicates whether the term has Boolean sort.
bool IsFPAdd
Indicates whether the term is a floating-point addition term
bool IsProofDistributivity
Indicates whether the term is a distributivity proof object.
bool IsFPDiv
Indicates whether the term is a floating-point divison term
bool IsRelationWiden
Indicates whether the term is the widening of two relations
bool IsProofTrue
Indicates whether the term is a Proof for the expression 'true'.
bool IsNumeral
Indicates whether the term is a numeral
Expr SubstituteVars(Expr[] to)
Substitute the free variables in the expression with the expressions in to
internal Expr(Context ctx, IntPtr obj)
Constructor for Expr
bool IsIntNum
Indicates whether the term is an integer numeral.
bool IsRelationFilter
Indicates whether the term is a relation filter
bool IsFPMax
Indicates whether the term is a floating-point maximum term
bool IsStore
Indicates whether the term is an array store.
bool IsBV
Indicates whether the terms is of bit-vector sort.
bool IsBVULT
Indicates whether the term is an unsigned bit-vector less-than
bool IsSelect
Indicates whether the term is an array select.
bool IsBVSGT
Indicates whether the term is a signed bit-vector greater-than
bool IsBVBitOne
Indicates whether the term is a one-bit bit-vector with value one
bool IsITE
Indicates whether the term is a ternary if-then-else term
bool IsBVSRem
Indicates whether the term is a bit-vector signed remainder (binary)
bool IsFPNumeral
Indicates whether the term is a floating-point numeral
bool IsBVNAND
Indicates whether the term is a bit-wise NAND
bool IsProofElimUnusedVars
Indicates whether the term is a proof for elimination of unused variables.
bool IsBVComp
Indicates whether the term is a bit-vector comparison
bool IsVar
Indicates whether the AST is a BoundVariable
Expr Substitute(Expr[] from, Expr[] to)
Substitute every occurrence of from[i] in the expression with to[i], for i smaller than num_exprs.
bool IsFiniteDomainLT
Indicates whether the term is a less than predicate over a finite domain.
bool IsFPGt
Indicates whether the term is a floating-point greater-than term
bool IsBVUMinus
Indicates whether the term is a bit-vector unary minus
bool IsFPRMExprRNE
Indicates whether the term is the floating-point rounding numeral roundNearestTiesToEven
Z3_decl_kind DeclKind
The kind of the function declaration.
bool IsFPRMRoundTowardZero
Indicates whether the term is the floating-point rounding numeral roundTowardZero
bool IsOr
Indicates whether the term is an n-ary disjunction
bool IsFPRMRoundNearestTiesToEven
Indicates whether the term is the floating-point rounding numeral roundNearestTiesToEven
bool IsProofPullQuant
Indicates whether the term is a proof for pulling quantifiers out.
bool IsBVULE
Indicates whether the term is an unsigned bit-vector less-than-or-equal
bool IsBVSub
Indicates whether the term is a bit-vector subtraction (binary)
bool IsIsEmptyRelation
Indicates whether the term is a test for the emptiness of a relation
bool IsProofMonotonicity
Indicates whether the term is a monotonicity proof object.
bool IsIntToReal
Indicates whether the term is a coercion of integer to real (unary)
bool IsFPRM
Indicates whether the terms is of floating-point rounding mode sort.
bool IsFPToReal
Indicates whether the term is a floating-point conversion to real term
bool IsIntToBV
Indicates whether the term is a coercion from integer to bit-vector
bool IsGE
Indicates whether the term is a greater-than-or-equal
bool IsRelationRename
Indicates whether the term is the renaming of a column in a relation
bool IsSetIntersect
Indicates whether the term is set intersection
bool IsBVRepeat
Indicates whether the term is a bit-vector repetition
Z3_ast_kind
The different kinds of Z3 AST (abstract syntax trees). That is, terms, formulas and types.
bool IsBVShiftLeft
Indicates whether the term is a bit-vector shift left
bool IsProofIFFFalse
Indicates whether the term is a proof by iff-false
bool IsMul
Indicates whether the term is multiplication (binary)
bool IsProofLemma
Indicates whether the term is a proof by lemma
bool IsDefaultArray
Indicates whether the term is a default array.
bool IsAlgebraicNumber
Indicates whether the term is an algebraic number
bool IsBVRotateLeft
Indicates whether the term is a bit-vector rotate left
bool IsBVAND
Indicates whether the term is a bit-wise AND
bool IsFPMin
Indicates whether the term is a floating-point minimum term
bool IsFPRMExprRTZ
Indicates whether the term is the floating-point rounding numeral roundTowardZero
bool IsAsArray
Indicates whether the term is an as-array term.
bool IsProofDefAxiom
Indicates whether the term is a proof for Tseitin-like axioms
bool IsFPFMA
Indicates whether the term is a floating-point fused multiply-add term
bool IsProofOrElimination
Indicates whether the term is a proof by eliminiation of not-or
Z3_lbool
Lifted Boolean type: false, undefined, true.
bool IsInterpolant
Indicates whether the term is marked for interpolation.
bool IsRealIsInt
Indicates whether the term is a check that tests whether a real is integral (unary)
bool IsIDiv
Indicates whether the term is integer division (binary)
bool IsFPisNormal
Indicates whether the term is a floating-point isNormal term
bool IsProofTransitivityStar
Indicates whether the term is a proof by condensed transitivity of a relation
new Expr Translate(Context ctx)
Translates (copies) the term to the Context ctx .
override string ToString()
Returns a string representation of the expression.
bool IsFPRMNumeral
Indicates whether the term is a floating-point rounding mode numeral
bool IsConstantArray
Indicates whether the term is a constant array.
bool IsBVRotateRightExtended
Indicates whether the term is a bit-vector rotate right (extended)
Z3_lbool BoolValue
Indicates whether the expression is the true or false expression or something else (Z3_L_UNDEF).
bool IsProofTransitivity
Indicates whether the term is a proof by transitivity of a relation
bool IsBVRotateRight
Indicates whether the term is a bit-vector rotate right
bool IsFPRMExpr
Indicates whether the term is a floating-point rounding mode numeral
bool IsBVConcat
Indicates whether the term is a bit-vector concatenation (binary)
bool IsAdd
Indicates whether the term is addition (binary)
bool IsSub
Indicates whether the term is subtraction (binary)
bool IsRatNum
Indicates whether the term is a real numeral.
bool IsImplies
Indicates whether the term is an implication
bool IsProofQuantInst
Indicates whether the term is a proof for quantifier instantiation
bool IsSetDifference
Indicates whether the term is set difference
bool IsProofQuantIntro
Indicates whether the term is a quant-intro proof
bool IsProofHypothesis
Indicates whether the term is a hypthesis marker.
bool IsBVUDiv
Indicates whether the term is a bit-vector unsigned division (binary)
bool IsProofRewriteStar
Indicates whether the term is a proof by rewriting
bool IsFiniteDomain
Indicates whether the term is of an array sort.
bool IsFPPlusInfinity
Indicates whether the term is a floating-point +oo
bool IsRelationNegationFilter
Indicates whether the term is an intersection of a relation with the negation of another.
bool IsRelationUnion
Indicates whether the term is the union or convex hull of two relations.
bool IsProofGoal
Indicates whether the term is a proof for a fact (tagged as goal) asserted by the user.
A Params objects represents a configuration in the form of Symbol/value pairs.
bool IsFPisNaN
Indicates whether the term is a floating-point isNaN predicate term
bool IsArithmeticNumeral
Indicates whether the term is an arithmetic numeral.
bool IsProofAsserted
Indicates whether the term is a proof for a fact asserted by the user.
bool IsSetComplement
Indicates whether the term is set complement
bool IsBVZeroExtension
Indicates whether the term is a bit-vector zero extension
bool IsModulus
Indicates whether the term is modulus (binary)
bool IsFPRMExprRTN
Indicates whether the term is the floating-point rounding numeral roundTowardNegative
bool IsProofNNFNeg
Indicates whether the term is a proof for a negative NNF step
bool IsFP
Indicates whether the terms is of floating-point sort.
bool IsProofModusPonens
Indicates whether the term is proof via modus ponens
bool IsBVToInt
Indicates whether the term is a coercion from bit-vector to integer
Expr [] Args
The arguments of the expression.
bool IsRelationClone
Indicates whether the term is a relational clone (copy)
bool IsFPRoundToIntegral
Indicates whether the term is a floating-point roundToIntegral term
bool IsDiv
Indicates whether the term is division (binary)
bool IsReal
Indicates whether the term is of sort real.
bool IsProofUnitResolution
Indicates whether the term is a proof by unit resolution
bool IsFPEq
Indicates whether the term is a floating-point equality term
void Update(Expr[] args)
Update the arguments of the expression using the arguments args The number of new arguments should c...
bool IsFPisInf
Indicates whether the term is a floating-point isInf predicate term
bool IsApp
Indicates whether the AST is an application
bool IsFPRem
Indicates whether the term is a floating-point remainder term
bool IsFPSqrt
Indicates whether the term is a floating-point square root term
The main interaction with Z3 happens via the Context.
bool IsProofAndElimination
Indicates whether the term is a proof by elimination of AND
bool IsNot
Indicates whether the term is a negation
bool IsProofApplyDef
Indicates whether the term is a proof for application of a definition
bool IsWellSorted
Indicates whether the term is well-sorted.
bool IsProofModusPonensOEQ
Indicates whether the term is a proof by modus ponens for equi-satisfiability.
bool IsFPToIEEEBV
Indicates whether the term is a floating-point conversion to IEEE-754 bit-vector term
The Sort class implements type information for ASTs.
bool IsFPRMRoundTowardNegative
Indicates whether the term is the floating-point rounding numeral roundTowardNegative
bool IsProofNNFStar
Indicates whether the term is a proof for (~ P Q) here Q is in negation normal form.
The exception base class for error reporting from Z3
bool IsConst
Indicates whether the term represents a constant.
bool IsTrue
Indicates whether the term is the constant true.
The abstract syntax tree (AST) class.
bool IsFPNaN
Indicates whether the term is a floating-point NaN
bool IsProofCNFStar
Indicates whether the term is a proof for (~ P Q) where Q is in conjunctive normal form.
bool IsBVXNOR
Indicates whether the term is a bit-wise XNOR
bool IsEmptyRelation
Indicates whether the term is an empty relation
bool IsSetUnion
Indicates whether the term is set union
bool IsFPToFpUnsigned
Indicates whether the term is a floating-point conversion from unsigned bit-vector term
bool IsProofPullQuantStar
Indicates whether the term is a proof for pulling quantifiers out.
bool IsLE
Indicates whether the term is a less-than-or-equal
bool IsBVReduceOR
Indicates whether the term is a bit-vector reduce OR
bool IsFPFP
Indicates whether the term is a floating-point constructor term
bool IsBVRotateLeftExtended
Indicates whether the term is a bit-vector rotate left (extended)
bool IsRelation
Indicates whether the term is of relation sort.
bool IsBVNOR
Indicates whether the term is a bit-wise NOR
bool IsProofIFFTrue
Indicates whether the term is a proof by iff-true
bool IsExpr
Indicates whether the AST is an Expr
bool IsFPisZero
Indicates whether the term is a floating-point isZero predicate term
bool IsFPRMExprRTP
Indicates whether the term is the floating-point rounding numeral roundTowardPositive
bool IsProofTheoryLemma
Indicates whether the term is a proof for theory lemma
bool IsXor
Indicates whether the term is an exclusive or
FuncDecl FuncDecl
The function declaration of the function that is applied in this expression.
bool IsFPisSubnormal
Indicates whether the term is a floating-point isSubnormal predicate term
bool IsProofNNFPos
Indicates whether the term is a proof for a positive NNF step
bool IsFPToUBV
Indicates whether the term is a floating-point conversion to unsigned bit-vector term
uint Index
The de-Burijn index of a bound variable.
Expr Substitute(Expr from, Expr to)
Substitute every occurrence of from in the expression with to.
bool IsRealToInt
Indicates whether the term is a coercion of real to integer (unary)
bool IsProofDefIntro
Indicates whether the term is a proof for introduction of a name
bool IsFPisNegative
Indicates whether the term is a floating-point isNegative predicate term
Z3_decl_kind
The different kinds of interpreted function kinds.
bool IsProofRewrite
Indicates whether the term is a proof by rewriting
bool IsUMinus
Indicates whether the term is a unary minus
bool IsLabel
Indicates whether the term is a label (used by the Boogie Verification condition generator).
bool IsProofReflexivity
Indicates whether the term is a proof for (R t t), where R is a reflexive relation.
bool IsFPMinusZero
Indicates whether the term is a floating-point -zero
bool IsBVSignExtension
Indicates whether the term is a bit-vector sign extension
bool IsBVUGT
Indicates whether the term is an unsigned bit-vector greater-than
bool IsOEQ
Indicates whether the term is a binary equivalence modulo namings.
bool IsRelationStore
Indicates whether the term is an relation store
bool IsFPRMExprRNA
Indicates whether the term is the floating-point rounding numeral roundNearestTiesToAway
bool IsFPMinusInfinity
Indicates whether the term is a floating-point -oo
bool IsGT
Indicates whether the term is a greater-than
bool IsBVSDiv
Indicates whether the term is a bit-vector signed division (binary)
bool IsRelationProject
Indicates whether the term is a projection of columns (provided as numbers in the parameters).
bool IsBVSGE
Indicates whether the term is a signed bit-vector greater-than-or-equal
bool IsFPMul
Indicates whether the term is a floating-point multiplication term
bool IsArrayMap
Indicates whether the term is an array map.
bool IsBVNOT
Indicates whether the term is a bit-wise NOT
bool IsFPLt
Indicates whether the term is a floating-point less-than term