Public Member Functions | |
Expr< R > | simplify () |
Expr< R > | simplify (Params p) |
FuncDecl< R > | getFuncDecl () |
Z3_lbool | getBoolValue () |
int | getNumArgs () |
Expr<?>[] | getArgs () |
Expr< R > | update (Expr<?>[] args) |
Expr< R > | substitute (Expr<?>[] from, Expr<?>[] to) |
Expr< R > | substitute (Expr<?> from, Expr<?> to) |
Expr< R > | substituteVars (Expr<?>[] to) |
Expr< R > | translate (Context ctx) |
String | toString () |
boolean | isNumeral () |
boolean | isWellSorted () |
R | getSort () |
boolean | isConst () |
boolean | isIntNum () |
boolean | isRatNum () |
boolean | isAlgebraicNumber () |
boolean | isBool () |
boolean | isTrue () |
boolean | isFalse () |
boolean | isEq () |
boolean | isDistinct () |
boolean | isITE () |
boolean | isAnd () |
boolean | isOr () |
boolean | isIff () |
boolean | isXor () |
boolean | isNot () |
boolean | isImplies () |
boolean | isInt () |
boolean | isReal () |
boolean | isArithmeticNumeral () |
boolean | isLE () |
boolean | isGE () |
boolean | isLT () |
boolean | isGT () |
boolean | isAdd () |
boolean | isSub () |
boolean | isUMinus () |
boolean | isMul () |
boolean | isDiv () |
boolean | isIDiv () |
boolean | isRemainder () |
boolean | isModulus () |
boolean | isIntToReal () |
boolean | isRealToInt () |
boolean | isRealIsInt () |
boolean | isArray () |
boolean | isStore () |
boolean | isSelect () |
boolean | isConstantArray () |
boolean | isDefaultArray () |
boolean | isArrayMap () |
boolean | isAsArray () |
boolean | isSetUnion () |
boolean | isSetIntersect () |
boolean | isSetDifference () |
boolean | isSetComplement () |
boolean | isSetSubset () |
boolean | isBV () |
boolean | isBVNumeral () |
boolean | isBVBitOne () |
boolean | isBVBitZero () |
boolean | isBVUMinus () |
boolean | isBVAdd () |
boolean | isBVSub () |
boolean | isBVMul () |
boolean | isBVSDiv () |
boolean | isBVUDiv () |
boolean | isBVSRem () |
boolean | isBVURem () |
boolean | isBVSMod () |
boolean | isBVULE () |
boolean | isBVSLE () |
boolean | isBVUGE () |
boolean | isBVSGE () |
boolean | isBVULT () |
boolean | isBVSLT () |
boolean | isBVUGT () |
boolean | isBVSGT () |
boolean | isBVAND () |
boolean | isBVOR () |
boolean | isBVNOT () |
boolean | isBVXOR () |
boolean | isBVNAND () |
boolean | isBVNOR () |
boolean | isBVXNOR () |
boolean | isBVConcat () |
boolean | isBVSignExtension () |
boolean | isBVZeroExtension () |
boolean | isBVExtract () |
boolean | isBVRepeat () |
boolean | isBVReduceOR () |
boolean | isBVReduceAND () |
boolean | isBVComp () |
boolean | isBVShiftLeft () |
boolean | isBVShiftRightLogical () |
boolean | isBVShiftRightArithmetic () |
boolean | isBVRotateLeft () |
boolean | isBVRotateRight () |
boolean | isBVRotateLeftExtended () |
boolean | isBVRotateRightExtended () |
boolean | isIntToBV () |
boolean | isBVToInt () |
boolean | isBVCarry () |
boolean | isBVXOR3 () |
boolean | isLabel () |
boolean | isLabelLit () |
boolean | isString () |
String | getString () |
boolean | isConcat () |
boolean | isOEQ () |
boolean | isProofTrue () |
boolean | isProofAsserted () |
boolean | isProofGoal () |
boolean | isProofModusPonens () |
boolean | isProofReflexivity () |
boolean | isProofSymmetry () |
boolean | isProofTransitivity () |
boolean | isProofTransitivityStar () |
boolean | isProofMonotonicity () |
boolean | isProofQuantIntro () |
boolean | isProofDistributivity () |
boolean | isProofAndElimination () |
boolean | isProofOrElimination () |
boolean | isProofRewrite () |
boolean | isProofRewriteStar () |
boolean | isProofPullQuant () |
boolean | isProofPushQuant () |
boolean | isProofElimUnusedVars () |
boolean | isProofDER () |
boolean | isProofQuantInst () |
boolean | isProofHypothesis () |
boolean | isProofLemma () |
boolean | isProofUnitResolution () |
boolean | isProofIFFTrue () |
boolean | isProofIFFFalse () |
boolean | isProofCommutativity () |
boolean | isProofDefAxiom () |
boolean | isProofDefIntro () |
boolean | isProofApplyDef () |
boolean | isProofIFFOEQ () |
boolean | isProofNNFPos () |
boolean | isProofNNFNeg () |
boolean | isProofSkolemize () |
boolean | isProofModusPonensOEQ () |
boolean | isProofTheoryLemma () |
boolean | isRelation () |
boolean | isRelationStore () |
boolean | isEmptyRelation () |
boolean | isIsEmptyRelation () |
boolean | isRelationalJoin () |
boolean | isRelationUnion () |
boolean | isRelationWiden () |
boolean | isRelationProject () |
boolean | isRelationFilter () |
boolean | isRelationNegationFilter () |
boolean | isRelationRename () |
boolean | isRelationComplement () |
boolean | isRelationSelect () |
boolean | isRelationClone () |
boolean | isFiniteDomain () |
boolean | isFiniteDomainLT () |
int | getIndex () |
Public Member Functions inherited from AST | |
boolean | equals (Object o) |
int | compareTo (AST other) |
int | hashCode () |
int | getId () |
Z3_ast_kind | getASTKind () |
boolean | isExpr () |
boolean | isApp () |
boolean | isVar () |
boolean | isQuantifier () |
boolean | isSort () |
boolean | isFuncDecl () |
String | getSExpr () |
Protected Member Functions | |
Expr (Context ctx, long obj) | |
Additional Inherited Members | |
Static Public Member Functions inherited from Z3Object | |
static long[] | arrayToNative (Z3Object[] a) |
static int | arrayLength (Z3Object[] a) |
|
inline |
The arguments of the expression.
Z3Exception | on error |
Definition at line 109 of file Expr.java.
Referenced by FuncInterp< R extends Sort >.toString().
|
inline |
Indicates whether the expression is the true or false expression or something else (Z3_L_UNDEF).
Z3Exception | on error |
Definition at line 88 of file Expr.java.
|
inline |
The function declaration of the function that is applied in this expression.
Z3Exception | on error |
|
inline |
The de-Bruijn index of a bound variable. Remarks: Bound variables are indexed by de-Bruijn indices. It is perhaps easiest to explain the meaning of de-Bruijn indices by indicating the compilation process from non-de-Bruijn formulas to de-Bruijn format.
The last line is significant: the index of a bound variable is different depending on the scope in which it appears. The deeper x appears, the higher is its index.
Z3Exception | on error |
Definition at line 2087 of file Expr.java.
|
inline |
|
inline |
|
inline |
Retrieve string corresponding to string constant. Remark: the expression should be a string constant, (isString() should return true).
Z3Exception | on error |
|
inline |
Indicates whether the term is addition (binary)
Z3Exception | on error |
Definition at line 484 of file Expr.java.
|
inline |
|
inline |
|
inline |
Indicates whether the term is an arithmetic numeral.
Z3Exception | on error |
|
inline |
Indicates whether the term is of an array sort.
Z3Exception | on error |
Definition at line 595 of file Expr.java.
|
inline |
Indicates whether the term is an array map. Remarks: It satisfies mapf[i] = f(a1[i],...,a_n[i]) for every i.
Z3Exception | on error |
|
inline |
Indicates whether the term is an as-array term. Remarks: An as-array term * is n array value that behaves as the function graph of the function * passed as parameter.
Z3Exception | on error |
|
inline |
Indicates whether the term has Boolean sort.
Z3Exception | on error |
Definition at line 290 of file Expr.java.
|
inline |
Indicates whether the terms is of bit-vector sort.
Z3Exception | on error |
Definition at line 723 of file Expr.java.
|
inline |
Indicates whether the term is a bit-vector addition (binary)
Z3Exception | on error |
|
inline |
|
inline |
Indicates whether the term is a one-bit bit-vector with value one
Z3Exception | on error |
|
inline |
Indicates whether the term is a one-bit bit-vector with value zero
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector carry Remarks: Compute the * carry bit in a full-adder. The meaning is given by the equivalence (carry * l1 l2 l3) <=> (or (and l1 l2) (and l1 l3) (and l2 l3)))
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector comparison
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector concatenation (binary)
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector extraction
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector multiplication (binary)
Z3Exception | on error |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Indicates whether the term is a bit-vector reduce AND
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector reduce OR
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector repetition
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector rotate left
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector rotate left (extended) Remarks: Similar to Z3_OP_ROTATE_LEFT, but it is a binary operator instead of a parametric one.
Z3Exception | on error |
Definition at line 1188 of file Expr.java.
|
inline |
Indicates whether the term is a bit-vector rotate right
Z3Exception | on error |
Definition at line 1176 of file Expr.java.
|
inline |
Indicates whether the term is a bit-vector rotate right (extended) Remarks: Similar to Z3_OP_ROTATE_RIGHT, but it is a binary operator instead of a parametric one.
Z3Exception | on error |
Definition at line 1200 of file Expr.java.
|
inline |
Indicates whether the term is a bit-vector signed division (binary)
Z3Exception | on error |
|
inline |
Indicates whether the term is a signed bit-vector greater-than-or-equal
Z3Exception | on error |
|
inline |
Indicates whether the term is a signed bit-vector greater-than
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector shift left
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector arithmetic shift left
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector logical shift right
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector sign extension
Z3Exception | on error |
|
inline |
Indicates whether the term is a signed bit-vector less-than-or-equal
Z3Exception | on error |
|
inline |
Indicates whether the term is a signed bit-vector less-than
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector signed modulus
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector signed remainder (binary)
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector subtraction (binary)
Z3Exception | on error |
|
inline |
Indicates whether the term is a coercion from bit-vector to integer
Remarks: This function is not supported by the decision procedures. Only * the most rudimentary simplification rules are applied to this * function.
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector unsigned division (binary)
Z3Exception | on error |
|
inline |
Indicates whether the term is an unsigned bit-vector greater-than-or-equal
Z3Exception | on error |
|
inline |
Indicates whether the term is an unsigned bit-vector greater-than
Z3Exception | on error |
|
inline |
Indicates whether the term is an unsigned bit-vector less-than-or-equal
Z3Exception | on error |
|
inline |
Indicates whether the term is an unsigned bit-vector less-than
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector unary minus
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector unsigned remainder (binary)
Z3Exception | on error |
|
inline |
|
inline |
|
inline |
Indicates whether the term is a bit-vector ternary XOR Remarks: The * meaning is given by the equivalence (xor3 l1 l2 l3) <=> (xor (xor * l1 l2) l3)
Z3Exception | on error |
|
inline |
Indicates whether the term is a bit-vector zero extension
Z3Exception | on error |
|
inline |
TBD: sketch for #2522, 'Pointer' seems deprecated and instead approach seems to be around Set/Get CharArrayRegion and updating Native.cpp code generation to produce the char[].
public char[] getNativeString() { Native.IntPtr len = new Native.IntPtr(); long s = Native.getLstring(getContext().nCtx(), getNativeObject(), len); char[] result = new char[len.value]; Pointer ptr = Pointer.createConstant(s); for (int i = 0; i < len.value; ++i) result[i] = ptr.getChar(i); return result; } Check whether expression is a concatenation
|
inline |
|
inline |
Indicates whether the term is a constant array. Remarks: For example, * select(const(v),i) = v holds for every v and i. The function is * unary.
Z3Exception | on error |
|
inline |
Indicates whether the term is a default array. Remarks: For example default(const(v)) = v. The function is unary.
Z3Exception | on error |
|
inline |
Indicates whether the term is an n-ary distinct predicate (every argument is mutually distinct).
Z3Exception | on error |
|
inline |
|
inline |
|
inline |
Indicates whether the term is an equality predicate.
Z3Exception | on error |
|
inline |
|
inline |
Indicates whether the term is of an array sort.
Z3Exception | on error |
Definition at line 2051 of file Expr.java.
|
inline |
Indicates whether the term is a less than predicate over a finite domain.
Z3Exception | on error |
|
inline |
Indicates whether the term is a greater-than-or-equal
Z3Exception | on error |
|
inline |
|
inline |
Indicates whether the term is integer division (binary)
Z3Exception | on error |
|
inline |
Indicates whether the term is an if-and-only-if (Boolean equivalence, binary)
Z3Exception | on error |
|
inline |
|
inline |
Indicates whether the term is of integer sort.
Z3Exception | on error |
Definition at line 414 of file Expr.java.
|
inline |
Indicates whether the term is an integer numeral.
Z3Exception | on error |
Definition at line 260 of file Expr.java.
|
inline |
Indicates whether the term is a coercion from integer to bit-vector
Remarks: This function is not supported by the decision procedures. Only * the most rudimentary simplification rules are applied to this * function.
Z3Exception | on error |
|
inline |
Indicates whether the term is a coercion of integer to real (unary)
Z3Exception | on error |
|
inline |
Indicates whether the term is a test for the emptiness of a relation
Z3Exception | on error |
|
inline |
Indicates whether the term is a ternary if-then-else term
Z3Exception | on error |
|
inline |
Indicates whether the term is a label (used by the Boogie Verification condition generator). Remarks: The label has two parameters, a string and a Boolean polarity. It takes one argument, a formula.
Z3Exception | on error |
|
inline |
Indicates whether the term is a label literal (used by the Boogie Verification condition generator). Remarks: A label literal has a set of string parameters. It takes no arguments.
Z3Exception | on error |
|
inline |
|
inline |
|
inline |
|
inline |
Indicates whether the term is multiplication (binary)
Z3Exception | on error |
|
inline |
|
inline |
|
inline |
Indicates whether the term is a binary equivalence modulo namings. Remarks: This binary predicate is used in proof terms. It captures equisatisfiability and equivalence modulo renamings.
Z3Exception | on error |
|
inline |
|
inline |
Indicates whether the term is a proof by elimination of AND Remarks: * Given a proof for (and l_1 ... l_n), produces a proof for l_i T1: (and * l_1 ... l_n) [and-elim T1]: l_i
Z3Exception | on error |
|
inline |
Indicates whether the term is a proof for application of a definition Remarks: [apply-def T1]: F ~ n F is 'equivalent' to n, given that T1 is a proof that n is a name for F.
Z3Exception | on error |
Definition at line 1748 of file Expr.java.
|
inline |
Indicates whether the term is a proof for a fact asserted by the user.
Z3Exception | on error |
|
inline |
Indicates whether the term is a proof by commutativity Remarks: [comm]: (= (f a b) (f b a))
f is a commutative operator.
This proof object has no antecedents. Remark: if f is bool, then = is iff.
Z3Exception | on error |
Definition at line 1687 of file Expr.java.
|
inline |
Indicates whether the term is a proof for Tseitin-like axioms Remarks: Proof object used to justify Tseitin's like axioms:
(or (not (and p q)) p) (or (not (and p q)) q) (or (not (and p q r)) p) (or (not (and p q r)) q) (or (not (and p q r)) r) ... (or (and p q) (not p) (not q)) (or (not (or p q)) p q) (or (or p q) (not p)) (or (or p q) (not q)) (or (not (iff p q)) (not p) q) (or (not (iff p q)) p (not q)) (or (iff p q) (not p) (not q)) (or (iff p q) p q) (or (not (ite a b c)) (not a) b) (or (not (ite a b c)) a c) (or (ite a b c) (not a) (not b)) (or (ite a b c) a (not c)) (or (not (not a)) (not a)) (or (not a) a)
This proof object has no antecedents. Note: all axioms are propositional tautologies. Note also that 'and' and 'or' can take multiple arguments. You can recover the propositional tautologies by unfolding the Boolean connectives in the axioms a small bounded number of steps (=3).
Z3Exception | on error |
Definition at line 1713 of file Expr.java.
|
inline |
Indicates whether the term is a proof for introduction of a name Remarks: Introduces a name for a formula/term. Suppose e is an expression with free variables x, and def-intro introduces the name n(x). The possible cases are:
When e is of Boolean type: [def-intro]: (and (or n (not e)) (or (not n) e))
or: [def-intro]: (or (not n) e) when e only occurs positively.
When e is of the form (ite cond th el): [def-intro]: (and (or (not cond) (= n th)) (or cond (= n el)))
Otherwise: [def-intro]: (= n e)
Z3Exception | on error |
Definition at line 1736 of file Expr.java.
|
inline |
Indicates whether the term is a proof for destructive equality resolution Remarks: A proof for destructive equality resolution: (iff (forall (x) (or (not (= x t)) P[x])) P[t]) if x does not occur in t.
This proof object has no antecedents.
Several variables can be eliminated simultaneously.
Z3Exception | on error |
|
inline |
Indicates whether the term is a distributivity proof object. Remarks: Given that f (= or) distributes over g (= and), produces a proof for (= (f a (g c d)) (g (f a c) (f a d))) If f and g are associative, this proof also justifies the following equality: (= (f (g a b) (g c d)) (g (f a c) (f a d) (f b c) (f b d))) where each f and g can have arbitrary number of arguments.
This proof object has no antecedents. Remark. This rule is used by the CNF conversion pass and instantiated by f = or, and g = and.
Z3Exception | on error |
Definition at line 1478 of file Expr.java.
|
inline |
Indicates whether the term is a proof for elimination of unused variables. Remarks: A proof for (iff (forall (x_1 ... x_n y_1 ... y_m) p[x_1 ... x_n]) (forall (x_1 ... x_n) p[x_1 ... x_n]))
It is used to justify the elimination of unused variables. This proof object has no antecedents.
Z3Exception | on error |
Definition at line 1579 of file Expr.java.
|
inline |
Indicates whether the term is a proof for a fact (tagged as goal) asserted by the user.
Z3Exception | on error |
|
inline |
Indicates whether the term is a hypothesis marker. Remarks: Mark a hypothesis in a natural deduction style proof.
Z3Exception | on error |
Definition at line 1619 of file Expr.java.
|
inline |
Indicates whether the term is a proof by iff-false Remarks: T1: (not p) [iff-false T1]: (iff p false)
Z3Exception | on error |
Definition at line 1670 of file Expr.java.
|
inline |
Indicates whether the term is a proof iff-oeq Remarks: T1: (iff p q) [iff~ T1]: (~ p q)
Z3Exception | on error |
|
inline |
Indicates whether the term is a proof by iff-true Remarks: T1: p [iff-true T1]: (iff p true)
Z3Exception | on error |
|
inline |
Indicates whether the term is a proof by lemma Remarks: T1: false [lemma T1]: (or (not l_1) ... (not l_n))
This proof object has one antecedent: a hypothetical proof for false. It converts the proof in a proof for (or (not l_1) ... (not l_n)), when T1 contains the hypotheses: l_1, ..., l_n.
Z3Exception | on error |
|
inline |
Indicates whether the term is proof via modus ponens Remarks: Given a proof for p and a proof for (implies p q), produces a proof for q. T1: p T2: (implies p q) [mp T1 T2]: q The second antecedents may also be a proof for (iff p q).
Z3Exception | on error |
Definition at line 1374 of file Expr.java.
|
inline |
Indicates whether the term is a proof by modus ponens for equi-satisfiability. Remarks: Modus ponens style rule for equi-satisfiability. T1: p T2: (~ p q) [mp~ T1 T2]: q
Z3Exception | on error |
Definition at line 1838 of file Expr.java.
|
inline |
Indicates whether the term is a monotonicity proof object. Remarks: T1: (R t_1 s_1) ... Tn: (R t_n s_n) [monotonicity T1 ... Tn]: (R (f t_1 ... t_n) (f s_1 ... s_n)) Remark: if t_i == s_i, then the antecedent Ti is suppressed. That is, reflexivity proofs are suppressed to save space.
Z3Exception | on error |
Definition at line 1448 of file Expr.java.
|
inline |
Indicates whether the term is a proof for a negative NNF step Remarks: Proof for a (negative) NNF step. Examples:
T1: (not s_1) ~ r_1 ... Tn: (not s_n) ~ r_n [nnf-neg T1 ... Tn]: (not (and s_1 ... s_n)) ~ (or r_1 ... r_n) and T1: (not s_1) ~ r_1 ... Tn: (not s_n) ~ r_n [nnf-neg T1 ... Tn]: (not (or s_1 ... s_n)) ~ (and r_1 ... r_n) and T1: (not s_1) ~ r_1 T2: (not s_2) ~ r_2 T3: s_1 ~ r_1' T4: s_2 ~ r_2' [nnf-neg T1 T2 T3 T4]: (~ (not (iff s_1 s_2)) (and (or r_1 r_2) (or r_1' r_2')))
Z3Exception | on error |
|
inline |
Indicates whether the term is a proof for a positive NNF step Remarks: Proof for a (positive) NNF step. Example:
T1: (not s_1) ~ r_1 T2: (not s_2) ~ r_2 T3: s_1 ~ r_1' T4: s_2 ~ r_2'
r_2)))
The negation normal form steps NNF_POS and NNF_NEG are used in the following cases: (a) When creating the NNF of a positive force quantifier. The quantifier is retained (unless the bound variables are eliminated). Example T1: q ~ q_new [nnf-pos T1]: (~ (forall (x R) q) (forall (x R) q_new))
(b) When recursively creating NNF over Boolean formulas, where the top-level connective is changed during NNF conversion. The relevant Boolean connectives for NNF_POS are 'implies', 'iff', 'xor', 'ite'. NNF_NEG furthermore handles the case where negation is pushed over Boolean connectives 'and' and 'or'.
Z3Exception | on error |
|
inline |
Indicates whether the term is a proof by elimination of not-or Remarks: * Given a proof for (not (or l_1 ... l_n)), produces a proof for (not l_i). * T1: (not (or l_1 ... l_n)) [not-or-elim T1]: (not l_i)
Z3Exception | on error |
Definition at line 1500 of file Expr.java.
|
inline |
Indicates whether the term is a proof for pulling quantifiers out. Remarks: A proof for (iff (f (forall (x) q(x)) r) (forall (x) (f (q x) r))). This proof object has no antecedents.
Z3Exception | on error |
Definition at line 1548 of file Expr.java.
|
inline |
Indicates whether the term is a proof for pushing quantifiers in. Remarks: A proof for: (iff (forall (x_1 ... x_m) (and p_1[x_1 ... x_m] ... p_n[x_1 ... x_m])) (and (forall (x_1 ... x_m) p_1[x_1 ... x_m]) ... (forall (x_1 ... x_m) p_n[x_1 ... x_m]))) This proof object has no antecedents
Z3Exception | on error |
Definition at line 1563 of file Expr.java.
|
inline |
Indicates whether the term is a proof for quantifier instantiation
Remarks: A proof of (or (not (forall (x) (P x))) (P a))
Z3Exception | on error |
Definition at line 1607 of file Expr.java.
|
inline |
Indicates whether the term is a quant-intro proof Remarks: Given a proof * for (~ p q), produces a proof for (~ (forall (x) p) (forall (x) q)). T1: * (~ p q) [quant-intro T1]: (~ (forall (x) p) (forall (x) q))
Z3Exception | on error |
Definition at line 1459 of file Expr.java.
|
inline |
Indicates whether the term is a proof for (R t t), where R is a reflexive relation. Remarks: This proof object has no antecedents. The only reflexive relations that are used are equivalence modulo namings, equality and equivalence. That is, R is either '~', '=' or 'iff'.
Z3Exception | on error |
Definition at line 1389 of file Expr.java.
|
inline |
Indicates whether the term is a proof by rewriting Remarks: A proof for a local rewriting step (= t s). The head function symbol of t is interpreted.
This proof object has no antecedents. The conclusion of a rewrite rule is either an equality (= t s), an equivalence (iff t s), or equi-satisfiability (~ t s). Remark: if f is bool, then = is iff.
Examples: (= (+ x 0) x) (= (+ x 1 2) (+ 3 x)) (iff (or x false) x)
Z3Exception | on error |
|
inline |
Indicates whether the term is a proof by rewriting Remarks: A proof for rewriting an expression t into an expression s. This proof object can have n antecedents. The antecedents are proofs for equalities used as substitution rules. The object is used in a few cases . The cases are: - When applying contextual simplification (CONTEXT_SIMPLIFIER=true) - When converting bit-vectors to Booleans (BIT2BOOL=true)
Z3Exception | on error |
Definition at line 1536 of file Expr.java.
|
inline |
Indicates whether the term is a proof for a Skolemization step Remarks: Proof for:
(p x y)) (p (sk y) y))
This proof object has no antecedents.
Z3Exception | on error |
Definition at line 1825 of file Expr.java.
|
inline |
Indicates whether the term is proof by symmetricity of a relation
Remarks: Given an symmetric relation R and a proof for (R t s), produces * a proof for (R s t). T1: (R t s) [symmetry T1]: (R s t) T1 is the * antecedent of this proof object.
Z3Exception | on error |
|
inline |
Indicates whether the term is a proof for theory lemma Remarks: Generic proof for theory lemmas.
The theory lemma function comes with one or more parameters. The first parameter indicates the name of the theory. For the theory of arithmetic, additional parameters provide hints for checking the theory lemma. The hints for arithmetic are: - farkas - followed by rational coefficients. Multiply the coefficients to the inequalities in the lemma, add the (negated) inequalities and obtain a contradiction. - triangle-eq - Indicates a lemma related to the equivalence: (iff (= t1 t2) (and (<= t1 t2) (<= t2 t1))) - gcd-test - Indicates an integer linear arithmetic lemma that uses a gcd test.
Z3Exception | on error |
|
inline |
Indicates whether the term is a proof by transitivity of a relation
Remarks: Given a transitive relation R, and proofs for (R t s) and (R s * u), produces a proof for (R t u). T1: (R t s) T2: (R s u) [trans T1 T2]: * (R t u)
Z3Exception | on error |
Definition at line 1413 of file Expr.java.
|
inline |
Indicates whether the term is a proof by condensed transitivity of a relation Remarks: Condensed transitivity proof. It combines several symmetry and transitivity proofs. Example: T1: (R a b) T2: (R c b) T3: (R c d) [trans* T1 T2 T3]: (R a d) R must be a symmetric and transitive relation.
Assuming that this proof object is a proof for (R s t), then a proof checker must check if it is possible to prove (R s t) using the antecedents, symmetry and transitivity. That is, if there is a path from s to t, if we view every antecedent (R a b) as an edge between a and b.
Z3Exception | on error |
Definition at line 1433 of file Expr.java.
|
inline |
Indicates whether the term is a Proof for the expression 'true'.
Z3Exception | on error |
|
inline |
Indicates whether the term is a proof by unit resolution Remarks: T1: * (or l_1 ... l_n l_1' ... l_m') T2: (not l_1) ... R(n+1): (not l_n) * [unit-resolution T1 ... R(n+1)]: (or l_1' ... l_m')
Z3Exception | on error |
Definition at line 1646 of file Expr.java.
|
inline |
Indicates whether the term is a real numeral.
Z3Exception | on error |
Definition at line 270 of file Expr.java.
|
inline |
Indicates whether the term is of sort real.
Z3Exception | on error |
Definition at line 424 of file Expr.java.
|
inline |
Indicates whether the term is a check that tests whether a real is integral (unary)
Z3Exception | on error |
|
inline |
Indicates whether the term is a coercion of real to integer (unary)
Z3Exception | on error |
|
inline |
Indicates whether the term is of an array sort.
Z3Exception | on error |
Definition at line 1870 of file Expr.java.
|
inline |
|
inline |
Indicates whether the term is a relational clone (copy) Remarks: Create a fresh copy (clone) of a relation. The function is logically the identity, but in the context of a register machine allows for terms of kind
to perform destructive updates to the first argument.
Z3Exception | on error |
|
inline |
Indicates whether the term is the complement of a relation
Z3Exception | on error |
Definition at line 2011 of file Expr.java.
|
inline |
Indicates whether the term is a relation filter Remarks: Filter (restrict) a relation with respect to a predicate. The first argument is a relation. The second argument is a predicate with free de-Bruijn indices corresponding to the columns of the relation. So the first column in the relation has index 0.
Z3Exception | on error |
|
inline |
Indicates whether the term is an intersection of a relation with the negation of another. Remarks: Intersect the first relation with respect to negation of the second relation (the function takes two arguments). Logically, the specification can be described by a function
target = filter_by_negation(pos, neg, columns)
where columns are pairs c1, d1, .., cN, dN of columns from pos and neg, such that target are elements in x in pos, such that there is no y in neg that agrees with x on the columns c1, d1, .., cN, dN.
Z3Exception | on error |
Definition at line 1989 of file Expr.java.
|
inline |
Indicates whether the term is a projection of columns (provided as numbers in the parameters). Remarks: The function takes one argument.
Z3Exception | on error |
|
inline |
Indicates whether the term is the renaming of a column in a relation Remarks: The function takes one argument. The parameters contain the renaming as a cycle.
Z3Exception | on error |
|
inline |
Indicates whether the term is a relational select Remarks: Check if a record is an element of the relation. The function takes
arguments, where the first argument is a relation, and the remaining
arguments correspond to a record.
Z3Exception | on error |
|
inline |
Indicates whether the term is an relation store Remarks: Insert a record into a relation. The function takes
arguments, where the first argument is the relation and the remaining
elements correspond to the
columns of the relation.
Z3Exception | on error |
|
inline |
Indicates whether the term is the union or convex hull of two relations.
Remarks: The function takes two arguments.
Z3Exception | on error |
|
inline |
Indicates whether the term is the widening of two relations Remarks: The function takes two arguments.
Z3Exception | on error |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Indicates whether the term is an array store. Remarks: It satisfies * select(store(a,i,v),j) = if i = j then v else select(a,j). Array store * takes at least 3 arguments.
Z3Exception | on error |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Indicates whether the term is well-sorted.
Z3Exception | on error |
|
inline |
|
inline |
Returns a simplified version of the expression
Z3Exception | on error |
Definition at line 41 of file Expr.java.
Returns a simplified version of the expression A set of parameters
p | a Params object to configure the simplifier |
Z3Exception | on error |
Substitute every occurrence of
in the expression with
.
Z3Exception | on error |
Definition at line 168 of file Expr.java.
Substitute every occurrence of
in the expression with
, for
smaller than
. Remarks: The result is the new expression. The arrays
and
must have size
. For every
smaller than
, we must have that sort of
must be equal to sort of
.
Z3Exception | on error |
Definition at line 149 of file Expr.java.
Substitute the free variables in the expression with the expressions in
Remarks: For every
smaller than *
, the variable with de-Bruijn index
* is replaced with term
.
Z3Exception | on error |
Z3Exception | on error |
|
inline |
Returns a string representation of the expression.
Reimplemented from AST.
Definition at line 208 of file Expr.java.
Referenced by Optimize.AssertSoft().
Translates (copies) the term to the Context
.
ctx | A context |
Z3Exception | on error |
Reimplemented from AST.
Definition at line 199 of file Expr.java.
Referenced by AstRef.__copy__(), Goal.__copy__(), AstVector.__copy__(), FuncInterp.__copy__(), ModelRef.__copy__(), Solver.__copy__(), Goal.__deepcopy__(), AstVector.__deepcopy__(), FuncInterp.__deepcopy__(), ModelRef.__deepcopy__(), Solver.__deepcopy__(), and Expr< R extends Sort >.translate().
Update the arguments of the expression using the arguments
The number of new arguments should coincide with the current number of arguments.
args | arguments |
Z3Exception | on error |
Definition at line 127 of file Expr.java.