Definitions/Def_AlgebraicGeometry_KaehlerModule.lean
Relative Kähler differentials and top-degree differentials of a scheme over an affine base
Throughout, A is a commutative ring, X a scheme and f : X \to \operatorname{Spec} A a morphism of schemes. The first construction, constToPresheaf, is the morphism of presheaves of commutative rings on X from the constant presheaf with value A to \mathcal O_X whose component at an open U is the inverse of the \Gamma–\operatorname{Spec} isomorphism followed by f's map on sections \Gamma(\operatorname{Spec} A, \top) \to \Gamma(X, U); sectionsAlgebra repackages this component as an A-algebra structure on \Gamma(X, U). Applying Mathlib's relative-differentials construction for a morphism of presheaves of rings to constToPresheaf gives kaehlerPresheaf, the presheaf of \mathcal O_X-modules with U \mapsto \Omega_{\Gamma(X,U)/A}, as recorded objectwise by kaehlerPresheaf_obj. Its sheafification (for the identity morphism of the structure sheaf of rings) is kaehler, an object of the category of sheaves of \mathcal O_X-modules, playing the role of \Omega^1_{X/A}. For d : \mathbb N, topDifferentials d is Scheme.Modules.det d of kaehler, i.e. the sheafification of the sectionwise d-th exterior power of the underlying presheaf of modules of \Omega^1_{X/A}; separately, topPresheaf d is the sectionwise d-th exterior power of the presheaf kaehlerPresheaf itself, before any sheafification.
Two comparison maps are provided: kaehlerToSectionsₗ U is the component at U of the unit of the sheafification adjunction, a \Gamma(X,U)-linear map \Omega_{\Gamma(X,U)/A} \to \Gamma(\Omega^1_{X/A}, U), with kaehlerToSections its underlying function; and topToSections d U sends an element of \bigwedge^d_{\Gamma(X,U)} \Omega_{\Gamma(X,U)/A} first through the d-th exterior power of kaehlerToSectionsₗ U and then through the unit at the exterior-power presheaf, landing in \Gamma(\omega^d_{X/A}, U). Two small results accompany the definitions: kaehlerToSections_add states additivity of the comparison map, and kaehlerPresheaf_nontrivial_polynomial states that for a nontrivial commutative ring A the presheaf of differentials of \operatorname{Spec} A[t] \to \operatorname{Spec} A has a nontrivial module of global sections, deduced from surjectivity of the base-change map of Kähler differentials along the identification of global sections of \operatorname{Spec} A[t] with A[t] together with nontriviality of \Omega_{A[t]/A}.
Relation to Mathlib
The presheaf of differentials is Mathlib's relative-differentials construction for a morphism of presheaves of rings, and the passage to a sheaf of modules is Mathlib's sheafification; the exterior power used for the top-degree differentials is the project's own sectionwise exterior-power functor on presheaves of modules.
Where it is used
These objects provide the vocabulary of relative and top-degree differentials for a scheme over an affine base, as needed for invariant differentials on smooth group schemes and for the theory of Néron and minimal models of elliptic curves that enters the argument.
References
- R. Hartshorne, Algebraic Geometry, Graduate Texts in Mathematics 52, Springer, 1977, II.8
- A. Grothendieck, Éléments de géométrie algébrique IV, §§16.3–16.6, Publ. Math. IHÉS 32 (1967)
- S. Bosch, W. Lütkebohmert and M. Raynaud, Néron Models, Ergebnisse der Mathematik und ihrer Grenzgebiete 21, Springer, 1990, §§2.1, 4.2
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 110 lines
- 12 declarations
- used in the statements of 33 theorems and imported by 39 proofs
- imports 2 definition modules
Source file: Definitions/Def_AlgebraicGeometry_KaehlerModule.lean
Declarations
- def
AlgebraicGeometry.Scheme.Hom.constToPresheaf - def
AlgebraicGeometry.Scheme.Hom.sectionsAlgebra - def
AlgebraicGeometry.Scheme.Hom.kaehlerPresheaf - def
AlgebraicGeometry.Scheme.Hom.kaehler - def
AlgebraicGeometry.Scheme.Hom.topDifferentials - abbrev
AlgebraicGeometry.Scheme.Hom.topPresheaf - lemma
AlgebraicGeometry.Scheme.Hom.kaehlerPresheaf_obj - def
AlgebraicGeometry.Scheme.Hom.kaehlerToSections - def
AlgebraicGeometry.Scheme.Hom.kaehlerToSectionsₗ - def
AlgebraicGeometry.Scheme.Hom.topToSections - theorem
AlgebraicGeometry.Scheme.Hom.kaehlerToSections_add - theorem
AlgebraicGeometry.Scheme.Hom.kaehlerPresheaf_nontrivial_polynomial
Source
import Mathlib import Definitions.Def_PresheafOfModules_ExteriorPower import Definitions.Def_AlgebraicGeometry_ModulesDet set_option autoImplicit false 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 constToPresheaf : (Functor.const (X.Opens)ᵒᵖ).obj (CommRingCat.of A) ⟶ X.presheaf where app U := (Scheme.ΓSpecIso (CommRingCat.of A)).inv ≫ f.appLE ⊤ U.unop le_top naturality U V i := by simp only [Functor.const_obj_obj, Functor.const_obj_map, Category.id_comp, Category.assoc] rw [Scheme.Hom.appLE_map] @[reducible] def sectionsAlgebra (U : X.Opens) : Algebra A Γ(X, U) := (f.constToPresheaf.app (op U)).hom.toAlgebra def kaehlerPresheaf : X.PresheafOfModules := PresheafOfModules.DifferentialsConstruction.relativeDifferentials' f.constToPresheaf def kaehler : X.Modules := (PresheafOfModules.sheafification (𝟙 X.ringCatSheaf.obj)).obj f.kaehlerPresheaf def topDifferentials (d : ℕ) : X.Modules := Scheme.Modules.det d f.kaehler abbrev topPresheaf (d : ℕ) : X.PresheafOfModules := (Scheme.Modules.presheafExteriorPower X d).obj f.kaehlerPresheaf @[simp] lemma kaehlerPresheaf_obj (U : (X.Opens)ᵒᵖ) : f.kaehlerPresheaf.obj U = CommRingCat.KaehlerDifferential (f.constToPresheaf.app U) := rfl def kaehlerToSections (U : X.Opens) : (f.kaehlerPresheaf.obj (op U) : Type u) → (Γ(f.kaehler, U) : Type u) := fun s => (((PresheafOfModules.sheafificationAdjunction (𝟙 X.ringCatSheaf.obj)).unit.app f.kaehlerPresheaf).app (op U)).hom s def kaehlerToSectionsₗ (U : X.Opens) : (f.kaehlerPresheaf.obj (op U)) →ₗ[Γ(X, U)] (Γ(f.kaehler, U) : Type u) := (((PresheafOfModules.sheafificationAdjunction (𝟙 X.ringCatSheaf.obj)).unit.app f.kaehlerPresheaf).app (op U)).hom def topToSections (d : ℕ) (U : X.Opens) : (⋀[Γ(X, U)]^d (f.kaehlerPresheaf.obj (op U)) : Type u) → (Γ(f.topDifferentials d, U) : Type u) := fun s => (((PresheafOfModules.sheafificationAdjunction (𝟙 X.ringCatSheaf.obj)).unit.app ((Scheme.Modules.presheafExteriorPower X d).obj f.kaehler.val)).app (op U)).hom (exteriorPower.map d (f.kaehlerToSectionsₗ U) s) 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 := map_add (f.kaehlerToSectionsₗ U) s t 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)), ⊤) letI algA : Algebra A Γ' := f.sectionsAlgebra ⊤ let e : Γ' ≃+* Polynomial A := (Scheme.ΓSpecIso (CommRingCat.of (Polynomial A))).commRingCatIsoToRingEquiv letI : 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 simp [Scheme.Hom.appLE, Scheme.Hom.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 haveI : 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) haveI : Nontrivial (Ω[Polynomial A⁄A]) := (KaehlerDifferential.polynomialEquiv A).toEquiv.nontrivial exact hsurj.nontrivial end AlgebraicGeometry.Scheme.Hom end /-- info: 'AlgebraicGeometry.Scheme.Hom.kaehlerToSections_add' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs in #print axioms AlgebraicGeometry.Scheme.Hom.kaehlerToSections_add /-- info: 'AlgebraicGeometry.Scheme.Hom.kaehlerPresheaf_nontrivial_polynomial' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs in #print axioms AlgebraicGeometry.Scheme.Hom.kaehlerPresheaf_nontrivial_polynomial
Statements phrased using this module (33)
- Invariant frame of the top differentials on a smooth group scheme
GoodReductionJacobian.RelativeGroupLaw.exists_isFrameOn_topDifferentials_forall_topFormMap_mul_eq43 below · depth 30 - Existence of ω-minimal component data over a discrete valuation ring
NeronModelInfra.exists_minimalComponentData_isOmegaMinimal_of_catchesIndexOnePoints59 below · depth 30 - Translation extension at maximal special points of Z×_R X
NeronModelInfra.forall_nhds_translation_extension_isOpenImmersion_of_isOmegaMinimal_of_openCover_of_isCommutative70 below · depth 30 - Affine chart with étale coordinates at a rational point
AlgebraicGeometry.SmoothOfRelativeDimension.exists_isAffineOpen_smooth_rank_eq_etaleCoordinates_of_point7 below · depth 31 - Left-invariant global frame on the top differentials of G/K
GoodReductionJacobian.RelativeGroupLaw.exists_isFrameOn_topDifferentials_forall_topFormMap_appLE_mul_eq41 below · depth 31 - From chart-level translation identity to invariance at field-valued points
GoodReductionJacobian.RelativeGroupLaw.topFormMap_mul_eq_of_forall_topFormMap_appLE_mul_eq1 below · depth 31 - Order comparison along a chart-compatible morphism of ω-readings
NeronModelInfra.ComponentReading.n_le_n_and_isOpenImmersion_of_n_eq_of_specializes45 below · depth 31 - Existence of an ω-reading at a maximal special-fibre point
NeronModelInfra.exists_componentReading_data_of_smooth_of_forall_specializes23 below · depth 31 - Minimal order and formal smoothness at a maximal special point
NeronModelInfra.exists_n_eq_and_formallySmooth_stalk_of_isOmegaMinimal_of_genericFibreRestrict_comp_eq_mul52 below · depth 31 - Formally smooth birational translation extends to an open immersion
NeronModelInfra.exists_nhds_translation_extension_isOpenImmersion_of_formallySmooth_stalk_of_isOmegaMinimal18 below · depth 31 - Translation by a K-point is birational at η
NeronModelInfra.isFractionRing_stalk_of_genericFibreRestrict_comp_eq_mul_of_pullback_lift6 below · depth 31 - Pulled-back frame of top differentials freely generates on charts
AlgebraicGeometry.Scheme.Hom.bijective_smul_topFormMap_of_isFrameOn_of_isPullback21 below · depth 32 - Uniqueness of pullback maps on top differentials via affine charts
AlgebraicGeometry.Scheme.Hom.eq_of_map_pullbackLocalSection_topToSections_eq5 below · depth 32 - Chain rule for pull-back maps on top differentials
AlgebraicGeometry.Scheme.Hom.eq_pullbackComp_inv_app_comp_map_comp_of_map_pullbackLocalSection_topToSections_eq8 below · depth 32 - Local basis of Ω¹_{X/A} for smooth f of relative dimension d
AlgebraicGeometry.Scheme.Hom.exists_basis_kaehler_of_isAffineOpen_of_smoothOfRelativeDimension2 below · depth 32 - Pullback morphism on top differentials, computed on affine charts
AlgebraicGeometry.Scheme.Hom.exists_hom_pullback_topDifferentials_map_pullbackLocalSection_topToSections_eq1 below · depth 32 - Base change isomorphism for top relative differentials, smooth case
AlgebraicGeometry.Scheme.Hom.isIso_of_map_pullbackLocalSection_topToSections_eq_of_isPullback_of_smoothOfRelativeDimension15 below · depth 32 - Smooth of relative dimension d: Ω¹ locally free, ωᵈ invertible
AlgebraicGeometry.Scheme.Hom.isLocallyFreeOfRank_kaehler_and_topDifferentials_of_smoothOfRelativeDimension9 below · depth 32 - Sheafification does not change differentials on affine opens
AlgebraicGeometry.Scheme.Hom.kaehlerToSections_bijective_of_isAffineOpen1 below · depth 32 - Top differentials over an affine open compute as an exterior power
AlgebraicGeometry.Scheme.Hom.topToSections_bijective_of_isAffineOpen4 below · depth 32 - Value of ω at an F-point specialising through y₁
NeronModelInfra.ComponentReading.exists_basis_units_topFormMap_eq_mul_zpow_smul_of_specializes38 below · depth 32 - Stalk birationality along a chart-compatible morphism of readings
NeronModelInfra.ComponentReading.isDomain_and_injective_stalkMap_and_isScalarTower_and_isFractionRing_of_chart_comp_eq4 below · depth 32 - A maximal special point of a glued model comes from one component
NeronModelInfra.MinimalComponentData.exists_ringHom_stalk_chart_comp_eq_pointGenericFibre_of_forall_specializes0 below · depth 32 - Landing a translate in X from a chart on an ω-minimal component
NeronModelInfra.exists_nhds_translation_extension_isOpenImmersion_of_isOpenImmersion_homOfLE_comp_of_isOmegaMinimalRep0 below · depth 32 - Translated point: the chart of τ₀ computes a· x
NeronModelInfra.mul_pointGenericFibre_eq_pointGenericFibre_comp_chart_of_genericFibreRestrict_comp_eq_mul0 below · depth 32 - Restricting a basis of Kähler differentials to a smaller affine open
AlgebraicGeometry.Scheme.Hom.exists_basis_kaehlerDifferential_map_of_isAffineOpen_le0 below · depth 33 - Base change over affine bases: affine charts and sections as pushout
AlgebraicGeometry.Scheme.Hom.isAffineOpen_preimage_and_isPushout_of_isPullback0 below · depth 33 - Top wedge of a Kähler basis frames detᵈ
AlgebraicGeometry.Scheme.Hom.isFrameOn_topToSections_iotaMulti_of_forall_exists_basis4 below · depth 33 - Affine étale-coordinate chart at a point of a smooth scheme over a curve
AlgebraicGeometry.SmoothOfRelativeDimension.exists_isAffineOpen_le_etaleCoordinates_cons_algebraMap_of_point7 below · depth 33 - Local exponent of ω at a closed-fibre point equals T.n
NeronModelInfra.ComponentReading.eq_n_of_forall_topFormMap_eq_mul_zpow_smul16 below · depth 33 - Laurent form of ω at a special point of a reading
NeronModelInfra.ComponentReading.exists_basis_units_int_forall_topFormMap_eq_mul_zpow_smul_of_specializes26 below · depth 33 - Chart independence of reading a top form at an F-point
AlgebraicGeometry.Scheme.Hom.topFormMap_eq_topFormMap_of_specMap_comp_fromSpec_eq7 below · depth 34 - Naturality of `topToSections` under restriction of opens
AlgebraicGeometry.Scheme.Hom.map_topToSections_eq_topToSections_topFormMap0 below · depth 35