使用量词在Z3中重写代码

时间:2013-04-07 22:45:19

标签: arrays int z3 assertions quantifiers

我正在使用Microsft Z3编写模型,我需要添加以下断言:

(declare-const line (Array Int Int))

(assert (and (> (select line 1) 0) (< (select line 1) 4)))
(assert (and (> (select line 2) 0) (< (select line 2) 4)))
(assert (and (> (select line 3) 0) (< (select line 3) 4)))

正如您所看到的,我想说的是我的3长数组,称为 ,只能在[1..3]中包含元素]。这段代码完美无缺,但是,我希望能够使用量词来使用一行代码来进行这些断言。我试过了:

(assert (forall ((i Int)) (=> (and (> i 0) (< i 4)) (and (> (select line i) 0) (< (select line i) 4)))))

我认为它会起作用......但是在执行之后,Z3返回了不满意,这与之前版本的代码没有发生。

为什么会这样?

这可能吗?

0 个答案:

没有答案