意外的错误信息,再现显然非常脆弱 - 错误?

时间:2015-01-22 12:13:21

标签: z3

this program上运行Windows x64版本的Z3 4.3.2(官方下载)和Z3 4.4 0ab54b9e0c33(不幸的是很长)会产生invalid rational value passed as an integer

问题似乎不是类型检查器问题,因为明显违规的公式(程序中的最后check-sat)在类型上看起来很好:

(declare-const i@99 Int)
(declare-const k@38 Int)
...
(assert (not (and (<= 0 i@99) (< i@99 (+ k@38 1)))))
(check-sat) ; ERROR

我的猜测是在证明搜索期间出现问题,因为稍微更改程序会使错误消失。我尝试更改Z3的配置选项,并观察如果smt.arith.nl分别设置为false,如果smt.qi.eager_threshold设置为低于10的值,则错误消失。此外,基本上删除最后push-pop之前的任何check-sat范围也会使错误消失(尽管我实际上并没有尝试删除每个范围)。这两个观察结果都让我相信,在证据搜索期间和搜索空间的“区域”中,只有在特定情况下才会出现错误。

违规行以及我尝试过的行标有[XXX]

这是一个错误还是其他事情发生在这里?

1 个答案:

答案 0 :(得分:0)

可以在Z3的GitHub页面上遵循此问题:https://github.com/Z3Prover/z3/issues/32