セットとタイプのセマンティックの違いは何ですか?


33

編集:カテゴリとセットの違いについて同様の質問をしました

型理論(確かに非公式ですが)について読むたびに、具体的には集合論とどう違うのかを本当に理解できません。

「xはセットXに属している」と「xはタイプXである」という概念的な違いがあることを理解しています。それにもかかわらず、セットもしばしばプロパティに従って定義されます。もしそうであれば、この区別がどのように重要であるかを理解するのに苦労しています。

だから、ほとんどの中で具体的な可能性のある方法、まさにそれがない暗示 についてx T S、それは型であることを言ってそれは集合の要素であると言っに比べて、?TS

(比較を最も明確にする任意のタイプとセットを選択できます)。


「タイプ」という言葉を使用/聞いている文脈は何ですか?あなたの名前が示すように、プログラミング言語ですか?下の答えはそうでないと仮定していると思うからです。
アインポクルム-モニカを復活させる

@einpoklum、「コンテキスト」が何であるかを100%確信することはできませんが、基本的には次のようなものです。数学における型の役割を理解しようとしています。基本的に、セット(私が見るように)には2つのコンテキストがあります。1つは、日常の数学を行うオブジェクトのコレクションとして使用されます。2つ目は、セットを関数や数字などに対応させることにより、一次論理で数学について話す。私は主に、第一の意味での「セット」と「タイプ」の関係に興味があります。
user56834

どのタイプの役割?数学の論文/教科書に表示されるタイプ、またはコンピュータープログラムの変数のタイプ
アインポクルム-モニカを復活させる

1
@einpoklum、この質問は数学の論文に関するものです。(実際には、数学の型とプログラミング言語の型の根本的な違いがあればそれも知りたいと思っていますが、それはこの質問の目的ではありませんでした)。
user56834

回答:


29

セットとタイプの違いを理解するには、数学のの「コレクション」と「構築」の考え方に戻り、セットとタイプがこれらを数学化する方法を確認する必要があります。

数学が何であるかについては、さまざまな可能性があります。これらの2つは次のとおりです。

  1. 数学は、数学的なオブジェクトがいくつかのルールに従って構築されるアクティビティと考えます(幾何学は、定規とコンパスで点、線、円を構築するアクティビティと考えてください)。したがって、数学的オブジェクトは、それらがどのように構築されるかに従って編成され、さまざまなタイプの構築があります。数学的オブジェクトは常に何らかのユニークな方法で構築され、そのユニークなタイプを決定します。

  2. 数学は、既存の数学的オブジェクトで満たされた広大な宇宙と考えています(与えられた幾何学的平面を考えてください)。これらのオブジェクトを発見し、分析し、考えます(平面内に点、線、円があることを観察します)。私たちは、収集にそれらをセット。通常、共通点(たとえば、特定のポイントを通過するすべての線)を持つ要素を収集しますが、原則として、セットはオブジェクトの任意の選択をまとめることができます。セットは要素によって指定され、要素によってのみ指定されます。数学的オブジェクトは多くのセットに属する場合があります。

上記の可能性が2つだけであるとか、それらのいずれかが数学とは何かを完全に説明しているとは言いません。それにもかかわらず、それぞれが見ることができることは、広範囲の数学的活動を有用に説明する一般的な数学的理論の有用な出発点として役立ちます。

型取るのが自然である、我々はのルール使用して構築できることをすべてのもののコレクションを想像。これはの拡張であり、自体ではありません。たとえば、構成のルールが異なる2つのタイプがありますが、拡張子は同じです。T T TTTT T

  1. ペアのタイプ自然数として構成され、そして証拠実証として構成されより大きい偶数素数である。n p n 3(n,p)npn3

  2. ペアの種類自然数として構築され、、その証明証として構成され奇数の素数未満である。m q m 2(m,q)mqm2

はい、これらは馬鹿げた些細な例ですが、ポイントは立っています:両方のタイプはその拡張には何もありませんが、それらは異なる構築規則を持ってます。対照的に、セット および 同じ要素を持っているため等しいです。{ M N | mが  より奇素数小さい  2 }

{nNn is an even prime larger than 3}
{mNm is an odd prime smaller than 2}

型理論は構文に関するものではないことに注意してください。集合論がコレクションの数学的理論であるように、それは構造の数学的理論です。ちょうどので、型理論の通常のプレゼンテーションは、構文を強調することを起こり、その結果、人々は思考型理論が終わるある構文。これはそうではありません。数学オブジェクト(構造)をそれを表す構文表現(用語の前者)と混同することは、論理学者を長い間困惑させてきたが、もはやそうではない基本的なカテゴリの誤りです。


1
美しい、ありがとう!一つの詳細を明確にしていただけますか?拡張子が両方とも空である2つの型をリストすると、「要素が... である型」と言います。純粋に明確にするために、これは100%正しい言い方ですか?前の文で、型はコレクションではないため、「要素」(私はセットに関連付ける)を持つことはできないようです。本質的に、今あなたが書いた方法は、あたかもそのエクステンションであるセットに従ってタイプを定義しているようなものです。これを意図していなかった場合、それらをより正確に言い換えて、アイデアをタイプとしてキャプチャできますか?
user56834

型の拡張は非常に有用な概念であり、一種のコレクションであるため、「型の拡張の要素」と言うことができます。これは面倒なので、多くの場合、単に「型の要素」と略されます。混乱の可能性を減らすためにフレージングを削除しましたが、一般的な用語であることに注意してください。
アンドレイバウアー

ありがとう、これは明らかにする。したがって、フォローアップするために、次のように言うのは正しいですか?オブジェクトが「タイプT」であると言うことは、オブジェクトが「Tの拡張の要素」と同じことを意味するため、タイプからセットへの自然な推測があります。しかし、どのセットも複数の方法で構築できるため、逆は成り立ちません。本質的に、特定のオブジェクト観点からは、セットとタイプの違いは重要ではありませんと(はの拡張子)がについてまったく同じ情報を提供するという意味です。ただし、X T のx X T X T T Xxx:TxXTXTTx
user56834

型とセット、およびそれらのプロパティとリレーションについて説明する場合、違いは関連しています。私たちが言うとき、我々は失うことを換言すれば、情報はなく私たちについての関連は何も教えてくれない、私たちは例えばスーパーセットサブセットまたはタイプ-について話をしたい場合は、同じでは保持しない場合がありますサブタイプ関係?あれは正しいですか? X T XxXTx:Tx
user56834

4
うん、これらの本がどこにあるのか疑問に思う。誰かがそれらを書くべきです。
アンドレイ・バウアー

11

開始するには、セットとタイプは同じ分野にさえありません。セットは、ZFCセット理論などの1次理論のオブジェクトです。型は生い茂ったソートのようなものです。別の言い方をすれば、集合論は一次論理内の一次理論です。型理論は、論理そのものの拡張です。たとえば、Martin-LöfType Theoryは、1次論理内の1次理論としては提示されません。セットとタイプについて同時に話すことはそれほど一般的ではありません。

Discrete lizardが述べているように、タイプ(およびソート)は構文上の機能を果たします。ソート/タイプは構文カテゴリとして動作します。どの式が整形式かを知ることができます。ソートを使用した簡単な例として、任意のフィールド上のベクトル空間の理論を2ソート理論として説明したとしましょう。スカラーのソートとベクトルのソートます。他の多くのものの中で、我々はスケーリングのための操作を持っていると思います:。これにより、は単純に整形式の用語ではないことがわかります。型理論のコンテキストでは、ような式ではに型が必要ですV s c a l eS × VV s c a l es c a l es v v f x f X Y X Y f f x x X SVscale:S×VVscale(scale(s,v),v)f(x)fXYいくつかのタイプのと。関数の型がない場合、は単純に整形式ではありません。式が何らかの種類のものであるか、ある種の型を持っているかは、メタ論理ステートメントです。ような記述は意味がありません。まず、は単に式ではありません。次に、ソート/タイプがどの式が整形式かを知らせるものなので、概念的にも意味がありません。整形式の真理値のみを考慮しているため、何らかの式が成立するかどうかを検討する頃には、整形式であることをすでによく知っています!XYff(x)x X(x:X)y=3x:X

集合論、特にZFCでは、唯一の非論理記号は集合メンバーシップの関係記号です。したがって、は、真理値を持つ整形式です。変数以外の用語はありません。集合論の通常の表記はすべて、これを定義的に拡張したものです。たとえば、ような式は、省略形と見なされることが多くそれ自体は省略形と見なされますための速記これは 任意の速度で任意のセットが取ることができますの場所とすべてがセットです!X Y F X = Y X Y F P P F P = X Y P P F Z Z Pxyf(x)=y(x,y)fp.pfp=(x,y)F π 7 = 3 πのF X = { Nもし  X = 1 7 もし  X = Q X R Rもし  X = ZN

p.pf(z.zp[z=x(w.wzw=y)])
f私はで指摘したように別の質問、最近実数であるが、完全に合法的で意味のある(および潜在的にも真)で理論式を設定します。基本的に、あなたが書いた集合論で解析するものにはなんらかの意味を与えることができます。それは完全に偽の意味かもしれませんが、一つあります。セットは、セット理論の「ファーストクラス」オブジェクトでもあります。(通常は、それらが唯一のオブジェクトであるため、より適切です。)ような関数π(7)=3π
f(x)={N,if x=17,if x=QxRR,if x=(Z,N)
は集合論における完全に正当な関数です。型理論には、これに少しでも似たものはありません。最も近いのは、タルスキアン宇宙のコードを使用することです。集合は集合論の対象です。型は型理論の対象ではありません。

型は物の集まりではなく(どちらもそのためのセットではありません...)、プロパティによって定義されていません。タイプは、そのタイプの用語に適用可能な操作と、どの式が整形式かを知ることができる構文上のカテゴリです。命題としての命題の観点から、どのタイプが分類されているかは、そのタイプが対応する命題の有効な証拠です。つまり、特定の型の整形式(つまり、型付きの)用語は、対応する命題の有効な証明(構文オブジェクトでもあります)に対応します。集合論ではこのようなことは起きていません。

集合論と型論は実際には似たようなものではありません。


1
型が構文上のエンティティにすぎないことは誤りです。
アンドレイバウアー

1
これは非常に役立ちますが、回答の主なポイントの1つにバグがあります。「セットは物の集まりではない」と言うのは間違いだと思われます(多くの人が犯している、あるいは間違いではなく間違いです)。セットは物の集まりであると言えます。これは、セットの最も基本的な必須プロパティです。実際、たとえばZFCが(完全に任意の数式ではなく)選択する正しい公理であることを、セットがオブジェクトのコレクションであることを伝えることなく、どのようにして知ることができるでしょうか?もちろん、私はそれを理解しています
...-user56834

公理的集合論は、集合をオブジェクトとして扱い、を単なるシンボルとして扱います。公理的集合論は数学的論理的な意味での数学的構造ではないからです。
user56834

1
@ Programmer2134それに答えるには、「コレクション」という言葉の意味を理解する必要があります。時間をかけて「正しい」の意味を正確に定義しない限り、それらが「正しい」とは限りません。しかし、私たちが言えることは、「セット」は100年以上の数学者がコレクションの概念を破り、コレクションの直感的な概念に一致する一貫したシステムを求めた結果だということです。その一貫性を実現するために、彼らは決断を下さなければなりませんでした。たとえば、数学のコレクションはセットだけではありません。「クラス」はコレクションも表します。
コートアンモン-復帰モニカ

1
@AndrejBauer私は(ほとんど)非哲学的なスタンスをとっており、「本当に」タイプがどのように使用されているかを説明しようとはしていません。(最初は「役目」と「振る舞い」と言いますが、最後は「is」に陥りました。)変数が型とは、「値」のみを意味すると考えるリスクがあります。その型の(おそらく閉鎖)用語である「取る」ことができる。これは真実ではなく、私が上記のことを暗示しているわけでもありません。型は構文的なエンティティ以上のものとして見ることができることに同意しますが、型の異なる構文的役割がセットと明確な対照をなすと思います。T x TxTxT
デレクエルキンス

9

実際には、がタイプであるという主張は、通常構文を記述するために使用され、がセットという主張は、通常セマンティックプロパティを示すために使用されます。型とセットの使用におけるこの違いを明確にするために、いくつかの例を挙げます。実際に型とセットの違いについてAndrej Bauerの答えを参照してください。T x SxT xS

この区別を明確にするために、ハーマンゲーバーズの講義ノートにある例を使用します。まず、型に生息する例を見てみましょう。

3+(78)5:Nat,
およびセットのメンバーの例:
3{nNx,y,zN+(xn+ynzn)}

ここでの主な違いは、最初の式が自然数かどうかをテストするために、意味的な意味を計算する必要はなく、すべてのリテラルがNat型であり、すべての演算子がタイプNatで閉じられます。

ただし、セットの2番目の例では、セットのコンテキストで意味を決定する必要があります。この特定のセットでは、これは非常に困難です。このセットのメンバーシップは、フェルマーの最後の定理を証明することと同等です。メモに記載されているように、構文とセマンティクスの区別は必ずしも明確に描かれているわけではないことに注意してください。(そして、Programmer2134がコメントで言及しているように、この例でさえ不明瞭であると主張するかもしれません)33

アルゴリズムと証明

要約すると、型はメンバーシップをアルゴリズムでチェックできるように、式の構文の「単純な」クレームによく使用されますが、セットのメンバーシップをテストするには、通常proofが必要です。

この区別が役立つ理由を確認するには、型付きプログラミング言語のコンパイラを検討してください。このコンパイラが「型をチェックする」ための正式な証明を作成しなければならない場合、コンパイラはほとんど不可能なタスクを実行するように求められます(自動定理証明は一般に難しいです)。一方、コンパイラが単純に(効率的な)アルゴリズムを実行して型をチェックできる場合、実際にタスクを実行できます。

厳密な(er)解釈の動機

セットとタイプの意味上の意味には複数の解釈があります。ここで行われた区別の下では、拡張型および決定不能な型チェックを伴う型(コメントで述べたNuPRLで使用される型など)は「型」ではありませんが、他の人はもちろんそれらをそのように呼び出すことができます(ちょうど無料それらが定義に当てはまる限り、それらを何か別のものと呼ぶように)。

しかし、私たち(ハーマンゲーバーズと私)は、この解釈を窓の外に出さないことを好みます。

まず第一に、この解釈の意図はアンドレイ・バウアーの意図からそれほど遠くない。構文の意図は通常、何かを構築する方法を記述することであり、実際に構築するためのアルゴリズムを持つことは一般的に有用です。さらに、セットの機能は通常、決定不能性が許可されているセマンティック記述が必要な場合にのみ必要です。

したがって、より厳密な説明の利点は、分離をよりシンプルに保ち、一般的な実際の使用法に直接関連する区別を取得することです。NuPRLなどの場合のように、使用法を必要としないか、使用法を緩めたくない限り、これはうまく機能します。


3
型チェックは決定可能である必要はありません(確かに望ましいことですが)。たとえば、NuPRLでは、用語に型が含まれていることを証明する必要があります。
デレクエルキンス

3
ありがとうございました。事態はより明確になっています。私がまだ疑問に思っていることは次のとおりです。型理論に意味論的な要素と理論を設定するための構文要素はありませんか?たとえば、 " "ステートメントをセマンティックステートメントとして見る代わりに、公理集合論の命題として見ることができますか?また、タイプ「Nat」には意味的な意味、つまり、それに先行するものは自然数であるという意味ではありませんか?したがって、rhatセットはセマンティックであり、構文プロパティであると言うのは依然として混乱します。3...
user56834

1
@DerekElkins私はNuPRLに精通していませんが、たとえば、証明アシスタントCoqは、それ自体で型チェックを最も確実に行います(つまり、「私の定理の型」の提供された用語です)。ユーザーが特定のタイプの用語であるという事実を「証明」する必要がある場合、NuPRLはどのように証明を検証しますか?(言い換えれば、これはNuPRLがCurry-Howard通信を使用していないように聞こえるので、何を使用しますか?)
離散トカゲ

1
@Discretelizard NuPRLが典型的だとは言いません。型チェックが決定可能であることは、間違いなく通常のケースです。それがかなり異なる道をとるという理由だけでそれに慣れることを強くお勧めします。NuPRLは教会型の計算ではなくカレー型の計算であり、より洗練されたタイプのシステムです。とにかく、用語(または用語を生成する戦術)を書くだけでなく、派生型を入力するための本質的にLCFスタイルの証明システムがあります。間違いなく、派生は重要なものであり、用語から推測できるのはちょっとした「問題」です。
デレクエルキンス

3
型理論を「シンタクティック」と考えるのがなぜ有害であるのか、答えで詳しく述べました。「型に住むことは構文的性質である」と言うとき、あなたの最初の文は沖合いのものです。「セットの要素であることは、シンボル左側に立つことです」と言っているのと同じくらい多くの真実があります。
アンドレイバウアー

4

セットと型に関する最も具体的な違いの1つは、あなたの心の中の「もの」が形式言語にエンコードされる方法の違いだと思います。

セットとタイプの両方で、物事や物のコレクションについて話すことができます。主な違いは、セットを使用すると、物事について必要な質問をすることができます。型では、最初に質問が理にかなっていることを証明する必要があります。

たとえば、ブール値と自然数あり、型を指定できない場合、セットでできるかどうかを尋ねます。B={true,false}N={0,1,}true=1

これを解釈する1つの方法は、セットを使用すると、すべてが単一のコレクション(すべてのセットのコレクション)にエンコードされることです。はとしてエンコードされ、はとしてエンコードされ、およびは任意の2つの異なるセットでエンコードされます。それが実際にかどうか尋ねることは理にかなっていることそれが「のために選択されたコードするかどうかを尋ねるように理解することができるように、のために選択された符号と同じである」。しかし、別のエンコーディングを選択した場合、この質問に対する答えは変わる可能性があります。それはエンコーディングに関するものであり、実際のものではありません。0[0]={}n+1[n+1]={[n]}[n]truefalsetrue=1true1

その場合、型はその中にあるもののエンコードを記述するものと考えることができます。型の場合、かどうかを質問するには、最初にとが同じ型を持っていること、つまり同じ方法でエンコードされていることを示す必要があります。これによりなどの質問が禁止されます と両方をエンコードできるビッグタイプが必要な場合があります。その後、2つのエンコーディングと、a=babtrue=1SBNιB:BSιN:NSιB(true)=ιN(1) しかし、この質問がエンコーディング(およびエンコーディングの選択)に依存しているという事実は、今では明白です。

これらの場合、質問が理にかなっているかどうかは実際には見やすいかどうかに注意してください。たとえば。(ifvery_hard_questionthen1elsetrue)=1

要約すると、セットを使用すると、必要な質問をすることができますが、タイプによって、回答が依存する場合はエンコードを明示的にする必要があります。


おそらく、ある特定の種類の集合論(ZFCのような単一分類理論に沿ったもの)を考えているのでしょう。しかし、理にかなっていることを多くのチェックを必要とするセット理論には他の種類があります。そして、集合論が実際に使用される方法は、これらの他の集合論にはるかに近いものです。学生が「は要素ですか?」と尋ねることができると思いますか?scられることなく?型理論と集合論の区別は形式主義ではなく、意味にあります。 sin Rsin(2)
アンドレイバウアー

@AndrejBauerそうです。この答えは、単一ソートされた理論(ほとんどのセット理論、または少なくとも最も一般的なものを含む)とマルチソートされた理論(すべての(?)タイプの理論を含む)の違いを与えることに同意しますか?
xavierm02

でもシングルソート理論的にはあなたが数式から用語を区別しなければならない...
アンドレイ・バウアー

@AndrejBauer 2番目のコメントがわかりません。
xavierm02

シングルソートされた一次理論には、論理式用語の 2つの構文カテゴリがあります。それらが混同されていないことを確認する必要があります。そうしないと、「」と書くことができます。(xX.ϕ(x))N
アンドレイバウアー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.