用于求解器超时的Z3 JAVA-API

时间:2013-03-20 01:56:07

标签: timeout z3 java-api

如何设置Z3 JAVA API的求解器超时?

再次回到这个问题:

这是我的代码:

    Context ctx = getZ3Context();
    solver = ctx.MkSolver();
    Params p = ctx.MkParams();
    p.Add("timeout", 1);
    solver.setParameters(p);

不起作用,解算器只是永远运行查询。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我没有使用过Java API,但是从查看官方Java examplethis snippet开始,我假设以下几行应该有效:

Solver s = ctx.MkSolver();
Params p = ctx.MkParams();
p.Add("timeout", valueInMilliseconds); /* "SOFT_TIMEOUT" or ":timeout"? */
s.setParameters(p);

答案 1 :(得分:0)

好的,终于找到了解决方案:

Context ctx = getZ3Context();
solver = ctx.MkSolver();
Params p = ctx.MkParams();
/* Also tried
 * p.Add("timeout", 1),
 * p.Add(":timeout", 1), 
 * neither worked.
 */
p.Add("soft_timeout", 1);
solver.setParameters(p);