Apakah ada kalkulus lambda yang diketik di mana logika yang sesuai di bawah korespondensi Curry-Howard konsisten, dan di mana ada ekspresi lambda yang diketik untuk setiap fungsi yang dapat dihitung?
Ini memang pertanyaan yang tidak tepat, tidak memiliki definisi yang tepat tentang "kalkulus lambda yang diketik." Saya pada dasarnya bertanya-tanya apakah ada (a) contoh yang diketahui dari ini, atau (b) bukti ketidakmungkinan yang diketahui untuk sesuatu di bidang ini.
Sunting: @cody memberikan versi yang tepat dari pertanyaan ini dalam jawaban di bawah ini: apakah ada sistem tipe murni logis (LPTS) yang konsisten dan Turing lengkap (dalam arti didefinisikan di bawah)?
type-theory
lambda-calculus
typed-lambda-calculus
curry-howard
Morgan Thomas
sumber
sumber
Jawaban:
Baiklah saya akan coba-coba: Secara umum untuk sistem tipe diberikan , berikut ini benar:T
Buktinya umumnya hasil dengan asumsi Anda memiliki istilah tipe F a l s e , menggunakan pengurangan subjek untuk mendapatkan bentuk normal, dan kemudian melanjutkan dengan induksi pada struktur istilah tersebut untuk mendapatkan kontradiksi.absurd False
Itu wajar untuk bertanya-tanya apakah yang terjadi terus, yaitu
Masalah dengan ini adalah bahwa tidak ada gagasan nyata yang paling umum tentang "sistem tipe", dan bahkan kurang kesepakatan tentang makna konsistensi logis untuk sistem tersebut. Namun, kami dapat memverifikasi itu secara empiris
Bagaimana ini mengikat Turing Completeness? Sebagai contoh , jika pengecekan tipe dapat dilakukan , maka argumen Andrej menunjukkan bahwa salah satu dari yang berikut ini harus berlaku:
Ini cenderung menunjukkan bahwa:
Memberikan teorema yang sebenarnya daripada saran memerlukan membuat gagasan tentang sistem tipe dan interpretasi logis yang tepat secara matematis.
Sekarang dua komentar muncul di pikiran:
Ada sistem tipe yang tidak dapat ditentukan , sistem tipe persimpangan yang memiliki interpretasi logis dan dapat mewakili setiap normalisasi -term. Seperti yang Anda katakan, ini tidak persis sama dengan Turing Lengkap, karena jenis fungsi total mungkin perlu diperbarui (disempurnakan, pada kenyataannya) sebelum menerapkannya pada argumen yang diinginkan. Kalkulus adalah kalkulus "gaya kari" dan sama dengan STLC + Γ ⊢ M : τλ
dan
Γ⊢M:τ∩σ
Ada kelas sistem tipe, Sistem Tipe Murni , di mana pertanyaan seperti itu dapat dibuat tepat. Namun dalam kerangka ini, interpretasi logisnya kurang jelas. Orang mungkin tergoda untuk mengatakan: "PTS konsisten jika memiliki tipe tidak berpenghuni". Tetapi ini tidak berhasil, karena tipe-tipe dapat hidup dalam "alam semesta" yang berbeda, di mana beberapa mungkin konsisten dan beberapa tidak. Coquand dan Herbelin mendefinisikan gagasan Sistem Jenis Murni Logis , di mana pertanyaan itu masuk akal, dan muncul
Yang menjawab pertanyaan dalam satu arah (tidak konsisten TC) dalam kasus ini. Sejauh yang saya tahu, pertanyaan untuk LPTS umum masih terbuka dan cukup sulit.⇒
Sunting: Kebalikan dari hasil Coquand-Herbelin tidak semudah yang saya kira! Inilah yang saya kemukakan sejauh ini.
Sebuah Sistem Type Pure logis adalah PTS dengan (setidaknya) macam dan T y p e , (setidaknya) aksioma P r o p : T y p e dan (setidaknya) aturan ( P r o p , P r o p , P r o p ) , dengan persyaratan lebih lanjut bahwa tidak ada macam jenis P r o p .Prop Type Prop:Type (Prop,Prop,Prop) Prop
Sekarang saya akan mengambil pernyataan tertentu dari Turing Completeness: perbaiki LPTS dan biarkan Γ menjadi konteksnyaL Γ
adalahTuring Completeiff untuk setiap fungsi komputabel total f : N → N ada istilah t f sehingga Γ ⊢ t f : n a t → n a t dan untuk setiap n ∈ N t f ( S n 0 ) → ∗ β S f ( n ) 0L f:N→N tf
Sekarang argumen diagonalisasi Andrej menunjukkan bahwa ada non-terminating dari tipe n a t .t nat
Sekarang sepertinya kita setengah jalan di sana! Mengingat non terminating jangka , kita ingin mengganti kejadian n sebuah t oleh beberapa jenis generik A dan menyingkirkan 0 dan S di Γ , dan kami akan memiliki inkonsistensi kami ( A dihuni dalam konteks A : P r o p )!Γ⊢loop:nat n a t SEBUAH 0 S Γ SEBUAH A : P r o p
Sayangnya, di sinilah saya buntu, karena mudah untuk mengganti dengan identitas, tetapi 0 jauh lebih sulit untuk dihilangkan. Idealnya kami ingin menggunakan teorema rekursi Kleene, tapi saya belum menemukan jawabannya.S 0
sumber
Berikut adalah jawaban untuk varian dari precisifikasi @ cody atas pertanyaan saya. Ada LPTS konsisten yang Turing lengkap dalam arti kira-kira @ cody, jika kita mengizinkan pengenalan aksioma tambahan dan aturan pengurangan . Dengan demikian, sistemnya bukanlah LPTS; itu hanya sesuatu yang mirip satu.β
Pertimbangkan kalkulus konstruksi (atau anggota favorit Anda dari kubus). Ini adalah LPTS, tetapi kami akan menambahkan hal-hal tambahan yang membuatnya bukan LPTS. Pilih simbol konstan nat , 0 , S , dan tambahkan aksioma:λ nat,0,S
⊢ 0 : nat ⊢ S : nat → nat
Indeks program mesin Turing dengan bilangan alami, dan untuk setiap bilangan alami , pilih simbol konstan f e , tambahkan aksioma f e : nat → nat , dan untuk semua e , x ∈ N , tambahkan aturan pengurangan βe fe fe:nat→nat e,x∈N β
Sekarang, teori ini jelas Turing lengkap dalam arti kasar @ cody, hanya dengan kekerasan; tetapi klaimnya juga konsisten. Mari kita buat modelnya.
sumber