普遍的で実存的なタイプ


9

私は普遍型と実存型の概念に頭を回そうとしていますが、どこを見ても、論理的または操作的な直観(または実装)(たとえば、B。PierceによるTAPL本)があります。 、しかし私は定義(それらをセットとして見ているところ)を見てみたい-そしてそれらから、いくつかの法則の導出、そして私たちの直感の正当化を見たい。

そのため、これらの定義を見つけることができないため、私は自分で決定することにしました。

∃ X 。T DのEのF := ⋃ S - TのY用のp のE T [ X := S ]

∀x.T:=def⋂S−typeT[x:=S]
∃x.T:=def⋃S−typeT[x:=S]

しかし、前述のTAPLブックでは、この定義が与えられています(私はそれをアイデンティティと呼びます)

∃x.T:=def∀y.(∀x.T→y)→y(∗)

これには2つの問題があります。

  1. LHSでは、xがTの唯一の自由変数であると予想します(いくつかの自由変数がそれにぶら下がっている「まだビルドされていない」型を表示する方法のため?)、RHSでは次のように見えますyはTにある程度の影響を与える可能性があるため、Tの自由変数である方が適切です。したがって、Tの自由変数のセットが両側で異なるため、LHSをRHSに等しくすることはできません。(∗)xTyTTT
  2. :私は私の定義を使用してRHSを書き換えると、私は実存タイプの私の定義を取得することができるかどうかを確認してみましたが、私は立ち往生-でもポイント1での懸念を無視
    RHS=⋂S(∀x.T→y)[y:=S]→S=⋂S(⋂RT[x:=R,y:=S]→S)→S

それは私の定義にリモートで似ていません。私が到達した式を簡略化することは可能ですか?直感的には、関数型があるので、おそらく私の定義と同じになることはありません。しかし、それらが等しくない場合、それらはある意味で少なくとも「同型」ですか?そうでない場合-何が「間違った」のですか?


1
あなたの方程式(*)にタイプミスがあります:それはあるべきはなく、∀ yの。∀Y∀y
— cody

1
また、最後の方程式では、がTに表示されない場合があります。yT
— cody

回答:


9

セット理論はここであなたにいくつかの害を与えています、そしてあなたがそれからあなた自身を解放するほどあなたがコンピュータサイエンスのあなたの理解にとってより良くなるでしょう。

交差点と共用体を忘れてください。人々がいることを、このアイデアを取得と∃が似ている⋂と⋃ポーランドの学校は、ブール代数で昔やっていたものの一種であるが、それは本当に進むべき道(間違いないコンピュータサイエンスでは)ありません。∀∃⋂⋃

これらをセットとして見たいと思います。では、サイズの問題を無視して、すべてのセットのセットがあるように見せかける必要があります。(異なるカテゴリに渡すことによって、大きさの問題を修正することが可能である。)タイプ本当に直積のようなものです ∀ X 。T := Π S :S E T T [ X ↦ S ] 。 これは、の要素である∀ X 。Tは集合から集合への関数fです:各集合Sに対して要素を与えます∀x.T

∀X.T:=∏S:SetT[X↦S].
∀X.T fS型の T [ X ↦ S ]。例えば、要素の ∀ X 。(X → X )→ (X → X )は、集合 Sを取り、タイプ(S → S )→ (S → S )の関数を与える関数 fです。そのような関数をいくつか示します 。f 0(S )(g )(f(S)T[x↦S]∀X.(X→X)→(X→X)fS(S→S)→(S→S) したがって、自然数ごとに1つが得られます。他の例を考えるのはちょっと難しいです。(練習:グーグル「自然数の教会エンコーディング」。)
f0(S)(g)(x):=xf1(S)(g)(x):=g(x)f2(S)(g)(x):=g(g(x))f3(S)(g)(x):=g(g(g(x)))

∃∀

∃X.T:=∀Y.(∀X.(T→Y))→Y
YT∃X.T
∃X.T:=∐S:SetT[X↦S].
∃X.T (S,a)SaT[X↦S]∃X.(X×X→X)(S,m)Sm:S×S→S

∃∀∃X.T∀Y.(∀X.(T→Y))→YY

A:=∐S:SetT[X↦S]
B:=∏R:Set(∏S:Set(T[X↦S]→R))→R.
λf:A→B
f(S,a)(R)(h):=h(S)(a)
g:B→A
g(ϕ):=ϕ(A)(λS.λa.(S,a)).
λS.λa.(S,a)S↦a↦(S,a)fg
g(f(S,a))=f(S,a)(A)(λS′.λa′.(S′,a′))=(λS′.λa′.(S′,a′)(S)(a)=(S,a).
f(g(ϕ))(R)(h)=h(π1(g(ϕ))(π2(g(ϕ))).
g(ϕ)ϕ(A)(λS.λa.(S,a))

∃∀

∃x.ϕ(x)
∀P:Prop.(∀x.(ϕ(x)⇒P))⇒P,
PPϕ

1
アンドレジュ、あなたは稲妻と同じくらい速い!
— cody

(∗)fg(∗)(∗)

3
∃∀fg

@AndrejBauerは、根底にあるシステムが非難的ですか?そして肯定的な答えの場合、同型は述語システムに当てはまりますか?
— ジョルジオモッサ

∃∀∃∀

3

Y YYT∃T

((∀x.T→U0)→U0)∧((∀x.T→U1)→U1)∧…
UiU
∃x.T→((∀x.T→U)→U)

言葉で:

xT(x)U xT(x)U

Ux

U

⋂SA(S)A(∅)

(⋂R(T[x:=R]→∅))→∅

RT[x:=R]→∅T[x:=R]


1
Ui

∃

∀⋂

1

私は操作の直感をあきらめないことをお勧めします。運用が主要であり、すべてのセマンティクスが派生しており、運用セマンティクスの実証技術にすぎません。重要なアイデアは次のとおりです。

Px Pxxλ

  • λx.x.
  • λ(x,y,z).(z,x,y)
  • λx.(x,x)
  • λx.7

Px PxxPxx

λ


興味深い観点(私はそれを完全には理解していませんが:))。次に、そのような一般的な見方で導出された法則が、型システムの具体的な設定に当てはまるかどうかを確認するという考えです。そして、これに関する紹介文はどこにありますか?
— 厄介な

@socumbersomeポリモーフィズムのほとんどの既存の実装は、これを完全に正しくしていません。実際、実存的数量化が直接実装されることはほとんどありません。二重性を説明する紹介文はありません。ここではそれについて説明しましたが、専門の読者向けに書かれています。
— Martin Berger
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.