在推理z3中的数组和位向量时超时

时间:2013-12-20 20:41:26

标签: arrays z3 smt bitvector

我正在考虑验证机器代码程序。由于现代SMT解决方案很多 有效地支持数组,我打算在我们的数据库中使用它们 验证工具。我正在玩z3,我注意到了 对公式的小改动会导致超时。

以下是我使用的两个示例:

1)http://rise4fun.com/Z3/e4Ci    *公式:=(array_32_8_0_1_0 == array_32_8_0_0_0)和(EBP_1_1_0 == EBP_1_0_0)和(不(array_32_8_0_1_0 [EBP_1_1_0 - 0] == array_32_8_0_1_0 [EBP_1_0_0 - 0]))*    对于这个例子,我变得不满意,这很好!

2)http://rise4fun.com/Z3/t8aT    *公式:=(array_32_8_0_1_0 == array_32_8_0_0_0)和(EBP_1_1_0 == EBP_1_0_0)和(不(array_32_8_0_1_0 [EBP_1_1_0 - 1] == array_32_8_0_1_0 [EBP_1_0_0 - 1]))*    对于这个例子,我得到一个超时。在我的机器上运行它 z3.exe一小时也没给我任何东西。这个例子是 与(1)几乎相同,只是数组访问涉及线性表达式。 (看看第16行的temp-var-4的定义)

为什么会这样?它与位向量的组合有关吗? 和阵列理论?

0 个答案:

没有答案