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.λNatStrBool
Pertama, rekap singkat di Lambda Cube. 8 kalkulusnya diperoleh dengan mengaktifkan atau menonaktifkan 3 jenis dependensi berikut di atas -calculus (STLC) yang diketik sederhana :λ
- polimorfisme : istilah mungkin tergantung pada jenis;
- tipe dependen : tipe dapat bergantung pada ketentuan;
- urutan yang lebih tinggi : tipe mungkin tergantung pada tipe.
(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→XNat→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βNatStrStr→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 [XNat:=(X→X)→X→XNat→NatX 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]→NatANat[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 ,MNat[A]→BoolAMnM
22⋮2n,
dengan ketinggian menara diperbaiki. Ini
tidak menunjukkan bahwa setiap masalah dasar dapat diputuskan oleh STLC, karena dalam STLC tidak ada cara untuk mengkonversi string biner (dari tipe
) yang mewakili input
M ke tipe yang digunakan untuk mewakili konfigurasi
M di Pengkodean Mairson. Jadi pengkodeannya entah bagaimana "tidak seragam": Anda dapat mensimulasikan eksekusi yang lama secara elementer dari input tetap, menggunakan istilah berbeda untuk setiap input, tetapi tidak ada istilah yang menangani input sewenang-wenang.
StrMM
CSTStr[A]→BoolACSTCST⊊LINTIMELINTIME∖CST
CST
CST=REG{0,1}
(Ini Teorema 3.4 di makalah mereka).
CSTLINTIMEλCST
(Kebetulan, saya berbagi keterkejutan saya dalam jawaban ini untuk pertanyaan MO tentang "teorema tidak diketahui").