paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Call-by-value and call-by-name: A simple proof of a classic theorem

传值调用与传名调用:经典定理的一个简单证明
JFP vol.352025匹配度 2/10 · 该论文属于纯形式语义与证明工程,讨论 call-by-value 与 call-by-name 之间模拟关系的经典定理及其轻量归纳证明,不涉及 LLM/Agent、静态分析、浮点程序分析或贝叶斯程序分析。虽然与程序语言/形式化验证有背景关联,但与用户当前关注的 PL×AI 交叉方向几乎没有直接匹配。引用 0 inbox
DARIUSZ BIERNACKI, JAMES MCKINNA, FILIP SIECZKOWSKI
crossref: 2026-09-10

AI 速览

一句话:提出轻量级归纳方法,为传值调用可被传名调用模拟这一经典定理给出简单证明。

该论文研究操作语义中急切求值与惰性求值的关系。在 λ 演算中,经典结论是:一个程序按传值调用求值到弱头正规形式的过程,总可由传名调用求值模拟。该结论直观但朴素证明常失败,通常需借助更复杂的标准化定理。作者提出一种新颖而轻量的归纳方法,用于证明同一演算、不同求值顺序的两种语义之间的模拟关系,并在传值调用与传名调用这一经典例子上加以实现和形式化。文章报告了该方法带来的方法论启示,尤其讨论了所选语义风格对证明的影响。

问题
如何在操作语义下刻画急切求值与惰性求值的关系;具体地,证明传值调用到弱头正规形式的求值总能被传名调用模拟。
方法
提出一种轻量级归纳方法,形式化地证明同一演算不同求值顺序的两种语义之间的模拟关系,并以传值/传名 λ 演算为例进行验证。
评估
在经典传值调用与传名调用例子上应用并形式化该方法,获得比依赖标准化定理更简单的证明,并总结语义风格对证明的方法论影响。
原文摘要(Abstract)

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.

链接与引用

DOI 原文 · PDF(开放获取) · DBLP

BibTeX
@article{BiernackiMS25,
  title = {Call-by-value and call-by-name: A simple proof of a classic theorem},
  author = {DARIUSZ BIERNACKI and JAMES MCKINNA and FILIP SIECZKOWSKI},
  journal = {Journal of Functional Programming},
  volume = {35},
  year = {2025},
  doi = {10.1017/s0956796825100038}
}