これは興味深い質問であり、その答えは絶対に簡単ではありません。
私は最初に短い答えを与えます:システムの階層があります、それらを呼び出します Tk、許可される唯一の再帰者は recUの順序でU≤kここで、型の順序は次のように定義されています。
ord(nat)=0
ord(U→V)=max(ord(V),ord(U)+1)
次に、定理は次のとおりです。
定理:ごとに、次のような項があります。ktk:nat→nat
tkは、して、で定義可能な関数よりも(関数として)速く成長します。N→NTll<k
あることに注意してください。T=⋃kTk
最初のステップとして、アッカーマン関数は次のように定義できることに注意すると便利です(chiの答えが示唆するように):
自分のミスを法として
ack(n,m)=recnat→nat(λf.recnat f 0 m) (λp.S p) n
これは確かに、「パワー」が追加されたことを示唆しています。recnat→nat
しかし、どのようにしてタワーを任意のまででしょうか。Tk
コツは、以下の3つの対応を考慮することです。
1)以下の序数ε0
2)導入が未満の量指定子の交替を持つステートメントに制限されているHeyting算術ののフラグメント。HAkk
3)定義可能な関数Tk
タワーの高さがである各序数について、そのような序数が十分に根拠があるというHeyting計算の証明を考慮することが可能です。そして、そこから、階層の関数に対応する、システムで可能な項を抽出します。λk=ωω…ωktkTkgλk
このような用語は、上で概説した対応とが十分な根拠を証明しないという事実のため、で適切に型指定することはできません。Tk−1HAk−1λk
嘘と参考文献:
、、および間の対応は、私が示唆したほどきれいではありません。実際には、、、および、それぞれがいくつかの具体的な定数によって関連付けられています。TkHAkλkkk′k′′
上記のパスに沿ったの明示的な構成は、Gentzenのまでの超帰納法の証明からのプログラム抽出で Ulrich Bergerによって提供されています
tkε0
トリプル対応については、証明やタイプより優れたリファレンスはありませんが、それを聞いて非常に嬉しく思います。