如何指定smt.string_solver = z3str3到(Z3)API?

时间:2018-06-12 08:48:00

标签: api z3

我可以在命令行中使用z3运行(字符串)查询,无论是否指定smt.string_solver = z3str3:

z3 [smt.string_solver=z3str3] input.smt

我如何通过API 指定相同的内容? 我尝试用以下方法打印战术名称:

/***************/
/* [0] Context */
/***************/
Z3_context ctx = mk_context();

/**************/
/* [1] Solver */
/**************/
Z3_solver solver = mk_solver(ctx);

/*******************************/
/* [2] Print the tactics names */
/*******************************/
for (i=0;i<Z3_get_num_tactics(ctx);i++)
{
    printf("tactic %d is %s\n",i,Z3_get_tactic_name(ctx,i));
}

我得到 105个战术名称的列表,但没有z3str3 (叹气)......我一定做错了什么,发生了什么事?谢谢!

1 个答案:

答案 0 :(得分:1)

z3str3不是一种策略,而是一个参数(对于默认的smt策略)。您可以通过调用Z3_global_param_set("smt.string_solver", "z3str3");

全局设置它(理想情况下在构造任何上下文/解算器之前)