Z3超时与解算器

时间:2012-06-01 17:14:30

标签: z3

我有一个简单的问题。如何通过以下API确定求解器是否超时 -

Z3_lbool Z3_API Z3_solver_check (Z3_context c, Z3_solver s )

因为Z3_lbool只是true,false或undefined。

1 个答案:

答案 0 :(得分:1)

您可以使用API​​ Z3_string Z3_solver_get_reason_unknown(Z3_context c, Z3_solver s)。 如果您使用的是C ++,则对象解算器会提供方法std::string reason_unknown()。这是一个使用它的小例子:

context c;
expr x = c.real_const("x");
expr y = c.real_const("y");
solver s(c);

s.add(x >= 1);
s.add(y < x + 3);

params p(c);
p.set(":timeout", static_cast<unsigned>(1)); // in milliseconds
s.set(p);

std::cout << s.check() << std::endl;
std::cout << "reason unknown: " << s.reason_unknown() << std::endl;