System Tでの高次プリミティブ再帰のためのアッカーマン階層


8

ゲーデルは、彼のSystem Tプリミティブ再帰でより高い型を定義しています。私はGirardからのメモを見つけました。彼は、単純に型指定されたラムダ計算に加えてSystem Tの実装を説明しています。50ページで、リカーサーでより多くの型を使用すると、システムでより表現力が高まると述べています。

これがどのように発生するのか正確にはわかりません。より高次のプリミティブ再帰を伴う一種のアッカーマン階層を考案することは可能ですか?つまり、各関数はSystem Tで表現可能ですが対角線は表現できない、より速く成長する関数の階層ですか?私はそう思うが、その構造は私には明らかではないようであり、どのようにそれを構築するか、または文献へのポインタを受け取るかについて興味がある。

私は何か具体的なものを求めています。Tにない関数の存在を証明する一般的な対角引数は知っていますが、実際に「型階層にステップアップ」する方法を確認したいと思います。


2
いい質問ですね。階層は、再帰が発生する型のランクに従うと思います。書く価値はほとんどあります。時間があればここに戻ってきます。
Andrej Bauer、

@AndrejBauer私はこれについて考えていました、そして型階層でより高いレベルで新しいイテレータを構築し、下で急成長する階層を実装できると思います fϵ0。おそらく、タイプレベルは、(いくつかのオフセットを伴って)上の指数の塔の高さに対応しますωω...階層では、しかし証明を引き出すことができませんでした(..まだ)。

ところで、プリミティブな再帰の後、次のレベルの再帰をどのように想定しますか?それがより高いタイプである場合、一般的な再帰(終了しないようにする)、またはまだ終了し続ける何らかの再帰(この場合、それは何ですか)を生きますか?
Andrej Bauer

@AndrejBauerこれはイテレータの定義にアプローチできると思います。(ラムダ計算の代わりに数論関数を使用しています。)たとえばI(f,0)=f(1)I(f,n+1)=f(I(f,n)) と定義 g(0)=Sg(n)=I(g(n1)) (Sは後継者)ここで g:N×NNNNf:NN。今h(n)=g(n)(n) に匹敵するはずです fω。への行き方fωn ために nN 実行可能なようですが、 fωω難しいようです。に着いた後fωω物事は晴れると思います。

あなたの例 I そして gまだSystem Tフラグメントにあります。
Andrej Bauer

回答:


1

(これは非常に部分的な回答であり、最初のポイントのみを扱っており、階層に関する主要な質問ではありません。)

私はあなたを指摘する証拠はありませんが、アイデアは次のような自然の単一の1次リカーサ

rec:(natnat)natnatnatrec fzn=f(f(f(z)))(n times f)

完全な(プリミティブ)再帰スキームよりもはるかに強力ではありません

recU:(UU)UnatU

後者は、システムFの多形用語にほぼ似ているため、多くのタイプで使用できます。 U

確かに、基本 rec計算可能性/再帰理論の本にあるように、最初のプリミティブな再帰スキームへのアクセスを提供するだけです。それだけで、アッカーマンのような関数は定義できないことがわかります。(まあ、ここには高次のラムダもあるので、これはそれほど明白ではありません。制約されているのは再帰だけです。しかし、要点はとにかく立つべきだと思います。)

とともに recU スキームではなく、代わりに U=natnatこれは、ジラードがOPによって言及された本で示しているように、アッカーマンの関数を定義できるようにします。したがって、このスキームはより強力です。


1

これは興味深い質問であり、その答えは絶対に簡単ではありません。

私は最初に短い答えを与えます:システムの階層があります、それらを呼び出します Tk、許可される唯一の再帰者は recU順序Ukここで、型の順序は次のように定義されています。

ord(nat)=0
ord(UV)=max(ord(V),ord(U)+1)

次に、定理は次のとおりです。

定理:ごとに、次のような項があります。ktk:natnat

  • Tktk:natnat

  • Tk1tk:natnat

tkは、して、で定義可能な関数よりも(関数として)速く成長します。NNTll<k

あることに注意してください。T=kTk

最初のステップとして、アッカーマン関数は次のように定義できることに注意すると便利です(chiの答えが示唆するように): 自分のミスを法として

ack(n,m)=recnatnat(λf.recnat f 0 m) (λp.S p) n

これは確かに、「パワー」が追加されたことを示唆しています。recnatnat


しかし、どのようにしてタワーを任意のまででしょうか。Tk

コツは、以下の3つの対応を考慮することです。

1)以下の序数ε0

2)導入が未満の量指定子の交替を持つステートメントに制限されているHeyting算術ののフラグメント。HAkk

3)定義可能な関数Tk

タワーの高さがである各序数について、そのような序数が十分に根拠があるというHeyting計算の証明を考慮することが可能です。そして、そこから、階層の関数に対応する、システムで可能な項を抽出ますλk=ωωωktkTkgλk

このような用語、上で概説した対応とが十分な根拠を証明しないという事実のため、で適切に型指定することはできません。Tk1HAk1λk

嘘と参考文献

、、および間の対応は、私が示唆したほどきれいではありません。実際には、、、および、それぞれがいくつかの具体的な定数によって関連付けられています。TkHAkλkkkk

上記のパスに沿ったの明示的な構成は、Gentzenのまでの超帰納法の証明からのプログラム抽出で Ulrich Bergerによって提供されています tkε0

トリプル対応については、証明やタイプより優れたリファレンスはありませんが、それを聞いて非常に嬉しく思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.