4
這對我的課程會有很大的幫助。有沒有辦法讓swi prolog打印當前的工作推理樹?
這對我的課程會有很大的幫助。有沒有辦法讓swi prolog打印當前的工作推理樹?
您可以通過追蹤證明信息來嘗試並擴展簡單的「香草」元譯員。 基本上,普通的香草解釋如下所示:
solve([]). solve([A|T]) :- solve_atom(A), solve(T). solve_atom(A) :- my_clause(A,B), solve(B). my_clause(doubleapp(X,Y,Z,R),[app(X,Y,I),app(I,Z,R)]). my_clause(app([],L,L),[]).
您可以添加一個額外的參數來解釋跟蹤解決步驟,... 也許,你會希望使用內置的條款/ 2而不是my_clause(這樣你就不必手動插入你想要跟蹤的程序)。
我實際上爲我的演講寫了一個SICStus Prolog的(草稿)解決方案。它可以從命令行運行。 應該很容易適應SWI。 它可以生成SLD樹或And-Or-Tree的點表示形式。 我可以根據要求向您發送源代碼。
但是,也許SWI內置了一個更簡單的解決方案,我不知道。