我正在用python测试z3。我有以下型号:
(set-option :produce-models true)
(set-logic QF_AUFBV )
(declare-fun a () (Array (_ BitVec 32) (_ BitVec 8) ) )
(declare-fun another () (Array (_ BitVec 32) (_ BitVec 8) ) )
(assert (and (= false (= (_ bv77 32) (concat (select a (_ bv3 32) ) (concat (select a (_ bv2 32) ) (concat (select a (_ bv1 32) ) (select a (_ bv0 32) ) ) ) ) ) ) (= false (= (_ bv12 32) (concat (select another (_ bv3 32) ) (concat (select another (_ bv2 32) ) (concat (select another (_ bv1 32) ) (select another (_ bv0 32) ) ) ) ) ) ) ) )
我可以加载它并检查它是否是sat。此时我如何获得a
和another
的示例值?在
谢谢
默认情况下,Z3为数组生成
Lambda
抽象;这些抽象很有用,但是很难看到模型中发生了什么。我建议关闭它,在python程序中放入以下行:您应该在
import z3
之后立即执行此操作。在这样,如果在程序中打印模型,则可以得到:
^{pr2}$应该更具可读性。(它本质上是说}都是将所有内容映射到1的数组;尽管有点复杂。)
a
和{相关问题 更多 >
编程相关推荐