0

与えられた 2 つの方程式c == a + 4t == c + b、if a == -4、 then t == b。私は反対のことt == bしようとしていますa.

ForAllImpliesでこれを行うコードを以下に示します。

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([c, t, b], Implies(g, t == b)))

if s.check() == sat:
    print s.model()[a]
else:
    print 'Unsat'

ただし、上記のコードを実行するとUnsatが返されます。これは -4 (または 0xfffffffc) を返すと予想されるので、かなり混乱しています。

私が間違っている場所はありますか?

ありがとう!

4

1 に答える 1