Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Merged by Bors] - Eisenstein series are mdifferentiable #11013

Closed
wants to merge 170 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
170 commits
Select commit Hold shift + click to select a range
1114eea
wip save
CBirkbeck Feb 6, 2024
e9440a2
Update Mathlib/NumberTheory/ModularForms/EisensteinSeries/Finset_Deco…
CBirkbeck Feb 6, 2024
e229b84
Update Mathlib/NumberTheory/ModularForms/EisensteinSeries/Finset_Deco…
CBirkbeck Feb 6, 2024
3a0fc10
Update Mathlib/NumberTheory/ModularForms/EisensteinSeries/UniformConv…
CBirkbeck Feb 6, 2024
b74fe5c
Update Mathlib/NumberTheory/ModularForms/EisensteinSeries/UniformConv…
CBirkbeck Feb 6, 2024
bcf756c
Update Mathlib/NumberTheory/ModularForms/EisensteinSeries/UniformConv…
CBirkbeck Feb 6, 2024
b241e15
Update Mathlib/NumberTheory/ModularForms/EisensteinSeries/UniformConv…
CBirkbeck Feb 6, 2024
a456d5b
Update Mathlib/NumberTheory/ModularForms/EisensteinSeries/UniformConv…
CBirkbeck Feb 6, 2024
eed710a
Update Mathlib/NumberTheory/ModularForms/EisensteinSeries/UniformConv…
CBirkbeck Feb 6, 2024
6b00e1f
Update Mathlib/NumberTheory/ModularForms/EisensteinSeries/UniformConv…
CBirkbeck Feb 6, 2024
0655fb3
Update Mathlib/NumberTheory/ModularForms/EisensteinSeries/UniformConv…
CBirkbeck Feb 6, 2024
b2a5942
Update Mathlib/NumberTheory/ModularForms/EisensteinSeries/UniformConv…
CBirkbeck Feb 6, 2024
80e3230
some linting
CBirkbeck Feb 6, 2024
0b42af4
missed one
CBirkbeck Feb 6, 2024
8b3ca2e
missed one
CBirkbeck Feb 6, 2024
3b6159b
more lint
CBirkbeck Feb 6, 2024
0fc98a5
more lint
CBirkbeck Feb 6, 2024
79fe9ac
save
CBirkbeck Feb 9, 2024
a68247d
add file names
CBirkbeck Feb 9, 2024
99469cb
shake fix
CBirkbeck Feb 9, 2024
89c9ee8
save
CBirkbeck Feb 9, 2024
8e0f4a8
sections
CBirkbeck Feb 9, 2024
3e94fcb
simplifications, but golfing still needed
CBirkbeck Feb 10, 2024
6012f67
save
CBirkbeck Feb 10, 2024
d63d918
save2
CBirkbeck Feb 10, 2024
bc282a0
lint fix
CBirkbeck Feb 10, 2024
49d5d22
golf
CBirkbeck Feb 10, 2024
edf1752
save
CBirkbeck Feb 10, 2024
38ca47f
more golf
CBirkbeck Feb 12, 2024
b402c36
build fix
CBirkbeck Feb 12, 2024
a3c4d21
fix imports
CBirkbeck Feb 12, 2024
90b37fe
more cleanup
CBirkbeck Feb 12, 2024
83ee7dc
rename file
YaelDillies Feb 13, 2024
9ba96ec
rev fixes wip
CBirkbeck Feb 13, 2024
01f2d44
Merge branch 'eisensteinSeries_Uniform_convergence' of https://github…
CBirkbeck Feb 13, 2024
c4bfb5b
Box theory
YaelDillies Feb 13, 2024
224f82e
feat: Boxes in locally finite ordered rings
YaelDillies Feb 13, 2024
1c0a1e8
moved some lemmas around, while waiting for boxes to be PRd
CBirkbeck Feb 13, 2024
e534563
Merge branch 'eisensteinSeries_Uniform_convergence' of https://github…
CBirkbeck Feb 13, 2024
de4faf1
fix updates
CBirkbeck Feb 13, 2024
0788f1b
fix simp
CBirkbeck Feb 13, 2024
5d9708c
fix simp nf
YaelDillies Feb 13, 2024
cc886d8
fix doc string
CBirkbeck Feb 13, 2024
57154ca
save before trying to generalise the bound
CBirkbeck Feb 13, 2024
627b254
fix
CBirkbeck Feb 13, 2024
f6d0b12
fix
CBirkbeck Feb 13, 2024
682f525
remove junk lemma
CBirkbeck Feb 13, 2024
d2182d3
fix merge issue
CBirkbeck Feb 13, 2024
e653c32
fix merge issue
CBirkbeck Feb 13, 2024
f82014d
shake fix?
CBirkbeck Feb 14, 2024
034f09d
fix import
CBirkbeck Feb 14, 2024
c638374
shake ignore?
CBirkbeck Feb 14, 2024
12d7fdf
save
CBirkbeck Feb 14, 2024
a4ca86a
Merge remote-tracking branch 'origin/master' into finset_box
YaelDillies Feb 16, 2024
bbb7c23
Merge remote-tracking branch 'origin/finset_box' into eisensteinSerie…
CBirkbeck Feb 16, 2024
c99c5a9
fix merge update
CBirkbeck Feb 16, 2024
4b566d2
remove junk lemma
CBirkbeck Feb 16, 2024
23246b3
golf
CBirkbeck Feb 16, 2024
c4bf406
update bound to real powers
CBirkbeck Feb 16, 2024
27421d7
style fix
CBirkbeck Feb 16, 2024
22374fc
remove unused lemma
CBirkbeck Feb 16, 2024
08452b5
Merge remote-tracking branch 'origin/master' into eisensteinSeries_Un…
YaelDillies Feb 20, 2024
ebcf5be
cleanup
YaelDillies Feb 20, 2024
80fce6b
Merge remote-tracking branch 'origin/master' into eisensteinSeries_Un…
CBirkbeck Feb 23, 2024
4c85191
small golf
CBirkbeck Feb 23, 2024
b8ccdad
lint fix and re-squeeze some simps
CBirkbeck Feb 23, 2024
87297e8
2
CBirkbeck Feb 23, 2024
2ed727d
fix last thm
CBirkbeck Feb 23, 2024
9e4428b
fix last thm name
CBirkbeck Feb 23, 2024
33f9ee3
lint fix
CBirkbeck Feb 23, 2024
b887845
generalise fun_ne_zero_cases
CBirkbeck Feb 23, 2024
42b6b8a
add a complex version of main thm
CBirkbeck Feb 27, 2024
3f99f9a
save
CBirkbeck Feb 27, 2024
472a7c4
add file
CBirkbeck Feb 27, 2024
96e63cc
fix name
CBirkbeck Feb 27, 2024
73293db
lint fixes
CBirkbeck Feb 27, 2024
f5ed300
doc string
CBirkbeck Feb 27, 2024
287e14f
add file to mathlib
CBirkbeck Feb 27, 2024
dcd880a
rev updates
CBirkbeck Mar 1, 2024
3a09ccc
make arg implicit
CBirkbeck Mar 1, 2024
6b4c2c8
updates
CBirkbeck Mar 1, 2024
bf52d28
updates
CBirkbeck Mar 1, 2024
0673e7c
move files
CBirkbeck Mar 1, 2024
82d2d1d
merge fix
CBirkbeck Mar 1, 2024
7ee95cf
fix
CBirkbeck Mar 1, 2024
623b79f
lint fix
CBirkbeck Mar 1, 2024
4b86f7f
lint fix
CBirkbeck Mar 1, 2024
1ad2e31
some golf
CBirkbeck Mar 6, 2024
8f1d15e
more golf
CBirkbeck Mar 6, 2024
bc25990
more cleanup
CBirkbeck Mar 6, 2024
b5b30b6
move files around
CBirkbeck Mar 6, 2024
eaa2ca5
fix
CBirkbeck Mar 6, 2024
15a5ff6
rev fixes wip
CBirkbeck Mar 8, 2024
9a7b913
this can probs be golfed more, but I'm stoopid
CBirkbeck Mar 8, 2024
3600a74
composing non_zero function with inj fun is non_zero
CBirkbeck Mar 8, 2024
07ec99b
use inj func pr
CBirkbeck Mar 8, 2024
2b6b90d
clean a bit
CBirkbeck Mar 8, 2024
c36b011
merge
CBirkbeck Mar 8, 2024
a4fbdc5
mege
CBirkbeck Mar 8, 2024
b4cd118
merge fix
CBirkbeck Mar 18, 2024
b8bd635
merge fix
CBirkbeck Mar 18, 2024
4e2ac14
fix
CBirkbeck Mar 25, 2024
db21b89
merge fix
CBirkbeck Apr 15, 2024
083ea46
Merge branch 'eisensteinSeries_Uniform_convergence' of https://github…
CBirkbeck Apr 15, 2024
a0e1e79
Update Mathlib.lean
CBirkbeck Apr 15, 2024
77bafcb
fix
CBirkbeck Apr 15, 2024
e981f3d
rev fixes
CBirkbeck Apr 15, 2024
ab3cec4
Merge branch 'eisensteinSeries_Uniform_convergence' of https://github…
CBirkbeck Apr 15, 2024
f6f8b08
missed one
CBirkbeck Apr 15, 2024
123dd62
merge fix/update
CBirkbeck Apr 26, 2024
405b34d
Merge remote-tracking branch 'origin/master' into eisensteinSeries_Un…
CBirkbeck Apr 26, 2024
dc0a5b1
fix
CBirkbeck Apr 26, 2024
fdeeff6
feat(Complex/UpperHalfPlane): add vertical strips needed for mod form…
CBirkbeck Apr 26, 2024
a243ce6
doc string
CBirkbeck Apr 26, 2024
f18cfea
move strips into topology
CBirkbeck Apr 26, 2024
61b0056
summable lems move test
CBirkbeck Apr 26, 2024
e5e78c0
test2
CBirkbeck Apr 26, 2024
a8380ae
do todo from port
CBirkbeck Apr 26, 2024
95f199f
build fix
CBirkbeck Apr 26, 2024
0472942
fix
CBirkbeck Apr 26, 2024
a5f0f87
Merge branch 'CB_summable_partion_lemmas' of https://github.com/leanp…
CBirkbeck Apr 26, 2024
b8b7b44
merge fix
CBirkbeck Apr 26, 2024
8fbe573
Merge remote-tracking branch 'origin/upper_half_plane_stip_lemmas' in…
CBirkbeck Apr 26, 2024
ac145a1
merge fix
CBirkbeck Apr 26, 2024
01a9357
more fixes
CBirkbeck Apr 26, 2024
3a77b2f
fix docstring
CBirkbeck Apr 26, 2024
10365c4
build fixes
CBirkbeck Apr 26, 2024
105e5d5
fix import
CBirkbeck Apr 26, 2024
85ee5e6
update
CBirkbeck Apr 26, 2024
d384961
fix
CBirkbeck Apr 26, 2024
ceecd42
updates
CBirkbeck Apr 26, 2024
bffebab
golf
CBirkbeck Apr 26, 2024
61b6339
Update Mathlib/NumberTheory/ModularForms/EisensteinSeries/MDifferenti…
CBirkbeck Apr 26, 2024
0e00953
minor fix
CBirkbeck Apr 26, 2024
d4bbe92
minor fix
CBirkbeck Apr 26, 2024
8891f5a
remove junk complex.abs
CBirkbeck Apr 30, 2024
9c1c1d2
fix
CBirkbeck Apr 30, 2024
e6b0cdf
updates
CBirkbeck May 1, 2024
9bdf78f
Merge remote-tracking branch 'origin/master' into eisensteinSeries_Un…
CBirkbeck May 1, 2024
1e48883
fix2
CBirkbeck May 1, 2024
aeb0b43
fix lintr
CBirkbeck May 2, 2024
151bf23
fix
CBirkbeck May 2, 2024
099c98e
Merge remote-tracking branch 'origin/eisensteinSeries_Uniform_converg…
CBirkbeck May 2, 2024
e86b900
update
CBirkbeck May 2, 2024
548d4d7
Merge remote-tracking branch 'origin/master' into eisensteinSeries_MD…
CBirkbeck May 8, 2024
b1d2d63
fix
CBirkbeck May 8, 2024
8dd90b0
fix merge
CBirkbeck May 15, 2024
7a12683
wip
CBirkbeck May 17, 2024
7a76e13
cleanup in progress
CBirkbeck May 17, 2024
423e123
cleanup
CBirkbeck May 17, 2024
e4a74a0
remove unused
CBirkbeck May 17, 2024
772b883
clean now
CBirkbeck May 17, 2024
d1ea703
tiny golf
CBirkbeck May 17, 2024
313bdf3
rev updates
CBirkbeck May 20, 2024
95418ba
rev updates
CBirkbeck May 22, 2024
073a16f
removed coe_eq lemma
CBirkbeck May 22, 2024
ebe6f46
shake fix?
CBirkbeck May 22, 2024
78194fe
Merge remote-tracking branch 'origin/master' into eisensteinSeries_MD…
CBirkbeck May 22, 2024
4303005
Revert "shake fix?"
CBirkbeck May 23, 2024
1e4335d
shake fix v2
CBirkbeck May 24, 2024
e0f61fe
fix v3
CBirkbeck May 24, 2024
a1b8f51
Merge remote-tracking branch 'origin/master' into eisensteinSeries_MD…
CBirkbeck May 27, 2024
e8b8d93
fix shake again? test
CBirkbeck May 27, 2024
e009b14
indent
CBirkbeck May 27, 2024
0e2832e
fix again
CBirkbeck May 27, 2024
ebbb9df
rev fixes
CBirkbeck May 27, 2024
115a923
missed rev change
CBirkbeck May 27, 2024
b3deb47
forgotten line
CBirkbeck May 27, 2024
7e75b5c
Merge remote-tracking branch 'origin/master' into eisensteinSeries_MD…
CBirkbeck May 27, 2024
34984e7
blank line readded
CBirkbeck May 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Mathlib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -3111,6 +3111,7 @@ import Mathlib.NumberTheory.Modular
import Mathlib.NumberTheory.ModularForms.Basic
import Mathlib.NumberTheory.ModularForms.CongruenceSubgroups
import Mathlib.NumberTheory.ModularForms.EisensteinSeries.Basic
import Mathlib.NumberTheory.ModularForms.EisensteinSeries.MDifferentiable
import Mathlib.NumberTheory.ModularForms.EisensteinSeries.UniformConvergence
import Mathlib.NumberTheory.ModularForms.JacobiTheta.Bounds
import Mathlib.NumberTheory.ModularForms.JacobiTheta.Manifold
Expand Down
13 changes: 13 additions & 0 deletions Mathlib/Analysis/Complex/UpperHalfPlane/Topology.lean
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import Mathlib.Analysis.Convex.Normed
import Mathlib.Analysis.Convex.Complex
import Mathlib.Analysis.Complex.ReImTopology
import Mathlib.Topology.Homotopy.Contractible
import Mathlib.Topology.PartialHomeomorph

#align_import analysis.complex.upper_half_plane.topology from "leanprover-community/mathlib"@"57f9349f2fe19d2de7207e99b0341808d977cdcf"

Expand Down Expand Up @@ -107,4 +108,16 @@ lemma subset_verticalStrip_of_isCompact {K : Set ℍ} (hK : IsCompact K) :

end strips

/-- A continuous section `ℂ → ℍ` of the natural inclusion map, bundled as a `PartialHomeomorph`. -/
def ofComplex : PartialHomeomorph ℂ ℍ := (openEmbedding_coe.toPartialHomeomorph _).symm

/-- Extend a function on `ℍ` arbitrarily to a function on all of `ℂ`. -/
scoped notation "↑ₕ" f => f ∘ ofComplex

lemma ofComplex_apply (z : ℍ) : ofComplex (z : ℂ) = z :=
OpenEmbedding.toPartialHomeomorph_left_inv ..

lemma comp_ofComplex (f : ℍ → ℂ) (z : ℍ) : (↑ₕ f) z = f z := by
rw [Function.comp_apply, ofComplex_apply]

end UpperHalfPlane
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
/-
Copyright (c) 2024 Chris Birkbeck. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Chris Birkbeck
-/

import Mathlib.NumberTheory.ModularForms.EisensteinSeries.UniformConvergence
import Mathlib.Analysis.Complex.UpperHalfPlane.Manifold
import Mathlib.Analysis.Complex.LocallyUniformLimit
import Mathlib.Geometry.Manifold.MFDeriv.FDeriv

/-!
# Holomorphicity of Eisenstein series

We show that Eisenstein series of weight `k` and level `Γ(N)` with congruence condition
`a : Fin 2 → ZMod N` are holomorphic on the upper half plane, which is stated as being
MDifferentiable.
-/

noncomputable section

open ModularForm EisensteinSeries UpperHalfPlane Set Filter Function Complex Manifold

open scoped Topology BigOperators Nat Classical UpperHalfPlane

namespace EisensteinSeries

/-- Auxilary lemma showing that for any `k : ℤ` the function `z → 1/(c*z+d)^k` is
differentiable on `{z : ℂ | 0 < z.im}`. -/
lemma div_linear_zpow_differentiableOn (k : ℤ) (a : Fin 2 → ℤ) :
DifferentiableOn ℂ (fun z : ℂ => 1 / (a 0 * z + a 1) ^ k) {z : ℂ | 0 < z.im} := by
CBirkbeck marked this conversation as resolved.
Show resolved Hide resolved
rcases ne_or_eq a 0 with ha | rfl
· apply DifferentiableOn.div (differentiableOn_const 1)
· apply DifferentiableOn.zpow
· fun_prop
· left
exact fun z hz ↦ linear_ne_zero _ ⟨z, hz⟩
((comp_ne_zero_iff _ Int.cast_injective Int.cast_zero).mpr ha)
· exact fun z hz ↦ zpow_ne_zero k (linear_ne_zero (a ·)
⟨z, hz⟩ ((comp_ne_zero_iff _ Int.cast_injective Int.cast_zero).mpr ha))
· simp only [ Fin.isValue, Pi.zero_apply, Int.cast_zero, zero_mul, add_zero, one_div]
apply differentiableOn_const

/-- Auxilary lemma showing that for any `k : ℤ` and `(a : Fin 2 → ℤ)`
the extension of `eisSummand` is differentiable on `{z : ℂ | 0 < z.im}`.-/
lemma eisSummand_extension_differentiableOn (k : ℤ) (a : Fin 2 → ℤ) :
DifferentiableOn ℂ (↑ₕeisSummand k a) {z : ℂ | 0 < z.im} := by
apply DifferentiableOn.congr (div_linear_zpow_differentiableOn k a)
intro z hz
lift z to ℍ using hz
apply comp_ofComplex

/-- Eisenstein series are MDifferentiable (i.e. holomorphic functions from `ℍ → ℂ`). -/
theorem eisensteinSeries_SIF_MDifferentiable {k : ℤ} {N : ℕ} (hk : 3 ≤ k) (a : Fin 2 → ZMod N) :
MDifferentiable 𝓘(ℂ) 𝓘(ℂ) (eisensteinSeries_SIF a k) := by
intro τ
suffices DifferentiableAt ℂ (↑ₕeisensteinSeries_SIF a k) τ.1 by
convert MDifferentiableAt.comp τ (DifferentiableAt.mdifferentiableAt this) τ.mdifferentiable_coe
exact funext fun z ↦ (comp_ofComplex (eisensteinSeries_SIF a k) z).symm
refine DifferentiableOn.differentiableAt ?_
((isOpen_lt continuous_const Complex.continuous_im).mem_nhds τ.2)
exact (eisensteinSeries_tendstoLocallyUniformlyOn hk a).differentiableOn
(eventually_of_forall fun s ↦ DifferentiableOn.sum
fun _ _ ↦ eisSummand_extension_differentiableOn _ _)
(isOpen_lt continuous_const continuous_im)
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ noncomputable section

open Complex UpperHalfPlane Set Finset

open scoped BigOperators
open scoped BigOperators UpperHalfPlane


variable (z : ℍ)

Expand Down Expand Up @@ -179,15 +180,13 @@ theorem eisensteinSeries_tendstoLocallyUniformly {k : ℤ} (hk : 3 ≤ k) {N :
simpa only [eisSummand, one_div, ← zpow_neg, norm_eq_abs, abs_zpow, ← Real.rpow_intCast,
Int.cast_neg] using summand_bound_of_mem_verticalStrip (by positivity) p hB hz

/-- Extend a function on `ℍ` arbitrarily to a function on all of `ℂ`. -/
local notation "↑ₕ" f => f ∘ (PartialHomeomorph.symm (openEmbedding_coe.toPartialHomeomorph _))

/-- Variant of `eisensteinSeries_tendstoLocallyUniformly` formulated with maps `ℂ → ℂ`, which is
nice to have for holomorphicity later. -/
lemma eisensteinSeries_tendstoLocallyUniformlyOn {k : ℤ} {N : ℕ} (hk : 3 ≤ k)
(a : Fin 2 → ZMod N) : TendstoLocallyUniformlyOn (fun (s : Finset (gammaSet N a )) ↦
↑ₕ(fun (z : ℍ) ↦ ∑ x ∈ s, eisSummand k x z )) (↑ₕ(eisensteinSeries_SIF a k).toFun)
Filter.atTop (UpperHalfPlane.coe '' ⊤) := by
↑ₕ(fun (z : ℍ) ↦ ∑ x in s, eisSummand k x z )) (↑ₕ(eisensteinSeries_SIF a k).toFun)
Filter.atTop {z : ℂ | 0 < z.im} := by
rw [← Subtype.coe_image_univ {z : ℂ | 0 < z.im}]
apply TendstoLocallyUniformlyOn.comp (s := ⊤) _ _ _ (PartialHomeomorph.continuousOn_symm _)
· simp only [SlashInvariantForm.toFun_eq_coe, Set.top_eq_univ, tendstoLocallyUniformlyOn_univ]
apply eisensteinSeries_tendstoLocallyUniformly hk
Expand Down
Loading