Alasan pelarangan kejadian negatif dapat dipahami dengan analogi dengan teorema Knaster-Tarski. Teorema ini mengatakan itu
jika adalah kisi lengkap dan f : L → L adalah fungsi monoton pada L , maka himpunan titik tetap f juga merupakan kisi lengkap. Secara khusus, ada setidaknya titik tetap μ f dan terbesar titik tetap ν f .L.f: L → LL.fμ fνf
Dalam teori model tradisional, kisi dapat dilihat sebagai proposisi, dan hubungan keteraturan p ≤ q dapat dipahami sebagai entailment (yaitu, bahwa kebenaran q diikuti oleh kebenaran p ).L.p ≤ qqhal
Ketika kita beralih dari teori model ke teori pembuktian, kisi-kisi menggeneralisasi ke kategori-kategori. Jenis dapat dilihat sebagai objek dari kategori , dan peta e : P → Q merupakan bukti yang Q dapat diturunkan dari Q .Ce : P→ QQQ
Ketika kami mencoba menginterpretasikan tipe yang didefinisikan oleh persamaan rekursif, ee, , hal yang jelas harus dilakukan adalah mencari generalisasi teorema Knaster-Tarski. Jadi, bukannya fungsi monoton pada kisi, kita tahu inginfunctor F : C → C , yang mengirimkan objek untuk objek, tetapi generalisasi kondisi monotonicity sehingga setiap peta e : P → Q mendapat peta F ( e ) : F ( P ) → F ( Q ) (dengan kondisi koherensi yang F mengirimkan identitas ke identitas dan mempertahankan komposisi sehingga FN =μα.1 + α F: C → Ce : P→ QF( e ) : F( P) → F( Q )F ).F( g∘ f) = F( g) ∘ F( f)
Jadi jika Anda menginginkan tipe data induktif , Anda juga perlu menyediakan aksi fungsi dengan syarat untuk operator tipe F agar dapat dipastikan bahwa titik tetap yang Anda inginkan ada. Kondisi positif yang ketat dalam Agda dan Coq adalahkondisisintaksisyang menyiratkanbatasansemantikini. Secara longgar, dikatakan bahwa jika Anda membangun operator tipe dari penjumlahan dan produk, maka Anda selalu dapat memasak tindakan fungsi, dan setiap tipe yang dibentuk dengan cara ini harus memiliki titik tetap.μ α .F( α )F
Dalam bahasa yang diketik secara dependen, Anda juga memiliki tipe yang diindeks dan parameter, jadi tugas sebenarnya Anda lebih rumit. Bob Atkey (yang telah membuat blog tentang ini di sini dan di sini ) memberi tahu saya bahwa tempat yang baik untuk mencari ceritanya adalah:
Seperti yang dicatat Andrej, secara mendasar apakah kejadian negatif itu baik atau tidak tergantung pada model teori tipe Anda. Pada dasarnya, ketika Anda memiliki definisi rekursif, Anda mencari titik tetap, dan ada banyak teorema titik tetap dalam matematika.
Salah satu yang saya, secara pribadi, telah banyak gunakan adalah teorema titik tetap Banach, yang mengatakan bahwa jika Anda memiliki fungsi kontraktual ketat pada ruang metrik, maka ia memiliki titik tetap yang unik. Gagasan ini diperkenalkan ke semantik oleh (IIRC) Maurice Nivat, dan dipelajari secara luas oleh Amerika dan Rutten, dan baru-baru ini dihubungkan oleh Birkedal dan rekan-rekannya dengan teknik operasional populer yang disebut "step-indexing".
Ini memunculkan teori tipe di mana kejadian negatif dalam jenis rekursif diizinkan, tetapi hanya ketika kejadian negatif terjadi di bawah konstruktor tipe "penjagaan" khusus. Gagasan ini diperkenalkan oleh Hiroshi Nakano, dan koneksi ke teorema Banach dibuat oleh saya sendiri dan Nick Benton, serta Lars Birkedal dan rekan penulisnya.