Z3获取值的输出

时间:2016-08-26 12:20:12

标签: z3

我有通过get-value生成模型值的问题。 如果我尝试获取数组的值,我将得到一个值 包含未打印的内部z3常量。我知道 get-model会打印这些常量,但我想坚持下去 使用get-value。

这是一个例子(我在rise4fun上尝试过):

(declare-const b (Array Int Int))
(declare-const a (Array Int Int))
(assert (= (store a 1 2) b))
(check-sat)
(get-value (b a))

返回:

sat ((b (_ as-array k!1)) (a (_ as-array k!0)))

get-model的输出如下:

sat (model (define-fun b () (Array Int Int) (_ as-array k!1)) (define-fun a () (Array Int Int) (_ as-array k!0)) (define-fun k!0 ((x!1 Int)) Int 0) (define-fun k!1 ((x!1 Int)) Int (ite (= x!1 1) 2 0)) )

它包含k!0和k!1的值。是否可以在a和b的值中替换它们?

1 个答案:

答案 0 :(得分:0)

这是Z3对数组建模的限制。 get-value不能保证为数组提供有意义的结果。