【发布时间】:2013-07-01 05:58:29
【问题描述】:
给定c == a + 4 和t == c + b,如果b == -4,那么t == a。我试图做相反的事情,这意味着鉴于上述 2 个方程和 t == a,我试图找到 b 的值。
这和related question很相似,但是这次我只切换a和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)
知道为什么这是错误的吗?
非常感谢。
【问题讨论】:
-
Round 2???我们在这里参加测验吗? -
不,我想说的是这与另一个问题有关。无论如何,我修复了标题以使其不那么混乱。谢谢。