Definitions/Def_WeierstrassCurve_ProjModel.lean
Proj model of a Weierstrass curve; relative group laws
For a commutative ring R and V : \mathtt{WeierstrassCurve.Projective}\ R, the homogeneous cubic V.\mathtt{polynomial} in R[X_0,X_1,X_2] generates an ideal that is homogeneous for the standard grading (span_polynomial_isHomogeneousCR, from homogeneity of degree 3); projModelHomogeneousIdealCR packages it as a homogeneous ideal, ProjModelRingCR is the quotient \mathrm{MvPolynomial}(\mathrm{Fin}\ 3, R)/(V.\mathtt{polynomial}), projModelGradingCR is the induced grading by images of the homogeneous pieces, projModelCR is its Proj, and projModelStrCR is the structure morphism to \operatorname{Spec} R, namely Proj.toSpecZero followed by the map induced by R \to (\text{degree-}0\text{ part}).
Group laws are recorded in functor-of-points form. For a test scheme t : T \to \operatorname{Spec} R, relative points are the morphisms to A over \operatorname{Spec} R, and schemeHomOverComp is the transition map along \psi : T' \to T with \psi \circ t = t' (composition with \psi). A RelativeGroupLaw R f, for f : A \to \operatorname{Spec} R, is data: a multiplication, unit and inverse on every relative point set, with associativity, both unit laws, the left inverse law, and naturality of multiplication in the test scheme. Naturality of the unit and of the iterated powers nsmul is derived; pointGroup exhibits each point set as a group; IsTorsionPoint t n x says the n-th power of x is the unit, torsionSubset the set of these, stable under transition maps. On the scheme level, schemeNsmul n is the endomorphism of A underlying the n-th power of the identity point, schemeKer n is its pullback against the unit section over \operatorname{Spec} R, with structure morphism schemeKerStr.
Finally galTwist twists an F-point by \sigma \in \mathrm{Aut}_R(F) by precomposing with \operatorname{Spec} \sigma, and IsPointsEval V G ev is the predicate on a given family of bijections ev from F-points of the Proj model to (V_{/F})-affine points asserting that ev carries the relative multiplication to addition of affine points and intertwines galTwist with Point.map. Separately, ext_of_isSchemeTheoreticallyDominant_of_isSeparated states that two morphisms f, g : X \to Y are equal as soon as they agree after composing with a separated s : Y \to Z and after precomposing with a scheme-theoretically dominant \iota : W \to X.
Relation to Mathlib
Mathlib supplies WeierstrassCurve.Projective with its homogeneous cubic, the affine point group, and Proj of a graded algebra; the Proj model of the Weierstrass cubic, the relative (functor-of-points) group-law structure with its power maps and kernel schemes, and the points-evaluation predicate are the project's own, as is the extension-of-morphisms lemma for dominant source and separated target.
Where it is used
This vocabulary supports the study of finite flat models of the torsion of the Frey curve at primes of good reduction, where the group of field-valued points of a Weierstrass curve must be compared, Galois-equivariantly, with the relative points of an integral model and with kernels of multiplication by n.
References
- J. H. Silverman, The Arithmetic of Elliptic Curves, 2nd ed., Graduate Texts in Mathematics 106, Springer, 2009, Chapters II–III
- S. Bosch, W. Lütkebohmert and M. Raynaud, Néron Models, Ergebnisse der Mathematik und ihrer Grenzgebiete 21, Springer, 1990
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 346 lines
- 45 declarations
- used in the statements of 300 theorems and imported by 350 proofs
- imports 3 definition modules
Source file: Definitions/Def_WeierstrassCurve_ProjModel.lean
Imports
Imported by
Def_WeierstrassCurve_DrinfeldBasisGlobalDef_WeierstrassCurve_DrinfeldBasisRelativeDef_WeierstrassCurve_DrinfeldLevelFunctorDef_WeierstrassCurve_DrinfeldLevelFunctorRestrictDef_WeierstrassCurve_DrinfeldTransportPinDef_WeierstrassCurve_PointChartDef_WeierstrassCurve_ProjModel_GroupLawVocabularyDef_WeierstrassCurve_SectionAtOrigin
Declarations
- theorem
WeierstrassProjModel.ext_of_isSchemeTheoreticallyDominant_of_isSeparated - def
WeierstrassProjModel.schemeHomOverComp - theorem
WeierstrassProjModel.schemeHomOverComp_coe - structure
WeierstrassProjModel.RelativeGroupLaw - field
WeierstrassProjModel.RelativeGroupLaw.f - field
WeierstrassProjModel.RelativeGroupLaw.mul - field
WeierstrassProjModel.RelativeGroupLaw.one - field
WeierstrassProjModel.RelativeGroupLaw.inv - field
WeierstrassProjModel.RelativeGroupLaw.mul_assoc - field
WeierstrassProjModel.RelativeGroupLaw.one_mul - field
WeierstrassProjModel.RelativeGroupLaw.mul_one - field
WeierstrassProjModel.RelativeGroupLaw.inv_mul_cancel - field
WeierstrassProjModel.RelativeGroupLaw.x - field
WeierstrassProjModel.RelativeGroupLaw.mul_natural - field
WeierstrassProjModel.RelativeGroupLaw.t' - def
WeierstrassProjModel.RelativeGroupLaw.nsmul - theorem
WeierstrassProjModel.RelativeGroupLaw.nsmul_zero - theorem
WeierstrassProjModel.RelativeGroupLaw.nsmul_succ - theorem
WeierstrassProjModel.RelativeGroupLaw.nsmul_one_apply - theorem
WeierstrassProjModel.RelativeGroupLaw.nsmul_unit - def
WeierstrassProjModel.RelativeGroupLaw.pointGroup - theorem
WeierstrassProjModel.RelativeGroupLaw.one_natural - theorem
WeierstrassProjModel.RelativeGroupLaw.nsmul_natural - def
WeierstrassProjModel.RelativeGroupLaw.IsTorsionPoint - theorem
WeierstrassProjModel.RelativeGroupLaw.isTorsionPoint_def - def
WeierstrassProjModel.RelativeGroupLaw.torsionSubset - theorem
WeierstrassProjModel.RelativeGroupLaw.mem_torsionSubset - theorem
WeierstrassProjModel.RelativeGroupLaw.isTorsionPoint_unit - theorem
WeierstrassProjModel.RelativeGroupLaw.isTorsionPoint_one_iff - theorem
WeierstrassProjModel.RelativeGroupLaw.isTorsionPoint_schemeHomOverComp - theorem
WeierstrassProjModel.RelativeGroupLaw.mapsTo_torsionSubset_schemeHomOverComp - abbrev
WeierstrassProjModel.RelativeGroupLaw.idPoint - def
WeierstrassProjModel.RelativeGroupLaw.schemeNsmul - theorem
WeierstrassProjModel.RelativeGroupLaw.schemeNsmul_over - abbrev
WeierstrassProjModel.RelativeGroupLaw.schemeKer - abbrev
WeierstrassProjModel.RelativeGroupLaw.schemeKerStr - theorem
WeierstrassProjModel.span_polynomial_isHomogeneousCR - def
WeierstrassProjModel.projModelHomogeneousIdealCR - theorem
WeierstrassProjModel.projModelHomogeneousIdealCR_toIdeal - abbrev
WeierstrassProjModel.ProjModelRingCR - abbrev
WeierstrassProjModel.projModelGradingCR - abbrev
WeierstrassProjModel.projModelCR - def
WeierstrassProjModel.projModelStrCR - def
WeierstrassProjModel.galTwist - def
WeierstrassProjModel.IsPointsEval
Source
import Definitions.Def_AlgebraicGeometry_HomogeneousIdealQuotientGradingInfra import Definitions.Def_AlgebraicGeometry_ProjectiveWeierstrassPolynomialPrime import Definitions.Def_AlgebraicGeometry_NeronModelPropertyBundleCarrier import Mathlib.AlgebraicGeometry.Morphisms.SchemeTheoreticallyDominant ↗ import Mathlib.AlgebraicGeometry.Morphisms.Separated ↗ import Mathlib.AlgebraicGeometry.Morphisms.ClosedImmersion ↗ import Mathlib.RingTheory.GradedAlgebra.Homogeneous.Ideal ↗ import Mathlib.RingTheory.Ideal.Quotient.Operations ↗ import Mathlib.RingTheory.MvPolynomial.Homogeneous ↗ import Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic ↗ import Mathlib.AlgebraicGeometry.EllipticCurve.Affine.Point ↗ import Mathlib.AlgebraicGeometry.ProjectiveSpectrum.Basic ↗ import Mathlib.AlgebraicGeometry.Pullbacks ↗ set_option autoImplicit false noncomputable section universe u open CategoryTheory CategoryTheory.Limits AlgebraicGeometry namespace WeierstrassProjModel theorem ext_of_isSchemeTheoreticallyDominant_of_isSeparated {W X Y Z : Scheme.{u}} {f g : X ⟶ Y} (s : Y ⟶ Z) [IsSeparated s] (h : f ≫ s = g ≫ s) (ι : W ⟶ X) [IsSchemeTheoreticallyDominant ι] (hU : ι ≫ f = ι ≫ g) : f = g := by let X' : Over Z := Over.mk (f ≫ s) let Y' : Over Z := Over.mk s let U' : Over Z := Over.mk (ι ≫ f ≫ s) let f' : X' ⟶ Y' := Over.homMk f let g' : X' ⟶ Y' := Over.homMk g h.symm let ι' : U' ⟶ X' := Over.homMk ι have : IsSeparated Y'.hom := ‹_› have hcond : ι' ≫ f' = ι' ≫ g' := by ext1; exact hU have hker : (equalizer.ι f' g').left.ker = ⊥ := by have h1 : (equalizer.ι f' g').left.ker ≤ ((equalizer.lift ι' hcond ≫ equalizer.ι f' g').left).ker := by rw [Over.comp_left] exact Scheme.Hom.le_ker_comp _ _ rw [equalizer.lift_ι] at h1 have h2 : (ι'.left).ker = ⊥ := Scheme.Hom.ker_eq_bot ι exact le_bot_iff.mp (h1.trans (le_of_eq h2)) haveI : IsClosedImmersion (equalizer.ι f' g').left := inferInstance haveI : IsIso (equalizer.ι f' g').left := IsClosedImmersion.isIso_iff_ker_eq_bot.mpr hker exact (cancel_epi (equalizer.ι f' g').left).mp congr($(equalizer.condition f' g').left) end WeierstrassProjModel namespace WeierstrassProjModel open NeronModelInfra def schemeHomOverComp {B T' T A : Scheme.{u}} {t : T ⟶ B} {t' : T' ⟶ B} {f : A ⟶ B} (ψ : T' ⟶ T) (hψ : ψ ≫ t = t') (x : SchemeHomOver t f) : SchemeHomOver t' f := ⟨ψ ≫ x.1, by rw [Category.assoc, x.2, hψ]⟩ @[simp] theorem schemeHomOverComp_coe {B T' T A : Scheme.{u}} {t : T ⟶ B} {t' : T' ⟶ B} {f : A ⟶ B} (ψ : T' ⟶ T) (hψ : ψ ≫ t = t') (x : SchemeHomOver t f) : (schemeHomOverComp ψ hψ x).1 = ψ ≫ x.1 := rfl structure RelativeGroupLaw (R : Type u) [CommRing R] {A : Scheme.{u}} (f : A ⟶ Spec (CommRingCat.of R)) where mul : ∀ {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)), SchemeHomOver t f → SchemeHomOver t f → SchemeHomOver t f one : ∀ {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)), SchemeHomOver t f inv : ∀ {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)), SchemeHomOver t f → SchemeHomOver t f mul_assoc : ∀ {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (x y z : SchemeHomOver t f), mul t (mul t x y) z = mul t x (mul t y z) one_mul : ∀ {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (x : SchemeHomOver t f), mul t (one t) x = x mul_one : ∀ {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (x : SchemeHomOver t f), mul t x (one t) = x inv_mul_cancel : ∀ {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (x : SchemeHomOver t f), mul t (inv t x) x = one t mul_natural : ∀ {T T' : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (t' : T' ⟶ Spec (CommRingCat.of R)) (ψ : T' ⟶ T) (hψ : ψ ≫ t = t') (x y : SchemeHomOver t f), schemeHomOverComp ψ hψ (mul t x y) = mul t' (schemeHomOverComp ψ hψ x) (schemeHomOverComp ψ hψ y) namespace RelativeGroupLaw variable {R : Type u} [CommRing R] variable {A : Scheme.{u}} {f : A ⟶ Spec (CommRingCat.of R)} def nsmul (G : RelativeGroupLaw R f) {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (n : ℕ) (x : SchemeHomOver t f) : SchemeHomOver t f := Nat.rec (G.one t) (fun _ ih => G.mul t ih x) n @[simp] theorem nsmul_zero (G : RelativeGroupLaw R f) {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (x : SchemeHomOver t f) : G.nsmul t 0 x = G.one t := rfl @[simp] theorem nsmul_succ (G : RelativeGroupLaw R f) {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (n : ℕ) (x : SchemeHomOver t f) : G.nsmul t (n + 1) x = G.mul t (G.nsmul t n x) x := rfl theorem nsmul_one_apply (G : RelativeGroupLaw R f) {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (x : SchemeHomOver t f) : G.nsmul t 1 x = x := by show G.mul t (G.one t) x = x exact G.one_mul t x theorem nsmul_unit (G : RelativeGroupLaw R f) {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (n : ℕ) : G.nsmul t n (G.one t) = G.one t := by induction n with | zero => rfl | succ n ih => rw [nsmul_succ, ih, G.mul_one] @[reducible] def pointGroup (G : RelativeGroupLaw R f) {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) : Group (SchemeHomOver t f) where mul x y := G.mul t x y one := G.one t inv x := G.inv t x mul_assoc := G.mul_assoc t one_mul := G.one_mul t mul_one := G.mul_one t inv_mul_cancel := G.inv_mul_cancel t theorem one_natural (G : RelativeGroupLaw R f) {T T' : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (t' : T' ⟶ Spec (CommRingCat.of R)) (ψ : T' ⟶ T) (hψ : ψ ≫ t = t') : schemeHomOverComp ψ hψ (G.one t) = G.one t' := by have h : G.mul t' (schemeHomOverComp ψ hψ (G.one t)) (schemeHomOverComp ψ hψ (G.one t)) = schemeHomOverComp ψ hψ (G.one t) := by rw [← G.mul_natural t t' ψ hψ, G.one_mul] calc schemeHomOverComp ψ hψ (G.one t) = G.mul t' (G.one t') (schemeHomOverComp ψ hψ (G.one t)) := (G.one_mul t' _).symm _ = G.mul t' (G.mul t' (G.inv t' (schemeHomOverComp ψ hψ (G.one t))) (schemeHomOverComp ψ hψ (G.one t))) (schemeHomOverComp ψ hψ (G.one t)) := by rw [G.inv_mul_cancel] _ = G.mul t' (G.inv t' (schemeHomOverComp ψ hψ (G.one t))) (G.mul t' (schemeHomOverComp ψ hψ (G.one t)) (schemeHomOverComp ψ hψ (G.one t))) := by rw [G.mul_assoc] _ = G.mul t' (G.inv t' (schemeHomOverComp ψ hψ (G.one t))) (schemeHomOverComp ψ hψ (G.one t)) := by rw [h] _ = G.one t' := G.inv_mul_cancel t' _ theorem nsmul_natural (G : RelativeGroupLaw R f) {T T' : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (t' : T' ⟶ Spec (CommRingCat.of R)) (ψ : T' ⟶ T) (hψ : ψ ≫ t = t') (n : ℕ) (x : SchemeHomOver t f) : schemeHomOverComp ψ hψ (G.nsmul t n x) = G.nsmul t' n (schemeHomOverComp ψ hψ x) := by induction n with | zero => show schemeHomOverComp ψ hψ (G.one t) = G.one t' exact G.one_natural t t' ψ hψ | succ n ih => calc schemeHomOverComp ψ hψ (G.nsmul t (n + 1) x) = schemeHomOverComp ψ hψ (G.mul t (G.nsmul t n x) x) := rfl _ = G.mul t' (schemeHomOverComp ψ hψ (G.nsmul t n x)) (schemeHomOverComp ψ hψ x) := G.mul_natural t t' ψ hψ _ _ _ = G.mul t' (G.nsmul t' n (schemeHomOverComp ψ hψ x)) (schemeHomOverComp ψ hψ x) := by rw [ih] _ = G.nsmul t' (n + 1) (schemeHomOverComp ψ hψ x) := rfl def IsTorsionPoint (G : RelativeGroupLaw R f) {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (n : ℕ) (x : SchemeHomOver t f) : Prop := G.nsmul t n x = G.one t theorem isTorsionPoint_def (G : RelativeGroupLaw R f) {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (n : ℕ) (x : SchemeHomOver t f) : G.IsTorsionPoint t n x ↔ G.nsmul t n x = G.one t := Iff.rfl def torsionSubset (G : RelativeGroupLaw R f) {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (n : ℕ) : Set (SchemeHomOver t f) := {x | G.IsTorsionPoint t n x} @[simp] theorem mem_torsionSubset (G : RelativeGroupLaw R f) {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (n : ℕ) (x : SchemeHomOver t f) : x ∈ G.torsionSubset t n ↔ G.IsTorsionPoint t n x := Iff.rfl theorem isTorsionPoint_unit (G : RelativeGroupLaw R f) {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (n : ℕ) : G.IsTorsionPoint t n (G.one t) := G.nsmul_unit t n theorem isTorsionPoint_one_iff (G : RelativeGroupLaw R f) {T : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (x : SchemeHomOver t f) : G.IsTorsionPoint t 1 x ↔ x = G.one t := by show G.nsmul t 1 x = G.one t ↔ x = G.one t rw [G.nsmul_one_apply] theorem isTorsionPoint_schemeHomOverComp (G : RelativeGroupLaw R f) {T T' : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (t' : T' ⟶ Spec (CommRingCat.of R)) (ψ : T' ⟶ T) (hψ : ψ ≫ t = t') (n : ℕ) {x : SchemeHomOver t f} (hx : G.IsTorsionPoint t n x) : G.IsTorsionPoint t' n (schemeHomOverComp ψ hψ x) := by show G.nsmul t' n (schemeHomOverComp ψ hψ x) = G.one t' rw [← G.nsmul_natural t t' ψ hψ n x, hx] exact G.one_natural t t' ψ hψ theorem mapsTo_torsionSubset_schemeHomOverComp (G : RelativeGroupLaw R f) {T T' : Scheme.{u}} (t : T ⟶ Spec (CommRingCat.of R)) (t' : T' ⟶ Spec (CommRingCat.of R)) (ψ : T' ⟶ T) (hψ : ψ ≫ t = t') (n : ℕ) : Set.MapsTo (schemeHomOverComp ψ hψ) (G.torsionSubset t n) (G.torsionSubset t' n) := fun _ hx => G.isTorsionPoint_schemeHomOverComp t t' ψ hψ n hx end RelativeGroupLaw end WeierstrassProjModel end set_option autoImplicit false universe u noncomputable section open AlgebraicGeometry CategoryTheory CategoryTheory.Limits NeronModelInfra namespace WeierstrassProjModel namespace RelativeGroupLaw variable {R : Type u} [CommRing R] variable {A : Scheme.{u}} {f : A ⟶ Spec (CommRingCat.of R)} abbrev idPoint : SchemeHomOver f f := ⟨𝟙 A, Category.id_comp f⟩ def schemeNsmul (G : RelativeGroupLaw R f) (n : ℕ) : A ⟶ A := (G.nsmul f n idPoint).1 theorem schemeNsmul_over (G : RelativeGroupLaw R f) (n : ℕ) : G.schemeNsmul n ≫ f = f := (G.nsmul f n idPoint).2 abbrev schemeKer (G : RelativeGroupLaw R f) (n : ℕ) : Scheme.{u} := pullback (G.schemeNsmul n) (G.one (𝟙 (Spec (CommRingCat.of R)))).1 abbrev schemeKerStr (G : RelativeGroupLaw R f) (n : ℕ) : G.schemeKer n ⟶ Spec (CommRingCat.of R) := pullback.snd (G.schemeNsmul n) (G.one (𝟙 (Spec (CommRingCat.of R)))).1 end RelativeGroupLaw end WeierstrassProjModel end noncomputable section open AlgebraicGeometry CategoryTheory MvPolynomial open HomogeneousIdealQuotientGrading ProjWeierstrassCubicPrime open NeronModelInfra namespace WeierstrassProjModel attribute [local instance] MvPolynomial.gradedAlgebra section Carrier variable {R : Type*} [CommRing R] theorem span_polynomial_isHomogeneousCR (V : WeierstrassCurve.Projective R) : (Ideal.span {V.polynomial}).IsHomogeneous (homogeneousSubmodule (Fin 3) R) := by refine Ideal.homogeneous_span _ _ ?_ rintro p hp rcases Set.mem_singleton_iff.mp hp with rfl exact ⟨3, (mem_homogeneousSubmodule _ _).mpr (isHomogeneous_polynomial V)⟩ def projModelHomogeneousIdealCR (V : WeierstrassCurve.Projective R) : HomogeneousIdeal (homogeneousSubmodule (Fin 3) R) := ⟨Ideal.span {V.polynomial}, span_polynomial_isHomogeneousCR V⟩ @[simp] theorem projModelHomogeneousIdealCR_toIdeal (V : WeierstrassCurve.Projective R) : (projModelHomogeneousIdealCR V).toIdeal = Ideal.span {V.polynomial} := rfl abbrev ProjModelRingCR (V : WeierstrassCurve.Projective R) : Type _ := MvPolynomial (Fin 3) R ⧸ (projModelHomogeneousIdealCR V).toIdeal abbrev projModelGradingCR (V : WeierstrassCurve.Projective R) : ℕ → Submodule R (ProjModelRingCR V) := quotGradingSubmodule (homogeneousSubmodule (Fin 3) R) (projModelHomogeneousIdealCR V).toIdeal abbrev projModelCR (V : WeierstrassCurve.Projective R) : Scheme := Proj (projModelGradingCR V) def projModelStrCR (V : WeierstrassCurve.Projective R) : Proj (projModelGradingCR V) ⟶ Spec (CommRingCat.of R) := Proj.toSpecZero (projModelGradingCR V) ≫ Spec.map (CommRingCat.ofHom (algebraMap R ((projModelGradingCR V) 0))) end Carrier section PointsEval variable {R : Type u} [CommRing R] def galTwist {X : Scheme.{u}} {f : X ⟶ Spec (CommRingCat.of R)} {F : Type u} [Field F] [Algebra R F] (σ : F ≃ₐ[R] F) (P : SchemeHomOver (Spec.map (CommRingCat.ofHom (algebraMap R F))) f) : SchemeHomOver (Spec.map (CommRingCat.ofHom (algebraMap R F))) f := schemeHomOverComp (Spec.map (CommRingCat.ofHom (σ : F →+* F))) (by rw [← Spec.map_comp, ← CommRingCat.ofHom_comp] exact congrArg Spec.map (congrArg CommRingCat.ofHom (RingHom.ext fun x => σ.commutes x))) P def IsPointsEval (V : WeierstrassCurve.Projective R) (G : RelativeGroupLaw R (projModelStrCR V)) (ev : ∀ (F : Type u) [Field F] [DecidableEq F] [Algebra R F], SchemeHomOver (Spec.map (CommRingCat.ofHom (algebraMap R F))) (projModelStrCR V) ≃ (V.baseChange F).toAffine.Point) : Prop := (∀ (F : Type u) [Field F] [DecidableEq F] [Algebra R F] (P Q : SchemeHomOver (Spec.map (CommRingCat.ofHom (algebraMap R F))) (projModelStrCR V)), ev F (G.mul (Spec.map (CommRingCat.ofHom (algebraMap R F))) P Q) = ev F P + ev F Q) ∧ (∀ (F : Type u) [Field F] [DecidableEq F] [Algebra R F] (σ : F ≃ₐ[R] F) (P : SchemeHomOver (Spec.map (CommRingCat.ofHom (algebraMap R F))) (projModelStrCR V)), ev F (galTwist σ P) = WeierstrassCurve.Affine.Point.map (σ : F →ₐ[R] F) (ev F P)) end PointsEval end WeierstrassProjModel end
Statements phrased using this module (300)
- Galois-equivariant bijection between relative d-torsion and E[d]
WeierstrassProjModel.exists_torsionSubset_equiv_torsionBy_galoisEquivariant0 below · depth 9 - Finiteness of n-torsion kernel schemes of a relative group law
WeierstrassProjModel.isFinite_schemeKerStr_of_isPointsEval3 below · depth 9 - Points evaluation for the glued relative group law
WeierstrassProjModel.kw_a2_exists_isPointsEval_of_addMorphism5 below · depth 9 - Base change of the projective Weierstrass model over Spec
WeierstrassProjModel.kw_bc_baseChangeIso4 below · depth 9 - Geometric integrality of the projective Weierstrass model
WeierstrassProjModel.kw_hgi_geometricallyIntegral_of_baseChangeIso0 below · depth 9 - Smoothness of the projective Weierstrass model over Spec R
WeierstrassProjModel.projModelStrCR_smooth2 below · depth 9 - Properness of the projective Weierstrass model over the base
WeierstrassProjModel.projModelStrCR_isProper0 below · depth 10 - Smoothness of the projective Weierstrass model from two charts
WeierstrassProjModel.projModelStrCR_smooth_of_zChartBridge_of_yChartSmooth0 below · depth 10 - Multiplication by n on the projective Weierstrass model is locally quasi-finite
WeierstrassProjModel.schemeNsmul_locallyQuasiFinite_of_isPointsEval2 below · depth 10 - Generic point of the projective Weierstrass model over a field
WeierstrassProjModel.exists_genericPoint_projModelCR_of_field0 below · depth 11 - Negation on the projective Weierstrass model is a Spec R-morphism
WeierstrassProjModel.negMor_over0 below · depth 11 - Negation morphism factors through the Z≠ 0 chart
WeierstrassProjModel.negMor_chartFactor0 below · depth 12 - Torsion Hopf algebra of W[n] over a field
WeierstrassCurve.exists_hopfAlgebra_field_torsionBy_of_relativeGroupLaw_isPointsEval20 below · depth 15 - Relative group law and points evaluation on the projective Weierstrass model
WeierstrassProjModel.exists_relativeGroupLaw_isPointsEval_of_isElliptic_of_invertible_two31 below · depth 15 - Finite Hopf algebra representing the n-torsion of a relative group law
WeierstrassProjModel.exists_hopfAlgebra_withConv_equiv_torsionSubset_of_isFinite13 below · depth 16 - Relative d-torsion matches E(F)[d] under a points-evaluation
WeierstrassProjModel.exists_torsionSubset_equiv_torsionBy_of_isPointsEval0 below · depth 16 - Free rank p² ℤₚ-Hopf algebra for W[p]
WeierstrassProjModel.exists_finiteFree_hopfAlgebra_padicInt_rank_psq_of_isPointsEval_of_flat26 below · depth 17 - Relative group law and points evaluation on elliptic Weierstrass Proj models
WeierstrassProjModel.exists_relativeGroupLaw_isPointsEval_of_isElliptic_of_isDomain78 below · depth 17 - Flatness of the n-torsion scheme over the base
WeierstrassProjModel.flat_schemeKerStr_of_isPointsEval_of_isElliptic28 below · depth 17 - Commutativity of a relative group law with additive point evaluation
WeierstrassProjModel.mul_comm_of_isPointsEval11 below · depth 17 - A dominant function-field point of the self-product of a projective Weierstrass model
WeierstrassProjModel.exists_dominant_field_point_selfPullback_of_isElliptic10 below · depth 18 - Points evaluation for a law pinned to six addition laws
WeierstrassProjModel.exists_isPointsEval_of_addMorphism_sixU_pin9 below · depth 18 - Commutativity of a relative group law with additive points evaluation
WeierstrassProjModel.mul_comm_of_isPointsEval_domain10 below · depth 18 - Flatness of multiplication by n on the projective Weierstrass model
WeierstrassProjModel.schemeNsmul_flat_of_isPointsEval_of_isElliptic27 below · depth 18 - Fibrewise flatness of multiplication by n on the Weierstrass model
WeierstrassProjModel.flat_schemeFibreEndo_schemeNsmul_of_isPointsEval_of_isElliptic17 below · depth 19 - Integrality of the self-fibre-product of an elliptic projective model
WeierstrassProjModel.isIntegral_selfPullback_of_isElliptic_field9 below · depth 19 - Chart addition law for a pinned addition morphism off the diagonal
WeierstrassProjModel.kw_a2_pin_map_mul_of_ne8 below · depth 19 - Integrality of the Weierstrass model and its self-products
WeierstrassProjModel.kw_r0_isIntegral_pullbacks0 below · depth 19 - Smoothness of relative dimension one of the projective Weierstrass model
WeierstrassProjModel.projModelStrCR_smoothOfRelativeDimension_one3 below · depth 19 - Base change of the projective Weierstrass model to an R-field
WeierstrassProjModel.projModel_pullback_iso_baseChange4 below · depth 19 - The Y-chart of the projective Weierstrass model
WeierstrassProjModel.exists_yChartAway_equiv_coordinateRing0 below · depth 20 - The Z-chart of the projective Weierstrass model is the affine coordinate ring
WeierstrassProjModel.exists_zChartAway_equiv_coordinateRing1 below · depth 20 - Non-vanishing of an addition-law element off the diagonal
WeierstrassProjModel.kw_a2_exists_sixU_ne_zero_of_pointClass_ne6 below · depth 20 - The generic point is a nonzero point of the model
WeierstrassProjModel.kw_ev_genericPoint_ne_zero14 below · depth 20 - Generic-point evaluation is not 2-torsion
WeierstrassProjModel.kw_ev_genericPoint_not_two_torsion18 below · depth 20 - Three generic projections of E³ are pairwise off-diagonal
WeierstrassProjModel.kw_ev_triple_projections_indep41 below · depth 20 - Proj base change for the projective Weierstrass model
WeierstrassProjModel.projModel_isPullback_baseChange3 below · depth 20 - Projective addition coordinates do not all vanish for distinct points
WeierstrassProjModel.kw_a2_add_ne_zero_of_pointClass_ne0 below · depth 21 - Chord-law six-u elements evaluate to minus the projective addition formulae
WeierstrassProjModel.kw_a2_productMap_sixU_inl_eq_neg_add3 below · depth 21 - Generic point of an elliptic model: chart factorisation with 2P≠[0:1:0]
WeierstrassProjModel.kw_ev_genericPoint_chartFactor_addMap_self_ne_zeroClass17 below · depth 21 - Chart factorisation of the generic point avoids [0:1:0]
WeierstrassProjModel.kw_ev_genericPoint_chartFactor_pointClass_ne_zero13 below · depth 21 - Independent chart factorisations of the three projections of E³
WeierstrassProjModel.kw_ev_triple_projections_chartFactor_pointClass_indep40 below · depth 21 - Doubling the generic Z-chart point avoids [0:1:0]
WeierstrassProjModel.kw_ev_genericPoint_zChart_addMap_self_ne_zeroClass15 below · depth 22 - Generic point of the Weierstrass model factors through the Z-chart
WeierstrassProjModel.kw_ev_genericPoint_zChart_factor11 below · depth 22 - Injectivity of a Z-chart factorisation of the generic point
WeierstrassProjModel.kw_ev_genericPoint_zChart_psi_injective11 below · depth 23 - Special-fibre points of the rigid chart as level structures
ModularCurve.FullLevel.exists_ssFibreDictionary_chartAlgFin_rigidDataPow2,868 below · depth 28 - Drinfeld Γ(q)-bases are trivial without rational q-torsion
WeierstrassCurve.DrinfeldGlobal.IsDrinfeldBasis.eq_one_of_forall_nsmul_eq_zero3 below · depth 28 - Existence of pinned global group laws and level transport
WeierstrassCurve.DrinfeldGlobal.exists_groupLaws_levelTransport_isChordTangent_isOriginIdentity_isSectionTransport111 below · depth 28 - Special-fibre dictionary for the rigid chart at level Γ(q)∩Γ₁(ℓ_g)∩Γ₀(M')
ModularCurve.FullLevel.Diamond.exists_ssFibreDictionary_chartAlgFin_rigidDataGamma1Pow2,857 below · depth 29 - Constancy of the level-ℓ' Weil pairing on the special fibre
ModularCurve.FullLevel.exists_forall_weilPairing0_eq_of_eq_map_classify_rigidDataPow42 below · depth 29 - No q-torsion and alignment above a supersingular place
ModularCurve.FullLevel.forall_nsmul_eq_zero_and_exists_variableChange_of_over_of_eq_map_classify_rigidDataPow_of_tatePoint2,862 below · depth 29 - Rational endomorphism subring acts on the projective Weierstrass model
WeierstrassProjModel.exists_action_rationalEndSubring_of_isAlgClosed81 below · depth 29 - Coefficient base-change homomorphism of projective Weierstrass models
WeierstrassProjModel.exists_isCoefficientHom0 below · depth 29 - Coordinate-reading points evaluation for the projective Weierstrass model
WeierstrassProjModel.exists_isPointsEval_apply_eq_some_of_eq_comp_zChartInclusion91 below · depth 29 - Variable change induces an isomorphism of projective Weierstrass models
WeierstrassProjModel.exists_isVariableChangeHom_isIso_projMap0 below · depth 29 - Cusp-regular integral level-M' functions lie in the j-chart
ModularCurve.FullLevel.Diamond.coeffEmb_mem_chartAlgFin_of_cuspRegular_of_mem_integers827 below · depth 30 - Directed supersingular-fibre dictionary for the Γ₁(ℓ_g)-rigid moduli data
ModularCurve.FullLevel.Diamond.exists_ssFibreDictionary_chartAlgFin_rigidDataGamma1Pow_directedAt2,856 below · depth 30 - One moduli place for all rigid-chart points over s
ModularCurve.FullLevel.exists_place_forall_isModuliPlaceOf_of_over_of_eq_map_classify_rigidDataPow_of_tatePoint2,858 below · depth 30 - Relabelling by g then g' with gg' ≡ 1 (mod q)
ModularCurve.LevelRelabelling.RawDrinfeldPair.relabel_relabel_eq_self_of_mul_map_eq_one_of_isLevel104 below · depth 30 - A point of order M' whose multiples are cut out by the Γ₀-component
WeierstrassCurve.DrinfeldGlobal.exists_addOrderOf_eq_forall_isRoot_level_fst_of_raw_rigidDataPow5 below · depth 30 - Aligning raw rigid data with equal Γ₀(M')-moduli class
WeierstrassCurve.DrinfeldGlobal.exists_variableChange_curve_eq_level_fst_eq_of_moduliPoint_mk_eq_of_raw_rigidDataPow2 below · depth 30 - Proj of a coefficient homomorphism restricts to the Z-chart
WeierstrassCurve.DrinfeldGlobal.exists_zChartIota_comp_projMap_eq_specMap_comp_zChartIota0 below · depth 30 - Unit section factors through the origin chart iff it is [0:1:0]
WeierstrassProjModel.RelativeGroupLaw.exists_isOriginChartSection_iff_one_eq_kwZeroSect0 below · depth 30 - Relative group laws pull back along a cartesian square
WeierstrassProjModel.RelativeGroupLaw.exists_relativeGroupLaw_comp_eq_of_isPullback0 below · depth 30 - Coordinate-reading points-evaluation for the projective Weierstrass model
WeierstrassProjModel.exists_isPointsEval_apply_eq_some_of_eq_comp_zChartInclusion_of_isDomain83 below · depth 30 - Rationally represented endomorphisms come from the projective Weierstrass model
WeierstrassProjModel.exists_schemeHomOver_forall_apply_eq_of_isRationallyRepresented_of_isAlgClosed75 below · depth 30 - Vanishing q-torsion and line alignment at supersingular places
ModularCurve.FullLevel.Diamond.forall_nsmul_eq_zero_and_exists_variableChange_and_inLine_of_over_of_eq_map_classify_rigidDataH1Pow_of_tatePoint_pinGamma12,852 below · depth 31 - Supersingular fibre dictionary with automorphism count at s
ModularCurve.FullLevel.exists_ssFibreDictionary_autCount_chartAlgFin_rigidDataPow2,889 below · depth 31 - Closed points above a supersingular place carry no q-torsion
ModularCurve.FullLevel.forall_nsmul_eq_zero_of_over_of_eq_map_classify_rigidDataPow104 below · depth 31 - Equal floor readings and supersingular fibre force equal Γ₀(M')-class
ModularCurve.FullLevel.moduliPoint_mk_eq_of_forall_apply_qExpand_eq_of_eq_map_classify_rigidDataPow_of_tatePoint2,857 below · depth 31 - Relabelling a Drinfeld basis depends only on g mod q
ModularCurve.LevelRelabelling.RawDrinfeldPair.relabel_eq_relabel_of_map_eq_of_isLevel_of_two_le3 below · depth 31 - Relabelling raw Drinfeld pairs is a right M₂(ℤ)-action
ModularCurve.LevelRelabelling.RawDrinfeldPair.relabel_relabel0 below · depth 31 - Commutativity of origin-pinned relative group laws on Weierstrass models
WeierstrassCurve.DrinfeldGlobal.GroupLaws.mul_comm_of_isOriginIdentity99 below · depth 31 - Relabelling a Drinfeld basis by a matrix with unit determinant mod q
WeierstrassCurve.DrinfeldGlobal.IsDrinfeldBasis.zlinComb_zlinComb_of_isUnit_det0 below · depth 31 - Relabelling commutes with variable-change transport of Drinfeld pairs
WeierstrassCurve.DrinfeldGlobal.LevelTransport.act_relabel_eq_relabel_act24 below · depth 31 - Negation variable change transports to group-law inversion
WeierstrassCurve.DrinfeldGlobal.LevelTransport.exists_act_neg_comp_eqToHom_eq_inv85 below · depth 31 - Base change commutes with GL₂(ℤ)-relabelling of raw Drinfeld pairs
WeierstrassCurve.DrinfeldGlobal.LevelTransport.map_relabel_eq_relabel_map24 below · depth 31 - Sections through an independent q-torsion pair are a Drinfeld basis
WeierstrassCurve.DrinfeldGlobal.isDrinfeldBasis_of_isSectionThrough_of_torsion_basis118 below · depth 31 - Agreement off a finite set of points extends to all points
WeierstrassProjModel.apply_schemeHomOverComp_eq_of_finite_of_forall_not_mem73 below · depth 31 - A single moduli place above a supersingular place, H₁ level
ModularCurve.FullLevel.Diamond.exists_place_forall_isModuliPlaceOf_of_over_of_eq_map_classify_rigidDataH1Pow_of_tatePoint_pinGamma12,847 below · depth 32 - Supersingular places read off injectively from Γ₀(M')-classes
ModularCurve.FullLevel.exists_injective_forall_place_eq_of_forall_evalAt_eq_of_eq_map_classify_rigidDataPow_of_tatePoint2,847 below · depth 32 - Closed points of the rigid j-chart read rational floor places
ModularCurve.FullLevel.exists_place_forall_evalAt_eq_apply_qExpand_of_eq_map_classify_rigidDataPow865 below · depth 32 - Transport of level automorphism and supersingular point to j-chart
ModularCurve.FullLevel.exists_ringHom_chartAlgFin_levelAut_comap_eq_of_isLevelAutAt_of_ringHom_cyclotomic_rigidDataPow968 below · depth 32 - Admissible constants over a cyclotomic discrete valuation ring
ModularCurve.FullLevel.exists_valuationSubring_admissibleConstants_over_cyclotomic11 below · depth 32 - Level automorphisms in Γ(ℓ')∩Γ₀(M') fix supersingular closed points
ModularCurve.FullLevel.levelAut_sub_self_mem_of_isLevelAutAt_of_mem_Gamma_of_over_ssPlace_rigidDataPow2,871 below · depth 32 - Automorphisms of the Γ₀(M')-fibre datum over a supersingular place
ModularCurve.FullLevel.natCard_variableChange_act_curve_eq_and_level_fst_eq_eq_two_mul_placeWidthChar_of_over_of_eq_map_classify_rigidDataPow_of_tatePoint2,872 below · depth 32 - Degeneracy image of a cusp-regular integral function is chart-integral
ModularCurve.FullLevel.qExpand_mem_chartAlgFin_of_cuspRegular_of_mem_integers828 below · depth 32 - Cyclic generator of order M' cut by the Γ₀(M')-tuple
WeierstrassCurve.DrinfeldGlobal.exists_addOrderOf_eq_forall_isRoot_level_fst_of_raw_rigidDataH1Pow5 below · depth 32 - Equal Γ₀(M')-moduli points give a common change of variables
WeierstrassCurve.DrinfeldGlobal.exists_variableChange_curve_eq_level_fst_eq_of_moduliPoint_mk_eq_of_raw_rigidDataH1Pow2 below · depth 32 - Uniqueness of origin-pinned group laws and their level transports
WeierstrassCurve.DrinfeldGlobal.groupLaws_eq_and_levelTransport_heq_of_isOriginIdentity_of_isSectionTransport25 below · depth 32 - Two H₁-admissible Γ₁(ℓ_g)-points on one curve lie in line
WeierstrassCurve.DrinfeldGlobal.inLine_level_snd_fst_xP_of_curve_eq_of_level_fst_eq_rigidDataH1Pow20 below · depth 32 - Drinfeld Γ(q)-basis criterion over a field, q invertible
WeierstrassCurve.DrinfeldGlobal.isDrinfeldBasis_of_isPointsEval_of_nsmul_eq_one_of_linComb_inj43 below · depth 32 - Transport along a change of variables on sections through a point
WeierstrassCurve.DrinfeldGlobal.isSectionThrough_act_of_isSectionTransport0 below · depth 32 - Sections of a transported Drinfeld pair pass through f-images
WeierstrassCurve.DrinfeldGlobal.isSectionThrough_map_of_isSectionTransport0 below · depth 32 - Integer combinations of sections pass through the combined points
WeierstrassCurve.DrinfeldGlobal.isSectionThrough_zlinComb_of_isSectionThrough86 below · depth 32 - Rigidity lemma for projective Weierstrass models over a ring
WeierstrassProjModel.eq_snd_comp_of_comp_eq_const_of_isElliptic18 below · depth 32 - Transport of a cyclotomic level automorphism to the k₀-chart
ModularCurve.FullLevel.Diamond.exists_ringHom_chartAlgFin_levelAut_comap_eq_of_isLevelAutAt_of_ringHom_cyclotomic_rigidDataGamma1Pow939 below · depth 33 - Supersingular specialisations of the H₁ datum have no q-torsion
ModularCurve.FullLevel.Diamond.forall_nsmul_eq_zero_of_over_of_eq_map_classify_rigidDataH1Pow104 below · depth 33 - Trivial-diamond level automorphisms fix supersingular chart points
ModularCurve.FullLevel.Diamond.levelAut_sub_self_mem_of_isLevelAutAt_of_mem_gamma0_of_apply_eq_one_of_over_ssPlace_rigidDataGamma1Pow2,859 below · depth 33 - Equal floor readings force equal Γ₀(M')-moduli class
ModularCurve.FullLevel.Diamond.moduliPoint_mk_eq_of_forall_apply_eq_of_eq_map_classify_rigidDataH1Pow_of_tatePoint_pinGamma12,846 below · depth 33 - Closed points of the rigid chart read through R₀
ModularCurve.FullLevel.exists_algHom_forall_apply_residue_eq_apply_qExpand_of_eq_map_classify_rigidDataPow860 below · depth 33 - Supersingular closed point lifts to the chart over admissible constants
ModularCurve.FullLevel.exists_isMaximal_chartAlgFin_comap_eq_of_coeffMap_cyclotomic_rigidDataPow197 below · depth 33 - Read place is a moduli place of the Frobenius-twisted fibre
ModularCurve.FullLevel.exists_isModuliPlaceOf_map_frobenius_of_forall_evalAt_eq_of_eq_map_classify_rigidDataPow_of_tatePoint2,828 below · depth 33 - Transport of level automorphisms along a cyclotomic coefficient map
ModularCurve.FullLevel.exists_ringHom_chartAlgFin_isLevelAutAt_restrict_comp_eq_of_isLevelAutAt_cyclotomic_rigidDataPow242 below · depth 33 - Supersingular fibre dictionary with Γ₀(M') relabelling
ModularCurve.FullLevel.exists_ssFibreDictionary_relabel_of_isLevelAutAt_chartAlgFin_rigidDataPow2,868 below · depth 33 - Supersingular points of the j-chart lie over supersingular places
ModularCurve.FullLevel.exists_ssPlace_under_of_isMaximal_chartAlgFin_of_mem_ssJSet_rigidDataPow891 below · depth 33 - Relabelling by γ∈Γ(ℓ')∩Γ₀(M') fixes a supersingular class
ModularCurve.FullLevel.quotMk_eq_of_relabel_of_mem_Gamma_of_forall_smul_eq_zero_rigidDataPow10 below · depth 33 - Drinfeld level-q bases read as Galois-equivariant q-torsion bases
WeierstrassCurve.DrinfeldGlobal.exists_basisReading_levelComponent_map_of_isAlgClosed25 below · depth 33 - Relabelling fixing a Drinfeld basis reduces to ± 1
WeierstrassCurve.DrinfeldGlobal.map_eq_of_act_relabel_eq98 below · depth 33 - Relative group laws commute on K-points of elliptic models
WeierstrassProjModel.RelativeGroupLaw.mul_comm_at_field_of_isElliptic_of_baseChangeIso4 below · depth 33 - Global sections of the projective Weierstrass model after base change
WeierstrassProjModel.bijective_appTop_pullback_snd_projModelStrCR6 below · depth 33 - Properness, integrality and reduced self-product over a field
WeierstrassProjModel.isProper_and_isIntegral_and_isReduced_selfPullback_pullback_snd_of_baseChangeIso11 below · depth 33 - Base change of the projective Weierstrass model over a ring
WeierstrassProjModel.projModel_isPullback_baseChange_ring3 below · depth 33 - Relative group law on the projective Weierstrass model over a Noetherian domain
WeierstrassProjModel.relativeGroupLaw_nonempty_of_isElliptic_of_baseChangeIso_of_isNoetherianRing74 below · depth 33 - Supersingular places injectively indexed by Γ₀(M')-moduli points
ModularCurve.FullLevel.Diamond.exists_injective_forall_place_eq_of_forall_evalAt_eq_of_eq_map_classify_rigidDataH1Pow_of_tatePoint_pinGamma12,836 below · depth 34 - A maximal ideal of the k₀-chart contracting to y₁
ModularCurve.FullLevel.Diamond.exists_isMaximal_chartAlgFin_comap_eq_of_coeffMap_cyclotomic_rigidDataGamma1Pow198 below · depth 34 - One rational place reads all admissible functions at H₁ level
ModularCurve.FullLevel.Diamond.exists_place_forall_evalAt_eq_apply_of_eq_map_classify_rigidDataH1Pow864 below · depth 34 - Transfer of level automorphisms to the j-finite chart
ModularCurve.FullLevel.Diamond.exists_ringHom_chartAlgFin_isLevelAutAt_restrict_comp_eq_of_isLevelAutAt_cyclotomic_rigidDataGamma1Pow212 below · depth 34 - Directed supersingular-fibre dictionary under Γ₀(M')-level automorphisms
ModularCurve.FullLevel.Diamond.exists_ssFibreDictionary_chartAlgFin_rigidDataGamma1Pow_directedAt_of_mem_gamma02,856 below · depth 34 - Supersingular chart points lie over supersingular places (Γ₁(ℓ_g) frame)
ModularCurve.FullLevel.Diamond.exists_ssPlace_under_of_isMaximal_chartAlgFin_of_mem_ssJSet_rigidDataGamma1Pow890 below · depth 34 - q-expansion criterion at a supersingular point, H₁ level
ModularCurve.FullLevel.Diamond.mem_of_forall_coeff_mem_maximalIdeal_of_isMaximal_of_mem_ssJSet_chartAlgFin_rigidDataGamma1Pow_of_isPrimitiveRoot_mul2,299 below · depth 34 - Trivial-diamond Γ₀(M')-relabelling fixes supersingular Γ₁(ℓ_g)-points
ModularCurve.FullLevel.Diamond.quotMk_eq_of_relabel_of_apply_eq_one_of_forall_smul_eq_zero_rigidDataGamma1Pow7 below · depth 34 - Reading admissible level-M' functions gives a κ_A-embedding
ModularCurve.FullLevel.exists_algHom_modularFunctionFieldFullC_forall_apply_residue_eq_ringHom_of_transcendental_of_tatePoint863 below · depth 34 - Frobenius twist and cyclic-quotient j at a Tate point
ModularCurve.FullLevel.exists_place_curve_reduction_eq_map_frobenius_cyclicQuotientJ_eq_of_levelAut_of_originChart_of_tatePoint2,251 below · depth 34 - Supersingular branch with second Drinfeld section at the origin
ModularCurve.FullLevel.exists_place_ringHom_chartAlgFin_residue_eq_originChart_levelAut_of_forall_nsmul_eq_zero_of_tatePoint2,365 below · depth 34 - Integrality and cusp-regularity of j(qᵈ) for d ∣ M'
ModularCurve.FullLevel.mem_integers_and_cuspRegular_qExpand_jq_of_dvd44 below · depth 34 - Relabelling by g ≡ 1 mod n fixes n-torsion pairs
ModularCurve.LevelRelabelling.RawDrinfeldPair.relabel_eq_self_of_map_eq_one_of_isTorsionPoint0 below · depth 34 - Base-change compatibility of the pinned group law on field points
WeierstrassCurve.DrinfeldGlobal.GroupLaws.mul_comp_projMap_eq_at_field_of_isCoefficientHom23 below · depth 34 - Base change of the unit section along a coefficient homomorphism
WeierstrassCurve.DrinfeldGlobal.GroupLaws.one_comp_projMap_eq_of_isCoefficientHom1 below · depth 34 - Global Drinfeld q-basis yields formal Drinfeld basis, supersingular case
WeierstrassCurve.DrinfeldGlobal.IsDrinfeldBasis.exists_reducesToOrigin_isDrinfeldBasisAdic_of_toPowerSeries_eq_typeZero139 below · depth 34 - Relabellings fixing a Drinfeld q-basis up to sign are ≡ ε · 1
WeierstrassCurve.DrinfeldGlobal.IsDrinfeldBasis.map_eq_smul_one_of_zlinComb_eq_zsmulSection14 below · depth 34 - Both members of a global Drinfeld q-basis are q-torsion
WeierstrassCurve.DrinfeldGlobal.IsDrinfeldBasis.nsmul_eq_one_and_nsmul_eq_one3 below · depth 34 - Level transport identified by its base-changed sections
WeierstrassCurve.DrinfeldGlobal.LevelTransport.map_eq_mk_of_comp_projMap_eq5 below · depth 34 - Base change of the basis divisor along Proj of φ
WeierstrassCurve.DrinfeldGlobal.basisDivisor_comap_fst_eq_basisDivisor_comap_theta29 below · depth 34 - Unique extension of K-points of the projective Weierstrass model over a DVR
WeierstrassCurve.DrinfeldGlobal.existsUnique_section_comp_eq_of_isFractionRing1 below · depth 34 - Comparison morphism for the base-changed projective Weierstrass model
WeierstrassCurve.DrinfeldGlobal.exists_theta_of_isCoefficientHom4 below · depth 34 - Flatness of the Drinfeld basis divisor over the base
WeierstrassCurve.DrinfeldGlobal.flat_basisDivisor_subschemeIota_comp_snd13 below · depth 34 - Flatness of the [n]-torsion subscheme over the base
WeierstrassCurve.DrinfeldGlobal.flat_torsionIdeal_subschemeIota_comp_snd_of_flat_schemeKerStr0 below · depth 34 - Weil pairing of a Drinfeld Γ(q)-basis is primitive
WeierstrassCurve.DrinfeldGlobal.isPrimitiveRoot_weilPairing0_of_isLevel_of_isSectionThrough_ed2196 below · depth 34 - Projective Weierstrass model structure maps commute with base change
WeierstrassCurve.DrinfeldGlobal.projMap_comp_projModelStrCR_of_isCoefficientHom4 below · depth 34 - Sections determined by their image under `Proj.map` of φ
WeierstrassCurve.DrinfeldGlobal.section_eq_of_comp_projMap_eq_of_isCoefficientHom4 below · depth 34 - Base change of the n-torsion ideal sheaf along θ
WeierstrassCurve.DrinfeldGlobal.torsionIdeal_comap_fst_eq_torsionIdeal_comap_theta26 below · depth 34 - Base change of a relative group law along R → K
WeierstrassProjModel.RelativeGroupLaw.exists_pullback_snd_schemeHomOverEquiv0 below · depth 34 - Reducedness of the n-torsion scheme for invertible n
WeierstrassProjModel.RelativeGroupLaw.isReduced_schemeKer_of_isPointsEval_of_isUnit45 below · depth 34 - Degree-zero functions on the two standard charts of a Weierstrass model
WeierstrassProjModel.exists_fromZeroRingHom_eq_of_awayMap_eq0 below · depth 34 - Two-chart description of global sections of the Weierstrass model
WeierstrassProjModel.projModelCR_sections_twoChart0 below · depth 34 - Relabelled Drinfeld pair passes through explicit cusp points
ModularCurve.FullLevel.AuxLevel.exists_isSectionThrough_relabel_coe_eq_cuspData_of_dvd179 below · depth 35 - Specialisation of the H₁ chart yields a κ(A)-algebra homomorphism
ModularCurve.FullLevel.Diamond.exists_algHom_forall_apply_residue_eq_apply_of_eq_map_classify_rigidDataH1Pow859 below · depth 35 - Existence of a moduli place for the Frobenius-twisted Γ₀(M')-class
ModularCurve.FullLevel.Diamond.exists_isModuliPlaceOf_map_frobenius_of_forall_evalAt_eq_of_eq_map_classify_rigidDataH1Pow_of_tatePoint_pinGamma12,817 below · depth 35 - Gauss nonunits lie in the supersingular maximal ideal
ModularCurve.FullLevel.Diamond.mem_of_coe_mem_nonunits_of_isMaximal_of_mem_ssJSet_chartAlgFin2,297 below · depth 35
… and 150 more statements (search for the module name to find them).