Call-by-value and call-by-name: A simple proof of a classic theorem
Abstract One of the natural problems of operational semantics is to characterise the relationship between eager and lazy evaluation. In the context of $\lambda$ -calculus, this is expressed by the classic theorem that call-by-value evaluation of a program to (weak-head) normal form can always be simulated by a call-by-name evaluation. While the statement and intuition behind it are simple and clear, naive attempts at proof famously fail: the result is usually established as a consequence of the more complex standardisation theorem. In this work, we develop and formalise a novel and lightweight inductive approach to tackle the problem of simulation between two semantics for a single calculus, but with different evaluation orders. We exercise our method on the classic call-by-value and call-by-name example and report on methodological takeaways suggested by our approach, in particular what effect the flavour of semantics chosen has on the proof.
Authors
- James McKinna (ORCID: https://orcid.org/0000-0001-6745-2560)
- Filip Sieczkowski (ORCID: https://orcid.org/0000-0001-5011-3458)
- Dariusz Biernacki (ORCID: https://orcid.org/0000-0002-1477-4635)
Institutions
- University of Wrocław (PL)
- Heriot-Watt University Malaysia (MY)
Publication Details
- Journal
- Journal of Functional Programming
- Published
- 2025-01-01
- DOI
- https://doi.org/10.1017/s0956796825100038
- Primary Topic
- Logic, programming, and type systems
- Type
- article
- Field-Weighted Citation Impact
- 0.00