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