1

编写一个谓词less/2,如果 t1 代表 n1,t2 代表 n2,则 less(t1, t2)当 n1 < n2 时成功。例如,less(s(z), s(s(s(z))))应该成功,less(s(z), s(z))应该失败。如果 t1 是未实例化的逻辑变量,而 t2 是自然数 n2 的正确表示,则谓词应枚举小于 n2 的所有数。例如,查询

?- less(X, s(s(z))).

应该成功X = z并且X = s(z)(不一定按此顺序)。

4

1 回答 1

1

您可以尝试以下方法:

ls(0,s(_)).
ls(s(X),s(Y)) :- ls(X,Y).

以下是一些示例运行:

?- ls(s(0),s(s(s(0)))).
Yes
?- ls(s(s(0)),s(0)).
No

再见

于 2014-01-08T15:57:37.327 回答