Kehalusannya terletak pada di mana perbedaan antara bahasa dan bahasa logam dibuat. Seperti yang ditulis oleh René Magritte :

(λf.λx.fx)((λy.y)(λz.z))(λw.w) adalah istilah lambda, ditulis dalam sintaks untuk istilah lambda. Sebut saja istilah lambda ini . Biarkan menjadi istilah lambda . Saya dapat menulis (dan ini adalah kesetaraan sejati): semua yang saya lakukan adalah memberi nama pada sebuah subterm. Jika Anda mempertimbangkan sisi kanan persamaan ini “ ”, itu tidak ditulis dalam sintaksis istilah-istilah lambda; itu ditulis dalam notasi matematika di mana kami mengizinkan surat untuk berdiri untuk istilah lambda.tM(λf.λx.fx)((λy.y)(λz.z))t=M(λw.w)M(λw.w)
Ketika kita menulis aturan seperti
ia menyatakan aksioma berikut: untuk istilah lambda dan dan nilai apa saja , jika dikurangi menjadi lalu dikurangi menjadi . Di sini kita kembali menggunakan meta-notasi (yaitu notasi matematis untuk alasan tentang suatu bahasa): panah untuk menyatakan relasi reduksi; metavariables di mana huruf menunjukkan jenis ( untuk istilah lambda,
e2→e′2ve2→ve′2
e2e′2ve2e′2ve2ve′2→evuntuk nilai) dan subskrip dan bilangan prima membedakan metavariabel dengan jenis yang sama; notasi pecahan untuk menulis aksioma induktif.
Ketika kita menulis aturan
sekali lagi adalah meta-notasi, bagian dari bahasa logam dan bukan dari lambda sintaks jangka panjang. Aturannya berarti: untuk setiap istilah lambda dan dan setiap konteks evaluasi , jika dikurangi menjadi maka dikurangi menjadi .
e→e′E[e]→vE[e′]
E[⋅]ee′E[⋅]ee′E[e]E[e′]
Jika kita memanggil konteks dengan nama (meta-) , maka . Sekali lagi, ini adalah persamaan antara dua istilah lambda, yaitu istilah lambda yang sama ada di kedua sisi dari tanda sama. Apa yang kita miliki di sebelah kiri dan di kanan adalah dua meta-notasi berbeda untuk istilah lambda yang sama : satu yang menggunakan nama yang kami berikan untuk itu, yang lain yang sedikit lebih rumit melibatkan konteks yang kami beri nama.(λf.λx.fx)[⋅](λw.w)Ett=Et[(λy.y)(λz.z)](λf.λx.fx)((λy.y)(λz.z))(λw.w)
Dengan istilah , bagaimana Anda menemukan cara mengurangi?t
- Dengan notasi menggunakan beberapa aturan, Anda harus menemukan pohon deduksi (secara umum - di sini derivasi adalah linier, jadi Anda hanya perlu menemukan rantai yang mengarah pada aksioma).
- Dengan notasi yang menggunakan konteks evaluasi, Anda harus menemukan konteks evaluasi yang sesuai.
Tata bahasa konteks evaluasi mengikuti struktur aturan evaluasi, jadi ini sebenarnya bukan dua metode tetapi dua cara berbeda untuk mengekspresikan definisi yang sama.
Untuk memahami hal ini, saya sangat merekomendasikan latihan berikut: dalam bahasa favorit Anda, terapkan evaluasi nilai-nilai-panggilan-lambda secara langsung, dengan tipe yang mewakili istilah-istilah lambda dan fungsi yang melakukan satu langkah reduksi.