【发布时间】:2013-07-22 18:25:05
【问题描述】:
我的程序,反应式有限状态系统的有界合成器,生成 SMT 查询来注释(未解释的)系统的产品自动机和规范。本质上,它是一个带有未解释功能的模型检查。如果注释存在 => Z3 找到的模型满足规范。查询包含:
- 数据类型(用于编码系统和规范自动机的状态)
- >= (greater), > (strictly) (指定自动机系统*spec的状态排序函数,用于搜索状态不佳的lassos),或者换句话说,自动机的状态排序,
- 具有布尔域和范围的未解释函数
- 所有子句都是喇叭子句
一个例子是https://dl.dropboxusercontent.com/u/444947/posts/full_arbiter2.smt2 ('forall' 用于对函数的“无关”输入进行编码)
目前查询从整数算术中采用严格更大的> 运算符(即排名函数具有Int 范围)。
问题:是否值得在 Z3 中为此类查询开发自定义理论求解器?它可以利用基于 DFS 的套索搜索,这可能比整数理论求解器(或 diff-neg 策略)更快。
或者 Z3 已经有效地处理了这个问题? (有效地意味着“类似于基于图的套索搜索”)。
【问题讨论】:
标签: z3