Definitions/Def_FreyPackage_ModMCarrier_OldSublattice.lean
Degeneracy maps, oldform sublattice and reductions at Atkin–Lehner level
Fix M with M \neq 0 and an Atkin–Lehner datum W for (M,q'), i.e. a natural number W.R with M = q' \cdot W.R together with integers a,b satisfying q'a - W.R\,b = 1. Two \mathbb{C}-linear degeneracy maps S_k(\Gamma_0(W.R)) \to S_k(\Gamma_0(M)) are available: levelInclusionLin, attached to any divisibility R \mid M, which sends a cusp form to the same function on \mathbb{H}, the invariance and cusp conditions transferring because \Gamma_0(M) \le \Gamma_0(R) (the lemma CongruenceSubgroup.Gamma0_le_Gamma0_of_dvd, proved by reduction of the lower-left entry); and rescaleLin, the slash action by \mathrm{diag}(q',1), i.e. f \mapsto f \mid_k \begin{pmatrix} q' & 0 \\ 0 & 1\end{pmatrix}. The object oldformSublattice W is the \mathbb{Z}-submodule of S_2(\Gamma_0(M)) generated by the images under these two maps of CuspForm.intLattice W.R 2, the \mathbb{Z}-span of those weight-two cusp forms on \Gamma_0(W.R) all of whose q-expansion coefficients are rational integers; the two membership lemmas record that each degeneracy image of an integral form lies in it.
Over a field k, writing \mathrm{latticeRed}\,k\,L = k \otimes_{\mathbb{Z}} L, the maps ι₀red and ι₁red are the k-linear base changes of the restrictions of the two degeneracy maps to the integral lattices, landing in k \otimes_{\mathbb{Z}} \mathrm{oldformSublattice}\,W, and f₀red is the class 1 \otimes f of an integral form f. Separately, for an ideal \mathfrak{m} of the integral closure \overline{\mathbb{Z}} of \mathbb{Z} in \mathbb{C}, WitnessResidueField 𝔪 is the quotient ring \overline{\mathbb{Z}}/\mathfrak{m} with its quotient map (no maximality of \mathfrak{m} is imposed by the definition). Finally, atkinLehnerDatumOfPrimeNotDvd produces, for a prime q' with q' \nmid N, an Atkin–Lehner datum for (N q', q') with cofactor N, the Bézout integers coming from \gcd(q',N) = 1.
Relation to Mathlib
Mathlib supplies CuspForm, the slash action and the groups Gamma0; the monotonicity lemma for Gamma0 under divisibility is added here in Mathlib's CongruenceSubgroup namespace. The integral structure on cusp forms, the degeneracy maps, the oldform sublattice and the base-change construction k \otimes_{\mathbb{Z}} L on lattices of cusp forms are the project's own.
Where it is used
The oldform sublattice is the lattice on which the Atkin–Lehner-twisted trace from level M = q'R to level R behaves integrally, and its reduction modulo a residue characteristic carries the two degeneracy maps entering Ihara-type statements. These are the inputs to the level-raising step that produces, from a modular form of level R, a form of level M whose mod-\ell representation agrees with the given one, as used in the Frey–Serre–Ribet part of the argument.
References
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154
- A. O. L. Atkin and J. Lehner, Hecke operators on \Gamma_0(m), Mathematische Annalen 185 (1970), 134–160
- F. Diamond and J. Im, Modular forms and modular curves, in: Seminar on Fermat's Last Theorem, CMS Conference Proceedings 17, American Mathematical Society, 1995, 39–133
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 117 lines
- 15 declarations
- used in the statements of 3 theorems and imported by 8 proofs
- imports 4 definition modules
Source file: Definitions/Def_FreyPackage_ModMCarrier_OldSublattice.lean
Imports
Imported by
- no other definition module
Declarations
- lemma
CongruenceSubgroup.Gamma0_le_Gamma0_of_dvd - def
FreyPackage.ModMCarrier.levelInclusionLin - lemma
FreyPackage.ModMCarrier.coe_levelInclusionLin - lemma
ModularForm.AtkinLehnerDatum.R_dvd - abbrev
FreyPackage.ModMCarrier.WitnessResidueField - abbrev
FreyPackage.ModMCarrier.witnessResidueMap - lemma
FreyPackage.ModMCarrier.witnessResidueMap_mem - def
FreyPackage.ModMCarrier.oldformSublattice - lemma
FreyPackage.ModMCarrier.levelInclusionLin_mem_oldformSublattice - lemma
FreyPackage.ModMCarrier.rescaleLin_mem_oldformSublattice - def
FreyPackage.ModMCarrier.f₀red - def
FreyPackage.ModMCarrier.ι₀red - def
FreyPackage.ModMCarrier.ι₁red - def
FreyPackage.ModMCarrier.atkinLehnerDatumOfPrimeNotDvd - lemma
FreyPackage.ModMCarrier.atkinLehnerDatumOfPrimeNotDvd_R
Source
import Mathlib import Definitions.Def_FreyPackage_ModMCarrier_LatticeRed import Definitions.Def_FreyPackage_ModMCarrier_Rescale import Definitions.Def_CuspForm_IntegralStructure import Definitions.Def_ModularForm_AtkinLehnerDatum set_option autoImplicit false noncomputable section open CongruenceSubgroup ModularForm open scoped TensorProduct lemma CongruenceSubgroup.Gamma0_le_Gamma0_of_dvd {R M : ℕ} (hRM : R ∣ M) : Gamma0 M ≤ Gamma0 R := by intro γ hγ rw [Gamma0_mem] at hγ ⊢ have : ZMod.castHom hRM (ZMod R) (((γ : Matrix (Fin 2) (Fin 2) ℤ) 1 0 : ℤ) : ZMod M) = (((γ : Matrix (Fin 2) (Fin 2) ℤ) 1 0 : ℤ) : ZMod R) := map_intCast _ _ rw [← this, hγ, map_zero] namespace FreyPackage.ModMCarrier def levelInclusionLin {R M : ℕ} [NeZero M] (hRM : R ∣ M) (k : ℤ) : CuspForm (Gamma0 R) k →ₗ[ℂ] CuspForm (Gamma0 M) k where toFun f := { toFun := ⇑f slash_action_eq' := fun γ hγ => f.slash_action_eq' γ (Subgroup.map_mono (Gamma0_le_Gamma0_of_dvd hRM) hγ) holo' := f.holo' zero_at_cusps' := fun {c} hc => f.zero_at_cusps' (hc.mono (Subgroup.map_mono (Gamma0_le_Gamma0_of_dvd hRM))) } map_add' f g := rfl map_smul' c f := rfl @[simp] lemma coe_levelInclusionLin {R M : ℕ} [NeZero M] (hRM : R ∣ M) (k : ℤ) (f : CuspForm (Gamma0 R) k) : ⇑(levelInclusionLin hRM k f) = ⇑f := rfl lemma _root_.ModularForm.AtkinLehnerDatum.R_dvd {M q' : ℕ} (W : ModularForm.AtkinLehnerDatum M q') : W.R ∣ M := ⟨q', W.hM.trans (Nat.mul_comm q' W.R)⟩ end FreyPackage.ModMCarrier namespace FreyPackage.ModMCarrier section WitnessResidueField abbrev WitnessResidueField (𝔪 : Ideal (integralClosure ℤ ℂ)) : Type := (integralClosure ℤ ℂ) ⧸ 𝔪 abbrev witnessResidueMap (𝔪 : Ideal (integralClosure ℤ ℂ)) : integralClosure ℤ ℂ →+* WitnessResidueField 𝔪 := Ideal.Quotient.mk 𝔪 lemma witnessResidueMap_mem (𝔪 : Ideal (integralClosure ℤ ℂ)) : ∀ x ∈ 𝔪, witnessResidueMap 𝔪 x = 0 := fun _ hx => Ideal.Quotient.eq_zero_iff_mem.mpr hx end WitnessResidueField section OldSublattice variable {M q' : ℕ} [NeZero M] (W : ModularForm.AtkinLehnerDatum M q') local instance instNeZeroR : NeZero W.R := ⟨fun h => NeZero.ne M (W.hM.trans (by rw [h, mul_zero]))⟩ def oldformSublattice : Submodule ℤ (CuspForm (Gamma0 M) 2) := (CuspForm.intLattice W.R 2).map ((levelInclusionLin W.R_dvd 2).restrictScalars ℤ) ⊔ (CuspForm.intLattice W.R 2).map ((rescaleLin W.q_mul_R_dvd 2).restrictScalars ℤ) lemma levelInclusionLin_mem_oldformSublattice : ∀ x ∈ CuspForm.intLattice W.R 2, levelInclusionLin W.R_dvd 2 x ∈ oldformSublattice W := fun _ hx => Submodule.mem_sup_left (Submodule.mem_map_of_mem hx) lemma rescaleLin_mem_oldformSublattice : ∀ x ∈ CuspForm.intLattice W.R 2, rescaleLin W.q_mul_R_dvd 2 x ∈ oldformSublattice W := fun _ hx => Submodule.mem_sup_right (Submodule.mem_map_of_mem hx) section ReducedMaps variable (k : Type*) [Field k] def f₀red {f : CuspForm (Gamma0 W.R) 2} (hf : f ∈ CuspForm.intLattice W.R 2) : latticeRed k (CuspForm.intLattice W.R 2) := latticeRed.mk k _ ⟨f, hf⟩ def ι₀red : latticeRed k (CuspForm.intLattice W.R 2) →ₗ[k] latticeRed k (oldformSublattice W) := latticeRed.mapOf k _ _ (levelInclusionLin W.R_dvd 2) (levelInclusionLin_mem_oldformSublattice W) def ι₁red : latticeRed k (CuspForm.intLattice W.R 2) →ₗ[k] latticeRed k (oldformSublattice W) := latticeRed.mapOf k _ _ (rescaleLin W.q_mul_R_dvd 2) (rescaleLin_mem_oldformSublattice W) end ReducedMaps end OldSublattice section OfPrimeNotDvd variable (N q' : ℕ) def atkinLehnerDatumOfPrimeNotDvd (hq' : q'.Prime) (hnd : ¬ q' ∣ N) : ModularForm.AtkinLehnerDatum (N * q') q' where R := N hM := Nat.mul_comm N q' a := (Nat.gcdA q' N) b := -(Nat.gcdB q' N) bezout := by have hcop : Nat.gcd q' N = 1 := (hq'.coprime_iff_not_dvd).mpr hnd have hab := Nat.gcd_eq_gcd_ab q' N rw [hcop, Nat.cast_one] at hab push_cast linarith [hab] @[simp] lemma atkinLehnerDatumOfPrimeNotDvd_R (hq' : q'.Prime) (hnd : ¬ q' ∣ N) : (atkinLehnerDatumOfPrimeNotDvd N q' hq' hnd).R = N := rfl end OfPrimeNotDvd end FreyPackage.ModMCarrier
Statements phrased using this module (3)
- Joint injectivity of the two degeneracy maps in weight 2
FreyPackage.ModMCarrier.levelInclusionLin_add_rescaleLin_eq_zero4 below · depth 15 - Rescaling with d=1 equals the level inclusion
FreyPackage.ModMCarrier.rescaleLin_eq_levelInclusionLin0 below · depth 16 - Trace of the rescaling equals T_{q'}
CuspForm.traceLin_rescaleLin1 below · depth 17