api - 如何通过 (Z3) API 指定 smt.string_solver=z3str3?
问题描述
无论是否指定 smt.string_solver=z3str3,我都可以从命令行使用 z3 运行(字符串)查询:
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(叹气)......我一定是做错了什么,这是怎么回事?谢谢!
解决方案
z3str3
不是一个策略,而是一个参数(对于默认smt
策略)。您可以通过调用全局设置它(最好在构造任何上下文/求解器之前)Z3_global_param_set("smt.string_solver", "z3str3");
推荐阅读
- scala - 如何在 Scala 中为 (key - image name // value - image-file) 创建映射
- jenkins - Jenkins 等待工件下载完成
- javascript - 如何验证我输入的内容未存储在数据库中
- python - 如何将目录中子文件夹中的文件移动到python中的另一个目录?
- debugging - 在 VSCode 中用多种语言编写的调试项目
- swift - SwiftUI 网络图像显示加载和错误的不同视图
- javascript - 创建角色时角色覆盖 discord.js
- mysql - 创建一个表,该表根据其最新时间戳计算 id 的数量并根据标准进行分配
- delphi - 我可以获取 Indy TCP 连接缓冲区中尚未传输的字节大小吗?
- ruby-on-rails - Ruby on Rails:尝试从 API 获取 JSON 数据并保存到 Postgres 数据库 - rake 中止!TypeError:没有将字符串隐式转换为整数