0

具有以下定义:

biggerThan(a,b).
biggerThan(b,c).
biggerThan(c,d).

如何定义一个规则is_bigger(X,Y),这样is_bigger(a,c)andis_bigger(a,d)将返回 true。

此外,我对 Prolog 很陌生。标题是否正确解决了问题,如果没有,我该怎么说?

4

1 回答 1

1

简单定义is_biggerbiggerThan关系的传递闭包:

biggerThan(a,b).
biggerThan(b,c).
biggerThan(c,d).

is_bigger(X, Y) :- biggerThan(X, Y).
is_bigger(X, Y) :- biggerThan(X, Z), is_bigger(Z, Y).

关系的传递闭包R恰好是包含在(X这是定义的第一个子句)和(这是第二部分)中的最小关系。因此,以上基本上是写出的一种可能的定义。RXX = R o X

于 2018-02-11T16:49:27.620 回答