如何在Boolector中使用64位整数

时间:2019-06-20 17:07:41

标签: smt

我正在尝试使用boolector创建模型,但是我找不到代表64位整数的方法。实际上,该数字总是被截断为32位。我认为这是由于我使用boolector_int作为参数(请参见doc)的uint32

有人可以建议我代表这种数字吗?老实说,目前我看不到为什么可以创建一个64位的boolector_bitvec_sort并且boolector_int只接受uint32的原因。

谢谢

1 个答案:

答案 0 :(得分:1)

boolector_int函数旨在从实际的int32_t进行转换。同样,boolector_unsigned_int旨在从实际的uint32_t进行转换。

对于您的用例,请使用以下功能之一:

  • boolector_const
  • boolector_constd
  • boolector_consth

基本上接受字符串作为参数来放入常量。请参阅:https://github.com/Boolector/boolector/blob/ae2a749b858b42c06d436353d8c1857b05021b2e/src/boolector.h#L707-L743

这有点round回旋,但是从本质上讲,您将首先将常量转换为字符串,然后将其传递。 (不同的变体本质上允许二进制,十进制和十六进制表示。)这样,您不必担心该常量的实际宽度,因为这些函数还将目标sort作为参数。