Skip to content

Commit a8d664f

Browse files
committed
Much work-in-progress stuff
1 parent cf51696 commit a8d664f

10 files changed

Lines changed: 245 additions & 592 deletions

ModularFormDimensions.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import ModularFormDimensions.Basic
21
import ModularFormDimensions.Divisor
3-
import ModularFormDimensions.MathlibPRs.MeromorphicOrder
4-
import ModularFormDimensions.MathlibPRs.ModularFormBounds
2+
import ModularFormDimensions.FundamentalDomain
3+
import ModularFormDimensions.Measure
4+
import ModularFormDimensions.Stabilizer

ModularFormDimensions/Basic.lean

Lines changed: 0 additions & 1 deletion
This file was deleted.

ModularFormDimensions/Divisor.lean

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@ import Mathlib.Analysis.Complex.UpperHalfPlane.Manifold
1010
import Mathlib.Algebra.Group.Action.Sum
1111
import Mathlib.Analysis.Meromorphic.Order
1212
import Mathlib.Analysis.Complex.CauchyIntegral
13-
14-
import ModularFormDimensions.MathlibPRs.MeromorphicOrder
15-
13+
import Mathlib.Analysis.Meromorphic.NormalForm
1614

1715
open UpperHalfPlane Filter Topology
1816

19-
open scoped ModularForm
17+
open scoped ModularForm Manifold
2018

2119
private lemma UpperHalfPlane.analyticAt_smul {g : GL (Fin 2) ℝ} (hg : 0 < g.val.det) (τ : ℍ) :
2220
AnalyticAt ℂ (fun z ↦ ↑(g • ofComplex z) : ℂ → ℂ) τ := by
@@ -92,8 +90,8 @@ local notation "Y(" 𝒢 ")" => OpenModularCurve 𝒢
9290
9391
TODO: Is this the morally right definition? Do we want to `weight` it by
9492
the order of the stabilizer (at a cost of being `ℚ∞`-valued)? -/
95-
noncomputable def meromorphicOrderQuotient {k : ℤ} (f : SlashInvariantForm 𝒢 k)
96-
[𝒢.HasDetOne] : Y(𝒢) → WithTop ℤ :=
93+
noncomputable def meromorphicOrderQuotient {k : ℤ} (f : SlashInvariantForm 𝒢 k) [𝒢.HasDetOne] :
94+
Y(𝒢) → WithTop ℤ :=
9795
Quotient.lift (meromorphicOrderAt (f ∘ ofComplex) ·) (by
9896
rintro _ b ⟨⟨g, hg⟩, rfl⟩
9997
dsimp only [Subgroup.smul_def, Function.comp_def]
@@ -106,6 +104,44 @@ lemma meromorphicOrderQuotient_mk [𝒢.HasDetOne] {k : ℤ} (f : SlashInvariant
106104
meromorphicOrderQuotient 𝒢 f ⟦τ⟧ = meromorphicOrderAt (fun z ↦ f (ofComplex z)) ↑τ := by
107105
rfl
108106

107+
/-- Quotient of two meromorphic functions, in normal form. This is analytic wherever
108+
it can be. -/
109+
noncomputable def meroNFQuotient (f g : ℍ → ℂ) (τ : ℍ) :=
110+
toMeromorphicNFOn ((f ∘ ofComplex) / (g ∘ ofComplex)) upperHalfPlaneSet τ
111+
112+
lemma mdifferentiableAt_meroNFQuotient {f g : ℍ → ℂ} {τ : ℍ}
113+
(hf : MeromorphicOn (f ∘ ofComplex) upperHalfPlaneSet)
114+
(hg : MeromorphicOn (g ∘ ofComplex) upperHalfPlaneSet)
115+
(hle : ∀ (ξ : ℍ), meromorphicOrderAt (g ∘ ofComplex) ξ
116+
≤ meromorphicOrderAt (f ∘ ofComplex) ξ) :
117+
MDifferentiableAt 𝓘(ℂ) 𝓘(ℂ) (meroNFQuotient f g) τ := by
118+
rw [mdifferentiableAt_iff]
119+
have : (meroNFQuotient f g ∘ ofComplex) =ᶠ[𝓝 ↑τ]
120+
toMeromorphicNFOn ((f ∘ ofComplex) / (g ∘ ofComplex)) upperHalfPlaneSet := by
121+
filter_upwards [isOpen_upperHalfPlaneSet.mem_nhds τ.im_pos] with a ha
122+
simp [meroNFQuotient, ofComplex_apply_of_im_pos, ha]
123+
rw [this.differentiableAt_iff]
124+
suffices AnalyticOnNhd ℂ _ upperHalfPlaneSet from (this ↑τ τ.im_pos).differentiableAt
125+
rw [← MeromorphicNFOn.divisor_nonneg_iff_analyticOnNhd]
126+
· intro a
127+
by_cases ha : 0 < a.im
128+
· rw [(meromorphicNFOn_toMeromorphicNFOn _ _).meromorphicOn.divisor_apply (by exact ha)]
129+
simp only [Function.locallyFinsuppWithin.coe_zero,
130+
Pi.zero_apply, WithTop.untop₀_nonneg]
131+
simp only [div_eq_mul_inv]
132+
rw [meromorphicOrderAt_toMeromorphicNFOn (hf.mul hg.inv) ha,
133+
meromorphicOrderAt_mul (hf a ha) (hg a ha).inv,
134+
meromorphicOrderAt_inv, ← sub_eq_add_neg]
135+
specialize hle (.mk a ha)
136+
generalize hr : meromorphicOrderAt (f ∘ ↑ofComplex) a = r
137+
generalize hs : meromorphicOrderAt (g ∘ ↑ofComplex) a = s
138+
cases r with | top => simp | coe r =>
139+
cases s with | top => simp | coe s =>
140+
norm_cast
141+
aesop
142+
· simp [ha]
143+
· exact meromorphicNFOn_toMeromorphicNFOn _ _
144+
109145
/-- The quotient `𝒢 \ ℍ⋆`, where `𝒢` is a subgroup of `GL(2, ℝ)` and `ℍ⋆` denotes the union of
110146
`ℍ` and the cusps of `𝒢`. -/
111147
def CompletedModularCurve : Type := (OpenModularCurve 𝒢) ⊕ CuspOrbits 𝒢
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import Mathlib.NumberTheory.Modular
2+
import Mathlib.NumberTheory.ModularForms.Basic
3+
import Mathlib.Analysis.Complex.Exponential
4+
import Mathlib.Analysis.Convex.Measure
5+
6+
open MeasureTheory
7+
8+
section basic
9+
10+
variable {X : Type*} [TopologicalSpace X] [MeasurableSpace X] {s t : Set X} {μ : Measure X}
11+
12+
lemma hasNullFrontier_inter (hs : μ (frontier s) = 0) (ht : μ (frontier t) = 0) :
13+
μ (frontier (s ∩ t)) = 0 := by
14+
refine measure_mono_null (frontier_inter_subset s t) (measure_union_null ?_ ?_)
15+
· exact measure_mono_null Set.inter_subset_left hs
16+
· exact measure_mono_null Set.inter_subset_right ht
17+
18+
lemma hasNullFrontier_union (hs : μ (frontier s) = 0) (ht : μ (frontier t) = 0) :
19+
μ (frontier (s ∪ t)) = 0 := by
20+
refine measure_mono_null (frontier_union_subset s t) (measure_union_null ?_ ?_)
21+
· exact measure_mono_null Set.inter_subset_left hs
22+
· exact measure_mono_null Set.inter_subset_right ht
23+
24+
lemma hasNullFrontier_compl :
25+
μ (frontier sᶜ) = 0 ↔ μ (frontier sᶜ) = 0 := by
26+
rw [frontier_compl]
27+
28+
end basic
29+
30+
section fundDomain
31+
32+
private def openFundDomainSet : Set ℂ := {z | 0 < z.im ∧ 1 < ‖z‖ ∧ |z.re| < 1/2}
33+
34+
lemma isOpen_openFundDomainSet : IsOpen openFundDomainSet := by
35+
apply IsOpen.inter
36+
· exact UpperHalfPlane.isOpen_upperHalfPlaneSet
37+
· apply IsOpen.inter
38+
· exact isOpen_lt continuous_const continuous_norm
39+
· exact isOpen_lt (continuous_abs.comp Complex.continuous_re) continuous_const
40+
41+
private lemma hasNullFrontier_fundDomainSet : volume (frontier openFundDomainSet) = 0 := by
42+
apply hasNullFrontier_inter
43+
· exact (convex_halfSpace_im_gt 0).addHaar_frontier volume
44+
· apply hasNullFrontier_inter (s := {z | 1 < ‖z‖}) (t := {z : ℂ | |z.re| < 1/2})
45+
· rw [← frontier_compl]
46+
convert (convex_closedBall (0 : ℂ) 1).addHaar_frontier volume
47+
ext
48+
simp
49+
· simp only [abs_lt]
50+
apply hasNullFrontier_inter
51+
· exact (convex_halfSpace_re_gt _).addHaar_frontier _
52+
· exact (convex_halfSpace_re_lt _).addHaar_frontier _
53+
54+
end fundDomain

ModularFormDimensions/MathlibPRs/MeromorphicOrder.lean

Lines changed: 0 additions & 203 deletions
This file was deleted.

0 commit comments

Comments
 (0)