在 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
(这是第二部分)。所以,上面基本上是写出来的一种可能的定义。
具有以下定义:
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
(这是第二部分)。所以,上面基本上是写出来的一种可能的定义。