Definitions/Def_Isogeny_ConditionalCurrency.lean
Pic⁰ pushforward along function-field maps; isogeny data on points
The first part descends the divisor pushforward along an integral K-algebra map \varphi : F \to F' of fields to divisor classes. AlgebraicCurve.Pic0.pushforwardAlongDegZero restricts Divisor.pushforwardAlong φ hφ (on places: w \mapsto f(w)\,[w|_F], where w|_F is the restriction of the valuation subring and f(w) the residue-extension degree) to the degree-zero subgroups, which is legitimate because pushforward preserves degree; pushforwardAlongHom then quotients by principal divisors, using two extra explicit hypotheses: hfin : FiniteAlong K φ, i.e. F' is a finite F-module via \varphi, and hN : NormFormulaAlong K φ hfin, the project's predicate asserting that for every f \in F'^\times the pushforward of \mathrm{div}(f) is \mathrm{div}(N_{F'/F}f) — a hypothesis, not a theorem. Place.deg_restrictAlong_mul_inertiaDegAlong records \deg(w|_F)\cdot f(w) = \deg(w).
The second part fixes an algebraically closed field F of characteristic zero, elliptic V,W in affine Weierstrass form carrying the classes GenusOnePlaceGate (data: a bijection W(F) \simeq places of F(W), all residue degrees 1) and AbelTheorem (a degree-zero divisor is principal iff its image under divisorSum vanishes), and an integral F-algebra map \iota : F(V) \to F(W). Since all residue degrees are 1, all inertia degrees are 1 and pushforward carries n[w] to n[w|_{F(V)}]. Conjugating pushforwardAlongHom by the Abel–Jacobi isomorphisms genusOnePic0Equiv gives pointMapOfPushforward : W.Point →+ V.Point. A group of three lemmas in a common shape says that any map g of point sets with g(0)=0 which matches \iota on places, (\mathrm{place}\,P)|_{F(V)} = \mathrm{place}\,g(P), equals this homomorphism, hence is additive, and that g(P)=0 exactly when the class of (P)-(0) pushes forward to zero. Finally IsogenyEndDatum W and IsogenyHomDatum V₀ V₁ bundle (\iota,\ \text{integrality},\ \text{finiteness}) — note the contravariance: the latter has \iota : F(V_1) \to F(V_0) and yields pointHom : V₀.Point →+ V₁.Point; isogenyEndSubring is the subring of AddMonoid.End W.Point generated by all pointEnd, given norm-formula witnesses for every datum.
Relation to Mathlib
Places, divisors, principal divisors and \mathrm{Pic}^0 of a function field in this valuation-subring formulation are the project's own; Mathlib supplies the ambient algebra (Finsupp, QuotientAddGroup, AddMonoid.End, Subring.closure, Algebra.norm, residue fields of local rings) and WeierstrassCurve.Affine with its group of points, but no divisor-class theory for curves and no isogeny-induced maps of this kind.
Where it is used
This is the mechanism by which an inclusion of function fields of elliptic curves is turned into an additive map of point groups, so that endomorphism rings and isogeny-induced homomorphisms can be manipulated group-theoretically. The GenusOnePlaceGate datum is an arbitrary point–place bijection with all residue degrees one, so statements identifying these maps with named geometric maps require further hypotheses pinning the dictionary.
References
- J. H. Silverman, The Arithmetic of Elliptic Curves, Graduate Texts in Mathematics 106, Springer, 1986, Chapters II–III
- H. Stichtenoth, Algebraic Function Fields and Codes, Springer, 1993, Chapter III
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 226 lines
- 27 declarations
- used in the statements of 66 theorems and imported by 85 proofs
- imports 2 definition modules
Source file: Definitions/Def_Isogeny_ConditionalCurrency.lean
Imported by
Declarations
- def
AlgebraicCurve.Pic0.pushforwardAlongDegZero - theorem
AlgebraicCurve.Pic0.coe_pushforwardAlongDegZero - def
AlgebraicCurve.Pic0.pushforwardAlongHom - theorem
AlgebraicCurve.Pic0.pushforwardAlongHom_mk - theorem
AlgebraicCurve.Place.deg_restrictAlong_mul_inertiaDegAlong - theorem
WeierstrassCurve.Affine.inertiaDegAlong_eq_one - theorem
WeierstrassCurve.Affine.pushforwardAlong_single_eq - theorem
WeierstrassCurve.Affine.pushforwardAlongDegZero_pointDivisor - theorem
WeierstrassCurve.Affine.pushforwardAlongHom_pointClass - def
WeierstrassCurve.Affine.pointMapOfPushforward - theorem
WeierstrassCurve.Affine.pointMapOfPushforward_apply - theorem
WeierstrassCurve.Affine.pointMapOfPushforward_eq_of_seam - theorem
WeierstrassCurve.Affine.map_add_of_seam - theorem
WeierstrassCurve.Affine.eq_zero_iff_of_seam - structure
WeierstrassCurve.Affine.IsogenyEndDatum - field
WeierstrassCurve.Affine.IsogenyEndDatum.hfin - def
WeierstrassCurve.Affine.IsogenyEndDatum.pointEnd - theorem
WeierstrassCurve.Affine.IsogenyEndDatum.pointEnd_apply - theorem
WeierstrassCurve.Affine.IsogenyEndDatum.pointEnd_eq_of_seam - def
WeierstrassCurve.Affine.isogenyEndSubring - theorem
WeierstrassCurve.Affine.IsogenyEndDatum.pointEnd_mem_isogenyEndSubring - structure
WeierstrassCurve.Affine.IsogenyHomDatum - field
WeierstrassCurve.Affine.IsogenyHomDatum.hfin - def
WeierstrassCurve.Affine.IsogenyHomDatum.pointHom - theorem
WeierstrassCurve.Affine.IsogenyHomDatum.pointHom_apply - theorem
WeierstrassCurve.Affine.IsogenyHomDatum.pointHom_eq_of_seam - def
WeierstrassCurve.Affine.IsogenyHomDatum.ofEndDatum
Source
import Mathlib import Definitions.Def_AlgebraicCurve_Correspondence import Definitions.Def_WeierstrassCurve_GenusOnePic0 set_option autoImplicit false noncomputable section IsogenyCurrency section Delta namespace AlgebraicCurve variable {K F F' : Type*} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] namespace Pic0 variable (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) variable (hfin : FiniteAlong K φ) (hN : NormFormulaAlong K φ hfin) def pushforwardAlongDegZero : Divisor.degZero (K := K) (F := F') →+ Divisor.degZero (K := K) (F := F) := ((Divisor.pushforwardAlong φ hφ).domRestrict (Divisor.degZero (K := K) (F := F'))).codRestrict _ (fun D => Divisor.pushforwardAlong_mem_degZero φ hφ D.2) @[simp] theorem coe_pushforwardAlongDegZero (D : Divisor.degZero (K := K) (F := F')) : (pushforwardAlongDegZero φ hφ D : Divisor K F) = Divisor.pushforwardAlong φ hφ (D : Divisor K F') := rfl def pushforwardAlongHom : Pic0 K F' →+ Pic0 K F := QuotientAddGroup.map _ _ (pushforwardAlongDegZero φ hφ) (by rintro ⟨D, hD0⟩ hD simp only [AddSubgroup.mem_addSubgroupOf] at hD ⊢ exact Divisor.isPrincipal_pushforwardAlong φ hφ hfin hN hD) theorem pushforwardAlongHom_mk (D : Divisor.degZero (K := K) (F := F')) : pushforwardAlongHom φ hφ hfin hN (mk D) = mk (pushforwardAlongDegZero φ hφ D) := rfl end Pic0 end AlgebraicCurve end Delta open AlgebraicCurve namespace AlgebraicCurve variable {K F F' : Type*} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] theorem Place.deg_restrictAlong_mul_inertiaDegAlong (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (w : Place K F') : (w.restrictAlong φ hφ).deg * w.inertiaDegAlong φ hφ = w.deg := by letI := algebraAlong φ haveI := isScalarTower_along φ haveI := isIntegral_along φ hφ exact w.deg_restrict_mul_inertiaDeg end AlgebraicCurve namespace WeierstrassCurve.Affine universe u variable {F : Type u} [Field F] [DecidableEq F] [IsAlgClosed F] [CharZero F] variable {V W : Affine F} [V.IsElliptic] [W.IsElliptic] variable [GenusOnePlaceGate V] [AbelTheorem V] [GenusOnePlaceGate W] [AbelTheorem W] variable (ι : V.FunctionField →ₐ[F] W.FunctionField) (hι : ι.toRingHom.IsIntegral) theorem inertiaDegAlong_eq_one (w : AlgebraicCurve.Place F W.FunctionField) : w.inertiaDegAlong ι hι = 1 := by have h := AlgebraicCurve.Place.deg_restrictAlong_mul_inertiaDegAlong ι hι w rw [deg_eq_one (W := V) (w.restrictAlong ι hι), deg_eq_one (W := W) w, one_mul] at h exact h theorem pushforwardAlong_single_eq (w : AlgebraicCurve.Place F W.FunctionField) (n : ℤ) : Divisor.pushforwardAlong ι hι (Finsupp.single w n) = Finsupp.single (w.restrictAlong ι hι) n := by rw [Divisor.pushforwardAlong_single, inertiaDegAlong_eq_one ι hι w, Nat.cast_one, mul_one] variable (hfin : FiniteAlong F ι) (hN : NormFormulaAlong F ι hfin) theorem pushforwardAlongDegZero_pointDivisor {P : W.Point} {Q : V.Point} (hP : (placeOfPoint P).restrictAlong ι hι = placeOfPoint Q) (h0 : (placeOfPoint (0 : W.Point)).restrictAlong ι hι = placeOfPoint (0 : V.Point)) : Pic0.pushforwardAlongDegZero ι hι (pointDivisor P) = pointDivisor Q := by refine Subtype.ext ?_ rw [Pic0.coe_pushforwardAlongDegZero, coe_pointDivisor, coe_pointDivisor, map_sub, pushforwardAlong_single_eq ι hι, pushforwardAlong_single_eq ι hι, hP, h0] theorem pushforwardAlongHom_pointClass {P : W.Point} {Q : V.Point} (hP : (placeOfPoint P).restrictAlong ι hι = placeOfPoint Q) (h0 : (placeOfPoint (0 : W.Point)).restrictAlong ι hι = placeOfPoint (0 : V.Point)) : Pic0.pushforwardAlongHom ι hι hfin hN (pointClass P) = pointClass Q := by show Pic0.pushforwardAlongHom ι hι hfin hN (Pic0.mk (pointDivisor P)) = Pic0.mk (pointDivisor Q) rw [Pic0.pushforwardAlongHom_mk, pushforwardAlongDegZero_pointDivisor ι hι hP h0] def pointMapOfPushforward : W.Point →+ V.Point := ((genusOnePic0Equiv V).toAddMonoidHom.comp (Pic0.pushforwardAlongHom ι hι hfin hN)).comp (genusOnePic0Equiv W).symm.toAddMonoidHom @[simp] theorem pointMapOfPushforward_apply (P : W.Point) : pointMapOfPushforward ι hι hfin hN P = genusOnePic0Equiv V (Pic0.pushforwardAlongHom ι hι hfin hN (pointClass P)) := by rw [← genusOnePic0Equiv_symm_apply] rfl theorem pointMapOfPushforward_eq_of_seam (g : W.Point → V.Point) (hg0 : g 0 = 0) (hg : ∀ P, (placeOfPoint P).restrictAlong ι hι = placeOfPoint (g P)) (P : W.Point) : pointMapOfPushforward ι hι hfin hN P = g P := by rw [pointMapOfPushforward_apply, pushforwardAlongHom_pointClass ι hι hfin hN (hg P) ((hg 0).trans (by rw [hg0])), genusOnePic0Equiv_apply, pic0ToPoint_pointClass] include hfin hN in theorem map_add_of_seam (g : W.Point → V.Point) (hg0 : g 0 = 0) (hg : ∀ P, (placeOfPoint P).restrictAlong ι hι = placeOfPoint (g P)) (P Q : W.Point) : g (P + Q) = g P + g Q := by rw [← pointMapOfPushforward_eq_of_seam ι hι hfin hN g hg0 hg (P + Q), ← pointMapOfPushforward_eq_of_seam ι hι hfin hN g hg0 hg P, ← pointMapOfPushforward_eq_of_seam ι hι hfin hN g hg0 hg Q, map_add] theorem eq_zero_iff_of_seam (g : W.Point → V.Point) (hg0 : g 0 = 0) (hg : ∀ P, (placeOfPoint P).restrictAlong ι hι = placeOfPoint (g P)) (P : W.Point) : g P = 0 ↔ Pic0.pushforwardAlongHom ι hι hfin hN (pointClass P) = 0 := by rw [← pointMapOfPushforward_eq_of_seam ι hι hfin hN g hg0 hg P, pointMapOfPushforward_apply] constructor · intro h exact (genusOnePic0Equiv V).injective (by rw [h, map_zero]) · intro h rw [h, map_zero] end WeierstrassCurve.Affine namespace WeierstrassCurve.Affine universe u variable {F : Type u} [Field F] [DecidableEq F] [IsAlgClosed F] [CharZero F] variable (W : Affine F) [W.IsElliptic] [GenusOnePlaceGate W] [AbelTheorem W] structure IsogenyEndDatum where ι : W.FunctionField →ₐ[F] W.FunctionField hι : ι.toRingHom.IsIntegral hfin : FiniteAlong F ι namespace IsogenyEndDatum variable {W} def pointEnd (D : IsogenyEndDatum W) (hN : NormFormulaAlong F D.ι D.hfin) : AddMonoid.End W.Point := pointMapOfPushforward D.ι D.hι D.hfin hN theorem pointEnd_apply (D : IsogenyEndDatum W) (hN : NormFormulaAlong F D.ι D.hfin) (P : W.Point) : D.pointEnd hN P = genusOnePic0Equiv W (Pic0.pushforwardAlongHom D.ι D.hι D.hfin hN (pointClass P)) := pointMapOfPushforward_apply D.ι D.hι D.hfin hN P theorem pointEnd_eq_of_seam (D : IsogenyEndDatum W) (hN : NormFormulaAlong F D.ι D.hfin) (g : W.Point → W.Point) (hg0 : g 0 = 0) (hg : ∀ P, (placeOfPoint P).restrictAlong D.ι D.hι = placeOfPoint (g P)) (P : W.Point) : D.pointEnd hN P = g P := pointMapOfPushforward_eq_of_seam D.ι D.hι D.hfin hN g hg0 hg P end IsogenyEndDatum def isogenyEndSubring (hNs : ∀ D : IsogenyEndDatum W, NormFormulaAlong F D.ι D.hfin) : Subring (AddMonoid.End W.Point) := Subring.closure (Set.range (fun D => IsogenyEndDatum.pointEnd D (hNs D))) theorem IsogenyEndDatum.pointEnd_mem_isogenyEndSubring (hNs : ∀ D : IsogenyEndDatum W, NormFormulaAlong F D.ι D.hfin) (D : IsogenyEndDatum W) : D.pointEnd (hNs D) ∈ isogenyEndSubring W hNs := Subring.subset_closure ⟨D, rfl⟩ structure IsogenyHomDatum (V₀ V₁ : Affine F) where ι : V₁.FunctionField →ₐ[F] V₀.FunctionField hι : ι.toRingHom.IsIntegral hfin : FiniteAlong F ι namespace IsogenyHomDatum variable {V₀ V₁ : Affine F} [V₀.IsElliptic] [V₁.IsElliptic] variable [GenusOnePlaceGate V₀] [AbelTheorem V₀] [GenusOnePlaceGate V₁] [AbelTheorem V₁] def pointHom (D : IsogenyHomDatum V₀ V₁) (hN : NormFormulaAlong F D.ι D.hfin) : V₀.Point →+ V₁.Point := pointMapOfPushforward D.ι D.hι D.hfin hN theorem pointHom_apply (D : IsogenyHomDatum V₀ V₁) (hN : NormFormulaAlong F D.ι D.hfin) (P : V₀.Point) : D.pointHom hN P = genusOnePic0Equiv V₁ (Pic0.pushforwardAlongHom D.ι D.hι D.hfin hN (pointClass P)) := pointMapOfPushforward_apply D.ι D.hι D.hfin hN P theorem pointHom_eq_of_seam (D : IsogenyHomDatum V₀ V₁) (hN : NormFormulaAlong F D.ι D.hfin) (g : V₀.Point → V₁.Point) (hg0 : g 0 = 0) (hg : ∀ P, (placeOfPoint P).restrictAlong D.ι D.hι = placeOfPoint (g P)) (P : V₀.Point) : D.pointHom hN P = g P := pointMapOfPushforward_eq_of_seam D.ι D.hι D.hfin hN g hg0 hg P def ofEndDatum {W' : Affine F} (D : IsogenyEndDatum W') : IsogenyHomDatum W' W' where ι := D.ι hι := D.hι hfin := D.hfin end IsogenyHomDatum end WeierstrassCurve.Affine end IsogenyCurrency
Statements phrased using this module (66)
- Vélu quotient isogeny via places, odd order case
WeierstrassCurve.exists_veluFunctionFieldHom_restrictAlong_placeOfPoint_eq50 below · depth 8 - Kernel of a pushforward point map has order the degree
WeierstrassCurve.Affine.natCard_ker_pointMapOfPushforward_eq_finrankAlong37 below · depth 9 - Cyclic kernel of order N forces Φ_N(j(E),j(E'))=0
WeierstrassCurve.Affine.eval_modularPolynomial_map_j_eq_zero_of_isAddCyclic_ker_pointMapOfPushforward91 below · depth 10 - Pushforward map on points of an elliptic curve is surjective
WeierstrassCurve.Affine.pointMapOfPushforward_surjective5 below · depth 10 - Vélu function-field embedding with point map of kernel ⟨ Q⟩
WeierstrassCurve.exists_veluFunctionFieldHom_pointMapOfPushforward_ker_eq_zmultiples51 below · depth 10 - Cyclic N-isogeny of lattice curves comes from index-N sublattice
PeriodPair.exists_scale_lattice_subset_and_sublatticeIndex_eq_and_isAddCyclic_sublatticeQuotient58 below · depth 11 - Non-integral j forces endomorphisms to be integer multiplications
WeierstrassCurve.Affine.IsogenyEndDatum.exists_forall_pointEnd_eq_zsmul_of_not_isIntegral_j169 below · depth 11 - Base change of a cyclic kernel of order N
WeierstrassCurve.Affine.exists_algHom_baseChange_of_isAddCyclic_ker_pointMapOfPushforward56 below · depth 11 - Cyclic degree-N function-field seams descend to countable subfields
WeierstrassCurve.Affine.exists_intermediateField_countable_map_eq_of_isAddCyclic_ker_pointMapOfPushforward59 below · depth 11 - Norm formula along isogeny endomorphism data in characteristic zero
WeierstrassCurve.Affine.forall_normFormulaAlong_of_isAlgClosed_of_charZero31 below · depth 11 - Cyclic kernel and its order transport along function-field isomorphisms
WeierstrassCurve.Affine.isAddCyclic_ker_pointMapOfPushforward_of_algEquiv_conj55 below · depth 11 - Equal j of Vélu quotients forces equal cyclic subgroups
WeierstrassCurve.zmultiples_eq_of_veluQuotient_j_eq_of_forall_pointEnd_eq_zsmul70 below · depth 11 - Roof package along a surjective leg of function fields
AlgebraicCurve.Pic0.roof_package_of_surjective167 below · depth 12 - Uₚ plus Atkin–Lehner equals degeneracy pull-push on J_H(M)
ModularCurve.JHNeronObjectAtP.genOpH_U_add_smul_eq_pull_degPts_of_roof234 below · depth 12 - Lifting a function-field map of complex tori to an entire function
PeriodPair.exists_differentiable_toPoint_comp_eq_pointMapOfPushforward_toPoint55 below · depth 12 - Degree-N endomorphism forces Φ_N(j(E),j(E))=0
WeierstrassCurve.Affine.IsogenyEndDatum.aeval_j_diag_eq_zero_of_finrankAlong_eq87 below · depth 12 - Nonzero elements of the isogeny subring come from isogeny data
WeierstrassCurve.Affine.IsogenyEndDatum.exists_pointEnd_eq_of_mem_isogenyEndSubring41 below · depth 12 - Non-integral isogeny endomorphism forces an imaginary quadratic degree form
WeierstrassCurve.Affine.IsogenyEndDatum.exists_sq_lt_four_mul_and_forall_exists_finrankAlong_eq51 below · depth 12 - Factoring an isogeny through one with smaller kernel
WeierstrassCurve.Affine.IsogenyHomDatum.exists_pointHom_comp_eq_of_ker_le_of_isCentred52 below · depth 12 - Cyclic kernel of order N descends along base change
WeierstrassCurve.Affine.isAddCyclic_ker_pointMapOfPushforward_of_baseChange_algHom56 below · depth 12 - Atkin–Lehner relation for Uₚ on Pic⁰ of modular curves
ModularCurve.JH.heckeOperatorHAlong_pullbackAlongHom_add_pullbackAlongHom_atkinLehner_smul_eq_pullbackAlongHom_comp_heckeBetaHBar_pushforwardAlongHom233 below · depth 13 - Existence of dual endomorphism data with norm the degree
WeierstrassCurve.Affine.IsogenyEndDatum.exists_dualEndData_dual_mem_and_norm_eq_finrankAlong44 below · depth 13 - Transcendental j forces every isogeny endomorphism to be an integer
WeierstrassCurve.Affine.IsogenyEndDatum.exists_forall_pointEnd_eq_zsmul_of_transcendental_j169 below · depth 13 - Isogeny-induced endomorphisms of E(F) are closed under addition
WeierstrassCurve.Affine.IsogenyEndDatum.exists_pointEnd_eq_add40 below · depth 13 - Point map of an isogeny datum: restriction minus value at O
WeierstrassCurve.Affine.IsogenyHomDatum.pointHom_apply_eq_sub0 below · depth 13 - Integral maps into K(E) determined by action on places
WeierstrassCurve.Affine.algHom_ext_of_forall_restrictAlong_placeOfPoint_eq38 below · depth 13 - Translation by R as a function-field automorphism on places
WeierstrassCurve.Affine.exists_algEquiv_restrictAlong_placeOfPoint_eq_add38 below · depth 13 - Equal j of Vélu quotients forces equal cyclic subgroups
WeierstrassCurve.zmultiples_eq_of_veluQuotient_j_eq_of_forall_isogenyEndDatum_exists_int70 below · depth 13 - Pointwise sum of two isogeny end data is realised
WeierstrassCurve.Affine.IsogenyEndDatum.exists_restrictAlong_placeOfPoint_eq_add38 below · depth 14 - Point endomorphism of an isogeny datum equals h(P)-h(O)
WeierstrassCurve.Affine.IsogenyEndDatum.pointEnd_apply_eq_sub0 below · depth 14 - Kernel rigidity for isogenies out of a curve with End=ℤ
WeierstrassCurve.Affine.ker_pointMapOfPushforward_eq_of_j_eq_of_forall_pointEnd_eq_zsmul65 below · depth 14 - Vélu's 2-isogeny: function-field embedding matching places
WeierstrassCurve.exists_velu2FunctionFieldHom_restrictAlong_placeOfPoint_veluPointMap211 below · depth 14 - Full-kernel Vélu quotient: pushforward point map has kernel ℤQ
WeierstrassCurve.exists_functionFieldHom_fullKernelQuotient_pointMapOfPushforward_ker_eq_zmultiples81 below · depth 15 - Vélu pushforward point map has kernel ℤQ
WeierstrassCurve.exists_veluFunctionFieldHom_pointMapOfPushforward_ker_eq_zmultiples_of_oddOrder51 below · depth 16 - Surjectivity of the pushforward point map, separable case
WeierstrassCurve.Affine.pointMapOfPushforward_surjective_of_separableAlong5 below · depth 17 - Vélu function-field extension for an odd cyclic kernel
WeierstrassCurve.exists_veluFunctionFieldHom_restrictAlong_placeOfPoint_eq_of_isAlgClosed50 below · depth 17 - Push-forward on Pic⁰ is equivariant for intertwined semilinear automorphisms
AlgebraicCurve.Pic0.pushforwardAlongHom_smul4 below · depth 18 - Equal-degree separable isogenies with nested kernels: isomorphic targets
WeierstrassCurve.Affine.IsogenyHomDatum.exists_algEquiv_of_ker_le_of_finrankAlong_eq69 below · depth 18 - Separable isogenies factor through maps with smaller kernel
WeierstrassCurve.Affine.IsogenyHomDatum.exists_pointHom_comp_eq_of_ker_le_of_separableAlong67 below · depth 18 - Isogeny datum: induced map is place restriction minus origin
WeierstrassCurve.Affine.IsogenyHomDatum.pointHom_apply_eq_pointEquivPlace_sub0 below · depth 18 - Multiplication by n as an isogeny endomorphism datum
WeierstrassCurve.Affine.exists_isogenyEndDatum_restrictAlong_placeOfPoint_eq_smul28 below · depth 18 - Norm formula along every isogeny endomorphism datum over ̄ F
WeierstrassCurve.Affine.forall_normFormulaAlong_of_isAlgClosed46 below · depth 18 - Kernel size of a separable isogeny equals its degree
WeierstrassCurve.Affine.natCard_ker_pointMapOfPushforward_eq_finrankAlong_of_separableAlong10 below · depth 18 - An integral K-embedding into K(E) is determined by its action on places
WeierstrassCurve.Affine.algHom_eq_of_forall_restrictAlong_placeOfPoint_eq57 below · depth 19 - Translation by a point as a function-field automorphism
WeierstrassCurve.Affine.exists_algEquiv_forall_restrictAlong_placeOfPoint_eq_add57 below · depth 19 - Pushforward norm formula along isogeny endomorphisms in characteristic p
WeierstrassCurve.Affine.forall_normFormulaAlong_of_isAlgClosed_of_charP_pos21 below · depth 19 - Pull-back and push-forward between J_H(M) and J₁(M)
ModularCurve.JH.exists_pullback_pushforward_jOne_galois_and_comp_eq_nsmul_and_sum_diamondOneBar_eq223 below · depth 22 - Compatible Fricke involutions on X₁(M), X_H(M) and X_{H'}(M/p)
ModularCurve.exists_frickeAlgEquiv_triple_x1_xH_galois_smul_and_apply_inclusion_eq_and_forall_apply_degeneracy_eq83 below · depth 24 - Fricke-orthogonal diamond-fixed vectors are p-old modulo inertia coboundaries
ModularCurve.exists_pow_smul_mem_span_degeneracy_inertiaAugmentation_of_forall_weilPairing_fricke_eq_zero_diamondFixed_tateModule_jOne_of_dvd_of_not_sq_dvd3,305 below · depth 24 - Injectivity of the degeneracy Gram operator on Tate modules
ModularCurve.JH.tateModule_eq_zero_of_forall_pushforwardAlongHom_degeneracy_eq_zero903 below · depth 25 - Projection formula for the p-adic Weil pairing along X₁(M)→ X_H(M)
ModularCurve.JH.weilPairing_tateModule_jOne_pull_pull_eq_natCast_mul_of_pushforward_pullback_eq_nsmul120 below · depth 25 - Orthogonal of the toric lattice in Tₚ J_H(M)
ModularCurve.JHNeronObjectAtP.exists_pow_smul_mem_toricLattice_sup_oldLattice_of_forall_weilPairing_eq_zero469 below · depth 25 - Adjunction for divisorial Weil pairings along a finite map
AlgebraicCurve.DivisorialWeilPairingData.pair_pullbackAlong_eq_pair_pushforwardAlongHom24 below · depth 26 - Weil pairing adjunction along a purely inseparable map
AlgebraicCurve.DivisorialWeilPairingData.pair_pullbackAlong_eq_pair_pushforwardAlongHom_of_isPurelyInseparable13 below · depth 26 - Injectivity of the degeneracy Gram operator on TₚJ₁(N)
ModularCurve.JOne.tateModule_eq_zero_of_forall_pushforwardAlongHom_x1LevelInclBar_x1LevelSubstBar_eq_zero898 below · depth 26 - Pairing invariance under purely inseparable pullback and pushforward
AlgebraicCurve.WeilDatum.pairing_eq_pairing_of_pullbackAlong_of_pushforwardAlong_of_isPurelyInseparable12 below · depth 27 - Weil pairing adjunction along a finite separable map
AlgebraicCurve.WeilDatum.pairing_eq_pairing_of_pullbackAlong_of_pushforwardAlong_of_separableAlong23 below · depth 27 - Diamond twist of mixed push–pulls on J₁(N)
ModularCurve.JOne.diamondOneBar_pushforwardAlongHom_x1LevelSubstBar_pullbackAlongHom_x1LevelInclBar_eq294 below · depth 27 - Push–pull along the first degeneracy map is multiplication by degree
ModularCurve.JOne.pushforwardAlongHom_pullbackAlongHom_x1LevelInclBar_eq_finrankAlong_smul9 below · depth 27 - Push–pull along the degeneracy map β₁ is degree multiplication
ModularCurve.JOne.pushforwardAlongHom_pullbackAlongHom_x1LevelSubstBar_eq_finrankAlong_smul9 below · depth 27 - α_{1,*}β₁^* equals deg(j)· Tₚ on J₁(N)
ModularCurve.JOne.pushforwardAlongHom_x1LevelInclBar_pullbackAlongHom_x1LevelSubstBar_eq_finrankAlong_smul_heckeOperatorOneBar77 below · depth 27 - Ordinary corner: reduction to identity iff inertia acts cyclotomically
ModularCurve.JHNeronObjectAtP.reducesToOne_iff_inertia_cyclotomic_of_mem_corner_of_mem_finPts_of_ordinary_of_abelJacobiPin_of_inertF_of_levelData_of_algEquiv3,537 below · depth 30 - Idempotent and μₚ-pairing between corner and adjoint corner
ModularCurve.JHNeronObjectAtP.exists_idempotent_pairing_corner_adjointCorner_perfect_galois_radical_ncard_toric_cyclotomic_eq_of_abelJacobiPin_of_levelData_of_algEquiv3,182 below · depth 32 - Toric and finite p-torsion as mutual annihilators
ModularCurve.JHNeronObjectAtP.toricPts_finPts_mutual_annihilator_weilDatum_pairing_residueChar_of_abelJacobiPin_of_degeneracy3,116 below · depth 33 - Toric p-torsion pairs trivially with finite p-torsion
ModularCurve.JHNeronObjectAtP.weilDatum_pairing_eq_one_of_mem_toricPts_of_mem_finPts_of_abelJacobiPin_of_degeneracy_of_representsRelSubPicLevel3,100 below · depth 34 - Toric p-torsion pairs trivially with old p-torsion
ModularCurve.JHNeronObjectAtP.weilDatum_pairing_eq_one_of_mem_toricPts_of_eq_mk_pullbackAlong_of_abelJacobiPin232 below · depth 35