z3 - pyZ3:扩展 smt2 输出中的 let 表达式?
问题描述
我正在尝试通过以下方式使用 z3 Python API 来“简化”一些 smtlib2 文件:
- 读取 SMTLIB2 文件
- 应用一些策略并提取一个简化的目标
- 将简化目标添加到新求解器
- 通过打印新的求解器
to_smt2()
我有一个奇怪的用例,如果生成的 smtlib 文件不包含任何let
表达式,那将是理想的。有没有办法通过 python API 来扩展它们?
解决方案
let 表达式的创建由漂亮的打印机控制。尝试类似:
set_option(max_args=10000000, max_lines=1000000, max_depth=10000000, max_visited=1000000)
您可以使用实际数字来找到适合您用例的设置。从本质上讲,数字越大,共享/切断的次数就越少。
同样重要的是参数min_alias_size
。也尝试将其设置为一个很大的数字。(默认值为 10,强制使用 let 表达式。)
推荐阅读
- php - Prestashop 1.6 中的社交共享模块中未捕获的 ArgumentCountError
- jenkins - 没有 Jenkinsfiles 的 Jenkins “github 组织” - 可能吗?
- javascript - JS从JSON解析后如何分配var的原型?
- linux - 在 armhf cpu 上的 ubuntu bionic 中安装 gcc-aarch64-linux-gnu 失败
- automation - Odoo 10:odoo 中的自动操作被错误触发
- php - 在 php 中从 db 添加多个复选框不显示
- android - Android可绘制字体突然无法正常工作
- tsql - Split up a delete query
- ios - Is certificate relate with provisioning profile in iOS?
- ios - iOS 无法从 iTunes 获取准确的应用程序版本