附錄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的姐妹。