Module

KaehlerModule.lean

Nyll.AlgebraicCurves.Geometry.Sheaves.KaehlerModule
11 declarations indexed from sourceView source ↗

Kaehler Module

Declarations

AlgebraicGeometry.Scheme.Hom.kaehlerPresheaf

The presheaf of relative Kaehler differentials for f.

Source context 5 commands

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

noncomputable section
universe u
open CategoryTheory Opposite
namespace AlgebraicGeometry.Scheme.Hom
variable {A : Type u} [CommRing A] {X : Scheme.{u}} (f : X ⟶ Spec (CommRingCat.of A))
def kaehlerPresheaf : X.PresheafOfModules
AlgebraicGeometry.Scheme.Hom.kaehlerPresheafModule
Source context 5 commands

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

noncomputable section
universe u
open CategoryTheory Opposite
namespace AlgebraicGeometry.Scheme.Hom
variable {A : Type u} [CommRing A] {X : Scheme.{u}} (f : X ⟶ Spec (CommRingCat.of A))
instance kaehlerPresheafModule (U : X.Opens) :
    Module Γ(X, U) (f.kaehlerPresheaf.obj (op U))
AlgebraicGeometry.Scheme.Hom.kaehler

The module sheaf obtained by sheafifying the relative differential presheaf.

Source context 6 commands

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

noncomputable section
universe u
open CategoryTheory Opposite
namespace AlgebraicGeometry.Scheme.Hom
variable {A : Type u} [CommRing A] {X : Scheme.{u}} (f : X ⟶ Spec (CommRingCat.of A))
local instance kaehlerPresheafModule (U : X.Opens) :
    Module Γ(X, U) (f.kaehlerPresheaf.obj (op U)) :=
  (f.kaehlerPresheaf.obj (op U)).isModule
def kaehler : X.Modules
AlgebraicGeometry.Scheme.Hom.topDifferentials

The specified determinant degree of the relative differential module sheaf.

Source context 6 commands

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

noncomputable section
universe u
open CategoryTheory Opposite
namespace AlgebraicGeometry.Scheme.Hom
variable {A : Type u} [CommRing A] {X : Scheme.{u}} (f : X ⟶ Spec (CommRingCat.of A))
local instance kaehlerPresheafModule (U : X.Opens) :
    Module Γ(X, U) (f.kaehlerPresheaf.obj (op U)) :=
  (f.kaehlerPresheaf.obj (op U)).isModule
def topDifferentials (d : ℕ) : X.Modules
AlgebraicGeometry.Scheme.Hom.topPresheaf

The specified exterior degree of the relative differential presheaf.

Source context 6 commands

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

noncomputable section
universe u
open CategoryTheory Opposite
namespace AlgebraicGeometry.Scheme.Hom
variable {A : Type u} [CommRing A] {X : Scheme.{u}} (f : X ⟶ Spec (CommRingCat.of A))
local instance kaehlerPresheafModule (U : X.Opens) :
    Module Γ(X, U) (f.kaehlerPresheaf.obj (op U)) :=
  (f.kaehlerPresheaf.obj (op U)).isModule
abbrev topPresheaf (d : ℕ) : X.PresheafOfModules
AlgebraicGeometry.Scheme.Hom.kaehlerPresheaf_obj
Source context 6 commands

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

noncomputable section
universe u
open CategoryTheory Opposite
namespace AlgebraicGeometry.Scheme.Hom
variable {A : Type u} [CommRing A] {X : Scheme.{u}} (f : X ⟶ Spec (CommRingCat.of A))
local instance kaehlerPresheafModule (U : X.Opens) :
    Module Γ(X, U) (f.kaehlerPresheaf.obj (op U)) :=
  (f.kaehlerPresheaf.obj (op U)).isModule
lemma kaehlerPresheaf_obj (U : (X.Opens)ᵒᵖ) :
    f.kaehlerPresheaf.obj U = CommRingCat.KaehlerDifferential (f.constToPresheaf.app U)
AlgebraicGeometry.Scheme.Hom.kaehlerToSections

The map from presheaf differentials to sections of the sheafified differential module.

Source context 6 commands

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

noncomputable section
universe u
open CategoryTheory Opposite
namespace AlgebraicGeometry.Scheme.Hom
variable {A : Type u} [CommRing A] {X : Scheme.{u}} (f : X ⟶ Spec (CommRingCat.of A))
local instance kaehlerPresheafModule (U : X.Opens) :
    Module Γ(X, U) (f.kaehlerPresheaf.obj (op U)) :=
  (f.kaehlerPresheaf.obj (op U)).isModule
def kaehlerToSections (U : X.Opens) :
    (f.kaehlerPresheaf.obj (op U) : Type u) → (Γ(f.kaehler, U) : Type u)
AlgebraicGeometry.Scheme.Hom.kaehlerToSectionsₗ

The linear sheafification map on the differential module over the selected open.

Source context 6 commands

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

noncomputable section
universe u
open CategoryTheory Opposite
namespace AlgebraicGeometry.Scheme.Hom
variable {A : Type u} [CommRing A] {X : Scheme.{u}} (f : X ⟶ Spec (CommRingCat.of A))
local instance kaehlerPresheafModule (U : X.Opens) :
    Module Γ(X, U) (f.kaehlerPresheaf.obj (op U)) :=
  (f.kaehlerPresheaf.obj (op U)).isModule
def kaehlerToSectionsₗ (U : X.Opens) :
    (f.kaehlerPresheaf.obj (op U)) →ₗ[Γ(X, U)] (Γ(f.kaehler, U) : Type u)
AlgebraicGeometry.Scheme.Hom.topToSections

The map from exterior presheaf differentials to sections of the corresponding determinant sheaf.

Source context 6 commands

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

noncomputable section
universe u
open CategoryTheory Opposite
namespace AlgebraicGeometry.Scheme.Hom
variable {A : Type u} [CommRing A] {X : Scheme.{u}} (f : X ⟶ Spec (CommRingCat.of A))
local instance kaehlerPresheafModule (U : X.Opens) :
    Module Γ(X, U) (f.kaehlerPresheaf.obj (op U)) :=
  (f.kaehlerPresheaf.obj (op U)).isModule
def topToSections (d : ℕ) (U : X.Opens) :
    (⋀[Γ(X, U)]^d (f.kaehlerPresheaf.obj (op U)) : Type u) → (Γ(f.topDifferentials d, U) : Type u)
AlgebraicGeometry.Scheme.Hom.kaehlerToSections_add
Source context 6 commands

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

noncomputable section
universe u
open CategoryTheory Opposite
namespace AlgebraicGeometry.Scheme.Hom
variable {A : Type u} [CommRing A] {X : Scheme.{u}} (f : X ⟶ Spec (CommRingCat.of A))
local instance kaehlerPresheafModule (U : X.Opens) :
    Module Γ(X, U) (f.kaehlerPresheaf.obj (op U)) :=
  (f.kaehlerPresheaf.obj (op U)).isModule
theorem kaehlerToSections_add (U : X.Opens) (s t : f.kaehlerPresheaf.obj (op U)) :
    f.kaehlerToSections U (s + t) = f.kaehlerToSections U s + f.kaehlerToSections U t
AlgebraicGeometry.Scheme.Hom.kaehlerPresheaf_nontrivial_polynomial
Source context 6 commands

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

noncomputable section
universe u
open CategoryTheory Opposite
namespace AlgebraicGeometry.Scheme.Hom
variable {A : Type u} [CommRing A] {X : Scheme.{u}} (f : X ⟶ Spec (CommRingCat.of A))
local instance kaehlerPresheafModule (U : X.Opens) :
    Module Γ(X, U) (f.kaehlerPresheaf.obj (op U)) :=
  (f.kaehlerPresheaf.obj (op U)).isModule
theorem kaehlerPresheaf_nontrivial_polynomial (A : Type u) [CommRing A] [Nontrivial A] :
    letI f : Spec (CommRingCat.of (Polynomial A)) ⟶ Spec (CommRingCat.of A) :=
      Spec.map (CommRingCat.ofHom (algebraMap A (Polynomial A)))
    Nontrivial (f.kaehlerPresheaf.obj (op ⊤)) := by
  set f : Spec (CommRingCat.of (Polynomial A)) ⟶ Spec (CommRingCat.of A) :=
    Spec.map (CommRingCat.ofHom (algebraMap A (Polynomial A))) with hf
  let Γ' : Type u := Γ(Spec (CommRingCat.of (Polynomial A)), ⊤)
  let algA : Algebra A Γ' := f.sectionsAlgebra ⊤
  let e : Γ' ≃+* Polynomial A := (Scheme.ΓSpecIso (CommRingCat.of (Polynomial
    A))).commRingCatIsoToRingEquiv
  let : Algebra Γ' (Polynomial A) := e.toRingHom.toAlgebra
  have hcomp : (algebraMap Γ' (Polynomial A)).comp (algebraMap A Γ') = algebraMap A (Polynomial A)
    := by
    refine RingHom.ext fun a => ?_
    change (Scheme.ΓSpecIso (CommRingCat.of (Polynomial A))).hom.hom
      ((f.appLE ⊤ ⊤ le_top).hom ((Scheme.ΓSpecIso (CommRingCat.of A)).inv.hom a)) = algebraMap A
        (Polynomial A) a
    have h1 : f.appLE ⊤ ⊤ le_top = f.appTop := by
      unfold Scheme.Hom.appLE
      have ht : (show op (⊤ : (Spec (CommRingCat.of (Polynomial A))).Opens) ⟶ op ⊤ from
          (homOfLE (le_top : (⊤ : (Spec (CommRingCat.of (Polynomial A))).Opens) ≤ f ⁻¹ᵁ ⊤)).op) =
          𝟙 (op ⊤) := Subsingleton.elim _ _
      have hm : (Spec (CommRingCat.of (Polynomial A))).presheaf.map
          (show op (⊤ : (Spec (CommRingCat.of (Polynomial A))).Opens) ⟶ op ⊤ from
            (homOfLE (le_top : (⊤ : (Spec (CommRingCat.of (Polynomial A))).Opens) ≤ f ⁻¹ᵁ ⊤)).op) =
          𝟙 Γ(Spec (CommRingCat.of (Polynomial A)), ⊤) :=
        (congrArg (fun i : op (⊤ : (Spec (CommRingCat.of (Polynomial A))).Opens) ⟶ op ⊤ =>
          (Spec (CommRingCat.of (Polynomial A))).presheaf.map i) ht).trans
          (CategoryTheory.Functor.map_id _ _)
      exact (congrArg (fun k : Γ(Spec (CommRingCat.of (Polynomial A)), ⊤) ⟶
          Γ(Spec (CommRingCat.of (Polynomial A)), ⊤) => f.appTop ≫ k) hm).trans
        (Category.comp_id f.appTop)
    rw [h1]
    have h2 := Scheme.ΓSpecIso_naturality (CommRingCat.ofHom (algebraMap A (Polynomial A)))
    rw [← hf] at h2
    have h3 := congrArg (fun φ => φ.hom ((Scheme.ΓSpecIso (CommRingCat.of A)).inv.hom a)) h2
    simp only [CommRingCat.hom_comp, RingHom.coe_comp, Function.comp_apply] at h3
    rw [h3]
    change algebraMap A (Polynomial A) (((Scheme.ΓSpecIso (CommRingCat.of A)).inv ≫
      (Scheme.ΓSpecIso (CommRingCat.of A)).hom).hom a) = _
    rw [Iso.inv_hom_id]; rfl
  have : IsScalarTower A Γ' (Polynomial A) := IsScalarTower.of_algebraMap_eq' hcomp.symm
  have hsurj : Function.Surjective (KaehlerDifferential.map A A Γ' (Polynomial A)) :=
    KaehlerDifferential.map_surjective_of_surjective A A (h := e.surjective)
  have : Nontrivial (Ω[Polynomial A⁄A]) :=
    (KaehlerDifferential.polynomialEquiv A).toEquiv.nontrivial
  exact hsurj.nontrivial