【发布时间】:2017-10-01 03:18:21
【问题描述】:
我正在考虑做一些验证工作,其中我将常规树语法作为基础理论。
Z3 允许您使用未解释的函数定义自己的东西,但是当您的决策过程是递归的时,这往往不会很好地工作。他们曾经允许使用插件,但我认为这已经被贬低了。
我想知道,有没有人推荐一个体面的 SMT 求解器,可以让你为自定义理论编写决策程序?
【问题讨论】:
标签: z3 verification smt formal-verification sat
我正在考虑做一些验证工作,其中我将常规树语法作为基础理论。
Z3 允许您使用未解释的函数定义自己的东西,但是当您的决策过程是递归的时,这往往不会很好地工作。他们曾经允许使用插件,但我认为这已经被贬低了。
我想知道,有没有人推荐一个体面的 SMT 求解器,可以让你为自定义理论编写决策程序?
【问题讨论】:
标签: z3 verification smt formal-verification sat
鉴于大多数合理的 SMT 求解器都是开源的,因此有多种选择,您可以根据需要花费多少时间和精力在任何细节上集成理论求解器。
再次,我想说,对于第一个版本,您应该在外部集成方面取得相当大的进展,让 SMT 求解器处理命题 SAT 和未解释的函数(如果需要,还可以进行算术运算)。然后,您可以向求解器询问模型并添加理论公理,直到您从求解器返回的命题模型与您的理论一致(或者您得到 UNSAT)。 并非命题模型中的所有分配都是相关的。您可以通过应用双重传播 (http://www.cs.utexas.edu/users/hunt/FMCAD/FMCAD14/proceedings/29_niemetz.pdf) 来尽量减少您考虑的分配数量。
【讨论】: