Martin-Löf型理論の紹介


36

型理論に関するPerMartin-Löfsのアイデアの最良の紹介は何でしょうか?私はオレゴンPLサマースクールからのいくつかの講義を見てきましたが、私はまだ次の質問に戸惑っています:

タイプとは何ですか?

通常のZF公理で定義でき、非常に直感的な具体的なモデルがあるため、セットが何であるかを知っています。物がいっぱい入ったバスケットを考えてみてください。しかし、型の合理的な定義はまだわかりません。このアイデアをダミーに変換するソースがあるかどうか疑問に思っていました。


4
格好いいブックは種類やセットを比較して紹介している、おそらく意志のヘルプは、のセクション1.1を参照することをhomotopytypetheory.org/bookを。しかし、もっと重要なことは、タイプの正しい概念を直接頭に埋め込んでほしいのに対して、セットについては、「実際に何であるか」を主張することなく、公理によってそれらを説明させていただきます。まあ、型は型の推論規則によって記述されます。そして、彼らは非常に直感的な具体的なモデルを持っています、あなたは知っています、レゴブロックで満たされたバスク。あなたがそれらから構築できるものは何でもタイプです。
アンドレイバウアー

脳を集合論から遠ざけることが最大の問題だと思います。しかし、レゴの類推がどれほど良いかはわかりません。ブロックは何ですか?x:Aとy:Aが通常、Aが再帰的な矢印タイプでない限り、それらから何かを構築することはできません。もちろん私は頻繁に...第三のタイプのビルド何かに異なるタイプのものを混在させることができます
DST

4
Legoブロックは型コンストラクターです。そうから例えば及びあなたが構築することができるととおよびと。また、新しいタイプ、たとえばおよびなどを作成することもできます。人々はタイプについて異なる直感を持っています。セットはそれらの1つですが、粗雑です。タイプはトポロジ空間にも似ています。また、プログラミングにおける構造化データのようなものです。彼らは次のようでもあるY A X Y X X I N LX R E L F X λ Z Aをx I dx y z A I dx z ωx:Ay:A(x,y)(x,x)inl(x)relfバツλzAバツdバツyzAdバツzω -groupoidsのです。それがその美しさ、可能性の豊かさです。1つの可能性を選択して実行します。
アンドレイ・バウアー

回答:


31

タイプは計算のプロパティです。それはコロンの右側に書くものです。

それについて詳しく説明させてください。用語は完全に標準ではないことに注意してください。一部の記事または本は、特定の概念に異なる単語を使用する場合があります。

用語は、計算を表すことを意図している抽象構文の要素です。直感的には、解析ツリーです。正式には、ノードがアルファベットに属する有限ツリーです。型なしの計算は、用語の構文を定義します。たとえば、(型なしの)ラムダ計算には、3つのタイプのノードから作成された用語(Nなど)が含まれます。MN

  • アリティ0(その数え切れないほどのコレクション)の変数、yなどと書かれています。xy
  • アリティ1の変数のアプリケーション(変数への全単射とそのdenumerableコレクション)、書かれたなど。λx.M
  • アプリケーション、アリティ2、Mと書かれているMN

用語は構文的な構成です。セマンティクスは計算に用語に関する。セマンティクスには多くの種類があり、最も一般的なのは操作可能(用語を他の用語に変換する方法を記述)または表示(用語を別の空間に変換することで記述し、通常集合論から構築されます)です。

タイプは、用語のプロパティです。型システム型なし計算のためには、用語がどの種類があるかを説明します。数学的には、コアでは、型システムは用語と型の関係です。より正確には、型システムはそのような関係のファミリーであり、コンテキストによってインデックスが付けられます。通常、コンテキストは少なくとも変数の型を提供します(つまり、コンテキストは変数から型への部分関数です)。すべての自由変数の型を提供するコンテキストで。型がどのような数学的オブジェクトであるかは、型システムに依存します。

一部の型システムは、交差、結合、理解などの集合論の概念を使用して、型を集合として記述します。これには、馴染みのある数学的基礎に基づいているという利点があります。このアプローチの制限は、同等の型に関する推論を許可しないことです。

多くの型システムは、型自体を型の計算の用語として記述します。型システムに応じて、これらは同じ用語でも異なる用語でもかまいません。基本用語というフレーズを使用して、計算を説明する計算の用語を参照します。たとえば、単純に型指定されたラムダ計算では、次の型の計算(などで記述)が使用されます。τ

  • アリティ0(その有限または数え切れないコレクション)の基本型、書かれたBなど。AB
  • この関数は、アリティ2の、書かれたτ0τ1

単純に型付けされたラムダ計算を定義する用語と型の関係は、通常、型付け規則によって定義されます。型付け規則は型システムを定義する唯一の方法ではありませんが、一般的です。それらは、複合型システム、つまり、用語のタイプがサブタームのタイプから構築されるタイプシステムに適しています。タイピングルールは型システムを帰納的に定義します。各タイピングルールは、水平ルールより上の数式のインスタンス化に対して、ルールより下の数式も真であることを示す公理です。タイピングルールの読み方をご覧ください詳細については。チューリング完全型付きラムダ計算が存在しますか?興味深いかもしれません。

単に型付きラムダ計算のために、タイピングの判断 手段はMは型があるτコンテキストでΓを。コンテキストの正式な定義は省略しました。 X τ ΓΓM:τMτΓ

x:τΓΓx:τ(Γ)Γ,x:τ0M:τ1Γλx.M:τ0τ1(IΓMτ0τ1ΓNτ0ΓMNτ1E

ABλバツλyバツyABABEΓ

単純に型指定されたラムダ計算の型を集合として解釈することができます。これは、型に表示的なセマンティクスを与えることになります。基本用語の優れた表示のセマンティクスは、各基本用語にそのすべてのタイプの表示のメンバーを割り当てます。

直観主義型理論(Martin-Löf型理論としても知られています)は、型の計算にさらに多くの要素があるため、単純に型付けされたラムダ計算よりも複雑です(基本項にいくつかの定数も追加します)。しかし、基本原則は同じです。Martin-Löf型理論の重要な特徴は、型に基本用語を含めることができることです(依存型です):基本用語のユニバースと型のユニバースは同じですが、単純な構文規則(通常はソート、つまり書き換え理論での用語へのソートの割り当て)。

ほとんどの型システムには、数学の通常の基礎と結び付けるために、集合論的なセマンティクスが与えられています。 プログラミング言語と数学の基礎はどのように関係していますか?および 関数型のセマンティックビューと構文ビューの違いは何ですか?ここで興味があるかもしれません。型理論を数学の基礎として使用する作業も行われています。集合理論は歴史的な基礎ですが、唯一の選択肢ではありません。ホモトピー型理論は、この方向における重要なマイルストーンです。ホモトピー理論の観点から意図的な直観主義型理論のセマンティクスを説明し、このフレームワークで集合論を構築します。

Benjamin Pierceの本Types and Programming Languages and Advances Topics in Types and Programming Languagesをお勧めします。それらは、正式な数学的推論に基本的に精通していること以外の前提条件なしで、どの学部でも利用できます。TAPLは多くの型システムを記述しています。依存型はATTAPLの第2章の主題です。


TAPLの場合は+1。私はその本を読んで、タイプについてかなり自分自身を学ぶことができました。
ガイコーダ

ATTAPLが依存型について学ぶ良い出発点であるかどうかはわかりません。
マーティンバーガー

15

集合論から来て、集合論とマーティン・ロフ型理論がどのように異なるかについて取り組んでいる誰かのためのより良い質問は、集合が何であるかを反映することです。集合論と数学の基礎についてのあなたの直観は、あなたが当たり前だと思う疑いのない集合論的仮定に感染するでしょう。AlasMartin-Löf型理論はこれらの仮定を共有しません。

従来の理解とは反対に、集合論は2つの 関係の理論です:等価集合メンバーシップ、集合メンバーシップだけではありません。そして、これら2つの関係は、実質的に異なるフェーズで構築されます。

  1. (単なるセットではなく)任意のものの平等性の理論として一次論理を構築します。一次論理は、証明の非公式の概念を使用します。概念証明自体は、1次論理だけで正式に表現できるものではありません。

  2. 次に、セットの理論として1次論理の上にセット理論を構築し、メンバーシップを設定します。

  3. セットのメンバーシップと等式は、2つのセットが同じメンバーを持っている場合に正確に等しいと言う拡張性の公理によって関連付けられます。

  4. 最後に、(1)からの証明の非公式の概念は、特定のセット(証明ツリー)として事後の合理化を得ます。

それは実現するために重要なことは、概念のことである 証拠はこれで二級市民集合論インチ

この設定は、従来の小規模/中規模の数学では問題なく機能しますが、すべての有限単純グループの分類や重要なコンピュータープログラムの検証など、大規模な証明に取り組んでいるため、崩壊します。簡単な機械化につながるわけではありません。

TT

λ


これは非常に役に立ちました。建設的な数学に取り組む人にとっての大きな問題の1つは、多くのことを学ぶことだと思います。
dstの

同意する。認識されていないセット理論の仮定を学習するのに時間がかかります。たくさんのAgdaプログラミングをすることは私を助けてくれました。コンピューターサイエンスのバックグラウンドから来たのであれば、あなたにとっても役に立つかもしれません。
マーティンバーガー

10

私は、Martin-Löf型理論への簡単な経路を知りません。以下は紹介として役立つと思います。

ただし、「タイプとは何か」という質問に困惑している場合は、最初にもっと単純なタイプ理論に取り組むことをお勧めします。型指定されたプログラミング言語はすべて使用できますが、たとえばOcaml、F#、Haskellが特に役立ちます。少し簡略化すると、Martin-Löf型理論は、前述の言語の背後にある型を2つの方法で拡張していると言えます。

  1. 依存型。それらは、さまざまなプログラミング言語でより柔軟な形で見つかります。
  2. IDタイプ付き。これは、以前の従属型理論に対するMartin-Löfの主要な革新です。

依存型の背後にある重要な考え方は単純です。型はプログラムによってパラメーター化できます。これは、上記のような従来のタイピングシステムでは不可能です(少し簡略化しています)。単純ではありますが、結果は深遠です。依存型は、Curry-Howardの対応を1次の建設的な論理に引き上げます。IDタイプは少し珍しいです。Haskellのような言語に慣れている場合は、Agdaを学ぶことができます。これは、基本的にMartin-Löf型理論のHaskellです。Agdaは、上記の本を読むよりもプログラマにとってはるかに簡単に習得できると思います。


私は実際にHaskellを知っています。私の問題は、どのチュートリアルでも型の定義方法を説明するだけで、実際に型を定義することはないということです。型チェッカーがポリモーフィック関数の適切なバージョンを選択し、意味をなさない方法で物事が混合されていないことを確認できるように、すべてのデータに付けられた魔法のタグのようです。彼らはまだタイプが何であるかという問題を未解決のままにしている。Voevodsky&coはこれにすべての数学の基礎を置こうとしているので、これには特に困惑していますが、正確な定義を見たことはありません。
dst

2
ΓMαMαMMΓ

型は、Haskell、Martin-Löf型理論、およびVoevodskyのホモトピー型理論で非常に正確に定義されています。あいまいさはまったくありません。たとえば、付録A.2は、ホモトピー型理論のすべての用語と型の証明システムを示しています。さらに厳密にしたい場合は、CoqまたはAgdaの公式化をご覧ください。
マーティンバーガー

2
タイプを定義する以外に本質を持たないタイプを飲み込む必要があるかもしれません。これは、例えば集合と違いはありません。集合理論の公理によって与えられます。(これはまったく真実ではありませんが、それでも理解することが重要です。)
マーティンバーガー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.