18package com.microsoft.z3;
20import static com.microsoft.z3.Constructor.of;
22import com.microsoft.z3.enumerations.Z3_ast_print_mode;
35@SuppressWarnings(
"unchecked")
38 static final Object creation_lock =
new Object();
41 synchronized (creation_lock) {
42 m_ctx = Native.mkContextRc(0);
48 synchronized (creation_lock) {
72 public Context(Map<String, String> settings) {
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());
78 m_ctx = Native.mkContextRc(cfg);
79 Native.delConfig(cfg);
86 Native.setInternalErrorHandler(m_ctx);
110 Symbol[] mkSymbols(String[] names)
115 for (
int i = 0; i < names.length; ++i)
116 result[i] = mkSymbol(names[i]);
120 private BoolSort m_boolSort =
null;
121 private IntSort m_intSort =
null;
122 private RealSort m_realSort =
null;
123 private SeqSort<CharSort> m_stringSort =
null;
130 if (m_boolSort ==
null) {
141 if (m_intSort ==
null) {
152 if (m_realSort ==
null) {
180 if (m_stringSort ==
null) {
181 m_stringSort = mkStringSort();
191 checkContextMatch(s);
200 return mkUninterpretedSort(mkSymbol(str));
224 return new BitVecSort(
this, Native.mkBvSort(nCtx(), size));
232 checkContextMatch(domain);
233 checkContextMatch(range);
243 checkContextMatch(domains);
244 checkContextMatch(range);
253 return new SeqSort<>(
this, Native.mkStringSort(nCtx()));
261 return new SeqSort<>(
this, Native.mkSeqSort(nCtx(), s.getNativeObject()));
269 return new ReSort<>(
this, Native.mkReSort(nCtx(), s.getNativeObject()));
279 checkContextMatch(name);
280 checkContextMatch(fieldNames);
281 checkContextMatch(fieldSorts);
282 return new TupleSort(
this, name, fieldNames.length, fieldNames,
292 checkContextMatch(name);
293 checkContextMatch(enumNames);
303 return new EnumSort<>(
this, mkSymbol(name), mkSymbols(enumNames));
311 checkContextMatch(name);
312 checkContextMatch(elemSort);
321 checkContextMatch(elemSort);
322 return new ListSort<>(
this, mkSymbol(name), elemSort);
331 checkContextMatch(name);
356 Symbol[] fieldNames,
Sort[] sorts,
int[] sortRefs)
359 return of(
this, name, recognizer, fieldNames, sorts, sortRefs);
366 String[] fieldNames,
Sort[] sorts,
int[] sortRefs)
368 return of(
this, mkSymbol(name), mkSymbol(recognizer), mkSymbols(fieldNames), sorts, sortRefs);
376 checkContextMatch(name);
377 checkContextMatch(constructors);
387 checkContextMatch(constructors);
399 checkContextMatch(name);
401 checkContextMatch(params);
403 int numParams = (params ==
null) ? 0 : params.length;
404 long[] paramsNative = (params ==
null) ?
new long[0] :
AST.arrayToNative(params);
405 return new DatatypeSort<>(
this, Native.mkDatatypeSort(nCtx(), name.getNativeObject(), numParams, paramsNative));
413 public <R> DatatypeSort<R> mkDatatypeSortRef(Symbol name)
415 return mkDatatypeSortRef(name,
null);
424 public <R> DatatypeSort<R> mkDatatypeSortRef(String name, Sort[] params)
426 return mkDatatypeSortRef(mkSymbol(name), params);
434 public <R> DatatypeSort<R> mkDatatypeSortRef(String name)
436 return mkDatatypeSortRef(name,
null);
446 checkContextMatch(names);
447 int n = names.length;
449 long[] n_constr =
new long[n];
450 for (
int i = 0; i < n; i++)
454 checkContextMatch(constructor);
456 n_constr[i] = cla[i].getNativeObject();
458 long[] n_res =
new long[n];
462 for (
int i = 0; i < n; i++)
473 return mkDatatypeSorts(mkSymbols(names), c);
484 checkContextMatch(name);
496 return mkTypeVariable(mkSymbol(name));
524 checkContextMatch(name);
525 checkContextMatch(parameters);
526 checkContextMatch(constructors);
528 int numParams = parameters.length;
531 int numConstructors = constructors.length;
532 long[] constructorsNative =
new long[numConstructors];
533 for (
int i = 0; i < numConstructors; i++) {
534 constructorsNative[i] = constructors[i].getNativeObject();
537 long nativeSort = Native.mkPolymorphicDatatype(nCtx(), name.getNativeObject(),
538 numParams, paramsNative, numConstructors, constructorsNative);
540 return new DatatypeSort<>(
this, nativeSort);
553 public <R> DatatypeSort<R> mkPolymorphicDatatypeSort(String name, Sort[] parameters, Constructor<R>[] constructors)
555 return mkPolymorphicDatatypeSort(mkSymbol(name), parameters, constructors);
568 Native.datatypeUpdateField
569 (nCtx(), field.getNativeObject(),
570 t.getNativeObject(), v.getNativeObject()));
579 checkContextMatch(name);
580 checkContextMatch(domain);
581 checkContextMatch(range);
582 return new FuncDecl<>(
this, name, domain, range);
587 checkContextMatch(name);
588 checkContextMatch(domain);
589 checkContextMatch(range);
590 long f = Native.solverPropagateDeclare(
592 name.getNativeObject(),
595 range.getNativeObject());
606 checkContextMatch(name);
607 checkContextMatch(domain);
608 checkContextMatch(range);
619 checkContextMatch(domain);
620 checkContextMatch(range);
621 return new FuncDecl<>(
this, mkSymbol(name), domain, range);
630 checkContextMatch(domain);
631 checkContextMatch(range);
633 return new FuncDecl<>(
this, mkSymbol(name), q, range);
641 checkContextMatch(name);
642 checkContextMatch(domain);
643 checkContextMatch(range);
644 return new FuncDecl<>(
this, name, domain, range,
true);
656 checkContextMatch(f);
657 checkContextMatch(args);
658 checkContextMatch(body);
660 Native.addRecDef(nCtx(), f.getNativeObject(), args.length, argsNative, body.getNativeObject());
672 checkContextMatch(domain);
673 checkContextMatch(range);
674 return new FuncDecl<>(
this, prefix, domain, range);
682 checkContextMatch(name);
683 checkContextMatch(range);
684 return new FuncDecl<>(
this, name,
null, range);
692 checkContextMatch(range);
693 return new FuncDecl<>(
this, mkSymbol(name),
null, range);
705 checkContextMatch(range);
706 return new FuncDecl<>(
this, prefix,
null, range);
717 Native.mkBound(nCtx(), index, ty.getNativeObject()));
726 if (terms.length == 0)
727 throw new Z3Exception(
"Cannot create a pattern from zero terms");
730 return new Pattern(
this, Native.mkPattern(nCtx(), terms.length,
740 checkContextMatch(name);
741 checkContextMatch(range);
745 Native.mkConst(nCtx(), name.getNativeObject(),
746 range.getNativeObject()));
755 return mkConst(mkSymbol(name), range);
764 checkContextMatch(range);
766 Native.mkFreshConst(nCtx(), prefix, range.getNativeObject()));
775 return mkApp(f, (
Expr<?>[])
null);
783 return (
BoolExpr) mkConst(name, getBoolSort());
791 return (
BoolExpr) mkConst(mkSymbol(name), getBoolSort());
799 return (
IntExpr) mkConst(name, getIntSort());
807 return (
IntExpr) mkConst(name, getIntSort());
815 return (
RealExpr) mkConst(name, getRealSort());
823 return (
RealExpr) mkConst(name, getRealSort());
831 return (
BitVecExpr) mkConst(name, mkBitVecSort(size));
839 return (
BitVecExpr) mkConst(name, mkBitVecSort(size));
848 checkContextMatch(f);
849 checkContextMatch(args);
850 return Expr.create(
this, f, args);
858 return new BoolExpr(
this, Native.mkTrue(nCtx()));
866 return new BoolExpr(
this, Native.mkFalse(nCtx()));
874 return value ? mkTrue() : mkFalse();
882 checkContextMatch(x);
883 checkContextMatch(y);
884 return new BoolExpr(
this, Native.mkEq(nCtx(), x.getNativeObject(),
885 y.getNativeObject()));
894 checkContextMatch(args);
895 return new BoolExpr(
this, Native.mkDistinct(nCtx(), args.length,
904 checkContextMatch(a);
905 return new BoolExpr(
this, Native.mkNot(nCtx(), a.getNativeObject()));
917 checkContextMatch(t1);
918 checkContextMatch(t2);
919 checkContextMatch(t3);
920 return (
Expr<R>)
Expr.create(
this, Native.mkIte(nCtx(), t1.getNativeObject(),
921 t2.getNativeObject(), t3.getNativeObject()));
929 checkContextMatch(t1);
930 checkContextMatch(t2);
931 return new BoolExpr(
this, Native.mkIff(nCtx(), t1.getNativeObject(),
932 t2.getNativeObject()));
940 checkContextMatch(t1);
941 checkContextMatch(t2);
942 return new BoolExpr(
this, Native.mkImplies(nCtx(),
943 t1.getNativeObject(), t2.getNativeObject()));
951 checkContextMatch(t1);
952 checkContextMatch(t2);
953 return new BoolExpr(
this, Native.mkXor(nCtx(), t1.getNativeObject(),
954 t2.getNativeObject()));
963 checkContextMatch(t);
964 return new BoolExpr(
this, Native.mkAnd(nCtx(), t.length,
974 checkContextMatch(t);
975 return new BoolExpr(
this, Native.mkOr(nCtx(), t.length,
985 checkContextMatch(t);
996 checkContextMatch(t);
1007 checkContextMatch(t);
1017 checkContextMatch(t);
1019 Native.mkUnaryMinus(nCtx(), t.getNativeObject()));
1027 checkContextMatch(t1);
1028 checkContextMatch(t2);
1030 t1.getNativeObject(), t2.getNativeObject()));
1040 checkContextMatch(t1);
1041 checkContextMatch(t2);
1042 return new IntExpr(
this, Native.mkMod(nCtx(), t1.getNativeObject(),
1043 t2.getNativeObject()));
1053 checkContextMatch(t1);
1054 checkContextMatch(t2);
1055 return new IntExpr(
this, Native.mkRem(nCtx(), t1.getNativeObject(),
1056 t2.getNativeObject()));
1065 checkContextMatch(t1);
1066 checkContextMatch(t2);
1069 Native.mkPower(nCtx(), t1.getNativeObject(),
1070 t2.getNativeObject()));
1078 checkContextMatch(t1);
1079 checkContextMatch(t2);
1080 return new BoolExpr(
this, Native.mkLt(nCtx(), t1.getNativeObject(),
1081 t2.getNativeObject()));
1089 checkContextMatch(t1);
1090 checkContextMatch(t2);
1091 return new BoolExpr(
this, Native.mkLe(nCtx(), t1.getNativeObject(),
1092 t2.getNativeObject()));
1100 checkContextMatch(t1);
1101 checkContextMatch(t2);
1102 return new BoolExpr(
this, Native.mkGt(nCtx(), t1.getNativeObject(),
1103 t2.getNativeObject()));
1111 checkContextMatch(t1);
1112 checkContextMatch(t2);
1113 return new BoolExpr(
this, Native.mkGe(nCtx(), t1.getNativeObject(),
1114 t2.getNativeObject()));
1129 checkContextMatch(t);
1131 Native.mkInt2real(nCtx(), t.getNativeObject()));
1142 checkContextMatch(t);
1143 return new IntExpr(
this, Native.mkReal2int(nCtx(), t.getNativeObject()));
1151 checkContextMatch(t);
1152 return new BoolExpr(
this, Native.mkIsInt(nCtx(), t.getNativeObject()));
1161 checkContextMatch(arg);
1162 return (
ArithExpr<R>)
Expr.create(
this, Native.mkAbs(nCtx(), arg.getNativeObject()));
1171 checkContextMatch(t1);
1172 checkContextMatch(t2);
1173 return new BoolExpr(
this, Native.mkDivides(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
1183 checkContextMatch(t);
1184 return new BitVecExpr(
this, Native.mkBvnot(nCtx(), t.getNativeObject()));
1194 checkContextMatch(t);
1195 return new BitVecExpr(
this, Native.mkBvredand(nCtx(),
1196 t.getNativeObject()));
1206 checkContextMatch(t);
1207 return new BitVecExpr(
this, Native.mkBvredor(nCtx(),
1208 t.getNativeObject()));
1218 checkContextMatch(t1);
1219 checkContextMatch(t2);
1220 return new BitVecExpr(
this, Native.mkBvand(nCtx(),
1221 t1.getNativeObject(), t2.getNativeObject()));
1231 checkContextMatch(t1);
1232 checkContextMatch(t2);
1233 return new BitVecExpr(
this, Native.mkBvor(nCtx(), t1.getNativeObject(),
1234 t2.getNativeObject()));
1244 checkContextMatch(t1);
1245 checkContextMatch(t2);
1246 return new BitVecExpr(
this, Native.mkBvxor(nCtx(),
1247 t1.getNativeObject(), t2.getNativeObject()));
1257 checkContextMatch(t1);
1258 checkContextMatch(t2);
1259 return new BitVecExpr(
this, Native.mkBvnand(nCtx(),
1260 t1.getNativeObject(), t2.getNativeObject()));
1270 checkContextMatch(t1);
1271 checkContextMatch(t2);
1272 return new BitVecExpr(
this, Native.mkBvnor(nCtx(),
1273 t1.getNativeObject(), t2.getNativeObject()));
1283 checkContextMatch(t1);
1284 checkContextMatch(t2);
1285 return new BitVecExpr(
this, Native.mkBvxnor(nCtx(),
1286 t1.getNativeObject(), t2.getNativeObject()));
1296 checkContextMatch(t);
1297 return new BitVecExpr(
this, Native.mkBvneg(nCtx(), t.getNativeObject()));
1307 checkContextMatch(t1);
1308 checkContextMatch(t2);
1309 return new BitVecExpr(
this, Native.mkBvadd(nCtx(),
1310 t1.getNativeObject(), t2.getNativeObject()));
1320 checkContextMatch(t1);
1321 checkContextMatch(t2);
1322 return new BitVecExpr(
this, Native.mkBvsub(nCtx(),
1323 t1.getNativeObject(), t2.getNativeObject()));
1333 checkContextMatch(t1);
1334 checkContextMatch(t2);
1335 return new BitVecExpr(
this, Native.mkBvmul(nCtx(),
1336 t1.getNativeObject(), t2.getNativeObject()));
1348 checkContextMatch(t1);
1349 checkContextMatch(t2);
1350 return new BitVecExpr(
this, Native.mkBvudiv(nCtx(),
1351 t1.getNativeObject(), t2.getNativeObject()));
1369 checkContextMatch(t1);
1370 checkContextMatch(t2);
1371 return new BitVecExpr(
this, Native.mkBvsdiv(nCtx(),
1372 t1.getNativeObject(), t2.getNativeObject()));
1384 checkContextMatch(t1);
1385 checkContextMatch(t2);
1386 return new BitVecExpr(
this, Native.mkBvurem(nCtx(),
1387 t1.getNativeObject(), t2.getNativeObject()));
1402 checkContextMatch(t1);
1403 checkContextMatch(t2);
1404 return new BitVecExpr(
this, Native.mkBvsrem(nCtx(),
1405 t1.getNativeObject(), t2.getNativeObject()));
1416 checkContextMatch(t1);
1417 checkContextMatch(t2);
1418 return new BitVecExpr(
this, Native.mkBvsmod(nCtx(),
1419 t1.getNativeObject(), t2.getNativeObject()));
1429 checkContextMatch(t1);
1430 checkContextMatch(t2);
1431 return new BoolExpr(
this, Native.mkBvult(nCtx(), t1.getNativeObject(),
1432 t2.getNativeObject()));
1442 checkContextMatch(t1);
1443 checkContextMatch(t2);
1444 return new BoolExpr(
this, Native.mkBvslt(nCtx(), t1.getNativeObject(),
1445 t2.getNativeObject()));
1455 checkContextMatch(t1);
1456 checkContextMatch(t2);
1457 return new BoolExpr(
this, Native.mkBvule(nCtx(), t1.getNativeObject(),
1458 t2.getNativeObject()));
1468 checkContextMatch(t1);
1469 checkContextMatch(t2);
1470 return new BoolExpr(
this, Native.mkBvsle(nCtx(), t1.getNativeObject(),
1471 t2.getNativeObject()));
1481 checkContextMatch(t1);
1482 checkContextMatch(t2);
1483 return new BoolExpr(
this, Native.mkBvuge(nCtx(), t1.getNativeObject(),
1484 t2.getNativeObject()));
1494 checkContextMatch(t1);
1495 checkContextMatch(t2);
1496 return new BoolExpr(
this, Native.mkBvsge(nCtx(), t1.getNativeObject(),
1497 t2.getNativeObject()));
1507 checkContextMatch(t1);
1508 checkContextMatch(t2);
1509 return new BoolExpr(
this, Native.mkBvugt(nCtx(), t1.getNativeObject(),
1510 t2.getNativeObject()));
1520 checkContextMatch(t1);
1521 checkContextMatch(t2);
1522 return new BoolExpr(
this, Native.mkBvsgt(nCtx(), t1.getNativeObject(),
1523 t2.getNativeObject()));
1538 checkContextMatch(t1);
1539 checkContextMatch(t2);
1540 return new BitVecExpr(
this, Native.mkConcat(nCtx(),
1541 t1.getNativeObject(), t2.getNativeObject()));
1555 checkContextMatch(t);
1556 return new BitVecExpr(
this, Native.mkExtract(nCtx(), high, low,
1557 t.getNativeObject()));
1569 checkContextMatch(t);
1570 return new BitVecExpr(
this, Native.mkSignExt(nCtx(), i,
1571 t.getNativeObject()));
1583 checkContextMatch(t);
1584 return new BitVecExpr(
this, Native.mkZeroExt(nCtx(), i,
1585 t.getNativeObject()));
1595 checkContextMatch(t);
1596 return new BitVecExpr(
this, Native.mkRepeat(nCtx(), i,
1597 t.getNativeObject()));
1613 checkContextMatch(t1);
1614 checkContextMatch(t2);
1615 return new BitVecExpr(
this, Native.mkBvshl(nCtx(),
1616 t1.getNativeObject(), t2.getNativeObject()));
1632 checkContextMatch(t1);
1633 checkContextMatch(t2);
1634 return new BitVecExpr(
this, Native.mkBvlshr(nCtx(),
1635 t1.getNativeObject(), t2.getNativeObject()));
1652 checkContextMatch(t1);
1653 checkContextMatch(t2);
1654 return new BitVecExpr(
this, Native.mkBvashr(nCtx(),
1655 t1.getNativeObject(), t2.getNativeObject()));
1665 checkContextMatch(t);
1666 return new BitVecExpr(
this, Native.mkRotateLeft(nCtx(), i,
1667 t.getNativeObject()));
1677 checkContextMatch(t);
1678 return new BitVecExpr(
this, Native.mkRotateRight(nCtx(), i,
1679 t.getNativeObject()));
1691 checkContextMatch(t1);
1692 checkContextMatch(t2);
1693 return new BitVecExpr(
this, Native.mkExtRotateLeft(nCtx(),
1694 t1.getNativeObject(), t2.getNativeObject()));
1706 checkContextMatch(t1);
1707 checkContextMatch(t2);
1708 return new BitVecExpr(
this, Native.mkExtRotateRight(nCtx(),
1709 t1.getNativeObject(), t2.getNativeObject()));
1723 checkContextMatch(t);
1724 return new BitVecExpr(
this, Native.mkInt2bv(nCtx(), n,
1725 t.getNativeObject()));
1744 checkContextMatch(t);
1745 return new IntExpr(
this, Native.mkBv2int(nCtx(), t.getNativeObject(),
1757 checkContextMatch(t1);
1758 checkContextMatch(t2);
1759 return new BoolExpr(
this, Native.mkBvaddNoOverflow(nCtx(), t1
1760 .getNativeObject(), t2.getNativeObject(), (isSigned)));
1771 checkContextMatch(t1);
1772 checkContextMatch(t2);
1773 return new BoolExpr(
this, Native.mkBvaddNoUnderflow(nCtx(),
1774 t1.getNativeObject(), t2.getNativeObject()));
1785 checkContextMatch(t1);
1786 checkContextMatch(t2);
1787 return new BoolExpr(
this, Native.mkBvsubNoOverflow(nCtx(),
1788 t1.getNativeObject(), t2.getNativeObject()));
1799 checkContextMatch(t1);
1800 checkContextMatch(t2);
1801 return new BoolExpr(
this, Native.mkBvsubNoUnderflow(nCtx(), t1
1802 .getNativeObject(), t2.getNativeObject(), (isSigned)));
1813 checkContextMatch(t1);
1814 checkContextMatch(t2);
1815 return new BoolExpr(
this, Native.mkBvsdivNoOverflow(nCtx(),
1816 t1.getNativeObject(), t2.getNativeObject()));
1826 checkContextMatch(t);
1827 return new BoolExpr(
this, Native.mkBvnegNoOverflow(nCtx(),
1828 t.getNativeObject()));
1839 checkContextMatch(t1);
1840 checkContextMatch(t2);
1841 return new BoolExpr(
this, Native.mkBvmulNoOverflow(nCtx(), t1
1842 .getNativeObject(), t2.getNativeObject(), (isSigned)));
1853 checkContextMatch(t1);
1854 checkContextMatch(t2);
1855 return new BoolExpr(
this, Native.mkBvmulNoUnderflow(nCtx(),
1856 t1.getNativeObject(), t2.getNativeObject()));
1874 return (
ArrayExpr<D, R>) mkConst(mkSymbol(name), mkArraySort(domain, range));
1891 checkContextMatch(a);
1892 checkContextMatch(i);
1895 Native.mkSelect(nCtx(), a.getNativeObject(),
1896 i.getNativeObject()));
1913 checkContextMatch(a);
1914 checkContextMatch(args);
1917 Native.mkSelectN(nCtx(), a.getNativeObject(), args.length,
AST.
arrayToNative(args)));
1938 checkContextMatch(a);
1939 checkContextMatch(i);
1940 checkContextMatch(v);
1941 return new ArrayExpr<>(
this, Native.mkStore(nCtx(), a.getNativeObject(),
1942 i.getNativeObject(), v.getNativeObject()));
1963 checkContextMatch(a);
1964 checkContextMatch(args);
1965 checkContextMatch(v);
1966 return new ArrayExpr<>(
this, Native.mkStoreN(nCtx(), a.getNativeObject(),
1981 checkContextMatch(domain);
1982 checkContextMatch(v);
1983 return new ArrayExpr<>(
this, Native.mkConstArray(nCtx(),
1984 domain.getNativeObject(), v.getNativeObject()));
2003 checkContextMatch(f);
2004 checkContextMatch(args);
2018 checkContextMatch(array);
2020 Native.mkArrayDefault(nCtx(), array.getNativeObject()));
2032 checkContextMatch(f);
2033 return (
ArrayExpr<D, R>)
Expr.create(
this, Native.mkAsArray(nCtx(), f.getNativeObject()));
2041 checkContextMatch(arg1);
2042 checkContextMatch(arg2);
2043 return (
Expr<D>)
Expr.create(
this, Native.mkArrayExt(nCtx(), arg1.getNativeObject(), arg2.getNativeObject()));
2052 checkContextMatch(ty);
2061 checkContextMatch(domain);
2063 Native.mkEmptySet(nCtx(), domain.getNativeObject()));
2071 checkContextMatch(domain);
2073 Native.mkFullSet(nCtx(), domain.getNativeObject()));
2081 checkContextMatch(
set);
2082 checkContextMatch(element);
2084 Native.mkSetAdd(nCtx(),
set.getNativeObject(),
2085 element.getNativeObject()));
2093 checkContextMatch(
set);
2094 checkContextMatch(element);
2096 Native.mkSetDel(nCtx(),
set.getNativeObject(),
2097 element.getNativeObject()));
2106 checkContextMatch(args);
2108 Native.mkSetUnion(nCtx(), args.length,
2118 checkContextMatch(args);
2120 Native.mkSetIntersect(nCtx(), args.length,
2129 checkContextMatch(arg1);
2130 checkContextMatch(arg2);
2132 Native.mkSetDifference(nCtx(), arg1.getNativeObject(),
2133 arg2.getNativeObject()));
2141 checkContextMatch(arg);
2143 Native.mkSetComplement(nCtx(), arg.getNativeObject()));
2151 checkContextMatch(elem);
2152 checkContextMatch(
set);
2154 Native.mkSetMember(nCtx(), elem.getNativeObject(),
2155 set.getNativeObject()));
2163 checkContextMatch(arg1);
2164 checkContextMatch(arg2);
2166 Native.mkSetSubset(nCtx(), arg1.getNativeObject(),
2167 arg2.getNativeObject()));
2180 checkContextMatch(elemSort);
2189 checkContextMatch(s);
2190 return Native.isFiniteSetSort(nCtx(), s.getNativeObject());
2198 checkContextMatch(s);
2199 return Sort.create(
this, Native.getFiniteSetSortBasis(nCtx(), s.getNativeObject()));
2207 checkContextMatch(setSort);
2208 return Expr.create(
this, Native.mkFiniteSetEmpty(nCtx(), setSort.getNativeObject()));
2216 checkContextMatch(elem);
2217 return Expr.create(
this, Native.mkFiniteSetSingleton(nCtx(), elem.getNativeObject()));
2225 checkContextMatch(s1);
2226 checkContextMatch(s2);
2227 return Expr.create(
this, Native.mkFiniteSetUnion(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2235 checkContextMatch(s1);
2236 checkContextMatch(s2);
2237 return Expr.create(
this, Native.mkFiniteSetIntersect(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2245 checkContextMatch(s1);
2246 checkContextMatch(s2);
2247 return Expr.create(
this, Native.mkFiniteSetDifference(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2255 checkContextMatch(elem);
2256 checkContextMatch(
set);
2257 return (
BoolExpr)
Expr.create(
this, Native.mkFiniteSetMember(nCtx(), elem.getNativeObject(),
set.getNativeObject()));
2265 checkContextMatch(
set);
2266 return Expr.create(
this, Native.mkFiniteSetSize(nCtx(),
set.getNativeObject()));
2274 checkContextMatch(s1);
2275 checkContextMatch(s2);
2276 return (
BoolExpr)
Expr.create(
this, Native.mkFiniteSetSubset(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2284 checkContextMatch(f);
2285 checkContextMatch(
set);
2286 return Expr.create(
this, Native.mkFiniteSetMap(nCtx(), f.getNativeObject(),
set.getNativeObject()));
2294 checkContextMatch(f);
2295 checkContextMatch(
set);
2296 return Expr.create(
this, Native.mkFiniteSetFilter(nCtx(), f.getNativeObject(),
set.getNativeObject()));
2304 checkContextMatch(low);
2305 checkContextMatch(high);
2306 return Expr.create(
this, Native.mkFiniteSetRange(nCtx(), low.getNativeObject(), high.getNativeObject()));
2319 checkContextMatch(s);
2320 return (
SeqExpr<R>)
Expr.create(
this, Native.mkSeqEmpty(nCtx(), s.getNativeObject()));
2328 checkContextMatch(elem);
2329 return (
SeqExpr<R>)
Expr.create(
this, Native.mkSeqUnit(nCtx(), elem.getNativeObject()));
2337 StringBuilder buf =
new StringBuilder();
2338 for (
int i = 0; i < s.length(); i += Character.charCount(s.codePointAt(i))) {
2339 int code = s.codePointAt(i);
2340 if (code <= 32 || 127 < code)
2341 buf.append(String.format(
"\\u{%x}", code));
2343 buf.append(s.charAt(i));
2377 return (
IntExpr)
Expr.create(
this, Native.mkStrToInt(nCtx(), e.getNativeObject()));
2386 checkContextMatch(t);
2396 checkContextMatch(s);
2397 return (
IntExpr)
Expr.create(
this, Native.mkSeqLength(nCtx(), s.getNativeObject()));
2405 checkContextMatch(s, n);
2406 return (
SeqExpr<R>)
Expr.create(
this, Native.mkSeqPower(nCtx(), s.getNativeObject(), n.getNativeObject()));
2414 checkContextMatch(s1, s2);
2415 return (
BoolExpr)
Expr.create(
this, Native.mkSeqPrefix(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2423 checkContextMatch(s1, s2);
2424 return (
BoolExpr)
Expr.create(
this, Native.mkSeqSuffix(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2432 checkContextMatch(s1, s2);
2433 return (
BoolExpr)
Expr.create(
this, Native.mkSeqContains(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2442 checkContextMatch(s1, s2);
2443 return new BoolExpr(
this, Native.mkStrLt(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2451 checkContextMatch(s1, s2);
2452 return new BoolExpr(
this, Native.mkStrLe(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
2461 checkContextMatch(s, index);
2462 return (
SeqExpr<R>)
Expr.create(
this, Native.mkSeqAt(nCtx(), s.getNativeObject(), index.getNativeObject()));
2470 checkContextMatch(s, index);
2471 return (
Expr<R>)
Expr.create(
this, Native.mkSeqNth(nCtx(), s.getNativeObject(), index.getNativeObject()));
2480 checkContextMatch(s, offset, length);
2481 return (
SeqExpr<R>)
Expr.create(
this, Native.mkSeqExtract(nCtx(), s.getNativeObject(), offset.getNativeObject(), length.getNativeObject()));
2489 checkContextMatch(s, substr, offset);
2490 return (
IntExpr)
Expr.create(
this, Native.mkSeqIndex(nCtx(), s.getNativeObject(), substr.getNativeObject(), offset.getNativeObject()));
2498 checkContextMatch(s, substr);
2499 return (
IntExpr)
Expr.create(
this, Native.mkSeqLastIndex(nCtx(), s.getNativeObject(), substr.getNativeObject()));
2508 checkContextMatch(f, s);
2509 return (
SeqExpr<R>)
Expr.create(
this, Native.mkSeqMap(nCtx(), f.getNativeObject(), s.getNativeObject()));
2518 checkContextMatch(f, i, s);
2519 return (
SeqExpr<R>)
Expr.create(
this, Native.mkSeqMapi(nCtx(), f.getNativeObject(), i.getNativeObject(), s.getNativeObject()));
2528 checkContextMatch(f, a, s);
2529 return (
Expr<A>)
Expr.create(
this, Native.mkSeqFoldl(nCtx(), f.getNativeObject(), a.getNativeObject(), s.getNativeObject()));
2538 checkContextMatch(f, i, a, s);
2539 return (
Expr<A>)
Expr.create(
this, Native.mkSeqFoldli(nCtx(), f.getNativeObject(), i.getNativeObject(), a.getNativeObject(), s.getNativeObject()));
2547 checkContextMatch(s, src, dst);
2548 return (
SeqExpr<R>)
Expr.create(
this, Native.mkSeqReplace(nCtx(), s.getNativeObject(), src.getNativeObject(), dst.getNativeObject()));
2556 checkContextMatch(s, src, dst);
2557 return (
SeqExpr<R>)
Expr.create(
this, Native.mkSeqReplaceAll(nCtx(), s.getNativeObject(), src.getNativeObject(), dst.getNativeObject()));
2565 checkContextMatch(s, re, dst);
2566 return (
SeqExpr<R>)
Expr.create(
this, Native.mkSeqReplaceRe(nCtx(), s.getNativeObject(), re.getNativeObject(), dst.getNativeObject()));
2574 checkContextMatch(s, re, dst);
2575 return (
SeqExpr<R>)
Expr.create(
this, Native.mkSeqReplaceReAll(nCtx(), s.getNativeObject(), re.getNativeObject(), dst.getNativeObject()));
2583 checkContextMatch(s);
2593 checkContextMatch(s, re);
2594 return (
BoolExpr)
Expr.create(
this, Native.mkSeqInRe(nCtx(), s.getNativeObject(), re.getNativeObject()));
2602 checkContextMatch(re);
2603 return (
ReExpr<R>)
Expr.create(
this, Native.mkReStar(nCtx(), re.getNativeObject()));
2611 return (
ReExpr<R>)
Expr.create(
this, Native.mkRePower(nCtx(), re.getNativeObject(), n));
2619 return (
ReExpr<R>)
Expr.create(
this, Native.mkReLoop(nCtx(), re.getNativeObject(), lo, hi));
2627 return (
ReExpr<R>)
Expr.create(
this, Native.mkReLoop(nCtx(), re.getNativeObject(), lo, 0));
2636 checkContextMatch(re);
2637 return (
ReExpr<R>)
Expr.create(
this, Native.mkRePlus(nCtx(), re.getNativeObject()));
2645 checkContextMatch(re);
2646 return (
ReExpr<R>)
Expr.create(
this, Native.mkReOption(nCtx(), re.getNativeObject()));
2654 checkContextMatch(re);
2655 return (
ReExpr<R>)
Expr.create(
this, Native.mkReComplement(nCtx(), re.getNativeObject()));
2664 checkContextMatch(t);
2674 checkContextMatch(t);
2684 checkContextMatch(t);
2693 checkContextMatch(a, b);
2694 return (
ReExpr<R>)
Expr.create(
this, Native.mkReDiff(nCtx(), a.getNativeObject(), b.getNativeObject()));
2704 return (
ReExpr<R>)
Expr.create(
this, Native.mkReEmpty(nCtx(), s.getNativeObject()));
2713 return (
ReExpr<R>)
Expr.create(
this, Native.mkReFull(nCtx(), s.getNativeObject()));
2723 return (
ReExpr<R>)
Expr.create(
this, Native.mkReAllchar(nCtx(), s.getNativeObject()));
2731 checkContextMatch(lo, hi);
2740 checkContextMatch(ch1, ch2);
2741 return (
BoolExpr)
Expr.create(
this, Native.mkCharLe(nCtx(), ch1.getNativeObject(), ch2.getNativeObject()));
2749 checkContextMatch(ch);
2750 return (
IntExpr)
Expr.create(
this, Native.mkCharToInt(nCtx(), ch.getNativeObject()));
2758 checkContextMatch(ch);
2759 return (
BitVecExpr)
Expr.create(
this, Native.mkCharToBv(nCtx(), ch.getNativeObject()));
2767 checkContextMatch(bv);
2768 return (
Expr<CharSort>)
Expr.create(
this, Native.mkCharFromBv(nCtx(), bv.getNativeObject()));
2776 checkContextMatch(ch);
2777 return (
BoolExpr)
Expr.create(
this, Native.mkCharIsDigit(nCtx(), ch.getNativeObject()));
2785 checkContextMatch(args);
2794 checkContextMatch(args);
2803 checkContextMatch(args);
2812 checkContextMatch(args);
2821 checkContextMatch(args);
2838 checkContextMatch(ty);
2840 Native.mkNumeral(nCtx(), v, ty.getNativeObject()));
2855 checkContextMatch(ty);
2856 return (
Expr<R>)
Expr.create(
this, Native.mkInt(nCtx(), v, ty.getNativeObject()));
2871 checkContextMatch(ty);
2873 Native.mkInt64(nCtx(), v, ty.getNativeObject()));
2891 return new RatNum(
this, Native.mkReal(nCtx(), num, den));
2903 return new RatNum(
this, Native.mkNumeral(nCtx(), v, getRealSort()
2904 .getNativeObject()));
2916 return new RatNum(
this, Native.mkInt(nCtx(), v, getRealSort()
2917 .getNativeObject()));
2929 return new RatNum(
this, Native.mkInt64(nCtx(), v, getRealSort()
2930 .getNativeObject()));
2940 return new IntNum(
this, Native.mkNumeral(nCtx(), v, getIntSort()
2941 .getNativeObject()));
2953 return new IntNum(
this, Native.mkInt(nCtx(), v, getIntSort()
2954 .getNativeObject()));
2966 return new IntNum(
this, Native.mkInt64(nCtx(), v, getIntSort()
2967 .getNativeObject()));
2977 return (
BitVecNum) mkNumeral(v, mkBitVecSort(size));
2987 return (
BitVecNum) mkNumeral(v, mkBitVecSort(size));
2997 return (
BitVecNum) mkNumeral(v, mkBitVecSort(size));
3029 return Quantifier.
of(
this,
true, sorts, names, body, weight, patterns,
3030 noPatterns, quantifierID, skolemID);
3042 return Quantifier.
of(
this,
true, boundConstants, body, weight,
3043 patterns, noPatterns, quantifierID, skolemID);
3055 return Quantifier.
of(
this,
false, sorts, names, body, weight,
3056 patterns, noPatterns, quantifierID, skolemID);
3068 return Quantifier.
of(
this,
false, boundConstants, body, weight,
3069 patterns, noPatterns, quantifierID, skolemID);
3083 return mkForall(sorts, names, body, weight, patterns, noPatterns,
3084 quantifierID, skolemID);
3086 return mkExists(sorts, names, body, weight, patterns, noPatterns,
3087 quantifierID, skolemID);
3100 return mkForall(boundConstants, body, weight, patterns, noPatterns,
3101 quantifierID, skolemID);
3103 return mkExists(boundConstants, body, weight, patterns, noPatterns,
3104 quantifierID, skolemID);
3126 return Lambda.
of(
this, sorts, names, body);
3137 return Lambda.
of(
this, boundConstants, body);
3157 Native.setAstPrintMode(nCtx(), value.toInt());
3178 return Native.benchmarkToSmtlibString(nCtx(), name, logic, status,
3179 attributes, assumptions.length,
3199 if (csn != cs || cdn != cd) {
3220 if (csn != cs || cdn != cd)
3240 public Goal mkGoal(
boolean models,
boolean unsatCores,
boolean proofs)
3242 return new Goal(
this, models, unsatCores, proofs);
3258 return Native.getNumTactics(nCtx());
3267 int n = getNumTactics();
3268 String[] res =
new String[n];
3269 for (
int i = 0; i < n; i++)
3270 res[i] = Native.getTacticName(nCtx(), i);
3280 return Native.tacticGetDescr(nCtx(), name);
3288 return new Tactic(
this, name);
3298 checkContextMatch(t1);
3299 checkContextMatch(t2);
3300 checkContextMatch(ts);
3303 if (ts !=
null && ts.length > 0)
3305 last = ts[ts.length - 1].getNativeObject();
3306 for (
int i = ts.length - 2; i >= 0; i--) {
3307 last = Native.tacticAndThen(nCtx(), ts[i].getNativeObject(),
3313 last = Native.tacticAndThen(nCtx(), t2.getNativeObject(), last);
3314 return new Tactic(
this, Native.tacticAndThen(nCtx(),
3315 t1.getNativeObject(), last));
3317 return new Tactic(
this, Native.tacticAndThen(nCtx(),
3318 t1.getNativeObject(), t2.getNativeObject()));
3329 return andThen(t1, t2, ts);
3339 checkContextMatch(t1);
3340 checkContextMatch(t2);
3341 return new Tactic(
this, Native.tacticOrElse(nCtx(),
3342 t1.getNativeObject(), t2.getNativeObject()));
3353 checkContextMatch(t);
3354 return new Tactic(
this, Native.tacticTryFor(nCtx(),
3355 t.getNativeObject(), ms));
3366 checkContextMatch(t);
3367 checkContextMatch(p);
3368 return new Tactic(
this, Native.tacticWhen(nCtx(), p.getNativeObject(),
3369 t.getNativeObject()));
3379 checkContextMatch(p);
3380 checkContextMatch(t1);
3381 checkContextMatch(t2);
3382 return new Tactic(
this, Native.tacticCond(nCtx(), p.getNativeObject(),
3383 t1.getNativeObject(), t2.getNativeObject()));
3392 checkContextMatch(t);
3393 return new Tactic(
this, Native.tacticRepeat(nCtx(),
3394 t.getNativeObject(), max));
3402 return new Tactic(
this, Native.tacticSkip(nCtx()));
3410 return new Tactic(
this, Native.tacticFail(nCtx()));
3419 checkContextMatch(p);
3421 Native.tacticFailIf(nCtx(), p.getNativeObject()));
3430 return new Tactic(
this, Native.tacticFailIfNotDecided(nCtx()));
3439 checkContextMatch(t);
3440 checkContextMatch(p);
3441 return new Tactic(
this, Native.tacticUsingParams(nCtx(),
3442 t.getNativeObject(), p.getNativeObject()));
3453 return usingParams(t, p);
3461 checkContextMatch(t);
3462 return new Tactic(
this, Native.tacticParOr(nCtx(),
3472 checkContextMatch(t1);
3473 checkContextMatch(t2);
3474 return new Tactic(
this, Native.tacticParAndThen(nCtx(),
3475 t1.getNativeObject(), t2.getNativeObject()));
3485 Native.interrupt(nCtx());
3502 checkContextMatch(vars);
3503 checkContextMatch(body);
3504 return Expr.create(
this, Native.qeLite(nCtx(), vars.getNativeObject(),
3505 body.getNativeObject()));
3513 checkContextMatch(model);
3514 checkContextMatch(bounds);
3515 checkContextMatch(body);
3516 return Expr.create(
this, Native.qeModelProject(nCtx(), model.getNativeObject(),
3526 checkContextMatch(model);
3527 checkContextMatch(bounds);
3528 checkContextMatch(body);
3529 checkContextMatch(map);
3530 return Expr.create(
this, Native.qeModelProjectSkolem(nCtx(),
3532 body.getNativeObject(), map.getNativeObject()));
3541 checkContextMatch(model);
3542 checkContextMatch(bounds);
3543 checkContextMatch(body);
3544 checkContextMatch(map);
3545 return Expr.create(
this, Native.qeModelProjectWithWitness(nCtx(),
3547 body.getNativeObject(), map.getNativeObject()));
3555 return Native.getNumSimplifiers(nCtx());
3564 int n = getNumSimplifiers();
3565 String[] res =
new String[n];
3566 for (
int i = 0; i < n; i++)
3567 res[i] = Native.getSimplifierName(nCtx(), i);
3577 return Native.simplifierGetDescr(nCtx(), name);
3594 checkContextMatch(t1);
3595 checkContextMatch(t2);
3596 checkContextMatch(ts);
3599 if (ts !=
null && ts.length > 0)
3601 last = ts[ts.length - 1].getNativeObject();
3602 for (
int i = ts.length - 2; i >= 0; i--) {
3603 last = Native.simplifierAndThen(nCtx(), ts[i].getNativeObject(),
3609 last = Native.simplifierAndThen(nCtx(), t2.getNativeObject(), last);
3610 return new Simplifier(
this, Native.simplifierAndThen(nCtx(),
3611 t1.getNativeObject(), last));
3613 return new Simplifier(
this, Native.simplifierAndThen(nCtx(),
3614 t1.getNativeObject(), t2.getNativeObject()));
3624 return andThen(t1, t2, ts);
3633 checkContextMatch(t);
3634 checkContextMatch(p);
3635 return new Simplifier(
this, Native.simplifierUsingParams(nCtx(),
3636 t.getNativeObject(), p.getNativeObject()));
3647 return usingParams(t, p);
3655 return Native.getNumProbes(nCtx());
3664 int n = getNumProbes();
3665 String[] res =
new String[n];
3666 for (
int i = 0; i < n; i++)
3667 res[i] = Native.getProbeName(nCtx(), i);
3677 return Native.probeGetDescr(nCtx(), name);
3685 return new Probe(
this, name);
3693 return new Probe(
this, Native.probeConst(nCtx(), val));
3702 checkContextMatch(p1);
3703 checkContextMatch(p2);
3704 return new Probe(
this, Native.probeLt(nCtx(), p1.getNativeObject(),
3705 p2.getNativeObject()));
3714 checkContextMatch(p1);
3715 checkContextMatch(p2);
3716 return new Probe(
this, Native.probeGt(nCtx(), p1.getNativeObject(),
3717 p2.getNativeObject()));
3727 checkContextMatch(p1);
3728 checkContextMatch(p2);
3729 return new Probe(
this, Native.probeLe(nCtx(), p1.getNativeObject(),
3730 p2.getNativeObject()));
3740 checkContextMatch(p1);
3741 checkContextMatch(p2);
3742 return new Probe(
this, Native.probeGe(nCtx(), p1.getNativeObject(),
3743 p2.getNativeObject()));
3752 checkContextMatch(p1);
3753 checkContextMatch(p2);
3754 return new Probe(
this, Native.probeEq(nCtx(), p1.getNativeObject(),
3755 p2.getNativeObject()));
3763 checkContextMatch(p1);
3764 checkContextMatch(p2);
3765 return new Probe(
this, Native.probeAnd(nCtx(), p1.getNativeObject(),
3766 p2.getNativeObject()));
3774 checkContextMatch(p1);
3775 checkContextMatch(p2);
3776 return new Probe(
this, Native.probeOr(nCtx(), p1.getNativeObject(),
3777 p2.getNativeObject()));
3785 checkContextMatch(p);
3786 return new Probe(
this, Native.probeNot(nCtx(), p.getNativeObject()));
3798 return mkSolver((
Symbol)
null);
3812 return new Solver(
this, Native.mkSolver(nCtx()));
3814 return new Solver(
this, Native.mkSolverForLogic(nCtx(),
3815 logic.getNativeObject()));
3824 return mkSolver(mkSymbol(logic));
3832 return new Solver(
this, Native.mkSimpleSolver(nCtx()));
3844 return new Solver(
this, Native.mkSolverFromTactic(nCtx(),
3845 t.getNativeObject()));
3853 return new Solver(
this, Native.solverAddSimplifier(nCtx(), s.getNativeObject(), simp.getNativeObject()));
3888 return new FPRMExpr(
this, Native.mkFpaRoundNearestTiesToEven(nCtx()));
3897 return new FPRMNum(
this, Native.mkFpaRne(nCtx()));
3906 return new FPRMNum(
this, Native.mkFpaRoundNearestTiesToAway(nCtx()));
3915 return new FPRMNum(
this, Native.mkFpaRna(nCtx()));
3924 return new FPRMNum(
this, Native.mkFpaRoundTowardPositive(nCtx()));
3933 return new FPRMNum(
this, Native.mkFpaRtp(nCtx()));
3942 return new FPRMNum(
this, Native.mkFpaRoundTowardNegative(nCtx()));
3951 return new FPRMNum(
this, Native.mkFpaRtn(nCtx()));
3960 return new FPRMNum(
this, Native.mkFpaRoundTowardZero(nCtx()));
3969 return new FPRMNum(
this, Native.mkFpaRtz(nCtx()));
3980 return new FPSort(
this, ebits, sbits);
3989 return new FPSort(
this, Native.mkFpaSortHalf(nCtx()));
3998 return new FPSort(
this, Native.mkFpaSort16(nCtx()));
4007 return new FPSort(
this, Native.mkFpaSortSingle(nCtx()));
4016 return new FPSort(
this, Native.mkFpaSort32(nCtx()));
4025 return new FPSort(
this, Native.mkFpaSortDouble(nCtx()));
4034 return new FPSort(
this, Native.mkFpaSort64(nCtx()));
4043 return new FPSort(
this, Native.mkFpaSortQuadruple(nCtx()));
4052 return new FPSort(
this, Native.mkFpaSort128(nCtx()));
4063 return new FPNum(
this, Native.mkFpaNan(nCtx(), s.getNativeObject()));
4074 return new FPNum(
this, Native.mkFpaInf(nCtx(), s.getNativeObject(), negative));
4085 return new FPNum(
this, Native.mkFpaZero(nCtx(), s.getNativeObject(), negative));
4096 return new FPNum(
this, Native.mkFpaNumeralFloat(nCtx(), v, s.getNativeObject()));
4107 return new FPNum(
this, Native.mkFpaNumeralDouble(nCtx(), v, s.getNativeObject()));
4118 return new FPNum(
this, Native.mkFpaNumeralInt(nCtx(), v, s.getNativeObject()));
4131 return new FPNum(
this, Native.mkFpaNumeralIntUint(nCtx(), sgn, exp, sig, s.getNativeObject()));
4144 return new FPNum(
this, Native.mkFpaNumeralInt64Uint64(nCtx(), sgn, exp, sig, s.getNativeObject()));
4155 return mkFPNumeral(v, s);
4166 return mkFPNumeral(v, s);
4178 return mkFPNumeral(v, s);
4191 return mkFPNumeral(sgn, exp, sig, s);
4204 return mkFPNumeral(sgn, exp, sig, s);
4215 return new FPExpr(
this, Native.mkFpaAbs(nCtx(), t.getNativeObject()));
4225 return new FPExpr(
this, Native.mkFpaNeg(nCtx(), t.getNativeObject()));
4237 return new FPExpr(
this, Native.mkFpaAdd(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject()));
4249 return new FPExpr(
this, Native.mkFpaSub(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject()));
4261 return new FPExpr(
this, Native.mkFpaMul(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject()));
4273 return new FPExpr(
this, Native.mkFpaDiv(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject()));
4288 return new FPExpr(
this, Native.mkFpaFma(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject(), t3.getNativeObject()));
4299 return new FPExpr(
this, Native.mkFpaSqrt(nCtx(), rm.getNativeObject(), t.getNativeObject()));
4310 return new FPExpr(
this, Native.mkFpaRem(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
4322 return new FPExpr(
this, Native.mkFpaRoundToIntegral(nCtx(), rm.getNativeObject(), t.getNativeObject()));
4333 return new FPExpr(
this, Native.mkFpaMin(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
4344 return new FPExpr(
this, Native.mkFpaMax(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
4355 return new BoolExpr(
this, Native.mkFpaLeq(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
4366 return new BoolExpr(
this, Native.mkFpaLt(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
4377 return new BoolExpr(
this, Native.mkFpaGeq(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
4388 return new BoolExpr(
this, Native.mkFpaGt(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
4401 return new BoolExpr(
this, Native.mkFpaEq(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
4411 return new BoolExpr(
this, Native.mkFpaIsNormal(nCtx(), t.getNativeObject()));
4421 return new BoolExpr(
this, Native.mkFpaIsSubnormal(nCtx(), t.getNativeObject()));
4431 return new BoolExpr(
this, Native.mkFpaIsZero(nCtx(), t.getNativeObject()));
4441 return new BoolExpr(
this, Native.mkFpaIsInfinite(nCtx(), t.getNativeObject()));
4451 return new BoolExpr(
this, Native.mkFpaIsNan(nCtx(), t.getNativeObject()));
4461 return new BoolExpr(
this, Native.mkFpaIsNegative(nCtx(), t.getNativeObject()));
4471 return new BoolExpr(
this, Native.mkFpaIsPositive(nCtx(), t.getNativeObject()));
4489 return new FPExpr(
this, Native.mkFpaFp(nCtx(), sgn.getNativeObject(), sig.getNativeObject(), exp.getNativeObject()));
4505 return new FPExpr(
this, Native.mkFpaToFpBv(nCtx(), bv.getNativeObject(), s.getNativeObject()));
4521 return new FPExpr(
this, Native.mkFpaToFpFloat(nCtx(), rm.getNativeObject(), t.getNativeObject(), s.getNativeObject()));
4537 return new FPExpr(
this, Native.mkFpaToFpReal(nCtx(), rm.getNativeObject(), t.getNativeObject(), s.getNativeObject()));
4556 return new FPExpr(
this, Native.mkFpaToFpSigned(nCtx(), rm.getNativeObject(), t.getNativeObject(), s.getNativeObject()));
4558 return new FPExpr(
this, Native.mkFpaToFpUnsigned(nCtx(), rm.getNativeObject(), t.getNativeObject(), s.getNativeObject()));
4573 return new FPExpr(
this, Native.mkFpaToFpFloat(nCtx(), s.getNativeObject(), rm.getNativeObject(), t.getNativeObject()));
4591 return new BitVecExpr(
this, Native.mkFpaToSbv(nCtx(), rm.getNativeObject(), t.getNativeObject(), sz));
4593 return new BitVecExpr(
this, Native.mkFpaToUbv(nCtx(), rm.getNativeObject(), t.getNativeObject(), sz));
4607 return new RealExpr(
this, Native.mkFpaToReal(nCtx(), t.getNativeObject()));
4622 return new BitVecExpr(
this, Native.mkFpaToIeeeBv(nCtx(), t.getNativeObject()));
4640 return new BitVecExpr(
this, Native.mkFpaToFpIntReal(nCtx(), rm.getNativeObject(), exp.getNativeObject(), sig.getNativeObject(), s.getNativeObject()));
4651 Native.mkLinearOrder(
4653 sort.getNativeObject(),
4667 Native.mkPartialOrder(
4669 sort.getNativeObject(),
4683 Native.mkTransitiveClosure(
4698 Native.mkPiecewiseLinearOrder(
4700 sort.getNativeObject(),
4716 sort.getNativeObject(),
4732 Native.polynomialSubresultants(
4734 p.getNativeObject(),
4735 q.getNativeObject(),
4753 return AST.create(
this, nativeObject);
4770 return a.getNativeObject();
4779 return Native.simplifyGetHelp(nCtx());
4787 return new ParamDescrs(
this, Native.simplifyGetParamDescrs(nCtx()));
4800 Native.updateParamValue(nCtx(),
id, value);
4812 void checkContextMatch(
Z3Object other)
4814 if (
this != other.getContext())
4818 void checkContextMatch(Z3Object other1, Z3Object other2)
4820 checkContextMatch(other1);
4821 checkContextMatch(other2);
4824 void checkContextMatch(Z3Object other1, Z3Object other2, Z3Object other3)
4826 checkContextMatch(other1);
4827 checkContextMatch(other2);
4828 checkContextMatch(other3);
4831 void checkContextMatch(Z3Object other1, Z3Object other2, Z3Object other3, Z3Object other4)
4833 checkContextMatch(other1);
4834 checkContextMatch(other2);
4835 checkContextMatch(other3);
4836 checkContextMatch(other4);
4839 void checkContextMatch(Z3Object[] arr)
4842 for (Z3Object a : arr)
4843 checkContextMatch(a);
4846 private Z3ReferenceQueue m_RefQueue =
new Z3ReferenceQueue(
this);
4848 Z3ReferenceQueue getReferenceQueue() {
return m_RefQueue; }
4859 m_RefQueue.forceClear();
4864 m_stringSort =
null;
4867 synchronized (creation_lock) {
4868 Native.delContext(m_ctx);
BoolExpr[] ToBoolExprArray()
final< R extends Sort > FuncDecl< R > mkFuncDecl(String name, Sort[] domain, R range)
final ReExpr< SeqSort< CharSort > > mkRange(Expr< SeqSort< CharSort > > lo, Expr< SeqSort< CharSort > > hi)
Probe ge(Probe p1, Probe p2)
final< R extends Sort > ListSort< R > mkListSort(Symbol name, R elemSort)
final< D extends Sort > ArrayExpr< D, BoolSort > mkSetAdd(Expr< ArraySort< D, BoolSort > > set, Expr< D > element)
Solver mkSolver(String logic)
Tactic repeat(Tactic t, int max)
BitVecExpr mkBVXOR(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
final BoolExpr mkDistinct(Expr<?>... args)
BoolExpr MkStringLe(Expr< SeqSort< CharSort > > s1, Expr< SeqSort< CharSort > > s2)
final< F extends Sort, R extends Sort > Expr< R > mkUpdateField(FuncDecl< F > field, Expr< R > t, Expr< F > v)
String[] getSimplifierNames()
final< R extends Sort > SeqExpr< R > mkAt(Expr< SeqSort< R > > s, Expr< IntSort > index)
BitVecExpr mkBVUDiv(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
final< R extends Sort > Expr< R > mkNumeral(long v, R ty)
String getProbeDescription(String name)
FPNum mkFP(boolean sgn, long exp, long sig, FPSort s)
final< D extends Sort > ArrayExpr< D, BoolSort > mkSetIntersection(Expr< ArraySort< D, BoolSort > >... args)
BoolExpr mkFPIsPositive(Expr< FPSort > t)
BitVecExpr mkBVNOR(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
FPExpr mkFPToFP(Expr< FPRMSort > rm, Expr< BitVecSort > t, FPSort s, boolean signed)
FPRMExpr mkFPRoundNearestTiesToEven()
final Expr mkFiniteSetFilter(Expr f, Expr set)
Expr< CharSort > charFromBv(BitVecExpr bv)
IntExpr stringToInt(Expr< SeqSort< CharSort > > e)
final< R > EnumSort< R > mkEnumSort(Symbol name, Symbol... enumNames)
final< R extends Sort > Expr< R > mkFreshConst(String prefix, R range)
Fixedpoint mkFixedpoint()
Tactic usingParams(Tactic t, Params p)
Tactic parOr(Tactic... t)
BoolExpr mkBVULE(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
BoolExpr mkBVSubNoOverflow(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
final< R extends Sort > SeqExpr< R > mkReplaceReAll(Expr< SeqSort< R > > s, ReExpr< SeqSort< R > > re, Expr< SeqSort< R > > dst)
final< R extends Sort, A extends Sort > Expr< A > mkSeqFoldl(Expr<?> f, Expr< A > a, Expr< SeqSort< R > > s)
BoolExpr mkBVNegNoOverflow(Expr< BitVecSort > t)
final< R extends Sort > ReExpr< SeqSort< R > > mkToRe(Expr< SeqSort< R > > s)
final< D extends Sort > ArrayExpr< D, BoolSort > mkSetComplement(Expr< ArraySort< D, BoolSort > > arg)
final< D extends Sort, R extends Sort > Expr< R > mkSelect(Expr< ArraySort< D, R > > a, Expr< D > i)
Tactic then(Tactic t1, Tactic t2, Tactic... ts)
FPExpr mkFPMax(Expr< FPSort > t1, Expr< FPSort > t2)
final< R extends Sort > FuncDecl< BoolSort > mkPartialOrder(R sort, int index)
IntExpr mkBV2Int(Expr< BitVecSort > t, boolean signed)
final< R extends Sort > ReExpr< R > mkLoop(Expr< ReSort< R > > re, int lo)
final< R extends Sort > ReExpr< R > mkComplement(Expr< ReSort< R > > re)
FPSort mkFPSort(int ebits, int sbits)
final< R extends Sort > FuncDecl< R > mkFreshConstDecl(String prefix, R range)
Expr<?> qeLite(ASTVector vars, Expr<?> body)
BoolExpr mkBVSDivNoOverflow(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
Probe le(Probe p1, Probe p2)
SeqExpr< CharSort > mkString(String s)
final< R extends Sort > BoolExpr mkPrefixOf(Expr< SeqSort< R > > s1, Expr< SeqSort< R > > s2)
AST wrapAST(long nativeObject)
final< R extends Sort > SeqExpr< R > mkReplace(Expr< SeqSort< R > > s, Expr< SeqSort< R > > src, Expr< SeqSort< R > > dst)
UninterpretedSort mkUninterpretedSort(Symbol s)
BitVecExpr mkBVXNOR(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
BoolExpr mkImplies(Expr< BoolSort > t1, Expr< BoolSort > t2)
BoolExpr mkBVAddNoOverflow(Expr< BitVecSort > t1, Expr< BitVecSort > t2, boolean isSigned)
Simplifier mkSimplifier(String name)
BitVecExpr mkBVRotateRight(int i, Expr< BitVecSort > t)
RealExpr mkInt2Real(Expr< IntSort > t)
final< R extends Sort > Expr< R > mkITE(Expr< BoolSort > t1, Expr<? extends R > t2, Expr<? extends R > t3)
BitVecExpr mkBVLSHR(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
FPNum mkFPNumeral(boolean sgn, int exp, int sig, FPSort s)
FPNum mkFP(double v, FPSort s)
BoolExpr mkLe(Expr<? extends ArithSort > t1, Expr<? extends ArithSort > t2)
IntExpr mkReal2Int(Expr< RealSort > t)
final< D extends Sort > BoolExpr mkSetSubset(Expr< ArraySort< D, BoolSort > > arg1, Expr< ArraySort< D, BoolSort > > arg2)
FPNum mkFPInf(FPSort s, boolean negative)
FPExpr mkFPRoundToIntegral(Expr< FPRMSort > rm, Expr< FPSort > t)
BoolExpr mkAtLeast(Expr< BoolSort >[] args, int k)
BitVecExpr mkBVSMod(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
BitVecExpr mkInt2BV(int n, Expr< IntSort > t)
BoolExpr mkBVSGE(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
BitVecExpr mkBVConst(Symbol name, int size)
BitVecExpr mkExtract(int high, int low, Expr< BitVecSort > t)
FPRMNum mkFPRoundTowardZero()
BoolExpr mkFPGEq(Expr< FPSort > t1, Expr< FPSort > t2)
final< R extends Sort > SeqExpr< R > mkUnit(Expr< R > elem)
Probe or(Probe p1, Probe p2)
BitVecExpr mkBVURem(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
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 > ArrayExpr< D, R > mkConstArray(D domain, Expr< R > v)
TypeVarSort mkTypeVariable(String name)
Tactic cond(Probe p, Tactic t1, Tactic t2)
BoolExpr mkBVSGT(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
BitVecExpr mkBVConst(String name, int size)
final< R extends Sort > SeqSort< R > mkSeqSort(R s)
BoolExpr mkAtMost(Expr< BoolSort >[] args, int k)
final< R extends Sort > Expr< R > mkSelect(Expr< ArraySort< Sort, R > > a, Expr<?>[] args)
BoolExpr mkFPIsSubnormal(Expr< FPSort > t)
IntExpr mkMod(Expr< IntSort > t1, Expr< IntSort > t2)
FPExpr mkFPToFP(Expr< FPRMSort > rm, RealExpr t, FPSort s)
FPExpr mkFPSub(Expr< FPRMSort > rm, Expr< FPSort > t1, Expr< FPSort > t2)
final< R extends Sort > ReExpr< R > mkAllcharRe(ReSort< R > s)
SeqExpr< CharSort > intToString(Expr< IntSort > e)
BoolExpr mkBVMulNoOverflow(Expr< BitVecSort > t1, Expr< BitVecSort > t2, boolean isSigned)
FPExpr mkFPSqrt(Expr< FPRMSort > rm, Expr< FPSort > t)
FPNum mkFPNumeral(int v, FPSort s)
final< R extends Sort > SeqExpr< R > mkSeqMap(Expr<?> f, Expr< SeqSort< R > > s)
final< R extends Sort > Expr< R > mkConst(String name, R range)
FPExpr mkFPMul(Expr< FPRMSort > rm, Expr< FPSort > t1, Expr< FPSort > t2)
final< R extends Sort > ReExpr< R > mkStar(Expr< ReSort< R > > re)
BitVecExpr mkConcat(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
BitVecExpr mkSignExt(int i, Expr< BitVecSort > t)
BitVecExpr mkBVAdd(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
FPNum mkFP(boolean sgn, int exp, int sig, FPSort s)
final< R extends Sort > FuncDecl< R > mkFreshFuncDecl(String prefix, Sort[] domain, R range)
final< R extends Sort > Expr< R > mkBound(int index, R ty)
final< R extends Sort > SeqExpr< R > mkReplaceAll(Expr< SeqSort< R > > s, Expr< SeqSort< R > > src, Expr< SeqSort< R > > dst)
void updateParamValue(String id, String value)
BitVecExpr mkZeroExt(int i, Expr< BitVecSort > t)
final< R extends Sort > SeqExpr< R > mkSeqPower(Expr< SeqSort< R > > s, Expr< IntSort > n)
Simplifier andThen(Simplifier t1, Simplifier t2, Simplifier... ts)
SeqExpr< CharSort > ubvToString(Expr< BitVecSort > e)
final< R extends Sort > ASTVector polynomialSubresultants(Expr< R > p, Expr< R > q, Expr< R > x)
final< R extends Sort > Lambda< R > mkLambda(Sort[] sorts, Symbol[] names, Expr< R > body)
final< R extends Sort > ReExpr< R > mkConcat(ReExpr< R >... t)
BoolExpr mkFPLt(Expr< FPSort > t1, Expr< FPSort > t2)
final< R extends Sort > ReExpr< R > mkFullRe(ReSort< R > s)
BitVecExpr mkBVRedAND(Expr< BitVecSort > t)
BitVecNum mkBV(long v, int size)
BitVecExpr mkBVSRem(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
final< R extends Sort > FuncDecl< BoolSort > mkPiecewiseLinearOrder(R sort, int index)
FPNum mkFPNumeral(float v, FPSort s)
Expr<?> qeModelProjectWithWitness(Model model, Expr<?>[] bounds, Expr<?> body, ASTMap map)
Tactic when(Probe p, Tactic t)
final Expr mkFiniteSetRange(Expr low, Expr high)
final< R extends Sort > ReExpr< R > mkPlus(Expr< ReSort< R > > re)
Probe mkProbe(String name)
BoolExpr mkPBLe(int[] coeffs, Expr< BoolSort >[] args, int k)
RealExpr mkRealConst(String name)
final< R extends Sort > SeqExpr< R > mkSeqMapi(Expr<?> f, Expr< IntSort > i, Expr< SeqSort< R > > s)
final< R extends Sort > IntExpr mkLength(Expr< SeqSort< R > > s)
final< R extends Sort, A extends Sort > Expr< A > mkSeqFoldli(Expr<?> f, Expr< IntSort > i, Expr< A > a, Expr< SeqSort< R > > s)
final< R extends ArithSort > ArithExpr< R > mkAdd(Expr<? extends R >... t)
Tactic failIfNotDecided()
ParamDescrs getSimplifyParameterDescriptions()
final BoolExpr mkFiniteSetMember(Expr elem, Expr set)
BitVecExpr mkBVRotateRight(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
final< D extends Sort > ArrayExpr< D, BoolSort > mkFullSet(D domain)
SeqExpr< CharSort > sbvToString(Expr< BitVecSort > e)
Probe gt(Probe p1, Probe p2)
BoolExpr mkFPIsNaN(Expr< FPSort > t)
BoolExpr mkEq(Expr<?> x, Expr<?> y)
Tactic with(Tactic t, Params p)
final BoolExpr mkNot(Expr< BoolSort > a)
BitVecExpr mkBVASHR(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
BoolExpr[] parseSMTLIB2String(String str, Symbol[] sortNames, Sort[] sorts, Symbol[] declNames, FuncDecl<?>[] decls)
final< R > DatatypeSort< R > mkDatatypeSort(Symbol name, Constructor< R >[] constructors)
String[] getTacticNames()
Solver mkSolver(Solver s, Simplifier simp)
String benchmarkToSMTString(String name, String logic, String status, String attributes, Expr< BoolSort >[] assumptions, Expr< BoolSort > formula)
final Expr mkFiniteSetDifference(Expr s1, Expr s2)
final< R extends Sort > ArraySort< Sort, R > mkArraySort(Sort[] domains, R range)
final Expr mkFiniteSetMap(Expr f, Expr set)
FPRMNum mkFPRoundNearestTiesToAway()
BoolExpr mkIsDigit(Expr< CharSort > ch)
BoolExpr mkBool(boolean value)
final< R extends Sort > BoolExpr mkInRe(Expr< SeqSort< R > > s, ReExpr< SeqSort< R > > re)
final< D extends Sort, R extends Sort > ArraySort< D, R > mkArraySort(D domain, R range)
BitVecExpr mkBVMul(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
final< R extends Sort > Expr< R > mkNumeral(int v, R ty)
Expr<?> qeModelProject(Model model, Expr<?>[] bounds, Expr<?> body)
BitVecExpr mkBVSub(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
TupleSort mkTupleSort(Symbol name, Symbol[] fieldNames, Sort[] fieldSorts)
BitVecExpr mkBVOR(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
BoolExpr mkLt(Expr<? extends ArithSort > t1, Expr<? extends ArithSort > t2)
final Pattern mkPattern(Expr<?>... terms)
final< D extends Sort, R extends Sort > ArrayExpr< D, R > mkArrayConst(Symbol name, D domain, R range)
final< R > Constructor< R > mkConstructor(String name, String recognizer, String[] fieldNames, Sort[] sorts, int[] sortRefs)
BitVecExpr mkRepeat(int i, Expr< BitVecSort > t)
final< R extends Sort > IntExpr mkLastIndexOf(Expr< SeqSort< R > > s, Expr< SeqSort< R > > substr)
final< R extends Sort > Expr< R > mkNumeral(String v, R ty)
BoolExpr mkXor(Expr< BoolSort > t1, Expr< BoolSort > t2)
Simplifier then(Simplifier t1, Simplifier t2, Simplifier... ts)
FPRMNum mkFPRoundTowardNegative()
Probe eq(Probe p1, Probe p2)
Quantifier mkForall(Sort[] sorts, Symbol[] names, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
BitVecExpr mkBVRotateLeft(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
final< R extends Sort > FuncDecl< BoolSort > mkLinearOrder(R sort, int index)
final< R extends Sort > FuncDecl< R > mkFuncDecl(String name, Sort domain, R range)
final Expr mkFiniteSetEmpty(Sort setSort)
final< R extends Sort > Expr< R > mkNth(Expr< SeqSort< R > > s, Expr< IntSort > index)
final< R extends Sort > ReExpr< R > mkEmptyRe(ReSort< R > s)
Quantifier mkQuantifier(boolean universal, Expr<?>[] boundConstants, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
BitVecExpr mkBVRedOR(Expr< BitVecSort > t)
BoolExpr mkBVUGE(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
FPExpr mkFPDiv(Expr< FPRMSort > rm, Expr< FPSort > t1, Expr< FPSort > t2)
final< R extends Sort > SeqExpr< R > mkExtract(Expr< SeqSort< R > > s, Expr< IntSort > offset, Expr< IntSort > length)
BitVecExpr mkBVNAND(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
final< R extends Sort > SeqExpr< R > mkEmptySeq(R s)
final< R extends ArithSort > ArithExpr< R > mkDiv(Expr<? extends R > t1, Expr<? extends R > t2)
FPExpr mkFPRem(Expr< FPSort > t1, Expr< FPSort > t2)
SeqSort< CharSort > getStringSort()
final< D extends Sort, R extends Sort > Expr< D > mkArrayExt(Expr< ArraySort< D, R > > arg1, Expr< ArraySort< D, R > > arg2)
final< R extends Sort > ReExpr< R > mkLoop(Expr< ReSort< R > > re, int lo, int hi)
Quantifier mkQuantifier(boolean universal, Sort[] sorts, Symbol[] names, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
IntExpr mkIntConst(String name)
Solver mkSolver(Tactic t)
BoolExpr[] parseSMTLIB2File(String fileName, Symbol[] sortNames, Sort[] sorts, Symbol[] declNames, FuncDecl<?>[] decls)
Tactic andThen(Tactic t1, Tactic t2, Tactic... ts)
final< R extends Sort > Expr< R > mkApp(FuncDecl< R > f, Expr<?>... args)
BoolExpr mkBVAddNoUnderflow(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
final Expr mkFiniteSetUnion(Expr s1, Expr s2)
BoolExpr mkBVSubNoUnderflow(Expr< BitVecSort > t1, Expr< BitVecSort > t2, boolean isSigned)
BoolExpr mkFPIsZero(Expr< FPSort > t)
final< R > DatatypeSort< R > mkDatatypeSort(String name, Constructor< R >[] constructors)
final< R extends Sort > Expr< R > mkConst(FuncDecl< R > f)
BitVecExpr charToBv(Expr< CharSort > ch)
IntExpr mkIntConst(Symbol name)
final< R > FiniteDomainSort< R > mkFiniteDomainSort(Symbol name, long size)
final< R extends Sort > ReExpr< R > mkPower(Expr< ReSort< R > > re, int n)
final< R extends Sort > FuncDecl< R > mkConstDecl(String name, R range)
Simplifier with(Simplifier t, Params p)
BitVecExpr mkBVNeg(Expr< BitVecSort > t)
Tactic mkTactic(String name)
BoolExpr mkBVSLE(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
FPNum mkFPNumeral(double v, FPSort s)
final< R extends Sort > ListSort< R > mkListSort(String name, R elemSort)
Tactic parAndThen(Tactic t1, Tactic t2)
Expr<?> qeModelProjectSkolem(Model model, Expr<?>[] bounds, Expr<?> body, ASTMap map)
BoolExpr mkGt(Expr<? extends ArithSort > t1, Expr<? extends ArithSort > t2)
final Sort getFiniteSetSortBasis(Sort s)
BitVecNum mkBV(int v, int size)
final< R extends ArithSort > ArithExpr< R > mkPower(Expr<? extends R > t1, Expr<? extends R > t2)
Context(Map< String, String > settings)
final< R extends Sort > ReExpr< R > mkIntersect(Expr< ReSort< R > >... t)
final< R extends Sort > FuncDecl< R > mkFuncDecl(Symbol name, Sort domain, R range)
final< R extends ArithSort > ArithExpr< R > mkMul(Expr<? extends R >... t)
BoolExpr mkBVMulNoUnderflow(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
BitVecExpr mkBVSDiv(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
FPRMSort mkFPRoundingModeSort()
RealExpr mkRealConst(Symbol name)
String getTacticDescription(String name)
Solver mkSolver(Symbol logic)
final Expr mkFiniteSetSingleton(Expr elem)
BoolExpr mkFPEq(Expr< FPSort > t1, Expr< FPSort > t2)
final< R extends Sort > IntExpr mkIndexOf(Expr< SeqSort< R > > s, Expr< SeqSort< R > > substr, Expr< IntSort > offset)
BoolExpr mkFPLEq(Expr< FPSort > t1, Expr< FPSort > t2)
RatNum mkReal(int num, int den)
BitVecSort mkBitVecSort(int size)
final< D extends Sort, R extends Sort > ArrayExpr< D, R > mkStore(Expr< ArraySort< D, R > > a, Expr< D > i, Expr< R > v)
FPExpr mkFPToFP(Expr< BitVecSort > bv, FPSort s)
BoolExpr mkBVSLT(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
BoolExpr mkFPGt(Expr< FPSort > t1, Expr< FPSort > t2)
final< R extends Sort > FuncDecl< BoolSort > mkTreeOrder(R sort, int index)
BoolExpr mkIff(Expr< BoolSort > t1, Expr< BoolSort > t2)
BoolExpr mkGe(Expr<? extends ArithSort > t1, Expr<? extends ArithSort > t2)
BitVecExpr mkFPToFP(Expr< FPRMSort > rm, Expr< IntSort > exp, Expr< RealSort > sig, FPSort s)
BoolExpr mkIsInteger(Expr< RealSort > t)
FPExpr mkFPToFP(Expr< FPRMSort > rm, FPExpr t, FPSort s)
Probe constProbe(double val)
BoolExpr mkFPIsNegative(Expr< FPSort > t)
final< D extends Sort, R extends Sort > ArrayExpr< D, R > mkArrayConst(String name, D domain, R range)
BoolExpr mkBoolConst(String name)
RealExpr mkFPToReal(Expr< FPSort > t)
BoolExpr MkStringLt(Expr< SeqSort< CharSort > > s1, Expr< SeqSort< CharSort > > s2)
final Expr mkFiniteSetIntersect(Expr s1, Expr s2)
FPExpr mkFP(Expr< BitVecSort > sgn, Expr< BitVecSort > sig, Expr< BitVecSort > exp)
FPExpr mkFPToFP(FPSort s, Expr< FPRMSort > rm, Expr< FPSort > t)
FPExpr mkFPNeg(Expr< FPSort > t)
BoolExpr mkDivides(Expr< IntSort > t1, Expr< IntSort > t2)
final< R extends Sort > FuncDecl< BoolSort > mkTransitiveClosure(FuncDecl< BoolSort > f)
final< R extends Sort > SeqExpr< R > mkConcat(Expr< SeqSort< R > >... t)
BoolExpr mkCharLe(Expr< CharSort > ch1, Expr< CharSort > ch2)
FPNum mkFPNumeral(boolean sgn, long exp, long sig, FPSort s)
final< R extends Sort > BoolExpr mkSuffixOf(Expr< SeqSort< R > > s1, Expr< SeqSort< R > > s2)
SeqSort< CharSort > mkStringSort()
final< R extends Sort > BoolExpr mkContains(Expr< SeqSort< R > > s1, Expr< SeqSort< R > > s2)
FPSort mkFPSortQuadruple()
FPRMNum mkFPRoundTowardPositive()
final< D extends Sort > SetSort< D > mkSetSort(D ty)
Quantifier mkExists(Expr<?>[] boundConstants, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
final boolean isFiniteSetSort(Sort s)
final< D extends Sort > BoolExpr mkSetMembership(Expr< D > elem, Expr< ArraySort< D, BoolSort > > set)
final< R > Constructor< R > mkConstructor(Symbol name, Symbol recognizer, Symbol[] fieldNames, Sort[] sorts, int[] sortRefs)
final< D extends Sort > ArrayExpr< D, BoolSort > mkSetUnion(Expr< ArraySort< D, BoolSort > >... args)
BoolExpr mkBVULT(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
final< R extends Sort > ArrayExpr< Sort, R > mkStore(Expr< ArraySort< Sort, R > > a, Expr<?>[] args, Expr< R > v)
final< R extends Sort > ReExpr< R > mkOption(Expr< ReSort< R > > re)
BoolExpr mkFPIsNormal(Expr< FPSort > t)
DatatypeSort< Object >[] mkDatatypeSorts(String[] names, Constructor< Object >[][] c)
final< R extends Sort > SeqExpr< R > mkReplaceRe(Expr< SeqSort< R > > s, ReExpr< SeqSort< R > > re, Expr< SeqSort< R > > dst)
Probe and(Probe p1, Probe p2)
IntExpr charToInt(Expr< CharSort > ch)
Tactic tryFor(Tactic t, int ms)
FPExpr mkFPFMA(Expr< FPRMSort > rm, Expr< FPSort > t1, Expr< FPSort > t2, Expr< FPSort > t3)
UninterpretedSort mkUninterpretedSort(String str)
void setPrintMode(Z3_ast_print_mode value)
DatatypeSort< Object >[] mkDatatypeSorts(Symbol[] names, Constructor< Object >[][] c)
final BoolExpr mkAnd(Expr< BoolSort >... t)
final< R extends Sort > FuncDecl< R > mkConstDecl(Symbol name, R range)
BitVecNum mkBV(String v, int size)
BitVecExpr mkBVRotateLeft(int i, Expr< BitVecSort > t)
Probe lt(Probe p1, Probe p2)
final BoolExpr mkFiniteSetSubset(Expr s1, Expr s2)
final< D extends Sort > ArrayExpr< D, BoolSort > mkSetDel(Expr< ArraySort< D, BoolSort > > set, Expr< D > element)
Quantifier mkForall(Expr<?>[] boundConstants, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
final< R extends Sort > void AddRecDef(FuncDecl< R > f, Expr<?>[] args, Expr< R > body)
final< R extends Sort > ReSort< R > mkReSort(R s)
IntExpr mkRem(Expr< IntSort > t1, Expr< IntSort > t2)
BitVecExpr mkBVNot(Expr< BitVecSort > t)
final< R extends ArithSort > ArithExpr< R > mkSub(Expr<? extends R >... t)
BitVecExpr mkBVAND(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
final< R extends Sort > FuncDecl< R > mkFuncDecl(Symbol name, Sort[] domain, R range)
FPExpr mkFPAbs(Expr< FPSort > t)
BoolExpr mkPBEq(int[] coeffs, Expr< BoolSort >[] args, int k)
Goal mkGoal(boolean models, boolean unsatCores, boolean proofs)
final FiniteSetSort mkFiniteSetSort(Sort elemSort)
final< R extends ArithSort > ArithExpr< R > mkUnaryMinus(Expr< R > t)
final Expr mkFiniteSetSize(Expr set)
FPExpr mkFPAdd(Expr< FPRMSort > rm, Expr< FPSort > t1, Expr< FPSort > t2)
BoolExpr mkBVUGT(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
FPNum mkFP(float v, FPSort s)
final BoolExpr mkOr(Expr< BoolSort >... t)
BitVecExpr mkBVSHL(Expr< BitVecSort > t1, Expr< BitVecSort > t2)
String getSimplifierDescription(String name)
final< R extends Sort > Expr< R > mkConst(Symbol name, R range)
final< D extends Sort > ArrayExpr< D, BoolSort > mkEmptySet(D domain)
Quantifier mkExists(Sort[] sorts, Symbol[] names, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
final< D extends Sort, R extends Sort > ArrayExpr< D, R > mkAsArray(FuncDecl< R > f)
BitVecExpr mkFPToIEEEBV(Expr< FPSort > t)
final< R extends Sort > Lambda< R > mkLambda(Expr<?>[] boundConstants, Expr< R > body)
FPExpr mkFPMin(Expr< FPSort > t1, Expr< FPSort > t2)
Tactic orElse(Tactic t1, Tactic t2)
final< R extends Sort > FuncDecl< R > mkRecFuncDecl(Symbol name, Sort[] domain, R range)
final< R extends Sort > FuncDecl< R > mkPropagateFunction(Symbol name, Sort[] domain, R range)
TypeVarSort mkTypeVariable(Symbol name)
FPNum mkFP(int v, FPSort s)
final< D extends Sort, R extends Sort > Expr< R > mkTermArray(Expr< ArraySort< D, R > > array)
final< R extends Sort > ReExpr< R > mkUnion(Expr< ReSort< R > >... t)
IntSymbol mkSymbol(int i)
final< R extends Sort > ReExpr< R > mkDiff(Expr< ReSort< R > > a, Expr< ReSort< R > > b)
StringSymbol mkSymbol(String name)
FPNum mkFPZero(FPSort s, boolean negative)
final< D extends Sort > ArrayExpr< D, BoolSort > mkSetDifference(Expr< ArraySort< D, BoolSort > > arg1, Expr< ArraySort< D, BoolSort > > arg2)
BoolExpr mkFPIsInfinite(Expr< FPSort > t)
final< R > FiniteDomainSort< R > mkFiniteDomainSort(String name, long size)
Simplifier usingParams(Simplifier t, Params p)
BoolExpr mkBoolConst(Symbol name)
final< R > EnumSort< R > mkEnumSort(String name, String... enumNames)
BitVecExpr mkFPToBV(Expr< FPRMSort > rm, Expr< FPSort > t, int sz, boolean signed)
BoolExpr mkPBGe(int[] coeffs, Expr< BoolSort >[] args, int k)
static< R extends Sort > Lambda< R > of(Context ctx, Sort[] sorts, Symbol[] names, Expr< R > body)
static Quantifier of(Context ctx, boolean isForall, Sort[] sorts, Symbol[] names, Expr< BoolSort > body, int weight, Pattern[] patterns, Expr<?>[] noPatterns, Symbol quantifierID, Symbol skolemID)
static long[] arrayToNative(Z3Object[] a)
static int arrayLength(Z3Object[] a)
Z3_ast_print_mode
Z3 pretty printing modes (See Z3_set_ast_print_mode).