如何通过Z3中的C ++界面启用校样?我已经尝试了以下设置:将 - proof-proofs设置为true,但是如果我取消注释该行,当我尝试添加!猜想到解决方案时,我甚至在取消注释调用proof()的行之前就会崩溃。基于示例C ++文件中的函数:
void prove_example2(std::ostream& os) {
os << "prove_example2\n";
context c;
solver s(c);
params p(c);
//p.set(":produce-proofs", true);
s.set(p);
expr x = c.int_const("x");
expr y = c.int_const("y");
expr z = c.int_const("z");
sort I = c.int_sort();
func_decl g = function("g", I, I);
expr conjecture1 = implies(g(g(x) - g(y)) != g(z) && x + z <= y && y <= x,
z < 0);
s.add(!conjecture1);
os << "conjecture 1:\n" << conjecture1 << "\n";
if (s.check() == unsat) {
os << "proved" << "\n";
// Needs setup before calling
//os << s.proof() << "\n";
}
else
os << "failed to prove" << "\n";
}
答案 0 :(得分:0)
请参阅test_capi.c中的wwwroot/lib/jquery/
。必须在上下文和解算器中启用证明。在C ++中,最简单的方法可能是通过
mk_proof_context
在创建任何上下文或解算器之前。