我有一些斷言,我給z3可以滿足。當我致電(check-sat)
時,z3會返回sat
。然後我打電話(get-model)
,並查看特定變量的定義,%%P2_*_143
。它看起來像這樣:從z3模型聲明定義不產生
(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重現此行爲。
解決方法現在可以使用。我只是使用模型進行調試。感謝您的及時響應! –