位向量策略导致 Z3Py 中的退出代码 139

Bit Vector tactic leads to exit code 139 in Z3Py

这是一个简单的位向量问题:

import z3

s = z3.Tactic('bv').solver()
m = z3.Function('m', z3.BitVecSort(32), z3.BitVecSort(32))
a, b = z3.BitVecs('a b', 32)

axioms = [
    a == m(12432),
    z3.Not(a == b)
]

s.add(axioms)
print(s.check())

Python 崩溃,错误代码 139。请注意,这不是我的真正问题,所以我 必须 在我的项目中使用位向量策略,尽管它smt战术甚至qfbv战术都没有任何问题。

这似乎是 4.4.0 中的一个错误。使用 4.4.0 和 Ubuntu 16.04 LTS 以及 Python 2.7,您可以重现该问题。但是在较新版本的 Z3 中,它已得到修复。我试过 4.4.2 并且它 returns sat.

https://github.com/Z3Prover/z3/issues/685