Apakah path induction konstruktif?


17

Saya membaca buku HoTT dan mengalami kesulitan dengan induksi jalur.

Ketika saya melihat jenis di bagian 1.12.1 : saya tidak punya masalah memahami apa artinya (saya baru saja menulis jenis dari memori, untuk memeriksa itu).

ind=SEBUAH:C:x,y:SEBUAH(x=SEBUAHy)U((x:SEBUAHC(x,x,reflx))x,y:SEBUAHhal:x=SEBUAHyC(x,y,hal)),

Apa yang saya punya masalah adalah pernyataan selanjutnya: kesan pertama saya adalah bahwa ekspresi terakhir ini tidak mendefinisikan fungsi yang dihasilkan tetapi hanya menyatakannya properti .

dengan kesetaraanind=SEBUAH(C,c,x,x,reflx): ≡c(x)
f:x,y:SEBUAHhal:x=SEBUAHyC(x,y,hal),

Itu berbeda dengan contoh sebelumnya dari prinsip-prinsip induksi indSEBUAH×B , indSEBUAH+B atau indN - ada yang mendefinisikan persamaan untuk unsur-unsur - kita benar-benar tahu bagaimana membangun fungsi yang dihasilkan, diberikan tempat. Yang sesuai dengan "konstruktif" teori tipe yang diiklankan di seluruh bab ini.

Kembali ke ind=SEBUAH , saya curiga dengan fakta bahwa (sepertinya) itu tidak didefinisikan. Menyatakan bahwa elemen f hanya ada sepertinya tidak selaras dengan sisa bab ini. Dan memang, bagian 1.12.1 tampaknya menekankan bahwa kesan saya salah dan kita sebenarnya telah mendefinisikannya

... yang fungsi f:x,y:SEBUAHhal:x=SEBUAHyC(x,y,hal), didefinisikan oleh
jalur induksi dari c:x:SEBUAHC(x,x,reflx) , yang juga
memenuhi f(x,x,reflx): ≡c(x) ...

Itu membuat saya benar-benar bingung, tetapi saya merasa bahwa poin ini sangat penting untuk semua perkembangan selanjutnya. Jadi mana dari dua bacaan untuk harus saya ikuti? Atau, mungkin, saya kehilangan beberapa kehalusan penting dan jawabannya adalah "tidak"? ind=SEBUAH


Ngomong-ngomong, ini sebenarnya bukan pertanyaan khusus HoTT, tetapi pertanyaan "jenis ketergantungan" yang lebih umum.
cody

Jawaban:


12

Adalah ilusi bahwa aturan perhitungan "mendefinisikan" atau "membangun" objek yang mereka bicarakan. Anda benar mengamati bahwa persamaan untuk tidak "mendefinisikan" itu, tetapi gagal untuk mengamati bahwa hal yang sama juga berlaku dalam kasus lain. Mari kita perhatikan prinsip induksi untuk unit tipe 1 , yang tampaknya sangat "ditentukan". Menurut Bagian 1.5 dari buku Hott kita memiliki i n d 1 : Π C : 1 T y p e C ( ) Π x : 1 Pind=A1 dengan persamaan i n d 1 ( C , c , ) = c . Apakah ini "menentukan" atau "membangun" i n d 1 dalam arti bahwa ia meninggalkan diragukan lagi seperti apa yang saya n d 1 "tidak"? Misalnya, atur C ( x ) = N dan a = 42 , dan pertimbangkan apa yang bisa kami katakan tentang i n d 1 ( C , 42 ,

ind1:C:1TypeC()x:1P(x)
ind1(C,c,)=c.
ind1ind1C(x)=Na=42 untuk ekspresi yang diberikan e tipe 1 . Pikiran pertama Anda mungkin bahwa kita dapat mengurangi ini menjadi 42 karena " adalah satu-satunya elemen 1 ". Tetapi untuk menjadi cukup tepat, persamaan untuk i n d 1 hanya berlaku jika kita menunjukkan e , yang tidak mungkin bila e adalah variabel, misalnya. Kita dapat mencoba untuk menggoyangkan keluar dari ini dan mengatakan bahwa kita hanya tertarik perhitungan dengan istilah tertutup, sehingga e harus ditutup.
ind1(C,42,e)
e1421ind1eee

Apakah tidak terjadi bahwa setiap jangka tertutup tipe 1 adalah judgmentally sama dengan ? Itu sebenarnya tergantung pada detail yang tidak jelas dan bukti normalisasi yang rumit. Dalam kasus Hott jawabannya adalah "tidak" karena e bisa berisi contoh dari Univalence Aksioma, dan tidak jelas apa yang lakukan untuk hal itu (ini yang masalah terbuka di Hott).e1e

Kita dapat menghindari masalah dengan univalance dengan mempertimbangkan versi teori tipe yang memang memiliki sifat yang baik sehingga setiap istilah tertutup tipe secara hukum sama dengan . Dalam hal bahwa itu adalah adil untuk mengatakan bahwa kita tidak tahu bagaimana menghitung dengan i n d 1 , namun:1ind1

  1. Hal yang sama akan berlaku untuk jenis identitas, karena setiap jangka tertutup jenis identitas akan judgmentally sama untuk beberapa , dan kemudian persamaan untuk i n d = A akan memberitahu kita bagaimana untuk menghitung.refl(a)ind=SEBUAH

  2. Hanya karena kita tahu bagaimana cara menghitung dengan istilah tertutup dari suatu jenis, itu tidak berarti kita benar-benar telah mendefinisikan apa pun karena ada lebih banyak jenis daripada istilah tertutupnya , seperti yang saya coba jelaskan sekali.

Sebagai contoh, ketik teori Martin-LOF (tanpa jenis identitas) dapat diartikan domain-teoritis sedemikian rupa yang berisi dua elemen dan , di mana berkorespondensi untuk dan untuk non-terminasi. Sayangnya, karena tidak ada cara untuk menuliskan ekspresi non-terminating dalam teori tipe, tidak dapat disebutkan namanya. Akibatnya, persamaan untuk i n d 1 tidak tidak memberitahu kita bagaimana untuk menghitung pada (dua pilihan yang jelas menjadi "bersemangat" dan "malas").1sayand1

Dalam istilah rekayasa perangkat lunak, saya akan mengatakan kami memiliki kebingungan antara spesifikasi dan implementasi . Aksioma HoTT untuk tipe identitas adalah spesifikasi . Persamaan tidak memberi tahu kita cara menghitung, atau bagaimana membangun i n d = C , melainkan Namun itu saya nsayand=C(C,c,x,x,refl(x))c(x)sayand=C adalah "diimplementasikan", kami mengharuskan itu memenuhi persamaan. Ini adalah pertanyaan terpisah apakah i n d = C dapat diperoleh secara konstruktif.sayand=Csayand=C

Terakhir, saya sedikit lelah dengan bagaimana Anda menggunakan kata "konstruktif". Sepertinya Anda berpikir bahwa "konstruktif" sama dengan "terdefinisi". Di bawah interpretasi itu, Oracle Henti adalah konstruktif, karena perilakunya ditentukan oleh persyaratan yang kami tetapkan padanya (yaitu bahwa output 1 atau 0 menurut apakah mesin yang diberikan berhenti). Prefek mungkin untuk menggambarkan objek yang hanya ada dalam pengaturan non-konstruktif. Sebaliknya, sangat mungkin untuk berbicara secara konstruktif tentang properti dan hal-hal lain yang sebenarnya tidak dapat dihitung. Inilah satu: hubungan didefinisikan oleh H ( n , d )HN×{0,1} konstruktif, yaitu, tidak ada yang salah dengan definisi ini dari sudut pandang konstruktif. Kebetulan yang konstruktif satu tidak dapat menunjukkan bahwa H adalah relasi total, dan peta karakteristik χ H : N × { 0 , 1 } P r o p tidak faktor tidak melalui b o o l

H(n,d)(d=1nmesin berhenti)(d=0n-di mesin menyimpang)
HχH:N×{0,1}PropbHaiHail, jadi kita tidak bisa "menghitung" nilainya.

Tambahan: Judul pertanyaan Anda adalah "Apakah induksi jalur konstruktif?" Setelah membersihkan perbedaan antara "konstruktif" dan "terdefinisi", kita dapat menjawab pertanyaan itu. Ya, induksi jalur diketahui konstruktif dalam kasus-kasus tertentu:

  1. Jika kita membatasi untuk mengetik teori tanpa Univalence sehingga kita dapat menunjukkan normalisasi yang kuat, maka jalur induksi dan yang lainnya konstruktif karena ada algoritma yang melakukan prosedur normalisasi.

  2. Ada model realisasi dari teori tipe, yang menjelaskan bagaimana setiap istilah tertutup dalam teori tipe sesuai dengan mesin Turing. Namun, model ini memuaskan Streicher's Axiom K, yang mengesampingkan Univalence.

  3. Ada terjemahan dari teori tipe (lagi tanpa Univalence) ke teori himpunan konstruktif CZF. Sekali lagi, ini memvalidasi aksioma Streicher K.

  4. Ada model groupoid di dalam model realisasi yang memungkinkan kita untuk menafsirkan teori tipe tanpa Streicher's K. Ini adalah karya pendahuluan oleh Steve Awodey dan saya sendiri.

Kita benar-benar perlu memilah status konstruktif dari Univalence.


Saya yakin jawaban ini sekarang (sebagian) sudah ketinggalan zaman
WorldSEnder

Memang, dalam waktu yang berarti teori tipe kubik memberikan jawaban postive: ada model konstruktif dari teori tipe Univalent.
Andrej Bauer

7

Saya bukan orang HoTT, tapi saya akan memasukkan dua sen saya.

Misalkan kita ingin membuat fungsi Bagaimana kita melakukan ini? Nah, misalkan kita diberi x , y : A dan bukti kesetaraannya p : x = A y . Karena saya tidak tahu apa-apa tentang tipe A yang sewenang-wenang , saya tidak tahu apa-apa tentang `struktur ' x , y

fSEBUAH:x,y:SEBUAHhal:x=SEBUAHyC(x,y,hal)
x,y:SEBUAHhal:x=SEBUAHySEBUAHx,y. Namun, saya tahu sesuatu tentang jenis tertentu kesetaraan: memiliki konstruktor tunggal, Oleh karena itu, p r e f l a untuk beberapa a : A , tapi ini akan memaksa x = a = y . Karenanya, jika kita memiliki elemen C ( x , x , r e f l x ) untuk semua
reflSebuah:Sebuah=SEBUAHSebuah, untuk apa saja Sebuah:SEBUAH
halreflSebuahSebuah:SEBUAHx=Sebuah=yC(x,x,reflx) ; yaitu jika kita memiliki fungsi b a s e C : x : A C ( x , x , r e f l x ) (untuk C spesifik kami), maka fungsi kami f A dapat didefinisikan sebagai berikut: f A ( x , y , p ) : = b a s e C ( x , x , p )x:SEBUAH
bSebuahseC:x:SEBUAHC(x,x,reflx)
CfSEBUAH
fSEBUAH(x,y,hal): =bSebuahseC(x,x,hal)
.

Menyingkirkan langganan mengarah ke definisi induktif umum.

Semoga itu bisa membantu!


eEE


1
Mungkin Anda bisa memahaminya, atau setidaknya khawatir tentang intuisi Anda saat ini dengan memeriksa math.andrej.com/2013/08/28/the-elements-of-an-inductive-type di mana saya mencoba menjelaskan mengapa itu berbahaya untuk berpikir bahwa syarat tertutup dari suatu jenis semua ada pada suatu jenis.
Andrej Bauer

2
refl

3

SEBUAH×BSEBUAH×B

halSebuahsayar : SEBUAHBSEBUAH×B
f SEBUAH×BhalSebuahsayar

halSebuahsayarf:SEBUAH×BCSEBUAHB

f:SEBUAHBC
fSEBUAH×B
(SEBUAHBC)(SEBUAH×BC)
sayandSEBUAH×B

f halSebuahsayar(Sebuah,b)ff

f(halSebuahsayar(Sebuah,b)) : = f Sebuah b
sayandSEBUAH×B f halSebuahsayar(Sebuah,b) : = f Sebuah b
=

Jadi Anda melihat bahwa definisi eliminator untuk tipe induktif dengan konstruktor yang diberikan datang dalam 2 langkah:

  1. sayand

  2. sayand


=SEBUAHx,y:SEBUAHhal:x=yChalx=y refl(z)z

f:Πx,y:SEBUAH,x=yC
f:Πz:SEBUAH,C
refl(z)C

ff

f z z refl(z): =f z

SEBUAH×B=SEBUAH

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.