型理論に関するPerMartin-Löfsのアイデアの最良の紹介は何でしょうか?私はオレゴンPLサマースクールからのいくつかの講義を見てきましたが、私はまだ次の質問に戸惑っています:
タイプとは何ですか?
通常のZF公理で定義でき、非常に直感的な具体的なモデルがあるため、セットが何であるかを知っています。物がいっぱい入ったバスケットを考えてみてください。しかし、型の合理的な定義はまだわかりません。このアイデアをダミーに変換するソースがあるかどうか疑問に思っていました。
型理論に関するPerMartin-Löfsのアイデアの最良の紹介は何でしょうか?私はオレゴンPLサマースクールからのいくつかの講義を見てきましたが、私はまだ次の質問に戸惑っています:
タイプとは何ですか?
通常のZF公理で定義でき、非常に直感的な具体的なモデルがあるため、セットが何であるかを知っています。物がいっぱい入ったバスケットを考えてみてください。しかし、型の合理的な定義はまだわかりません。このアイデアをダミーに変換するソースがあるかどうか疑問に思っていました。
回答:
タイプは計算のプロパティです。それはコロンの右側に書くものです。
それについて詳しく説明させてください。用語は完全に標準ではないことに注意してください。一部の記事または本は、特定の概念に異なる単語を使用する場合があります。
用語は、計算を表すことを意図している抽象構文の要素です。直感的には、解析ツリーです。正式には、ノードがアルファベットに属する有限ツリーです。型なしの計算は、用語の構文を定義します。たとえば、(型なしの)ラムダ計算には、3つのタイプのノードから作成された用語(、Nなど)が含まれます。
用語は構文的な構成です。セマンティクスは計算に用語に関する。セマンティクスには多くの種類があり、最も一般的なのは操作可能(用語を他の用語に変換する方法を記述)または表示(用語を別の空間に変換することで記述し、通常集合論から構築されます)です。
タイプは、用語のプロパティです。型システム型なし計算のためには、用語がどの種類があるかを説明します。数学的には、コアでは、型システムは用語と型の関係です。より正確には、型システムはそのような関係のファミリーであり、コンテキストによってインデックスが付けられます。通常、コンテキストは少なくとも変数の型を提供します(つまり、コンテキストは変数から型への部分関数です)。すべての自由変数の型を提供するコンテキストで。型がどのような数学的オブジェクトであるかは、型システムに依存します。
一部の型システムは、交差、結合、理解などの集合論の概念を使用して、型を集合として記述します。これには、馴染みのある数学的基礎に基づいているという利点があります。このアプローチの制限は、同等の型に関する推論を許可しないことです。
多くの型システムは、型自体を型の計算の用語として記述します。型システムに応じて、これらは同じ用語でも異なる用語でもかまいません。基本用語というフレーズを使用して、計算を説明する計算の用語を参照します。たとえば、単純に型指定されたラムダ計算では、次の型の計算(などで記述)が使用されます。
単純に型付けされたラムダ計算を定義する用語と型の関係は、通常、型付け規則によって定義されます。型付け規則は型システムを定義する唯一の方法ではありませんが、一般的です。それらは、複合型システム、つまり、用語のタイプがサブタームのタイプから構築されるタイプシステムに適しています。タイピングルールは型システムを帰納的に定義します。各タイピングルールは、水平ルールより上の数式のインスタンス化に対して、ルールより下の数式も真であることを示す公理です。タイピングルールの読み方をご覧ください。詳細については。チューリング完全型付きラムダ計算が存在しますか?興味深いかもしれません。
単に型付きラムダ計算のために、タイピングの判断 手段はMは型があるτコンテキストでΓを。コンテキストの正式な定義は省略しました。 X :τ ∈ Γ
単純に型指定されたラムダ計算の型を集合として解釈することができます。これは、型に表示的なセマンティクスを与えることになります。基本用語の優れた表示のセマンティクスは、各基本用語にそのすべてのタイプの表示のメンバーを割り当てます。
直観主義型理論(Martin-Löf型理論としても知られています)は、型の計算にさらに多くの要素があるため、単純に型付けされたラムダ計算よりも複雑です(基本項にいくつかの定数も追加します)。しかし、基本原則は同じです。Martin-Löf型理論の重要な特徴は、型に基本用語を含めることができることです(依存型です):基本用語のユニバースと型のユニバースは同じですが、単純な構文規則(通常はソート、つまり書き換え理論での用語へのソートの割り当て)。
ほとんどの型システムには、数学の通常の基礎と結び付けるために、集合論的なセマンティクスが与えられています。 プログラミング言語と数学の基礎はどのように関係していますか?および 関数型のセマンティックビューと構文ビューの違いは何ですか?ここで興味があるかもしれません。型理論を数学の基礎として使用する作業も行われています。集合理論は歴史的な基礎ですが、唯一の選択肢ではありません。ホモトピー型理論は、この方向における重要なマイルストーンです。ホモトピー理論の観点から意図的な直観主義型理論のセマンティクスを説明し、このフレームワークで集合論を構築します。
Benjamin Pierceの本Types and Programming Languages and Advances Topics in Types and Programming Languagesをお勧めします。それらは、正式な数学的推論に基本的に精通していること以外の前提条件なしで、どの学部でも利用できます。TAPLは多くの型システムを記述しています。依存型はATTAPLの第2章の主題です。
集合論から来て、集合論とマーティン・ロフ型理論がどのように異なるかについて取り組んでいる誰かのためのより良い質問は、集合が何であるかを反映することです。集合論と数学の基礎についてのあなたの直観は、あなたが当たり前だと思う疑いのない集合論的仮定に感染するでしょう。AlasMartin-Löf型理論はこれらの仮定を共有しません。
従来の理解とは反対に、集合論は2つの 関係の理論です:等価と集合メンバーシップ、集合メンバーシップだけではありません。そして、これら2つの関係は、実質的に異なるフェーズで構築されます。
(単なるセットではなく)任意のものの平等性の理論として一次論理を構築します。一次論理は、証明の非公式の概念を使用します。概念証明自体は、1次論理だけで正式に表現できるものではありません。
次に、セットの理論として1次論理の上にセット理論を構築し、メンバーシップを設定します。
セットのメンバーシップと等式は、2つのセットが同じメンバーを持っている場合に正確に等しいと言う拡張性の公理によって関連付けられます。
最後に、(1)からの証明の非公式の概念は、特定のセット(証明ツリー)として事後の合理化を得ます。
それは実現するために重要なことは、概念のことである 証拠はこれで二級市民集合論インチ
この設定は、従来の小規模/中規模の数学では問題なく機能しますが、すべての有限単純グループの分類や重要なコンピュータープログラムの検証など、大規模な証明に取り組んでいるため、崩壊します。簡単な機械化につながるわけではありません。
私は、Martin-Löf型理論への簡単な経路を知りません。以下は紹介として役立つと思います。
ただし、「タイプとは何か」という質問に困惑している場合は、最初にもっと単純なタイプ理論に取り組むことをお勧めします。型指定されたプログラミング言語はすべて使用できますが、たとえばOcaml、F#、Haskellが特に役立ちます。少し簡略化すると、Martin-Löf型理論は、前述の言語の背後にある型を2つの方法で拡張していると言えます。
依存型の背後にある重要な考え方は単純です。型はプログラムによってパラメーター化できます。これは、上記のような従来のタイピングシステムでは不可能です(少し簡略化しています)。単純ではありますが、結果は深遠です。依存型は、Curry-Howardの対応を1次の建設的な論理に引き上げます。IDタイプは少し珍しいです。Haskellのような言語に慣れている場合は、Agdaを学ぶことができます。これは、基本的にMartin-Löf型理論のHaskellです。Agdaは、上記の本を読むよりもプログラマにとってはるかに簡単に習得できると思います。