型付きラムダ計算ではなく型なしラムダ計算で計算できる関数の例をいくつか知りたいだけです。
私は初心者なので、背景情報を何度か繰り返していただければ幸いです。
ありがとう。
編集:型付きラムダ計算により、System Fと単純型付きラムダ計算について知るつもりでした。関数とは、チューリング計算可能な関数を意味します。
型付きラムダ計算ではなく型なしラムダ計算で計算できる関数の例をいくつか知りたいだけです。
私は初心者なので、背景情報を何度か繰り返していただければ幸いです。
ありがとう。
編集:型付きラムダ計算により、System Fと単純型付きラムダ計算について知るつもりでした。関数とは、チューリング計算可能な関数を意味します。
回答:
Godelizationの良い例があります:ラムダ計算では、関数でできることはそれを適用することだけです。結果として、型閉じた関数を記述する方法はありません。これは、関数の引数を取り、そのためのゲーデルコードを返します。
これをヘイティング算術の公理として追加することは、通常「建設的な教会論文」と呼ばれ、非常に反古典的な公理です。つまり、それをHAに追加することは一貫していますが、ペアノ算術には追加しません!(基本的に、すべてのチューリングマシンが停止するかどうかは古典的な事実であり、この事実を目撃できる計算可能な機能はありません。)
最も単純な答えは、型付きラムダ計算が論理(単に型付きラムダ計算->述語論理;システムf->二次論理)に対応し、一貫した論理がそれ自体の一貫性を証明できないという事実によって与えられます。
したがって、型付きラムダ計算に自然数(または自然数の教会エンコード)があるとしましょう。System Fのすべての用語を一意の自然数に割り当てるゲーデル番号付けを行うことができます。次に、関数fがあります(そのシステムFでよく型付けされた項に対応)は任意の自然数をとる(そのことはよく型付けシステムFタームの正規形に相当する)は、別の自然数にしてのために何かを行いますSystem Fの適切に型付けされた用語に対応しない自然数(たとえば、ゼロを返します)。関数は計算可能であるため、型付けされていないラムダ計算では計算できますが、型付けされたラムダ計算では計算できません(後者は2次論理の一貫性の証明になるため) 2次論理は、2次論理が矛盾していることを意味します)。
警告1:2次論理に一貫性がない場合、System F ...にfを書き込むことができる可能性があります。型なしラムダ計算に-あなたが何かを書くことができますが、そうではないかもしれません常に終了します。これは「計算可能」の基準です。
警告2:「単純型付きラムダ計算」では、「固定小数点演算子または再帰関数を使用した単純型付きラムダ計算」を意味する場合があります。これは多かれ少なかれPCFで、型付けされていないラムダ計算のように、任意の計算可能な関数を計算できます。
型指定されていない -calculusは、Yコンビネータの形式で一般的な再帰を持ちます。単純に型付けされたλ - calculusはそうではありません。したがって、一般的な再帰を必要とする関数、たとえばアッカーマン関数は候補です。(各システムで自然数をどの程度正確に表現するかについての詳細は省略していますが、基本的には合理的なアプローチで十分です。)
もちろん、Yの力に合わせて、単純に型指定された - calculusをいつでも拡張できますが、ゲームのルールを変更することになります。
単純に型付けされたラムダ計算は、実際には驚くほど弱いです。たとえば、通常の言語認識できません。ただし、STLCが認識できる言語のセットの正確な特性を見つけたことはありません。
私が好きな強く正規化された計算の限界の1つのビジョンは、計算可能角度です。コアの単純型付きラムダ計算、System F、または構造の計算など、強く正規化された型付き計算では、すべての項が最終的に終了するという証拠があります。
場合は、この証明は建設的である、あなたは保証計算時間に上限を持つすべての条件を評価するために、固定アルゴリズムを取得します。または、(必ずしも必要ではない)証明を調べて、その証明から上限を抽出することもできます。これらの計算は表現力があるため、巨大になる可能性があります。
この境界は、この固定ラムダ計算に入力できない関数の「自然な」例を提供します。この境界より漸近的に優れているすべての算術関数。
正しく覚えていれば、単純に型付けされたラムダ計算で型付けされた用語は、指数の塔で評価できますO(2^(2^(...(2^n)..)
。このようなすべてのタワーよりも速く成長する関数は、この計算では表現できません。システムFは直観主義的な2次論理に対応しているため、計算能力は非常に大きいです。さらに強力な理論の計算可能性の強さをつかむために、通常、計算可能性理論の代わりに集合論とモデル理論(たとえば、どの序数を構築できるか)の観点から推論します。
あなたの質問を正しく理解していれば、簡単な例は , which takes a function and applies it to itself. You can define and reduce this function in the untyped lambda calculus (and in particular, you have , which is not normalizing), but you can't type , because that would mean finding a type such that .
A
such that A \ident A \rightarrow A
not strange? It sounds absurd to me, what am I overlooking?