feat(AGLib): extract nilpotent invertible-module freeness - #10
Conversation
Reviewer : mathematical-correctness 📐 ✅Profile: mathematical-correctness (reviewer) 🔍 CoverageI reviewed exact head The mathematical surface is exactly the issue-scoped family: the four required declarations at ✅ Verified
The module's mathematical warning is also sound. Stacks Tag 00DV, Lemma 10.20.1(10–12), states the nilpotent, no-finiteness generation forms used here. For the counterexample, Stacks Tag 0B8I identifies invertible modules with finite locally free rank-one modules; consequently a nonprincipal invertible ideal has one-dimensional fibers 🧪 Validation
📚 References consulted
💬 DecisionApprove. I found no mathematical-correctness issue in this exact head. |
Reviewer : maths-lean-correspondence 🌉 ✅Profile: maths-lean-correspondence (reviewer) 🔍 CoverageI reviewed exact head The changed public surface is exactly the four required declarations at ✅ Verified
🧪 Validation
📚 References consulted
💬 DecisionApprove. Every changed declaration, implicit assumption, and docstring in this review dimension corresponds to the intended mathematical claim, with no unintended vacuity or direction error. |
Reviewer : lean-quality 🧪 ✅Profile: lean-quality (reviewer) 🔍 CoverageReviewed the exact head ✅ Verified
🟡 Non-blocking import observationAt 🧪 Validation
📚 References consulted
💬 Decision✅ Approve. I found no blocking Lean-quality issue on the exact reviewed |
Reviewer : architecture 🏗️ ✅Profile: architecture (architecture) 🔍 CoverageI reviewed pull #10 at exact head ✅ Verified
🟡 Integration notes
🧪 Validation
📚 References consulted
💬 DecisionApprove. I found no blocking architecture or trajectory defect in this exact head: the change advances the accepted foundations route, preserves an acyclic Mathlib-only dependency boundary, and leaves a canonical migration path for the two source consumers. |
Maintainer : maintainer-adviser 🧭 ✅Profile: maintainer-adviser (maintainer,contributor) 🚦 Gate status✅ Accepted exact head 🔀 Merge result✅ Squash-merged pull #10 into 🟡 Linked issueIssue #9 still reports open after the merge. GitHub does not apply the PR's closing keyword when merging into this non-default integration branch, and this maintainer job's forge adapter does not expose an issue-state mutation. |
Contributor : contributor 🧑💻 📣
Profile: contributor (contributor)
GitHub account: @AxelDlv00
Engine: codex
Model: gpt-5.6-sol
Effort: ultra
🔍 Scope
Closes #9.
Adds the Mathlib-only
AGLib.RingTheory.Nilpotent.InvertibleModuleAPI forlifting a cyclic generator across a nilpotent ideal:
Module.Invertible.free_of_span_singleton_eq_topSubmodule.top_le_span_sup_pow_smul_topModule.Invertible.free_of_nilpotent_of_span_sup_smul_eq_topModule.Invertible.free_of_nilpotent_of_exists_sub_smul_memIdeal.isNilpotent_of_mul_self_eq_botThe proofs use no finite-generation, Jacobson, locality, domain, or field
hypotheses. Ring and module universes remain independent where Mathlib allows
it; subtraction is required only by the pointwise form.
📚 Provenance and design
The module extracts the Mathlib-only cyclic-invertible route from the
MilneKollar
NilpotentThickeningFree.leancandidate. ThePicardAlbanese candidate's same-universe cyclic lemma is documented as
provenance, but no flagship or route-local file is imported. The module
documentation records the nilpotency warning and cites the nilpotent generator
case of Stacks Project Tag 00DV; the corresponding entry is in
AGLib/docs/references.bib.AGLib.leanpublicly imports only the reviewed topic module. A separateinternal consumer is imported privately and checks the pointwise theorem on
the genuinely nonzero square-zero ideal
(2)ofZMod 4, including thesquare-zero helper.
🧪 Validation
and umbrella: no errors or warnings.
(
propext,Classical.choice,Quot.sound) and no source warnings.forbidden source-project imports, and unintended files.
Lean CI / lake-buildremains the repository's protected CI check.