Saya tahu bahwa kompleksitas sebagian besar varietas kalkulus lambda yang diketik tanpa primitif combinator Y dibatasi, yaitu hanya fungsi kompleksitas yang dibatasi yang dapat diekspresikan, dengan batas menjadi lebih besar ketika ekspresi dari sistem tipe tumbuh. Saya ingat bahwa, misalnya, Kalkulus Konstruksi dapat mengekspresikan kompleksitas eksponensial yang paling ganda.
Pertanyaan saya menyangkut apakah kalkulus lambda yang diketik dapat mengekspresikan semua algoritma di bawah batas kompleksitas tertentu, atau hanya beberapa? Misalnya, apakah ada algoritma waktu eksponensial yang tidak dapat diungkapkan oleh formalisme apa pun di Lambda Cube? Apa "bentuk" ruang kompleksitas yang sepenuhnya ditutupi oleh berbagai sudut kubus?
Jawaban:
Saya akan memberikan jawaban parsial, saya berharap orang lain akan mengisi kekosongan.
Dalam diketik -calculi, satu dapat memberikan tipe representasi biasa data ( N a t untuk Gereja (unary) bilangan bulat, S t r untuk string biner, B o o l untuk Booleans) dan bertanya-tanya apa yang kompleksitas fungsi / masalah diwakili / decidable oleh istilah yang diketik. Saya tahu persis asnwer hanya dalam beberapa kasus, dan dalam kasus yang diketik sederhana itu tergantung pada konvensi yang digunakan ketika mendefinisikan "representable / decidable". Bagaimanapun, saya tidak tahu ada kasus di mana ada batas atas eksponensial ganda.λ Nat Str Bool
Pertama, rekap singkat di Lambda Cube. 8 kalkulusnya diperoleh dengan mengaktifkan atau menonaktifkan 3 jenis dependensi berikut di atas -calculus (STLC) yang diketik sederhana :λ
(Ketergantungan syarat pada persyaratan selalu ada).
Menambahkan polimorfisme yield Sistem F. Di sini, Anda dapat mengetik bilangan bulat Gereja dengan , dan demikian pula untuk string biner dan Boolean. Girard membuktikan bahwa persyaratan Sistem F tipe N a t → N a t mewakili fungsi numerik yang totalitasnya dapat dibuktikan dalam aritmatika Peano orde kedua. Itu cukup banyak matematika sehari-hari (walaupun tanpa bentuk pilihan), sehingga kelasnya sangat besar, fungsi Ackermann adalah semacam mikroba kecil di dalamnya, apalagi fungsi 2 2Nat:=∀X.(X→X)→X→X Nat→Nat . Saya tidak tahu adanya fungsi numerik "alami" yang tidak dapat direpresentasikan dalam Sistem F. Contoh biasanya dibangun oleh diagonalisasi, atau penyandian konsistensi PA orde dua, atau trik referensial diri lainnya (seperti menentukanβ-kesetaraan dalam Sistem F sendiri). Tentu saja dalam Sistem F Anda dapat mengkonversi antara bilangan bulat unaryNatdan mereka representasi binerStr, dan kemudian menguji misalnya apakah bit pertama adalah 1, sehingga kelas masalah decidable (oleh hal jenisStr→Bool) sama besarnya.22n β Nat Str Str→Bool
Oleh karena itu 3 kalkulus lain dari Lambda Cube yang mencakup polimorfisme setidaknya sama ekspresifnya dengan Sistem F. Ini termasuk Sistem F ym (polimorfisme + tatanan yang lebih tinggi), yang dapat mengekspresikan dengan tepat fungsi total yang dapat dibuktikan dalam orde tinggi PA, dan Kalkulus dari Konstruksi (CoC), yang merupakan kalkulus paling ekspresif dari Cube (semua dependensi diaktifkan). Saya tidak tahu karakterisasi dari ekspresifitas CoC dalam hal teori aritmetika atau teori himpunan, tetapi pasti cukup menakutkan :-)ω
Saya jauh lebih bodoh tentang kalkuli yang diperoleh dengan hanya mengaktifkan tipe dependen (pada dasarnya teori tipe Martin-Lof tanpa persamaan dan angka alami), tipe orde yang lebih tinggi atau keduanya. Dalam kalkuli ini, tipenya sangat kuat tetapi istilah tidak dapat mengakses kekuatan ini, jadi saya tidak tahu apa yang Anda dapatkan. Secara komputasi, saya tidak berpikir Anda mendapatkan lebih banyak ekspresif daripada dengan tipe sederhana, tapi saya mungkin salah.
Jadi kita dibiarkan dengan STLC. Sejauh yang saya tahu, ini adalah satu-satunya kalkulus dari Cube dengan batas atas kompleksitas yang menarik (yaitu, tidak terlalu besar). Ada pertanyaan yang belum terjawab tentang ini di TCS.SE, dan kenyataannya situasinya agak halus.
Pertama, jika Anda memperbaiki atom dan mendefinisikan N a t : = ( X → X ) → X → X , ada hasil Schwichtenberg (saya tahu ada terjemahan bahasa Inggris dari kertas itu di suatu tempat di web tetapi saya tidak dapat menemukannya sekarang) yang memberi tahu Anda bahwa fungsi tipe N a t → N a t adalah persis polinomial yang diperluas (dengan if-then-else). Jika Anda mengizinkan beberapa "slack", yaitu Anda mengizinkan parameter X untuk dipakai sesuka hati dan mempertimbangkan ketentuan tipe N a t [X Nat:=(X→X)→X→X Nat→Nat X dengan A sewenang - wenang, lebih banyak lagi yang bisa diwakili. Misalnya, sembarang menara eksponensial (sehingga Anda dapat melampaui eksponensial dua kali lipat) maupun fungsi pendahulunya, tetapi masih tidak ada pengurangan (jika Anda mempertimbangkan fungsi biner dan mencoba mengetiknya dengan N a t [ A ] → N a t [ A ′ ] → N a t ). Jadi kelas fungsi numerik yang diwakili dalam STLC agak aneh, itu adalah subset ketat dari fungsi-fungsi dasar tetapi tidak sesuai dengan apa pun yang diketahui.Nat[A]→Nat A Nat[A]→Nat[A′]→Nat
Dalam kontradiksi dengan di atas, ada tulisan ini dengan Mairson yang menunjukkan bagaimana untuk mengkodekan fungsi transisi dari sewenang-wenang mesin Turing , dari mana Anda mendapatkan jangka tipe N sebuah t [ A ] → B o o l (untuk beberapa jenis A tergantung pada M ) yang, diberikan bilangan bulat Gereja n sebagai input, mensimulasikan pelaksanaan M mulai dari konfigurasi awal yang tetap untuk sejumlah langkah dalam bentuk 2 2 ⋮ 2 n ,M Nat[A]→Bool A M n M
(Ini Teorema 3.4 di makalah mereka).
(Kebetulan, saya berbagi keterkejutan saya dalam jawaban ini untuk pertanyaan MO tentang "teorema tidak diketahui").
sumber
Sebuah jawaban untuk pertanyaan yang diajukan Damiano dalam jawabannya yang luar biasa:
Saya tidak tahu apa kekuatan kalkulus konstruksi impredikatif, jika Anda menambahkan jenis induktif dan eliminasi besar.
sumber
Saya akan mencoba untuk melengkapi jawaban Damiano yang sangat baik.
Secara umum ini adalah jalan besar penelitian, jadi saya hanya akan merujuk ke salah satu jawaban saya sebelumnya .
sumber