在 Prolog 中,如何在谓词链中定义顺序时进行比较?

In Prolog, how to make comparison when order is defined in a chain of predicates?

具有以下定义:

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

如何定义规则 is_bigger(X,Y),使得 is_bigger(a,c)is_bigger(a,d) 将 return 为真。

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

简单定义is_bigger作为biggerThan关系的传递闭包:

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使得R包含在X中(这是第一个子句定义),并且使得 X = R o X(这是第二部分)。所以,上面基本上是写出来的一种可能的定义。