Zeta 简化(ζ Reduction)是作用与 let-binder 表达结构的一种简化规则(Reduction Rule)。
下面,看 LEAN 如何扩展 let-binder 表达结构,及其 Zeta简化的。
1. 表达结构(let-binder)的语法定义
注解:
在类型判断(Type Check)前,先把表达式 e 中的变量x,全替换成 e'。也就是说,表达式 e,其变量x未被替换前,其不需要进行类型判断(Type Check),这意味着,变量未被替换时,表达式 e 允许类型判断失败的。
与抽象化(Abstraction)的区别是,表达式 e 如果是抽象化(Abstraction),即函数,再其变量未被替换时,需要经过类型判断(pass the Type Check)。
2. let-binder 的赋型规则(Typing Rule)
前提(Premises):
a. 在 Γ 的假设,表达式 e' 的类型是 α。
b. 在 Γ 的假设,表达式 e 中的变量x,全替换成 e' 后,其类型为 β。
结论(Conclusion):
在 Γ 的假设,整个 let binder 表达式的类型为 β。
3. Zeta 简化(ζ Reduction)的定义上相等规则
即定义 let-binder表达结构的涵义
注解:let-binder 经过 Zeta简化后,其表达式 在定义上等于(Definitional Equals)表达式 e,其中的变量x,全替换成 e' 。这里,有个前提的是,表达式 e' 的类型 必须 与 变量x的类型相同,即 α。
4. let-binder 的步进规则(Progress Rules)
口
另论,所有的转化规则(Conversion and Reduction Rules)都是 通过 定义上相等(Definitional Equality)推演规则(Inference Rules)来定义的(Define),因此,定义上相等意味着算法式定义上相等(Algorithmic Definitional Equality),同时,步进规则(Progress Rules)体现了计算的过程,即一步一步地使用转化规则,往最终得到对应类型的正规元素(Canonical Elements)推进。