如果 A 小于或等于 B,序言中的谓词为真
Predicate in prolog which is true if A is smaller or equal to B
我想在序言中写一个谓词 test(A,B)
如果 A 小于或等于 B,则为真。
查询示例(应该 return 为真):
test(s(s(0)), s(s(s(0)))).
test(s(s(s(0))), s(s(s(0)))).
这是我到目前为止编写的代码:
test(0,0).
test(0, s(B)) :- nat(B).
test(s(A),s(B)) :- test(A,B).
但它不起作用。
我假设您使用自然数作为“0 是 0”和 's(A) is A+1'。那么你可以这样写:
test(0,_). % everything is bigger or equal to 0.
test(s(A),s(B)) :- test(A,B). % s(A) <= s(B) when A <= B
我们将与 A 和 B 一起下去,直到:
1) A 变为 0 - 即 A <= B,返回 true
2) B 变为 0 而 A 不是 - 这意味着 B > A,返回 false。
我想在序言中写一个谓词 test(A,B)
如果 A 小于或等于 B,则为真。
查询示例(应该 return 为真):
test(s(s(0)), s(s(s(0)))).
test(s(s(s(0))), s(s(s(0)))).
这是我到目前为止编写的代码:
test(0,0).
test(0, s(B)) :- nat(B).
test(s(A),s(B)) :- test(A,B).
但它不起作用。
我假设您使用自然数作为“0 是 0”和 's(A) is A+1'。那么你可以这样写:
test(0,_). % everything is bigger or equal to 0.
test(s(A),s(B)) :- test(A,B). % s(A) <= s(B) when A <= B
我们将与 A 和 B 一起下去,直到:
1) A 变为 0 - 即 A <= B,返回 true
2) B 变为 0 而 A 不是 - 这意味着 B > A,返回 false。