単純型ラムダ計算(型理論の一形態あるラムダ計算は、型コンストラクタが1つしかない型付き解釈である( )関数型を構築する。これは、型付きラムダ計算の標準的かつ最も単純な例である。単純な型付きラムダ計算は、型なしラムダ計算の逆説的な使用を避ける試みとして、1940 年にアロンゾ・チャーチによって最初に導入された。 [ 1 ]
単純型という用語は、積、余積、自然数などの構成要素(System T)や、完全再帰(PCFなど)を用いた単純型ラムダ計算の拡張を指す場合にも使用されます。対照的に、多相型( System Fなど)や依存型(Logical Frameworkなど)を導入するシステムは、単純型とはみなされません。完全再帰を除く単純型は、そのような構造のチャーチ符号化が1 文字のみで実現できるため、依然として単純型とみなされます。 また、適切な型変数も使用できますが、多態性や依存性は使用できません。
1930年代、アロンゾ・チャーチはロジスティック法を用いようとした。[ a ]記号表現に基づく形式言語としての彼のラムダ計算は、可算無限の公理と変数の系列から成り、 [ b ]抽象化とスコープを表す有限個の基本記号の集合、およびそれぞれ否定、選言、全称量化、選択を表す4つの定数、[ d ] [ e ]さらに、有限個の規則IからVIの集合も含まれていた。この有限個の規則の集合には、規則Vのモーダス・ポネンス、およびそれぞれ置換と一般化を表す規則IVとVIが含まれていた。 [ d ]規則IからIIIは、ラムダ計算ではアルファ、ベータ、イータ変換として知られている。チャーチは、解釈のない記号表現を記述するための構文言語(つまりメタ数学言語)としてのみ英語を用いようとした。[ f ]
1940年、チャーチは記号式における型を表すために添え字表記を採用した。[ b ]チャーチは発表の中で、2つの基本型のみを使用した。「命題の種類」と「タイプの個人」について。項定数はなく、1 つの項定数を持つ。通常、基底型が 1 つだけの微積分は、、が考慮されます。ギリシャ文字の添え字、 、など は型変数を表します。括弧付きの添え字は関数型を表します . Church 1940 p.58 では「矢印または」を使用しました。 ' は を表し、はの略語です。 [ g ] 1970年代までには、単独の矢印表記が使用されるようになりました。たとえば、この記事では、添え字のない記号が使用されています。そして型の範囲は、無限の公理が規則 I から VI を型に適用した結果であることが判明しました (ペアノ公理を参照)。非公式には、関数型は型 の入力が与えられた場合に、 となる関数のタイプを指します。、タイプの出力を生成します慣例として、右側の同僚たち:と読みます。 .
型を定義するために、一連の基本型、、まず定義する必要があります。これらは、アトミック型または型定数と呼ばれることもあります。これが確定すると、型の構文は次のようになります。
例えば、、で始まる無限の型セットを生成します。、 、 、 、 、 、 、...、 、...
基本型には、一連の項定数も固定されています。例えば、基本型の1つがnatであると仮定すると、その項定数は自然数となる可能性があります。
単純型ラムダ計算の構文は、基本的にラムダ計算そのものの構文と同じです。変数タイプは構文という用語は、バッカス・ナウア記法では、変数参照 、抽象化、適用、または定数である。
どこは項定数です。変数参照抽象化バインディング内にある場合はバインドされます。項は、未束縛変数がない場合に閉じている。
それに対し、型付けのないラムダ計算の構文には、そのような型付けや項定数は存在しない。
型付きラムダ計算では、すべての抽象化(つまり関数)は引数の型を指定しなければならない。
特定の型の型付けされたラムダ項の集合を定義するには、項と型の間の型付け関係を定義する。まず、型付けコンテキスト、または型付け環境を導入する。これらは型付けに関する仮定の集合です。型付けに関する仮定は次の形式をとります。、つまり変数タイプがあります .
型付け関係は、タイプの用語です文脈においてこの場合型が適切である(型が型付け関係のインスタンスは型付け判断と呼ばれます。型付け判断の妥当性は、型付け規則を使用して構築された型付け導出を提供することによって示されます(この導出では、行の上の前提から行の下の結論を導出できます)。単純型付けラムダ計算では、次の規則を使用します。 [ h ]
言葉で言うと、
空のコンテキストで入力可能な用語、つまり閉じた用語の例は次のとおりです。
これらは、組み合わせ論理の基本コンビネータの型付きラムダ計算表現です。
各タイプ順序、番号が割り当てられる . 基本型の場合、 ; 関数型の場合、 つまり、型の順序は、最も左にネストされた矢印の深さを測定する。したがって、次のようになる。
大まかに言えば、単純な型付きラムダ計算に意味を割り当てる方法は、より一般的には型付き言語と同様に、2つの異なる方法があり、それぞれ内在的意味論と外在的意味論、存在論的意味論と意味論的意味論、あるいはチャーチ式とカリー式などと呼ばれています。[ 1 ] [ 7 ] [ 8 ] 内在的意味論は、適切に型付けされた項にのみ意味を割り当てます。より正確には、型付けの派生に直接意味を割り当てます。このため、型注釈のみが異なる項にも、異なる意味を割り当てることができます。例えば、恒等項などがこれに該当します。整数と恒等項についてブール値に対するは、異なる意味を持つ可能性があります。(古典的な意図された解釈は、整数に対する恒等関数とブール値に対する恒等関数です。)対照的に、外在的意味論は、型付けに関係なく、型付けされていない言語で解釈されるように、用語に意味を割り当てます。この見解では、そして同じ意味(つまり、同じ意味) )
内在的意味論と外在的意味論の区別は、ラムダ抽象化に対する注釈の有無と関連付けられることがあるが、厳密に言えばこの用法は不正確である。注釈付き用語に対しては、型を無視する(つまり型消去を行う)だけで外在的意味論を定義できるのと同様に、注釈なし用語に対しても、文脈から型を推論できる(つまり型推論を行う)ことで内在的意味論を与えることができる。内在的アプローチと外在的アプローチの本質的な違いは、型付け規則を言語を定義するものと見なすか、より原始的な基盤言語の特性を検証するための形式と見なすかという点にある。以下で説明するさまざまな意味論的解釈のほとんどは、内在的観点と外在的観点のどちらからも理解できる。
単純型付きラムダ計算 (STLC) は、型なしラムダ計算と同じβη-等価性の等式理論を持つが、型制約を受ける。ベータ還元の等式[ i ]
文脈において保持されるいつでもそして 、一方、イータ減少の式[ j ]
いつでも保持しますそして無料には表示されません型付きラムダ計算の利点は、STLC によって、終了しない可能性のある計算を短縮(つまり、削減)できることである。 [ 9 ]
同様に、単純型ラムダ計算の操作的意味論は、名前呼び出し、値呼び出し、またはその他の評価戦略を使用して、型なしラムダ計算と同様に固定できます。任意の型付き言語と同様に、型安全性はこれらの評価戦略すべての基本的な特性です。さらに、以下で説明する強力な正規化特性は、任意の評価戦略がすべての単純型項で終了することを意味します。[ 10 ]
積型、ペアリング演算子、射影演算子で拡張された単純型ラムダ計算((同値性)は、ヨアヒム・ランベックによって最初に指摘されたように、デカルト閉圏(CCC)の内部言語である。[ 11 ] 任意のCCCが与えられると、対応するラムダ計算の基本型はオブジェクトであり、項は射である。逆に、基本型の集合と与えられた項に対する積型とペアリング演算子を持つ単純型ラムダ計算は、オブジェクトが型であり、射が項の同値類であるCCCを形成する。
ペアリング、射影、および単位項には型付け規則があります。2 つの項が与えられた場合そして、その用語タイプがあります同様に、用語がある場合、それから用語がありますそしてどこでは、デカルト積の射影に対応する。タイプ 1 の単位項は、次のように表記される。そして「nil」と発音されるのは最終目的語である。等式理論も同様に拡張され、次のようになる。
これは「tがタイプ1の場合、nilに還元される」と読みます。
上記は、型を対象とすることで圏に変換できる。射ペアの同値類であるここで、xは変数(型)です。 ) およびtは項 (型 )です ) には、(オプションで) xを除いて自由変数はありません。言語の項の集合は、抽象化と適用の操作の下でのこの項の集合の閉包です。
この対応関係は、デカルト閉圏の圏と単純型付きラムダ理論の圏との間の「言語準同型写像」および関手を含むように拡張することができる。
この対応関係の一部は、線形型システムを用いることで、閉じた対称モノイド圏に拡張することができる。
単純型ラムダ計算は、カリー・ハワード同型性を介して、命題直観主義論理の含意断片、すなわち含意命題計算と密接に関連している。すなわち、項は自然演繹における証明に正確に対応し、占有型はこの論理のトートロジーに正確に対応している。
チャーチは1940年にロジスティック法[ 1 ] p.58から公理図式[ 1 ] p.60を提示し、ヘンキンは1949年に型ドメイン(例えば自然数、実数など)を追加した[ 3 ] 。ヘンキンは1996年p.146で、チャーチのロジスティック法がモデル理論を通して数学(ペアノ算術と実解析)の基礎を提供しようと試みる方法について説明した[ 4 ]。
上記の説明は、単純型ラムダ計算の構文を定義する唯一の方法ではありません。
1つの代替案は、型注釈を完全に削除し(構文が型なしラムダ計算と同一になるように)、ヒンドレー・ミルナー型推論によって項が適切に型付けされるようにすることです。推論アルゴリズムは終了性、健全性、完全性を備えています。項が型付け可能である場合、アルゴリズムはその型を計算します。より正確には、項の主型を計算します。なぜなら、注釈のない項(例えば ) は複数のタイプを持つ可能性があります ( 、 など、これらはすべて主型のインスタンスです。 )
単純型ラムダ計算の別の表現方法は双方向型チェック[ 12 ]に基づいており、ヒンドレー・ミルナー推論よりも多くの型注釈を必要とするが、記述は容易である。型システムはチェックと合成の両方を表す2つの判断に分けられ、次のように記述される。そしてそれぞれ。運用上、3つの構成要素は、 、そしてこれらは全て、チェック判断への入力となる。、一方総合判断わずかそして入力として、次のタイプを生成します出力として。これらの判断は、以下の規則に基づいて導き出されます。
規則[1]~[4]は、チェック判断または合成判断の慎重な選択を除けば、上記の規則(1)~(4)とほぼ同じであることに注目してください。これらの選択は次のように説明できます。
合成ルールは上から下へ、チェックルールは下から上へ読むことに注意してください。特に、ルール[3]のラムダ抽象化には注釈は必要ありません。なぜなら、束縛変数の型は、関数をチェックする型から推論できるからです。最後に、ルール[5]と[6]を以下のように説明します。
これら最後の2つの規則は合成とチェックの間で強制的に適用されるため、型注釈を「十分に」挿入すれば、型付けは適切だが注釈のない項は双方向システムでチェックできることが容易にわかります。実際、注釈が必要なのはβ-redexの部分だけです。
標準的な意味論を前提とすると、単純型ラムダ計算は強く正規化される。すなわち、すべての還元シーケンスは最終的に終了する。[ 10 ]これは、型付け規則によって再帰が許可されていないためである。固定点コンビネータとループ項の型を見つけることは不可能である。再帰は、特別な演算子を用意することで言語に追加できます。タイプのあるいは、一般的な再帰型を追加するという方法もあるが、どちらも強力な正規化を排除してしまう。
型なしラムダ計算とは異なり、単純型付きラムダ計算はチューリング完全ではありません。単純型付きラムダ計算では、すべてのプログラムが停止します。一方、型なしラムダ計算では、停止しないプログラムが存在し、さらに、プログラムが停止するかどうかを判定できる一般的な判定手順は存在しません。