Saya memiliki tiga subquestions terkait, yang disorot oleh poin-poin di bawah ini (tidak, mereka tidak dapat dibagi, jika Anda bertanya-tanya). Andrej Bauer menulis, di sini , bahwa beberapa fungsi dapat diwujudkan melalui mesin Turing, tetapi tidak melalui lambda-calculus. Langkah utama dari alasannya adalah:
Namun, jika kita menggunakan kalkulus lambda, maka [program] c seharusnya menghitung angka yang mewakili mesin Turing dari istilah lambda yang mewakili fungsi f. Ini tidak dapat dilakukan (saya dapat menjelaskan mengapa, jika Anda mengajukannya sebagai pertanyaan terpisah).
- Saya ingin melihat penjelasan / bukti informal.
Saya tidak melihat bagaimana menerapkan teorema Rice di sini; itu akan berlaku untuk masalah "apakah mesin turing ini T dan lambda-istilah L ini setara?", karena menerapkan predikat ini ke istilah yang setara memberikan hasil yang sama. Namun, fungsi yang diperlukan mungkin menghitung TM yang berbeda, tetapi setara, untuk istilah lambda yang berbeda, tetapi setara.
- Terlebih lagi, jika masalahnya adalah dengan introspeksi terhadap istilah lambda, saya pikir bahwa meloloskan pengodean Gödel dari istilah lambda juga dapat diterima, bukan?
Di satu sisi, mengingat bahwa contohnya melibatkan komputasi, dalam kalkulus lambda, jumlah langkah yang dibutuhkan oleh Mesin Turing untuk menyelesaikan tugas yang diberikan, saya tidak terlalu terkejut.
- Tetapi karena di sini lambda-calculus tidak dapat menyelesaikan masalah yang berhubungan dengan mesin Turing, saya bertanya-tanya apakah seseorang dapat mendefinisikan masalah yang sama untuk lambda-calculus dan membuktikannya tidak dapat diselesaikan untuk mesin Turing, atau sebenarnya ada perbedaan kekuatan yang mendukung Mesin Turing (yang akan mengejutkan saya).
sumber
Apa kata Neel, dan juga yang berikut.
Saya ingin menekankan ( lagi , lagi dan lagi ) bahwa representasi masalah input dan output. Jika kita diizinkan untuk mengubah representasi, kita dapat mencapai apa saja (misalnya, membuat fungsi yang diberikan dapat dikomputasi). Jadi, beralih dari representasi fungsi oleh -terms ke representasi oleh angka Gödel tidak dapat diterima jika model perhitungan kami adalah -calculus (karena dengan demikian operasi currying menjadi tidak bisa dihitung oleh -calculus).N→N λ λ λ
Pernyataan yang dapat diwujudkan dalam model -term tetapi tidak dalam model mesin Turing adalah "tidak setiap fungsi memiliki kode Gödel", yang agak konyol. Saya akan mencoba membuat yang lebih baik dan mengedit jawaban ini.λ N→N
Edit pada 2013-10-07: Inilah yang saya maksud dengan "currying menjadi uncomputable". Misalkan kita menggunakan -calculus yang tidak diketik sebagai model komputasi kita, tetapi kemudian kita memutuskan bahwa kita harus mewakili peta dengan kode Gödel (dari mesin Turing, dikodekan sebagai angka Gereja). Kedengarannya tidak berbahaya, bukan? Bagaimanapun kami percaya mantra "Mesin Turing dan calculus adalah sama".λ N→N λ
Nah, agar representasi baru ini benar-benar menjadi representasi valid dari , kita juga perlu merealisasikan aplikasi dan currying (karena "mewakili fungsi" berarti hal yang sama dengan "untuk mewakili suatu objek eksponensial "). Secara khusus, kita perlu sebuah -istilah seperti itu, setiap kali Gereja angka merupakan maka diwakili oleh . (Di sini saya menulis untuk angka Gereja yang mewakili angka .) SepertiN→N λ app n¯¯¯ f:N→N f(k) appn¯¯¯k¯¯¯ n¯¯¯ n app sudah tersedia karena jumlah penerjemah untuk mesin Turing, diimplementasikan dalam -calculus.λ
Tapi bagaimana dengan kari? Untuk itu kita perlu yang berikut ini. Misalkan adalah himpunan yang diwakili. Diberikan peta apa saja dihitung oleh a -term , kita perlu menunjukkan bahwa transposisi juga dikomputasi oleh beberapa -term . Tetapi perhatikan contoh di mana adalah himpunan o fmaps diwakili oleh -terms, dan adalah aplikasi. Maka akan menjadi peta yang bertindak sebagai identitas padaf : X × N → N λ t ˜ f : X → ( N → N ) λ s X N → N λ f ˜ f N → N λ λ N → N λX f:X×N→N λ t f~:X→(N→N) λ s X N→N λ f f~ N→N , tetapi realizer-nya adalah -term yang mengonversi -terms yang mewakili peta menjadi kode Gödel yang sesuai. Seperti -term tidak ada (misalnya karena itu akan terputus dalam model semantik topologis).λ λ N→N λ
Anda dapat mencoba menolak bahwa saya seharusnya tidak menggunakan set peta diwakili khusus diwakili oleh -terms, karena kami "setuju" bahwa semua itu harus diwakili oleh kode Gödel . Tapi kamu salah. Pertama-tama, saya bisa menggunakan berbeda dengan bukti yang lebih rumit yang akan menghindari Anda tetapi masih mencapai hasil yang sama. Kedua, ada dalam kategori dan definisi eksponensial mensyaratkan bahwa pekerjaan kari sehubungan dengan semua objek. Anda harus menghormati kategorinya. Anda tidak bisa hanya membantai secara acak dan mengambil beberapa objek (well, Anda bisa tetapi kemudian Anda adalah tukang daging).N → N λ X XX N→N λ X X
sumber