4
我正在嘗試一些涉及遞歸函數的a Z3 tutorial的示例。我試過了下面的例子。Z3能檢查包含遞歸函數的公式的可滿足性嗎?
Z3次對所有的上述實例。但是,該教程似乎暗示只有Inductive不是終止。
Z3能否檢查包含遞歸函數的公式的可滿足性,還是不能處理任何歸納事實?
我正在嘗試一些涉及遞歸函數的a Z3 tutorial的示例。我試過了下面的例子。Z3能檢查包含遞歸函數的公式的可滿足性嗎?
Z3次對所有的上述實例。但是,該教程似乎暗示只有Inductive不是終止。
Z3能否檢查包含遞歸函數的公式的可滿足性,還是不能處理任何歸納事實?
這些來自Z3教程的例子是爲了說明Z3背後技術的侷限性。
Z3失敗這些例子有兩個原因:
通過Z3產生的模型分配一個解釋用於每個未解釋的函數符號。這些模型可以被視爲功能程序。當前版本不會產生遞歸定義。第一個例子是可以滿足的,但Z3不能爲fib提供解釋,因爲它不支持遞歸定義。 我們計劃在這個方向上擴展Z3。
Z3不支持歸納證明。例2和例3是不能令人滿意的,但Z3因爲它不支持歸納證明而失敗。我們也有計劃爲此添加基本支持。
雖然這些項目都在我的TODO列表上,但我今年不會開始研究它們。
非常感謝您的快速回復。你知道任何支持遞歸函數的SMT解算器嗎? – reprogrammer
SMT解算器在支持遞歸函數方面固有地受到限制,因爲底層的同餘閉包算法實例化了太多值的公式? – reprogrammer
Z3(http://research.microsoft.com/en-us/um/redmond/projects/z3/fixedpoints-index.html)的定點擴展是否意在解決處理遞歸函數中Z3的侷限性? – reprogrammer