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'
a = 1
Z3 が出力で提供してくれると思っていましたが、そうではありませんでしたUnsat
。問題がどこにあるかについて何か考えはありますか?
(ForAll を適切に使用していないと思われますが、修正方法がわかりません)