附录B 理解PROLOG(1 / 1)

假设我们想要一个解释家庭关系的系统,我们将了解一个简单的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的姐妹。