Skip to content

定义Definition

β-归约

施工中 · 内容逐步修订

Beta reduction

收缩函数应用 redex,以无捕获替换把实参代入函数体的一步改写关系。

形式陈述 ​

在λ 演算中,形如 (λx.t)s 的子项称为 β-redex,其 contractum 为

(λx.t)s→βt[x:=s],

其中 t[x:=s] 是无捕获替换。完整的一步 β-归约是根规则的相容闭包:

t→βt′tu→βt′u,u→βu′tu→βtu′,t→βt′λx.t→βλx.t′.

项按 α-等价识别,因而收缩前可以先选新鲜绑定名。t→βu 表示恰好一步,t→β∗u 表示零步或有限多步;t=βu 还允许反向 β 步,是另一种关系。

求值策略从完整 β-归约中挑选确定或受限的子关系。调用值只在实参已是值时收缩外层 β-redex,且通常不进入 λ 体;调用名优先处理最外层应用,也不等于允许任意位置的完整 β-归约。规则说明哪些改写合法,策略说明运行时下一步选哪一个。

直觉

β-收缩消去一次“抽象—应用”接口:形式参数从函数体中退出,实参接管它的自由出现。函数体若多次使用参数,实参会被复制;若从未使用参数,实参会被丢弃。因此一步归约既可能缩短项,也可能使项显著增大。

这里的“自由出现”是相对于函数体单独计算的:外层参数 x 在整个 λx.t 中受绑定,却在待替换的体 t 中作为自由变量出现。若体内又有 λx.u,这个内层绑定遮蔽同名参数,替换必须在那里停止。否则一次函数调用会错误地修改另一个函数的形参。

完整 β-归约把局部计算与位置选择分开。一个项的多个 redex 可以重叠或嵌套,先收缩哪处不由根规则决定;合流性、标准化和强正规化分别研究这些选择能否汇合、是否存在找到正规形的标准路径、以及所有路径是否终止。

例子与边界

对项 (λx.xx)(λy.y),外层收缩先复制实参:

(λx.xx)(λy.y)→β(λy.y)(λy.y)→βλy.y.
左侧 redex 的函数体含两个 x;收缩后,同一个实参 s 替换两处并形成右侧应用。

在 (λx.λy.x)y 中,直接代入会错误地产生 λy.y;先把内层绑定变量换成新鲜 z,正确结果是 λz.y。两项并不 α-等价,捕获规避是规则正确性的一部分。

还可检查遮蔽:(λx.λx.x)s→βλx.x。待替换的体是 λx.x,其中没有自由的 x,所以实参 s 被完全丢弃。它与 (λx.λz.x)s 不同,后者在选取 z∉FV(s) 后收缩为 λz.s。这个对照区分了同名字母与同一个绑定的使用。

令 Ω=(λz.zz)(λz.zz)。擦除参数的 redex 展示策略差异:

(λx.y)Ω→βy.

完整 β-归约也允许一直收缩 Ω,调用值则必须先求实参而发散。项有正规形 y,却不是强正规化,也不在所有策略下终止。

β-正规形、值和闭项仍是三种不同分类。λx.(λy.y)z 在弱调用语义中是值,却含 β-redex;自由变量 x 是 β-正规形,却不是闭项。现实语言的整数运算、存储、异常与 I/O 还需要 β 规则之外的动态语义。

推论与应用

多步归约把若干 β 步连接起来,λ-正规形刻画没有任何 β-redex 的项。Church–Rosser 定理保证从同一起点到达的两个结果仍可汇合,因而已存在的正规形在 α-等价意义下唯一。

类型理论用替换引理证明 β-步骤保持类型;强正规化还需额外证明所有允许的 β 路径有限。编译器内联可看作带成本、共享与副作用条件的 β-收缩,不能在有状态语言中无条件复制或删除实参计算。

参考资料
  • Henk Barendregt, The Lambda Calculus: Its Syntax and Semantics, revised ed., North-Holland, 1984, Chapters 2–3。
  • Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002, Chapters 5–7。
  • J. Roger Hindley and Jonathan P. Seldin, Lambda-Calculus and Combinators: An Introduction, Cambridge University Press, 2008, Chapters 3–4。
关系图谱15 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组