mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 17:15:31 +00:00
merge with Z3Prover/master
This commit is contained in:
parent
57845d4809
commit
aacb7289be
1147 changed files with 59004 additions and 63575 deletions
|
@ -470,7 +470,7 @@ void unsat_core_example2() {
|
|||
// The solver s already contains p1 => F
|
||||
// To disable F, we add (not p1) as an additional assumption
|
||||
qs.push_back(!p1);
|
||||
std::cout << s.check((unsigned)qs.size(), &qs[0]) << "\n";
|
||||
std::cout << s.check(static_cast<unsigned>(qs.size()), &qs[0]) << "\n";
|
||||
expr_vector core2 = s.unsat_core();
|
||||
std::cout << core2 << "\n";
|
||||
std::cout << "size: " << core2.size() << "\n";
|
||||
|
@ -707,7 +707,7 @@ void tactic_example7() {
|
|||
std::cout << s.check() << "\n";
|
||||
model m = s.get_model();
|
||||
std::cout << "model for subgoal:\n" << m << "\n";
|
||||
std::cout << "model for original goal:\n" << r.convert_model(m) << "\n";
|
||||
std::cout << "model for original goal:\n" << subgoal.convert_model(m) << "\n";
|
||||
}
|
||||
|
||||
void tactic_example8() {
|
||||
|
@ -920,6 +920,19 @@ void enum_sort_example() {
|
|||
std::cout << "2: " << result_goal.as_expr() << std::endl;
|
||||
}
|
||||
|
||||
void tuple_example() {
|
||||
std::cout << "tuple example\n";
|
||||
context ctx;
|
||||
const char * names[] = { "first", "second" };
|
||||
sort sorts[2] = { ctx.int_sort(), ctx.bool_sort() };
|
||||
func_decl_vector projs(ctx);
|
||||
func_decl pair = ctx.tuple_sort("pair", 2, names, sorts, projs);
|
||||
sorts[1] = pair.range();
|
||||
func_decl pair2 = ctx.tuple_sort("pair2", 2, names, sorts, projs);
|
||||
|
||||
std::cout << pair2 << "\n";
|
||||
}
|
||||
|
||||
void expr_vector_example() {
|
||||
std::cout << "expr_vector example\n";
|
||||
context c;
|
||||
|
@ -1136,7 +1149,7 @@ static void parse_example() {
|
|||
func_decl_vector decls(c);
|
||||
sort B = c.bool_sort();
|
||||
decls.push_back(c.function("a", 0, 0, B));
|
||||
expr a = c.parse_string("(assert a)", sorts, decls);
|
||||
expr_vector a = c.parse_string("(assert a)", sorts, decls);
|
||||
std::cout << a << "\n";
|
||||
|
||||
// expr b = c.parse_string("(benchmark tst :extrafuns ((x Int) (y Int)) :formula (> x y) :formula (> x 0))");
|
||||
|
@ -1179,6 +1192,7 @@ int main() {
|
|||
incremental_example2(); std::cout << "\n";
|
||||
incremental_example3(); std::cout << "\n";
|
||||
enum_sort_example(); std::cout << "\n";
|
||||
tuple_example(); std::cout << "\n";
|
||||
expr_vector_example(); std::cout << "\n";
|
||||
exists_expr_vector_example(); std::cout << "\n";
|
||||
substitute_example(); std::cout << "\n";
|
||||
|
|
|
@ -378,7 +378,7 @@ void assert_comm_axiom(Z3_context ctx, Z3_solver s, Z3_func_decl f)
|
|||
{
|
||||
Z3_sort t;
|
||||
Z3_symbol f_name, t_name;
|
||||
Z3_ast q;
|
||||
Z3_ast_vector q;
|
||||
|
||||
t = Z3_get_range(ctx, f);
|
||||
|
||||
|
@ -394,13 +394,14 @@ void assert_comm_axiom(Z3_context ctx, Z3_solver s, Z3_func_decl f)
|
|||
/* Inside the parser, type t will be referenced using the symbol 'T'. */
|
||||
t_name = Z3_mk_string_symbol(ctx, "T");
|
||||
|
||||
|
||||
q = Z3_parse_smtlib2_string(ctx,
|
||||
"(assert (forall ((x T) (y T)) (= (f x y) (f y x))))",
|
||||
1, &t_name, &t,
|
||||
1, &f_name, &f);
|
||||
printf("assert axiom:\n%s\n", Z3_ast_to_string(ctx, q));
|
||||
Z3_solver_assert(ctx, s, q);
|
||||
printf("assert axiom:\n%s\n", Z3_ast_vector_to_string(ctx, q));
|
||||
for (unsigned i = 0; i < Z3_ast_vector_size(ctx, q); ++i) {
|
||||
Z3_solver_assert(ctx, s, Z3_ast_vector_get(ctx, q, i));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1546,7 +1547,7 @@ void two_contexts_example1()
|
|||
}
|
||||
|
||||
/**
|
||||
\brief Demonstrates how error codes can be read insted of registering an error handler.
|
||||
\brief Demonstrates how error codes can be read instead of registering an error handler.
|
||||
*/
|
||||
void error_code_example1()
|
||||
{
|
||||
|
@ -1642,7 +1643,7 @@ void parser_example2()
|
|||
Z3_ast x, y;
|
||||
Z3_symbol names[2];
|
||||
Z3_func_decl decls[2];
|
||||
Z3_ast f;
|
||||
Z3_ast_vector f;
|
||||
|
||||
printf("\nparser_example2\n");
|
||||
LOG_MSG("parser_example2");
|
||||
|
@ -1665,8 +1666,11 @@ void parser_example2()
|
|||
0, 0, 0,
|
||||
/* 'x' and 'y' declarations are inserted as 'a' and 'b' into the parser symbol table. */
|
||||
2, names, decls);
|
||||
printf("formula: %s\n", Z3_ast_to_string(ctx, f));
|
||||
Z3_solver_assert(ctx, s, f);
|
||||
printf("formula: %s\n", Z3_ast_vector_to_string(ctx, f));
|
||||
printf("assert axiom:\n%s\n", Z3_ast_vector_to_string(ctx, f));
|
||||
for (unsigned i = 0; i < Z3_ast_vector_size(ctx, f); ++i) {
|
||||
Z3_solver_assert(ctx, s, Z3_ast_vector_get(ctx, f, i));
|
||||
}
|
||||
check(ctx, s, Z3_L_TRUE);
|
||||
|
||||
del_solver(ctx, s);
|
||||
|
@ -1685,7 +1689,7 @@ void parser_example3()
|
|||
Z3_symbol g_name;
|
||||
Z3_sort g_domain[2];
|
||||
Z3_func_decl g;
|
||||
Z3_ast thm;
|
||||
Z3_ast_vector thm;
|
||||
|
||||
printf("\nparser_example3\n");
|
||||
LOG_MSG("parser_example3");
|
||||
|
@ -1710,8 +1714,8 @@ void parser_example3()
|
|||
"(assert (forall ((x Int) (y Int)) (=> (= x y) (= (g x 0) (g 0 y)))))",
|
||||
0, 0, 0,
|
||||
1, &g_name, &g);
|
||||
printf("formula: %s\n", Z3_ast_to_string(ctx, thm));
|
||||
prove(ctx, s, thm, Z3_TRUE);
|
||||
printf("formula: %s\n", Z3_ast_vector_to_string(ctx, thm));
|
||||
prove(ctx, s, Z3_ast_vector_get(ctx, thm, 0), Z3_TRUE);
|
||||
|
||||
del_solver(ctx, s);
|
||||
Z3_del_context(ctx);
|
||||
|
@ -2286,46 +2290,6 @@ void unsat_core_and_proof_example() {
|
|||
Z3_del_context(ctx);
|
||||
}
|
||||
|
||||
void interpolation_example() {
|
||||
Z3_context ctx = mk_context();
|
||||
Z3_ast pa = mk_bool_var(ctx, "PredA");
|
||||
Z3_ast pb = mk_bool_var(ctx, "PredB");
|
||||
Z3_ast pc = mk_bool_var(ctx, "PredC");
|
||||
Z3_ast args1[2] = {pa,pb}, args2[2] = {Z3_mk_not(ctx,pb),pc};
|
||||
Z3_ast args3[2] = {Z3_mk_interpolant(ctx,Z3_mk_and(ctx,2,args1)),Z3_mk_and(ctx,2,args2)};
|
||||
Z3_ast f = Z3_mk_and(ctx,2,args3);
|
||||
Z3_ast_vector interpolant = 0;
|
||||
Z3_model m = 0;
|
||||
Z3_lbool result = Z3_L_UNDEF;
|
||||
|
||||
printf("\ninterpolation_example\n");
|
||||
LOG_MSG("interpolation_example");
|
||||
|
||||
result = Z3_compute_interpolant(ctx,f,0,&interpolant,&m);
|
||||
|
||||
switch (result) {
|
||||
case Z3_L_FALSE:
|
||||
printf("unsat\n");
|
||||
printf("interpolant: %s\n", Z3_ast_to_string(ctx, Z3_ast_vector_get(ctx, interpolant, 0)));
|
||||
printf("\n");
|
||||
break;
|
||||
case Z3_L_UNDEF:
|
||||
printf("unknown\n");
|
||||
printf("potential model:\n");
|
||||
if (m) Z3_model_inc_ref(ctx, m);
|
||||
display_model(ctx, stdout, m);
|
||||
break;
|
||||
case Z3_L_TRUE:
|
||||
printf("sat\n");
|
||||
if (m) Z3_model_inc_ref(ctx, m);
|
||||
display_model(ctx, stdout, m);
|
||||
break;
|
||||
}
|
||||
|
||||
/* delete logical context */
|
||||
if (m) Z3_model_dec_ref(ctx, m);
|
||||
Z3_del_context(ctx);
|
||||
}
|
||||
|
||||
#define MAX_RETRACTABLE_ASSERTIONS 1024
|
||||
|
||||
|
@ -2452,7 +2416,6 @@ Z3_lbool ext_check(Z3_ext_context ctx) {
|
|||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -2464,7 +2427,7 @@ void incremental_example1() {
|
|||
Z3_context ctx = ext_ctx->m_context;
|
||||
Z3_ast x, y, z, two, one;
|
||||
unsigned c1, c2, c3, c4;
|
||||
Z3_bool result;
|
||||
Z3_lbool result;
|
||||
|
||||
printf("\nincremental_example1\n");
|
||||
LOG_MSG("incremental_example1");
|
||||
|
@ -2485,7 +2448,7 @@ void incremental_example1() {
|
|||
c4 = assert_retractable_cnstr(ext_ctx, Z3_mk_lt(ctx, y, one));
|
||||
|
||||
result = ext_check(ext_ctx);
|
||||
if (result != Z3_L_FALSE)
|
||||
if (result != Z3_L_FALSE)
|
||||
exitf("bug in Z3");
|
||||
printf("unsat\n");
|
||||
|
||||
|
@ -2533,7 +2496,7 @@ void reference_counter_example() {
|
|||
|
||||
cfg = Z3_mk_config();
|
||||
Z3_set_param_value(cfg, "model", "true");
|
||||
// Create a Z3 context where the user is reponsible for managing
|
||||
// Create a Z3 context where the user is responsible for managing
|
||||
// Z3_ast reference counters.
|
||||
ctx = Z3_mk_context_rc(cfg);
|
||||
Z3_del_config(cfg);
|
||||
|
@ -2577,13 +2540,15 @@ void reference_counter_example() {
|
|||
*/
|
||||
void smt2parser_example() {
|
||||
Z3_context ctx;
|
||||
Z3_ast fs;
|
||||
Z3_ast_vector fs;
|
||||
printf("\nsmt2parser_example\n");
|
||||
LOG_MSG("smt2parser_example");
|
||||
|
||||
ctx = mk_context();
|
||||
fs = Z3_parse_smtlib2_string(ctx, "(declare-fun a () (_ BitVec 8)) (assert (bvuge a #x10)) (assert (bvule a #xf0))", 0, 0, 0, 0, 0, 0);
|
||||
printf("formulas: %s\n", Z3_ast_to_string(ctx, fs));
|
||||
Z3_ast_vector_inc_ref(ctx, fs);
|
||||
printf("formulas: %s\n", Z3_ast_vector_to_string(ctx, fs));
|
||||
Z3_ast_vector_dec_ref(ctx, fs);
|
||||
|
||||
Z3_del_context(ctx);
|
||||
}
|
||||
|
@ -3009,7 +2974,6 @@ int main() {
|
|||
binary_tree_example();
|
||||
enum_example();
|
||||
unsat_core_and_proof_example();
|
||||
interpolation_example();
|
||||
incremental_example1();
|
||||
reference_counter_example();
|
||||
smt2parser_example();
|
||||
|
|
|
@ -175,7 +175,7 @@ namespace test_mapi
|
|||
|
||||
string bench = string.Format("(assert (forall ((x {0}) (y {1})) (= ({2} x y) ({3} y x))))",
|
||||
t.Name, t.Name, f.Name, f.Name);
|
||||
return ctx.ParseSMTLIB2String(bench, new Symbol[] { t.Name }, new Sort[] { t }, new Symbol[] { f.Name }, new FuncDecl[] { f });
|
||||
return ctx.ParseSMTLIB2String(bench, new Symbol[] { t.Name }, new Sort[] { t }, new Symbol[] { f.Name }, new FuncDecl[] { f })[0];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -322,7 +322,6 @@ namespace test_mapi
|
|||
Status q = s.Check();
|
||||
Console.WriteLine("Solver says: " + q);
|
||||
Console.WriteLine("Model: \n" + s.Model);
|
||||
Console.WriteLine("Converted Model: \n" + ar.ConvertModel(0, s.Model));
|
||||
if (q != Status.SATISFIABLE)
|
||||
throw new TestFailedException();
|
||||
}
|
||||
|
@ -612,7 +611,6 @@ namespace test_mapi
|
|||
Expr f_x = ctx.MkApp(f, x);
|
||||
Expr f_y = ctx.MkApp(f, y);
|
||||
Expr g_y = ctx.MkApp(g, y);
|
||||
Pattern[] pats = new Pattern[] { ctx.MkPattern(new Expr[] { f_x, g_y }) };
|
||||
Expr[] no_pats = new Expr[] { f_y };
|
||||
Expr[] bound = new Expr[2] { x, y };
|
||||
Expr body = ctx.MkAnd(ctx.MkEq(f_x, f_y), ctx.MkEq(f_y, g_y));
|
||||
|
@ -622,14 +620,13 @@ namespace test_mapi
|
|||
Console.WriteLine("{0}", q1);
|
||||
}
|
||||
|
||||
// Quantifier with de-Brujin indices.
|
||||
// Quantifier with de-Bruijn indices.
|
||||
{
|
||||
Expr x = ctx.MkBound(1, ctx.IntSort);
|
||||
Expr y = ctx.MkBound(0, ctx.IntSort);
|
||||
Expr f_x = ctx.MkApp(f, x);
|
||||
Expr f_y = ctx.MkApp(f, y);
|
||||
Expr g_y = ctx.MkApp(g, y);
|
||||
Pattern[] pats = new Pattern[] { ctx.MkPattern(new Expr[] { f_x, g_y }) };
|
||||
Expr[] no_pats = new Expr[] { f_y };
|
||||
Symbol[] names = new Symbol[] { ctx.MkSymbol("x"), ctx.MkSymbol("y") };
|
||||
Sort[] sorts = new Sort[] { ctx.IntSort, ctx.IntSort };
|
||||
|
@ -730,7 +727,6 @@ namespace test_mapi
|
|||
{
|
||||
Console.WriteLine("BasicTests");
|
||||
|
||||
Symbol qi = ctx.MkSymbol(1);
|
||||
Symbol fname = ctx.MkSymbol("f");
|
||||
Symbol x = ctx.MkSymbol("x");
|
||||
Symbol y = ctx.MkSymbol("y");
|
||||
|
@ -977,7 +973,8 @@ namespace test_mapi
|
|||
|
||||
using (Context ctx = new Context(new Dictionary<string, string>() { { "MODEL", "true" } }))
|
||||
{
|
||||
Expr a = ctx.ParseSMTLIB2File(filename);
|
||||
BoolExpr[] fmls = ctx.ParseSMTLIB2File(filename);
|
||||
BoolExpr a = ctx.MkAnd(fmls);
|
||||
|
||||
Console.WriteLine("SMT2 file read time: " + (System.DateTime.Now - before).TotalSeconds + " sec");
|
||||
|
||||
|
@ -1319,7 +1316,7 @@ namespace test_mapi
|
|||
new Sort[] { int_type, int_type } // types of projection operators
|
||||
);
|
||||
FuncDecl first = tuple.FieldDecls[0]; // declarations are for projections
|
||||
FuncDecl second = tuple.FieldDecls[1];
|
||||
// FuncDecl second = tuple.FieldDecls[1];
|
||||
Expr x = ctx.MkConst("x", int_type);
|
||||
Expr y = ctx.MkConst("y", int_type);
|
||||
Expr n1 = tuple.MkDecl[x, y];
|
||||
|
@ -1383,7 +1380,9 @@ namespace test_mapi
|
|||
{
|
||||
Console.WriteLine("ParserExample1");
|
||||
|
||||
var fml = ctx.ParseSMTLIB2String("(declare-const x Int) (declare-const y Int) (assert (> x y)) (assert (> x 0))");
|
||||
var fmls = ctx.ParseSMTLIB2String("(declare-const x Int) (declare-const y Int) (assert (> x y)) (assert (> x 0))");
|
||||
var fml = ctx.MkAnd(fmls);
|
||||
|
||||
Console.WriteLine("formula {0}", fml);
|
||||
|
||||
Model m = Check(ctx, fml, Status.SATISFIABLE);
|
||||
|
@ -1399,7 +1398,7 @@ namespace test_mapi
|
|||
FuncDecl a = ctx.MkConstDecl(declNames[0], ctx.MkIntSort());
|
||||
FuncDecl b = ctx.MkConstDecl(declNames[1], ctx.MkIntSort());
|
||||
FuncDecl[] decls = new FuncDecl[] { a, b };
|
||||
BoolExpr f = ctx.ParseSMTLIB2String("(assert (> a b))", null, null, declNames, decls);
|
||||
BoolExpr f = ctx.ParseSMTLIB2String("(assert (> a b))", null, null, declNames, decls)[0];
|
||||
Console.WriteLine("formula: {0}", f);
|
||||
Check(ctx, f, Status.SATISFIABLE);
|
||||
}
|
||||
|
@ -1420,7 +1419,7 @@ namespace test_mapi
|
|||
BoolExpr thm = ctx.ParseSMTLIB2String("(assert (forall ((x Int) (y Int)) (=> (= x y) (= (gg x 0) (gg 0 y)))))",
|
||||
null, null,
|
||||
new Symbol[] { ctx.MkSymbol("gg") },
|
||||
new FuncDecl[] { g });
|
||||
new FuncDecl[] { g })[0];
|
||||
|
||||
Console.WriteLine("formula: {0}", thm);
|
||||
Prove(ctx, thm, false, ca);
|
||||
|
|
|
@ -167,12 +167,12 @@ class JavaExample
|
|||
"function must be binary, and argument types must be equal to return type");
|
||||
}
|
||||
|
||||
String bench = "(benchmark comm :formula (forall (x " + t.getName()
|
||||
String bench = "(assert (forall (x " + t.getName()
|
||||
+ ") (y " + t.getName() + ") (= (" + f.getName() + " x y) ("
|
||||
+ f.getName() + " y x))))";
|
||||
return ctx.parseSMTLIB2String(bench, new Symbol[] { t.getName() },
|
||||
new Sort[] { t }, new Symbol[] { f.getName() },
|
||||
new FuncDecl[] { f });
|
||||
new FuncDecl[] { f })[0];
|
||||
}
|
||||
|
||||
// / "Hello world" example: create a Z3 logical context, and delete it.
|
||||
|
@ -344,8 +344,6 @@ class JavaExample
|
|||
Status q = s.check();
|
||||
System.out.println("Solver says: " + q);
|
||||
System.out.println("Model: \n" + s.getModel());
|
||||
System.out.println("Converted Model: \n"
|
||||
+ ar.convertModel(0, s.getModel()));
|
||||
if (q != Status.SATISFIABLE)
|
||||
throw new TestFailedException();
|
||||
}
|
||||
|
@ -660,7 +658,7 @@ class JavaExample
|
|||
System.out.println(q1);
|
||||
}
|
||||
|
||||
// Quantifier with de-Brujin indices.
|
||||
// Quantifier with de-Bruijn indices.
|
||||
{
|
||||
Expr x = ctx.mkBound(1, ctx.getIntSort());
|
||||
Expr y = ctx.mkBound(0, ctx.getIntSort());
|
||||
|
@ -1041,7 +1039,7 @@ class JavaExample
|
|||
HashMap<String, String> cfg = new HashMap<String, String>();
|
||||
cfg.put("model", "true");
|
||||
Context ctx = new Context(cfg);
|
||||
Expr a = ctx.parseSMTLIB2File(filename, null, null, null, null);
|
||||
BoolExpr a = ctx.mkAnd(ctx.parseSMTLIB2File(filename, null, null, null, null));
|
||||
|
||||
long t_diff = ((new Date()).getTime() - before.getTime()) / 1000;
|
||||
|
||||
|
@ -1445,7 +1443,7 @@ class JavaExample
|
|||
|
||||
BoolExpr f = ctx.parseSMTLIB2String(
|
||||
"(declare-const x Int) (declare-const y Int) (assert (and (> x y) (> x 0)))",
|
||||
null, null, null, null);
|
||||
null, null, null, null)[0];
|
||||
System.out.println("formula " + f);
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
|
@ -1465,7 +1463,7 @@ class JavaExample
|
|||
FuncDecl[] decls = new FuncDecl[] { a, b };
|
||||
|
||||
BoolExpr f = ctx.parseSMTLIB2String("(assert (> a b))", null, null,
|
||||
declNames, decls);
|
||||
declNames, decls)[0];
|
||||
System.out.println("formula: " + f);
|
||||
check(ctx, f, Status.SATISFIABLE);
|
||||
}
|
||||
|
@ -1486,7 +1484,7 @@ class JavaExample
|
|||
BoolExpr thm = ctx.parseSMTLIB2String(
|
||||
"(assert (forall ((x Int) (y Int)) (=> (= x y) (= (gg x 0) (gg 0 y)))))",
|
||||
null, null, new Symbol[] { ctx.mkSymbol("gg") },
|
||||
new FuncDecl[] { g });
|
||||
new FuncDecl[] { g })[0];
|
||||
System.out.println("formula: " + thm);
|
||||
prove(ctx, thm, false, ca);
|
||||
}
|
||||
|
|
|
@ -9,4 +9,4 @@ On OSX and Linux, you must install z3 first using
|
|||
sudo make install
|
||||
OR update LD_LIBRARY_PATH (Linux) or DYLD_LIBRARY_PATH (OSX) with the build directory. You need that to be able to find the Z3 shared library.
|
||||
|
||||
This directory contains a test file (ex.smt) that can be use as input for the maxsat test application.
|
||||
This directory contains a test file (ex.smt) that can be used as input for the maxsat test application.
|
||||
|
|
|
@ -8,6 +8,8 @@ from __future__ import print_function
|
|||
from z3 import *
|
||||
import time
|
||||
|
||||
set_option("sat.gc.burst", False) # disable GC at every search. It is wasteful for these small queries.
|
||||
|
||||
def diff_at_j_is_i(xs, j, i):
|
||||
assert(0 <= j and j + 1 < len(xs))
|
||||
assert(1 <= i and i < len(xs))
|
||||
|
|
36
examples/python/parallel.py
Normal file
36
examples/python/parallel.py
Normal file
|
@ -0,0 +1,36 @@
|
|||
from z3 import *
|
||||
from multiprocessing.pool import ThreadPool
|
||||
from copy import deepcopy
|
||||
|
||||
pool = ThreadPool(8)
|
||||
x = Int('x')
|
||||
|
||||
assert x.ctx == main_ctx()
|
||||
|
||||
|
||||
def calculate(x, n, ctx):
|
||||
""" Do a simple computation with a context"""
|
||||
assert x.ctx == ctx
|
||||
assert x.ctx != main_ctx()
|
||||
|
||||
# Parallel creation of z3 object
|
||||
condition = And(x < 2, x > n, ctx)
|
||||
|
||||
# Parallel solving
|
||||
solver = Solver(ctx=ctx)
|
||||
solver.add(condition)
|
||||
solver.check()
|
||||
|
||||
|
||||
for i in range(100):
|
||||
# Create new context for the computation
|
||||
# Note that we need to do this sequentially, as parallel access to the current context or its objects
|
||||
# will result in a segfault
|
||||
i_context = Context()
|
||||
x_i = deepcopy(x).translate(i_context)
|
||||
|
||||
# Kick off parallel computation
|
||||
pool.apply_async(calculate, [x_i, i, i_context])
|
||||
|
||||
pool.close()
|
||||
pool.join()
|
|
@ -1609,7 +1609,6 @@ public:
|
|||
display_inference(out, "rewrite", "thm", p);
|
||||
break;
|
||||
case Z3_OP_PR_PULL_QUANT:
|
||||
case Z3_OP_PR_PULL_QUANT_STAR:
|
||||
display_inference(out, "pull_quant", "thm", p);
|
||||
break;
|
||||
case Z3_OP_PR_PUSH_QUANT:
|
||||
|
@ -1669,12 +1668,6 @@ public:
|
|||
case Z3_OP_PR_NNF_NEG:
|
||||
display_inference(out, "nnf_neg", "sab", p);
|
||||
break;
|
||||
case Z3_OP_PR_NNF_STAR:
|
||||
display_inference(out, "nnf", "sab", p);
|
||||
break;
|
||||
case Z3_OP_PR_CNF_STAR:
|
||||
display_inference(out, "cnf", "sab", p);
|
||||
break;
|
||||
case Z3_OP_PR_SKOLEMIZE:
|
||||
display_inference(out, "skolemize", "sab", p);
|
||||
break;
|
||||
|
@ -1706,10 +1699,6 @@ public:
|
|||
return display_hyp_inference(out, "modus_ponens", "thm", conclusion, hyp, hyp2);
|
||||
}
|
||||
case Z3_OP_PR_NNF_POS:
|
||||
case Z3_OP_PR_NNF_STAR:
|
||||
return display_hyp_inference(out, "nnf", "sab", conclusion, hyp);
|
||||
case Z3_OP_PR_CNF_STAR:
|
||||
return display_hyp_inference(out, "cnf", "sab", conclusion, hyp);
|
||||
case Z3_OP_PR_SKOLEMIZE:
|
||||
return display_hyp_inference(out, "skolemize", "sab", conclusion, hyp);
|
||||
case Z3_OP_PR_TRANSITIVITY:
|
||||
|
@ -2214,9 +2203,8 @@ static void check_error(z3::context& ctx) {
|
|||
static void display_tptp(std::ostream& out) {
|
||||
// run SMT2 parser, pretty print TFA format.
|
||||
z3::context ctx;
|
||||
Z3_ast _fml = Z3_parse_smtlib2_file(ctx, g_input_file, 0, 0, 0, 0, 0, 0);
|
||||
check_error(ctx);
|
||||
z3::expr fml(ctx, _fml);
|
||||
z3::expr_vector fmls = ctx.parse_file(g_input_file);
|
||||
z3::expr fml = z3::mk_and(fmls);
|
||||
|
||||
pp_tptp pp(ctx);
|
||||
pp.collect_decls(fml);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue