Module

SectionLocalization.lean

Nyll.SchemeTheory.Modules.SectionLocalization
13 declarations indexed from sourceView source ↗

Localization of section modules

Uses abelian-presheaf gluing to prove localization for the actual module restrictions.

Imports13
Imported by4

Declarations

AlgebraicGeometry.Scheme.Modules.sectionEnd

Multiplication by an actual global section, as a natural endomorphism of the existing abelian presheaf.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
def sectionEnd {X : Scheme.{u}} (M : X.Modules) (f : Γ(X, ⊤)) : End M.presheaf where
  app V := M.smul (X.presheaf.map V.unop.leTop.op f)
  naturality {V W} i := by
    symm
    have hsmul : M.smul (X.presheaf.map V.unop.leTop.op f) ≫ M.presheaf.map i =
        M.presheaf.map i ≫ M.smul
          (X.presheaf.map i (X.presheaf.map V.unop.leTop.op f)) := by
      simpa only [Quiver.Hom.op_unop] using
        M.map_comp_smul i.unop (X.presheaf.map V.unop.leTop.op f)
    rw [hsmul]
    have h : X.presheaf.map i (X.presheaf.map V.unop.leTop.op f) =
        X.presheaf.map W.unop.leTop.op f := by
      change (X.presheaf.map V.unop.leTop.op ≫ X.presheaf.map i) f = _
      rw [← Functor.map_comp]
      rfl
    rw [h]
AlgebraicGeometry.Scheme.Modules.sectionEnd_pow_app
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
lemma sectionEnd_pow_app {X : Scheme.{u}} (M : X.Modules) (f : Γ(X, ⊤))
    (n : ℕ) (V : X.Opens) :
    ((sectionEnd M f) ^ n).app (op V) =
      M.smul (X.presheaf.map V.leTop.op (f ^ n))
AlgebraicGeometry.Scheme.Modules.sectionEnd_pow_apply
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
lemma sectionEnd_pow_apply {X : Scheme.{u}} (M : X.Modules) (f : Γ(X, ⊤))
    (n : ℕ) (V : X.Opens) (x : Γ(M, V)) :
    ((sectionEnd M f) ^ n).app (op V) x =
      X.presheaf.map V.leTop.op (f ^ n) • x
AlgebraicGeometry.Scheme.Modules.sectionEnd_act
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
lemma sectionEnd_act {X : Scheme.{u}} (M : X.Modules)
    (f : Γ(X, ⊤)) (n : ℕ) (V : X.Opens) (x : Γ(M, V)) :
    AbelianSectionLocalization.act M.presheaf (sectionEnd M f) n V x =
      (X.presheaf.map V.leTop.op f) ^ n • x
AlgebraicGeometry.Scheme.Modules.restriction_eq_zero_iff
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
lemma restriction_eq_zero_iff {X : Scheme.{u}} (M : X.Modules)
    {U V W : X.Opens} (hVU : V ≤ U) (hWU : W ≤ U) (hVW : V = W) (z : Γ(M, U)) :
    M.presheaf.map (homOfLE hVU).op z = 0 ↔
      M.presheaf.map (homOfLE hWU).op z = 0
AlgebraicGeometry.Scheme.Modules.clauses_iff
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
lemma clauses_iff {X : Scheme.{u}} (M : X.Modules)
    (f : Γ(X, ⊤)) (V : X.Opens) :
    BasicOpenLocalization M V (X.presheaf.map V.leTop.op f) ↔
      AbelianSectionLocalization.Clauses M.presheaf (sectionEnd M f) (X.basicOpen f) V
AlgebraicGeometry.Scheme.Modules.top_restriction
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
lemma top_restriction {X : Scheme.{u}} (f : Γ(X, ⊤)) :
    X.presheaf.map (⊤ : X.Opens).leTop.op f = f
AlgebraicGeometry.Scheme.Modules.affine_clauses_restrict
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
lemma affine_clauses_restrict {X Y : Scheme.{u}} (M : X.Modules)
    (hlocal : ∀ V : X.affineOpens, ∀ f : Γ(X, V.1), BasicOpenLocalization M V.1 f)
    (j : Y ⟶ X) [IsOpenImmersion j] :
    ∀ V : Y.affineOpens, ∀ f : Γ(Y, V.1), BasicOpenLocalization (M.restrict j) V.1 f
AlgebraicGeometry.Scheme.Modules.clauses_top_of_affine
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
lemma clauses_top_of_affine {X : Scheme.{u}} (M : X.Modules)
    (hlocal : ∀ V : X.affineOpens, ∀ f : Γ(X, V.1), BasicOpenLocalization M V.1 f)
    [CompactSpace X] [QuasiSeparatedSpace X] (f : Γ(X, ⊤)) :
    BasicOpenLocalization M ⊤ f
AlgebraicGeometry.Scheme.Modules.exists_pow_smul_eq_zero_of_affine_localization

The compact-open kernel bound from the shared gluing core.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
theorem exists_pow_smul_eq_zero_of_affine_localization {X : Scheme.{u}}
    (M : X.Modules)
    (hlocal : ∀ V : X.affineOpens, ∀ f : Γ(X, V.1), BasicOpenLocalization M V.1 f)
    {U : X.Opens} (hU : IsCompact (U : Set X)) (f : Γ(X, U)) (y : Γ(M, U))
    (hy : M.presheaf.map (homOfLE (X.basicOpen_le f)).op y = 0) :
    ∃ n : ℕ, (f ^ n : Γ(X, U)) • y = 0
AlgebraicGeometry.Scheme.Modules.basicOpenLocalization_of_affine_localization

The existing compact-open argument generalized from local triviality to the actual affine localization property.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
theorem basicOpenLocalization_of_affine_localization {X : Scheme.{u}}
    (M : X.Modules)
    (hlocal : ∀ V : X.affineOpens, ∀ f : Γ(X, V.1), BasicOpenLocalization M V.1 f)
    {U : X.Opens} (hU : IsCompact (U : Set X))
    (hqs : IsQuasiSeparated (U : Set X)) (f : Γ(X, U)) :
    BasicOpenLocalization M U f
AlgebraicGeometry.Scheme.Modules.basicOpenLocalization_of_isQuasicoherent_of_qcqs

Quasicoherent modules satisfy section localization on every quasi-compact, quasi-separated open. All affine localization inputs are supplied from quasicoherence in this same owner chain.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
theorem basicOpenLocalization_of_isQuasicoherent_of_qcqs {X : Scheme.{u}}
    (M : X.Modules) [M.IsQuasicoherent] {U : X.Opens}
    (hU : IsCompact (U : Set X)) (hqs : IsQuasiSeparated (U : Set X)) (f : Γ(X, U)) :
    BasicOpenLocalization M U f
AlgebraicGeometry.Scheme.Modules.isLocalizedModule_basicOpen_of_isQuasicoherent_of_qcqs

On a quasi-compact, quasi-separated open, restriction of a quasicoherent module to a basic open is the localization of its sections. The linear map and its restriction-of-scalars codomain are the existing presheaf data.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
universe u
open CategoryTheory TopologicalSpace Opposite
namespace AlgebraicGeometry.Scheme.Modules
theorem isLocalizedModule_basicOpen_of_isQuasicoherent_of_qcqs {X : Scheme.{u}}
    (M : X.Modules) [M.IsQuasicoherent] {U : X.Opens}
    (hU : IsCompact (U : Set X)) (hqs : IsQuasiSeparated (U : Set X)) (f : Γ(X, U)) :
    IsLocalizedModule.Away f
      (show Γ(M, U) →ₗ[Γ(X, U)]
        (ModuleCat.restrictScalars (X.presheaf.map (homOfLE (X.basicOpen_le f)).op).hom).obj
          (ModuleCat.of Γ(X, X.basicOpen f) Γ(M, X.basicOpen f)) from
        (M.val.map (homOfLE (X.basicOpen_le f)).op).hom) := by
  have h := basicOpenLocalization_of_isQuasicoherent_of_qcqs M hU hqs f
  apply IsLocalizedModule.Away.mk_of_addCommGroup
  · rw [Module.End.isUnit_iff]
    change Function.Bijective (fun x :
      (ModuleCat.restrictScalars
        (X.presheaf.map (homOfLE (X.basicOpen_le f)).op).hom).obj
          (ModuleCat.of Γ(X, X.basicOpen f) Γ(M, X.basicOpen f)) => f • x)
    have hf : IsUnit ((X.presheaf.map (homOfLE (X.basicOpen_le f)).op).hom f) :=
      RingedSpace.isUnit_res_basicOpen X.toRingedSpace f
    have hfun : (fun x :
        (ModuleCat.restrictScalars
          (X.presheaf.map (homOfLE (X.basicOpen_le f)).op).hom).obj
            (ModuleCat.of Γ(X, X.basicOpen f) Γ(M, X.basicOpen f)) => f • x) =
        (fun x : ModuleCat.of Γ(X, X.basicOpen f) Γ(M, X.basicOpen f) =>
          (X.presheaf.map (homOfLE (X.basicOpen_le f)).op).hom f • x) := by
      funext x
      exact ModuleCat.restrictScalars.smul_def
        (X.presheaf.map (homOfLE (X.basicOpen_le f)).op).hom f x
    rw [hfun]
    exact hf.smul_bijective (β := ModuleCat.of Γ(X, X.basicOpen f) Γ(M, X.basicOpen f))
  · intro x
    obtain ⟨n, y, hy⟩ := h.1 x
    refine ⟨n, y, ?_⟩
    rw [ModuleCat.restrictScalars.smul_def]
    exact hy.symm
  · intro y hy
    exact h.2 y hy