Definitions/Def_AlgebraicGeometry_ThetaGroupLaw.lean
Theta points: group law, homotheties, translation automorphisms
Three layers are set up here. First, for a scheme X and M : X.Modules, automorphisms of the object (X,M) of the co-Grothendieck construction of the pullback pseudofunctor Scheme.Modules.fibration are produced from geometric data: autOfIso M e Ο takes an automorphism e : X \cong X together with a trivialisation \varphi : e^{*}M \cong M and returns the automorphism whose base component is e and whose fibre component is \varphi^{-1}. The composition laws for such data are made explicit: transIso builds, from e_{12} = e_1 \circ e_2 (in diagrammatic order) and trivialisations \varphi_1, \varphi_2, the composite e_{12}^{*}M \cong e_1^{*}e_2^{*}M \xrightarrow{e_1^{*}\varphi_2} e_1^{*}M \xrightarrow{\varphi_1} M, using the pullback congruence and composition comparison isomorphisms; reflIso and symmIso do the same for an e equal to the identity and for an inverse pair e' \circ e = \mathrm{id}. The accompanying theorems say that autOfIso turns these into composition, identity and inverse of automorphisms, and that autOfIso M e is injective in \varphi. Second, for N : Y.Modules and a global section r \in \Gamma(Y,\top), homothety N r is the endomorphism acting on each \Gamma(N,U) by multiplication by the restriction r|_U (topRes), with multiplicativity r r' \mapsto the composite of the two homotheties and homothetyIso the resulting automorphism for a unit u \in \Gamma(Y,\top)^{\times}. Third, for a relative group law L on f : A \to \operatorname{Spec} S, a module \mathcal L on A and t : \operatorname{Spec} R \to \operatorname{Spec} S: the translation morphisms of A \times_{\operatorname{Spec} S} \operatorname{Spec} R are shown to be compatible with the structure morphism, to be trivial at the unit point and multiplicative in the point, whence translateIso, an automorphism of the base change; PtGrp L t is the type of points \operatorname{SchemeHomOver} t\, f with the group structure given by L. The set ThetaPt f L π t of pairs (a point x, an isomorphism between the x-translate pullback of \mathrm{pr}_1^{*}\mathcal L and \mathrm{pr}_1^{*}\mathcal L) is given multiplication, unit and inverse by transIso, reflIso, symmIso, together with division and natural and integer powers; ofUnit and ofScalar are the theta points over the unit point whose trivialisation is a homothety by a global unit, respectively by the image of c \in R^{\times} under the ring map baseScalarHom. The map toGrp, sending a theta point to the pair consisting of its associated automorphism of the module pair (in the multiplicative opposite, to account for the order of composition in Aut) and its underlying point, is injective and multiplicative, and the group structure on ThetaPt is transported along it; toGrpHom is the resulting monoid homomorphism, ptHom its second component, thetaGroupR its image subgroup and equivThetaGroupR the induced isomorphism of ThetaPt with that subgroup.
Relation to Mathlib
Mathlib provides the ambient machinery used (pseudofunctors on bicategories and the co-Grothendieck construction, Aut, presheaves of modules, and fibre products of schemes); the pullback pseudofunctor Scheme.Modules.fibration, the relative group law RelativeGroupLaw and the theta points ThetaPt are the project's own notions, Mathlib having no theta group.
Where it is used
These constructions belong to the project's infrastructure for polarised abelian schemes: they realise, over a variable affine base, the group of pairs consisting of a point and a trivialisation of the translate of a module, together with its scalar subgroup and its projection to the group of points. They underlie the Riemann-form and level-pairing definitions used for the torsion of abelian schemes occurring in the study of the associated Galois representations.
References
- D. Mumford, On the equations defining abelian varieties I, Inventiones Mathematicae 1 (1966), 287β354
- D. Mumford, Abelian Varieties, Tata Institute Studies in Mathematics 5, Oxford University Press, 1970
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 372 lines
- 87 declarations
- used in the statements of 33 theorems and imported by 41 proofs
- imports 2 definition modules
Source file: Definitions/Def_AlgebraicGeometry_ThetaGroupLaw.lean
Imported by
- no other definition module
Declarations
- theorem
AlgebraicGeometry.Scheme.Modules.fibration.mapComp_inv_app - theorem
AlgebraicGeometry.Scheme.Modules.fibration.mapId_inv_app - theorem
AlgebraicGeometry.Scheme.Modules.fibration.pullbackCongr_hom_app_eq_eqToHom - theorem
AlgebraicGeometry.Scheme.Modules.fibration.pullbackCongr_inv_app_eq_eqToHom - def
AlgebraicGeometry.Scheme.Modules.fibration.autOfIso - theorem
AlgebraicGeometry.Scheme.Modules.fibration.autOfIso_hom_base - theorem
AlgebraicGeometry.Scheme.Modules.fibration.autOfIso_hom_fiber - def
AlgebraicGeometry.Scheme.Modules.fibration.transIso - theorem
AlgebraicGeometry.Scheme.Modules.fibration.autOfIso_trans - def
AlgebraicGeometry.Scheme.Modules.fibration.reflIso - theorem
AlgebraicGeometry.Scheme.Modules.fibration.autOfIso_refl - def
AlgebraicGeometry.Scheme.Modules.fibration.symmIso - theorem
AlgebraicGeometry.Scheme.Modules.fibration.transIso_symmIso - theorem
AlgebraicGeometry.Scheme.Modules.fibration.autOfIso_symm_trans - theorem
AlgebraicGeometry.Scheme.Modules.fibration.autOfIso_injective - def
AlgebraicGeometry.Scheme.Modules.topRes - theorem
AlgebraicGeometry.Scheme.Modules.map_topRes - theorem
AlgebraicGeometry.Scheme.Modules.topRes_top - theorem
AlgebraicGeometry.Scheme.Modules.topRes_one - theorem
AlgebraicGeometry.Scheme.Modules.topRes_mul - def
AlgebraicGeometry.Scheme.Modules.homothety - theorem
AlgebraicGeometry.Scheme.Modules.homothety_app - theorem
AlgebraicGeometry.Scheme.Modules.homothety_one - theorem
AlgebraicGeometry.Scheme.Modules.homothety_mul - def
AlgebraicGeometry.Scheme.Modules.homothetyIso - def
AlgebraicGeometry.Polarisation.PtGrp - instance
AlgebraicGeometry.Polarisation.PtGrp.instGroup - def
AlgebraicGeometry.Polarisation.prPt - def
AlgebraicGeometry.Polarisation.constPtR - theorem
AlgebraicGeometry.Polarisation.constPtR_coe - theorem
AlgebraicGeometry.Polarisation.translate_fst - theorem
AlgebraicGeometry.Polarisation.translate_over - theorem
AlgebraicGeometry.Polarisation.constPtR_one - theorem
AlgebraicGeometry.Polarisation.constPtR_mul - theorem
AlgebraicGeometry.Polarisation.translate_one - theorem
AlgebraicGeometry.Polarisation.translate_mul - theorem
AlgebraicGeometry.Polarisation.translate_inv_mul - theorem
AlgebraicGeometry.Polarisation.translate_mul_inv - def
AlgebraicGeometry.Polarisation.translateIso - theorem
AlgebraicGeometry.Polarisation.translateIso_hom - theorem
AlgebraicGeometry.Polarisation.translateIso_inv - def
AlgebraicGeometry.Polarisation.baseScalarHom - theorem
AlgebraicGeometry.Polarisation.baseScalarHom_apply - def
AlgebraicGeometry.Polarisation.ThetaPt.mul - def
AlgebraicGeometry.Polarisation.ThetaPt.one - def
AlgebraicGeometry.Polarisation.ThetaPt.inv - theorem
AlgebraicGeometry.Polarisation.ThetaPt.mul_pt - theorem
AlgebraicGeometry.Polarisation.ThetaPt.one_pt - theorem
AlgebraicGeometry.Polarisation.ThetaPt.inv_pt - theorem
AlgebraicGeometry.Polarisation.ThetaPt.div_def - theorem
AlgebraicGeometry.Polarisation.ThetaPt.npow_zero - theorem
AlgebraicGeometry.Polarisation.ThetaPt.npow_succ - theorem
AlgebraicGeometry.Polarisation.ThetaPt.zpow_ofNat - theorem
AlgebraicGeometry.Polarisation.ThetaPt.zpow_negSucc - theorem
AlgebraicGeometry.Polarisation.ThetaPt.mul_iso - theorem
AlgebraicGeometry.Polarisation.ThetaPt.one_iso - def
AlgebraicGeometry.Polarisation.ThetaPt.ofUnit - def
AlgebraicGeometry.Polarisation.ThetaPt.ofScalar - theorem
AlgebraicGeometry.Polarisation.ThetaPt.ofUnit_pt - theorem
AlgebraicGeometry.Polarisation.ThetaPt.ofScalar_pt - theorem
AlgebraicGeometry.Polarisation.ThetaPt.ofUnit_iso - theorem
AlgebraicGeometry.Polarisation.ThetaPt.ofScalar_eq - def
AlgebraicGeometry.Polarisation.ThetaPt.toAut - theorem
AlgebraicGeometry.Polarisation.ThetaPt.toAut_mul - theorem
AlgebraicGeometry.Polarisation.ThetaPt.toAut_one - theorem
AlgebraicGeometry.Polarisation.ThetaPt.toAut_inv_trans - def
AlgebraicGeometry.Polarisation.ThetaPt.toGrp - theorem
AlgebraicGeometry.Polarisation.ThetaPt.eq_of_toGrp_eq - theorem
AlgebraicGeometry.Polarisation.ThetaPt.toGrp_injective - theorem
AlgebraicGeometry.Polarisation.ThetaPt.toGrp_mul - theorem
AlgebraicGeometry.Polarisation.ThetaPt.toGrp_one - theorem
AlgebraicGeometry.Polarisation.ThetaPt.toGrp_inv - theorem
AlgebraicGeometry.Polarisation.ThetaPt.toGrp_div - theorem
AlgebraicGeometry.Polarisation.ThetaPt.toGrp_npow - theorem
AlgebraicGeometry.Polarisation.ThetaPt.toGrp_zpow - instance
AlgebraicGeometry.Polarisation.ThetaPt.instGroup - def
AlgebraicGeometry.Polarisation.ThetaPt.toGrpHom - def
AlgebraicGeometry.Polarisation.ThetaPt.ptHom - theorem
AlgebraicGeometry.Polarisation.ThetaPt.ptHom_apply - def
AlgebraicGeometry.Polarisation.ThetaPt.thetaGroupR - def
AlgebraicGeometry.Polarisation.ThetaPt.equivThetaGroupR
Source
import Definitions.Def_AlgebraicGeometry_ThetaGroupAction import Definitions.Def_AlgebraicGeometry_ThetaGroup set_option autoImplicit false noncomputable section open CategoryTheory CategoryTheory.Limits CategoryTheory.Bicategory AlgebraicGeometry NeronModelInfra GoodReductionJacobian TopologicalSpace Opposite namespace AlgebraicGeometry.Scheme.Modules.fibration theorem mapComp_inv_app {X Y Z : Scheme.{0}} (a : X βΆ Y) (b : Y βΆ Z) (M : Z.Modules) : (fibration.mapComp b.op.toLoc a.op.toLoc).inv.toNatTrans.app M = (pullbackComp a b).hom.app M := by simp [fibration, Pseudofunctor.comp_mapComp] exact Category.id_comp _ theorem mapId_inv_app (X : Scheme.{0}) (N : X.Modules) : (fibration.mapId β¨Opposite.op Xβ©).inv.toNatTrans.app N = (pullbackId X).inv.app N := by simp [fibration, Pseudofunctor.comp_mapId] exact Category.id_comp _ theorem pullbackCongr_hom_app_eq_eqToHom {X Y : Scheme.{0}} {a b : X βΆ Y} (h : a = b) (M : Y.Modules) : (pullbackCongr h).hom.app M = eqToHom (by rw [h]) := by subst h; simp [pullbackCongr] theorem pullbackCongr_inv_app_eq_eqToHom {X Y : Scheme.{0}} {a b : X βΆ Y} (h : a = b) (M : Y.Modules) : (pullbackCongr h).inv.app M = eqToHom (by rw [h]) := by subst h; simp [pullbackCongr] variable {X : Scheme.{0}} (M : X.Modules) def autOfIso (e : X β X) (Ο : (Scheme.Modules.pullback e.hom).obj M β M) : Aut (RiemannForm.modulePair (A := X) M) := Pseudofunctor.CoGrothendieck.isoMk (X := RiemannForm.modulePair M) (Y := RiemannForm.modulePair M) e Ο.symm @[simp] theorem autOfIso_hom_base (e : X β X) (Ο : (Scheme.Modules.pullback e.hom).obj M β M) : (autOfIso M e Ο).hom.base = e.hom := rfl @[simp] theorem autOfIso_hom_fiber (e : X β X) (Ο : (Scheme.Modules.pullback e.hom).obj M β M) : (autOfIso M e Ο).hom.fiber = Ο.inv := rfl def transIso (eβ eβ eββ : X β X) (h : eββ.hom = eβ.hom β« eβ.hom) (Οβ : (Scheme.Modules.pullback eβ.hom).obj M β M) (Οβ : (Scheme.Modules.pullback eβ.hom).obj M β M) : (Scheme.Modules.pullback eββ.hom).obj M β M := (pullbackCongr h).app M βͺβ« ((pullbackComp eβ.hom eβ.hom).app M).symm βͺβ« (Scheme.Modules.pullback eβ.hom).mapIso Οβ βͺβ« Οβ theorem autOfIso_trans (eβ eβ eββ : X β X) (h : eββ.hom = eβ.hom β« eβ.hom) (Οβ : (Scheme.Modules.pullback eβ.hom).obj M β M) (Οβ : (Scheme.Modules.pullback eβ.hom).obj M β M) : autOfIso M eββ (transIso M eβ eβ eββ h Οβ Οβ) = autOfIso M eβ Οβ βͺβ« autOfIso M eβ Οβ := by apply Iso.ext refine Pseudofunctor.CoGrothendieck.Hom.ext _ _ h ?_ simp only [Iso.trans_hom, Pseudofunctor.CoGrothendieck.categoryStruct_comp_fiber, autOfIso_hom_fiber, autOfIso_hom_base, RiemannForm.modulePair_fiber, fibration_map_toFunctor, mapComp_inv_app] simp only [transIso, Iso.trans_inv, Iso.symm_inv, Functor.mapIso_inv, Iso.app_inv, Iso.app_hom, Category.assoc, pullbackCongr_inv_app_eq_eqToHom] rfl def reflIso (e : X β X) (h : e.hom = π X) : (Scheme.Modules.pullback e.hom).obj M β M := (pullbackCongr h).app M βͺβ« (pullbackId X).app M theorem autOfIso_refl (e : X β X) (h : e.hom = π X) : autOfIso M e (reflIso M e h) = Iso.refl _ := by apply Iso.ext refine Pseudofunctor.CoGrothendieck.Hom.ext _ _ h ?_ simp only [Iso.refl_hom, Pseudofunctor.CoGrothendieck.categoryStruct_id_fiber, autOfIso_hom_fiber, RiemannForm.modulePair_fiber, RiemannForm.modulePair_base, mapId_inv_app] simp only [reflIso, Iso.trans_inv, Iso.app_inv, pullbackCongr_inv_app_eq_eqToHom] rfl def symmIso (e e' : X β X) (h : e'.hom β« e.hom = π X) (Ο : (Scheme.Modules.pullback e.hom).obj M β M) : (Scheme.Modules.pullback e'.hom).obj M β M := ((Scheme.Modules.pullback e'.hom).mapIso Ο).symm βͺβ« (pullbackComp e'.hom e.hom).app M βͺβ« (pullbackCongr h).app M βͺβ« (pullbackId X).app M theorem transIso_symmIso (e e' : X β X) (h : e'.hom β« e.hom = π X) (Ο : (Scheme.Modules.pullback e.hom).obj M β M) : transIso M e' e (Iso.refl X) h.symm (symmIso M e e' h Ο) Ο = reflIso M (Iso.refl X) rfl := by ext : 1 simp [transIso, symmIso, reflIso, pullbackCongr_hom_app_eq_eqToHom] theorem autOfIso_symm_trans (e e' : X β X) (h : e'.hom β« e.hom = π X) (Ο : (Scheme.Modules.pullback e.hom).obj M β M) : autOfIso M e' (symmIso M e e' h Ο) βͺβ« autOfIso M e Ο = Iso.refl _ := by rw [β autOfIso_trans M e' e (Iso.refl X) h.symm (symmIso M e e' h Ο) Ο, transIso_symmIso, autOfIso_refl] theorem autOfIso_injective (e : X β X) (Ο Ο' : (Scheme.Modules.pullback e.hom).obj M β M) (h : autOfIso M e Ο = autOfIso M e Ο') : Ο = Ο' := by have h1 := Pseudofunctor.CoGrothendieck.Hom.congr (congrArg Iso.hom h) simp only [autOfIso_hom_fiber, autOfIso_hom_base, eqToHom_refl, Category.comp_id] at h1 have h2 : Ο.symm = Ο'.symm := Iso.ext h1 simpa using congrArg Iso.symm h2 end AlgebraicGeometry.Scheme.Modules.fibration namespace AlgebraicGeometry.Scheme.Modules section Homothety variable {Y : Scheme.{0}} (N : Y.Modules) def topRes (r : Ξ(Y, β€)) (U : Y.Opens) : Ξ(Y, U) := Y.presheaf.map (homOfLE (le_top (a := U))).op r theorem map_topRes (r : Ξ(Y, β€)) {U V : Y.Opens} (i : V βΆ U) : Y.presheaf.map i.op (topRes r U) = topRes r V := by change (Y.presheaf.map _ β« Y.presheaf.map i.op) r = _ rw [β Functor.map_comp] rfl theorem topRes_top (r : Ξ(Y, β€)) : topRes r β€ = r := by change Y.presheaf.map _ r = r have : (homOfLE (le_top (a := (β€ : Y.Opens)))).op = π _ := rfl rw [this, Y.presheaf.map_id]; rfl theorem topRes_one (U : Y.Opens) : topRes (1 : Ξ(Y, β€)) U = 1 := map_one _ theorem topRes_mul (r r' : Ξ(Y, β€)) (U : Y.Opens) : topRes (r * r') U = topRes r U * topRes r' U := map_mul _ _ _ def homothety (r : Ξ(Y, β€)) : N βΆ N := β¨PresheafOfModules.homMk { app := fun U => AddCommGrpCat.ofHom (DistribSMul.toAddMonoidHom Ξ(N, U.unop) (topRes r U.unop)) naturality := fun {U V} i => by obtain β¨iβ© := i ext s change topRes r (unop V) β’ (show Ξ(N, unop V) from N.presheaf.map i.op s) = N.presheaf.map i.op (topRes r (unop U) β’ (show Ξ(N, unop U) from s)) rw [Scheme.Modules.map_smul, map_topRes] } (fun U a m => by change topRes r U.unop β’ ((show Ξ(Y, U.unop) from a) β’ m) = (show Ξ(Y, U.unop) from a) β’ (topRes r U.unop β’ m) exact smul_comm _ _ _)β© @[simp] theorem homothety_app (r : Ξ(Y, β€)) (U : Y.Opens) (s : Ξ(N, U)) : (homothety N r).app U s = topRes r U β’ s := rfl theorem homothety_one : homothety N 1 = π N := by ext U s rw [homothety_app, topRes_one, one_smul, Scheme.Modules.Hom.id_app]; rfl theorem homothety_mul (r r' : Ξ(Y, β€)) : homothety N (r * r') = homothety N r' β« homothety N r := by ext U s rw [homothety_app, topRes_mul, mul_smul, Scheme.Modules.Hom.comp_app]; rfl def homothetyIso (u : Ξ(Y, β€)Λ£) : N β N where hom := homothety N (u : Ξ(Y, β€)) inv := homothety N (uβ»ΒΉ : Ξ(Y, β€)Λ£) hom_inv_id := by rw [β homothety_mul, Units.inv_mul, homothety_one] inv_hom_id := by rw [β homothety_mul, Units.mul_inv, homothety_one] end Homothety end AlgebraicGeometry.Scheme.Modules namespace AlgebraicGeometry.Polarisation set_option linter.unusedVariables false in def PtGrp {S : Type} [CommRing S] {A : Scheme.{0}} {f : A βΆ Spec (CommRingCat.of S)} (L : RelativeGroupLaw S f) {T : Scheme.{0}} (t : T βΆ Spec (CommRingCat.of S)) : Type := SchemeHomOver t f instance PtGrp.instGroup {S : Type} [CommRing S] {A : Scheme.{0}} {f : A βΆ Spec (CommRingCat.of S)} (L : RelativeGroupLaw S f) {T : Scheme.{0}} (t : T βΆ Spec (CommRingCat.of S)) : Group (PtGrp L t) := L.pointGroup t variable {S : Type} [CommRing S] {A : Scheme.{0}} (f : A βΆ Spec (CommRingCat.of S)) (L : RelativeGroupLaw S f) variable {R : Type} [CommRing R] (t : Spec (CommRingCat.of R) βΆ Spec (CommRingCat.of S)) def prPt : SchemeHomOver (pullback.snd f t β« t) f := β¨pullback.fst f t, pullback.conditionβ© def constPtR (x : SchemeHomOver t f) : SchemeHomOver (pullback.snd f t β« t) f := schemeHomOverComp (pullback.snd f t) rfl x theorem constPtR_coe (x : SchemeHomOver t f) : (constPtR f t x).1 = pullback.snd f t β« x.1 := rfl theorem translate_fst (x : SchemeHomOver t f) : translate f L t x β« pullback.fst f t = (L.mul _ (prPt f t) (constPtR f t x)).1 := pullback.lift_fst _ _ _ theorem translate_over (x : SchemeHomOver t f) : translate f L t x β« (pullback.snd f t β« t) = pullback.snd f t β« t := by rw [β Category.assoc, translate_snd] theorem constPtR_one : constPtR f t (L.one t) = L.one _ := L.one_natural t _ (pullback.snd f t) rfl theorem constPtR_mul (x y : SchemeHomOver t f) : constPtR f t (L.mul t x y) = L.mul _ (constPtR f t x) (constPtR f t y) := L.mul_natural t _ (pullback.snd f t) rfl x y theorem translate_one : translate f L t (L.one t) = π (pullback f t) := by apply pullback.hom_ext Β· rw [translate_fst, constPtR_one, L.mul_one, Category.id_comp]; rfl Β· rw [translate_snd, Category.id_comp] theorem translate_mul (x y : SchemeHomOver t f) : translate f L t (L.mul t x y) = translate f L t x β« translate f L t y := by apply pullback.hom_ext Β· rw [translate_fst, Category.assoc, translate_fst, constPtR_mul] have hx := translate_over f L t x have e1 : translate f L t x β« (L.mul _ (prPt f t) (constPtR f t y)).1 = (schemeHomOverComp (translate f L t x) hx (L.mul _ (prPt f t) (constPtR f t y))).1 := rfl have e2 : schemeHomOverComp (translate f L t x) hx (prPt f t) = L.mul _ (prPt f t) (constPtR f t x) := Subtype.ext (translate_fst f L t x) have e3 : schemeHomOverComp (translate f L t x) hx (constPtR f t y) = constPtR f t y := Subtype.ext (show translate f L t x β« (pullback.snd f t β« y.1) = pullback.snd f t β« y.1 by rw [β Category.assoc, translate_snd]) rw [e1, L.mul_natural, e2, e3, L.mul_assoc] Β· rw [translate_snd, Category.assoc, translate_snd, translate_snd] theorem translate_inv_mul (x : SchemeHomOver t f) : translate f L t (L.inv t x) β« translate f L t x = π (pullback f t) := by rw [β translate_mul, L.inv_mul_cancel, translate_one] theorem translate_mul_inv (x : SchemeHomOver t f) : translate f L t x β« translate f L t (L.inv t x) = π (pullback f t) := by rw [β translate_mul, L.mul_inv_cancel, translate_one] def translateIso (x : SchemeHomOver t f) : pullback f t β pullback f t where hom := translate f L t x inv := translate f L t (L.inv t x) hom_inv_id := translate_mul_inv f L t x inv_hom_id := translate_inv_mul f L t x @[simp] theorem translateIso_hom (x : SchemeHomOver t f) : (translateIso f L t x).hom = translate f L t x := rfl @[simp] theorem translateIso_inv (x : SchemeHomOver t f) : (translateIso f L t x).inv = translate f L t (L.inv t x) := rfl def baseScalarHom : R β+* Ξ(pullback f t, β€) := (pullback.snd f t).appTop.hom.comp (Scheme.ΞSpecIso (CommRingCat.of R)).inv.hom @[simp] theorem baseScalarHom_apply (r : R) : baseScalarHom f t r = baseScalar f t r := rfl namespace ThetaPt variable {f} {L} {π : A.Modules} {t} def mul (ΞΈ ΞΈ' : ThetaPt f L π t) : ThetaPt f L π t where pt := L.mul t ΞΈ.pt ΞΈ'.pt iso := Scheme.Modules.fibration.transIso _ (translateIso f L t ΞΈ.pt) (translateIso f L t ΞΈ'.pt) (translateIso f L t (L.mul t ΞΈ.pt ΞΈ'.pt)) (translate_mul f L t ΞΈ.pt ΞΈ'.pt) ΞΈ.iso ΞΈ'.iso def one : ThetaPt f L π t where pt := L.one t iso := Scheme.Modules.fibration.reflIso _ (translateIso f L t (L.one t)) (translate_one f L t) def inv (ΞΈ : ThetaPt f L π t) : ThetaPt f L π t where pt := L.inv t ΞΈ.pt iso := Scheme.Modules.fibration.symmIso _ (translateIso f L t ΞΈ.pt) (translateIso f L t (L.inv t ΞΈ.pt)) (translate_inv_mul f L t ΞΈ.pt) ΞΈ.iso instance : Mul (ThetaPt f L π t) := β¨mulβ© instance : One (ThetaPt f L π t) := β¨oneβ© instance : Inv (ThetaPt f L π t) := β¨invβ© instance : Div (ThetaPt f L π t) := β¨fun ΞΈ ΞΈ' => ΞΈ * ΞΈ'β»ΒΉβ© instance : Pow (ThetaPt f L π t) β := β¨fun ΞΈ n => npowRec n ΞΈβ© instance : Pow (ThetaPt f L π t) β€ := β¨fun ΞΈ n => zpowRec npowRec n ΞΈβ© @[simp] theorem mul_pt (ΞΈ ΞΈ' : ThetaPt f L π t) : (ΞΈ * ΞΈ').pt = L.mul t ΞΈ.pt ΞΈ'.pt := rfl @[simp] theorem one_pt : (1 : ThetaPt f L π t).pt = L.one t := rfl @[simp] theorem inv_pt (ΞΈ : ThetaPt f L π t) : (ΞΈβ»ΒΉ).pt = L.inv t ΞΈ.pt := rfl theorem div_def (ΞΈ ΞΈ' : ThetaPt f L π t) : ΞΈ / ΞΈ' = ΞΈ * ΞΈ'β»ΒΉ := rfl theorem npow_zero (ΞΈ : ThetaPt f L π t) : ΞΈ ^ (0 : β) = 1 := rfl theorem npow_succ (ΞΈ : ThetaPt f L π t) (n : β) : ΞΈ ^ (n + 1) = ΞΈ ^ n * ΞΈ := rfl theorem zpow_ofNat (ΞΈ : ThetaPt f L π t) (n : β) : ΞΈ ^ (n : β€) = ΞΈ ^ n := rfl theorem zpow_negSucc (ΞΈ : ThetaPt f L π t) (n : β) : ΞΈ ^ (Int.negSucc n) = (ΞΈ ^ (n + 1))β»ΒΉ := rfl theorem mul_iso (ΞΈ ΞΈ' : ThetaPt f L π t) : (ΞΈ * ΞΈ').iso = (Scheme.Modules.pullbackCongr (translate_mul f L t ΞΈ.pt ΞΈ'.pt)).app _ βͺβ« ((Scheme.Modules.pullbackComp (translate f L t ΞΈ.pt) (translate f L t ΞΈ'.pt)).app _).symm βͺβ« (Scheme.Modules.pullback (translate f L t ΞΈ.pt)).mapIso ΞΈ'.iso βͺβ« ΞΈ.iso := rfl theorem one_iso : (1 : ThetaPt f L π t).iso = (Scheme.Modules.pullbackCongr (translate_one f L t)).app _ βͺβ« (Scheme.Modules.pullbackId _).app _ := rfl def ofUnit (u : Ξ(pullback f t, β€)Λ£) : ThetaPt f L π t where pt := L.one t iso := Scheme.Modules.fibration.reflIso _ (translateIso f L t (L.one t)) (translate_one f L t) βͺβ« Scheme.Modules.homothetyIso _ u def ofScalar (c : RΛ£) : ThetaPt f L π t := ofUnit (Units.map (baseScalarHom f t).toMonoidHom c) @[simp] theorem ofUnit_pt (u : Ξ(pullback f t, β€)Λ£) : (ofUnit u : ThetaPt f L π t).pt = L.one t := rfl @[simp] theorem ofScalar_pt (c : RΛ£) : (ofScalar c : ThetaPt f L π t).pt = L.one t := rfl theorem ofUnit_iso (u : Ξ(pullback f t, β€)Λ£) : (ofUnit u : ThetaPt f L π t).iso = ((Scheme.Modules.pullbackCongr (translate_one f L t)).app _ βͺβ« (Scheme.Modules.pullbackId _).app _) βͺβ« Scheme.Modules.homothetyIso _ u := rfl theorem ofScalar_eq (c : RΛ£) : (ofScalar c : ThetaPt f L π t) = ofUnit (Units.map (baseScalarHom f t).toMonoidHom c) := rfl def toAut (ΞΈ : ThetaPt f L π t) : Aut (RiemannForm.modulePair (A := pullback f t) ((Scheme.Modules.pullback (pullback.fst f t)).obj π)) := Scheme.Modules.fibration.autOfIso _ (translateIso f L t ΞΈ.pt) ΞΈ.iso theorem toAut_mul (ΞΈ ΞΈ' : ThetaPt f L π t) : toAut (ΞΈ * ΞΈ') = toAut ΞΈ βͺβ« toAut ΞΈ' := Scheme.Modules.fibration.autOfIso_trans _ (translateIso f L t ΞΈ.pt) (translateIso f L t ΞΈ'.pt) (translateIso f L t (L.mul t ΞΈ.pt ΞΈ'.pt)) (translate_mul f L t ΞΈ.pt ΞΈ'.pt) ΞΈ.iso ΞΈ'.iso theorem toAut_one : toAut (1 : ThetaPt f L π t) = Iso.refl _ := Scheme.Modules.fibration.autOfIso_refl _ _ _ theorem toAut_inv_trans (ΞΈ : ThetaPt f L π t) : toAut ΞΈβ»ΒΉ βͺβ« toAut ΞΈ = Iso.refl _ := Scheme.Modules.fibration.autOfIso_symm_trans _ (translateIso f L t ΞΈ.pt) (translateIso f L t (L.inv t ΞΈ.pt)) (translate_inv_mul f L t ΞΈ.pt) ΞΈ.iso def toGrp (ΞΈ : ThetaPt f L π t) : (Aut (RiemannForm.modulePair (A := pullback f t) ((Scheme.Modules.pullback (pullback.fst f t)).obj π)))α΅α΅α΅ Γ PtGrp L t := (MulOpposite.op (toAut ΞΈ), ΞΈ.pt) theorem eq_of_toGrp_eq (ΞΈ ΞΈ' : ThetaPt f L π t) (h : toGrp ΞΈ = toGrp ΞΈ') : ΞΈ = ΞΈ' := by obtain β¨x, Οβ© := ΞΈ obtain β¨x', Ο'β© := ΞΈ' obtain β¨h1, h2β© := Prod.ext_iff.mp h change x = x' at h2 subst h2 have h3 : Ο = Ο' := Scheme.Modules.fibration.autOfIso_injective _ (translateIso f L t x) Ο Ο' (MulOpposite.op_injective h1) subst h3 rfl theorem toGrp_injective : Function.Injective (toGrp (f := f) (L := L) (π := π) (t := t)) := fun ΞΈ ΞΈ' h => eq_of_toGrp_eq ΞΈ ΞΈ' h theorem toGrp_mul (ΞΈ ΞΈ' : ThetaPt f L π t) : toGrp (ΞΈ * ΞΈ') = toGrp ΞΈ * toGrp ΞΈ' := by refine Prod.ext ?_ rfl show MulOpposite.op (toAut (ΞΈ * ΞΈ')) = MulOpposite.op (toAut ΞΈ) * MulOpposite.op (toAut ΞΈ') rw [β MulOpposite.op_mul, toAut_mul, Aut.Aut_mul_def] theorem toGrp_one : toGrp (1 : ThetaPt f L π t) = 1 := by refine Prod.ext ?_ rfl show MulOpposite.op (toAut 1) = 1 rw [toAut_one]; rfl theorem toGrp_inv (ΞΈ : ThetaPt f L π t) : toGrp ΞΈβ»ΒΉ = (toGrp ΞΈ)β»ΒΉ := by refine Prod.ext ?_ rfl show MulOpposite.op (toAut ΞΈβ»ΒΉ) = (MulOpposite.op (toAut ΞΈ))β»ΒΉ rw [β MulOpposite.op_inv] congr 1 symm apply inv_eq_of_mul_eq_one_right rw [Aut.Aut_mul_def] exact toAut_inv_trans ΞΈ theorem toGrp_div (ΞΈ ΞΈ' : ThetaPt f L π t) : toGrp (ΞΈ / ΞΈ') = toGrp ΞΈ / toGrp ΞΈ' := by rw [div_def, toGrp_mul, toGrp_inv, div_eq_mul_inv] theorem toGrp_npow (ΞΈ : ThetaPt f L π t) (n : β) : toGrp (ΞΈ ^ n) = toGrp ΞΈ ^ n := by induction n with | zero => rw [npow_zero, toGrp_one, pow_zero] | succ n ih => rw [npow_succ, toGrp_mul, ih, pow_succ] theorem toGrp_zpow (ΞΈ : ThetaPt f L π t) (n : β€) : toGrp (ΞΈ ^ n) = toGrp ΞΈ ^ n := by cases n with | ofNat n => rw [Int.ofNat_eq_natCast, zpow_ofNat, toGrp_npow, zpow_natCast] | negSucc n => rw [zpow_negSucc, toGrp_inv, toGrp_npow, _root_.zpow_negSucc] instance instGroup : Group (ThetaPt f L π t) := Function.Injective.group toGrp toGrp_injective toGrp_one toGrp_mul toGrp_inv toGrp_div toGrp_npow toGrp_zpow def toGrpHom : ThetaPt f L π t β* (Aut (RiemannForm.modulePair (A := pullback f t) ((Scheme.Modules.pullback (pullback.fst f t)).obj π)))α΅α΅α΅ Γ PtGrp L t where toFun := toGrp map_one' := toGrp_one map_mul' := toGrp_mul def ptHom : ThetaPt f L π t β* PtGrp L t := (MonoidHom.snd _ _).comp toGrpHom @[simp] theorem ptHom_apply (ΞΈ : ThetaPt f L π t) : ptHom ΞΈ = ΞΈ.pt := rfl def thetaGroupR : Subgroup ((Aut (RiemannForm.modulePair (A := pullback f t) ((Scheme.Modules.pullback (pullback.fst f t)).obj π)))α΅α΅α΅ Γ PtGrp L t) := (toGrpHom (f := f) (L := L) (π := π) (t := t)).range def equivThetaGroupR : ThetaPt f L π t β* thetaGroupR (f := f) (L := L) (π := π) (t := t) := MonoidHom.ofInjective toGrp_injective end ThetaPt end AlgebraicGeometry.Polarisation end
Statements phrased using this module (33)
- SchrΓΆdinger action of Οα΅ΞΈ_hΞ·_Ο on a frame
AlgebraicGeometry.Polarisation.SchrodingerFrame.act_ofScalar_mul_lift_mul_dualLift_sigma3 below Β· depth 31 - Additivity and base-scalar linearity of the theta action
AlgebraicGeometry.Polarisation.ThetaPt.act_add_and_act_baseScalar_smul0 below Β· depth 31 - Base change of theta points along a cartesian square
AlgebraicGeometry.Polarisation.ThetaPt.exists_monoidHom_pt_comp_eq_act_eq_of_isPullback1 below Β· depth 31 - Heisenberg level lifts give SchrΓΆdinger frames Zariski-locally
AlgebraicGeometry.PolarisedAbelianScheme.exists_cover_schrodingerFrame_of_levelLifts1,119 below Β· depth 31 - Γtale absorption of SchrΓΆdinger frames along a basic-open cover
AlgebraicGeometry.PolarisedAbelianScheme.exists_faithfullyFlat_etale_schrodingerFrame_of_cover10 below Β· depth 31 - Γtale-local Heisenberg lifts for rooted symmetric polarisations of type Ξ΄
AlgebraicGeometry.PolarisedAbelianScheme.exists_levelLifts_of_rootedSymmetricOfType1,312 below Β· depth 31 - Multiplicativity of the action of theta points on sections
AlgebraicGeometry.Polarisation.ThetaPt.mul_act1 below Β· depth 32 - Scalar theta points act by the corresponding base scalar
AlgebraicGeometry.Polarisation.ThetaPt.ofScalar_act1 below Β· depth 32 - The identity theta point acts trivially on sections
AlgebraicGeometry.Polarisation.ThetaPt.one_act1 below Β· depth 32 - Mumford's commutator pairing from theta points over a point group
AlgebraicGeometry.PolarisedAbelianScheme.exists_commutatorPairing_of_thetaPt62 below Β· depth 32 - SchrΓΆdinger frames on a basic-open cover from level lifts
AlgebraicGeometry.PolarisedAbelianScheme.exists_cover_schrodingerFrame_of_levelLifts_of_isSectionBasis1,115 below Β· depth 32 - Theta points over a kernel point, Zariski-locally on the base
AlgebraicGeometry.PolarisedAbelianScheme.exists_cover_thetaPt_pt_eq_of_memKernel7 below Β· depth 32 - Γtale-local Heisenberg level lifting of theta points
AlgebraicGeometry.PolarisedAbelianScheme.exists_levelLifts_of_commutatorPairing_eq_pow1,124 below Β· depth 32 - Level lifts over a finite product of test rings
AlgebraicGeometry.PolarisedAbelianScheme.exists_levelLifts_pi_of_forall_exists_levelLifts16 below Β· depth 32 - Zariski-local rank-d section basis after base change
AlgebraicGeometry.PolarisedAbelianScheme.exists_not_mem_forall_exists_isSectionBasis_sections_pullback_of_algebra1,096 below Β· depth 32 - Non-degeneracy of the commutator pairing on each idempotent piece
AlgebraicGeometry.PolarisedAbelianScheme.forall_eq_zero_of_commutatorPairing_of_rootedSymmetricOfType947 below Β· depth 32 - Base change of a SchrΓΆdinger frame along Ο : R β R'
AlgebraicGeometry.PolarisedAbelianScheme.nonempty_schrodingerFrame_comp_of_schrodingerFrame1,110 below Β· depth 32 - Extensionality of theta points with equal underlying section
AlgebraicGeometry.PolarisedAbelianScheme.thetaPt_eq_of_pt_eq_of_forall_act_eq3 below Β· depth 32 - Isotropic theta points lift homomorphically over an Γ©tale cover
AlgebraicGeometry.PolarisedAbelianScheme.exists_faithfullyFlat_etale_levelLift_of_forall_act_comm1,115 below Β· depth 33 - Typed theta points over a geometric point with pairing ΞΆ^B
AlgebraicGeometry.PolarisedAbelianScheme.exists_isAlgClosed_typePoints_thetaPt_of_idempotent_ne_zero8 below Β· depth 33 - Theta points commute up to a unit of the base
AlgebraicGeometry.PolarisedAbelianScheme.exists_units_forall_thetaPt_act_act_eq_smul_act_act56 below Β· depth 33 - Theta points at the identity act by a unit scalar
AlgebraicGeometry.PolarisedAbelianScheme.exists_units_forall_thetaPt_act_eq_smul_of_pt_eq_one53 below Β· depth 33 - Section bases persist under base change of a polarisation
AlgebraicGeometry.PolarisedAbelianScheme.isSectionBasis_app_pullbackLocalSection_of_isSectionBasis1,096 below Β· depth 33 - Central theta points lie over the identity section
AlgebraicGeometry.PolarisedAbelianScheme.thetaPt_pt_eq_one_of_forall_act_comm_of_isAlgClosed945 below Β· depth 33 - Transport of theta points along a ring map of test rings
AlgebraicGeometry.Polarisation.ThetaPt.exists_comparison_monoidHom_of_ringHom2 below Β· depth 34 - Enlarging a geometric point to realise the principal root
AlgebraicGeometry.PolarisedAbelianScheme.exists_isAlgClosed_principalRoot_thetaPt_of_rootedSymmetricOfType18 below Β· depth 34 - A symmetric 2-cocycle from commuting theta points
AlgebraicGeometry.PolarisedAbelianScheme.exists_symmCocycle_forall_mul_act_eq_smul_act_of_forall_act_comm62 below Β· depth 34 - Nonvanishing of a+b in K for a principal root
AlgebraicGeometry.PolarisedAbelianScheme.natCast_add_ne_zero_of_principalRoot_of_rootedSymmetricOfType_of_isAlgClosed388 below Β· depth 34 - Theta points commuting with K(L) lie over the identity
AlgebraicGeometry.PolarisedAbelianScheme.thetaPt_pt_eq_one_of_forall_act_comm_of_principalRoot_of_ne_zero923 below Β· depth 34 - Theta points over a field as Mumford's theta group
AlgebraicGeometry.Polarisation.ThetaPt.exists_bijective_thetaGroup_antiHom_of_compatible3 below Β· depth 35 - Kernel membership: t-points of A versus points of A_K
AlgebraicGeometry.Polarisation.exists_comp_fst_eq_and_memKernel_pullback_iff_memKernel_comp_fst5 below Β· depth 35 - Kernel points over an algebraically closed base point do not grow
AlgebraicGeometry.PolarisedAbelianScheme.exists_eq_comp_of_memKernel_of_isOfType_of_isAlgClosed1 below Β· depth 35 - Nonzero n-torsion K[Ξ΅]-point at the origin
GoodReductionJacobian.AbelianSchemePropertyBundle.exists_nsmul_eq_one_dualNumber_ne_one_of_natCast_eq_zero11 below Β· depth 35