Algoritma untuk menentukan persamaan fungsi pada kalkulus lambda yang diketik sederhana?


10

Kita tahu bahwa beta-equality dari istilah lambda yang diketik adalah mudah untuk dipilih. Diberikan M, N: σ → τ, apakah dapat ditentukan apakah untuk semua X: σ, MX β NX?


Cukup Ketik Lambda Calculus / STLC wikipedia. Karena ini belum selesai, apakah ada model dasar perhitungan lain yang setara dengan itu? mungkin juga berguna untuk mempelajari algoritme pendeteksi penghentian, yang menurut wikipedia dapat dipilih untuk STLC ...
vzn

3
@ Marszio: Sebenarnya, saya pikir masalah di sini adalah dengan cara pertanyaan dirumuskan, yang cukup tidak tepat. Setelah dirumuskan dengan benar, ini adalah pertanyaan tingkat penelitian. Formulasi yang lebih baik adalah: kita tahu bahwa beta-equality dari istilah lambda yang diketik dapat dipilih. Diberikan M,N:στ , apakah dapat ditentukan apakah untuk semua X:σ , MXβNX ? Jawabannya negatif secara umum (jadi tidak ada algoritma seperti yang dicari oleh Viclib). Meskipun mungkin diharapkan, ini tidak jelas apriori dan merupakan konsekuensi dari beberapa makalah dari tahun 90-an.
Damiano Mazza

@ DamianoMazza: ok, memang saya tidak memilih untuk menutupnya ... Saya akan menghapus komentar saya, tinggalkan komentar Anda dan tunggu komentar / edit OP.
Marzio De Biasi

@ DamianoMazza dan Marzio, saya tidak cukup tahu untuk membuat pertanyaan formal. Saya berharap saya lakukan, tetapi ini bukan sesuatu yang saya pelajari di sekolah saya. Bahkan, bahkan googling untuk "beta-equality", yang merupakan sesuatu yang sebenarnya saya coba sebelum mengajukan pertanyaan, memberi saya begitu sedikit hasil sehingga hampir seperti istilah ini bahkan tidak ada. Jadi saya bahkan tidak punya ide di mana Anda belajar dan membaca tentang semua itu. Akankah kalian mengarahkan saya ke tempat yang tepat untuk mulai belajar topik sendiri? Pertanyaan diperbarui.
MaiaVictor

1
@Viclib: beta-equivalence adalah gagasan teknis, saya menghindari menyebutkannya dalam jawaban saya. Secara kasar, dua istilah ini setara dengan beta saat menghasilkan hasil yang sama. Jadi mengatakan untuk semua berarti bahwa dan menghitung fungsi yang sama. Mengenai petunjuk untuk belajar tentang lambda-kalkulus (diketik atau tidak diketik), saya pikir catatan Peter Selinger dan Sørensen dan Urzyczyn Lecture Notes tentang Curry-Howard adalah tempat awal yang bagus. MXβNXXMN
Damiano Mazza

Jawaban:


13

Seperti yang saya katakan dalam komentar saya, jawabannya secara umum adalah tidak.

Poin penting untuk dipahami (saya katakan ini untuk Viclib, yang tampaknya belajar tentang hal-hal ini) adalah bahwa memiliki bahasa pemrograman / set mesin di mana semua program / perhitungan diakhiri tidak berarti menyiratkan kesetaraan fungsi (yaitu, apakah dua program / mesin menghitung fungsi yang sama) dapat dipilih. Contoh mudah: ambil satu set mesin Turing secara polinomi. Menurut definisi, semua mesin tersebut berakhir pada semua input. Sekarang, mengingat mesin Turing apa pun , ada mesin Turing yang, diberikan dalam input string , mensimulasikanlangkah-langkah perhitungan pada input tetap (katakanlah, string kosong) dan menerima jika paling banyak berakhirMM0x|x|MM|x|langkah, atau menolak sebaliknya. Jika adalah mesin Turing yang selalu langsung menolak, dan keduanya (jelas) memiliki clock-polinomial, dan apakah kita dapat memutuskan apakah dan menghitung fungsi yang sama (atau, dalam hal ini, memutuskan bahasa yang sama), kita akan dapat memutuskan apakah (yang, ingat, adalah mesin Turing yang sewenang-wenang) berakhir pada string kosong.NM0NM0NM

Dalam kasus yang hanya diketik -calculus (STLC), argumen yang sama berfungsi, kecuali bahwa mengukur kekuatan ekspresif dari STLC tidak sepele seperti dalam kasus di atas. Ketika saya menulis komentar saya, saya memikirkan beberapa makalah oleh Hillebrand, Kanellakis dan Mairson dari awal 90-an, yang menunjukkan bahwa, dengan menggunakan jenis yang lebih kompleks daripada jenis bilangan bulat Gereja yang biasa, orang dapat menyandikan dalam STLC cukup kompleks perhitungan untuk argumen di atas berfungsi. Sebenarnya, saya melihat sekarang bahwa bahan yang dibutuhkan sudah dalam bukti disederhanakan teorema Statman Mairson:λ

Harry G. Mairson, Bukti sederhana dari teorema Statman. Theoretical Computer Science, 103 (2): 387-394, 1992. (Tersedia online di sini ).

Dalam tulisan itu, Mairson menunjukkan bahwa, mengingat setiap Turing mesin , ada tipe sederhana dan -istilah pengkodean fungsi transisi . (Ini bukan apriori yang jelas, jika seseorang berpikir tentang kekuatan ekspresif yang sangat buruk dari STLC pada bilangan bulat Gereja. Memang, pengkodean Mairson tidak langsung). Dari sini, tidaklah sulit untuk membangun sebuah istilahMσλδM:σσM

tM:nat[σ]bool

(di mana adalah Instansiasi pada dari tipe bilangan bulat Gereja) sehingga menjadi jika berakhir di paling langkah ketika mengumpankan string kosong, atau mengurangi ke sebaliknya. Seperti di atas, jika kita dapat memutuskan bahwa fungsi yang diwakili oleh adalah fungsi konstan , kita akan memutuskan terminasi pada string kosong.nat[σ]σtMn_1_Mn0_tM0_M


Mungkin juga dimungkinkan untuk menggunakan pengkodean fungsi polinomial multi-variasi dalam STLC dan kemudian menarik teorema Matiyasevich .
cody

Jadi STLC tidak turing lengkap, tetapi cukup kuat untuk mengkodekan fungsi transisi dari mesin Turing !? Jadi Mesin Turing dapat didefinisikan sebagai pita plus program STLC yang beroperasi di atasnya?
MaiaVictor

2
@Viclib: Pikirkan: mensimulasikan satu langkah dari mesin Turing yang sewenang-wenang tidak memerlukan banyak daya komputasi. Pada dasarnya, Anda hanya perlu tipe data yang terbatas (dengan if-then-else), daftar (dengan operasi dasar: kontra, ekor, dll.) Dan pasangan yang dipesan. (Faktanya, Tesis Diperpanjang Gereja-Turing mengklaim bahwa kompleksitas rendah seperti itu umum untuk setiap model mesin yang masuk akal). Yang tidak dimiliki oleh STLC adalah kemampuan untuk menjalankan transisi TM "ad libitum", terlepas dari input: ia hanya dapat mengulanginya beberapa kali sama dengan menara eksponensial dalam ukuran input (lihat makalah Mairson).
Damiano Mazza

1
@cody: Terima kasih, saya tidak tahu kertas itu. Saya kira Anda benar.
Damiano Mazza
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.