18package com.microsoft.z3;
20import java.lang.reflect.Type;
21import java.lang.reflect.ParameterizedType;
23import com.microsoft.z3.enumerations.Z3_ast_kind;
24import com.microsoft.z3.enumerations.Z3_decl_kind;
25import com.microsoft.z3.enumerations.Z3_lbool;
26import com.microsoft.z3.enumerations.Z3_sort_kind;
33@SuppressWarnings(
"unchecked")
43 return simplify(
null);
60 Native.simplify(getContext().nCtx(), getNativeObject()));
65 Native.simplifyEx(getContext().nCtx(), getNativeObject(),
66 p.getNativeObject()));
78 return new FuncDecl<>(getContext(), Native.getAppDecl(getContext().nCtx(),
90 return Z3_lbool.fromInt(Native.getBoolValue(getContext().nCtx(),
101 return Native.getAppNumArgs(getContext().nCtx(), getNativeObject());
111 int n = getNumArgs();
113 for (
int i = 0; i < n; i++) {
114 res[i] =
Expr.create(getContext(),
115 Native.getAppArg(getContext().nCtx(), getNativeObject(), i));
129 getContext().checkContextMatch(args);
130 if (isApp() && args.length != getNumArgs()) {
131 throw new Z3Exception(
"Number of arguments does not match");
133 return (
Expr<R>)
Expr.create(getContext(), Native.updateTerm(getContext().nCtx(), getNativeObject(),
151 getContext().checkContextMatch(from);
152 getContext().checkContextMatch(to);
153 if (from.length != to.length) {
154 throw new Z3Exception(
"Argument sizes do not match");
156 return (
Expr<R>)
Expr.create(getContext(), Native.substitute(getContext().nCtx(),
170 return substitute(
new Expr[] { from },
new Expr[] { to });
186 getContext().checkContextMatch(to);
187 return (
Expr<R>)
Expr.create(getContext(), Native.substituteVars(getContext().nCtx(),
205 getContext().checkContextMatch(from);
206 getContext().checkContextMatch(to);
207 if (from.length != to.length) {
208 throw new Z3Exception(
"Arrays 'from' and 'to' must have the same length");
210 return (
Expr<R>)
Expr.create(getContext(), Native.substituteFuns(getContext().nCtx(),
234 return super.toString();
244 return Native.isNumeralAst(getContext().nCtx(), getNativeObject());
255 return Native.isWellSorted(getContext().nCtx(), getNativeObject());
265 return (R)
Sort.create(getContext(),
266 Native.getSort(getContext().nCtx(), getNativeObject()));
276 return isApp() && getNumArgs() == 0 && getFuncDecl().getDomainSize() == 0;
286 return isNumeral() && isInt();
296 return isNumeral() && isReal();
306 return Native.isAlgebraicNumber(getContext().nCtx(), getNativeObject());
316 return (isExpr() && Native.isEqSort(getContext().nCtx(),
317 Native.mkBoolSort(getContext().nCtx()),
318 Native.getSort(getContext().nCtx(), getNativeObject())));
328 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_TRUE;
338 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_FALSE;
348 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_EQ;
359 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_DISTINCT;
369 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_ITE;
379 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_AND;
389 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_OR;
400 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_IFF;
410 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_XOR;
420 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_NOT;
430 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_IMPLIES;
440 return Native.getSortKind(getContext().nCtx(), Native.getSort(getContext().nCtx(), getNativeObject())) ==
Z3_sort_kind.Z3_INT_SORT.toInt();
450 return Native.getSortKind(getContext().nCtx(), Native.getSort(getContext().nCtx(), getNativeObject())) ==
Z3_sort_kind.Z3_REAL_SORT.toInt();
460 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_ANUM;
470 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_LE;
480 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_GE;
490 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_LT;
500 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_GT;
510 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_ADD;
520 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SUB;
530 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_UMINUS;
540 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_MUL;
550 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_DIV;
560 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_IDIV;
570 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_REM;
580 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_MOD;
590 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_TO_REAL;
600 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_TO_INT;
611 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_IS_INT;
621 return (Native.isApp(getContext().nCtx(), getNativeObject()) &&
Z3_sort_kind
622 .fromInt(Native.getSortKind(getContext().nCtx(),
623 Native.getSort(getContext().nCtx(), getNativeObject()))) ==
Z3_sort_kind.Z3_ARRAY_SORT);
634 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_STORE;
644 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SELECT;
655 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_CONST_ARRAY;
666 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_ARRAY_DEFAULT;
678 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_ARRAY_MAP;
689 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_AS_ARRAY;
699 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SET_UNION;
709 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SET_INTERSECT;
719 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SET_DIFFERENCE;
729 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SET_COMPLEMENT;
739 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SET_SUBSET;
749 return Native.getSortKind(getContext().nCtx(),
750 Native.getSort(getContext().nCtx(), getNativeObject())) == Z3_sort_kind.Z3_BV_SORT
761 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BNUM;
771 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BIT1;
781 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BIT0;
791 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BNEG;
801 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BADD;
811 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BSUB;
821 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BMUL;
831 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BSDIV;
841 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BUDIV;
851 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BSREM;
861 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BUREM;
871 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BSMOD;
881 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BSDIV0;
891 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BUDIV0;
901 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BSREM0;
911 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BUREM0;
921 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BSMOD0;
931 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_ULEQ;
941 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SLEQ;
952 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_UGEQ;
962 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SGEQ;
972 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_ULT;
982 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SLT;
992 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_UGT;
1002 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SGT;
1012 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BAND;
1022 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BOR;
1032 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BNOT;
1042 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BXOR;
1052 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BNAND;
1062 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BNOR;
1072 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BXNOR;
1082 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_CONCAT;
1092 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SIGN_EXT;
1102 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_ZERO_EXT;
1112 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_EXTRACT;
1122 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_REPEAT;
1132 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BREDOR;
1142 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BREDAND;
1152 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BCOMP;
1162 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BSHL;
1172 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BLSHR;
1182 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BASHR;
1192 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_ROTATE_LEFT;
1202 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_ROTATE_RIGHT;
1214 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_EXT_ROTATE_LEFT;
1226 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_EXT_ROTATE_RIGHT;
1238 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_INT2BV;
1250 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_BV2INT;
1261 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_CARRY;
1272 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_XOR3;
1285 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_LABEL;
1298 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_LABEL_LIT;
1307 return isApp() && Native.isString(getContext().nCtx(), getNativeObject());
1318 return Native.getString(getContext().nCtx(), getNativeObject());
1343 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_SEQ_CONCAT;
1355 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_OEQ;
1365 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_TRUE;
1375 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_ASSERTED;
1386 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_GOAL;
1400 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_MODUS_PONENS;
1415 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_REFLEXIVITY;
1427 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_SYMMETRY;
1439 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_TRANSITIVITY;
1459 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_TRANSITIVITY_STAR;
1474 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_MONOTONICITY;
1485 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_QUANT_INTRO;
1504 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_DISTRIBUTIVITY;
1515 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_AND_ELIM;
1526 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_NOT_OR_ELIM;
1546 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_REWRITE;
1562 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_REWRITE_STAR;
1574 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_PULL_QUANT;
1589 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_PUSH_QUANT;
1605 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_ELIM_UNUSED_VARS;
1621 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_DER;
1633 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_QUANT_INST;
1645 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_HYPOTHESIS;
1661 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_LEMMA;
1672 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_UNIT_RESOLUTION;
1684 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_IFF_TRUE;
1696 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_IFF_FALSE;
1713 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_COMMUTATIVITY;
1739 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_DEF_AXIOM;
1762 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_DEF_INTRO;
1774 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_APPLY_DEF;
1786 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_IFF_OEQ;
1814 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_NNF_POS;
1833 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_NNF_NEG;
1851 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_SKOLEMIZE;
1864 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_MODUS_PONENS_OEQ;
1886 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_PR_TH_LEMMA;
1896 return (Native.isApp(getContext().nCtx(), getNativeObject()) && Native
1897 .getSortKind(getContext().nCtx(),
1898 Native.getSort(getContext().nCtx(), getNativeObject())) ==
Z3_sort_kind.Z3_RELATION_SORT
1913 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_STORE;
1923 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_EMPTY;
1933 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_IS_EMPTY;
1943 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_JOIN;
1955 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_UNION;
1967 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_WIDEN;
1980 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_PROJECT;
1995 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_FILTER;
2015 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_NEGATION_FILTER;
2027 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_RENAME;
2037 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_COMPLEMENT;
2051 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_SELECT;
2067 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_RA_CLONE;
2077 return (Native.isApp(getContext().nCtx(), getNativeObject()) && Native
2078 .getSortKind(getContext().nCtx(),
2079 Native.getSort(getContext().nCtx(), getNativeObject())) ==
Z3_sort_kind.Z3_FINITE_DOMAIN_SORT
2090 return isApp() && getFuncDecl().getDeclKind() ==
Z3_decl_kind.Z3_OP_FD_LT;
2114 throw new Z3Exception(
"Term is not a bound variable.");
2117 return Native.getIndexValue(getContext().nCtx(), getNativeObject());
2120 private Class sort =
null;
2130 public <S extends R>
Expr<S> distillSort(Class<S> newSort) {
2131 if (sort !=
null && !newSort.isAssignableFrom(sort)) {
2133 String.format(
"Cannot distill expression of sort %s to %s.", sort.getName(), newSort.getName()));
2136 return (Expr<S>) ((Expr<?>)
this);
2145 Type superclass = getClass().getGenericSuperclass();
2146 if (superclass instanceof ParameterizedType) {
2147 Type argType = ((ParameterizedType) superclass).getActualTypeArguments()[0];
2148 if (argType instanceof Class) {
2149 this.sort = (Class) argType;
2155 void checkNativeObject(
long obj) {
2156 if (!Native.isApp(getContext().nCtx(), obj) &&
2157 Native.getAstKind(getContext().nCtx(), obj) !=
Z3_ast_kind.Z3_VAR_AST.toInt() &&
2158 Native.getAstKind(getContext().nCtx(), obj) !=
Z3_ast_kind.Z3_QUANTIFIER_AST.toInt()) {
2159 throw new Z3Exception(
"Underlying object is not a term");
2161 super.checkNativeObject(obj);
2164 static <U extends Sort> Expr<U> create(Context ctx, FuncDecl<U> f, Expr<?> ... arguments)
2166 long obj = Native.mkApp(ctx.nCtx(), f.getNativeObject(),
2167 AST.arrayLength(arguments), AST.arrayToNative(arguments));
2168 return (Expr<U>) create(ctx, obj);
2172 static Expr<?> create(Context ctx,
long obj)
2177 boolean isLambda = !Native.isQuantifierExists(ctx.nCtx(), obj) && !Native.isQuantifierForall(ctx.nCtx(), obj);
2179 return new Lambda(ctx, obj);
2181 return new Quantifier(ctx, obj);
2184 long s = Native.getSort(ctx.nCtx(), obj);
2186 .fromInt(Native.getSortKind(ctx.nCtx(), s));
2188 if (Native.isAlgebraicNumber(ctx.nCtx(), obj))
2189 return new AlgebraicNum(ctx, obj);
2191 if (Native.isNumeralAst(ctx.nCtx(), obj))
2196 return new IntNum(ctx, obj);
2198 return new RatNum(ctx, obj);
2200 return new BitVecNum(ctx, obj);
2202 return new FPNum(ctx, obj);
2204 return new FPRMNum(ctx, obj);
2206 return new FiniteDomainNum(ctx, obj);
2214 return new BoolExpr(ctx, obj);
2216 return new IntExpr(ctx, obj);
2218 return new RealExpr(ctx, obj);
2220 return new BitVecExpr(ctx, obj);
2222 return new ArrayExpr<>(ctx, obj);
2224 return new DatatypeExpr<>(ctx, obj);
2226 return new FPExpr(ctx, obj);
2228 return new FPRMExpr(ctx, obj);
2230 return new FiniteDomainExpr(ctx, obj);
2232 return new SeqExpr<>(ctx, obj);
2234 return new ReExpr<>(ctx, obj);
2238 return new Expr<>(ctx, obj);
boolean isConstantArray()
Expr(Context ctx, long obj)
boolean isProofHypothesis()
boolean isProofTransitivityStar()
boolean isProofAsserted()
boolean isBVRotateRightExtended()
Expr< R > substitute(Expr<?>[] from, Expr<?>[] to)
boolean isRelationFilter()
boolean isEmptyRelation()
Expr< R > substituteVars(Expr<?>[] to)
boolean isRelationalJoin()
boolean isProofApplyDef()
Expr< R > simplify(Params p)
boolean isProofQuantIntro()
boolean isProofReflexivity()
boolean isProofModusPonensOEQ()
boolean isProofTransitivity()
boolean isProofPullQuant()
boolean isProofOrElimination()
Expr< R > substituteFuns(FuncDecl<?>[] from, Expr<?>[] to)
boolean isProofIFFFalse()
boolean isProofQuantInst()
boolean isProofPushQuant()
boolean isRelationUnion()
boolean isProofTheoryLemma()
boolean isBVRotateLeftExtended()
boolean isProofSkolemize()
boolean isRelationClone()
boolean isProofElimUnusedVars()
boolean isProofSymmetry()
boolean isProofMonotonicity()
boolean isBVZeroExtension()
Expr< R > translate(Context ctx)
boolean isAlgebraicNumber()
boolean isSetDifference()
boolean isProofAndElimination()
boolean isProofDefIntro()
boolean isBVRotateRight()
boolean isSetComplement()
boolean isArithmeticNumeral()
boolean isBVShiftRightArithmetic()
boolean isFiniteDomainLT()
FuncDecl< R > getFuncDecl()
boolean isIsEmptyRelation()
Expr< R > update(Expr<?>[] args)
boolean isProofUnitResolution()
boolean isBVShiftRightLogical()
boolean isRelationProject()
boolean isRelationNegationFilter()
boolean isRelationWiden()
boolean isRelationSelect()
boolean isProofDefAxiom()
boolean isProofModusPonens()
boolean isRelationStore()
boolean isProofRewriteStar()
boolean isProofDistributivity()
boolean isRelationRename()
boolean isBVSignExtension()
boolean isProofCommutativity()
Expr< R > substitute(Expr<?> from, Expr<?> to)
boolean isRelationComplement()
static long[] arrayToNative(Z3Object[] a)
Z3_ast_kind
The different kinds of Z3 AST (abstract syntax trees). That is, terms, formulas and types.
Z3_decl_kind
The different kinds of interpreted function kinds.
Z3_sort_kind
The different kinds of Z3 types (See Z3_get_sort_kind).
Z3_lbool
Lifted Boolean type: false, undefined, true.