人
我正在使用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返回了不满意,这与之前版本的代码没有发生。
为什么会这样?
这可能吗?