Definitions/Def_ModularCurve_X1Diamond.lean
Diamond automorphisms of the function field and
Working with the q-expansion model of modular curves, this module introduces diamond operators. First, for a field L containing \mathbb{Q} and an intermediate field F_0 of \mathbb{Q}((q))/\mathbb{Q}, the predicate IsBaseChangeAutOf L σ₀ σ says of an L-algebra automorphism \sigma of the compositum laurentBaseChange L F₀ (the L-subfield of L((q)) generated by the coefficientwise image of F_0) that it extends the \mathbb{Q}-automorphism \sigma_0 of F_0: for every y \in F_0, the image under \sigma of the coefficientwise embedding of y is the coefficientwise embedding of \sigma_0(y). The total operation baseChangeAut L σ₀ returns such an extension when one exists and the identity otherwise, as recorded by isBaseChangeAutOf_baseChangeAut and baseChangeAut_of_not.
Next, slashQExpC k f γ is the period-one q-expansion of the weight-k slash f\mid_k\gamma, for f : \mathbb{H} \to \mathbb{C} and \gamma \in \mathrm{SL}_2(\mathbb{Z}), viewed in \mathbb{C}((q)). The predicate IsDiamondAut M d σ, for a \mathbb{Q}-algebra automorphism \sigma of x1FunctionField M, asserts that d is coprime to M and that for all weights k, all modular forms f, g of weight k on \Gamma_1(M) with integral q-expansions p_f, p_g (and p_g nonzero over \mathbb{Q}), and all \gamma \in \Gamma_0(M) with upper-left entry congruent to d modulo M, the image in \mathbb{C}((q)) of \sigma(p_f/p_g) multiplied by the q-expansion of g\mid_k\gamma equals that of f\mid_k\gamma; thus \sigma is pinned down on the generating ratios of modular forms by pull-back along \gamma. Again diamondAut M d is total: it picks such a \sigma if one exists and is the identity otherwise, in particular whenever d and M are not coprime. Base changing to \overline{\mathbb{Q}} gives diamondAutBar M d, and diamondOneBar M d is the induced \mathbb{Z}-linear endomorphism of J_1(M) = \mathrm{Pic}^0 of the base-changed function field, acting through the semilinear automorphism that is trivial on the constants.
Relation to Mathlib
Mathlib's modular forms, the slash action f\mid_k\gamma and qExpansion are used as given; the diamond operators on a function-field model of X_1(M) and their action on the degree-zero Picard group are the project's own notions, Mathlib having no modular curves or their Jacobians.
Where it is used
The diamond operators provide the action of (\mathbb{Z}/M)^\times on J_1(M) and hence on its torsion, which is what allows modular forms with nebentypus character and their associated Galois representations to be isolated inside the Jacobian of X_1(M) in the modularity and level-lowering parts of the argument.
References
- F. Diamond and J. Shurman, A First Course in Modular Forms, Graduate Texts in Mathematics 228, Springer, 2005, §§5.2, 7.9
- G. Shimura, Introduction to the Arithmetic Theory of Automorphic Functions, Publications of the Mathematical Society of Japan 11, Princeton University Press, 1971
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 110 lines
- 14 declarations
- used in the statements of 59 theorems and imported by 70 proofs
- imports 1 definition modules
Source file: Definitions/Def_ModularCurve_X1Diamond.lean
Imports
Declarations
- def
ModularCurve.IsBaseChangeAutOf - def
ModularCurve.baseChangeAut - theorem
ModularCurve.isBaseChangeAutOf_baseChangeAut - theorem
ModularCurve.baseChangeAut_of_not - def
ModularCurve.slashQExpC - def
ModularCurve.IsDiamondAut - theorem
ModularCurve.IsDiamondAut.coprime - def
ModularCurve.diamondAut - theorem
ModularCurve.isDiamondAut_diamondAut - theorem
ModularCurve.diamondAut_of_not - theorem
ModularCurve.diamondAut_of_not_coprime - def
ModularCurve.diamondAutBar - def
ModularCurve.diamondOneBar - theorem
ModularCurve.diamondOneBar_apply
Source
import Definitions.Def_ModularCurve_X1 set_option autoImplicit false noncomputable section open UpperHalfPlane IntermediateField HahnSeries AlgebraicCurve CongruenceSubgroup open scoped MatrixGroups ModularForm namespace ModularCurve section BaseChangeAut variable (L : Type*) [Field L] [Algebra ℚ L] {F₀ : IntermediateField ℚ (LaurentSeries ℚ)} def IsBaseChangeAutOf (σ₀ : F₀ ≃ₐ[ℚ] F₀) (σ : laurentBaseChange L F₀ ≃ₐ[L] laurentBaseChange L F₀) : Prop := ∀ y : F₀, ((σ ⟨coeffEmb L (y : LaurentSeries ℚ), coeffEmb_mem_laurentBaseChange L y.2⟩ : laurentBaseChange L F₀) : LaurentSeries L) = coeffEmb L ((σ₀ y : F₀) : LaurentSeries ℚ) def baseChangeAut (σ₀ : F₀ ≃ₐ[ℚ] F₀) : laurentBaseChange L F₀ ≃ₐ[L] laurentBaseChange L F₀ := haveI := Classical.dec (∃ σ : laurentBaseChange L F₀ ≃ₐ[L] laurentBaseChange L F₀, IsBaseChangeAutOf L σ₀ σ) if h : ∃ σ : laurentBaseChange L F₀ ≃ₐ[L] laurentBaseChange L F₀, IsBaseChangeAutOf L σ₀ σ then h.choose else AlgEquiv.refl variable {L} theorem isBaseChangeAutOf_baseChangeAut {σ₀ : F₀ ≃ₐ[ℚ] F₀} (h : ∃ σ : laurentBaseChange L F₀ ≃ₐ[L] laurentBaseChange L F₀, IsBaseChangeAutOf L σ₀ σ) : IsBaseChangeAutOf L σ₀ (baseChangeAut L σ₀) := by rw [baseChangeAut, dif_pos h] exact h.choose_spec theorem baseChangeAut_of_not {σ₀ : F₀ ≃ₐ[ℚ] F₀} (h : ¬ ∃ σ : laurentBaseChange L F₀ ≃ₐ[L] laurentBaseChange L F₀, IsBaseChangeAutOf L σ₀ σ) : baseChangeAut L σ₀ = AlgEquiv.refl := by rw [baseChangeAut, dif_neg h] end BaseChangeAut section Diamond variable (M : ℕ) def slashQExpC (k : ℤ) (f : ℍ → ℂ) (γ : SL(2, ℤ)) : LaurentSeries ℂ := HahnSeries.ofPowerSeries ℤ ℂ (qExpansion 1 (f ∣[k] (γ : GL (Fin 2) ℝ))) def IsDiamondAut (d : ℕ) (σ : x1FunctionField M ≃ₐ[ℚ] x1FunctionField M) : Prop := Nat.Coprime d M ∧ ∀ (k : ℤ) (f g : ModularForm (Gamma1 M : Subgroup (GL (Fin 2) ℝ)) k) (pf pg : PowerSeries ℤ) (hf : IsIntegralQExp f pf) (hg : IsIntegralQExp g pg) (hg0 : intSeriesC ℚ pg ≠ 0) (γ : SL(2, ℤ)), γ ∈ Gamma0 M → ((γ 0 0 : ℤ) : ZMod M) = (d : ZMod M) → coeffMap (algebraMap ℚ ℂ) ((σ ⟨intSeriesC ℚ pf / intSeriesC ℚ pg, div_mem_qExpFunctionFieldC f g hf hg hg0⟩ : x1FunctionField M) : LaurentSeries ℚ) * slashQExpC k g γ = slashQExpC k f γ theorem IsDiamondAut.coprime {d : ℕ} {σ : x1FunctionField M ≃ₐ[ℚ] x1FunctionField M} (h : IsDiamondAut M d σ) : Nat.Coprime d M := h.1 def diamondAut (d : ℕ) : x1FunctionField M ≃ₐ[ℚ] x1FunctionField M := haveI := Classical.dec (∃ σ : x1FunctionField M ≃ₐ[ℚ] x1FunctionField M, IsDiamondAut M d σ) if h : ∃ σ : x1FunctionField M ≃ₐ[ℚ] x1FunctionField M, IsDiamondAut M d σ then h.choose else AlgEquiv.refl variable {M} theorem isDiamondAut_diamondAut {d : ℕ} (h : ∃ σ : x1FunctionField M ≃ₐ[ℚ] x1FunctionField M, IsDiamondAut M d σ) : IsDiamondAut M d (diamondAut M d) := by rw [diamondAut, dif_pos h] exact h.choose_spec theorem diamondAut_of_not {d : ℕ} (h : ¬ ∃ σ : x1FunctionField M ≃ₐ[ℚ] x1FunctionField M, IsDiamondAut M d σ) : diamondAut M d = AlgEquiv.refl := by rw [diamondAut, dif_neg h] theorem diamondAut_of_not_coprime {d : ℕ} (h : ¬ Nat.Coprime d M) : diamondAut M d = AlgEquiv.refl := diamondAut_of_not fun ⟨_, hσ⟩ => h hσ.coprime end Diamond section DiamondBar variable (M : ℕ) def diamondAutBar (d : ℕ) : x1FunctionFieldBar M ≃ₐ[AlgebraicClosure ℚ] x1FunctionFieldBar M := baseChangeAut (AlgebraicClosure ℚ) (diamondAut M d) def diamondOneBar (d : ℕ) : Module.End ℤ (JOne M) := (DistribSMul.toAddMonoidHom (JOne M) (SemilinearAut.ofAlgAut (diamondAutBar M d))).toIntLinearMap theorem diamondOneBar_apply (d : ℕ) (x : JOne M) : diamondOneBar M d x = SemilinearAut.ofAlgAut (diamondAutBar M d) • x := rfl end DiamondBar end ModularCurve end
Statements phrased using this module (59)
- Existence of diamond automorphisms of F(Γ₁(M))
ModularCurve.exists_isDiamondAut29 below · depth 16 - Inertia at q acts unipotently on diamond-norms of prime-to-q torsion
ModularCurve.JOne.smul_smul_sub_self_eq_of_mem_inertiaSubgroupIn_of_eq_sum_diamondOneBar2,768 below · depth 17 - Diamond operators on J₁(M) commute
ModularCurve.diamondOneBar_comm0 below · depth 18 - Diamond sum on divisors as pull-back of push-forward
ModularCurve.sum_diamondAutBar_smul_eq_ncard_smul_pullbackAlong_pushforwardAlong43 below · depth 18 - Diamond correspondence on differentials computes ⟨ d⟩ on weight-2 forms
ModularCurve.coeffMap_diffQExp_correspondence_diamondAutBar_eq_qExpansion_diamondLinOne121 below · depth 19 - q-expansion of the Hecke correspondence T_ℓ on differentials
ModularCurve.coeff_diffQExp_correspondence_heckeBetaOneBar_heckeAlphaOneBar_of_not_dvd223 below · depth 19 - Diamond automorphism lifts along both degeneracy embeddings
ModularCurve.exists_algEquiv_intertwinesAlong_diamondAutBar31 below · depth 19 - Diamond operators cut out the Γ₁(M₀)∩Γ₀(t) q-expansion field
ModularCurve.exists_monoidHom_diamondAut_mem_x1x0FunctionFieldC_iff29 below · depth 19 - Atkin–Lehner automorphism interchanging the two degeneracy embeddings
ModularCurve.exists_algEquiv_x1x0FunctionFieldC_atkinLehner30 below · depth 20 - Diamond automorphism of the two-chart model of X₁(Mp)
ModularCurve.XOneP.exists_iso_modelTo_eq_and_iotaFin_comp_eq_of_diamondAut_twoChartModel_x1_mul48 below · depth 22 - Diamond operator realised as Picard transport on the Jacobian model
ModularCurve.XOneP.pts_diamondGen_smul_eq_comp_transport_of_abelJacobi_of_diamondModelAut_twoChartModel_x1_mul170 below · depth 22 - Diamond operator on J₁(M) is trivial for d not coprime to M
ModularCurve.diamondOneBar_eq_id_of_not_coprime0 below · depth 22 - Diamond operators preserve rationality of weight-two q-expansions
CuspForm.qCoeff_diamondLinOne_two_mem_range_ratCast_of_qCoeff_mem_range_intCast0 below · depth 23 - Inertia-twisted diamond is trivial on the Igusa branch
ModularCurve.XOneP.comp_fibreIso_eq_of_diamondModelAut_galoisModelHom_of_gaussPin_twoChartModel_x1_mul1,197 below · depth 23 - Partial Atkin–Lehner automorphism at p of L·ℚ(X₁(Mp))
ModularCurve.XOneP.exists_algEquiv_map_j_eq_qExpand_and_chartAlgFin_iff_and_comap_ne_and_coe_eq_atkinLehnerInvolutionFull_and_diamondConj_and_galoisConj_x1_mul172 below · depth 23 - Étale entry of Uₚ on good generators of J_E
ModularCurve.XOneP.exists_coprime_algEquiv_finset_addMonoidHom_proj_snd_heckeGenOne_eq_symm_frob_smul_and_proj_snd_diamondGen_eq_smul_of_pic0Mk_single_sub_single_snd_specialFibre_twoChartModel_x1_mul_of_atkinLehner_of_diamondConj3,174 below · depth 23 - Diamond ⟨ d⟩ preserves components and crossings mod p
ModularCurve.XOneP.exists_iso_comp_eq_and_comp_eq_of_crossing_specialFibre_of_apply_eq_diamondAut_twoChartModel_x1_mul2,924 below · depth 23 - Diamond model automorphism preserves both special-fibre components
ModularCurve.XOneP.exists_iso_comp_eq_specialFibre_components_of_apply_eq_diamondAut_of_coprime_twoChartModel_x1_mul2,912 below · depth 23 - Diamond model automorphism moves places by the inverse diamond automorphism
ModularCurve.XOneP.pointEquivPlace_eq_diamondAutBar_inv_smul_of_chartPin_of_diamondModelAut_twoChartModel_x1_mul126 below · depth 23 - Base-changed diamond automorphisms fix the Γ₀(N)-level functions
ModularCurve.algEquiv_apply_eq_self_of_coe_mem_laurentBaseChange_qExpFunctionFieldC_gamma0_of_coe_eq_baseChangeAut_diamondAut31 below · depth 23 - Diamond automorphisms of X_H(M) and X₁(M) agree under ι
ModularCurve.coe_diamondAutHBar_eq_diamondAutBar_of_coe_eq67 below · depth 23 - X_H function field as diamond-fixed subfield of X₁
ModularCurve.exists_monoidHom_diamondAut_mem_xHFunctionField_iff29 below · depth 23 - Diamonds with d≡ 1 mod M fix supersingular points
ModularCurve.XOneP.comap_eq_self_and_sub_mem_of_apply_eq_diamondAut_of_map_jChartFin_mem_ssJSet_twoChartIntegralModel_x1_mul1,555 below · depth 24 - Diamonds prime to Mp fix each minimal prime over varpi
ModularCurve.XOneP.comap_eq_self_of_mem_minimalPrimes_span_of_apply_eq_diamondAut_of_coprime_twoChartIntegralModel_x1_mul1,191 below · depth 24 - Diamond operators with d ≡ 1 (mod M) fix each finite-chart component
ModularCurve.XOneP.comap_eq_self_of_mem_minimalPrimes_span_of_apply_eq_diamondAut_twoChartIntegralModel_x1_mul1,229 below · depth 24 - Identity on the second component of the X₁(Mp) special fibre
ModularCurve.XOneP.comp_fibreIso_eq_of_forall_sub_mem_of_mem_minimalPrimes_of_gaussPin_twoChartModel_x1_mul1 below · depth 24 - Partial Atkin–Lehner automorphism on L·ℚ(X₁(Mp)) with conjugation laws
ModularCurve.XOneP.exists_algEquiv_map_j_eq_qExpand_and_coe_eq_atkinLehnerInvolutionFull_and_diamondConj_and_galoisConj_x1_mul166 below · depth 24 - Place-level Eichler–Shimura relation on the non-Gauss component
ModularCurve.XOneP.exists_coprime_algEquiv_finset_red_diamondAutBar_smul_eq_smul_and_red_eq_smul_frob_smul_red_of_reducesSnd_of_gaussReading_snd_algEquiv_twoChartModel_x1_mul_of_atkinLehner_of_diamondConj3,028 below · depth 24 - Diamond action on ℚ̄-points of the Pic⁰ model
ModularCurve.XOneP.gpts_diamondAutBar_smul_eq_comp_heckeHom_diamondGen_twoChartModel_x1_mul273 below · depth 24 - Étale entry of Uₚ on the special fibre of J₁(Mp)
ModularCurve.XOneP.proj_snd_addMonoidHom_eq_symm_frob_mul_ofAlgAut_smul_proj_snd_of_pts_reduction_of_diamondRead_of_frobRead_of_sort_specialFibre_twoChartModel_x1_mul_of_atkinLehner_of_diamondConj1,480 below · depth 24 - Generator law conjugates ⟨ d⟩ into ⟨ d'⟩ on X₁(Mp)
ModularCurve.XOneP.algEquiv_diamond_symm_eq_diamond_of_generatorLaw_x1_mul32 below · depth 25 - Diamond automorphisms preserve the Gauss valuation subring
ModularCurve.XOneP.apply_mem_gaussValuationSubring_iff_of_apply_eq_diamondAut_x1_mul1,184 below · depth 25 - Pull-back along a surjective chart endomorphism preserves minimality over varpi
ModularCurve.XOneP.comap_mem_minimalPrimes_span_of_surjective_of_apply_eq_diamondAut_chartAlgFin_x1_mul0 below · depth 25 - At most two minimal primes over varpi in the j-finite chart
ModularCurve.XOneP.eq_of_mem_minimalPrimes_span_of_ne_of_ne_chartAlgFin_twoChartIntegralModel_x1_mul1,183 below · depth 25 - Partial Atkin–Lehner automorphism of L·ℚ(X₁(Mp)), with generator law
ModularCurve.XOneP.exists_algEquiv_map_j_eq_qExpand_and_coe_eq_atkinLehnerInvolutionFull_and_generatorLaw_x1_mul155 below · depth 25 - Eichler–Shimura relation read through σ on the Igusa curve
ModularCurve.XOneP.exists_coprime_algEquiv_finset_red_smul_diamondAutBar_smul_eq_and_red_smul_eq_smul_frob_smul_of_gaussReduces_smul_twoChartModel_x1_mul_of_atkinLehner_of_diamondConj2,993 below · depth 25 - Centre of the Gauss valuation is minimal over varpi
ModularCurve.XOneP.exists_mem_minimalPrimes_span_forall_mem_iff_coe_mem_nonunits_gaussValuationSubring_chartAlgFin_x1_mul1,183 below · depth 25 - Galois conjugate of σ equals σ twisted by a diamond
ModularCurve.XOneP.ringEquiv_algEquiv_symm_eq_algEquiv_diamond_of_generatorLaw_x1_mul44 below · depth 25 - Surjectivity of a diamond endomorphism of the finite chart algebra
ModularCurve.XOneP.surjective_of_apply_eq_diamondAut_chartAlgFin_twoChartIntegralModel_x1_mul32 below · depth 25 - Diamond automorphisms with d≡ 1 (mod M) fix the floor field
ModularCurve.algEquiv_apply_eq_self_of_coe_mem_laurentBaseChange_x1x0FunctionFieldC_of_coe_eq_baseChangeAut_diamondAut31 below · depth 25 - 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 - Diamond action on Gauss-reduced places of the Igusa field
ModularCurve.XOneP.exists_algEquiv_forall_gaussReduces_diamondAutBar_smul_and_red_eq_smul_red_of_coprime_twoChartModel_x1_mul2,923 below · depth 26 - Atkin–Lehner transport of Uₚ-supports, up to one diamond
ModularCurve.XOneP.exists_coprime_forall_smul_mem_support_heckeDivOneBar_single_diamondAutBar_smul_smul_of_mem_support_of_atkinLehner394 below · depth 26 - Conjugation of diamond operators on places of X₁(Mp)
ModularCurve.XOneP.ofAlgAut_smul_diamondAutBar_smul_eq_diamondAutBar_smul_ofAlgAut_smul_place_of_diamondConj_x1_mul0 below · depth 26 - Coefficientwise compatibility of base-changed q-expansion automorphisms
ModularCurve.coe_baseChangeAut_eq_coeffMap_coe_baseChangeAut_of_coe_eq_coeffMap0 below · depth 26 - Diamond automorphisms of ℚ(X₁(N)) form a (ℤ/N)^×-action
ModularCurve.diamondAut_congr_and_mul_and_one_and_inv_and_diamondAutBar31 below · depth 26 - 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 - Atkin–Lehner automorphism at p exchanging the two degeneracy legs
ModularCurve.XOneP.exists_coprime_algEquiv_algEquiv_apply_heckeAlphaOneBar_eq_heckeBetaOneBar_diamondAutBar_and_apply_heckeBetaOneBar_eq_of_atkinLehnerInvolutionFull211 below · depth 27 - Diamond automorphisms fix the base-changed function field of X₀(N)
ModularCurve.diamondAutBar_apply_coeffEmb_modularFunctionFieldFull_eq216 below · depth 27 - Automorphism fixing the X₀(Mp) q-expansions is a diamond
ModularCurve.exists_coprime_forall_eq_diamondAutBar_of_forall_apply_coeffEmb_modularFunctionFieldFull_eq_x1FunctionFieldBar217 below · depth 27 - Exchanging j(q^e) and j(q^{ep}) determines wₚ
ModularCurve.XOneP.coe_apply_coeffEmb_eq_coeffEmb_atkinLehnerInvolutionFull_of_atkinLehnerSlash_p78 below · depth 28 - Slash transport along Wₚ swaps j(q^e) and j(q^{ep})
ModularCurve.XOneP.coe_apply_eq_coeffEmb_qExpand_mul_jq_of_atkinLehnerSlash_p7 below · depth 28 - Atkin–Lehner pull-back at p swaps the degeneracy embeddings
ModularCurve.XOneP.comp_alpha_eq_beta_and_comp_beta_eq_alpha_comp_diamondAutBar_of_atkinLehnerSlash_p1 below · depth 28 - Atkin–Lehner automorphism W_{p²} of the Γ₁(Mp)∩Γ₀(Mp²) function field
ModularCurve.XOneP.exists_algEquiv_laurentBaseChange_x1x0FunctionFieldC_coeffMap_apply_eq_atkinLehnerSlash_sq112 below · depth 28 - Atkin–Lehner automorphism wₚ of ℚ̄(X₁(Mp))
ModularCurve.XOneP.exists_algEquiv_x1FunctionFieldBar_coeffMap_apply_eq_atkinLehnerSlash_p81 below · depth 28 - Atkin–Lehner leg laws: Wα=β⟨ d⟩τ, Wβ=α⟨ d'⟩τ
ModularCurve.XOneP.exists_coprime_apply_heckeAlphaOneBar_eq_heckeBetaOneBar_diamondAutBar_of_atkinLehnerSlash_p_of_atkinLehnerSlash_sq33 below · depth 28