この本の全体 目次と読む順
- 第 0 部 入口 — この本の読み方
- 0-01 この本の読み方
- 0-02 一枚の絵
- 0-03 問題文を一語ずつ読む
- 0-04 数学の四次元と物理の四次元
- 第 1 部 数学の準備
- 1-01 ベクトル空間と線形写像
- 1-02 群とは何か
- 1-03 リー群とリー環
- 1-04 SU(2) と SU(3)
- 1-05 多様体と接空間
- 1-06 微分形式と外微分
- 1-07 ベクトル束と接続
- 1-08 確率と測度
- 1-09 無限次元の確率
- 1-10 ヒルベルト空間と自己共役作用素
- 1-11 フーリエ解析と分布
- 1-12 寄り道
- 第 2 部 物理の準備
- 2-01 ラグランジアンと作用
- 2-02 場という考え
- 2-03 電磁気学はゲージ理論である
- 2-04 特殊相対論と時空
- 2-05 量子力学の骨
- 2-06 調和振動子と生成消滅
- 2-07 経路積分の考え方
- 2-08 統計力学と相転移
- 2-09 寄り道
- 2-10 緩和の時間と動的指数 z
- 第 3 部 ヤン–ミルズ理論(古典)
- 3-01 ゲージ原理
- 3-02 非可換ゲージ場
- 3-03 作用と方程式
- 3-04 幾何としてのゲージ理論
- 3-05 インスタントンと位相
- 3-06 寄り道
- 3-07 標準模型の中のヤン–ミルズ
- 第 4 部 量子化
- 4-01 正準量子化とハミルトニアン
- 4-02 経路積分とユークリッド化
- 4-03 摂動論と Feynman ダイアグラム
- 4-04 発散と繰り込み
- 4-05 発散の代数
- 4-06 漸近自由
- 4-07 次元転移と Λ
- 4-08 ゲージ固定と Faddeev–Popov
- 4-09 場の量子論の公理
- 4-10 Osterwalder–Schrader の公理と再構成
- 4-11 質量ギャップの定義
- 4-12 寄り道
- 第 5 部 格子ゲージ理論
- 5-01 Wilson の格子
- 5-02 強結合展開
- 5-03 反射正値性と転送行列
- 5-04 無限体積極限とクラスター展開
- 5-05 弱結合と連続極限
- 5-06 U(1) と非可換の違い
- 5-07 モンテカルロ法
- 5-08 グルーボールと弦張力の測定
- 5-09 何を固定して極限を取るか
- 5-10 有限群の格子ゲージ理論
- 5-11 寄り道
- 第 6 部 構成的場の理論
- 6-01 構成的場の理論とは
- 6-02 二次元の可解性とヤン–ミルズ測度
- 6-03 スカラー場の構成
- 6-04 クラスター展開
- 6-05 繰り込み群の段の列
- 6-06 三次元ヤン–ミルズの紫外安定性
- 6-07 四次元
- 6-08 四次元の φ⁴ の自明性
- 6-09 確率量子化と正則性構造
- 6-10 四次元で止まる場所
- 6-11 発散以外の障害
- 6-12 寄り道
- 第 7 部 物理の側から
- 7-01 物理はどう見ているか
- 7-02 閉じ込めの機構
- 7-03 弦の絵
- 7-04 大 N
- 7-05 ひも理論と余剰次元
- 7-06 余剰次元が見えなくなる仕組み
- 7-07 ゲージ場はどこから来るか
- 7-08 ホログラフィー
- 7-09 質量ギャップが幾何になる
- 7-10 四次元に戻す
- 7-11 超対称と Seiberg–Witten
- 7-12 等価原理に当たる一文
- 7-13 物理の掘り方が数学と離れる場所
- 第 8 部 二つの言葉の辞書 — 物理の視点と数学の視点
- 8-01 辞書の読み方
- 8-02 辞書 A
- 8-03 辞書 B
- 8-04 辞書 C
- 8-05 私たちの仮定の物理側の対応
- 第 9 部 現在地と課題
- 9-01 世界はどこまで来ているか
- 9-02 二つの掘り方の切れ目
- 9-03 新しい概念の候補
- 9-04 課題の一覧
- 9-05 よくある誤解
- 第 10 部 質量ギャップの厳密な証明へ — この端末の検討
- 10-00 第 10 部の入口 — 酔歩と定規と時計
- 10-01 理論の構成の筋
- 10-02 一段の記帳
- 10-03 仮定 H と三つの鎖
- 10-04 方向の地図
- 10-05 方向 12〜14
- 10-06 方向 15・15′
- 10-07 Lean で閉じた言明と既存の結果の対応表
- 10-08 壁の一覧
- 10-09 ひらめき帳から
- 10-10 主張しないこと
- 10-12 つじつま合わせ
- 10-11 定理までの距離
- 10-13 小さな問い — 卒業研究の大きさで決着のつく十〜二十問
- 付録
- A-01 記号表
- A-02 用語集
- A-03 文献案内
- A-04 Lean と機械検査
- A-05 この本の作り方
- A-06 仮定の索引
Lean と機械検査 — 札「Lean」が保証するのは前提から結論への矢印だけ
この章で分かること — Lean で「検査済み」とは何が確かめられたことか(命題は型・証明は項・信じるのはカーネル)。
証明の途中のゴールの読み方と、sorry・native_decide・公理の見つけ方(この端末で七つの小さなファイルを検査した結果つき)。
通っても言いたいことが言えていない四つの型、本書の札の決め方、読者が自分で検査し直す手順。
前提となる章 — なし。Lean を使ったことがなくても読めます。詳しい使い方はこのサイトの Lean の案内(十三ページ)にあり、この付録はその入口と、本書で札を読むための約束をまとめたものです。本書の Lean の定理の一覧は 10-07、札の凡例は 0-01。
先に言うこと — Lean の札は「前提から結論が論理的に従う」ことだけを保証し、前提が正しいこと・言明が意図した数学を言っていることは保証しません。本書の Lean の定理は実数の不等式や有限の和についての文が中心で、四次元のヤン–ミルズ理論の存在や質量ギャップを Lean で示したものはありません。この問題は未解決です。
- この付録の役割 — 本書の五つの札のうち Lean の札が何を指すか・案内のページとの分担
- Lean を一枚で — 命題は型、証明はその型の項、信じるのはカーネルだけ・寄り道:命題と型の対応の呼び名
- 一手ずつ見る — 証明の途中の「ゴール」と tactic(図 1・表 1)
- 穴と公理 —
sorryは警告だけで通る・#print axiomsで見つける(表 2)・寄り道:実数を使うと三つの公理が出る - 通っても、言いたいことか — 定義・名前・空虚な真・仮定の四つの隙間
- 本書の Lean の言明は何について語るか — 名前の付いた実数・「仮定なら結論」の型・在庫の無い数学
- 札の決め方 — 一つの文に一つの札・鎖の強さは最も弱い段(図 2・表 5)
- 自分で確かめる手順 — 検査の四段・版の記録・七つの問い(表 7)
この付録の役割 — 札「Lean」と案内のページ
本書の文には五種類の札が付きます(0-01 の凡例)。Lean・紙・計算・既知・物理 です。このうち Lean の札は、最も強そうに見えて、最も誤読されやすい札です。
誤読の典型は「Lean で検査済み」を「正しいと確定した」と読むことです。Lean が確かめるのは、書かれた前提から書かれた結論が論理的に従うことです。前提が成り立つか、言明が意図した数学を言っているかは、Lean の外にあります。この付録はその境目を、実際に検査した小さな例で示します。
式で書くと、Lean の札が付いた文は次の形をしています。
札が保証するのは真ん中の矢印です。前提 に、未証明の仮定(例えば 10-03 の仮定 H)や、測った数値が入っていれば、結論 も同じだけ条件つきです。本書は Lean の定理名を出すとき、前提を同じ行に書きます。
(Poincaré 定数、第 10 部)・(質量)・(相関長)は第 10 部の量ですが、この付録ではただの実数として読めば足ります。
例。「、 かつ なら 」は、両辺に を掛けるだけの文で、Lean で確かめられます(§03 でこの端末が実際に検査します)。しかし が四次元のヤン–ミルズ理論で成り立つかどうかは、この矢印とは関係がありません。それは仮定です。
この付録と、このサイトの Lean の案内(十三ページ)との分担は次の通りです。案内は Lean そのものの入門で、導入の手順・具体的な証明の組み立て・よくある罠を扱います。この付録は、本書を読むのに要る最小限と、本書が札をどう決めているかに絞ります。個々の定理の前提と既知との対応は 10-07 に一覧があります。
Lean を一枚で — 命題は型、証明は項、信じるのはカーネル
Lean はプログラミング言語でもあり、証明を確かめる道具でもあります。両方を一つの仕組みで行えるのは、命題を型として、証明をその型の値(項)として扱うからです。
プログラムでは「3 は自然数の型 Nat の値だ」と書きます。Lean では同じ書き方で「p は命題 の証明だ」と書きます。
右の式は「 は という型を持つ」と読み、それが「 は の証明である」の意味になります。型の検査は機械的にできるので、証明の検査も機械的になります。
前提つきの命題は、関数の型になります。「 と なら 」の証明は、 の証明と の証明を受け取って の証明を返す関数です。
式 (1) の矢印の正体がこれです。Lean の定理の宣言で、コロンの左に並ぶ引数((hm : 0 < m) のような括弧)が前提で、コロンの右が結論です。読むときに一番大事なのは、この括弧の列です(案内の「仮定の一覧を作る」)。
例。この端末で検査した最小の例は次の一行です。
theorem pos_nat (n : Nat) (h : 0 < n) : 0 < n := h
前提 h がそのまま結論の証明になっています。中身の無い定理ですが、「前提を受け取って結論を返す関数」という形がよく見えます。
もう一つの柱はカーネルです。人が書く証明は、tactic(証明の一手を指示する命令。§03)を並べた台本で、それを Lean が式 (2) の形の項に展開します。最後にその項を、小さく保たれた検査部であるカーネルが型検査します。tactic に誤りがあっても、カーネルが通さない項は定理になりません。信じる対象をカーネル一つに絞ることが、機械検査の信頼の出所です(案内の「kernel と tactic」・検証の仕組み)。
寄り道:命題と型の対応の呼び名
一手ずつ見る — ゴールと tactic
Lean で証明を書くとき、画面には常に「いま示すべきこと」が出ています。これをゴールと呼びます。ゴールは記号 の右に書かれ、その上に使ってよい仮定が並びます。tactic を一つ打つたびに、仮定かゴールが書き換わり、ゴールが無くなれば証明は終わりです。
例として §01 の文を Lean で書いたものを使います。前提は三つ(変数の型を除く)です。10-07 の hup_is_gap_positivity と同じ言明で、変数の名前だけが違います。
紙の上では「 を代入し、 を両辺に掛け、整理する」の三行です。Lean では四手になり、二手目の have は を掛けるための下ごしらえです。対応は、代入が段 1、掛けるのが段 2・3、整理が段 4 です。Lean では各手が何を書き換えたかが機械的に記録されます。図 1 の数値(ゴールの文面)は、この端末の Lean 4.33.1 が証明の途中で出した状態を、そのまま写したものです。
計算この図の数値はこの端末で計算した(Lean 4.33.1 で trace_state を各手の後に挟んで検査し、出力をそのまま写した。図では trace_state の行を省く。段 4 の「No goals」は出力の写しではなく、エラー無しで終わったことで確かめた)。狭い画面では表 1 で同じ内容を読める。
表 1 は図 1 と同じ内容です。
| 段 | 打った tactic | 何が変わったか |
|---|---|---|
| 0 | (宣言) | 仮定 hm : 0 < m・hCP : CP = 1 / m ^ 2・hH : CP ≤ K * ξ ^ 2、ゴール ⊢ 1 ≤ K * (m * ξ) ^ 2 |
| 1 | rw [hCP] at hH | hH の中の CP が 1 / m ^ 2 に置き換わる |
| 2 | have hm2 : 0 < m ^ 2 := by positivity | 仮定 hm2 : 0 < m ^ 2 が増える(positivity は正であることを示す自動の手) |
| 3 | rw [div_le_iff₀ hm2] at hH | hH が 1 ≤ K * ξ ^ 2 * m ^ 2 に変わる(分母を払う Mathlib の補題) |
| 4 | calc … := hH、_ = … := by ring | ゴールが閉じる(ring は環の恒等式を示す自動の手) |
読み方。段 3 で hH はゴールとほぼ同じ形になり、違いは積の並べ方だけです。最後の ring がその並べ替えを恒等式として確かめます。紙の三行が Lean の四手に、下ごしらえの一手を足しただけで対応していることが分かります。Lean での手の選び方の詳しい例は 案内の「証明の骨」にあります。
この例で Lean が確かめたのは代数だけです。 は Lean の中では名前の付いたただの実数で、それが Poincaré 定数であることは検査されていません。この点は §06 で本書の定理全体について見ます。
穴と公理 — sorry は警告だけで通る
証明の途中を飛ばす方法が Lean には二つ用意されています。一つは sorry で、「ここは後で埋める」という印です。もう一つは公理で、証明なしに真と宣言する文です。どちらも書けば定理は通ります。だから「通った」ことだけでは、穴が無いことは分かりません。
穴を見つける道具が #print axioms です。定理の名前を渡すと、その定理が(言明と証明をたどって)最終的にどの公理に依存しているかを並べます。sorry は内部で sorryAx という公理に置き換えられるので、ここに現れます。Lean の参照マニュアルは、検査の手順として「標準の三つの公理 propext・Classical.choice・Quot.sound だけが出ることを確かめよ」と書いています。本書の Lean の札の条件は、この形です。
三つの意味は、順に「同値な命題は等しい」「存在の証明から元を一つ取り出せる(選択公理)」「同値な元は商の中で等しい」です。商とは、同値関係で同じとみなす元をひとまとめにした集合(同値類の集合)のことで、例えば整数を 7 で割った余りの類がそうです。数学の普段の推論(排中律を含む)は、この三つで足ります。詳しくは 10-07 の寄り道と 案内の「公理」に譲ります。
この端末で、七つの小さなファイルを検査しました。表 2 がその結果です。
| ファイル(定理) | 中身 | 終了コード | 警告・エラー | #print axioms の出力 | 秒 |
|---|---|---|---|---|---|
pos_nat | 自然数で「 なら 」 | 0(成功) | なし | 公理に依存しない | 0.3 |
pow_mod_decide | を decide(カーネルの中での計算)で | 0 | なし | 公理に依存しない | 0.4 |
pow_mod_native | 同じ文を native_decide(翻訳したコードで計算)で | 0 | なし | pow_mod_native._native.native_decide.ax_1_1 | |
pow_mod_wrong | 偽の文 を decide で | 1(失敗) | エラー:命題が偽であることを示した | — | 0.4 |
gap_from_bound | 式 (4)(Mathlib の実数) | 0 | なし | 標準の三つ | 5.2 |
gap_from_bound' | 式 (4) の証明を sorry にしたもの | 0(成功) | 警告:declaration uses `sorry` | 標準の三つ+sorryAx | 5.3 |
vacuous | 矛盾する仮定から (§05) | 0 | なし | 標準の三つ | 5.3 |
mass_gap_positive | 名前だけ大きい空の定理(§05) | 0 | なし | 標準の三つ | 5.2 |
秒は import Mathlib の読み込みを含む壁時計の時間(4 コアの機械・nice 19)。Mathlib を読む行は、読み込みだけで約 5 秒かかる。値は results.json の一回分で、実行ごとに 1 割ほど揺れる(終了コード・警告・公理の行は再実行でも同じ)。
読み方は三つです。第一に、sorry を含むファイルも終了コード 0 で通ります。出るのは警告だけです。検査の記録で「エラーなし」とだけ書かれていたら、sorry が無いことは保証されていません。第二に、native_decide は、その呼び出しのためだけの専用の公理を一つ作ります。Lean の参照マニュアルは、各公理が何を主張したかを個別に監査できるようにするためだと説明しています。版による違いがあり、4.28.0 以前は、どの呼び出しも共通の公理 Lean.ofReduceBool(その奥に Lean.trustCompiler)に依存する形で出ました。4.29.0 から、呼び出しごとの専用の公理(表 2 の …ax_1_1 の形)に変わりました。公理の名前は版で変わるので、本書は「標準の三つの部分集合か」で判定します。第三に、偽の文は decide では通りません。
寄り道:実数を使うと三つの公理が出る
mass_gap_positive は「 なら 」で、証明は前提をそのまま返すだけです。それでも標準の三つが出ます。同じ形の pos_nat(自然数)では何も出ません。違いは型だけなので、三つは実数の側から来ています。#print axioms は証明だけでなく、言明に現れる定義(型 を含む)もたどります。Mathlib の実数の型はコーシー列の商として作られ、その定義そのものが三つに依存しています。実際、「 の元 について True」という中身の無い定理でも三つが出ます。だから実数について語る定理には、ほぼ必ず三つが出ます。三つが出たことは、証明が重いことの印ではありません。通っても、言いたいことか — 四つの隙間
穴が無く、公理が標準の三つだけでも、まだ確かめていないことがあります。それは言明が言いたいことを言っているかです。Lean の参照マニュアルは、検査の手順の冒頭で「定理に正しい証明があるか」という問いと「定理の言明が何を意味するか」という問いを区別することが重要だ、と書いています。後者は機械では確かめられません。
このサイトの 案内の第 8 ページは、この隙間を四つの型に分けています(表 3)。
| 型 | 何が起きるか | 見つけ方 |
|---|---|---|
| ① 定義 | 定義が意図より弱い・強い(例:「隙間」を で定義すると でも通る) | 言明に現れる定義を全部たどる |
| ② 名前 | 定理の名前が言明より大きい | 名前ではなく言明を読む |
| ③ 空虚な真 | 前提が同時に成り立たず、何でも結論できる | 前提を満たす具体例を一つ作る |
| ④ 仮定 | 証明すべきことが仮定に置かれ、それがいつ外れるか書かれていない | 仮定の一覧を作り、各仮定の札を見る |
②と③は、表 2 の最後の二行で実際に起きています。mass_gap_positive は質量ギャップという名前を持ちますが、言明は「正の数は正」です。名前は Lean にとってただの文字列で、内容を何も保証しません。本書が定理名を出すとき言明と前提を同じ行に書くのは、このためです。
③の例は次の文です。
前提が矛盾しているので、結論は何でもよく、Lean は linarith(線形の不等式を組み合わせる自動の手)一つで通します。前提が多い定理ほど、この危険は見えにくくなります。前提を全部満たす例(自由場など、答えが分かっている場合)を一つ置くのが確かめ方です。本書の第 10 部では、前提を全部満たす例の役は自由場での検算が担います(10-10)。陰性対照(10-07 の種別 N)は逆向きで、仮定を一つ外すと結論が崩れることを示し、仮定が飾りでないことを確かめます。
④は本書で最も重要です。仮定 H のような未証明の仮定から結論を出す定理は、仮定の側に中身があり、定理はその仮定を一歩も証明しません(10-07 の種別 C)。
本書の Lean の言明は何について語るか
Lean の定理は型の付いた対象についての文です。だから定理の引数の型を見ると、その文が実際に何について語っているかが分かります。10-07 の §02 は、本書が結論として引く四十六の定理を、言明に現れる型で五つの層に分けています。ちょうど半分の 23 個は実数の不等式か恒等式で、格子のゲージ場を型として持つ定理は 5-11 の 3 個です。
このことを式で書くと、本書の Lean の札の付いた文は二つの部分から成ります。
§03 の例で が名前の付いた実数だったのと同じく、本書の多くの定理で ・・ は実数の変数です。それを物理の量として読むのは本文で、その読みが正しいかは Lean の外にあります。読みの約束( の定義・tr の規格化・格子の計量)は 10-07 の §08 と A-01 記号表にあります。
なぜ Wilson 測度そのものについての定理が無いのか。理由の一つは在庫です。Lean の数学の標準ライブラリ Mathlib を、この端末にある版(版は §08 の表 7)のソースで語を数えると、表 4 のようになりました。
| 語 | ファイル数 | 語 | ファイル数 |
|---|---|---|---|
Haar(ハール測度) | 70 | plaquette | 0 |
Wilson loop | 0 | lattice gauge | 0 |
Yang-Mills(三通りの綴り) | 0 | spectral gap・SpectralGap | 0 |
Poincare inequality・PoincareInequality | 0 |
群の上の一様な測度(ハール測度)の基礎はありますが、格子ゲージ理論の語は現れません。語が無いことは定義が無いことの証明ではありませんが、少なくとも名前の付いた道具立てとしては、それを使う側が一から作ることになります。案内の 「mathlib に在庫が無い数学」は、こうした厳しさの出所を三つ(量・述べ方・在庫)に分けています。連続極限や四次元の場の理論の構成は、その先にあります(6-10)。
例。このサイトの論文(5-11)は、格子のゲージ場を型に持つ数少ない例です。そこでも Lean の札は段ごとに分かれ、作用からある下界までの鎖は Lean、その下界から格子の質量ギャップへの段は 紙(しかも概略)です(0-01)。
札の決め方 — 一つの文に一つの札
本書は札を文ごとに付けます。章ごとでも論文ごとでもありません。一本の論文の中でも、段によって札が違うからです(§06 の例)。どの札を付けるかは、文が受けている保証の種類で決まります。図 2 はその決め方を、上から順に問う形にしたものです。
問いの順には理由があります。Lean の札は前提から結論への矢印を保証し、既知の札は文献の証明を、紙の札は本書の側の証明を、計算の札は有限の範囲の確認を、物理の札は物理の水準での受け入れを指します。強い保証を先に問い、当てはまった最初の札を付けます。どれにも当たらない文は札を付けず、「仮定」か「問い」として書きます(10-13 の問いには札を付けません)。
文が鎖になっているときの読み方は次の通りです。
一つの段だけが 紙 なら、ほかの段が全部 Lean でも、結論は紙の水準です。始点 が仮定なら、結論も仮定つきです。式 (1) の前提 が、この始点に当たります。
この図は 0-01 の札の約束を問いの形にしたもの。数値は含まない。
| 文 | 通る道(問い 1〜5 への答え) | 札 | その章 |
|---|---|---|---|
式 (4):(10-07 の hup_is_gap_positivity と同じ言明) | はい | Lean(前提を併記) | §03・10-07 |
| 一ループの係数 ( を含む) | いいえ → はい | 既知 | 4-06 |
| 一リンクの下界から格子の質量ギャップへの段 | いいえ → いいえ → はい | 紙(概略) | 5-11 |
| 二次元イジングの小さな箱()での の振る舞い | いいえ → いいえ → いいえ → はい | 計算 | 2-10 |
| 格子の数値シミュレーションによるグルーボールの質量と弦張力の比 | いいえ ×4 → はい | 物理 | 5-08 |
| 仮定 H(冪の水準 。帯の文は と名指し、その上の半分が H↑:) | いいえ ×5 | 札なし(仮定) | 10-03 |
読み方。表の一行目の Lean の前提 は、最後の行の仮定の帯の文 の上の半分 H↑ です(10-03 の名前の約束)。一行目では前提として、最後の行では仮定の主張として。札が違うのは、文の中での役割が違うからです。
自分で確かめる手順
Lean の札は、読者が自分の機械で検査し直せることを前提にしています。Lean の参照マニュアルは、検査を四段の階段として説明しています(表 6)。下の段ほど手軽で、上の段ほど疑う範囲が広がります。
| 段 | すること | 防げるもの |
|---|---|---|
| 1 | エディタの検査の印、または lake build が警告もエラーも出さずに終わることを見る | 未完の証明・その定理の中の sorry・tactic の正直な誤り |
| 2 | 定理の後に #print axioms 定理名 を書き、式 (5) を確かめる | 依存する定理の中の sorry・余分な公理・native_decide |
| 3 | lean4checker で、ビルドで保存された証明をカーネルに通し直す | カーネルの状態を扱う Lean の中核部の不具合・検査を意図的に迂回するメタプログラムや tactic |
| 4 | 信頼できる場所に言明だけを書き、lake comparator で証明を隔離して組み立て、Lean のカーネルと独立に書かれた外部の検査器の両方で通し直し、言明が一致することも確かめる | 悪意ある証明・使った検査器の一部にだけある実装の不具合 |
段 4 はマニュアル自身が、証明の市場・高額の賞金つきの競技・意図の揃っていない AI のような、危険の高い場面のためのものと位置づけています。マニュアルは段 1 について、sorry を含む依存先があっても検査の印は付く、と注意しています。表 2 の gap_from_bound' が終了コード 0 だったのと同じ事情で、だから段 2 が要ります。本書の Lean の札は、少なくとも段 2 までを済ませた定理に付けています。
具体的な手順は次の形です。導入と版の合わせ方は 案内の「入れる」と 「配布されている証明を手元で検査する」にあります。
lake build # 段 1:プロジェクト全体を検査
lake env lean File.lean # 一つのファイルだけを検査
#print axioms gap_from_bound # 段 2:ファイルの中に書く
このサイトの Lean の記録(定理の一覧と検査の記録)は Lean の記録にあります。同じ証明でも、Lean と Mathlib の版が違うと補題の名前が変わり、通らなくなることがあります。そのため本書は検査に使った版を記録します。
| もの | 版 |
|---|---|
| Lean | 4.33.1(commit 819816b2) |
| Mathlib | rev 0df444a3 |
| 機械 | x86_64・4 コア・Linux。検査は低い優先度(nice 19)で実行 |
最後に、Lean の札の付いた文を受け取ったときに問うことを七つにまとめます。案内の「言明を読む手順」のチェックリストを、本書の読み方に合わせたものです。
- 定理名が添えてあり、自分の手で検査し直せるか(段 1)。
sorryが無く、公理が式 (5) の三つの中に収まっているか(段 2)。- 言明に現れる定義を全部たどったか(§05 の①)。
- 名前ではなく言明を読んだか(§05 の②)。
- 前提を全部満たす例が一つ示されているか(§05 の③)。
- 前提の一覧と、各前提の札が書かれているか(§05 の④・式 (8))。
- 実数の変数を物理の量として読む部分が、本文のどこで宣言されているか(§06・式 (7))。
七つ目が本書に固有の問いです。本書の Lean の定理の多くは、ここで初めて質量ギャップの問題とつながり、そのつながりは Lean の札の外にあります。
この章が言えている範囲
| 言えていること | 言えていないこと |
|---|---|
| 表 1・表 2・図 1 の出力は、この端末の Lean 4.33.1 と Mathlib(表 7 の版)で七つの小さなファイルを検査した結果そのもの。 | ほかの版で同じ出力になるとは言っていない。特に native_decide の公理の名前は版で変わる。 |
Lean の札は前提から結論への矢印を保証する(式 (1))。sorry は警告だけで通り、#print axioms で見つかる(表 2)。 | Lean の論理そのものの健全性や、カーネルに不具合が無いことは、この付録では確かめていない(参照マニュアルの言う段 3・段 4 は、この付録の例では行っていない)。 |
| 四つの隙間のうち名前と空虚な真は、実際に通る例で示した(表 2 の最後の二行)。 | 本書の個々の定理に隙間が無いことは、この付録では確かめていない。前提と読みは 10-07 の各行で読む。 |
| この端末の Mathlib のソースに、格子ゲージ理論の語(Wilson loop・plaquette・Yang–Mills など)は現れない。 | 語が無いことは、同じ内容が別の名前で定義されていないことの証明ではない。 |
| 札の決め方(図 2・表 5)は本書の約束の言い換え。 | 札は保証の種類を示すもので、文の重要さや確からしさの順位ではない。 |
| 本書の Lean の定理は、四次元のヤン–ミルズ理論の存在も質量ギャップも示していない。この問題は未解決である(10-10)。 | |
出典と再現
| もの | 種別 | 出典・道具 |
|---|---|---|
| 表 1・図 1(ゴールの状態) | 計算 | Lean 4.33.1+Mathlib:e1_gap.lean(各手の後に trace_state)を run.sh で検査し、出力を写した |
| 表 2(七つのファイルの終了コード・警告・公理・時間) | 計算 | python3:table.py が run.sh で e1〜e7 の七ファイルを順に検査し、results.json に残す。秒の列はその一回分 |
| 寄り道「実数を使うと三つの公理が出る」の観察 | 計算 | Lean 4.33.1+Mathlib:e8_real_probe.lean(中身の無い定理と、Real・CauSeq.Completion.Cauchy・Real.instZero などに #print axioms) |
| Mathlib のソースの語の数 | 計算 | mathlib_grep.sh(8,311 ファイルを大小文字を区別せずに検索) |
| 表 7(版) | 計算 | lean --version と lake-manifest.json の Mathlib の rev(versions.txt) |
検査の四段・「正しい証明があるか」と「言明が何を意味するか」を区別せよ・段 1 の印は依存先の sorry があっても付く・標準の三つの公理・4.28.0 以前の共通の公理 Lean.ofReduceBool(その奥に Lean.trustCompiler)と 4.29.0 からの呼び出しごとの専用の公理 | 既知 | Lean Reference Manual, “Validating a Lean Proof”(lean-lang.org/doc/reference/latest/ValidatingProofs/)。本文を読んだ |
native_decide は呼び出しごとに専用の公理を作る | 既知 | Lean Reference Manual, “Axioms”(lean-lang.org/doc/reference/latest/Axioms/)。本文を読んだ。表 2 の出力と一致 |
| Lean 4 | 既知 | L. de Moura, S. Ullrich, “The Lean 4 Theorem Prover and Programming Language”, CADE-28, LNCS 12699 (2021), doi:10.1007/978-3-030-79876-5_37。書誌のみ |
| Lean(最初のシステム記述) | 既知 | L. de Moura, S. Kong, J. Avigad, F. van Doorn, J. von Raumer, “The Lean Theorem Prover (System Description)”, CADE-25, LNCS 9195 (2015), doi:10.1007/978-3-319-21401-6_26。書誌のみ |
| Mathlib | 既知 | The mathlib Community, “The Lean Mathematical Library”, CPP 2020, doi:10.1145/3372885.3373824, arXiv:1910.09336。書誌のみ |
| 四つの隙間の分類・言明を読む手順・在庫の三分類 | このサイトの記事 | 案内 08・09・10 |
| 本書の定理の型の層(46 定理・23 個が実数だけ・3 個がゲージ場) | 計算(他章) | 10-07 の表 1 |
| 札の凡例と、5-11 の論文の札の分かれ方 | 本書の約束 | 0-01・5-11 |
| カリー–ハワード対応の呼び名 | 既知 | 一般的な呼び名として。来歴は 案内 13 に譲り、ここでは年号・帰属を述べない |
次に読む章:A-05 この本の作り方 — 札を付ける前に、文と数値をどう確かめたか。