如何知道Peano数是否为偶数

时间:2018-11-15 19:10:03

标签: prolog successor-arithmetics

因此,在尝试使用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).

1 个答案:

答案 0 :(得分:1)

不要将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).