10. Module topology, noetherian rings and the structure sheaf
-
IsModuleTopology.isOpenMap_of_surjective_of_finite[complete] -
IsModuleTopology.strictExact[complete]
For finitely generated modules carrying the canonical module topology over a complete
Tate ring, every surjective A-linear map is open
(\texttt{isOpenMap\_of\_surjective\_of\_finite}), and short exact sequences are
strict (\texttt{strictExact}) (Definition 1.2). This is the open-mapping
theorem for module topologies. Following Wedhorn Proposition 6.18.
Lean code for Theorem10.1●2 theorems
Associated Lean declarations
-
IsModuleTopology.isOpenMap_of_surjective_of_finite[complete]
-
IsModuleTopology.strictExact[complete]
-
IsModuleTopology.isOpenMap_of_surjective_of_finite[complete] -
IsModuleTopology.strictExact[complete]
-
theoremdefined in «Adic spaces»/NoetherianTateModules.leancomplete
theorem IsModuleTopology.isOpenMap_of_surjective_of_finite.{u_1, u_2, u_3} {A : Type u_1} [CommRing A] [TopologicalSpace A] {M : Type u_2} [AddCommGroup M] [Module A M] [TopologicalSpace M] {N : Type u_3} [AddCommGroup N] [Module A N] [TopologicalSpace N] [IsModuleTopology A M] [IsModuleTopology A N] (f : M →ₗ[A] N) (hf : Function.Surjective ⇑f) : IsOpenMap ⇑f
theorem IsModuleTopology.isOpenMap_of_surjective_of_finite.{u_1, u_2, u_3} {A : Type u_1} [CommRing A] [TopologicalSpace A] {M : Type u_2} [AddCommGroup M] [Module A M] [TopologicalSpace M] {N : Type u_3} [AddCommGroup N] [Module A N] [TopologicalSpace N] [IsModuleTopology A M] [IsModuleTopology A N] (f : M →ₗ[A] N) (hf : Function.Surjective ⇑f) : IsOpenMap ⇑f
Every surjective `A`-linear map between modules with module topology is open. This is the **open mapping theorem** for module topologies (Prop 6.18(2) of Wedhorn).
-
theoremdefined in «Adic spaces»/NoetherianTateModules.leancomplete
theorem IsModuleTopology.strictExact.{u_1, u_2, u_3, u_4} {A : Type u_1} [CommRing A] [TopologicalSpace A] {M₁ : Type u_2} {M₂ : Type u_3} {M₃ : Type u_4} [AddCommGroup M₁] [Module A M₁] [TopologicalSpace M₁] [AddCommGroup M₂] [Module A M₂] [TopologicalSpace M₂] [AddCommGroup M₃] [Module A M₃] [TopologicalSpace M₃] [IsModuleTopology A M₁] [IsModuleTopology A M₂] [IsModuleTopology A M₃] (f : M₁ →ₗ[A] M₂) (g : M₂ →ₗ[A] M₃) (hg_surj : Function.Surjective ⇑g) : IsOpenMap ⇑g ∧ Continuous ⇑f
theorem IsModuleTopology.strictExact.{u_1, u_2, u_3, u_4} {A : Type u_1} [CommRing A] [TopologicalSpace A] {M₁ : Type u_2} {M₂ : Type u_3} {M₃ : Type u_4} [AddCommGroup M₁] [Module A M₁] [TopologicalSpace M₁] [AddCommGroup M₂] [Module A M₂] [TopologicalSpace M₂] [AddCommGroup M₃] [Module A M₃] [TopologicalSpace M₃] [IsModuleTopology A M₁] [IsModuleTopology A M₂] [IsModuleTopology A M₃] (f : M₁ →ₗ[A] M₂) (g : M₂ →ₗ[A] M₃) (hg_surj : Function.Surjective ⇑g) : IsOpenMap ⇑g ∧ Continuous ⇑f
A short exact sequence `0 → M₁ → M₂ → M₃ → 0` of modules with module topology is **strict exact**: `g` is an open map and `f` is continuous. This is a consequence of Prop 6.18(2) (open mapping theorem).
A finitely generated module is an open quotient of some A^n with the product
topology; a surjection M \twoheadrightarrow N lifts to a surjection
A^n \twoheadrightarrow N, and completeness plus finite generation make this quotient
map open (a Banach-style open mapping argument). Openness of the surjection and
continuity of the injection in a short exact sequence is exactly strictness. Following
Wedhorn Proposition 6.18.
-
Wedhorn.isClosed_ideal_of_noetherian[complete]
In a complete Tate ring that is noetherian, every ideal is closed
(Definition 1.2, Theorem 10.1). In Adic-Spaces:
\texttt{Wedhorn.isClosed\_ideal\_of\_noetherian}. Following Wedhorn Proposition 6.17.
Lean code for Theorem10.2●1 theorem
Associated Lean declarations
-
Wedhorn.isClosed_ideal_of_noetherian[complete]
-
Wedhorn.isClosed_ideal_of_noetherian[complete]
-
theoremdefined in «Adic spaces»/NoetherianTateModules.leancomplete
theorem Wedhorn.isClosed_ideal_of_noetherian.{u_1} {A : Type u_1} [CommRing A] [UniformSpace A] [IsUniformAddGroup A] [IsTopologicalRing A] [T2Space A] [CompleteSpace A] [IsTateRing A] (P : PairOfDefinition A) [IsNoetherianRing ↥P.A₀] (J : Ideal A) : IsClosed ↑J
theorem Wedhorn.isClosed_ideal_of_noetherian.{u_1} {A : Type u_1} [CommRing A] [UniformSpace A] [IsUniformAddGroup A] [IsTopologicalRing A] [T2Space A] [CompleteSpace A] [IsTateRing A] (P : PairOfDefinition A) [IsNoetherianRing ↥P.A₀] (J : Ideal A) : IsClosed ↑J
**Wedhorn Proposition 6.17 (ideal form):** Every ideal in a complete Tate ring `A` with a noetherian ring of definition `P.A₀` is closed. The statement requires a pair of definition `P = (A₀, I)` such that `A₀` is noetherian. This is automatic for **strongly noetherian** Tate rings (the setting of Huber's theory, Wedhorn Def 6.9), and downstream callers can discharge the `IsNoetherianRing P.A₀` hypothesis from a strongly-noetherian structure. **Proof sketch (Krull intersection on the ring of definition).** 1. `A₀ = P.A₀` is an open, hence closed (open subgroup of a topological group), subring of `A`. It inherits `CompleteSpace`, `T2Space`, and its subspace topology is the `I`-adic topology by `P.isAdic`. 2. `J₀ := J.comap P.A₀.subtype`, the pullback of `J` to `A₀`, is closed in `A₀` by the abstract helper `isClosed_ideal_of_adicComplete_noetherian` applied to the noetherian complete T₂ adic ring `A₀`. 3. `closure_A(J) ∩ A₀ = J₀`: for `x ∈ A₀`, membership in `closure_A(J)` is characterised by the `A`-neighborhood basis `{x + Subtype.val '' I^n}`, which equals the `A₀`-basis `{x + I^n}` under the inclusion. So `x ∈ closure_A(J) ↔ x ∈ closure_{A₀}(J₀)`, and the latter equals `J₀` since `J₀` is closed in `A₀`. 4. To close the argument for a general `x ∈ closure_A(J)`, we use that `P` can be chosen as a **principal pair** (via `IsTateRing.exists_principal_pairOfDefinition`) with generator `π` a topologically nilpotent unit in `A`. Then some power `π^k · x` lands in `A₀` (because `π^k → 0` and `A₀` is an open neighborhood of `0`), and `π^k · x ∈ closure_A(J) ∩ A₀ = J₀ ⊆ J`, so `x = π^(-k) · (π^k · x) ∈ J`. Because the signature of the theorem takes an **arbitrary** pair `P`, not necessarily principal, step 4 uses `IsTateRing.exists_principal_pairOfDefinition` to produce a principal pair `P'` and argues via `P'` whose `A₀'`-inclusion factors through `P.A₀`'s closure — this only needs the *abstract* existence of a topologically nilpotent unit and `P.A₀` being open.
An ideal J is a finitely generated submodule, hence (by the open-mapping theorem for
the module topology, Theorem 10.1) carries the subspace topology as an
open quotient of A^n. The quotient A/J with the module topology is complete and
Hausdorff, which forces J = \ker(A \to A/J) to be closed. Following Wedhorn
Proposition 6.17.
-
ValuationSpectrum.SpaTop[complete] -
ValuationSpectrum.suppSpa[complete]
The adic spectrum packaged as a topological space (object of \mathrm{TopCat}),
\texttt{SpaTop}, together with its continuous support map to \mathrm{Spec}(A)
(\texttt{suppSpa}) (Definition 6.1, Theorem 4.3). This is the
underlying space on which the structure (pre)sheaf lives. Following Wedhorn §8.1.
Lean code for Definition10.3●2 definitions
Associated Lean declarations
-
ValuationSpectrum.SpaTop[complete]
-
ValuationSpectrum.suppSpa[complete]
-
ValuationSpectrum.SpaTop[complete] -
ValuationSpectrum.suppSpa[complete]
-
defdefined in «Adic spaces»/StructureSheaf.leancomplete
def ValuationSpectrum.SpaTop.{u} (A : Type u) [CommRing A] [TopologicalSpace A] [ValuationSpectrum.PlusSubring A] : TopCat
def ValuationSpectrum.SpaTop.{u} (A : Type u) [CommRing A] [TopologicalSpace A] [ValuationSpectrum.PlusSubring A] : TopCat
The adic spectrum `Spa(A, A⁺)` as an object of `TopCat`.
-
defdefined in «Adic spaces»/StructureSheaf.leancomplete
def ValuationSpectrum.suppSpa.{u} (A : Type u) [CommRing A] [TopologicalSpace A] [ValuationSpectrum.PlusSubring A] : C(↑(ValuationSpectrum.SpaTop A), PrimeSpectrum A)
def ValuationSpectrum.suppSpa.{u} (A : Type u) [CommRing A] [TopologicalSpace A] [ValuationSpectrum.PlusSubring A] : C(↑(ValuationSpectrum.SpaTop A), PrimeSpectrum A)
The continuous support map `Spa(A, A⁺) → Spec A` (Remark 4.6 of Wedhorn).
The type-level part of the structure-sheaf condition holds unconditionally: the
underlying \texttt{subpresheafToTypes} of the "locally-a-fraction" predicate on
\mathrm{Spa}(A, A^{+}) is a sheaf of types
(Definition 10.3, Definition 7.1). In Adic-Spaces:
\texttt{structurePresheaf\_typeLevel\_isSheaf} — this is the sorry-free core extracted
from the (still in-progress) topological-ring sheaf statement. Following Wedhorn §8.1
(Theorem 8.28(c)).
Lean code for Theorem10.4●1 theorem
Associated Lean declarations
-
theoremdefined in «Adic spaces»/StructureSheaf.leancomplete
theorem ValuationSpectrum.structurePresheaf_typeLevel_isSheaf.{u} (A : Type u) [CommRing A] [TopologicalSpace A] [ValuationSpectrum.PlusSubring A] [IsHuberRing A] : (TopCat.subpresheafToTypes ValuationSpectrum.StructureSheaf.isLocallyFraction.toPrelocalPredicate).IsSheaf
theorem ValuationSpectrum.structurePresheaf_typeLevel_isSheaf.{u} (A : Type u) [CommRing A] [TopologicalSpace A] [ValuationSpectrum.PlusSubring A] [IsHuberRing A] : (TopCat.subpresheafToTypes ValuationSpectrum.StructureSheaf.isLocallyFraction.toPrelocalPredicate).IsSheaf
**Sub-lemma — type-level sheaf condition for the locally-fraction subpresheaf.** This is the *type-level* sheaf condition on `subpresheafToTypes isLocallyFraction.toPrelocalPredicate`, which is precisely the underlying type-presheaf of `structurePresheaf A` (modulo bundling into `CompleteTopCommRingCat`). The proof is a direct application of Mathlib's `subpresheafToTypes.isSheaf` for any `LocalPredicate`. Used by `structurePresheaf_isSheaf` below as the type-level input to the (still-pending) `CompleteTopCommRingCat`-to-types infrastructure transfer. Per CLAUDE.md sub-lemma policy: this fully discharges the type-level half of `structurePresheaf_isSheaf`, isolating the remaining obligation to the forgetful-functor / concrete-category infrastructure for `CompleteTopCommRingCat`.
Sections of the structure presheaf are by definition functions to stalks that are
locally given by a fraction; this is a local predicate, and the subpresheaf of all
functions satisfying a local predicate is automatically a sheaf of types (gluing is
pointwise on stalks and the local condition is checked on the cover). The remaining,
genuinely in-progress, content is upgrading this from \mathrm{Type} to topological
rings (Tate acyclicity), which still carries \texttt{sorry}s. Following Wedhorn §8.1.
- No associated Lean code or declarations.
(Tate's acyclicity theorem / the structure sheaf — in progress.) For a strongly
noetherian (stably uniform) Tate ring, the structure presheaf \mathcal{O}_X on the
rational subsets (Definition 7.1, Definition 9.2,
Definition 5.3) of X = \mathrm{Spa}(A, A^{+}) is conjecturally a sheaf of
topological rings: the Čech complex of a rational (Laurent) cover should be exact (Tate
acyclicity), so sections glue, making (\mathrm{Spa}(A, A^{+}), \mathcal{O}_X) an
adic space. The type-level sheaf condition is already established
(Theorem 10.4); in Adic-Spaces the ring-valued
\texttt{structurePresheaf\_isSheaf} (Adic spaces/StructureSheaf.lean) and the
Laurent-cover acyclicity carry the remaining \texttt{sorry}s. Following Wedhorn
Theorem 8.28(b,c).