18 package com.microsoft.z3;
30 private final long m_ctx;
31 static final Object creation_lock =
new Object();
34 m_ctx = Native.mkContextRc(0);
61 public Context(Map<String, String> settings) {
62 long cfg = Native.mkConfig();
64 Native.setParamValue(cfg, kv.getKey(), kv.getValue());
66 m_ctx = Native.mkContextRc(cfg);
67 Native.delConfig(cfg);
73 Native.setInternalErrorHandler(m_ctx);
102 for (
int i = 0; i < names.length; ++i)
108 private IntSort m_intSort =
null;
110 private SeqSort m_stringSort =
null;
117 if (m_boolSort ==
null) {
128 if (m_intSort ==
null) {
139 if (m_realSort ==
null) {
158 if (m_stringSort ==
null) {
169 checkContextMatch(s);
202 return new BitVecSort(
this, Native.mkBvSort(nCtx(), size));
210 checkContextMatch(domain);
211 checkContextMatch(range);
212 return new ArraySort(
this, domain, range);
220 return new SeqSort(
this, Native.mkStringSort(nCtx()));
228 return new SeqSort(
this, Native.mkSeqSort(nCtx(), s.getNativeObject()));
236 return new ReSort(
this, Native.mkReSort(nCtx(), s.getNativeObject()));
246 checkContextMatch(name);
247 checkContextMatch(fieldNames);
248 checkContextMatch(fieldSorts);
249 return new TupleSort(
this, name, fieldNames.length, fieldNames,
259 checkContextMatch(name);
260 checkContextMatch(enumNames);
261 return new EnumSort(
this, name, enumNames);
278 checkContextMatch(name);
279 checkContextMatch(elemSort);
280 return new ListSort(
this, name, elemSort);
288 checkContextMatch(elemSort);
298 checkContextMatch(name);
323 Symbol[] fieldNames,
Sort[] sorts,
int[] sortRefs)
326 return of(
this, name, recognizer, fieldNames, sorts,
334 String[] fieldNames,
Sort[] sorts,
int[] sortRefs)
337 mkSymbols(fieldNames), sorts, sortRefs);
346 checkContextMatch(name);
347 checkContextMatch(constructors);
357 checkContextMatch(constructors);
369 checkContextMatch(names);
370 int n = names.length;
372 long[] n_constr =
new long[n];
373 for (
int i = 0; i < n; i++)
377 checkContextMatch(constructor);
379 n_constr[i] = cla[i].getNativeObject();
381 long[] n_res =
new long[n];
382 Native.mkDatatypes(nCtx(), n,
Symbol.arrayToNative(names), n_res,
385 for (
int i = 0; i < n; i++)
408 return Expr.create (
this,
409 Native.datatypeUpdateField
410 (nCtx(), field.getNativeObject(),
411 t.getNativeObject(), v.getNativeObject()));
421 checkContextMatch(name);
422 checkContextMatch(domain);
423 checkContextMatch(range);
424 return new FuncDecl(
this, name, domain, range);
433 checkContextMatch(name);
434 checkContextMatch(domain);
435 checkContextMatch(range);
437 return new FuncDecl(
this, name, q, range);
446 checkContextMatch(domain);
447 checkContextMatch(range);
457 checkContextMatch(domain);
458 checkContextMatch(range);
472 checkContextMatch(domain);
473 checkContextMatch(range);
474 return new FuncDecl(
this, prefix, domain, range);
482 checkContextMatch(name);
483 checkContextMatch(range);
484 return new FuncDecl(
this, name,
null, range);
492 checkContextMatch(range);
505 checkContextMatch(range);
506 return new FuncDecl(
this, prefix,
null, range);
516 return Expr.create(
this,
517 Native.mkBound(nCtx(), index, ty.getNativeObject()));
525 if (terms.length == 0)
526 throw new Z3Exception(
"Cannot create a pattern from zero terms");
528 long[] termsNative =
AST.arrayToNative(terms);
529 return new Pattern(
this, Native.mkPattern(nCtx(), terms.length,
539 checkContextMatch(name);
540 checkContextMatch(range);
544 Native.mkConst(nCtx(), name.getNativeObject(),
545 range.getNativeObject()));
563 checkContextMatch(range);
564 return Expr.create(
this,
565 Native.mkFreshConst(nCtx(), prefix, range.getNativeObject()));
646 checkContextMatch(f);
647 checkContextMatch(args);
648 return Expr.create(
this, f, args);
656 return new BoolExpr(
this, Native.mkTrue(nCtx()));
664 return new BoolExpr(
this, Native.mkFalse(nCtx()));
680 checkContextMatch(x);
681 checkContextMatch(y);
682 return new BoolExpr(
this, Native.mkEq(nCtx(), x.getNativeObject(),
683 y.getNativeObject()));
691 checkContextMatch(args);
692 return new BoolExpr(
this, Native.mkDistinct(nCtx(), args.length,
693 AST.arrayToNative(args)));
701 checkContextMatch(a);
702 return new BoolExpr(
this, Native.mkNot(nCtx(), a.getNativeObject()));
714 checkContextMatch(t1);
715 checkContextMatch(t2);
716 checkContextMatch(t3);
717 return Expr.create(
this, Native.mkIte(nCtx(), t1.getNativeObject(),
718 t2.getNativeObject(), t3.getNativeObject()));
726 checkContextMatch(t1);
727 checkContextMatch(t2);
728 return new BoolExpr(
this, Native.mkIff(nCtx(), t1.getNativeObject(),
729 t2.getNativeObject()));
737 checkContextMatch(t1);
738 checkContextMatch(t2);
739 return new BoolExpr(
this, Native.mkImplies(nCtx(),
740 t1.getNativeObject(), t2.getNativeObject()));
748 checkContextMatch(t1);
749 checkContextMatch(t2);
750 return new BoolExpr(
this, Native.mkXor(nCtx(), t1.getNativeObject(),
751 t2.getNativeObject()));
759 checkContextMatch(t);
760 return new BoolExpr(
this, Native.mkAnd(nCtx(), t.length,
761 AST.arrayToNative(t)));
769 checkContextMatch(t);
770 return new BoolExpr(
this, Native.mkOr(nCtx(), t.length,
771 AST.arrayToNative(t)));
779 checkContextMatch(t);
781 Native.mkAdd(nCtx(), t.length,
AST.arrayToNative(t)));
789 checkContextMatch(t);
791 Native.mkMul(nCtx(), t.length,
AST.arrayToNative(t)));
799 checkContextMatch(t);
801 Native.mkSub(nCtx(), t.length,
AST.arrayToNative(t)));
809 checkContextMatch(t);
811 Native.mkUnaryMinus(nCtx(), t.getNativeObject()));
819 checkContextMatch(t1);
820 checkContextMatch(t2);
822 t1.getNativeObject(), t2.getNativeObject()));
832 checkContextMatch(t1);
833 checkContextMatch(t2);
834 return new IntExpr(
this, Native.mkMod(nCtx(), t1.getNativeObject(),
835 t2.getNativeObject()));
845 checkContextMatch(t1);
846 checkContextMatch(t2);
847 return new IntExpr(
this, Native.mkRem(nCtx(), t1.getNativeObject(),
848 t2.getNativeObject()));
856 checkContextMatch(t1);
857 checkContextMatch(t2);
860 Native.mkPower(nCtx(), t1.getNativeObject(),
861 t2.getNativeObject()));
869 checkContextMatch(t1);
870 checkContextMatch(t2);
871 return new BoolExpr(
this, Native.mkLt(nCtx(), t1.getNativeObject(),
872 t2.getNativeObject()));
880 checkContextMatch(t1);
881 checkContextMatch(t2);
882 return new BoolExpr(
this, Native.mkLe(nCtx(), t1.getNativeObject(),
883 t2.getNativeObject()));
891 checkContextMatch(t1);
892 checkContextMatch(t2);
893 return new BoolExpr(
this, Native.mkGt(nCtx(), t1.getNativeObject(),
894 t2.getNativeObject()));
902 checkContextMatch(t1);
903 checkContextMatch(t2);
904 return new BoolExpr(
this, Native.mkGe(nCtx(), t1.getNativeObject(),
905 t2.getNativeObject()));
920 checkContextMatch(t);
922 Native.mkInt2real(nCtx(), t.getNativeObject()));
933 checkContextMatch(t);
934 return new IntExpr(
this, Native.mkReal2int(nCtx(), t.getNativeObject()));
942 checkContextMatch(t);
943 return new BoolExpr(
this, Native.mkIsInt(nCtx(), t.getNativeObject()));
953 checkContextMatch(t);
954 return new BitVecExpr(
this, Native.mkBvnot(nCtx(), t.getNativeObject()));
964 checkContextMatch(t);
965 return new BitVecExpr(
this, Native.mkBvredand(nCtx(),
966 t.getNativeObject()));
976 checkContextMatch(t);
977 return new BitVecExpr(
this, Native.mkBvredor(nCtx(),
978 t.getNativeObject()));
988 checkContextMatch(t1);
989 checkContextMatch(t2);
990 return new BitVecExpr(
this, Native.mkBvand(nCtx(),
991 t1.getNativeObject(), t2.getNativeObject()));
1001 checkContextMatch(t1);
1002 checkContextMatch(t2);
1003 return new BitVecExpr(
this, Native.mkBvor(nCtx(), t1.getNativeObject(),
1004 t2.getNativeObject()));
1014 checkContextMatch(t1);
1015 checkContextMatch(t2);
1016 return new BitVecExpr(
this, Native.mkBvxor(nCtx(),
1017 t1.getNativeObject(), t2.getNativeObject()));
1027 checkContextMatch(t1);
1028 checkContextMatch(t2);
1029 return new BitVecExpr(
this, Native.mkBvnand(nCtx(),
1030 t1.getNativeObject(), t2.getNativeObject()));
1040 checkContextMatch(t1);
1041 checkContextMatch(t2);
1042 return new BitVecExpr(
this, Native.mkBvnor(nCtx(),
1043 t1.getNativeObject(), t2.getNativeObject()));
1053 checkContextMatch(t1);
1054 checkContextMatch(t2);
1055 return new BitVecExpr(
this, Native.mkBvxnor(nCtx(),
1056 t1.getNativeObject(), t2.getNativeObject()));
1066 checkContextMatch(t);
1067 return new BitVecExpr(
this, Native.mkBvneg(nCtx(), t.getNativeObject()));
1077 checkContextMatch(t1);
1078 checkContextMatch(t2);
1079 return new BitVecExpr(
this, Native.mkBvadd(nCtx(),
1080 t1.getNativeObject(), t2.getNativeObject()));
1090 checkContextMatch(t1);
1091 checkContextMatch(t2);
1092 return new BitVecExpr(
this, Native.mkBvsub(nCtx(),
1093 t1.getNativeObject(), t2.getNativeObject()));
1103 checkContextMatch(t1);
1104 checkContextMatch(t2);
1105 return new BitVecExpr(
this, Native.mkBvmul(nCtx(),
1106 t1.getNativeObject(), t2.getNativeObject()));
1118 checkContextMatch(t1);
1119 checkContextMatch(t2);
1120 return new BitVecExpr(
this, Native.mkBvudiv(nCtx(),
1121 t1.getNativeObject(), t2.getNativeObject()));
1139 checkContextMatch(t1);
1140 checkContextMatch(t2);
1141 return new BitVecExpr(
this, Native.mkBvsdiv(nCtx(),
1142 t1.getNativeObject(), t2.getNativeObject()));
1154 checkContextMatch(t1);
1155 checkContextMatch(t2);
1156 return new BitVecExpr(
this, Native.mkBvurem(nCtx(),
1157 t1.getNativeObject(), t2.getNativeObject()));
1172 checkContextMatch(t1);
1173 checkContextMatch(t2);
1174 return new BitVecExpr(
this, Native.mkBvsrem(nCtx(),
1175 t1.getNativeObject(), t2.getNativeObject()));
1186 checkContextMatch(t1);
1187 checkContextMatch(t2);
1188 return new BitVecExpr(
this, Native.mkBvsmod(nCtx(),
1189 t1.getNativeObject(), t2.getNativeObject()));
1199 checkContextMatch(t1);
1200 checkContextMatch(t2);
1201 return new BoolExpr(
this, Native.mkBvult(nCtx(), t1.getNativeObject(),
1202 t2.getNativeObject()));
1212 checkContextMatch(t1);
1213 checkContextMatch(t2);
1214 return new BoolExpr(
this, Native.mkBvslt(nCtx(), t1.getNativeObject(),
1215 t2.getNativeObject()));
1225 checkContextMatch(t1);
1226 checkContextMatch(t2);
1227 return new BoolExpr(
this, Native.mkBvule(nCtx(), t1.getNativeObject(),
1228 t2.getNativeObject()));
1238 checkContextMatch(t1);
1239 checkContextMatch(t2);
1240 return new BoolExpr(
this, Native.mkBvsle(nCtx(), t1.getNativeObject(),
1241 t2.getNativeObject()));
1251 checkContextMatch(t1);
1252 checkContextMatch(t2);
1253 return new BoolExpr(
this, Native.mkBvuge(nCtx(), t1.getNativeObject(),
1254 t2.getNativeObject()));
1264 checkContextMatch(t1);
1265 checkContextMatch(t2);
1266 return new BoolExpr(
this, Native.mkBvsge(nCtx(), t1.getNativeObject(),
1267 t2.getNativeObject()));
1277 checkContextMatch(t1);
1278 checkContextMatch(t2);
1279 return new BoolExpr(
this, Native.mkBvugt(nCtx(), t1.getNativeObject(),
1280 t2.getNativeObject()));
1290 checkContextMatch(t1);
1291 checkContextMatch(t2);
1292 return new BoolExpr(
this, Native.mkBvsgt(nCtx(), t1.getNativeObject(),
1293 t2.getNativeObject()));
1308 checkContextMatch(t1);
1309 checkContextMatch(t2);
1310 return new BitVecExpr(
this, Native.mkConcat(nCtx(),
1311 t1.getNativeObject(), t2.getNativeObject()));
1325 checkContextMatch(t);
1326 return new BitVecExpr(
this, Native.mkExtract(nCtx(), high, low,
1327 t.getNativeObject()));
1339 checkContextMatch(t);
1340 return new BitVecExpr(
this, Native.mkSignExt(nCtx(), i,
1341 t.getNativeObject()));
1353 checkContextMatch(t);
1354 return new BitVecExpr(
this, Native.mkZeroExt(nCtx(), i,
1355 t.getNativeObject()));
1365 checkContextMatch(t);
1366 return new BitVecExpr(
this, Native.mkRepeat(nCtx(), i,
1367 t.getNativeObject()));
1383 checkContextMatch(t1);
1384 checkContextMatch(t2);
1385 return new BitVecExpr(
this, Native.mkBvshl(nCtx(),
1386 t1.getNativeObject(), t2.getNativeObject()));
1402 checkContextMatch(t1);
1403 checkContextMatch(t2);
1404 return new BitVecExpr(
this, Native.mkBvlshr(nCtx(),
1405 t1.getNativeObject(), t2.getNativeObject()));
1422 checkContextMatch(t1);
1423 checkContextMatch(t2);
1424 return new BitVecExpr(
this, Native.mkBvashr(nCtx(),
1425 t1.getNativeObject(), t2.getNativeObject()));
1435 checkContextMatch(t);
1436 return new BitVecExpr(
this, Native.mkRotateLeft(nCtx(), i,
1437 t.getNativeObject()));
1447 checkContextMatch(t);
1448 return new BitVecExpr(
this, Native.mkRotateRight(nCtx(), i,
1449 t.getNativeObject()));
1461 checkContextMatch(t1);
1462 checkContextMatch(t2);
1463 return new BitVecExpr(
this, Native.mkExtRotateLeft(nCtx(),
1464 t1.getNativeObject(), t2.getNativeObject()));
1476 checkContextMatch(t1);
1477 checkContextMatch(t2);
1478 return new BitVecExpr(
this, Native.mkExtRotateRight(nCtx(),
1479 t1.getNativeObject(), t2.getNativeObject()));
1493 checkContextMatch(t);
1494 return new BitVecExpr(
this, Native.mkInt2bv(nCtx(), n,
1495 t.getNativeObject()));
1514 checkContextMatch(t);
1515 return new IntExpr(
this, Native.mkBv2int(nCtx(), t.getNativeObject(),
1527 checkContextMatch(t1);
1528 checkContextMatch(t2);
1529 return new BoolExpr(
this, Native.mkBvaddNoOverflow(nCtx(), t1
1530 .getNativeObject(), t2.getNativeObject(), (isSigned)));
1541 checkContextMatch(t1);
1542 checkContextMatch(t2);
1543 return new BoolExpr(
this, Native.mkBvaddNoUnderflow(nCtx(),
1544 t1.getNativeObject(), t2.getNativeObject()));
1555 checkContextMatch(t1);
1556 checkContextMatch(t2);
1557 return new BoolExpr(
this, Native.mkBvsubNoOverflow(nCtx(),
1558 t1.getNativeObject(), t2.getNativeObject()));
1569 checkContextMatch(t1);
1570 checkContextMatch(t2);
1571 return new BoolExpr(
this, Native.mkBvsubNoUnderflow(nCtx(), t1
1572 .getNativeObject(), t2.getNativeObject(), (isSigned)));
1583 checkContextMatch(t1);
1584 checkContextMatch(t2);
1585 return new BoolExpr(
this, Native.mkBvsdivNoOverflow(nCtx(),
1586 t1.getNativeObject(), t2.getNativeObject()));
1596 checkContextMatch(t);
1597 return new BoolExpr(
this, Native.mkBvnegNoOverflow(nCtx(),
1598 t.getNativeObject()));
1609 checkContextMatch(t1);
1610 checkContextMatch(t2);
1611 return new BoolExpr(
this, Native.mkBvmulNoOverflow(nCtx(), t1
1612 .getNativeObject(), t2.getNativeObject(), (isSigned)));
1623 checkContextMatch(t1);
1624 checkContextMatch(t2);
1625 return new BoolExpr(
this, Native.mkBvmulNoUnderflow(nCtx(),
1626 t1.getNativeObject(), t2.getNativeObject()));
1662 checkContextMatch(a);
1663 checkContextMatch(i);
1666 Native.mkSelect(nCtx(), a.getNativeObject(),
1667 i.getNativeObject()));
1688 checkContextMatch(a);
1689 checkContextMatch(i);
1690 checkContextMatch(v);
1691 return new ArrayExpr(
this, Native.mkStore(nCtx(), a.getNativeObject(),
1692 i.getNativeObject(), v.getNativeObject()));
1706 checkContextMatch(domain);
1707 checkContextMatch(v);
1708 return new ArrayExpr(
this, Native.mkConstArray(nCtx(),
1709 domain.getNativeObject(), v.getNativeObject()));
1727 checkContextMatch(f);
1728 checkContextMatch(args);
1730 f.getNativeObject(),
AST.arrayLength(args),
1731 AST.arrayToNative(args)));
1742 checkContextMatch(array);
1743 return Expr.create(
this,
1744 Native.mkArrayDefault(nCtx(), array.getNativeObject()));
1752 checkContextMatch(arg1);
1753 checkContextMatch(arg2);
1754 return Expr.create(
this, Native.mkArrayExt(nCtx(), arg1.getNativeObject(), arg2.getNativeObject()));
1763 checkContextMatch(ty);
1772 checkContextMatch(domain);
1774 Native.mkEmptySet(nCtx(), domain.getNativeObject()));
1782 checkContextMatch(domain);
1784 Native.mkFullSet(nCtx(), domain.getNativeObject()));
1792 checkContextMatch(
set);
1793 checkContextMatch(element);
1795 Native.mkSetAdd(nCtx(),
set.getNativeObject(),
1796 element.getNativeObject()));
1804 checkContextMatch(
set);
1805 checkContextMatch(element);
1807 Native.mkSetDel(nCtx(),
set.getNativeObject(),
1808 element.getNativeObject()));
1816 checkContextMatch(args);
1818 Native.mkSetUnion(nCtx(), args.length,
1819 AST.arrayToNative(args)));
1827 checkContextMatch(args);
1829 Native.mkSetIntersect(nCtx(), args.length,
1830 AST.arrayToNative(args)));
1838 checkContextMatch(arg1);
1839 checkContextMatch(arg2);
1841 Native.mkSetDifference(nCtx(), arg1.getNativeObject(),
1842 arg2.getNativeObject()));
1850 checkContextMatch(arg);
1852 Native.mkSetComplement(nCtx(), arg.getNativeObject()));
1860 checkContextMatch(elem);
1861 checkContextMatch(
set);
1863 Native.mkSetMember(nCtx(), elem.getNativeObject(),
1864 set.getNativeObject()));
1872 checkContextMatch(arg1);
1873 checkContextMatch(arg2);
1875 Native.mkSetSubset(nCtx(), arg1.getNativeObject(),
1876 arg2.getNativeObject()));
1889 checkContextMatch(s);
1890 return new SeqExpr(
this, Native.mkSeqEmpty(nCtx(), s.getNativeObject()));
1898 checkContextMatch(elem);
1899 return new SeqExpr(
this, Native.mkSeqUnit(nCtx(), elem.getNativeObject()));
1907 return new SeqExpr(
this, Native.mkString(nCtx(), s));
1915 checkContextMatch(t);
1916 return new SeqExpr(
this, Native.mkSeqConcat(nCtx(), t.length,
AST.arrayToNative(t)));
1925 checkContextMatch(s);
1926 return (
IntExpr)
Expr.create(
this, Native.mkSeqLength(nCtx(), s.getNativeObject()));
1934 checkContextMatch(s1, s2);
1935 return new BoolExpr(
this, Native.mkSeqPrefix(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
1943 checkContextMatch(s1, s2);
1944 return new BoolExpr(
this, Native.mkSeqSuffix(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
1952 checkContextMatch(s1, s2);
1953 return new BoolExpr(
this, Native.mkSeqContains(nCtx(), s1.getNativeObject(), s2.getNativeObject()));
1961 checkContextMatch(s, index);
1962 return new SeqExpr(
this, Native.mkSeqAt(nCtx(), s.getNativeObject(), index.getNativeObject()));
1970 checkContextMatch(s, offset, length);
1971 return new SeqExpr(
this, Native.mkSeqExtract(nCtx(), s.getNativeObject(), offset.getNativeObject(), length.getNativeObject()));
1979 checkContextMatch(s, substr, offset);
1980 return new IntExpr(
this, Native.mkSeqIndex(nCtx(), s.getNativeObject(), substr.getNativeObject(), offset.getNativeObject()));
1988 checkContextMatch(s, src, dst);
1989 return new SeqExpr(
this, Native.mkSeqReplace(nCtx(), s.getNativeObject(), src.getNativeObject(), dst.getNativeObject()));
1997 checkContextMatch(s);
1998 return new ReExpr(
this, Native.mkSeqToRe(nCtx(), s.getNativeObject()));
2007 checkContextMatch(s, re);
2008 return new BoolExpr(
this, Native.mkSeqInRe(nCtx(), s.getNativeObject(), re.getNativeObject()));
2016 checkContextMatch(re);
2017 return new ReExpr(
this, Native.mkReStar(nCtx(), re.getNativeObject()));
2025 checkContextMatch(re);
2026 return new ReExpr(
this, Native.mkRePlus(nCtx(), re.getNativeObject()));
2034 checkContextMatch(re);
2035 return new ReExpr(
this, Native.mkReOption(nCtx(), re.getNativeObject()));
2043 checkContextMatch(t);
2044 return new ReExpr(
this, Native.mkReConcat(nCtx(), t.length,
AST.arrayToNative(t)));
2052 checkContextMatch(t);
2053 return new ReExpr(
this, Native.mkReUnion(nCtx(), t.length,
AST.arrayToNative(t)));
2070 checkContextMatch(ty);
2071 return Expr.create(
this,
2072 Native.mkNumeral(nCtx(), v, ty.getNativeObject()));
2087 checkContextMatch(ty);
2088 return Expr.create(
this, Native.mkInt(nCtx(), v, ty.getNativeObject()));
2103 checkContextMatch(ty);
2104 return Expr.create(
this,
2105 Native.mkInt64(nCtx(), v, ty.getNativeObject()));
2123 return new RatNum(
this, Native.mkReal(nCtx(), num, den));
2136 .getNativeObject()));
2149 .getNativeObject()));
2162 .getNativeObject()));
2173 .getNativeObject()));
2186 .getNativeObject()));
2199 .getNativeObject()));
2258 int weight,
Pattern[] patterns,
Expr[] noPatterns,
2262 return Quantifier.
of(
this,
true, sorts, names, body, weight, patterns,
2263 noPatterns, quantifierID, skolemID);
2275 return Quantifier.
of(
this,
true, boundConstants, body, weight,
2276 patterns, noPatterns, quantifierID, skolemID);
2284 int weight,
Pattern[] patterns,
Expr[] noPatterns,
2288 return Quantifier.
of(
this,
false, sorts, names, body, weight,
2289 patterns, noPatterns, quantifierID, skolemID);
2301 return Quantifier.
of(
this,
false, boundConstants, body, weight,
2302 patterns, noPatterns, quantifierID, skolemID);
2316 return mkForall(sorts, names, body, weight, patterns, noPatterns,
2317 quantifierID, skolemID);
2319 return mkExists(sorts, names, body, weight, patterns, noPatterns,
2320 quantifierID, skolemID);
2333 return mkForall(boundConstants, body, weight, patterns, noPatterns,
2334 quantifierID, skolemID);
2336 return mkExists(boundConstants, body, weight, patterns, noPatterns,
2337 quantifierID, skolemID);
2356 Native.setAstPrintMode(nCtx(), value.toInt());
2377 return Native.benchmarkToSmtlibString(nCtx(), name, logic, status,
2378 attributes, assumptions.length,
2379 AST.arrayToNative(assumptions), formula.getNativeObject());
2394 int csn =
Symbol.arrayLength(sortNames);
2395 int cs =
Sort.arrayLength(sorts);
2396 int cdn =
Symbol.arrayLength(declNames);
2397 int cd =
AST.arrayLength(decls);
2398 if (csn != cs || cdn != cd)
2400 Native.parseSmtlibString(nCtx(), str,
AST.arrayLength(sorts),
2401 Symbol.arrayToNative(sortNames),
AST.arrayToNative(sorts),
2402 AST.arrayLength(decls),
Symbol.arrayToNative(declNames),
2403 AST.arrayToNative(decls));
2414 int csn =
Symbol.arrayLength(sortNames);
2415 int cs =
Sort.arrayLength(sorts);
2416 int cdn =
Symbol.arrayLength(declNames);
2417 int cd =
AST.arrayLength(decls);
2418 if (csn != cs || cdn != cd)
2420 Native.parseSmtlibFile(nCtx(), fileName,
AST.arrayLength(sorts),
2421 Symbol.arrayToNative(sortNames),
AST.arrayToNative(sorts),
2422 AST.arrayLength(decls),
Symbol.arrayToNative(declNames),
2423 AST.arrayToNative(decls));
2432 return Native.getSmtlibNumFormulas(nCtx());
2444 for (
int i = 0; i < n; i++)
2446 Native.getSmtlibFormula(nCtx(), i));
2456 return Native.getSmtlibNumAssumptions(nCtx());
2468 for (
int i = 0; i < n; i++)
2470 Native.getSmtlibAssumption(nCtx(), i));
2480 return Native.getSmtlibNumDecls(nCtx());
2492 for (
int i = 0; i < n; i++)
2493 res[i] =
new FuncDecl(
this, Native.getSmtlibDecl(nCtx(), i));
2503 return Native.getSmtlibNumSorts(nCtx());
2515 for (
int i = 0; i < n; i++)
2516 res[i] =
Sort.create(
this, Native.getSmtlibSort(nCtx(), i));
2532 int csn =
Symbol.arrayLength(sortNames);
2533 int cs =
Sort.arrayLength(sorts);
2534 int cdn =
Symbol.arrayLength(declNames);
2535 int cd =
AST.arrayLength(decls);
2536 if (csn != cs || cdn != cd) {
2539 return (
BoolExpr)
Expr.create(
this, Native.parseSmtlib2String(nCtx(),
2540 str,
AST.arrayLength(sorts),
Symbol.arrayToNative(sortNames),
2541 AST.arrayToNative(sorts),
AST.arrayLength(decls),
2542 Symbol.arrayToNative(declNames),
AST.arrayToNative(decls)));
2553 int csn =
Symbol.arrayLength(sortNames);
2554 int cs =
Sort.arrayLength(sorts);
2555 int cdn =
Symbol.arrayLength(declNames);
2556 int cd =
AST.arrayLength(decls);
2557 if (csn != cs || cdn != cd)
2559 return (
BoolExpr)
Expr.create(
this, Native.parseSmtlib2File(nCtx(),
2560 fileName,
AST.arrayLength(sorts),
2561 Symbol.arrayToNative(sortNames),
AST.arrayToNative(sorts),
2562 AST.arrayLength(decls),
Symbol.arrayToNative(declNames),
2563 AST.arrayToNative(decls)));
2576 public Goal mkGoal(
boolean models,
boolean unsatCores,
boolean proofs)
2579 return new Goal(
this, models, unsatCores, proofs);
2595 return Native.getNumTactics(nCtx());
2606 for (
int i = 0; i < n; i++)
2607 res[i] = Native.getTacticName(nCtx(), i);
2617 return Native.tacticGetDescr(nCtx(), name);
2625 return new Tactic(
this, name);
2635 checkContextMatch(t1);
2636 checkContextMatch(t2);
2637 checkContextMatch(ts);
2640 if (ts !=
null && ts.length > 0)
2642 last = ts[ts.length - 1].getNativeObject();
2643 for (
int i = ts.length - 2; i >= 0; i--) {
2644 last = Native.tacticAndThen(nCtx(), ts[i].getNativeObject(),
2650 last = Native.tacticAndThen(nCtx(), t2.getNativeObject(), last);
2651 return new Tactic(
this, Native.tacticAndThen(nCtx(),
2652 t1.getNativeObject(), last));
2654 return new Tactic(
this, Native.tacticAndThen(nCtx(),
2655 t1.getNativeObject(), t2.getNativeObject()));
2676 checkContextMatch(t1);
2677 checkContextMatch(t2);
2678 return new Tactic(
this, Native.tacticOrElse(nCtx(),
2679 t1.getNativeObject(), t2.getNativeObject()));
2690 checkContextMatch(t);
2691 return new Tactic(
this, Native.tacticTryFor(nCtx(),
2692 t.getNativeObject(), ms));
2703 checkContextMatch(t);
2704 checkContextMatch(p);
2705 return new Tactic(
this, Native.tacticWhen(nCtx(), p.getNativeObject(),
2706 t.getNativeObject()));
2716 checkContextMatch(p);
2717 checkContextMatch(t1);
2718 checkContextMatch(t2);
2719 return new Tactic(
this, Native.tacticCond(nCtx(), p.getNativeObject(),
2720 t1.getNativeObject(), t2.getNativeObject()));
2729 checkContextMatch(t);
2730 return new Tactic(
this, Native.tacticRepeat(nCtx(),
2731 t.getNativeObject(), max));
2739 return new Tactic(
this, Native.tacticSkip(nCtx()));
2747 return new Tactic(
this, Native.tacticFail(nCtx()));
2756 checkContextMatch(p);
2758 Native.tacticFailIf(nCtx(), p.getNativeObject()));
2767 return new Tactic(
this, Native.tacticFailIfNotDecided(nCtx()));
2776 checkContextMatch(t);
2777 checkContextMatch(p);
2778 return new Tactic(
this, Native.tacticUsingParams(nCtx(),
2779 t.getNativeObject(), p.getNativeObject()));
2798 checkContextMatch(t);
2799 return new Tactic(
this, Native.tacticParOr(nCtx(),
2809 checkContextMatch(t1);
2810 checkContextMatch(t2);
2811 return new Tactic(
this, Native.tacticParAndThen(nCtx(),
2812 t1.getNativeObject(), t2.getNativeObject()));
2822 Native.interrupt(nCtx());
2830 return Native.getNumProbes(nCtx());
2841 for (
int i = 0; i < n; i++)
2842 res[i] = Native.getProbeName(nCtx(), i);
2852 return Native.probeGetDescr(nCtx(), name);
2860 return new Probe(
this, name);
2868 return new Probe(
this, Native.probeConst(nCtx(), val));
2877 checkContextMatch(p1);
2878 checkContextMatch(p2);
2879 return new Probe(
this, Native.probeLt(nCtx(), p1.getNativeObject(),
2880 p2.getNativeObject()));
2889 checkContextMatch(p1);
2890 checkContextMatch(p2);
2891 return new Probe(
this, Native.probeGt(nCtx(), p1.getNativeObject(),
2892 p2.getNativeObject()));
2902 checkContextMatch(p1);
2903 checkContextMatch(p2);
2904 return new Probe(
this, Native.probeLe(nCtx(), p1.getNativeObject(),
2905 p2.getNativeObject()));
2915 checkContextMatch(p1);
2916 checkContextMatch(p2);
2917 return new Probe(
this, Native.probeGe(nCtx(), p1.getNativeObject(),
2918 p2.getNativeObject()));
2927 checkContextMatch(p1);
2928 checkContextMatch(p2);
2929 return new Probe(
this, Native.probeEq(nCtx(), p1.getNativeObject(),
2930 p2.getNativeObject()));
2938 checkContextMatch(p1);
2939 checkContextMatch(p2);
2940 return new Probe(
this, Native.probeAnd(nCtx(), p1.getNativeObject(),
2941 p2.getNativeObject()));
2949 checkContextMatch(p1);
2950 checkContextMatch(p2);
2951 return new Probe(
this, Native.probeOr(nCtx(), p1.getNativeObject(),
2952 p2.getNativeObject()));
2960 checkContextMatch(p);
2961 return new Probe(
this, Native.probeNot(nCtx(), p.getNativeObject()));
2987 return new Solver(
this, Native.mkSolver(nCtx()));
2989 return new Solver(
this, Native.mkSolverForLogic(nCtx(),
2990 logic.getNativeObject()));
3007 return new Solver(
this, Native.mkSimpleSolver(nCtx()));
3019 return new Solver(
this, Native.mkSolverFromTactic(nCtx(),
3020 t.getNativeObject()));
3055 return new FPRMExpr(
this, Native.mkFpaRoundNearestTiesToEven(nCtx()));
3064 return new FPRMNum(
this, Native.mkFpaRne(nCtx()));
3073 return new FPRMNum(
this, Native.mkFpaRoundNearestTiesToAway(nCtx()));
3082 return new FPRMNum(
this, Native.mkFpaRna(nCtx()));
3091 return new FPRMNum(
this, Native.mkFpaRoundTowardPositive(nCtx()));
3100 return new FPRMNum(
this, Native.mkFpaRtp(nCtx()));
3109 return new FPRMNum(
this, Native.mkFpaRoundTowardNegative(nCtx()));
3118 return new FPRMNum(
this, Native.mkFpaRtn(nCtx()));
3127 return new FPRMNum(
this, Native.mkFpaRoundTowardZero(nCtx()));
3136 return new FPRMNum(
this, Native.mkFpaRtz(nCtx()));
3147 return new FPSort(
this, ebits, sbits);
3156 return new FPSort(
this, Native.mkFpaSortHalf(nCtx()));
3165 return new FPSort(
this, Native.mkFpaSort16(nCtx()));
3174 return new FPSort(
this, Native.mkFpaSortSingle(nCtx()));
3183 return new FPSort(
this, Native.mkFpaSort32(nCtx()));
3192 return new FPSort(
this, Native.mkFpaSortDouble(nCtx()));
3201 return new FPSort(
this, Native.mkFpaSort64(nCtx()));
3210 return new FPSort(
this, Native.mkFpaSortQuadruple(nCtx()));
3219 return new FPSort(
this, Native.mkFpaSort128(nCtx()));
3230 return new FPNum(
this, Native.mkFpaNan(nCtx(), s.getNativeObject()));
3241 return new FPNum(
this, Native.mkFpaInf(nCtx(), s.getNativeObject(), negative));
3252 return new FPNum(
this, Native.mkFpaZero(nCtx(), s.getNativeObject(), negative));
3263 return new FPNum(
this, Native.mkFpaNumeralFloat(nCtx(), v, s.getNativeObject()));
3274 return new FPNum(
this, Native.mkFpaNumeralDouble(nCtx(), v, s.getNativeObject()));
3285 return new FPNum(
this, Native.mkFpaNumeralInt(nCtx(), v, s.getNativeObject()));
3298 return new FPNum(
this, Native.mkFpaNumeralIntUint(nCtx(), sgn, exp, sig, s.getNativeObject()));
3311 return new FPNum(
this, Native.mkFpaNumeralInt64Uint64(nCtx(), sgn, exp, sig, s.getNativeObject()));
3382 return new FPExpr(
this, Native.mkFpaAbs(nCtx(), t.getNativeObject()));
3392 return new FPExpr(
this, Native.mkFpaNeg(nCtx(), t.getNativeObject()));
3404 return new FPExpr(
this, Native.mkFpaAdd(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject()));
3416 return new FPExpr(
this, Native.mkFpaSub(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject()));
3428 return new FPExpr(
this, Native.mkFpaMul(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject()));
3440 return new FPExpr(
this, Native.mkFpaDiv(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject()));
3455 return new FPExpr(
this, Native.mkFpaFma(nCtx(), rm.getNativeObject(), t1.getNativeObject(), t2.getNativeObject(), t3.getNativeObject()));
3466 return new FPExpr(
this, Native.mkFpaSqrt(nCtx(), rm.getNativeObject(), t.getNativeObject()));
3477 return new FPExpr(
this, Native.mkFpaRem(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
3489 return new FPExpr(
this, Native.mkFpaRoundToIntegral(nCtx(), rm.getNativeObject(), t.getNativeObject()));
3500 return new FPExpr(
this, Native.mkFpaMin(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
3511 return new FPExpr(
this, Native.mkFpaMax(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
3522 return new BoolExpr(
this, Native.mkFpaLeq(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
3533 return new BoolExpr(
this, Native.mkFpaLt(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
3544 return new BoolExpr(
this, Native.mkFpaGeq(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
3555 return new BoolExpr(
this, Native.mkFpaGt(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
3568 return new BoolExpr(
this, Native.mkFpaEq(nCtx(), t1.getNativeObject(), t2.getNativeObject()));
3578 return new BoolExpr(
this, Native.mkFpaIsNormal(nCtx(), t.getNativeObject()));
3588 return new BoolExpr(
this, Native.mkFpaIsSubnormal(nCtx(), t.getNativeObject()));
3598 return new BoolExpr(
this, Native.mkFpaIsZero(nCtx(), t.getNativeObject()));
3608 return new BoolExpr(
this, Native.mkFpaIsInfinite(nCtx(), t.getNativeObject()));
3618 return new BoolExpr(
this, Native.mkFpaIsNan(nCtx(), t.getNativeObject()));
3628 return new BoolExpr(
this, Native.mkFpaIsNegative(nCtx(), t.getNativeObject()));
3638 return new BoolExpr(
this, Native.mkFpaIsPositive(nCtx(), t.getNativeObject()));
3656 return new FPExpr(
this, Native.mkFpaFp(nCtx(), sgn.getNativeObject(), sig.getNativeObject(), exp.getNativeObject()));
3672 return new FPExpr(
this, Native.mkFpaToFpBv(nCtx(), bv.getNativeObject(), s.getNativeObject()));
3688 return new FPExpr(
this, Native.mkFpaToFpFloat(nCtx(), rm.getNativeObject(), t.getNativeObject(), s.getNativeObject()));
3704 return new FPExpr(
this, Native.mkFpaToFpReal(nCtx(), rm.getNativeObject(), t.getNativeObject(), s.getNativeObject()));
3723 return new FPExpr(
this, Native.mkFpaToFpSigned(nCtx(), rm.getNativeObject(), t.getNativeObject(), s.getNativeObject()));
3725 return new FPExpr(
this, Native.mkFpaToFpUnsigned(nCtx(), rm.getNativeObject(), t.getNativeObject(), s.getNativeObject()));
3740 return new FPExpr(
this, Native.mkFpaToFpFloat(nCtx(), s.getNativeObject(), rm.getNativeObject(), t.getNativeObject()));
3758 return new BitVecExpr(
this, Native.mkFpaToSbv(nCtx(), rm.getNativeObject(), t.getNativeObject(), sz));
3760 return new BitVecExpr(
this, Native.mkFpaToUbv(nCtx(), rm.getNativeObject(), t.getNativeObject(), sz));
3774 return new RealExpr(
this, Native.mkFpaToReal(nCtx(), t.getNativeObject()));
3789 return new BitVecExpr(
this, Native.mkFpaToIeeeBv(nCtx(), t.getNativeObject()));
3807 return new BitVecExpr(
this, Native.mkFpaToFpIntReal(nCtx(), rm.getNativeObject(), exp.getNativeObject(), sig.getNativeObject(), s.getNativeObject()));
3823 return AST.create(
this, nativeObject);
3840 return a.getNativeObject();
3849 return Native.simplifyGetHelp(nCtx());
3857 return new ParamDescrs(
this, Native.simplifyGetParamDescrs(nCtx()));
3870 Native.updateParamValue(nCtx(),
id, value);
3880 void checkContextMatch(Z3Object other)
3882 if (
this != other.getContext())
3883 throw new Z3Exception(
"Context mismatch");
3886 void checkContextMatch(Z3Object other1, Z3Object other2)
3888 checkContextMatch(other1);
3889 checkContextMatch(other2);
3892 void checkContextMatch(Z3Object other1, Z3Object other2, Z3Object other3)
3894 checkContextMatch(other1);
3895 checkContextMatch(other2);
3896 checkContextMatch(other3);
3899 void checkContextMatch(Z3Object[] arr)
3902 for (Z3Object a : arr)
3903 checkContextMatch(a);
3906 private ASTDecRefQueue m_AST_DRQ =
new ASTDecRefQueue();
3907 private ASTMapDecRefQueue m_ASTMap_DRQ =
new ASTMapDecRefQueue();
3908 private ASTVectorDecRefQueue m_ASTVector_DRQ =
new ASTVectorDecRefQueue();
3909 private ApplyResultDecRefQueue m_ApplyResult_DRQ =
new ApplyResultDecRefQueue();
3910 private FuncInterpEntryDecRefQueue m_FuncEntry_DRQ =
new FuncInterpEntryDecRefQueue();
3911 private FuncInterpDecRefQueue m_FuncInterp_DRQ =
new FuncInterpDecRefQueue();
3912 private GoalDecRefQueue m_Goal_DRQ =
new GoalDecRefQueue();
3913 private ModelDecRefQueue m_Model_DRQ =
new ModelDecRefQueue();
3914 private ParamsDecRefQueue m_Params_DRQ =
new ParamsDecRefQueue();
3915 private ParamDescrsDecRefQueue m_ParamDescrs_DRQ =
new ParamDescrsDecRefQueue();
3916 private ProbeDecRefQueue m_Probe_DRQ =
new ProbeDecRefQueue();
3917 private SolverDecRefQueue m_Solver_DRQ =
new SolverDecRefQueue();
3918 private StatisticsDecRefQueue m_Statistics_DRQ =
new StatisticsDecRefQueue();
3919 private TacticDecRefQueue m_Tactic_DRQ =
new TacticDecRefQueue();
3920 private FixedpointDecRefQueue m_Fixedpoint_DRQ =
new FixedpointDecRefQueue();
3921 private OptimizeDecRefQueue m_Optimize_DRQ =
new OptimizeDecRefQueue();
3922 private ConstructorDecRefQueue m_Constructor_DRQ =
new ConstructorDecRefQueue();
3923 private ConstructorListDecRefQueue m_ConstructorList_DRQ =
3924 new ConstructorListDecRefQueue();
3927 return m_Constructor_DRQ;
3931 return m_ConstructorList_DRQ;
3941 return m_ASTMap_DRQ;
3946 return m_ASTVector_DRQ;
3951 return m_ApplyResult_DRQ;
3956 return m_FuncEntry_DRQ;
3961 return m_FuncInterp_DRQ;
3976 return m_Params_DRQ;
3981 return m_ParamDescrs_DRQ;
3991 return m_Solver_DRQ;
3996 return m_Statistics_DRQ;
4001 return m_Tactic_DRQ;
4006 return m_Fixedpoint_DRQ;
4011 return m_Optimize_DRQ;
4020 m_AST_DRQ.forceClear(
this);
4021 m_ASTMap_DRQ.forceClear(
this);
4022 m_ASTVector_DRQ.forceClear(
this);
4023 m_ApplyResult_DRQ.forceClear(
this);
4024 m_FuncEntry_DRQ.forceClear(
this);
4025 m_FuncInterp_DRQ.forceClear(
this);
4026 m_Goal_DRQ.forceClear(
this);
4027 m_Model_DRQ.forceClear(
this);
4028 m_Params_DRQ.forceClear(
this);
4029 m_Probe_DRQ.forceClear(
this);
4030 m_Solver_DRQ.forceClear(
this);
4031 m_Optimize_DRQ.forceClear(
this);
4032 m_Statistics_DRQ.forceClear(
this);
4033 m_Tactic_DRQ.forceClear(
this);
4034 m_Fixedpoint_DRQ.forceClear(
this);
4039 m_stringSort =
null;
4041 Native.delContext(m_ctx);
BoolExpr mkFPIsNegative(FPExpr t)
IntExpr mkIntConst(Symbol name)
ReExpr MkUnion(ReExpr... t)
BoolExpr mkBVMulNoOverflow(BitVecExpr t1, BitVecExpr t2, boolean isSigned)
Expr mkITE(BoolExpr t1, Expr t2, Expr t3)
IDecRefQueue< Probe > getProbeDRQ()
int getNumSMTLIBAssumptions()
Tactic when(Probe p, Tactic t)
BitVecExpr mkBVXNOR(BitVecExpr t1, BitVecExpr t2)
IntExpr MkIndexOf(SeqExpr s, SeqExpr substr, ArithExpr offset)
DatatypeSort mkDatatypeSort(String name, Constructor[] constructors)
Pattern mkPattern(Expr... terms)
Probe and(Probe p1, Probe p2)
ArrayExpr mkConstArray(Sort domain, Expr v)
Constructor mkConstructor(Symbol name, Symbol recognizer, Symbol[] fieldNames, Sort[] sorts, int[] sortRefs)
RealExpr mkFPToReal(FPExpr t)
int getNumSMTLIBFormulas()
Probe lt(Probe p1, Probe p2)
FPNum mkFPNumeral(double v, FPSort s)
BoolExpr mkBVUGE(BitVecExpr t1, BitVecExpr t2)
BoolExpr mkFPIsSubnormal(FPExpr t)
ArrayExpr mkSetDifference(ArrayExpr arg1, ArrayExpr arg2)
BitVecExpr mkBVSHL(BitVecExpr t1, BitVecExpr t2)
ArrayExpr mkSetComplement(ArrayExpr arg)
BitVecExpr mkBVNeg(BitVecExpr t)
FPNum mkFPInf(FPSort s, boolean negative)
Expr mkNumeral(int v, Sort ty)
BoolExpr mkBVSDivNoOverflow(BitVecExpr t1, BitVecExpr t2)
ListSort mkListSort(String name, Sort elemSort)
FPExpr mkFPSqrt(FPRMExpr rm, FPExpr t)
FPNum mkFPNumeral(int v, FPSort s)
StringSymbol mkSymbol(String name)
FPExpr mkFPToFP(FPRMExpr rm, FPExpr t, FPSort s)
BitVecExpr mkBVAdd(BitVecExpr t1, BitVecExpr t2)
String [] getTacticNames()
Probe eq(Probe p1, Probe p2)
BitVecExpr mkZeroExt(int i, BitVecExpr t)
BitVecExpr mkBVRotateLeft(BitVecExpr t1, BitVecExpr t2)
Quantifier mkExists(Expr[] boundConstants, Expr body, int weight, Pattern[] patterns, Expr[] noPatterns, Symbol quantifierID, Symbol skolemID)
BoolExpr mkDistinct(Expr... args)
String getProbeDescription(String name)
BitVecExpr mkBVUDiv(BitVecExpr t1, BitVecExpr t2)
Expr mkArrayExt(ArrayExpr arg1, ArrayExpr arg2)
BoolExpr MkPrefixOf(SeqExpr s1, SeqExpr s2)
BitVecExpr mkBVASHR(BitVecExpr t1, BitVecExpr t2)
Tactic failIfNotDecided()
BoolExpr mkFPLt(FPExpr t1, FPExpr t2)
FPRMNum mkFPRoundTowardNegative()
FPNum mkFP(float v, FPSort s)
SeqExpr MkExtract(SeqExpr s, IntExpr offset, IntExpr length)
BoolExpr mkImplies(BoolExpr t1, BoolExpr t2)
ReExpr MOption(ReExpr re)
SeqExpr MkReplace(SeqExpr s, SeqExpr src, SeqExpr dst)
BoolExpr parseSMTLIB2String(String str, Symbol[] sortNames, Sort[] sorts, Symbol[] declNames, FuncDecl[] decls)
BoolExpr mkBVMulNoUnderflow(BitVecExpr t1, BitVecExpr t2)
BitVecExpr mkExtract(int high, int low, BitVecExpr t)
UninterpretedSort mkUninterpretedSort(String str)
BitVecExpr mkBVSMod(BitVecExpr t1, BitVecExpr t2)
IDecRefQueue< Fixedpoint > getFixedpointDRQ()
String [] getProbeNames()
BoolExpr mkFPEq(FPExpr t1, FPExpr t2)
Tactic then(Tactic t1, Tactic t2, Tactic... ts)
IDecRefQueue< Statistics > getStatisticsDRQ()
BitVecExpr mkBVRotateRight(BitVecExpr t1, BitVecExpr t2)
BoolExpr parseSMTLIB2File(String fileName, Symbol[] sortNames, Sort[] sorts, Symbol[] declNames, FuncDecl[] decls)
IDecRefQueue< AST > getASTDRQ()
Expr mkNumeral(String v, Sort ty)
BitVecExpr mkBVURem(BitVecExpr t1, BitVecExpr t2)
TupleSort mkTupleSort(Symbol name, Symbol[] fieldNames, Sort[] fieldSorts)
BitVecExpr mkBVMul(BitVecExpr t1, BitVecExpr t2)
FuncDecl mkFuncDecl(String name, Sort[] domain, Sort range)
void setPrintMode(Z3_ast_print_mode value)
FPExpr mkFPDiv(FPRMExpr rm, FPExpr t1, FPExpr t2)
SeqExpr MkString(String s)
FuncDecl mkConstDecl(String name, Sort range)
SetSort mkSetSort(Sort ty)
BoolExpr mkLt(ArithExpr t1, ArithExpr t2)
IntExpr mkReal2Int(RealExpr t)
IDecRefQueue< ASTMap > getASTMapDRQ()
BoolExpr MkInRe(SeqExpr s, ReExpr re)
FPNum mkFPNumeral(boolean sgn, int exp, int sig, FPSort s)
FPRMExpr mkFPRoundNearestTiesToEven()
AST wrapAST(long nativeObject)
BoolExpr mkSetSubset(ArrayExpr arg1, ArrayExpr arg2)
ArithExpr mkAdd(ArithExpr... t)
static Quantifier of(Context ctx, boolean isForall, Sort[] sorts, Symbol[] names, Expr body, int weight, Pattern[] patterns, Expr[] noPatterns, Symbol quantifierID, Symbol skolemID)
IDecRefQueue< Tactic > getTacticDRQ()
FuncDecl mkFuncDecl(Symbol name, Sort domain, Sort range)
FPExpr mkFPToFP(FPSort s, FPRMExpr rm, FPExpr t)
BoolExpr mkFPIsPositive(FPExpr t)
FPExpr mkFP(BitVecExpr sgn, BitVecExpr sig, BitVecExpr exp)
ArrayExpr mkSetDel(ArrayExpr set, Expr element)
BoolExpr mkIsInteger(RealExpr t)
BoolExpr mkBVNegNoOverflow(BitVecExpr t)
Quantifier mkQuantifier(boolean universal, Sort[] sorts, Symbol[] names, Expr body, int weight, Pattern[] patterns, Expr[] noPatterns, Symbol quantifierID, Symbol skolemID)
FPExpr mkFPToFP(FPRMExpr rm, BitVecExpr t, FPSort s, boolean signed)
Probe gt(Probe p1, Probe p2)
BoolExpr MkSuffixOf(SeqExpr s1, SeqExpr s2)
BoolExpr mkFPLEq(FPExpr t1, FPExpr t2)
BoolExpr mkBVSLE(BitVecExpr t1, BitVecExpr t2)
BoolExpr mkBVAddNoUnderflow(BitVecExpr t1, BitVecExpr t2)
BoolExpr mkFPIsInfinite(FPExpr t)
BitVecExpr mkBVOR(BitVecExpr t1, BitVecExpr t2)
BitVecExpr mkBVXOR(BitVecExpr t1, BitVecExpr t2)
IDecRefQueue< Model > getModelDRQ()
IDecRefQueue< FuncInterp.Entry > getFuncEntryDRQ()
ArrayExpr mkSetAdd(ArrayExpr set, Expr element)
BitVecExpr mkBVNot(BitVecExpr t)
def FiniteDomainSort(name, sz, ctx=None)
EnumSort mkEnumSort(Symbol name, Symbol... enumNames)
BitVecExpr mkBVRedOR(BitVecExpr t)
Tactic usingParams(Tactic t, Params p)
BitVecExpr mkBVConst(String name, int size)
BoolExpr mkLe(ArithExpr t1, ArithExpr t2)
BoolExpr mkFPIsNaN(FPExpr t)
BitVecExpr mkBVSDiv(BitVecExpr t1, BitVecExpr t2)
FPExpr mkFPAdd(FPRMExpr rm, FPExpr t1, FPExpr t2)
BoolExpr mkBVSGT(BitVecExpr t1, BitVecExpr t2)
Quantifier mkForall(Expr[] boundConstants, Expr body, int weight, Pattern[] patterns, Expr[] noPatterns, Symbol quantifierID, Symbol skolemID)
FPSort mkFPSortQuadruple()
FPRMNum mkFPRoundNearestTiesToAway()
BoolExpr mkBoolConst(String name)
FPNum mkFPZero(FPSort s, boolean negative)
BitVecExpr mkRepeat(int i, BitVecExpr t)
FPExpr mkFPFMA(FPRMExpr rm, FPExpr t1, FPExpr t2, FPExpr t3)
BitVecExpr mkBVNAND(BitVecExpr t1, BitVecExpr t2)
void updateParamValue(String id, String value)
Probe mkProbe(String name)
BoolExpr mkXor(BoolExpr t1, BoolExpr t2)
BitVecExpr mkBVLSHR(BitVecExpr t1, BitVecExpr t2)
IDecRefQueue< ApplyResult > getApplyResultDRQ()
Tactic repeat(Tactic t, int max)
IDecRefQueue< Optimize > getOptimizeDRQ()
String benchmarkToSMTString(String name, String logic, String status, String attributes, BoolExpr[] assumptions, BoolExpr formula)
DatatypeSort [] mkDatatypeSorts(Symbol[] names, Constructor[][] c)
FPNum mkFP(int v, FPSort s)
Tactic tryFor(Tactic t, int ms)
Z3_ast_print_mode
Z3 pretty printing modes (See Z3_set_ast_print_mode).
BoolExpr mkIff(BoolExpr t1, BoolExpr t2)
void parseSMTLIBFile(String fileName, Symbol[] sortNames, Sort[] sorts, Symbol[] declNames, FuncDecl[] decls)
IntExpr mkIntConst(String name)
BoolExpr mkOr(BoolExpr... t)
def FPSort(ebits, sbits, ctx=None)
BoolExpr mkBVULE(BitVecExpr t1, BitVecExpr t2)
FPNum mkFP(boolean sgn, int exp, int sig, FPSort s)
BoolExpr mkBVSGE(BitVecExpr t1, BitVecExpr t2)
BitVecExpr mkBVNOR(BitVecExpr t1, BitVecExpr t2)
IDecRefQueue< ASTVector > getASTVectorDRQ()
FuncDecl mkFuncDecl(Symbol name, Sort[] domain, Sort range)
Solver mkSolver(String logic)
BitVecExpr mkBVRedAND(BitVecExpr t)
IntExpr mkRem(IntExpr t1, IntExpr t2)
FiniteDomainSort mkFiniteDomainSort(String name, long size)
FuncDecl mkConstDecl(Symbol name, Sort range)
FPRMNum mkFPRoundTowardPositive()
BoolExpr mkBVSubNoUnderflow(BitVecExpr t1, BitVecExpr t2, boolean isSigned)
UninterpretedSort mkUninterpretedSort(Symbol s)
ArithExpr mkMul(ArithExpr... t)
void parseSMTLIBString(String str, Symbol[] sortNames, Sort[] sorts, Symbol[] declNames, FuncDecl[] decls)
IntExpr MkLength(SeqExpr s)
FPExpr mkFPMul(FPRMExpr rm, FPExpr t1, FPExpr t2)
BoolExpr mkAnd(BoolExpr... t)
Expr mkFreshConst(String prefix, Sort range)
FPExpr mkFPRoundToIntegral(FPRMExpr rm, FPExpr t)
FPExpr mkFPRem(FPExpr t1, FPExpr t2)
IDecRefQueue< ConstructorList > getConstructorListDRQ()
IDecRefQueue< Solver > getSolverDRQ()
FPNum mkFP(double v, FPSort s)
ArrayExpr mkEmptySet(Sort domain)
Expr mkTermArray(ArrayExpr array)
EnumSort mkEnumSort(String name, String... enumNames)
IDecRefQueue< ParamDescrs > getParamDescrsDRQ()
FPExpr mkFPMin(FPExpr t1, FPExpr t2)
BoolExpr mkBool(boolean value)
SeqSort mkSeqSort(Sort s)
Probe or(Probe p1, Probe p2)
BitVecExpr mkFPToFP(FPRMExpr rm, IntExpr exp, RealExpr sig, FPSort s)
FPExpr mkFPSub(FPRMExpr rm, FPExpr t1, FPExpr t2)
Tactic with(Tactic t, Params p)
IntExpr mkMod(IntExpr t1, IntExpr t2)
BitVecExpr mkFPToBV(FPRMExpr rm, FPExpr t, int sz, boolean signed)
Probe ge(Probe p1, Probe p2)
def EnumSort(name, values, ctx=None)
Expr mkApp(FuncDecl f, Expr... args)
ArrayExpr mkArrayConst(Symbol name, Sort domain, Sort range)
FiniteDomainSort mkFiniteDomainSort(Symbol name, long size)
BoolExpr mkBVSLT(BitVecExpr t1, BitVecExpr t2)
BitVecExpr mkInt2BV(int n, IntExpr t)
BitVecExpr mkBVRotateRight(int i, BitVecExpr t)
ArithExpr mkPower(ArithExpr t1, ArithExpr t2)
IDecRefQueue< Constructor > getConstructorDRQ()
Context(Map< String, String > settings)
ArrayExpr mkSetUnion(ArrayExpr... args)
BoolExpr mkBoolConst(Symbol name)
FPExpr mkFPMax(FPExpr t1, FPExpr t2)
ArrayExpr mkFullSet(Sort domain)
IntSymbol mkSymbol(int i)
Quantifier mkExists(Sort[] sorts, Symbol[] names, Expr body, int weight, Pattern[] patterns, Expr[] noPatterns, Symbol quantifierID, Symbol skolemID)
SeqExpr MkUnit(Expr elem)
BoolExpr [] getSMTLIBAssumptions()
Expr mkConst(String name, Sort range)
DatatypeSort mkDatatypeSort(Symbol name, Constructor[] constructors)
SeqExpr MkEmptySeq(Sort s)
Tactic parAndThen(Tactic t1, Tactic t2)
ArrayExpr mkMap(FuncDecl f, ArrayExpr... args)
BitVecExpr mkBVRotateLeft(int i, BitVecExpr t)
Constructor mkConstructor(String name, String recognizer, String[] fieldNames, Sort[] sorts, int[] sortRefs)
BoolExpr mkBVULT(BitVecExpr t1, BitVecExpr t2)
Probe constProbe(double val)
BitVecExpr mkBVAND(BitVecExpr t1, BitVecExpr t2)
BoolExpr mkBVSubNoOverflow(BitVecExpr t1, BitVecExpr t2)
BitVecExpr mkFPToIEEEBV(FPExpr t)
def BitVecSort(sz, ctx=None)
Expr mkBound(int index, Sort ty)
BoolExpr MkContains(SeqExpr s1, SeqExpr s2)
FPNum mkFPNumeral(float v, FPSort s)
BitVecExpr mkBVConst(Symbol name, int size)
Tactic mkTactic(String name)
FPNum mkFPNumeral(boolean sgn, long exp, long sig, FPSort s)
FPSort mkFPSort(int ebits, int sbits)
ArrayExpr mkStore(ArrayExpr a, Expr i, Expr v)
BitVecSort mkBitVecSort(int size)
ReExpr MkConcat(ReExpr... t)
ParamDescrs getSimplifyParameterDescriptions()
IDecRefQueue< Params > getParamsDRQ()
Fixedpoint mkFixedpoint()
BoolExpr [] getSMTLIBFormulas()
FPNum mkFP(boolean sgn, long exp, long sig, FPSort s)
BoolExpr mkFPIsNormal(FPExpr t)
Tactic cond(Probe p, Tactic t1, Tactic t2)
BitVecExpr mkBVSRem(BitVecExpr t1, BitVecExpr t2)
Solver mkSolver(Symbol logic)
FPExpr mkFPToFP(BitVecExpr bv, FPSort s)
FuncDecl mkFuncDecl(String name, Sort domain, Sort range)
ArrayExpr mkArrayConst(String name, Sort domain, Sort range)
BoolExpr mkFPGEq(FPExpr t1, FPExpr t2)
ArraySort mkArraySort(Sort domain, Sort range)
Expr mkConst(Symbol name, Sort range)
Tactic parOr(Tactic... t)
BitVecNum mkBV(int v, int size)
SeqExpr MkAt(SeqExpr s, IntExpr index)
BoolExpr mkNot(BoolExpr a)
Expr mkNumeral(long v, Sort ty)
DatatypeSort [] mkDatatypeSorts(String[] names, Constructor[][] c)
BoolExpr mkGt(ArithExpr t1, ArithExpr t2)
FPRMSort mkFPRoundingModeSort()
ListSort mkListSort(Symbol name, Sort elemSort)
Tactic orElse(Tactic t1, Tactic t2)
Probe le(Probe p1, Probe p2)
ArithExpr mkUnaryMinus(ArithExpr t)
Tactic andThen(Tactic t1, Tactic t2, Tactic... ts)
RealExpr mkInt2Real(IntExpr t)
RealExpr mkRealConst(Symbol name)
FuncDecl mkFreshConstDecl(String prefix, Sort range)
Quantifier mkQuantifier(boolean universal, Expr[] boundConstants, Expr body, int weight, Pattern[] patterns, Expr[] noPatterns, Symbol quantifierID, Symbol skolemID)
BitVecNum mkBV(String v, int size)
Solver mkSolver(Tactic t)
String getTacticDescription(String name)
Expr mkSelect(ArrayExpr a, Expr i)
FuncDecl mkFreshFuncDecl(String prefix, Sort[] domain, Sort range)
BitVecNum mkBV(long v, int size)
BitVecExpr mkBVSub(BitVecExpr t1, BitVecExpr t2)
ArithExpr mkDiv(ArithExpr t1, ArithExpr t2)
RealExpr mkRealConst(String name)
ArrayExpr mkSetIntersection(ArrayExpr... args)
Expr MkUpdateField(FuncDecl field, Expr t, Expr v)
FPExpr mkFPToFP(FPRMExpr rm, RealExpr t, FPSort s)
BitVecExpr mkConcat(BitVecExpr t1, BitVecExpr t2)
RatNum mkReal(int num, int den)
BoolExpr mkFPGt(FPExpr t1, FPExpr t2)
BitVecExpr mkSignExt(int i, BitVecExpr t)
BoolExpr mkBVUGT(BitVecExpr t1, BitVecExpr t2)
BoolExpr mkSetMembership(Expr elem, ArrayExpr set)
IntExpr mkBV2Int(BitVecExpr t, boolean signed)
IDecRefQueue< FuncInterp > getFuncInterpDRQ()
FPRMNum mkFPRoundTowardZero()
SeqExpr MkConcat(SeqExpr... t)
BoolExpr mkEq(Expr x, Expr y)
BoolExpr mkGe(ArithExpr t1, ArithExpr t2)
BoolExpr mkFPIsZero(FPExpr t)
def String(name, ctx=None)
IDecRefQueue< Goal > getGoalDRQ()
FuncDecl [] getSMTLIBDecls()
Quantifier mkForall(Sort[] sorts, Symbol[] names, Expr body, int weight, Pattern[] patterns, Expr[] noPatterns, Symbol quantifierID, Symbol skolemID)
ArithExpr mkSub(ArithExpr... t)
Goal mkGoal(boolean models, boolean unsatCores, boolean proofs)
BoolExpr mkBVAddNoOverflow(BitVecExpr t1, BitVecExpr t2, boolean isSigned)