我有以下代码,其中我将 is_max 定义为 is_below 的否定。
rank(mary,1).
rank(juan,2).
rank(john,3).
rank(jane,4).
is_below(X) :- rank(X,A), rank(Y,B), A<B .
is_max(X) :- not(is_below(X)) .
如果 X 在排名方面低于某人,is_below 为真。因此,具有最高/最大等级的人是 is_below 为假的人(因此定义了 is_max)。
当我查询
is_max(jane) .
这是真的(以上对于玛丽、胡安和约翰来说是错误的)
但是,当我查询
is_max(X) .
这是错误的。我期待它返回简。我的逻辑似乎很好,所以我不确定为什么我没有得到简。任何见解将不胜感激!