我正在编写一个需要将一些转换Int
为BitVec
反之亦然的问题的 BV 编码。
在mathsat
/optimathsat
一个可以使用:
((_ to_bv BITS) <int_term>) ; Int => BitVec
(sbv_to_int <bv_term>) ; Signed BitVec => Int
(ubv_to_int <bv_term>) ; Unsigned BitVec => Int
在z3
一个可以使用:
((_ int2bv BITS) <int_term>) ; Int => BitVec
??? ; Signed BitVec => Int
(bv2int <bv_term>) ; Unsigned BitVec => Int
在CVC4
一个可以使用:
((_ int2bv BITS) <int_term>) ; Int => BitVec
??? ; Signed BitVec => Int
??? ; Unsigned BitVec => Int
问:
- 有签名
z3
的功能吗?(看起来没有。)bv2int
BitVec
CVC4
有什么功能bv2int
吗?(我没有任何线索。)- 是否有记录这些转换功能的地方?(关于逻辑/理论的 SMT-LIB 网页似乎没有任何关于它们的信息。)
注意:我受限于基于文本的 SMT-LIB 接口(没有 API 解决方案)。