MathLabs
定理已证明

从Eq.rec推出相等的传递性

命题陈述

存在仅由 Eq.rec\mathsf{Eq.rec} 构造出的项 Eq.trans:a=b→b=c→a=c\mathrm{Eq.trans} : a = b \to b = c \to a = c。

为什么成立?

把等式串联起来(a=b=ca=b=c 因而 a=ca=c)几乎在每个证明中都会用到;如果这是一条公理而不是一个可推导的项,内核就必须信任该公理,而不能通过计算来验证它。

证明思路

固定 a,ba,b 及 h1:a=bh_1 : a = b。给定任意 cc 上的 h2:b=ch_2 : b = c,我们想要 a=ca = c 的证明。用动机 C(y,h):=(a=y)C(y, h) := (a = y)(由点 yy 及连接 bb 到 yy 的证明 hh 索引)对 h2h_2 使用 Eq.rec\mathsf{Eq.rec}。

所需的基础情形是 C(b,refl b)C(b, \mathrm{refl}\,b),即 a=ba = b——恰好就是 h1h_1。所以 h1h_1 就是提供给 Eq.rec\mathsf{Eq.rec} 的基础情形证明。

于是 Eq.rec\mathsf{Eq.rec} 对每个 cc 与每个 h2:b=ch_2 : b = c 给出 C(c,h2)=(a=c)C(c, h_2) = (a = c) 的证明,这正是我们想要的。

所以 Eq.trans h1 h2:=Eq.rec (C:=λy h, a=y) h1 c h2\mathrm{Eq.trans}\,h_1\,h_2 := \mathsf{Eq.rec}\,(C := \lambda y\, h,\, a = y)\,h_1\,c\,h_2 的类型是 Eq.trans:a=b→b=c→a=c\mathrm{Eq.trans} : a = b \to b = c \to a = c。注意它与对称性共享的模式:两个证明都是通过选取合适的动机 CC,沿着一个相等关系"传输"一个事实,而真正的计算工作则交给内核对 refl\mathrm{refl} 上 Eq.rec\mathsf{Eq.rec} 的固定归约规则来完成。

用到此定理的主题

分步证明

该定理暂无分步证明。

参考文献

  1. Leonardo de Moura, Sebastian Ullrich (2021). The Lean 4 Theorem Prover and Programming Language
  2. Xavier Leroy (2009). Formal verification of a realistic compiler
  3. Terence Tao, et al. (2023). A Proof of the Polynomial Freiman-Ruzsa Conjecture · arXiv:2311.05762