Z3 C api:多维数组类型变量导致无效结果

时间:2015-03-02 09:15:13

标签: z3

这是Z3上下文:

    (forall ((X (Array Int (Array Int Real))) (i Int) (j Int))
     (let ((a!1 (* (- 1) (to_int (select (select X i) j)))))
        (= (+ (testArr X i j) a!1) 0))))

这意味着:

forall X,i,j. testArr(X,i,j) == X[i][j]

现在,我试图证明两个类似的断言:

 1 (=> (= (select (select Z i1) j1) (select (select X i) j))
       (= (select (select Z i1) j1)  (testArr X i j)))

 2 (=> (= v (select (select X i) j))
       (= v (to_real (testArr X i j))))

第二个断言Z3返回有效,但第一个断言Z3返回无效,而在其他示例中Z3有时返回unknown。 的为什么??

0 个答案:

没有答案