Z3 C-API的求解器超时(Z3 C-API for solver timeout)

2019-09-21 23:21发布

我在Linux上使用Z3 4.1 C-API。 我想设定一个求解超时。

我使用下面的命令,但我得到一个分段错误的命令Z3_solver_set_params()。

Z3_context ctx = mk_context();     
    Z3_solver s = Z3_mk_solver(ctx);     

    Z3_params params = Z3_mk_params(ctx);     
    Z3_symbol r = Z3_mk_string_symbol(ctx, ":timeout");     

    Z3_params_set_uint(ctx, params, r, static_cast<unsigned>(10));     
    Z3_solver_set_params(ctx, s, params);     

看来,我没有正确使用的API。
我找不到任何例子为C-API来设置test_capi.c文件,其中包含例子求解超时。 任何人都可以帮忙吗?

Answer 1:

你需要做其他事情之前增加的求解器和引用计数参数。 下面是一个片段,它会经过。

Z3_config cfg = Z3_mk_config();
Z3_context ctx = Z3_mk_context(cfg);     
Z3_solver s = Z3_mk_solver(ctx);   
Z3_solver_inc_ref(ctx, s); 
{

Z3_params params = Z3_mk_params(ctx);  
Z3_params_inc_ref(ctx, params);
{
Z3_symbol r = Z3_mk_string_symbol(ctx, ":timeout");    


Z3_params_set_uint(ctx, params, r, 10);
Z3_solver_set_params(ctx, s, params);  
Z3_params_dec_ref(ctx, params);
}
}
Z3_solver_dec_ref(ctx, s);
Z3_del_config(cfg);
Z3_del_context(ctx);


文章来源: Z3 C-API for solver timeout
标签: z3