我有兩個SMT問題實例。第一個是在這裏:Z3:更好的建模方式?
http://gist.github.com/1232766
Z3在我不那麼偉大的機器,這是偉大的約2分鐘返回一個模型,這個問題..我也有這樣一條:
http://gist.github.com/1232769
我已經在這個問題上過夜z3,沒有Z3完成。如果您檢查這些文件的內容,您會看到第二個與第一個相同,除了它有一個額外的斷言來「拒絕」第一個實例返回的模型。 (你可以在它們之間做一個「差異」來看看我的意思。)我碰巧知道這個問題有多個令人滿意的模型,我試圖用z3來找到所有令人滿意的模型。
我知道這可能是完全可以預料的,但我很想知道爲什麼第二個問題對Z3來說比第一個問題更爲棘手。有沒有更好的方法來制定第二個問題,所以Z3會有更輕鬆的時間?
謝謝..
謝謝,切換到v3.2和使用AUFBV幫助。我現在看到約。每分鐘一個解決方案,這是相當不錯的。 順便說一句,有沒有更好的方法來連續生成「全部」令人滿意的模型?到目前爲止,我一直在解析第一個模型的結果,並生成一個新程序來添加約束來拒絕原始數據,爲每個新模型重新啓動Z3。如果有一種方法可以說'(get-next-model)'或類似的方法,那麼Z3會返回一個不同的模型(如果存在的話)會更好。 –
我們沒有像get-next-model這樣的命令。但是,可以使用C API自動執行此功能。順便說一句,我相信Philippe Suter(http://lara.epfl.ch/~psuter/)實現了這個功能。 –