Jenis universal dan eksistensial

9

Saya mencoba menyelubungi konsep-konsep tipe universal dan eksistensial tetapi di mana pun saya melihat, saya melihat intuisi logis atau operasional (atau implementasi) (misalnya buku TAPL oleh B. Pierce), yang, yah ... bagus , tapi saya ingin melihat definisi (di mana kita melihatnya sebagai set) - dan dari mereka, turunan dari beberapa undang-undang, serta pembenaran untuk intuisi kita.

Jadi, karena saya tidak dapat menemukan definisi tersebut, saya memutuskan untuk melakukannya sendiri dan saya pikir ini masuk akal:

x . T d e f : =S - t y p e T [ x : = S ]

x.T:=defStypeT[x:=S]
x.T:=defStypeT[x:=S]

Tetapi, dalam buku TAPL tersebut di atas, kita diberikan definisi ini (meskipun saya akan menyebutnya identitas)

x.T:=defy.(x.Ty)y()

Saya memiliki dua masalah dengan ini:

  1. Pada LHS dari saya akan berharap bahwa x adalah satu-satunya variabel bebas dari T (karena bagaimana cara melihat tipe "belum-dibangun" dengan beberapa variabel bebas yang menggantung di dalamnya?), Tetapi pada RHS sepertinya y mungkin memiliki beberapa dampak pada T , sehingga lebih baik menjadi variabel bebas dalam T . Maka LHS tidak bisa sama dengan RHS karena set variabel bebas T berbeda di kedua sisi, kan?()xTyTTT
  2. Bahkan mengabaikan masalah pada poin 1. - Saya mencoba menulis ulang RHS menggunakan definisi saya dan melihat apakah saya bisa mendapatkan definisi saya tentang tipe eksistensial tetapi saya terjebak:
    RHS=S(x.Ty)[y:=S]S=S(RT[x:=R,y:=S]S)S

Bahkan tidak mirip dengan definisi saya. Apakah mungkin untuk menyederhanakan formula tempat saya tiba? Secara intuitif, karena ada tipe fungsi, mungkin tidak akan pernah sama dengan definisi saya. Tetapi jika mereka tidak setara - apakah mereka setidaknya 'isomorfis' dalam arti tertentu? Jika tidak - apa yang "salah"?

socumbersome
sumber
1
Ada kesalahan ketik dalam persamaan Anda (*): itu harus daripada y . Yy
cody
1
Juga, dalam persamaan terakhir Anda: mungkin tidak muncul di T ! yT
cody

Jawaban:

9

Teori himpunan membuat Anda sedikit terluka di sini dan semakin cepat Anda membebaskan diri darinya, semakin baik pemahaman Anda tentang ilmu komputer.

Lupakan persimpangan dan serikat pekerja. Orang-orang mendapatkan ide bahwa dan seperti dan , yang merupakan hal yang dilakukan sekolah Polandia sejak lama dengan aljabar Boolean, tetapi itu benar-benar bukan cara untuk pergi (pasti bukan dalam ilmu komputer).

Anda ingin melihatnya sebagai set. Ok, tapi kemudian kita harus mengabaikan masalah ukuran dan berpura-pura bahwa ada satu set semua set. (Dimungkinkan untuk memperbaiki masalah ukuran dengan meneruskan ke kategori yang berbeda.) Jenis adalah benar-benar seperti Cartesian produk X . T : = S : S e t T [ X S ] . Artinya, unsur X . T adalah fungsi f dari set ke set: untuk setiap set S memberikan elemenx.T

X.T:=S:SetT[XS].
X.T fS dari tipe T [ x S ] . Misalnya, unsurX . ( X X ) ( X X ) adalah fungsi f yang mengambil set S dan memberikan fungsi tipe ( S S ) ( S S ) . Berikut beberapa fungsi tersebut: f 0 ( S ) ( g ) (f(S)T[xS]X.(XX)(XX)fS(SS)(SS) Jadi kita mendapatkan satu untuk setiap bilangan alami, dan agak sulit untuk memikirkan contoh lainnya. (Latihan: google "Pengkodean angka alamiah Gereja".)
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.(TY))Y
YTX.T
X.T:=S:SetT[XS].
X.T (S,a)SaT[XS]X.(X×XX)(S,m)Sm:S×SS

X.TY.(X.(TY))YY

A:=S:SetT[XS]
B:=R:Set(S:Set(T[XS]R))R.
λf:AB
f(S,a)(R)(h):=h(S)(a)
g:BA
g(ϕ):=ϕ(A)(λS.λa.(S,a)).
λS.λa.(S,a)Sa(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ϕ
Andrej Bauer
sumber
1
Andrej, kamu secepat kilat!
cody
()fg()()
3
fg
@ AndrejBauer adalah sistem yang mendasari impredikatif? Dan dalam hal jawaban positif apakah isomorfisme berlaku untuk sistem predikatif?
Giorgio Mossa
3

Y YYTT

((x.TU0)U0)((x.TU1)U1)
UiU
x.T((x.TU)U)

Dalam kata kata:

xT(x)U xT(x)U

Ux

U

SA(S)A()

(R(T[x:=R]))

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

cody
sumber
1
Ui
1

Saya menyarankan untuk tidak menyerah pada intuisi operasional. Operasional adalah yang utama, semua semantik diturunkan, dan hanyalah teknik bukti untuk semantik operasional. Gagasan utama adalah sebagai berikut.

Px Pxxλ

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

Px PxxPxx

λ

Martin Berger
sumber
Suatu sudut pandang yang menarik (meskipun saya tidak memahaminya sepenuhnya :)). Idenya adalah untuk memeriksa apakah undang-undang yang diturunkan dalam pandangan umum seperti itu tetap dalam pengaturan konkret sistem tipe? Dan di mana saya dapat menemukan beberapa teks pengantar tentang ini?
socumbersome
@ socumbersome Sebagian besar implementasi polimorfisme yang ada tidak mendapatkan ini dengan benar. Memang kuantifikasi eksistensial jarang diterapkan secara langsung. Saya khawatir tidak ada teks pengantar yang menggambarkan dualitas. Kami telah menjelaskannya di sini tetapi ini ditulis untuk audiens khusus.
Martin Berger