2011-08-02 23 views

回答

9

這些來自Z3教程的例子是爲了說明Z3背後技術的侷限性。

Z3失敗這些例子有兩個原因:

  1. 通過Z3產生的模型分配一個解釋用於每個未解釋的函數符號。這些模型可以被視爲功能程序。當前版本不會產生遞歸定義。第一個例子是可以滿足的,但Z3不能爲fib提供解釋,因爲它不支持遞歸定義。 我們計劃在這個方向上擴展Z3。

  2. Z3不支持歸納證明。例2和例3是不能令人滿意的,但Z3因爲它不支持歸納證明而失敗。我們也有計劃爲此添加基本支持。

雖然這些項目都在我的TODO列表上,但我今年不會開始研究它們。

+0

非常感謝您的快速回復。你知道任何支持遞歸函數的SMT解算器嗎? – reprogrammer

+0

SMT解算器在支持遞歸函數方面固有地受到限制,因爲底層的同餘閉包算法實例化了太多值的公式? – reprogrammer

+0

Z3(http://research.microsoft.com/en-us/um/redmond/projects/z3/fixedpoints-index.html)的定點擴展是否意在解決處理遞歸函數中Z3的侷限性? – reprogrammer