Adic Spaces — Lean blueprint

10. Module topology, noetherian rings and the structure sheaf🔗

Theorem10.1
uses 1used by 1L∃∀N

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.12 theorems
  • theoremdefined in «Adic spaces»/NoetherianTateModules.lean
    complete
    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.lean
    complete
    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). 
Proof for Theorem 10.1
uses 0

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.

Theorem10.2
Statement uses 2
Statement dependency previews
Preview
Definition 1.2
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 0L∃∀N

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.21 theorem
  • theoremdefined in «Adic spaces»/NoetherianTateModules.lean
    complete
    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. 
Proof for Theorem 10.2

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.

Definition10.3
Statement uses 2
Statement dependency previews
Preview
Theorem 4.3
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀N

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.32 definitions
  • defdefined in «Adic spaces»/StructureSheaf.lean
    complete
    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.lean
    complete
    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). 
Theorem10.4
Statement uses 2
Statement dependency previews
Preview
Definition 7.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀N

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.41 theorem
  • theoremdefined in «Adic spaces»/StructureSheaf.lean
    complete
    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`. 
Proof for Theorem 10.4
uses 0

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.

Theorem10.5
Statement uses 4
Statement dependency previews
Preview
Definition 5.3
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 0XL∃∀N

(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).