如何使用C API在Z3中提取数组的函数解释?当我使用以下实例查询Rise4Fun时:
(declare-fun arr () (Array Int Int))
(assert (= 5 (select arr 3)))
(check-sat)
(get-model)
(exit)
,我明白了:
sat
(model
(define-fun arr () (Array Int Int) (_ as-array k!0))
(define-fun k!0 ((x!1 Int)) Int (ite (= x!1 3) 5 5))
)
是否可以仅使用C API提取k!0
的函数解释?我已尝试在数组常量声明中应用Z3_model_get_func_interp
,并且还尝试在SAT模型中为数组返回的术语,但总是得到Error: invalid argument
。
答案 0 :(得分:0)
是的,这是可能的。最近提出了一个非常类似的问题,可以在这里找到带有示例的答案:Read func interp of a z3 array from the z3 model