[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"PKuEh23pNG":3},"# SKW\n\nA formalization in Lean 4 / Mathlib of the Stickelberger theorem and the Kronecker-Weber\ntheorem. **Both theorems are now formalized**, modulo a handful of statements that are\nwaiting on Mathlib pull requests (see [Status](#status) below).\n\n## Links\n\n* [Blueprint](https://xroblot.github.io/SKW/blueprint/)\n* [Blueprint as pdf](https://xroblot.github.io/SKW/blueprint.pdf)\n* [Dependency graph](https://xroblot.github.io/SKW/blueprint/dep_graph_document.html)\n* [Documentation pages for this repository](https://xroblot.github.io/SKW/docs/)\n* [Lean Zulip channel](https://leanprover.zulipchat.com/) for coordination\n\n## What are these theorems?\n\n**Stickelberger's theorem** describes how prime ideals of `ℤ[ζ]` (where `ζ` is a root of\nunity) factor in terms of Gauss sums: it produces an explicit element of the group ring\n`ℤ[Gal(ℚ(ζ)/ℚ)]` — the *Stickelberger element* — that annihilates the class group of\n`ℚ(ζ)`. In this project it is stated as\n[`stickelberger_theorem`](https://xroblot.github.io/SKW/docs/SKW/Stickelberger/Stickelberger.html#stickelberger_theorem):\nthe Stickelberger element annihilates the ideal class group of a cyclotomic field.\n\n**The Kronecker-Weber theorem** states that every abelian extension of `ℚ` is contained in\na cyclotomic field `ℚ(ζₙ)` for some `n`. It is stated as\n[`kronecker_weber`](https://xroblot.github.io/SKW/docs/SKW/KroneckerWeber/KroneckerWeber.html#kronecker_weber).\nThe proof formalized here proceeds by reducing to abelian extensions of prime power degree\nramified at a single prime, and derives the Kronecker-Weber theorem from Stickelberger's\ntheorem following the approach of Lemmermeyer's paper\n[*Kronecker-Weber via Stickelberger*](https://arxiv.org/abs/1108.5671).\n\n## Status\n\nBoth `Stickelberger` and `kronecker_weber` are proved, and no file of this project contains\na `sorry` of its own. What remains are ten statements admitted on purpose, each of them a\nresult submitted to Mathlib and awaiting review; until those land,\n`#print axioms kronecker_weber` still reports `sorryAx`.\n\n| PR | content | statements |\n|---|---|---|\n| [#35808](https://github.com/leanprover-community/mathlib4/pull/35808) | primes of an inertia ring are unramified | 1 |\n| [#35991](https://github.com/leanprover-community/mathlib4/pull/35991) | inertia field of a prime in an intermediate extension | 1 |\n| [#36733](https://github.com/leanprover-community/mathlib4/pull/36733) | degree over the inertia field is the ramification index | 1 |\n| [#36843](https://github.com/leanprover-community/mathlib4/pull/36843) | a compositum of unramified extensions is unramified | 1 |\n| [#43490](https://github.com/leanprover-community/mathlib4/pull/43490) | quadratic fields and their discriminant | 3 |\n| [#43493](https://github.com/leanprover-community/mathlib4/pull/43493) | complex embeddings of quadratic fields | 1 |\n| [#44588](https://github.com/leanprover-community/mathlib4/pull/44588) | reduction of roots of unity modulo an ideal | 1 |\n| [#45512](https://github.com/leanprover-community/mathlib4/pull/45512) | reduction modulo `ζ - 1` in a cyclotomic field | 1 |\n\nAll but the one from #44588 live in\n[`SKW.Prereqs.OtherPR`](https://xroblot.github.io/SKW/docs/SKW/Prereqs/OtherPR.html), which also\nstates a few other results of these PRs that the proof does not use; the one from #44588 is in\n[`SKW.PRed2Mathlib.Teichmuller`](https://xroblot.github.io/SKW/docs/SKW/PRed2Mathlib/Teichmuller.html).\n\nAs each PR is merged, the corresponding stub is deleted and its uses redirected to the\nupstream name. The [blueprint](https://xroblot.github.io/SKW/blueprint/) tracks the\nmathematical proof and its Lean status, and the\n[dependency graph](https://xroblot.github.io/SKW/blueprint/dep_graph_document.html) shows\nhow the pieces fit together.\n\n## Organization\n\n* `SKW/Stickelberger/Stickelberger.lean` and `SKW/KroneckerWeber/KroneckerWeber.lean` contain the\n  main development; the Teichmüller character they rely on has been submitted to Mathlib\n  ([#45940](https://github.com/leanprover-community/mathlib4/pull/45940)) and lives in\n  `SKW/PRed2Mathlib/Teichmuller.lean` until it is merged.\n* `SKW/Prereqs/Stickelberger.lean` and `SKW/Prereqs/KroneckerWeber.lean` gather the general\n  results these files need that are not (yet) in Mathlib.\n* `SKW/Prereqs/OtherPR.lean` holds the admitted statements listed above, and `SKW/PRed2Mathlib/`\n  the results already submitted to Mathlib, to be deleted once merged.\n* `SKW/Upstream.lean` collects results not needed for the proof but worth adding to Mathlib.\n* `Archive/` keeps older material that is no longer built.\n\n## License\n\nThis project is released under the [Apache 2.0 license](LICENSE), the same license as\nMathlib.\n\n## Acknowledgements\n\nParts of this formalization were written with [Claude Code](https://claude.com/claude-code)\nas an assistant. Beyond searching Mathlib for existing results, drafting and shortening\nproofs, carrying out mechanical refactorings (renamings, moving material to its proper\nfile, following the Mathlib naming conventions) and keeping the blueprint in step with the\nLean code, Claude also took part in the mathematics: finding the right form for several\nstatements, proposing the proof of some intermediate steps, and spotting where an argument\ncould be simplified or made more general.\n\nThis project relies on [Mathlib](https://github.com/leanprover-community/mathlib4), the\nLean community's mathematical library, and on the\n[`leanblueprint`](https://github.com/PatrickMassot/leanblueprint) and\n[`doc-gen4`](https://github.com/leanprover/doc-gen4) tools for the blueprint and\ndocumentation websites.\n",1794686186986]