我对Z3(smt2格式)操作 int2bv 有点困惑。我写了一个这样的smt2表达式:
(declare-const t1 Int)
(assert (= ((_ int2bv 2) t1) #b11))
(check-sat)
(get-model)
当我用Z3解决它时,它得到了:
sat
(model
(define-fun t1 () Int
0)
)
这是对的吗? t1不应该是3吗?我认为int2bv操作只是将int值转换为等效的bitvector值。但似乎没有!
谢谢!
答案 0 :(得分:1)
int2bv
函数基本上被解释为未解释的(如文档中所述),因此语义不精确。以前有一些关于这些转换函数的问题,它们在这里也可能有用: