【问题标题】:How to show that addition is primitive recursive?如何证明加法是原始递归的?
【发布时间】:2011-09-14 14:46:58
【问题描述】:

如何在带有数字的示例中显示加法是原始递归的。

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

【问题讨论】:

    标签: recursion primitive automata


    【解决方案1】:

    要证明函数φ 是原始递归函数,只需提供原始递归函数的有限序列即可通过组合和原始递归。定义了原始递归加法函数

    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 投影函数,为n >= 1n <= m 返回其nth 参数。为了证明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]
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多