给定c == a + 4
和t == c + b
,如果b == -4
,那么t == a
。我试图做相反的事情,这意味着给定上述 2 个等式和t == a
,我试图找到 的值b
。
这与相关问题非常相似,但这次我只切换a
and b
,我真的很困惑代码返回不同的结果。
按照上面链接中发布的代码,我有以下代码(类似,仅a
和b
切换):
#!/usr/bin/python
from z3 import *
a, b, c, t = BitVecs('a b c t', 32)
g = True
g = And(g, c == (a + 4))
g = And(g, t == (c + b))
s = Solver()
s.add(ForAll([t, a, c], Implies(t == a, g)))
if s.check() == sat:
print s.model()[b]
else:
print 'Unsat'
但是,在 Ubuntu 上,运行上述代码会返回意外结果Unsat,但不会返回值-4(或0xfffffffc)
知道为什么这是错误的吗?
非常感谢。