如何显示添加是原始递归?

时间:2011-09-14 14:46:58

标签: recursion primitive automata

如何在数字中显示添加是原始递归的。

我理解为什么它通过证明是原始的递归,但我无法想象它是如何用数字递归原始的。

1 个答案:

答案 0 :(得分:3)

为了表明函数φ是原始递归的,它足以提供一个有限的原始递归函数序列,从常量,后继和投影函数开始,并以φ结束,这样每个函数都是通过组合和原始递归从先前函数构造。原始递归加法函数已定义

add(0,x)     = φ(x)
add(n + 1,x) = ψ(n,x,add(n,x))
  where φ = P[1/1]
        ψ = S ∘ P[3/3]

其中P[m/n]m - ary投影函数,为nn >= 1返回n <= m个参数。为了证明add是原始递归,我们必须从基本函数构造φψ

1. P[1/1]                [Axiom]
2. P[3/3]                [Axiom]
3. S                     [Axiom]
4. S ∘ P[3/3]            [1,3 Composition]
6. PR(P[1/1],S ∘ P[3/3]) [1,4 Primitive Recursion]

函数φ由原始递归函数的公理提供。函数ψ由步骤(4)中的原始递归函数SP[3/3]的组合构成。最后,函数add在步骤(6)中通过原始递归从φψ构造。要查看如何通过原始递归函数(如add)计算值,只需在适当的位置系统地替换函数定义的右侧,然后简化。在下面的例子中,我已经崩溃了替换和组合的简化:

add(2,3) = S(P[3/3](1,3,add(1,3)))                 [Def. ψ]
         = S(P[3/3](1,3,S(P[3/3](0,3,add(0,3)))))  [Def. ψ]
         = S(P[3/3](1,3,S(P[3/3](0,3,P[1/1](3))))) [Def. φ]
         = S(P[3/3](1,3,S(P[3/3](0,3,3))))         [Def. P[1/1]]
         = S(P[3/3](1,3,S(3)))                     [Def. P[3/3]]
         = S(P[3/3](1,3,4))                        [Def. S]
         = S(4)                                    [Def. P[3/3]]
         = 5                                       [Def. S]

目前还不清楚你究竟在问什么,所以我总结了加法的原始递归定义,加法是原始递归的证据,并提供了一个示例计算。如果您仍然不清楚,对原始递归函数的小值执行计算可能会有所帮助。