如何知道 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))
另外,我将 0
和 s(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).
所以我很难尝试使用 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))
另外,我将 0
和 s(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).