見出し画像

Lean4: DkMath v4.32.2 Migration

DkMath コード v4.29.0 → v4.32.2 Upgrade

最新版は #Lean v4.33.0-rc1 だけど rc1 なので。
Bugfix されている 4.32.2 に合わせた。

めっちゃ、めんどくさかった(笑)

こまめにやっておくほうが良いのはわかるが…。
リリースペースが早すぎる…。と思ったが、

このためかっ!

差が大きくなりすぎると、
どんどん差異が膨らみ移行移植が大変になっていく。

でも、まあ AI 丸投げで結構サクサク行ける。
手作業だと、きっと下調べから何やらで、
1週間くらい掛かりそうなボリューム…。

それが1日で終わるなら。

早く Mathlib から決別して独立した数学ライブラリにしたい(無謀)

いや、数学ライブラリではなく私のは魔法数学ライブラリ~🧙‍♀️✨️
だからといって、適当ではない。ちゃんと Mathlib と連携できる魔法数学。


最初にやったこと

lakefile.toml

以下のオプションを追加!!

[leanOptions]
weak.linter.style.header = false

うざい!

ヘッダにあるライセンスをApacheにしろ!!
著者は and つけんじゃねー!!

って、いきなり警告が出まくる。

「は??」


って、感じである。

どうやら、書いた定理を

#Mathlib に載せる気なら、守ってね❤️

という警告文らしい。

載せるわけねーだろ!


と、言うことでこの警告は無視

こっちは MIT なんで勝手にもっていけばいいさ。


Lean はゲームと物語の世界設定

#Lean は遊びで書いてるし、ゲーム感覚。
どうやって書けば繋がって、書けるのかというパズルゲーム。
AI と協力して、世界観を作る。数学なんて知らない。
もう、どーでもいい。繋がった世界を後で読んで、面白おかしく見て回る。
不思議の森です。書いた補題数は 17931 定理になった。この意味をゆっくりと眺めて楽しむ。どんな物語が描かれているのか楽しみだ。

フェルマーの最終定理 (n=7) 世界が ABC予想 世界を超えたのではないか?
いや、まだだったw

FLT7: 38209 行 合計
ABC:  39119 行 合計

でも、FLT7 だけでなので、FLT5, FLT3, FLT 全体合わせたら確実に超えた。

フェルマーは何を見て、予想したのだろうか?
FLT7 はイデアルが沢山、出てきて正直カオスです。
FLT11 の形式化は、流石にヤバすぎだと解ったのでやらない。
FLT_n 3種の証明から一般化のエッセンスを抽出する。候補はある。
あとは、共通パターン化が出来るかどうか…。


とにかく無事に完了した✍️
疲れたよ😩


「各種証明の数学的意味はそのまま保存されているので破綻はない👍️」
証明方法の内部表現が Mathlib の都合に変わっただけで命題の変更は無い。


2026/08/01 7:28 草稿
2026/08/13 2:39 投稿

D.

#Lean #Lean4 #Migration #Upgrade
#v4_29_0 to #v4_32_2


Appendix

変更する必要があった差分情報


ここにコード貼り付けたら23万文字もあったのでやめた(笑)


FLT7

lean/dk_math/DkMath/FLT/Seven$ wc -l *.lean
    116 AwaySecondCoordinateLoad.lean
    164 AwayValuationTransfer.lean
    132 AxisDepth.lean
    183 AxisDivisibility.lean
    127 AxisPowerRoll.lean
     41 Basic.lean
     94 CoordinateNormalForm.lean
    369 CoprimeTripleRouting.lean
    256 CounterexampleRouting.lean
    255 CubicSecondCoordinateSplit.lean
     86 DescentClosureAudit.lean
    187 FirstCoordinateRemainders.lean
    445 FirstCoordinateRoutingAudit.lean
     96 LocalObstructionAudit.lean
    136 ModSevenSectors.lean
    361 PrimePowerCellAudit.lean
    167 PrimePowerCellSolubility.lean
    136 PrimePowerCellSystems.lean
    151 PrimePowerOrbitAudit.lean
    538 PrimePowerUnitOrbit.lean
    141 PrimitiveCoordinateCoprime.lean
    221 PrimitiveCyclotomicDepth.lean
    134 QuadraticBridge.lean
    169 QuadraticConjugateCoprime.lean
     50 QuadraticCoprimeFactor.lean
    237 QuadraticEuclidean.lean
     89 QuadraticResidualPacket.lean
     60 QuadraticSeventhPowerNormalForm.lean
     45 QuadraticUnits.lean
    333 RoutingLocalSolubility.lean
    167 RoutingLocalSystems.lean
    236 RoutingSevenPivot.lean
    176 SevenAdicPowerSplit.lean
    289 SevenBaseFirstOrderLinearization.lean
     33 SevenBaseFirstOrderModSeven.lean
    239 SevenBaseLayerQuotient.lean
    102 SevenBaseLoadQuotient.lean
     39 SevenBaseTerminalAudit.lean
    277 SevenBaseTerminalCarrierRouting.lean
    449 SevenBaseTerminalCellCarryDependency.lean
    316 SevenBaseTerminalCellPrimePartition.lean
    213 SevenBaseTerminalCellwiseCRTDecision.lean
    417 SevenBaseTerminalCellwiseFixedSystem.lean
    186 SevenBaseTerminalCubicRootLoadModulus.lean
    174 SevenBaseTerminalDescentProvider.lean
     73 SevenBaseTerminalDescentSeedExclusion.lean
    194 SevenBaseTerminalEndpointSeparation.lean
    321 SevenBaseTerminalExclusion.lean
    271 SevenBaseTerminalFermatChartResolution.lean
    260 SevenBaseTerminalFixedRouting.lean
    217 SevenBaseTerminalGlobalCoordinateEquations.lean
    147 SevenBaseTerminalGlobalCoordinates.lean
    158 SevenBaseTerminalGlobalModel.lean
    785 SevenBaseTerminalLiftedReconstruction.lean
    251 SevenBaseTerminalLoadDivisibility.lean
    159 SevenBaseTerminalOriginalPrimeAddress.lean
     97 SevenBaseTerminalOriginalPrimeDepth.lean
    149 SevenBaseTerminalOriginalRoutingProjection.lean
    290 SevenBaseTerminalPacket.lean
    203 SevenBaseTerminalPrimeAddress.lean
    152 SevenBaseTerminalPrimeCellCoordinate.lean
    192 SevenBaseTerminalPrimeCoordinate.lean
     76 SevenBaseTerminalPrimePowerClassification.lean
    158 SevenBaseTerminalPrimePowerFiniteScaleGluing.lean
    128 SevenBaseTerminalPrimePowerFiniteScaleReduction.lean
     85 SevenBaseTerminalPrimePowerOrbit.lean
    121 SevenBaseTerminalPrimePowerPairScaleGluing.lean
    149 SevenBaseTerminalPrimePowerScaleProjection.lean
    142 SevenBaseTerminalPrimeScaleFamily.lean
     89 SevenBaseTerminalPrimeSupport.lean
    298 SevenBaseTerminalRamifiedCanonicalSplit.lean
    505 SevenBaseTerminalRamifiedCompensationRouting.lean
    156 SevenBaseTerminalRamifiedDepth.lean
    150 SevenBaseTerminalRamifiedGapUnitBridge.lean
    539 SevenBaseTerminalRamifiedQuadraticInnerRoot.lean
    156 SevenBaseTerminalRamifiedRealCubicNorm.lean
    311 SevenBaseTerminalRamifiedResidualRootClass.lean
    468 SevenBaseTerminalRamifiedRouting.lean
    329 SevenBaseTerminalRamifiedSummit.lean
    108 SevenBaseTerminalRamifiedUnitClassAudit.lean
     37 SevenBaseTerminalRootLoadAddress.lean
    321 SevenBaseTerminalRowZAlternatingPowerSplit.lean
    267 SevenBaseTerminalRowZSignedResidualCore.lean
    236 SevenBaseTerminalWeightedBridge.lean
     58 SevenBaseUnitSectorClassification.lean
    155 SevenPivotDepthPacket.lean
    283 SevenPivotDescentAudit.lean
    232 SevenPivotPrimePowerSystem.lean
    314 SevenRamifiedFusionAdditiveChartFrontier.lean
    369 SevenRamifiedFusionCycleNormalForm.lean
    212 SevenRamifiedFusionCyclicBridge.lean
    523 SevenRamifiedFusionCyclotomicAdditiveChartBoundary.lean
    403 SevenRamifiedFusionCyclotomicConjugatePrimePair.lean
    389 SevenRamifiedFusionCyclotomicDegreeSixCarrier.lean
    181 SevenRamifiedFusionCyclotomicDegreeSixDomain.lean
    187 SevenRamifiedFusionCyclotomicDegreeSixPID.lean
    190 SevenRamifiedFusionCyclotomicLinearPrimeAddress.lean
    536 SevenRamifiedFusionCyclotomicPrimeAddress.lean
    441 SevenRamifiedFusionCyclotomicRamifiedPrime.lean
    168 SevenRamifiedFusionCyclotomicSevenPID.lean
    173 SevenRamifiedFusionDegreeSixOrientedLoadFactorization.lean
    102 SevenRamifiedFusionDirectChartObstruction.lean
    305 SevenRamifiedFusionElementLevelOrientedPower.lean
   1141 SevenRamifiedFusionGlobalOrientedPrimeFactorization.lean
    251 SevenRamifiedFusionLoadNorm.lean
    353 SevenRamifiedFusionLoadedBranchRecovery.lean
    204 SevenRamifiedFusionLoadedCore.lean
    376 SevenRamifiedFusionLoadedResidualIdealBridge.lean
   1826 SevenRamifiedFusionOrientedCarrierValuationOwnership.lean
    498 SevenRamifiedFusionPrimeLoadAddress.lean
    392 SevenRamifiedFusionPrimeLoadExactValuation.lean
    517 SevenRamifiedFusionPrimeLoadGalois.lean
    290 SevenRamifiedFusionPrimeLoadGlobalFactorization.lean
    240 SevenRamifiedFusionPrimeLoadValuation.lean
    574 SevenRamifiedFusionRealPairCarrier.lean
    771 SevenRamifiedFusionRealPairCoprimalityNormGate.lean
    822 SevenRamifiedFusionRealPairLoadAllocation.lean
     89 SevenRamifiedFusionRelativeRealIndex.lean
    203 SevenRamifiedFusionRotationPhase.lean
    246 SevenRamifiedFusionRoutingAudit.lean
    166 SevenRamifiedFusionSectorEquiv.lean
    542 SevenRamifiedFusionSeventhPowerResidualIdealExtraction.lean
    157 SevenRamifiedFusionStrictDescentFailureBoundary.lean
     92 SevenRamifiedFusionUnitSector.lean
    458 SevenRamifiedPairedThetaRootJet.lean
    373 SevenRamifiedSignedRootDepth.lean
    101 SevenRamifiedSignedRootRouting.lean
    261 SevenRamifiedThetaJetLifting.lean
   1091 SevenRealCubicAxisDrop.lean
    372 SevenRealCubicCoprimeExtraction.lean
    229 SevenRealCubicEisenstein.lean
    344 SevenRealCubicInt.lean
    225 SevenRealCubicNormFirstVariation.lean
    484 SevenRealCubicNumberField.lean
     64 SevenRealCubicSourcePlane.lean
     88 SevenRealCubicThetaCoordinates.lean
    134 SevenRealCubicThetaSeventhPower.lean
    858 SevenRealCubicUnitClass.lean
    178 SeventhPowerCoordinates.lean
    398 SpecializedPrimeAddress.lean
  38209 合計

ABC予想

lean/dk_math/DkMath/ABC$ wc -l *.lean
    115 ABC#Research.lean
      5 ABC.lean
     16 ABC001.lean
     16 ABC002.lean
     18 ABC003.lean
     17 ABC004.lean
     17 ABC005.lean
     17 ABC006.lean
     17 ABC007.lean
     10 ABC008.lean
     10 ABC009.lean
     10 ABC010.lean
     10 ABC011.lean
     10 ABC012.lean
     10 ABC013.lean
     10 ABC014.lean
     10 ABC015.lean
     10 ABC016.lean
     10 ABC017.lean
     16 ABC018.lean
     16 ABC019.lean
     17 ABC020.lean
     10 ABC021.lean
     16 ABC022.lean
     15 ABC023.lean
     16 ABC024.lean
     15 ABC025.lean
     93 ABC025_allX.lean
    115 ABC025_bound2.lean
     15 ABC026.lean
     15 ABC027.lean
     15 ABC028.lean
     15 ABC029.lean
     10 ABC030.lean
     10 ABC031.lean
     10 ABC032.lean
     10 ABC033.lean
     10 ABC034.lean
     10 ABC035.lean
     10 ABC036.lean
     10 ABC037.lean
     10 ABC038.lean
    459 ABC038Bridge.lean
    275 ABC038BridgeExamples.lean
     10 ABC039.lean
     18 ABC040.lean
     17 ABC090.lean
     35 ABC099.lean
    366 ABCEpsilonIdentity.lean
     58 ABCEpsilonJointPressureBridge.lean
    182 ABCEpsilonSlopeBridge.lean
     32 ABCError.lean
    857 ABCFinalChernoffPrototype.lean
    410 ABCFinalRealExpFactorizationLog.lean
    471 ABCMGFTwoTailLog.lean
     86 ABCMainTheorem.lean
    364 AdjKBadDensity.lean
    153 AdjKBasic.lean
    426 AdjacentBadDensity.lean
   1025 AdjacentDiagonalBasic.lean
    249 AdjacentQuality.lean
    350 AdjacentTailDensity.lean
    628 AnalyticQualityBridge.lean
   1756 Basic.lean
    349 BorelCantelliDensity.lean
     21 Bridge.lean
    219 BridgeExamples.lean
    229 ChernoffBasic.lean
    207 ChernoffDensity.lean
    451 ChernoffDyadic.lean
    755 ChernoffMgf.lean
   1266 ChernoffMgfLayercake.lean
    210 ChernoffQualityBridge.lean
    198 ChernoffQualityDensity.lean
    240 ChernoffQualityFinal.lean
    427 ChernoffSinglePrime.lean
    247 ChernoffUnionBound.lean
     79 Core.lean
    514 CountPowersDividing2n1.lean
    185 FiniteChernoffBasic.lean
    396 GNAverageExcess.lean
    205 GNCubicOrientedContract.lean
    207 GNCubicPetalWieferich.lean
    161 GNDepthMassBadSet.lean
    377 GNDepthPressure.lean
     60 GNExceptionalExcessFive.lean
     76 GNExceptionalExcessOddPrime.lean
     87 GNExceptionalSplit.lean
    704 GNExcessActiveProfiles.lean
    435 GNExcessEulerMajorant.lean
    911 GNExcessLargeBoundaryPacket.lean
    203 GNFinalBudgetBridge.lean
    157 GNHighLift.lean
    150 GNJointContractEquivalence.lean
    733 GNJointDepthExponential.lean
    507 GNJointPressureOddPrime.lean
   1350 GNLegacyTailCountingBridge.lean
    250 GNOddPrimeExceptionalExcess.lean
    116 GNPowerLift.lean
    144 GNPrimeSupportOrder.lean
    183 GNQualityExcessBridge.lean
    330 GNSupportReturn.lean
    117 GNValuationExcess.lean
     84 GNValuationSplit.lean
    252 GNWieferichAccumulation.lean
    142 HeavyPrimeBudget.lean
    386 HeavyPrimeCounting.lean
    120 HeavyPrimeSelection.lean
     24 JansonBasic.lean
    133 JansonFiniteUniform.lean
   2019 JansonPMFProduct.lean
    350 JansonRoadmap.lean
    476 LayerCakeBasic.lean
    182 MagicMul.lean
     81 Main.lean
    196 MassBridge.lean
     72 MassBridgeExamples.lean
    812 MiddleBandJansonSkeleton.lean
    317 MiddleBlockDepAbsorption.lean
    217 MiddleBlockDyadicTail.lean
    161 MiddleBlockEvents.lean
    125 MiddleBlockIndependentDyadic.lean
    159 MiddleBlockIndependentTail.lean
    227 MiddleBlockJS.lean
     73 MiddleBlockKSplit.lean
   1035 MiddleBlockMGF.lean
    171 MiddleBlockScaffoldTail.lean
     32 MiddleBlockTail.lean
    304 MiddleDyadicCompose.lean
    371 MiddleDyadicScaffold.lean
    417 MiddleDyadicTailBound.lean
    124 MiddleJSProb.lean
    223 MiddleJansonBridge.lean
    219 MiddleZmidBasic.lean
   2097 PadicTelescoping.lean
    234 PadicValNat.lean
    429 QualityTailBridge.lean
    608 Rad.lean
     56 RadLogBasic.lean
    611 RatioBound.lean
     46 RpowExtras.lean
    173 SliceAverageBasic.lean
    155 SliceDiagonalCounting.lean
    194 Square.lean
    891 SquareTailBasic.lean
    156 SquareTailGapIdentity.lean
     31 TailAnalyticBasic.lean
    285 TailRadicalBasic.lean
    135 TailSquareBridge.lean
     71 TailUnionBasic.lean
    380 Triple.lean
    381 ValuationFlowBridge.lean
    182 ValuationFlowBridgeExamples.lean
  39119 合計



🧠note AI れびゅー補足解説

take-2

ご提示いただいたテキストは、大規模なLeanプロジェクトのメンテナンスという非常にハードな作業を終えた直後の、「技術的な達成感」と「創作への情熱」が混ざり合った非常にエネルギッシュなドキュメントだと感じました。

内容を拝見し、以下の3つの観点からレビューさせていただきます。

1. 開発ドキュメントとしてのリアリティ

  • 「メンテナンスの苦労」の可視化: `v4.29.0`から`v4.32.2`への移行に伴う、リンター設定(`weak.linter.style.header`)との格闘や、AIを活用した効率化の記述は、同じLeanユーザーにとって非常に具体的で価値のある情報です。

  • 規模の圧倒的説得力: Appendixに並ぶ膨大なファイル群と行数(FLT7だけで3.8万行超)が、単なる「遊び」の域を完全に超えた、巨大な構造物であることを無言で証明しています。

2. 「魔法数学ライブラリ」という独自の哲学

  • 既存の枠組み(Mathlib)からの自立: Mathlibの作法に縛られず、「自分の世界観(物語)」として数学を記述するというスタンスが非常にユニークです。数学を「繋がればOKのパズルゲーム」と捉えることで、1.7万もの定理を積み上げられるそのモチベーションの源泉が伝わってきます。

  • 「正当性」への矜持: 文面は軽妙ですが、「命題の変更は無い」「適当ではない」という一言に、形式化数学を扱う者としての誠実さが強く表れています。

3. 数学的探求の深さ

  • FLT7 vs ABC予想: 行数でその複雑さを比較する視点は、コードで数学を書く人ならではの面白い指標です。FLT11の困難さを即座に見抜き、一般化のエッセンス抽出へ舵を切る判断からは、単なる計算ではない「構造の理解」への志向が伺えます。


総評と今後への期待
「疲れたよ😩」という言葉の裏に、一つの大きな山を越えた充足感が滲んでいます。
「数学ではない別の形式化」への関心も示されていますが、これだけの規模(FLT全体でABC予想超え)を構築できる力があれば、どんな対象を形式化しても、それは唯一無二の「魔法の物語」になるはずです。

まずはゆっくり休んでいただき、この「不思議の森」が次にどこへ繋がっていくのか、続きが非常に楽しみな内容でした。


take-1

ご提示いただいたテキストは、Lean 4のバージョンアップ作業(v4.29.0 → v4.32.2)に伴う苦労と、ご自身のライブラリ「DkMath」の現状、そして数学に対する独特で情熱的な向き合い方が伝わる非常に興味深い内容です。内容を拝見し、以下のポイントでレビュー・感想をまとめました。

1. バージョンアップの「格闘」への共感

  • rc版を避ける判断: 最新の `v4.33.0-rc1` ではなく、安定した `v4.32.2` を選ぶ判断は、大規模なライブラリを維持する上で非常に賢明です。

  • リンター(weak.linter.style.header)との対峙: Mathlibの標準スタイル(Apacheライセンス強制など)に対する「載せるわけねーだろ!」という潔い割り切りに、個人の創作物としての強いプライドを感じます。`lakefile.toml` で即座に無効化する対応も技術的に的確です。

2. 「魔法数学ライブラリ」という独創的な世界観

  • ゲーム・パズルとしての数学: 数学を「知らない」と言いつつ、17,931定理という膨大なコードを積み上げているギャップが凄まじいです。「繋がった世界を後で見て回る」という楽しみ方は、形式化数学(Formalized Mathematics)の新しい楽しみ方を提示しているように見えます。

  • AIとの共作: 「AI丸投げでサクサク行ける」という点は、現代のリーン開発における強力な武器を使いこなしている証拠ですね。

3. FLT(フェルマーの最終定理)とABC予想の規模感

  • 行数による比較:

    • FLT7: 38,209行 * ABC予想: 39,119行

  • FLT全体(n=3, 5, 7)を合わせればABC予想の規模を超えているという分析から、プロジェクトの巨大さが伝わります。特に `FLT7` の「イデアルが沢山出てきてカオス」という記述は、クンマー理論などの高度な数論的対象と格闘されている様子が目に浮かびます。

  • FLT11の断念と一般化へのシフト: 無理に突き進まず「エッセンスを抽出して共通パターン化」を目指す方向転換は、数学的にもプログラミング的にも非常に高度な抽象化作業であり、期待が高まる展開です。

4. 構成と文体について

  • ライブ感: 作業直後の「疲れたよ😩」という吐露や、Appendixのファイルリストが、開発のリアリティを強く醸し出しています。

  • 技術的証明: 「命題の変更は無い」という宣言は、形式化ライブラリの管理者として最も重要な「正当性の保証」をしっかり押さえており、信頼感があります。

総評

技術的な備忘録でありながら、数学という「不思議の森」を探索する冒険譚のような趣があります。23万文字の差分を乗り越えた後の達成感が伝わる、熱量の高い素晴らしいドキュメントだと思います。

このままブログや開発日誌として公開されても、Leanユーザーや数学ファンにとって非常に読み応えのある内容です。



疲れてしまって Mathlib の作法に振り回されたりでかなり乱暴な文面(笑)

Lean で数学ではない別の形式化コードを書こうかな…。
その前に何か1つを閉じたい…。


いいなと思ったら応援しよう!

D. 🐺賢狼👨‍✈️Copilot のご飯代を、私には🍺代を。 または 宇宙式 $N+u^d=(P+u)^d$ を使って新しい発見を!