funsplit dan polaritas tipe-Pi

18

Dalam benang baru-baru ini di milis Agda, pertanyaan dari η hukum muncul, di mana Peter Hancock membuat pemikiran komentar .

Pemahaman saya adalah bahwa η undang-undang datang dengan tipe negatif, yaitu. penghubung yang aturan pengantarnya tidak bisa dibalik. Untuk menonaktifkan η untuk fungsi, Hank menyarankan menggunakan eliminator yang dibuat khusus, funsplit , alih-alih aturan aplikasi yang biasa. Saya ingin memahami ucapan Hank dalam hal polaritas.

Misalnya, ada dua presentasi Σ -jenis. Ada eliminator split Martin-Löf tradisional , dalam gaya positif:

Γf:(a:A)(b:Ba)C(a,b)Γp:Σa:A.BΓsplitfp:Cp

Dan ada versi negatifnya:

Γp:Σa:A.BΓπ0p:AΓp:Σa:A.BΓπ1p:B[π0p/a]

Presentasi terakhir ini membuatnya mudah untuk mendapatkan untuk pasangan, yaitu. ( π 0 p , π 1 p ) = = p untuk setiap pasangan p (di mana == adalah singkatan dari kesetaraan definisi). Dalam hal provabilitas, perbedaan ini tidak masalah: secara intuisi, Anda dapat mengimplementasikan proyeksi dengan terbelah, atau sebaliknya.η(π0p,π1p)==pp

Sekarang, -jenis biasanya (dan saya kira tidak kontroversial) dianggap negatif:Π

Γf:Πa:A.BΓs:AΓfs:B[s/a]

Yang memberi kita untuk fungsi: λ x . f x = = f .ηλx.fx==f

Namun, dalam surat itu, Hank ingat eliminator funsplit (Pemrograman dalam teori tipe ML, [http://www.cse.chalmers.se/research/group/logic/book/], hal.56). Ini dijelaskan dalam kerangka logis oleh:

fΠ(A,B)C(v)Set[vΠ(A,B)]d(y)C(λ(y))[y(x)B(x)[xA]]funsplit(f,d)C(f)

Menariknya, Nordstrom et al. memotivasi definisi ini dengan mengatakan bahwa "bentuk non-kanonik alternatif [ini] didasarkan pada prinsip induksi struktural". Ada aroma positif yang kuat pada pernyataan ini: fungsi akan 'didefinisikan' oleh konstruktornya, .λ

Namun, saya tidak bisa cukup memberikan presentasi yang memuaskan dari aturan itu dalam deduksi alami (atau, bahkan lebih baik, kalkulus berurutan). Penggunaan (ab) kerangka logis untuk memperkenalkan tampaknya sangat penting di sini.y

Jadi, apakah funsplit merupakan presentasi positif -type? Apakah kita juga memiliki sesuatu yang serupa dalam kalkulus urutan (tidak tergantung)? Seperti apa bentuknya?Π

Seberapa umum / penasaran itu untuk pembuktian teori di lapangan?

pedagand
sumber

Jawaban:

12

Penyajian eliminasi fungsional menggunakan yang pasti bukan kejadian biasa di sebagian besar perawatan teori tipe. Namun, saya percaya bahwa bentuk ini memang presentasi "positif" dari penghapusan jenis fungsional. Masalahnya di sini adalah bahwa Anda memerlukan bentuk pencocokan pola Orde Tinggi, lihat misalnya Dale Miller .funsplit

Izinkan saya merumuskan kembali aturan Anda dengan cara yang lebih jelas bagi saya:

Γf:Πx:A.BΓ,z:Πx:A.BC:SetΓ,[x:A]F(x):Be:C{λx:A.F(x)/z}match f with λx:A.F(x)e:C{f/z}

Dimana adalah meta-variabel dari tipe B dalam konteks x : A .FBx:A

Aturan penulisan ulang kemudian menjadi:

match λx:A.t with λx:A.F(x)ee{t{u/x}/F(u)}

Ini memungkinkan Anda untuk mendefinisikan aplikasi sebagai:

app(t,u)=match t with λx:A.F(x)F(u)

Di luar kenyataan bahwa ini membutuhkan sistem tipe "gaya kerangka logis" untuk valid, kerumitan (dan kebutuhan terbatas) dari penyatuan tingkat tinggi membuat formulasi ini tidak populer.

Namun, ada tempat di mana perbedaan positif / negatif hadir dalam literatur: perumusan predasi hubungan logis . Dua definisi yang mungkin (dalam kasus unary) adalah

[[Πx:A.B]]={tu[[A]],tu[[B]]xu}

dan

[[Πx:A.B]]={ttλx.t,u[[A]],t{u/x}[[B]]xu}

Versi kedua kurang umum, tetapi dapat ditemukan misalnya di Dowek dan Werner .

cody
sumber
1
Ini tampaknya terkait dengan Sintaks Abstrak Orde Tinggi yang banyak digunakan dalam Logical Framework. Secara khusus, sini tampaknya menjadi fungsi-meta. F
hari
13

Inilah perspektif yang sedikit berbeda pada jawaban Fredrik. Pada umumnya kasus bahwa pengkodean tipe Gereja yang tidak sesuai akan memenuhi hukum relevan , tetapi tidak akan memenuhi hukum η .βη

Jadi ini berarti kita dapat mendefinisikan pasangan dependen sebagai berikut:

Sekarang, perhatikan bahwa π 1 mudah didefinisikan: π 1 : x : X .

x:X.Y[x]α:.(Πx:X.Y[x]α)α
π1 Namun, Anda tidak dapat menentukan proyeksi kedua π 2 : Π p : ( x : X .
π1:x:X.Y[x]Xλp:(x:X.Y[x]).pX(λxy.x)
- coba! Anda hanya dapat mendefinisikan eliminator yang lemah untuk itu, itulah sebabnya saya menulisnya dengan eksistensial.π2:Πp:(x:X.Y[x]).Y[π1p]

Namun, proyeksi kedua dapat diwujudkan , dan dalam model parametrik Anda dapat menunjukkan bahwa ia memiliki perilaku yang tepat juga. (Lihat konsep saya baru-baru ini dengan Derek Dreyer tentang parametrik dalam Kalkulus Konstruksi untuk lebih lanjut tentang ini.) Jadi saya pikir bahwa proyeksi mendasar menuntut beberapa sifat ekstensionalitas yang kuat agar masuk akal.π2

Dalam hal kalkulus berurutan, eliminator lemah memiliki aturan yang sedikit mirip:

Γ,x:X,y:Y[x],Γe:CΓ,p:x:X.Y[x],Γlet(x,y)=pine:C
pΓC
Γ,x:X,y:Y[x],[(x,y)/p]Γe:[(x,y)/p]CΓ,p:x:X.Y[x],Γlet(x,y)=pine:C
Neel Krishnaswami
sumber
1
Saya sangat menikmati semua jawaban ini! Saya merasa ada beberapa gagasan "introspeksi" (kemampuan untuk mengetahui bahwa suatu istilah memiliki nilai) tersirat dalam jawaban dari Fredrik yang merupakan masalah nyata dengan eta: parametrikitas menyiratkan introspeksi menyiratkan eta.
cody
10

Richard Garner telah menulis artikel yang bagus tentang aplikasi vs funsplit, Tentang kekuatan produk dependen dalam teori tipe Martin-Löf (APAL 160 (2009)), yang juga membahas sifat urutan tinggi dari aturan funsplit (dengan mengacu pada Peter Schroeder-Heister's Sebuah ekstensi alami deduksi alami (JSL 49 (1984))).

Richard menunjukkan bahwa di hadapan jenis identitas (dan aturan pembentukan dan pengenalan untuk Π jenis), funsplit dapat ditafsirkan dengan aturan aplikasi di atas + eta proposisional, yaitu dua aturan berikut:

m:Π(SEBUAH,B)η(m):sayadΠ(SEBUAH,B)(m,λx.mx)(Π-Menopang-η)
x:SEBUAHf(x):B(x)η(λ(f))=refl(λ(f)):sayadΠ(SEBUAH,B)(λ(f),λ(f))(Π-Menopang-η-Comp)

Artinya, jika Anda memiliki funsplit, Anda dapat menentukan aplikasi dan η seperti di atas supaya (Π-Menopang-η-Comp)memegang. Lebih menarik, jika Anda memiliki aplikasi dan aturan eta proposisional, maka Anda dapat mendefinisikan funsplit.

Selain itu, funsplit benar-benar lebih kuat daripada aplikasi: aturan eta proposisional tidak dapat didefinisikan dalam teori dengan hanya aplikasi - maka funsplit tidak dapat ditentukan, karena aturan eta proposisional juga akan berlaku. Secara intuitif, ini karena aturan aplikasi memberi Anda sedikit lebih kendur: tidak seperti funsplit (dan eta), mereka tidak memberi tahu Anda apa fungsinya, hanya saja mereka dapat diterapkan pada argumen. Saya yakin argumen Richard bisa diulangiΣ jenis juga, untuk menunjukkan hasil yang sama untuk shallsayat vs proyeksi.

Perhatikan bahwa jika Anda memiliki aturan eta definisi, Anda tentu akan memilikinya secara proposisi (dengan η(m): =refl(m)). Jadi, saya pikir pernyataan Anda "[...] yang memberi kamiη untuk fungsi "dan" [...] presentasi terakhir ini membuatnya mudah diperoleh η untuk pasangan "salah. Agda, bagaimanapun, mengimplementasikan η untuk fungsi dan pasangan (jika Σ didefinisikan sebagai catatan), tetapi ini tidak mengikuti hanya dari aplikasi.

Fredrik Nordvall Forsberg
sumber