如何使用带有" Int"的参数从位向量中提取数据类型?

时间:2015-09-07 13:01:26

标签: z3 bitvector

有没有有效的方法从位向量中提取位号i,而iInt数据类型?换句话说,是否有任何有效的smt脚本可以执行以下脚本的操作?

(declare-fun int-index () Int)
(assert (and (>= int-index 0) (<= int-index 21)))
(declare-fun bv1 () (_ BitVec 22))
(define-fun getbit ((x (_ BitVec 22)) (bv-index (_ BitVec 22))) (_ BitVec 1)
    ((_ extract 0 0) (bvlshr x bv-index)))
(assert (= #b1 (getbit bv1 ((_ int2bv 22) int-index))))
(check-sat-using (! smt :bv.enable_int2bv true) :print_model true)

提前谢谢。

1 个答案:

答案 0 :(得分:1)

不是真的,你需要创建一个“大”if-then-else术语,对bv-index进行大小写分析,然后使用(_ extract index index)函数,其中 “指数”必须是一个常数。