Z3py - 求解数组变量约束时生成的函数 k!0
Z3py - function k!0 generated when solving constraints on Array variables
在我们的研究 activity 期间,我们正在研究 z3py 中的数组(Python API for Z3 v4.4.2)。
我们想知道为什么 z3 结果提供了比要求的更多的 Array 函数。例如,这里 k!0 弹出:
>>> A = Array('A', IntSort(), IntSort())
>>> solve(A[0] == 0)
[A = [0 -> 0, else -> 0], k!0 = [0 -> 0, else -> 0]]
z3 好像用了 k!0 作为辅助函数,但是我们在文档中没有找到任何东西。
有没有这方面的参考资料?
Z3 创建一个函数 k!0
从 Int
(数组索引)到值并将其转换为数组。虽然它没有打印在 Python 绑定中,但这可以从 Z3 REPL 中看到。
这在 数组模型 小节 http://rise4fun.com/Z3/tutorialcontent/guide#h26 中有简要描述。
(declare-const a1 (Array Int Int))
(assert (= (select a1 0) 0))
(check-sat)
;=> sat
(get-model)
;=> (model
; (define-fun a1 () (Array Int Int)
; (_ as-array k!0))
; (define-fun k!0 ((x!0 Int)) Int
; (ite (= x!0 0) 0
; 0))
; )
在我们的研究 activity 期间,我们正在研究 z3py 中的数组(Python API for Z3 v4.4.2)。
我们想知道为什么 z3 结果提供了比要求的更多的 Array 函数。例如,这里 k!0 弹出:
>>> A = Array('A', IntSort(), IntSort())
>>> solve(A[0] == 0)
[A = [0 -> 0, else -> 0], k!0 = [0 -> 0, else -> 0]]
z3 好像用了 k!0 作为辅助函数,但是我们在文档中没有找到任何东西。
有没有这方面的参考资料?
Z3 创建一个函数 k!0
从 Int
(数组索引)到值并将其转换为数组。虽然它没有打印在 Python 绑定中,但这可以从 Z3 REPL 中看到。
这在 数组模型 小节 http://rise4fun.com/Z3/tutorialcontent/guide#h26 中有简要描述。
(declare-const a1 (Array Int Int))
(assert (= (select a1 0) 0))
(check-sat)
;=> sat
(get-model)
;=> (model
; (define-fun a1 () (Array Int Int)
; (_ as-array k!0))
; (define-fun k!0 ((x!0 Int)) Int
; (ite (= x!0 0) 0
; 0))
; )