我正在尝试在 上使用ForAll
量词,因此每个b
公式都会给我结果。我在下面的代码(Z3 python)中实现了这个:a * b == b
b
a == 1
from z3 import *
a, b, a1 = BitVecs('a b a1', 32)
f = True
f = And(f, a1 == a * b)
f = And(f, a1 == b)
s = Solver()
s.add(ForAll(b, f))
if s.check() == sat:
print 'a =', s.model()[a]
else:
print 'Unsat'
我希望 Z3a = 1
在输出时给我,但我得到了Unsat
。知道问题出在哪里吗?
(我怀疑我没有正确使用 ForAll,但不知道如何修复它)