2
前の議論をフォローアップ:Z3 QBVFの質問
(declare-fun sx ((_ BitVec 16)) (_ BitVec 16))
(assert (forall ((y (_ BitVec 16))) (bvuge y (sx y))))
そして限りZ3に関しては
(declare-fun sx ((_ BitVec 16)) (_ BitVec 16))
(declare-fun y() (_ BitVec 16))
(assert (bvuge y (sx y)))
:Z3: Extracting existential model-values
は違いはありますか?つまり、後者のQBVFソルバーは自動的に取得されますか? (素晴らしいです)
(eval (sx #x8000))
(check-sat)
呼び出した後、それが正常に動作します:
また、実験時に私が発行することがわかりました。
(eval (sx (get-value (y))))
ああ、Z3はそれはinvalid function application
だと文句を言い、そのクエリのために:私も言うことができるならばどのような方が良いだろうことです。そのようにしてeval
関数を使用する方法はありますか?
ありがとうございます!