Definitions/Def_ModularCurve_QExpReductionModL.lean
Reduction of q-expansion function fields and Jacobians modulo a place
Throughout: a field L over \mathbb{Q}, a valuation subring A\subseteq L, a ring homomorphism \pi\colon A\to k into a field k, an intermediate field F_0 of \mathbb{Q}((q))/\mathbb{Q} and an intermediate field \bar F of k((q))/k. Write F= laurentBaseChange L F₀ for the subfield of L((q)) generated over L by the coefficientwise images of F_0; places, their degrees (the K-finrank of the residue field), \operatorname{ord}, divisors as finitely supported \mathbb{Z}-valued functions on places, Divisor.principal, Divisor.degZero and Pic0 are the project's notions for a function field inside a Laurent series field.
IsLaurentPlaceReduction A π F₀ Fbar r, for r a map from places of F/L to places of \bar F/k, is the conjunction of: (i) (rP).\mathrm{deg}=P.\mathrm{deg} for every P; (ii) for every y\in A((q)) whose coefficientwise image in L((q)) lies in F and whose coefficientwise reduction \pi(y) lies in \bar F and is nonzero, and every divisor D with D(P)=\operatorname{ord}_P(y) for all P, the push-forward Finsupp.mapDomain r D satisfies (r_*D)(Q)=\operatorname{ord}_Q(\pi(y)) for all Q. laurentIntegralPrincipalDivisors is the set of divisors arising as divisors of such y, and LaurentPrincipalGeneratedByIntegral says that Divisor.principal for F/L is contained in the subgroup generated by that set. LaurentReductionInputs asserts the existence of an r satisfying (i)–(ii) together with this generation property (whose statement does not involve r).
Accompanying lemmas record that r_* preserves degrees of divisors, degree-zero divisors and, under the generation hypothesis, principal divisors; laurentReductionDiv, laurentReductionDegZero and laurentReductionPic0 are the resulting additive maps on divisors, on degree-zero divisors and on \mathrm{Pic}^0. laurentReduction A π F₀ Fbar is a total additive map \mathrm{Pic}^0(F/L)\to\mathrm{Pic}^0(\bar F/k): the descent attached to a chosen witness when LaurentReductionInputs holds, and the zero map otherwise, with the corresponding characterisations on classes and in the negative case.
Two uniqueness statements: if r_1,r_2 have equal push-forwards on all divisors of such integral y, the generation property holds, every place of F/L has degree 1 and \mathrm{Pic}^0(F/L) is divisible, then either r_1=r_2 or r_1 is constant; adding that principal divisors have degree 0 and that some principal divisor has nonzero push-forward under r_1 forces r_1=r_2.
The final section specialises to L=\overline{\mathbb{Q}}, \pi the residue map of A, F_0 the q-expansion function field qExpFunctionFieldC ℚ Γ of a subgroup \Gamma\le \mathrm{SL}_2(\mathbb{Z}) and \bar F the corresponding field over the residue field of A, yielding IsPlaceReductionQExpModL, ReductionInputsQExpModL, a chosen map of places placeReductionQExpModL satisfying the specification, and reductionQExpModL A Γ on \mathrm{Pic}^0; for \Gamma=\Gamma_1(M) this sends JOne M to JOneC M over the residue field.
Relation to Mathlib
Mathlib has no notion of reduction of a function field or of its divisor class group modulo a place; these predicates and maps are the project's own, built on its Place/Divisor/Pic0 for subfields of a Laurent series field, with Mathlib supplying LaurentSeries, ValuationSubring, IsLocalRing.residue and Finsupp.mapDomain.
Where it is used
The reduction map provides the comparison between the Jacobian of a modular curve over \overline{\mathbb{Q}}, as realised through q-expansion function fields, and its reduction at a place of \overline{\mathbb{Q}}, the setting in which torsion in J_1(M) and the associated Galois representations are studied. The conditions ReductionInputsQExpModL isolate, as named hypotheses, the good-reduction input needed for that comparison.
References
- H. Stichtenoth, Algebraic Function Fields and Codes, 2nd edition, Graduate Texts in Mathematics 254, Springer, 2009
- J.-I. Igusa, Kroneckerian model of fields of elliptic modular functions, American Journal of Mathematics 81 (1959), 561–577
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 339 lines
- 30 declarations
- used in the statements of 39 theorems and imported by 45 proofs
- imports 1 definition modules
Source file: Definitions/Def_ModularCurve_QExpReductionModL.lean
Imports
Declarations
- def
ModularCurve.IsLaurentPlaceReduction - def
ModularCurve.laurentIntegralPrincipalDivisors - def
ModularCurve.LaurentPrincipalGeneratedByIntegral - def
ModularCurve.LaurentReductionInputs - theorem
ModularCurve.IsLaurentPlaceReduction.deg_eq - theorem
ModularCurve.IsLaurentPlaceReduction.isPrincipal_mapDomain - theorem
ModularCurve.degree_mapDomain_of_laurent_deg_eq - theorem
ModularCurve.mapDomain_mem_degZero_of_laurent_deg_eq - theorem
ModularCurve.IsLaurentPlaceReduction.mapDomain_mem_principal - def
ModularCurve.laurentReductionDiv - theorem
ModularCurve.laurentReductionDiv_apply - theorem
ModularCurve.laurentReductionDiv_single - def
ModularCurve.laurentReductionDegZero - theorem
ModularCurve.coe_laurentReductionDegZero - def
ModularCurve.laurentReductionPic0 - theorem
ModularCurve.laurentReductionPic0_mk - def
ModularCurve.laurentReduction - theorem
ModularCurve.laurentReduction_eq - theorem
ModularCurve.laurentReduction_mk - theorem
ModularCurve.laurentReduction_of_not - theorem
ModularCurve.int_eq_zero_of_forall_dvd' - theorem
ModularCurve.IsLaurentPlaceReduction.eq_or_const_of_agree - theorem
ModularCurve.IsLaurentPlaceReduction.eq_of_agree - abbrev
ModularCurve.IsPlaceReductionQExpModL - abbrev
ModularCurve.ReductionInputsQExpModL - def
ModularCurve.placeReductionQExpModL - theorem
ModularCurve.isPlaceReductionQExpModL_placeReductionQExpModL - abbrev
ModularCurve.reductionQExpModL - theorem
ModularCurve.reductionQExpModL_mk - theorem
ModularCurve.reductionQExpModL_of_not
Source
import Mathlib import Definitions.Def_ModularCurve_X1 set_option autoImplicit false noncomputable section open HahnSeries IntermediateField AlgebraicCurve namespace ModularCurve section Spec variable {L : Type*} [Field L] [Algebra ℚ L] (A : ValuationSubring L) variable {k : Type*} [Field k] (π : A →+* k) variable (F₀ : IntermediateField ℚ (LaurentSeries ℚ)) (Fbar : IntermediateField k (LaurentSeries k)) def IsLaurentPlaceReduction (r : Place L (laurentBaseChange L F₀) → Place k Fbar) : Prop := (∀ P, (r P).deg = P.deg) ∧ ∀ (y : LaurentSeries A) (hy : coeffMap A.subtype y ∈ laurentBaseChange L F₀) (hyk : coeffMap π y ∈ Fbar), coeffMap π y ≠ 0 → ∀ D : Divisor L (laurentBaseChange L F₀), (∀ P, D P = P.ord (⟨coeffMap A.subtype y, hy⟩ : laurentBaseChange L F₀)) → ∀ Q, Finsupp.mapDomain r D Q = Q.ord (⟨coeffMap π y, hyk⟩ : Fbar) def laurentIntegralPrincipalDivisors : Set (Divisor L (laurentBaseChange L F₀)) := {D | ∃ (y : LaurentSeries A) (hy : coeffMap A.subtype y ∈ laurentBaseChange L F₀), coeffMap π y ∈ Fbar ∧ coeffMap π y ≠ 0 ∧ ∀ P, D P = P.ord (⟨coeffMap A.subtype y, hy⟩ : laurentBaseChange L F₀)} def LaurentPrincipalGeneratedByIntegral : Prop := Divisor.principal (K := L) (F := laurentBaseChange L F₀) ≤ AddSubgroup.closure (laurentIntegralPrincipalDivisors A π F₀ Fbar) def LaurentReductionInputs : Prop := ∃ r, IsLaurentPlaceReduction A π F₀ Fbar r ∧ LaurentPrincipalGeneratedByIntegral A π F₀ Fbar end Spec section SpecLemmas variable {L : Type*} [Field L] [Algebra ℚ L] {A : ValuationSubring L} variable {k : Type*} [Field k] {π : A →+* k} variable {F₀ : IntermediateField ℚ (LaurentSeries ℚ)} {Fbar : IntermediateField k (LaurentSeries k)} variable {r : Place L (laurentBaseChange L F₀) → Place k Fbar} theorem IsLaurentPlaceReduction.deg_eq (hr : IsLaurentPlaceReduction A π F₀ Fbar r) (P : Place L (laurentBaseChange L F₀)) : (r P).deg = P.deg := hr.1 P theorem IsLaurentPlaceReduction.isPrincipal_mapDomain (hr : IsLaurentPlaceReduction A π F₀ Fbar r) {D : Divisor L (laurentBaseChange L F₀)} (hD : D ∈ laurentIntegralPrincipalDivisors A π F₀ Fbar) : Divisor.IsPrincipal (Finsupp.mapDomain r D) := by obtain ⟨y, hy, hyk, hne, hDy⟩ := hD refine ⟨⟨coeffMap π y, hyk⟩, fun h => hne (congrArg Subtype.val h), fun Q => ?_⟩ exact hr.2 y hy hyk hne D hDy Q theorem degree_mapDomain_of_laurent_deg_eq (hdeg : ∀ P, (r P).deg = P.deg) (D : Divisor L (laurentBaseChange L F₀)) : Divisor.degree (Finsupp.mapDomain r D) = Divisor.degree D := by induction D using Finsupp.induction with | zero => simp | single_add P n D _ _ ih => rw [Finsupp.mapDomain_add, map_add, map_add, ih, Finsupp.mapDomain_single, Divisor.degree_single, Divisor.degree_single, hdeg] theorem mapDomain_mem_degZero_of_laurent_deg_eq (hdeg : ∀ P, (r P).deg = P.deg) {D : Divisor L (laurentBaseChange L F₀)} (hD : D ∈ Divisor.degZero (K := L) (F := laurentBaseChange L F₀)) : Finsupp.mapDomain r D ∈ Divisor.degZero (K := k) (F := Fbar) := by rw [Divisor.mem_degZero] at hD ⊢ rw [degree_mapDomain_of_laurent_deg_eq hdeg, hD] theorem IsLaurentPlaceReduction.mapDomain_mem_principal (hr : IsLaurentPlaceReduction A π F₀ Fbar r) (hgen : LaurentPrincipalGeneratedByIntegral A π F₀ Fbar) {D : Divisor L (laurentBaseChange L F₀)} (hD : D ∈ Divisor.principal (K := L) (F := laurentBaseChange L F₀)) : Finsupp.mapDomain r D ∈ Divisor.principal (K := k) (F := Fbar) := by have hD' := hgen hD clear hD induction hD' using AddSubgroup.closure_induction with | mem E hE => exact hr.isPrincipal_mapDomain hE | zero => rw [Finsupp.mapDomain_zero]; exact AddSubgroup.zero_mem _ | add E E' _ _ hE hE' => rw [Finsupp.mapDomain_add]; exact AddSubgroup.add_mem _ hE hE' | neg E _ hE => rw [← Finsupp.mapDomain.addMonoidHom_apply, map_neg, Finsupp.mapDomain.addMonoidHom_apply] exact AddSubgroup.neg_mem _ hE end SpecLemmas section Descent variable {L : Type*} [Field L] [Algebra ℚ L] {A : ValuationSubring L} variable {k : Type*} [Field k] {π : A →+* k} variable {F₀ : IntermediateField ℚ (LaurentSeries ℚ)} {Fbar : IntermediateField k (LaurentSeries k)} variable (r : Place L (laurentBaseChange L F₀) → Place k Fbar) def laurentReductionDiv : Divisor L (laurentBaseChange L F₀) →+ Divisor k Fbar := Finsupp.mapDomain.addMonoidHom r @[simp] theorem laurentReductionDiv_apply (D : Divisor L (laurentBaseChange L F₀)) : laurentReductionDiv r D = Finsupp.mapDomain r D := rfl theorem laurentReductionDiv_single (P : Place L (laurentBaseChange L F₀)) (n : ℤ) : laurentReductionDiv r (Finsupp.single P n) = Finsupp.single (r P) n := Finsupp.mapDomain_single def laurentReductionDegZero (hdeg : ∀ P, (r P).deg = P.deg) : Divisor.degZero (K := L) (F := laurentBaseChange L F₀) →+ Divisor.degZero (K := k) (F := Fbar) := ((laurentReductionDiv r).domRestrict _).codRestrict _ fun D => mapDomain_mem_degZero_of_laurent_deg_eq hdeg D.2 @[simp] theorem coe_laurentReductionDegZero (hdeg : ∀ P, (r P).deg = P.deg) (D : Divisor.degZero (K := L) (F := laurentBaseChange L F₀)) : (laurentReductionDegZero r hdeg D : Divisor k Fbar) = Finsupp.mapDomain r (D : Divisor L (laurentBaseChange L F₀)) := rfl def laurentReductionPic0 (hr : IsLaurentPlaceReduction A π F₀ Fbar r) (hgen : LaurentPrincipalGeneratedByIntegral A π F₀ Fbar) : Pic0 L (laurentBaseChange L F₀) →+ Pic0 k Fbar := QuotientAddGroup.map _ _ (laurentReductionDegZero r hr.1) (by rintro ⟨D, hD0⟩ hD simp only [AddSubgroup.mem_addSubgroupOf] at hD ⊢ exact hr.mapDomain_mem_principal hgen hD) theorem laurentReductionPic0_mk (hr : IsLaurentPlaceReduction A π F₀ Fbar r) (hgen : LaurentPrincipalGeneratedByIntegral A π F₀ Fbar) (D : Divisor.degZero (K := L) (F := laurentBaseChange L F₀)) : laurentReductionPic0 r hr hgen (Pic0.mk D) = Pic0.mk (laurentReductionDegZero r hr.1 D) := rfl end Descent section Total variable {L : Type*} [Field L] [Algebra ℚ L] (A : ValuationSubring L) variable {k : Type*} [Field k] (π : A →+* k) variable (F₀ : IntermediateField ℚ (LaurentSeries ℚ)) (Fbar : IntermediateField k (LaurentSeries k)) open Classical in def laurentReduction : Pic0 L (laurentBaseChange L F₀) →+ Pic0 k Fbar := if h : LaurentReductionInputs A π F₀ Fbar then laurentReductionPic0 h.choose h.choose_spec.1 h.choose_spec.2 else 0 variable {A π F₀ Fbar} theorem laurentReduction_eq (h : LaurentReductionInputs A π F₀ Fbar) : laurentReduction A π F₀ Fbar = laurentReductionPic0 h.choose h.choose_spec.1 h.choose_spec.2 := by rw [laurentReduction, dif_pos h] theorem laurentReduction_mk (h : LaurentReductionInputs A π F₀ Fbar) (D : Divisor.degZero (K := L) (F := laurentBaseChange L F₀)) : laurentReduction A π F₀ Fbar (Pic0.mk D) = Pic0.mk (laurentReductionDegZero h.choose h.choose_spec.1.1 D) := by rw [laurentReduction_eq h] rfl theorem laurentReduction_of_not (h : ¬ LaurentReductionInputs A π F₀ Fbar) : laurentReduction A π F₀ Fbar = 0 := by rw [laurentReduction, dif_neg h] end Total section Uniqueness variable {L : Type*} [Field L] [Algebra ℚ L] {A : ValuationSubring L} variable {k : Type*} [Field k] {π : A →+* k} variable {F₀ : IntermediateField ℚ (LaurentSeries ℚ)} {Fbar : IntermediateField k (LaurentSeries k)} private theorem int_eq_zero_of_forall_dvd' {a : ℤ} (h : ∀ n : ℕ, n ≠ 0 → (n : ℤ) ∣ a) : a = 0 := Int.eq_zero_of_dvd_of_natAbs_lt_natAbs (h (a.natAbs + 1) (Nat.succ_ne_zero _)) (by rw [Int.natAbs_natCast]; exact Nat.lt_succ_self _) theorem IsLaurentPlaceReduction.eq_or_const_of_agree {r₁ r₂ : Place L (laurentBaseChange L F₀) → Place k Fbar} (hgen : LaurentPrincipalGeneratedByIntegral A π F₀ Fbar) (hagree : ∀ D ∈ laurentIntegralPrincipalDivisors A π F₀ Fbar, Finsupp.mapDomain r₁ D = Finsupp.mapDomain r₂ D) (hdeg : ∀ P : Place L (laurentBaseChange L F₀), P.deg = 1) (hdiv : ∀ n : ℕ, n ≠ 0 → ∀ x : Pic0 L (laurentBaseChange L F₀), ∃ y : Pic0 L (laurentBaseChange L F₀), n • y = x) : r₁ = r₂ ∨ ∀ P Q, r₁ P = r₁ Q := by classical set δ : Divisor L (laurentBaseChange L F₀) →+ Divisor k Fbar := Finsupp.mapDomain.addMonoidHom r₁ - Finsupp.mapDomain.addMonoidHom r₂ with hδ have hδapp : ∀ D, δ D = Finsupp.mapDomain r₁ D - Finsupp.mapDomain r₂ D := fun D => rfl have hδprin : ∀ D ∈ Divisor.principal (K := L) (F := laurentBaseChange L F₀), δ D = 0 := by intro D hD have hD' := hgen hD clear hD induction hD' using AddSubgroup.closure_induction with | mem E hE => rw [hδapp, hagree E hE, sub_self] | zero => exact map_zero δ | add E E' _ _ hE hE' => rw [map_add, hE, hE', add_zero] | neg E _ hE => rw [map_neg, hE, neg_zero] have hδdeg0 : ∀ D ∈ Divisor.degZero (K := L) (F := laurentBaseChange L F₀), δ D = 0 := by intro D hD ext Q rw [Finsupp.zero_apply] refine int_eq_zero_of_forall_dvd' fun n hn => ?_ obtain ⟨y, hy⟩ := hdiv n hn (Pic0.mk ⟨D, hD⟩) obtain ⟨E, rfl⟩ := Pic0.mk_surjective y have hmem : ((⟨D, hD⟩ : Divisor.degZero (K := L) (F := laurentBaseChange L F₀)) - n • E : Divisor.degZero (K := L) (F := laurentBaseChange L F₀)) ∈ (Divisor.principal (K := L) (F := laurentBaseChange L F₀)).addSubgroupOf (Divisor.degZero (K := L) (F := laurentBaseChange L F₀)) := by rw [← QuotientAddGroup.eq_iff_sub_mem, QuotientAddGroup.mk_nsmul] exact hy.symm rw [AddSubgroup.mem_addSubgroupOf, AddSubgroupClass.coe_sub, AddSubgroupClass.coe_nsmul] at hmem have h0 := hδprin _ hmem rw [map_sub, map_nsmul, sub_eq_zero] at h0 refine ⟨δ (E : Divisor L (laurentBaseChange L F₀)) Q, ?_⟩ rw [h0, Finsupp.smul_apply, nsmul_eq_mul] have hconst : ∀ P Q : Place L (laurentBaseChange L F₀), Finsupp.single (r₁ P) (1 : ℤ) - Finsupp.single (r₂ P) 1 = Finsupp.single (r₁ Q) 1 - Finsupp.single (r₂ Q) 1 := by intro P Q have hPQ : Finsupp.single P (1 : ℤ) - Finsupp.single Q 1 ∈ Divisor.degZero (K := L) (F := laurentBaseChange L F₀) := by rw [Divisor.mem_degZero, map_sub, Divisor.degree_single, Divisor.degree_single, hdeg, hdeg, sub_self] have h := hδdeg0 _ hPQ rw [hδapp, Finsupp.mapDomain_sub, Finsupp.mapDomain_sub, Finsupp.mapDomain_single, Finsupp.mapDomain_single, Finsupp.mapDomain_single, Finsupp.mapDomain_single, sub_eq_zero] at h exact sub_eq_sub_iff_sub_eq_sub.mpr h rw [or_iff_not_imp_left] intro hne obtain ⟨P₀, hP₀⟩ : ∃ P₀, r₁ P₀ ≠ r₂ P₀ := by by_contra hall push Not at hall exact hne (funext hall) have hr₁const : ∀ Q, r₁ Q = r₁ P₀ := by intro Q have h := congrArg (fun E => E (r₁ P₀)) (hconst Q P₀) simp only [Finsupp.sub_apply, Finsupp.single_apply, if_neg (Ne.symm hP₀)] at h by_contra hQ rw [if_neg hQ] at h split_ifs at h <;> omega exact fun P Q => (hr₁const P).trans (hr₁const Q).symm theorem IsLaurentPlaceReduction.eq_of_agree {r₁ r₂ : Place L (laurentBaseChange L F₀) → Place k Fbar} (hgen : LaurentPrincipalGeneratedByIntegral A π F₀ Fbar) (hagree : ∀ D ∈ laurentIntegralPrincipalDivisors A π F₀ Fbar, Finsupp.mapDomain r₁ D = Finsupp.mapDomain r₂ D) (hdeg : ∀ P : Place L (laurentBaseChange L F₀), P.deg = 1) (hprin0 : ∀ D ∈ Divisor.principal (K := L) (F := laurentBaseChange L F₀), Divisor.degree D = 0) (hdiv : ∀ n : ℕ, n ≠ 0 → ∀ x : Pic0 L (laurentBaseChange L F₀), ∃ y : Pic0 L (laurentBaseChange L F₀), n • y = x) (hnc : ∃ D ∈ Divisor.principal (K := L) (F := laurentBaseChange L F₀), Finsupp.mapDomain r₁ D ≠ 0) : r₁ = r₂ := by rcases IsLaurentPlaceReduction.eq_or_const_of_agree hgen hagree hdeg hdiv with h | hconst · exact h obtain ⟨D, hDprin, hDne⟩ := hnc obtain ⟨P₀⟩ : Nonempty (Place L (laurentBaseChange L F₀)) := by by_contra hempty rw [not_nonempty_iff] at hempty exact hDne (by rw [Subsingleton.elim D 0, Finsupp.mapDomain_zero]) exfalso apply hDne have hmapconst : ∀ D : Divisor L (laurentBaseChange L F₀), Finsupp.mapDomain r₁ D = Finsupp.single (r₁ P₀) (Divisor.degree D) := by intro D induction D using Finsupp.induction with | zero => simp | single_add P n D _ _ ih => rw [Finsupp.mapDomain_add, ih, Finsupp.mapDomain_single, hconst P P₀, map_add, Divisor.degree_single, hdeg, Nat.cast_one, mul_one, ← Finsupp.single_add, add_comm] rw [hmapconst D, hprin0 D hDprin, Finsupp.single_zero] end Uniqueness section CharL set_option synthInstance.maxHeartbeats 400000 variable (A : ValuationSubring (AlgebraicClosure ℚ)) (Γ : Subgroup (Matrix.SpecialLinearGroup (Fin 2) ℤ)) abbrev IsPlaceReductionQExpModL (r : Place (AlgebraicClosure ℚ) (laurentBaseChange (AlgebraicClosure ℚ) (qExpFunctionFieldC ℚ Γ)) → Place (IsLocalRing.ResidueField A) (qExpFunctionFieldC (IsLocalRing.ResidueField A) Γ)) : Prop := IsLaurentPlaceReduction A (IsLocalRing.residue A) (qExpFunctionFieldC ℚ Γ) (qExpFunctionFieldC (IsLocalRing.ResidueField A) Γ) r abbrev ReductionInputsQExpModL : Prop := LaurentReductionInputs A (IsLocalRing.residue A) (qExpFunctionFieldC ℚ Γ) (qExpFunctionFieldC (IsLocalRing.ResidueField A) Γ) variable {A Γ} in def placeReductionQExpModL (h : ReductionInputsQExpModL A Γ) : Place (AlgebraicClosure ℚ) (laurentBaseChange (AlgebraicClosure ℚ) (qExpFunctionFieldC ℚ Γ)) → Place (IsLocalRing.ResidueField A) (qExpFunctionFieldC (IsLocalRing.ResidueField A) Γ) := h.choose variable {A Γ} in theorem isPlaceReductionQExpModL_placeReductionQExpModL (h : ReductionInputsQExpModL A Γ) : IsPlaceReductionQExpModL A Γ (placeReductionQExpModL h) := h.choose_spec.1 abbrev reductionQExpModL : Pic0 (AlgebraicClosure ℚ) (laurentBaseChange (AlgebraicClosure ℚ) (qExpFunctionFieldC ℚ Γ)) →+ Pic0 (IsLocalRing.ResidueField A) (qExpFunctionFieldC (IsLocalRing.ResidueField A) Γ) := laurentReduction A (IsLocalRing.residue A) (qExpFunctionFieldC ℚ Γ) (qExpFunctionFieldC (IsLocalRing.ResidueField A) Γ) variable {A Γ} in theorem reductionQExpModL_mk (h : ReductionInputsQExpModL A Γ) (D : Divisor.degZero (K := AlgebraicClosure ℚ) (F := laurentBaseChange (AlgebraicClosure ℚ) (qExpFunctionFieldC ℚ Γ))) : reductionQExpModL A Γ (Pic0.mk D) = Pic0.mk (laurentReductionDegZero (placeReductionQExpModL h) (isPlaceReductionQExpModL_placeReductionQExpModL h).1 D) := laurentReduction_mk h D variable {A Γ} in theorem reductionQExpModL_of_not (h : ¬ ReductionInputsQExpModL A Γ) : reductionQExpModL A Γ = 0 := laurentReduction_of_not h example (M : ℕ) (z : JOne M) : JOneC M (IsLocalRing.ResidueField A) := reductionQExpModL A (CongruenceSubgroup.Gamma1 M) z end CharL end ModularCurve end
Statements phrased using this module (39)
- Reduction of J_H is injective on prime-to-ℓ torsion
ModularCurve.eq_zero_of_reductionQExpModL_gammaH_eq_zero_of_nsmul_eq_zero858 below · depth 18 - Transcendental generator and mod-ℓ reduction inputs for X_H(M)
ModularCurve.exists_transcendental_and_reductionInputsQExpModL_gammaH_of_not_dvd855 below · depth 18 - Inertia acts trivially on the reduction map of J_H
ModularCurve.reductionQExpModL_gammaH_smul_eq_self_of_mem_inertiaSubgroupIn263 below · depth 18 - Constant reduction realising the q-expansion reduction on Pic⁰
ModularCurve.exists_constantReduction_pic0Map_eq_reductionQExpModL15 below · depth 19 - Deuring reduction data for q-expansion modular curves
ModularCurve.reductionInputsQExpModL_of_finrank_le_of_genusFF_eq101 below · depth 19 - Eichler–Shimura congruence on J₁(M) modulo ℓ
ModularCurve.reductionQExpModL_gamma1_heckeOperatorOneBar984 below · depth 19 - Eichler–Shimura congruence for J_H(M) modulo ℓ
ModularCurve.reductionQExpModL_gammaH_heckeOperatorHAlong980 below · depth 19 - Arithmetic Frobenius reduces to the Frobenius push-forward on J_H
ModularCurve.reductionQExpModL_gammaH_smul_of_isFrobeniusAt265 below · depth 19 - q-expansion pin for the Igusa component of J₁(Mp) at p
ModularCurve.XOneP.addEquiv_proj_fst_eq_pic0Mk_conorm_laurentPlaceReduction_of_points_of_gaussReading_twoChartModel_x1_mul1,336 below · depth 21 - Level monotonicity and component-wise compatibility of the specialisation family
ModularCurve.XOneP.normFreePartFamily_dom_mono_and_toPic0Pair_sp_eq_of_le_twoChartModel_x1_mul_opsV30 below · depth 21 - Uₚ acts through an automorphism on the étale Igusa component
ModularCurve.XOneP.normFreePartFamily_exists_addEquiv_toPic0Pair_sp_heckeOperatorOneBar_snd_eq_twoChartModel_x1_mul4,670 below · depth 21 - Diamond action on first components of specialised norm-free classes
ModularCurve.XOneP.normFreePartFamily_exists_addMonoidHom_toPic0Pair_sp_diamondOneBar_fst_eq_twoChartModel_x1_mul2,964 below · depth 21 - Decomposition group acts on second Igusa projection of norm-free points
ModularCurve.XOneP.normFreePartFamily_exists_addMonoidHom_toPic0Pair_sp_smul_snd_eq_of_mem_decompositionSubgroup_twoChartModel_x1_mul3,011 below · depth 21 - Specialisation datum for the norm-free part of J₁(Mp)
ModularCurve.XOneP.normFreePartFamily_exists_dom_sp_interface_twoChartModel_x1_mul_opsV32 below · depth 21 - Inertia-invariant functionals annihilate Tate vectors with vanishing Igusa specialisation
ModularCurve.XOneP.normFreePartFamily_forall_apply_eq_zero_of_tateModule_toPic0Pair_sp_eq_zero_twoChartModel_x1_mul2,215 below · depth 21 - Level independence of the specialisation family on J₁(Mp)
ModularCurve.XOneP.normFreePartFamily_level_pushout_and_sp_eq_twoChartModel_x1_mul_opsV30 below · depth 21 - Inertia-fixed norm-free classes lie in the specialisation domain
ModularCurve.XOneP.normFreePartFamily_mem_dom_of_forall_smul_eq_self_twoChartModel_x1_mul_opsV32 below · depth 21 - Trivial Weil pairing for vanishing glued specialisations
ModularCurve.XOneP.normFreePartFamily_pairing_eq_one_of_toPic0Pair_sp_eq_zero_twoChartModel_x1_mul4,591 below · depth 21 - Inertia twisted by a diamond fixes the second Igusa component
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_diamondOneBar_smul_snd_eq_of_mem_inertiaSubgroupIn_twoChartModel_x1_mul_opsV31,268 below · depth 21 - q-expansion pin of the specialisation on the Gauss component
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_fst_eq_pic0Mk_conorm_laurentPlaceReduction_twoChartModel_x1_mul1,337 below · depth 21 - Frobenius acts coefficientwise on the first Igusa component
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_fst_smul_of_isFrobeniusAt_twoChartModel_x1_mul2,332 below · depth 21 - Uₚ acts as p Fr⁻¹ on norm-free specialisations
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_heckeOperatorOneBar_fst_eq_natCast_smul_frob_inv_smul_twoChartModel_x1_mul3,359 below · depth 21 - Triangularity of Uₚ on specialisations of the norm-free part
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_heckeOperatorOneBar_snd_eq_zero_twoChartModel_x1_mul3,359 below · depth 21 - Frobenius acts coefficientwise on the first Igusa-component specialisation
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_smul_fst_eq_frob_smul_of_isFrobeniusAt_twoChartModel_x1_mul0 below · depth 21 - Inertia fixes the cuspidal component of reductions of norm-free points
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_smul_fst_eq_of_mem_inertiaSubgroupIn_twoChartModel_x1_mul1,268 below · depth 21 - Inertia fixing μₚ preserves the second Igusa component of specialisations
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_smul_snd_eq_of_mem_inertiaSubgroupIn_of_forall_pow_eq_one_twoChartModel_x1_mul_opsV31 below · depth 21 - Models of X₁(M) over ℚ̄ and k, with place reduction
ModularCurve.exists_curveModels_twoChartIntegralModel_x1FunctionField_chartCentre_isLaurentPlaceReduction_of_ringHom945 below · depth 22 - Connected part at an ordinary prime spans at most a line
ModularCurve.finrank_map_reductionKernelSpan_tateModule_jOne_le_one_of_isUnit2,266 below · depth 22 - Hecke-self-adjoint perfect pairing on the Tate module of J₁(M)
ModularCurve.exists_bilinForm_tateModule_jOne_hecke_selfAdjoint_reductionKernelSpan_orthogonal_le616 below · depth 23 - Deuring reduction of places preserves chart centres when p ∤ M
ModularCurve.exists_isPlaceReductionQExpModL_chartCentre_of_not_dvd854 below · depth 23 - Unit-root factor of Tₚ on TₚJ₁(M) and p-rank
ModularCurve.exists_monic_unitRoot_mul_aeval_tateModule_jOne_eq_zero_pow_finrank_ker_eq_card_torsion_sq1,317 below · depth 23 - Reduction kernel in TₚJ₁(M): corank and a Tₚ-polynomial
ModularCurve.pow_finrank_sub_finrank_reductionKernelSpan_tateModule_jOne_eq_card_torsion_and_exists_monic_aeval_mem1,844 below · depth 23 - Kernel of q-expansion reduction at p∤ M is Hecke-stable
ModularCurve.reductionQExpModL_gamma1_heckeAlgOne_smul_eq_zero992 below · depth 23 - Reduction mod P intertwines ⟨ d⟩ with a residual automorphism
ModularCurve.exists_algEquiv_reductionQExpModL_gamma1_diamondOneBar_eq_smul545 below · depth 24 - Hecke operators preserve the kernel of reduction at P
ModularCurve.reductionQExpModL_gamma1_heckeOperatorOneBar_eq_zero_of_ne964 below · depth 24 - Surjectivity of reduction on ℓ^k-torsion of J_H(M)
ModularCurve.surjOn_reductionQExpModL_gammaH_torsion_pow1,728 below · depth 24 - Good-reduction abelian-scheme model of J_H(M) at ℓ∤ M
ModularCurve.exists_abelianSchemePropertyBundle_model_jH1,690 below · depth 25 - Fibres of the two-chart model of X_Γ at p∤ M
ModularCurve.exists_fibreCurveModels_twoChartIntegralModel_qExpFunctionFieldC_isPlaceReductionQExpModL_of_not_dvd911 below · depth 26 - Uniqueness of a reduction map on places of X_H(M)
ModularCurve.placeReduction_unique_of_forall_mapDomain_eq_ord_gammaH_of_not_dvd955 below · depth 26