Apakah ada kalkulus lambda yang diketik lengkap dari Turing?

Jawaban:

37

Ya tentu. Banyak kalkulus lambda yang diketik hanya menerima istilah yang sangat normal , oleh desain, sehingga mereka tidak dapat mengekspresikan perhitungan sewenang-wenang. Tetapi sistem tipe bisa apa saja yang Anda suka; buat itu cukup luas, dan Anda dapat mengekspresikan semua perhitungan deterministik.

Sistem tipe sepele yang mencakup fragmen lengkap-Turing dari kalkulus lambda adalah sistem yang menerima setiap istilah yang diketik dengan baik (dengan tipe teratas ).

ΓM.:

Lebih praktis, bahasa pemrograman fungsional yang diketik secara statis pada intinya memiliki kalkulus lambda yang diketik yang memungkinkan kombinator fixpoint juga diketik dengan baik. Sebagai contoh, mulai dengan kalkulus lambda yang diketik sederhana (atau sistem tipe ML atau sistem F atau sistem tipe lain pilihan Anda) dan tambahkan aturan yang membuat beberapa kombinator fixpoint seperti diketik dengan baik. Γ f : T TY=λf.(λx.f(xx))(λx.f(xx)) Aturan-aturan yang disajikan di atas agak canggung, karena mereka membuat istilah sepertiY

Γf:TTΓYf:TΓf:TTΓ(λx.f(xx))(λx.f(xx)):T
diketik dengan baik meskipun konstituennya tidak diketik dengan baik - mereka tidak sepenuhnya komposisional. Perbaikan sederhana adalah menambahkan kombinator fixpoint sebagai konstanta bahasa dan memberikan aturan delta untuk itu; maka itu adalah masalah sederhana untuk memiliki sistem tipe dan semantik reduksi denganpengawetan tipe. Anda menjauh dari kalkulus lambda murni ke bidang kalkulus lambda dengan konstanta. Yf
Γmemperbaiki:(TT)Tmemperbaikiff(memperbaikif)

Berpegang pada kalkulus lambda murni, sistem tipe yang menarik adalah kalkulus lambda dengan tipe persimpangan.

ΓM.:T1ΓM.:T2ΓM.:T1T2(saya)ΓM.:(saya)

Jenis titik-temu memiliki sifat yang menarik sehubungan dengan normalisasi:

  • saya

Lihat Karakterisasi istilah lambda yang memiliki tipe serikat untuk wawasan tentang mengapa jenis persimpangan memiliki cakupan yang luar biasa.

Jadi, Anda memiliki sistem tipe yang mendefinisikan bahasa lengkap Turing (karena setiap istilah diketik dengan baik), dan karakterisasi sederhana penghentian komputasi. Tentu saja, karena sistem tipe ini mencirikan normalisasi, maka tidak dapat ditentukan.

(saya)(saya)saya

Gilles 'SANGAT berhenti menjadi jahat'
sumber