Apa dasarnya λ-calculus?


11

Saya memiliki apa yang saya sebut pertanyaan filosofis tentang λ-calculus.

Ketika Anda menjelajahi λ-calculus, Anda akan terkejut melihat semua hal yang dapat Anda lakukan di sana. Anda dapat mendefinisikan bilangan bulat, operasi aritmatika, boolean, pernyataan if-then-else, loop, fungsi rekursif, dll. Saya percaya ini telah terbukti komputasional lengkap.

Tetapi di sisi lain, jika Anda mempertimbangkan apa yang dapat Anda lakukan dengan fungsi dalam λ-calculus, Anda menyadari bahwa satu-satunya hal yang dapat Anda lakukan adalah memberi makan fungsi dan mengembalikan fungsi lainnya. Dan proses itu tidak pernah berakhir.

Jadi, bagaimana Anda mengekstraksi hasil dari perhitungan?

Misalkan hasil dari ekspresi adalah fungsi f. Anda ingin memeriksa apakah fyang Anda harapkan. Anda dapat mengujinya, mengambil fungsi yang Anda tahu, menerapkannya fdan menerima g. Tetapi untuk memeriksa gsudah benar, Anda sekarang perlu memverifikasi apa yang gdilakukannya. Dan Anda memulai dari awal. Jadi bagaimana Anda bisa tahu tentang itu f?

Sepertinya saya bahwa Anda dapat mengganti semua fungsi dalam λ-calculus dengan fungsi tunggal, fungsi identitas I = λx.x, dan semuanya masih berfungsi seperti yang dijelaskan dalam λ-calculus. Angka Gereja 3ketika diberikan fdan xkembali f(f(f(x))). Tetapi karena fdan xhanya bisa I, itu kembali I. Iditerapkan Idan Ijuga kembali I. Jadi Imemenuhi definisi 3. "Booleans" (λxy.x)dan (λxy.y)membutuhkan 2 argumen, yang akan Idan Ikedua boolean akan kembali I. Masing-masing setara dengan identitas, meskipun mereka berperilaku sesuai dengan definisi mereka.

Jadi bagaimana Anda membuat perbedaan? Bagaimana Anda menunjukkan bahwa λ-calculus berhubungan dengan lebih dari sekedar fungsi tunggal?

Apakah ada konsep identitas? Bisakah Anda mengidentifikasi suatu fungsi segera tanpa mengevaluasinya? Saya percaya terbukti bahwa tidak ada cara untuk menguji 2 fungsi untuk kesetaraan.

Atau apakah λ-kalkulus bukan tentang fungsi, tetapi tentang deskripsi formal tentang apa yang mereka lakukan? Itu berarti bahwa ekspresi λ tidak hanya menentukan apa fungsi yang dilakukan tetapi juga data yang dimanipulasi fungsi tersebut. Jadi ketika Anda menulis A B, Anda tidak berlaku Auntuk B, tetapi Anda menerapkan fungsi yang dijelaskan oleh string Ake definisi formal dari fungsi yang terkandung dalam Bmengembalikan definisi formal lain.

Apa yang sebenarnya terjadi di kalkulus λ? Apa objek matematika yang berhubungan dengannya?


Mengikuti:

OK, dari jawaban di bawah ini tampak bahwa λ-calculus tidak begitu banyak tentang fungsi dalam arti matematika, tetapi tentang subset fungsi yang dapat dinyatakan sebagai ekspresi λ. Atau bahkan lebih banyak tentang manipulasi ekspresi λ.


2
Bisakah Anda mengulangi pertanyaan terakhir menjadi sesuatu yang kurang berorientasi pada pendapat? Seharusnya ada jawaban yang solid tanpa pendapat untuk ini.
Telastyn

Dari pendidikan saya, kalkulus λ ada hanya untuk membuat otak saya sakit. Saya masih tidak yakin bagaimana saya berhasil melewati kelas itu secara utuh.

Jawaban:


9

Memang tidak mungkin untuk menentukan kesetaraan semantik dari istilah kalkulus lambda. Ini adalah salah satu aplikasi teorema Rice. Namun, mudah untuk membandingkan istilah secara sintaksis , yaitu, menguji apakah mereka memiliki struktur yang sama persis (setara, jika "representasi string" mereka sama). Itu benar-benar yang Anda butuhkan untuk mendapatkan hasil.

Misalnya, untuk menghitung fungsi n = f(i)dari naturals ke naturals, Anda memberikan pengkodean gereja isebagai parameter ke fungsi kalkulus lambda Anda, menerapkan aturan pengurangan sampai Anda berhenti, dan memeriksa istilah yang dihasilkan. Jika cocok dengan struktur angka gereja, ekstrak angka nyang dikodekan. Itu hasil Anda. Jika istilah yang dihasilkan tidak terlihat seperti angka gereja, atau pengurangan tidak berhenti, fungsinya tidak ditentukan i.

Persyaratan efektif menarik dua tugas sebagai "kode" dan "data". Itu tidak ada yang istimewa: Pita mesin Turing (string di atas alfabet) dapat --- dan sering --- ditafsirkan sebagai pengkodean mesin Turing atau beberapa aspeknya. Demikian juga, bit dalam memori utama mesin von Neumann dapat berupa pengkodean suatu program atau pengkodean dari sesuatu yang lain. Atau bahkan keduanya sekaligus. Hanya "perspektif default" yang berbeda.


Akankah ekspresi hasil perhitungan yang melibatkan angka-angka Gereja selalu berubah menjadi bentuk kanonik seperti (λfx.f (f (fx))))? Atau bisakah Anda mendapatkan ekspresi setara yang berbeda dari angka yang sama?
Florian F

@FlorianF Saya hampir yakin bahwa ada istilah non-kanonik (hingga kesetaraan alfa), tetapi jika demikian, mereka dapat dihindari dengan pembangunan program yang cermat.
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.