我在Z3中试用了PDR引擎,我不知道要使用哪个版本的Z3。
"官方"来自git的master分支似乎工作但是日期是2012年11月。我确信从那以后有了改进。另一方面,不稳定的分支可能包含不稳定和/或未经测试的代码",这似乎是真的。
什么是最近的"稳定"发动机的版本?
例如
(declare-rel R (Real Real))
(declare-var x Real)
(declare-var y Real)
(rule
(=> (and (= x 0) (= y 0)) (R x y))
)
(rule
(=> (R x y) (R (+ x 1) (+ y 1)))
)
(query
(and (R x y) (not (= x y)))
)
以上在master中工作,返回不满,但在不稳定的分支中,引擎徘徊不解决问题。同样适用于CAV最近的一篇论文中的example。
答案 0 :(得分:1)
这有点回归,感谢你指出这一点。 在检查归纳性时,旧版本的PDR使用查询中的谓词。更新后的版本省略了此功能,即使该属性很容易被视为归纳,也会有所不同。 使用查询中的谓词并不是很通用,我试图用其他方法替换它。例如,你可以做一个"魔术套装"转型应该推动适当的谓词。