私は、満足できるz3に与える特定の一連のアサーションを持っています。を呼び出すと(check-sat)
、z3 は を返しますsat
。次に を呼び出し(get-model)
、特定の変数 の定義を確認します%%P2_*_143
。次のようになります。
(define-fun %%P2_*_143 () JS (NUM 2.0))
この定義を取ると、それをアサーションに変えます
(assert (= %%P2_*_143 (NUM 2.0)))
再度呼び出す(check-sat)
と、z3 は を返しますunsat
。さらに、その後 を呼び出すと(get-unsat-core)
、z3 は を返します()
。
私の理解では、z3 によって作成されたモデルはすべての変数に満足のいく割り当てを与えるため、その割り当ても満足できるはずであると主張します。これは間違っていますか、それとも他の場所にバグがありますか?
アサーションのセット全体は、https ://gist.github.com/2966738 の要点にあります。追加されたアサーションは一番下にあります。
Mac OS X 10.7.4 で Z3 バージョン 3.2 を使用しています。http://rise4fun.com/z3のオンライン インターフェイスを使用して、この動作を再現することもできました。