<style>button,.story-clue{pointer-events:none}button{opacity:.55}.story-clue{pointer-events:auto}.panel-select{opacity:1}#app-status{display:none}</style>
「なぜ?」から始まる、数学の冒険

小さな「なぜ?」。 大きな冒険。

物語を追い、証明に触れる。気になったら、もうひとつ奥まで。

アカウント不要。APIキー不要。好奇心だけで。

ふたつの入口。お茶の間は、ひとつ。

今日は数学と戦わない

まんがから入ります:17章、64個の小石、必須の式はゼロ。Leanの原文は、訪ねてくるまでガラス越しです。

数学へまっすぐ

証明マップから始めます:名付けられた定理が数千本。そして時計の逆元からR = Tまで、階段を全部登ります。となりでは物語も語り続け、あなたを正直に保ちます。

ふたりで読むために作りました:数学好きと、数学が苦手なひと。ソファは一台。それぞれが持ち帰ったものは、お茶の間へ運びます。

「まだわからない」から始めよう。

全17章で、ひとつの大きな道筋へ。今日は、小さな発見がひとつあれば十分。

全17章 · Lean元の原文 ↗

ピップの心得:まちがいも手がかり。どの章にも進めて、何度でも考え直せます。

モジュラー性、3–5の切り替え、つながる部品。

読み方を選ぶ証明項と依存先をたどる。
証明全体のマップを開く29,511の定理・正確な主張・依存関係

英語や日本語で定理を検索できます。主要な定理には日本語の見出しがあります。文脈全体はGitHubの原文から確かめられます。

この章で見つけたいこと

正しい部品を集めるだけでなく、つなぎ目の整合性も必要だと知ろう。

Nonempty
その型に少なくとも一つの要素が存在するという命題。
Subsingleton
任意の二つの要素が等しい、つまり要素が高々一つという性質。
たとえ話と数学の境界

キルトは整合性のたとえ。例を無作為につなげても定理にはなりません。この最後の短い部分より前に、大きな構成があります。

</>S_Algebra_PatchingDatum_nonempty_patchingLevel_bot.lean
theorem solution
{𝒪 : Type} [CommRing 𝒪] [IsDomain 𝒪] [IsDiscreteValuationRing 𝒪]
[IsAdicComplete (IsLocalRing.maximalIdeal 𝒪) 𝒪] [Finite (IsLocalRing.ResidueField 𝒪)]
{ℓ r : ℕ} (hℓ : (ℓ : 𝒪) ∈ IsLocalRing.maximalIdeal 𝒪)
{R : Type} [CommRing R] [Algebra 𝒪 R] {M : Type} [AddCommGroup M] [Module R M]
(P : Algebra.PatchingDatum 𝒪 ℓ r R M) :
Nonempty (Algebra.PatchingLevel 𝒪 r R M ⊥) := by
rcases subsingleton_or_nontrivial M with hM | hM
· exact ⟨FrobDictPC.Limit.trivialLevel P⟩
· haveI : Fact ((ℓ : 𝒪) ∈ IsLocalRing.maximalIdeal 𝒪) := ⟨hℓ⟩
exact ⟨FrobDictPC.Limit.patchedLevel P⟩

👩🏻‍🎨 ミカ · 原文を読むための案内

目標はNonempty (Algebra.PatchingLevel 𝒪 r R M ⊥)です。rcases subsingleton_or_nontrivial Mで場合分けし、自明な枝ではtrivialLevel Pを包みます。非自明な枝はFact hℓを登録し、patchedLevel Pを包みます。最後の呼び出しに至る構成は、前の数千行にあります。

元の原文への注釈・Leanの実行状態ではありません

コマの手がかりや原文の色つきの語句に触れると、対応をたどれます。

この論理を試してみる →
出典と検証の範囲

出典:anthropics/fermats-last-theorem(aa2d8b3)。上流では検証済みと報告されていますが、このアプリでは全体を再ビルド・再検証していません。漫画の解説自体は形式的な証明ではありません。

ソースのライセンスと著作者表示
第13章/全17章・Lean

ピップの無謀なキルト

たくさんの部品と、適当に接着しようとするハト1羽。

ここまでと、この先

二つの工房で、対象とそれらを結ぶ写像が出てきました。パッチングでは、部品の間の整合性も確かめます。一つずつ正しいだけでなく、つなぎ目の関係が合う必要があります。

このつながりは、読む道筋の案内です。物語のたとえ自体が、この定理の証明になるわけではありません。

お茶の間で話す
ピップ
「正しい布をたくさん見つけた。これでキルトは完成?」
キルト完成宣言

物語 → 証明ばらばらの布は入力の部品。パッチングのデータは、接続が合うための条件も指定します。

部品と整合性Algebra.PatchingDatum
ミカ
「接続する端も合わないとね。入力に、どうつながるべきかを指定しておくんだ。」
つなぎ目が大事

物語 → 証明布の端をそろえて、一つの整合した対象を目指します。Nonemptyは、要求を満たす実物を一つ示すという目標です。

目標は存在を示すことNonempty (Algebra.PatchingLevel
ピップ
「ほとんど空のキルト? 練習の少ない役が、ついに来た。」
静かな特別扱い

物語 → 証明空の布枠は、要素が高々一つの特別な場合のたとえ。その場合はtrivialLevelという構成を使えます。

特別な場合の構成FrobDictPC.Limit.trivialLevel
ミカ
「それ以外の場合は、ここまでに作った構成でつながる対象を用意するよ。難しい仕事はそこにあるんだ。」
ちゃんとつながった

物語 → 証明縫い合わされた橋は、残る場合にpatchedLevelが与える実物。部品の山や適当なのりだけでは足りません。

つなぎ合わせた橋FrobDictPC.Limit.patchedLevel

物語の向こうにある考え方

目標はNonempty (Algebra.PatchingLevel 𝒪 r R M ⊥)です。rcases subsingleton_or_nontrivial Mで場合分けし、自明な枝ではtrivialLevel Pを包みます。非自明な枝はFact hℓを登録し、patchedLevel Pを包みます。最後の呼び出しに至る構成は、前の数千行にあります。

非自明な枝を閉じるものは?

  • patchedLevel Pで構成した要素。
  • すべての曲線についての有限探索。

このページで物語と原文を読めます。証明の編集、クイズ、対話式のマップにはJavaScriptを有効にしてください。

モジュラー性と既約性がそろったら、曲線の相棒をとても小さな部屋へ案内しよう。

読む。試す。腑に落ちる。

  1. 漫画を読み、「物語」「数学」「Lean」で深さを選びます。
  2. 証明のプレイグラウンドへ。タクティクを編集すると、目標が変わります。
  3. 状態、言葉、ヒントを選んでみよう。まわり道も物語の一部です。

練習では小さな命題論理を検査します。FLTの抜粋は編集できる読み物で、リアルタイムのLean検証ではありません。FLT全体の検証は上流の報告として扱います。

わからない・道に迷った

ミカのたすけ舟

ピップの無謀なキルト

今は、一つだけ

迷ったら、天秤のケーキの話から。ひとまとまりずつで大丈夫。フェルマーの章なら、まず「物語」と「まず、この言葉から」を読もう。

言葉をほどこう

最初からLeanや大学の数学を知っている必要はありません。小さな物語では、使う言葉から説明します。

小さな手がかり

一般の式より先に、小さな例を見よう。「何を変えて、何を同じに保った?」と考えてみてね。

閉じれば、読んでいた場所に戻れます。このページに合わせて用意したヒントです。

最初の小さな物語から読む →