附錄B 理解PROLOG
假設我們想要一個解釋家庭關係的係統,我們將了解一個簡單的PROLOG程序如何捕獲有關家庭關係的知識。假設我們用“female ( X )”來表示 X 是女性,我們用“parents ( X, M, F )”表示 X 的雙親為 M 和 F,其中 M 為父親,F 為母親。然後你就可以編寫如下PROLOG規則:
sister_of ( X, Y ): - female ( X ), parents ( X, M, F ), parents ( Y, M, F ).
以上規則表述的是“X是Y的姐妹”,如果以下規則成立:
1. X是女性。
2. X的父親是 M,母親是 F。
3. Y的父親是 M,母親是 F。
如果你不熟悉邏輯推理,這聽起來似乎是用相當複雜的方式在表述某人是某人的姐妹。但基本上,它表述的意思是,如果X是女性,X和Y有相同的父母,則X是Y的姐妹。
我們可以給PROLOG程序增加一些新的事實:
female ( janine).
parents ( janine, wayne, yvonne).
parents (david, wayne, yvonne).
鑒於這些事實,如果我們讓PROLOG去證明Janine是David的姐妹,證明成立。本例中的相關目標是:
sister_of (david, janine)
當提出這個目標時,PROLOG就會回答“是”,表示它能夠證明Janine是David的姐妹。