Skip to content

Commit 6ef8817

Browse files
CBirkbeckclaude
andcommitted
chore: adapt to v4.32.0-rc1 (overlappingInstances linter + mapGL coercion)
- Split NormTrace's SlashInvariantFormClass-only and ModularFormClass lemmas into separate sections for the new overlappingInstances linter. - Bridge the `SL(2,ℤ) → GL(2,ℝ)` coercion and `mapGL ℝ` explicitly at two sites: v4.32 simp no longer unifies `toGL (map (Int.castRingHom ℝ) ·)` with `mapGL ℝ ·` (`= toGL (map (algebraMap ℤ ℝ) ·)`), though they remain defeq. Restated the `T_pow_integerCuspWidth_mem` application and the `slash_T_zpow_apply_general` rewrite in `mapGL`/coercion-matching form. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 1052065 commit 6ef8817

1 file changed

Lines changed: 21 additions & 7 deletions

File tree

Mathlib/NumberTheory/ModularForms/NormTrace.lean

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ instance : MulAction ℋ 𝒬 := .quotient ..
2929

3030
namespace SlashInvariantForm
3131

32+
section
3233
variable [SlashInvariantFormClass F 𝒢 k]
3334

3435
/-- For `f` invariant under `𝒢`, this is a function on `(ℋ ⧸ 𝒢 ⊓ ℋ) × ℍ → ℂ` which packages up the
@@ -48,19 +49,27 @@ lemma quotientFunc_smul {h} (hh : h ∈ ℋ) (q : 𝒬) :
4849
induction q using Quotient.inductionOn with
4950
| h r => simp [SlashAction.slash_mul]
5051

52+
end
53+
54+
section
55+
variable [ModularFormClass F 𝒢 k]
56+
5157
/-- Each `quotientFunc f q` is holomorphic on the upper half plane. -/
52-
lemma quotientFunc_mdiff [ModularFormClass F 𝒢 k] (q : 𝒬) :
58+
lemma quotientFunc_mdiff (q : 𝒬) :
5359
MDiff (quotientFunc f q) :=
5460
Quotient.inductionOn q fun r ↦ (ModularForm.translate f r.val⁻¹).holo'
5561

5662
/-- Each `quotientFunc f q` is bounded at `∞`. -/
57-
lemma quotientFunc_isBoundedAtImInfty [ModularFormClass F 𝒢 k] [𝒢.IsFiniteRelIndex ℋ]
63+
lemma quotientFunc_isBoundedAtImInfty [𝒢.IsFiniteRelIndex ℋ]
5864
[Fact (IsCusp OnePoint.infty ℋ)] (q : 𝒬) :
5965
IsBoundedAtImInfty (quotientFunc f q) :=
6066
Quotient.inductionOn q fun ⟨_, hr⟩ ↦ OnePoint.isBoundedAt_infty_iff.mp <|
6167
(ModularForm.translate f _).bdd_at_cusps'
6268
((Fact.out : IsCusp _ _).of_isFiniteRelIndex_conj hr)
6369

70+
end
71+
72+
variable [SlashInvariantFormClass F 𝒢 k]
6473
variable (ℋ) [𝒢.IsFiniteRelIndex ℋ]
6574

6675
/-- The trace of a slash-invariant form, as a slash-invariant form. -/
@@ -436,7 +445,10 @@ lemma image_T_pow_invariant_under_T_mul
436445
· have hj_eq : (j : ℕ) + 1 = 𝒢.integerCuspWidth := by lia
437446
refine ⟨⟨0, Subgroup.integerCuspWidth_pos⟩, Finset.mem_univ _, ?_⟩
438447
rw [hj_eq, QuotientGroup.eq, Subgroup.mem_subgroupOf]
439-
simpa using Subgroup.T_pow_integerCuspWidth_mem (𝒢 := 𝒢)
448+
have key : ((Matrix.SpecialLinearGroup.mapGL ℝ (ModularGroup.T : SL(2, ℤ)))
449+
^ 𝒢.integerCuspWidth : GL (Fin 2) ℝ) ∈ 𝒢 :=
450+
Subgroup.T_pow_integerCuspWidth_mem (𝒢 := 𝒢)
451+
simpa using key
440452

441453
/-- The action of `T` (via `mapGL`) on `𝒮ℒ ⧸ (𝒢 ⊓ 𝒮ℒ)` permutes the image of the `T^j` cosets. -/
442454
lemma image_T_pow_invariant_under_T_smul
@@ -515,15 +527,17 @@ lemma prod_quotientFunc_filter_image_one_vadd
515527
𝒮ℒ ⧸ (𝒢.subgroupOf 𝒮ℒ)))),
516528
SlashInvariantForm.quotientFunc f q τ := by
517529
set T_𝒮ℒ : 𝒮ℒ := (Matrix.SpecialLinearGroup.mapGL ℝ).rangeRestrict
518-
(ModularGroup.T : SL(2, ℤ))
530+
(ModularGroup.T : SL(2, ℤ)) with hT_𝒮ℒ_def
519531
have h_step1 (q : 𝒮ℒ ⧸ (𝒢.subgroupOf 𝒮ℒ)) :
520532
SlashInvariantForm.quotientFunc f q ((1 : ℝ) +ᵥ τ) =
521533
SlashInvariantForm.quotientFunc f (T_𝒮ℒ⁻¹ • q) τ := by
522534
rw [show (SlashInvariantForm.quotientFunc f q) ((1 : ℝ) +ᵥ τ) =
523535
((SlashInvariantForm.quotientFunc f q) ∣[k] T_𝒮ℒ.val) τ by
524-
simpa [zpow_one] using
525-
(SlashInvariantForm.slash_T_zpow_apply_general k 1 (SlashInvariantForm.quotientFunc f q)
526-
τ).symm,
536+
have hT : T_𝒮ℒ.val = ((ModularGroup.T : SL(2, ℤ)) ^ (1 : ℤ) : GL (Fin 2) ℝ) := by
537+
rw [hT_𝒮ℒ_def, MonoidHom.coe_rangeRestrict]
538+
exact (zpow_one (Matrix.SpecialLinearGroup.mapGL ℝ (ModularGroup.T : SL(2, ℤ)))).symm
539+
rw [hT, SlashInvariantForm.slash_T_zpow_apply_general]
540+
norm_num,
527541
SlashInvariantForm.quotientFunc_smul f T_𝒮ℒ.2]
528542
refine (Finset.prod_congr rfl fun q _ ↦ h_step1 q).trans <|
529543
Finset.prod_equiv (MulAction.toPerm T_𝒮ℒ⁻¹)

0 commit comments

Comments
 (0)