如何知道 Peano 数是否为偶数

How to know if a Peano number is even

所以我很难尝试使用 Peano,我需要一些帮助。我想知道 Peano 数是否为偶数,如果是,则添加:

0 + s(s(0)) = s(s(0))
0 + s(0) = No because one of the numbers odd

我目前的代码:

s(0).
s(X):- 
    X.

add(0,Y,Y).
add(s(X), Y, s(Z)):- 
    add(X,Y,Z).

不要将 Peano 数视为数字,而应将其视为符号。

意识到偶数 Paeno 数是 0 和模式 s(s(X)) 的重复,其中 X 可以是 0 或模式 s(s(X))

另外,我将 0s(0) 等视为数据,而您正在使用 s 作为谓词名称。我并不是说这样不行,但我不是这么想的。

谓词的名称是paeno_even,它有一个参数。

基本情况是

paeno_even(0).

下一个递归案例

paeno_even(P)

并且 P 上的处理只是删除 s(s(X)) 所以在头部做

paeno_even(s(s(X)))

然后只做递归调用

paeno_even(s(s(X))) :-
    paeno_even(X).

几个测试来证明:

?- paeno_even(0).
true.

?- paeno_even(s(0)).
false.

?- paeno_even(s(s(0))).
true.

?- paeno_even(s(s(s(0)))).
false.

整个代码作为一个片段:

paeno_even(0).
paeno_even(s(s(X))) :-
    paeno_even(X).