paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Foundations of strong call by need

强 call-by-need 的基础
ICFP 1(ICFP)2017匹配度 2/10 · 论文属于纯函数式编程语言理论,研究强 call-by-need 求值策略与非幂等交类型,与用户关注的静态分析、LLM/Agent、浮点程序分析、贝叶斯程序分析均无直接关联。引用 30 inbox
Thibaut Balabonski, Pablo Barenbaum, Eduardo Bonelli, Delia Kesner
dblp: 2026-09-10crossref: 2026-09-10

AI 速览

一句话:提出一种强 call-by-need 求值策略,可计算开放 λ 项的强范式,并用非幂等交类型证明其完备性。

论文研究开放 λ 项的强范式计算:归约可进入抽象体与替换内部,项也可含自由变量。作者提出一种强 call-by-need 求值策略,保证参数仅在需要时求值且至多一次。为证明完备性,他们定义可在任意上下文归约的强 call-by-need 演算,并采用非幂等交类型:纯 λ 演算中具有 β-强范式的项可被类型化,可类型化蕴含该演算的弱规范化,而弱规范化又蕴含强 call-by-need 策略的规范化。由此该策略对归约到 β-强范式完备,并被证明保守扩展标准弱 call-by-need。

问题
如何为开放 λ 项定义强 call-by-need 归约,使参数仅在需要时求值且至多一次,并归约到强范式?
方法
定义可在任意上下文归约的强 call-by-need 演算,并借助非幂等交类型及弱/强规范化之间的联系证明完备性。
评估
证明该策略相对 β-归约到强范式是完备的,且保守扩展标准弱 call-by-need。
原文摘要(Abstract)

We present a call-by-need strategy for computing strong normal forms of open terms (reduction is admitted inside the body of abstractions and substitutions, and the terms may contain free variables), which guarantees that arguments are only evaluated when needed and at most once. The strategy is shown to be complete with respect toβ-reduction to strong normal form. The proof of completeness relies on two key tools: (1) the definition of a strong call-by-need calculus where reduction may be performed inside any context, and (2) the use of non-idempotent intersection types. More precisely, terms admitting aβ-normal form in pure lambda calculus are typable, typability implies (weak) normalisation in the strong call-by-need calculus, and weak normalisation in the strong call-by-need calculus implies normalisation in the strong call-by-need strategy. Our (strong) call-by-need strategy is also shown to be conservative over the standard (weak) call-by-need.

链接与引用

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

BibTeX
@article{BalabonskiBBK17,
  title = {Foundations of strong call by need},
  author = {Thibaut Balabonski and Pablo Barenbaum and Eduardo Bonelli and Delia Kesner},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {1},
  number = {ICFP},
  year = {2017},
  doi = {10.1145/3110264}
}