(declare-const a Int)
(declare-const b Int)
(declare-const c (_ BitVec 32))
(declare-const d (_ BitVec 32))
(assert (= b (bv2int c)))
(assert (= c (int2bv a)))
(check-sat)
我对上面代码引起的异常“int2bv需要一个参数”感到困惑,如何正确使用函数int2bv?
这是因为 int2bv 是一个参数函数,并且这些函数的 SMT2 语法是 (_ f p1 p2 ...),因此在这种情况下正确的语法是
((_ int2bv 32) a)
请注意,int2bv 本质上被视为未解释的; API文档说:
“注意。这个函数本质上被视为未解释的。所以你不能指望 Z3 在用这个函数解决约束时精确地反映这个函数的语义。” (从here)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)