Module

IdealSheafHom.lean

Nyll.AlgebraicCurves.Geometry.Sheaves.IdealSheafHom
37 declarations indexed from sourceView source ↗

Morphisms of ideal-sheaf data

Compatible linear maps on ideals over affine opens admit module operations, composition, and ideal-sheaf ranges.

Imports1
  • Mathlib.AlgebraicGeometry.IdealSheaf.Basic
Imported by2

Declarations

AlgebraicGeometry.Scheme.IdealSheafData.sres

The restriction homomorphism of regular functions along an inclusion of affine opens.

Source context 5 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
def sres {U V : X.affineOpens} (h : V ≤ U) : Γ(X, U) →+* Γ(X, V)
AlgebraicGeometry.Scheme.IdealSheafData.sresTop

Restrict a global regular function to the affine open U.

Source context 5 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
def sresTop (U : X.affineOpens) : Γ(X, ⊤) →+* Γ(X, U)
AlgebraicGeometry.Scheme.IdealSheafData.sres_apply
Source context 5 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
lemma sres_apply {U V : X.affineOpens} (h : V ≤ U) (s : Γ(X, U)) :
    sres h s = (X.presheaf.map (homOfLE (show (V : X.Opens) ≤ U from h)).op).hom s := rfl
AlgebraicGeometry.Scheme.IdealSheafData.sresTop_apply
Source context 5 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
lemma sresTop_apply (U : X.affineOpens) (s : Γ(X, ⊤)) :
    sresTop U s = (X.presheaf.map (homOfLE (le_top : (U : X.Opens) ≤ ⊤)).op).hom s
AlgebraicGeometry.Scheme.IdealSheafData.sres_sresTop
Source context 5 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
lemma sres_sresTop {U V : X.affineOpens} (h : V ≤ U) (s : Γ(X, ⊤)) :
    sres h (sresTop U s) = sresTop V s
AlgebraicGeometry.Scheme.IdealSheafData.sres_sres
Source context 5 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
lemma sres_sres {U V W : X.affineOpens} (h : W ≤ V) (h' : V ≤ U) (s : Γ(X, U)) :
    sres h (sres h' s) = sres (h.trans h') s
AlgebraicGeometry.Scheme.IdealSheafData.resLE

Restrict an element of the ideal on U to the ideal on the affine open V.

Source context 5 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
def resLE (I : X.IdealSheafData) {U V : X.affineOpens} (h : V ≤ U) (x : I.ideal U) :
    I.ideal V
AlgebraicGeometry.Scheme.IdealSheafData.coe_resLE
Source context 5 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
lemma coe_resLE (I : X.IdealSheafData) {U V : X.affineOpens} (h : V ≤ U)
    (x : I.ideal U) : (I.resLE h x : Γ(X, V)) = sres h (x : Γ(X, U))
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom

A family of linear maps between the ideals on affine opens, compatible with restriction.

Source context 5 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
structure IdealHom (I J : X.IdealSheafData) : Type u where
  /-- The linear map on each affine open. -/
  app : ∀ U : X.affineOpens, I.ideal U →ₗ[Γ(X, U)] J.ideal U
  /-- Restricting an input and then applying `app` agrees, as a regular function, with restricting
    its image. -/
  coe_app_resLE : ∀ {U V : X.affineOpens} (h : V ≤ U) (x : I.ideal U),
    ((app V (I.resLE h x) : J.ideal V) : Γ(X, V)) = sres h ((app U x : J.ideal U) : Γ(X, U))
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.ext
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma ext {φ ψ : IdealHom I J} (h : φ.app = ψ.app) : φ = ψ
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
instance : Zero (IdealHom I J)
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
instance : Add (IdealHom I J)
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
instance : Neg (IdealHom I J)
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
instance : Sub (IdealHom I J)
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
instance : SMul ℕ (IdealHom I J)
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
instance : SMul ℤ (IdealHom I J)
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.zero_app
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma zero_app (U : X.affineOpens) : (0 : IdealHom I J).app U = 0
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.add_app
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma add_app (φ ψ : IdealHom I J) (U : X.affineOpens) :
    (φ + ψ).app U = φ.app U + ψ.app U
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.neg_app
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma neg_app (φ : IdealHom I J) (U : X.affineOpens) : (-φ).app U = -φ.app U
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.sub_app
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma sub_app (φ ψ : IdealHom I J) (U : X.affineOpens) :
    (φ - ψ).app U = φ.app U - ψ.app U
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.nsmul_app
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma nsmul_app (n : ℕ) (φ : IdealHom I J) (U : X.affineOpens) :
    (n • φ).app U = n • φ.app U
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.zsmul_app
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma zsmul_app (n : ℤ) (φ : IdealHom I J) (U : X.affineOpens) :
    (n • φ).app U = n • φ.app U
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
instance : AddCommGroup (IdealHom I J)
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
instance : SMul Γ(X, ⊤) (IdealHom I J)
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.smul_app
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma smul_app (s : Γ(X, ⊤)) (φ : IdealHom I J) (U : X.affineOpens) :
    (s • φ).app U = sresTop U s • φ.app U
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
instance : Module Γ(X, ⊤) (IdealHom I J) where
  one_smul φ := by ext U x; simp
  mul_smul r s φ := by ext U x; simp [mul_smul]
  smul_zero r := by ext U x; simp
  smul_add r φ ψ := by ext U x; simp
  add_smul r s φ := by ext U x; simp [add_smul]
  zero_smul φ := by ext U x; simp
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.ofLE

The morphism induced by inclusion of ideal sheaf data.

Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
def ofLE (h : I ≤ J) : IdealHom I J where
  app U := Submodule.inclusion (le_def.mp h U)
  coe_app_resLE _ _ := rfl
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.coe_ofLE_app
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma coe_ofLE_app (h : I ≤ J) (U : X.affineOpens) (x : I.ideal U) :
    ((ofLE h).app U x : Γ(X, U)) = x
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.id

The identity morphism of ideal sheaf data.

Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
def id (I : X.IdealSheafData) : IdealHom I I
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.id_app
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma id_app (I : X.IdealSheafData) (U : X.affineOpens) (x : I.ideal U) :
    (IdealHom.id I).app U x = x
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.comp

Compose morphisms of ideal sheaf data on each affine open.

Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
def comp (ψ : IdealHom J K) (φ : IdealHom I J) : IdealHom I K where
  app U := ψ.app U ∘ₗ φ.app U
  coe_app_resLE := by
    intro U V h x
    have h₁ : φ.app V (I.resLE h x) = J.resLE h (φ.app U x) := Subtype.ext (φ.coe_app_resLE h x)
    simp only [LinearMap.coe_comp, Function.comp_apply, h₁, ψ.coe_app_resLE h]
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.comp_app
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma comp_app (ψ : IdealHom J K) (φ : IdealHom I J) (U : X.affineOpens)
    (x : I.ideal U) : (ψ.comp φ).app U x = ψ.app U (φ.app U x)
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.mulRight

Multiply sections of I by restrictions of s, producing sections of I * J using hs.

Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
def mulRight (I J : X.IdealSheafData) (s : Γ(X, ⊤))
    (hs : ∀ U : X.affineOpens, sresTop U s ∈ J.ideal U) : IdealHom I (I * J) where
  app U :=
    { toFun := fun x => ⟨x * sresTop U s, by rw [ideal_mul]; exact Ideal.mul_mem_mul x.2 (hs U)⟩
      map_add' := fun x y => Subtype.ext (add_mul _ _ _)
      map_smul' := fun r x => Subtype.ext (mul_assoc _ _ _) }
  coe_app_resLE := by
    intro U V h x
    change sres h (x : Γ(X, U)) * sresTop V s = sres h ((x : Γ(X, U)) * sresTop U s)
    rw [map_mul, sres_sresTop]
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.coe_mulRight_app
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma coe_mulRight_app (I J : X.IdealSheafData) (s : Γ(X, ⊤))
    (hs : ∀ U : X.affineOpens, sresTop U s ∈ J.ideal U) (U : X.affineOpens) (x : I.ideal U) :
    ((mulRight I J s hs).app U x : Γ(X, U)) = x * sresTop U s
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.range

The ideal sheaf data whose ideal on an affine open is the image of φ.app in the ring of regular functions.

Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
def range (φ : IdealHom I J) : X.IdealSheafData where
  ideal U := LinearMap.range ((J.ideal U).subtype ∘ₗ φ.app U)
  map_ideal_basicOpen U f := by
    have hle : X.affineBasicOpen f ≤ U := X.affineBasicOpen_le f
    change Ideal.map (sres hle)
      (LinearMap.range ((J.ideal U).subtype ∘ₗ φ.app U)) =
        LinearMap.range
          ((J.ideal (X.affineBasicOpen f)).subtype ∘ₗ φ.app (X.affineBasicOpen f))
    apply le_antisymm
    · rw [Ideal.map_le_iff_le_comap]
      rintro _ ⟨x, rfl⟩
      exact ⟨I.resLE hle x, (φ.coe_app_resLE hle x)⟩
    · rintro _ ⟨y, rfl⟩
      let M : Submodule (Γ(X, X.affineBasicOpen f)) (I.ideal (X.affineBasicOpen f)) :=
        Submodule.comap ((J.ideal _).subtype ∘ₗ φ.app _)
          (Ideal.map (sres hle) (LinearMap.range ((J.ideal U).subtype ∘ₗ φ.app U)))
      suffices h : y ∈ M by rw [Submodule.mem_comap] at h; exact h
      have hle' : (I.ideal U).map (sres hle) ≤ M.map (I.ideal _).subtype := by
        rw [Ideal.map_le_iff_le_comap]
        intro x hx
        refine ⟨I.resLE hle ⟨x, hx⟩, ?_, rfl⟩
        rw [SetLike.mem_coe, Submodule.mem_comap, LinearMap.comp_apply, Submodule.subtype_apply,
          φ.coe_app_resLE]
        exact Ideal.mem_map_of_mem (sres hle)
          (LinearMap.mem_range.mpr ⟨⟨x, hx⟩, rfl⟩ : ((φ.app U ⟨x, hx⟩ : J.ideal U) : Γ(X, U)) ∈
            LinearMap.range ((J.ideal U).subtype ∘ₗ φ.app U))
      have hy : (y : Γ(X, X.affineBasicOpen f)) ∈ (I.ideal U).map (sres hle) :=
        (I.map_ideal_basicOpen U f).ge y.2
      obtain ⟨y', hy', hyy'⟩ := hle' hy
      have : y' = y := Subtype.ext hyy'
      exact this ▸ hy'
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.ideal_range
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma ideal_range (φ : IdealHom I J) (U : X.affineOpens) :
    φ.range.ideal U = LinearMap.range ((J.ideal U).subtype ∘ₗ φ.app U)
AlgebraicGeometry.Scheme.IdealSheafData.IdealHom.range_le
Source context 7 commands

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

open CategoryTheory TopologicalSpace Opposite
universe u
namespace AlgebraicGeometry.Scheme
variable {X : Scheme.{u}}
namespace IdealSheafData
namespace IdealHom
variable {I J K : X.IdealSheafData}
lemma range_le (φ : IdealHom I J) : φ.range ≤ J