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