7. Modular Forms
In this section, we recall and develop some theory of (quasi)modular forms.
Let \mathbb{H} be the upper half-plane
\{z \in \mathbb{C} \mid \Im(z) > 0\}.
- No associated Lean code or declarations.
The modular group \Gamma_1:=\mathrm{SL}_2(\mathbb{Z}) acts on
\mathbb{H} by linear fractional transformations
\begin{pmatrix}a&b\\c&d\end{pmatrix}z:=\frac{az+b}{cz+d}.
- No associated Lean code or declarations.
The level N principal congruence subgroup of \Gamma_1 is
\Gamma(N):=\left\{\left.\left(\begin{smallmatrix}a&b\\c&d\end{smallmatrix}\right)\in\Gamma_1\right|\left(\begin{smallmatrix}a&b\\c&d\end{smallmatrix}\right)\equiv\left(\begin{smallmatrix}1&0\\0&1\end{smallmatrix}\right)\;\mathrm{mod}\;N\right\}.
A subgroup \Gamma \subset \Gamma_1 is a congruence subgroup if
\Gamma(N) \subset \Gamma for some N \in \mathbb{N}.
-
ModularGroup.S[complete] -
ModularGroup.T[complete] -
α[complete] -
β[complete]
Define the matrices
S = \begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix} \in \Gamma_1
T = \begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix} \in \Gamma_1
\alpha = \begin{pmatrix} 1 & 2 \\ 0 & 1 \end{pmatrix} \in \Gamma_2 \subset \Gamma_1
\beta = \begin{pmatrix} 1 & 0 \\ 2 & 1 \end{pmatrix} \in \Gamma_2 \subset \Gamma_1.
It is easily verifiable that \alpha = T^2 and
\beta = -S\alpha^{-1}S = -ST^{-2}S.
Lean code for Definition7.4●4 definitions
Associated Lean declarations
-
ModularGroup.S[complete]
-
ModularGroup.T[complete]
-
α[complete]
-
β[complete]
-
ModularGroup.S[complete] -
ModularGroup.T[complete] -
α[complete] -
β[complete]
-
defdefined in Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.leancomplete
def ModularGroup.S : Matrix.SpecialLinearGroup (Fin 2) ℤ
def ModularGroup.S : Matrix.SpecialLinearGroup (Fin 2) ℤ
The matrix `S = [[0, -1], [1, 0]]` as an element of `SL(2, ℤ)`. This element acts naturally on the Euclidean plane as a rotation about the origin by `π / 2`. This element also acts naturally on the hyperbolic plane as rotation about `i` by `π`. It represents the Mobiüs transformation `z ↦ -1/z` and is an involutive elliptic isometry.
-
defdefined in Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.leancomplete
def ModularGroup.T : Matrix.SpecialLinearGroup (Fin 2) ℤ
def ModularGroup.T : Matrix.SpecialLinearGroup (Fin 2) ℤ
The matrix `T = [[1, 1], [0, 1]]` as an element of `SL(2, ℤ)`.
-
defdefined in SpherePacking/ModularForms/SlashActionAuxil.leancomplete
def α : ↥(CongruenceSubgroup.Gamma 2)
def α : ↥(CongruenceSubgroup.Gamma 2)
-
defdefined in SpherePacking/ModularForms/SlashActionAuxil.leancomplete
def β : ↥(CongruenceSubgroup.Gamma 2)
def β : ↥(CongruenceSubgroup.Gamma 2)
-
SL2Z_generate[complete]
We have \Gamma(1) = \langle S, T, -I \rangle.
Lean code for Lemma7.5●1 theorem
Associated Lean declarations
-
SL2Z_generate[complete]
-
SL2Z_generate[complete]
-
theoremdefined in SpherePacking/ModularForms/SlashActionAuxil.leancomplete
theorem SL2Z_generate : ⊤ = Subgroup.closure {ModularGroup.S, ModularGroup.T}
theorem SL2Z_generate : ⊤ = Subgroup.closure {ModularGroup.S, ModularGroup.T}
-
Γ2_generate[complete]
We have \Gamma(2) = \langle \alpha, \beta, -I \rangle.
Lean code for Lemma7.6●1 theorem
Associated Lean declarations
-
Γ2_generate[complete]
-
Γ2_generate[complete]
-
theoremdefined in SpherePacking/ModularForms/SlashActionAuxil.leancomplete
theorem Γ2_generate : ⊤ = Subgroup.closure {α, β, negI}
theorem Γ2_generate : ⊤ = Subgroup.closure {α, β, negI}
Let z\in\mathbb{H}, k\in\mathbb{Z}, and
\left(\begin{smallmatrix}a&b\\c&d\end{smallmatrix}\right)\in\mathrm{SL}_2(\mathbb{Z}).
We omit many of the proofs below when they exist in Mathlib already.
-
UpperHalfPlane.denom[complete]
The automorphy factor of weight k is defined as
j_k(z,\left(\begin{smallmatrix}a&b\\c&d\end{smallmatrix}\right)):=(cz+d)^{-k}.
Lean code for Definition7.7●1 definition
Associated Lean declarations
-
UpperHalfPlane.denom[complete]
-
UpperHalfPlane.denom[complete]
-
defdefined in Mathlib/Analysis/Complex/UpperHalfPlane/MoebiusAction.leancomplete
def UpperHalfPlane.denom (g : GL (Fin 2) ℝ) (z : ℂ) : ℂ
def UpperHalfPlane.denom (g : GL (Fin 2) ℝ) (z : ℂ) : ℂ
Denominator of the formula for a fractional linear transformation
-
UpperHalfPlane.denom_cocycle[complete]
The automorphy factor satisfies the chain rule
j_k(z,\gamma_1\gamma_2)=j_k(z,\gamma_1)\,j_k(\gamma_2z,\gamma_1).
Lean code for Lemma7.8●1 theorem
Associated Lean declarations
-
UpperHalfPlane.denom_cocycle[complete]
-
UpperHalfPlane.denom_cocycle[complete]
-
theoremdefined in Mathlib/Analysis/Complex/UpperHalfPlane/MoebiusAction.leancomplete
theorem UpperHalfPlane.denom_cocycle (g h : GL (Fin 2) ℝ) {z : ℂ} (hz : z.im ≠ 0) : UpperHalfPlane.denom (g * h) z = UpperHalfPlane.denom g (UpperHalfPlane.num h z / UpperHalfPlane.denom h z) * UpperHalfPlane.denom h z
theorem UpperHalfPlane.denom_cocycle (g h : GL (Fin 2) ℝ) {z : ℂ} (hz : z.im ≠ 0) : UpperHalfPlane.denom (g * h) z = UpperHalfPlane.denom g (UpperHalfPlane.num h z / UpperHalfPlane.denom h z) * UpperHalfPlane.denom h z
- No associated Lean code or declarations.
Let F be a function on \mathbb{H} and
\gamma \in \mathrm{SL}_2(\mathbb{Z}).
Then the slash operator acts on F by
(F|_k\gamma)(z):=j_k(z,\gamma)\,F(\gamma z).
-
SlashAction.slash_mul[complete]
The chain rule implies
F|_k\gamma_1\gamma_2=(F|_k\gamma_1)|_k\gamma_2.
Lean code for Lemma7.10●1 theorem
Associated Lean declarations
-
SlashAction.slash_mul[complete]
-
SlashAction.slash_mul[complete]
-
theoremdefined in Mathlib/NumberTheory/ModularForms/SlashActions.leancomplete
theorem SlashAction.slash_mul.{u_1, u_2, u_3} {β : Type u_1} {G : Type u_2} {α : Type u_3} {inst✝ : Monoid G} {inst✝¹ : AddMonoid α} [self : SlashAction β G α] (k : β) (g h : G) (a : α) : SlashAction.map k (g * h) a = SlashAction.map k h (SlashAction.map k g a)
theorem SlashAction.slash_mul.{u_1, u_2, u_3} {β : Type u_1} {G : Type u_2} {α : Type u_3} {inst✝ : Monoid G} {inst✝¹ : AddMonoid α} [self : SlashAction β G α] (k : β) (g h : G) (a : α) : SlashAction.map k (g * h) a = SlashAction.map k h (SlashAction.map k g a)
-
modular_slash_negI_of_even[complete]
For even k, F|_{k}(-I) = F.
Lean code for Lemma7.11●1 theorem
Associated Lean declarations
-
modular_slash_negI_of_even[complete]
-
modular_slash_negI_of_even[complete]
-
theoremdefined in SpherePacking/ModularForms/SlashActionAuxil.leancomplete
theorem modular_slash_negI_of_even (f : UpperHalfPlane → ℂ) (k : ℤ) (hk : Even k) : SlashAction.map k (↑negI) f = f
theorem modular_slash_negI_of_even (f : UpperHalfPlane → ℂ) (k : ℤ) (hk : Even k) : SlashAction.map k (↑negI) f = f
Follows from the definition of the slash operator:
(F|_{k}(-I))(z) = (-1)^{-k}F((-I)z) = F(z).
-
BlueprintDocAliases.ModularForm[complete]
Let \Gamma be a subgroup of \mathrm{SL}_2(\mathbb{Z}).
A modular form of level \Gamma and weight k \in \mathbb{Z} is a
function f : \mathbb{H} \to \mathbb{C} such that:
-
for all
\gamma \in \Gamma, we havef\mid_k \gamma = f -
fis holomorphic on\mathbb{H} -
for all
\gamma \in \mathrm{SL}_2(\mathbb{Z}), there existA, B \in \mathbb{R}such that for allz \in \mathbb{H}withA \le \mathrm{Im}(z), we have|(f \mid_k \gamma) (z) |\le B. This defines a complex vector space denoted byM_k(\Gamma).
Lean code for Definition7.12●1 definition
Associated Lean declarations
-
BlueprintDocAliases.ModularForm[complete]
-
BlueprintDocAliases.ModularForm[complete]
-
abbrevdefined in SpherePackingBlueprint/Formalization.leancomplete
abbrev BlueprintDocAliases.ModularForm (Γ : Subgroup (GL (Fin 2) ℝ)) (k : ℤ) : Type
abbrev BlueprintDocAliases.ModularForm (Γ : Subgroup (GL (Fin 2) ℝ)) (k : ℤ) : Type
Modular forms of a given level and weight.
-
ModularForm.eisensteinSeries_MF[complete]
For an even integer k\geq 4 define the weight-k Eisenstein series by
E_k(z):=\frac{1}{2}\sum_{(c,d)\in\Z^2, (c,d)=1}(cz+d)^{-k}.
Lean code for Definition7.13●1 definition
Associated Lean declarations
-
ModularForm.eisensteinSeries_MF[complete]
-
ModularForm.eisensteinSeries_MF[complete]
-
defdefined in Mathlib/NumberTheory/ModularForms/EisensteinSeries/Basic.leancomplete
def ModularForm.eisensteinSeries_MF {k : ℤ} {N : ℕ} [NeZero N] (hk : 3 ≤ k) (a : Fin 2 → ZMod N) : ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma N)) k
def ModularForm.eisensteinSeries_MF {k : ℤ} {N : ℕ} [NeZero N] (hk : 3 ≤ k) (a : Fin 2 → ZMod N) : ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma N)) k
**Alias** of `ModularForm.eisensteinSeriesMF`. --- This defines Eisenstein series as modular forms of weight `k`, level `Γ(N)` and congruence condition given by `a : Fin 2 → ZMod N`.
-
EisensteinSeries.eisensteinSeries_SIF[complete]
For all k, E_k\in M_k(\Gamma_1).
Especially, we have
E_k \left(-\frac{1}{z}\right) = z^k E_k(z).
Lean code for Lemma7.14●1 definition
Associated Lean declarations
-
EisensteinSeries.eisensteinSeries_SIF[complete]
-
EisensteinSeries.eisensteinSeries_SIF[complete]
-
defdefined in Mathlib/NumberTheory/ModularForms/EisensteinSeries/Defs.leancomplete
def EisensteinSeries.eisensteinSeries_SIF {N : ℕ} (a : Fin 2 → ZMod N) (k : ℤ) : SlashInvariantForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma N)) k
def EisensteinSeries.eisensteinSeries_SIF {N : ℕ} (a : Fin 2 → ZMod N) (k : ℤ) : SlashInvariantForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma N)) k
**Alias** of `EisensteinSeries.eisensteinSeriesSIF`. --- The `SlashInvariantForm` defined by an Eisenstein series of weight `k : ℤ`, level `Γ(N)`, and congruence condition given by `a : Fin 2 → ZMod N`.
This follows from the fact that the sum converges absolutely.
Applying the slash operator with
\gamma = \left(\begin{smallmatrix} 0 & -1 \\ 1 & 0 \end{smallmatrix}\right)
gives eqn:Ek-trans-S.
- No associated Lean code or declarations.
Let \Gamma be a finite-index subgroup of \mathrm{SL}_2(\mathbb{Z})
and let f \in \mathcal{M}_k(\Gamma) be a modular form of weight k.
Then the Fourier coefficients a_n(f) have polynomial growth, i.e.
|a_n(f)| = O(n^k).
Note that the assumption on polynomial growth holds when f is a
holomorphic modular form, where the proof can be found in Serre (1973) for
the case of level-one modular forms. This has been done in Lean 4 by David
Loeffler.
-
E_k_q_expansion[complete]
The Eisenstein series possesses the Fourier expansion
E_k(z)=1+\frac{2}{\zeta(1-k)}\sum_{n=1}^\infty \sigma_{k-1}(n)\,e^{2\pi i z},
where \sigma_{k-1}(n)=\sum_{d|n} d^{k-1}. In particular,
E_4(z)= 1+240\sum_{n=1}^\infty \sigma_3(n)\,e^{2\pi i n z}
E_6(z)= 1-504\sum_{n=1}^\infty \sigma_5(n)\,e^{2\pi i n z}.
Lean code for Lemma7.16●1 theorem
Associated Lean declarations
-
E_k_q_expansion[complete]
-
E_k_q_expansion[complete]
-
theoremdefined in SpherePacking/ModularForms/Eisensteinqexpansions.leancomplete
theorem E_k_q_expansion (k : ℕ) (hk : 3 ≤ ↑k) (hk2 : Even k) (z : UpperHalfPlane) : (E (↑k) hk) z = 1 + 1 / riemannZeta ↑k * ((-2 * ↑Real.pi * Complex.I) ^ k / ↑(k - 1).factorial) * ∑' (n : ℕ+), ↑((ArithmeticFunction.sigma (k - 1)) ↑n) * Complex.exp (2 * ↑Real.pi * Complex.I * ↑z * ↑↑n)
theorem E_k_q_expansion (k : ℕ) (hk : 3 ≤ ↑k) (hk2 : Even k) (z : UpperHalfPlane) : (E (↑k) hk) z = 1 + 1 / riemannZeta ↑k * ((-2 * ↑Real.pi * Complex.I) ^ k / ↑(k - 1).factorial) * ∑' (n : ℕ+), ↑((ArithmeticFunction.sigma (k - 1)) ↑n) * Complex.exp (2 * ↑Real.pi * Complex.I * ↑z * ↑↑n)
-
E₂_eq[complete]
Set
E_2(z):= 1-24\sum_{n=1}^\infty \sigma_1(n)\,e^{2\pi i n z}.
Lean code for Definition7.17●1 theorem
Associated Lean declarations
-
E₂_eq[complete]
-
E₂_eq[complete]
-
theoremdefined in SpherePacking/ModularForms/E2.leancomplete
theorem E₂_eq (z : UpperHalfPlane) : E₂ z = 1 - 24 * ∑' (n : ℕ+), ↑↑n * Complex.exp (2 * ↑Real.pi * Complex.I * ↑↑n * ↑z) / (1 - Complex.exp (2 * ↑Real.pi * Complex.I * ↑↑n * ↑z))
theorem E₂_eq (z : UpperHalfPlane) : E₂ z = 1 - 24 * ∑' (n : ℕ+), ↑↑n * Complex.exp (2 * ↑Real.pi * Complex.I * ↑↑n * ↑z) / (1 - Complex.exp (2 * ↑Real.pi * Complex.I * ↑↑n * ↑z))
-
E₂_transform[complete]
This function is not modular; however, it satisfies
z^{-2}\,E_2\left(-\frac{1}{z}\right) = E_2(z) -\frac{6i}{\pi}\, \frac{1}{z}.
Lean code for Lemma7.18●1 theorem
Associated Lean declarations
-
E₂_transform[complete]
-
E₂_transform[complete]
-
theoremdefined in SpherePacking/ModularForms/E2.leancomplete
theorem E₂_transform (z : UpperHalfPlane) : SlashAction.map 2 ModularGroup.S E₂ z = E₂ z + 6 / (↑Real.pi * Complex.I * ↑z)
theorem E₂_transform (z : UpperHalfPlane) : SlashAction.map 2 ModularGroup.S E₂ z = E₂ z + 6 / (↑Real.pi * Complex.I * ↑z)
This is exercise 1.2.8 of Diamond and Shurman (2005).
-
E₂_slash_transform[complete]
We have
(cz + d)^{-2} E_2\left(\frac{az + b}{cx + d}\right) = E_2(z) - \frac{6ic}{\pi (cz + d)}, \quad \begin{pmatrix} a & b \\ c & d\end{pmatrix} \in \mathrm{SL}_{2}(\mathbb{Z}).
Lean code for Lemma7.19●1 theorem
Associated Lean declarations
-
E₂_slash_transform[complete]
-
E₂_slash_transform[complete]
-
theoremdefined in SpherePacking/ModularForms/E2.leancomplete
theorem E₂_slash_transform (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) : SlashAction.map 2 γ E₂ = E₂ - (1 / (2 * riemannZeta 2)) • D₂ γ
theorem E₂_slash_transform (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) : SlashAction.map 2 γ E₂ = E₂ - (1 / (2 * riemannZeta 2)) • D₂ γ
E₂ transforms under SL(2,ℤ) as: E₂ ∣[2] γ = E₂ - α • D₂ γ where α = 1/(2ζ(2)).
Use the fact that \mathrm{SL}_2(\mathbb{Z}) is generated by S and
T. Then eqn:E2-transform-general follows from
eqn:E2-S-transform together with E_2|_T = E_2.
-
ModularForm.eta[complete]
The Dedekind eta function is defined as
\eta(z) = q^{1/24} \prod_{n \ge 1} (1 - q^n)
where q = e^{2\pi i z}.
Lean code for Definition7.20●1 definition
Associated Lean declarations
-
ModularForm.eta[complete]
-
ModularForm.eta[complete]
-
defdefined in Mathlib/NumberTheory/ModularForms/DedekindEta.leancomplete
def ModularForm.eta (z : ℂ) : ℂ
def ModularForm.eta (z : ℂ) : ℂ
The eta function, whose value at z is `q^ 1 / 24 * ∏' 1 - q ^ (n + 1)` for `q = e ^ 2 π i z`.
The Dedekind eta function transforms as
\eta\left(-\frac{1}{z}\right) = \sqrt{-iz} \eta(z).
Consider the logarithmic derivative of \eta, which is equal to
\frac{\pi i}{12} E_2. The result then follows from the transformation of
E_2. See Diamond and Shurman (2005), Proposition 1.2.5.
The discriminant form \Delta(z) is given by
\Delta(z) = e^{2 \pi i z} \prod_{n \ge 1} (1 - e^{2 \pi i n z})^{24}.
Lean code for Definition7.22●1 definition
Associated Lean declarations
-
Δ[complete]
-
Δ[complete]
-
defdefined in SpherePacking/ModularForms/Delta.leancomplete
def Δ (z : UpperHalfPlane) : ℂ
def Δ (z : UpperHalfPlane) : ℂ
-
Delta[complete]
\Delta(z) \in M_{12}(\Gamma_1).
Especially,
\Delta\left(-\frac{1}{z}\right) = z^{12} \Delta(z).
Also, it vanishes at the unique cusp, i.e. it is a cusp form of level
\Gamma_1 and weight 12.
Lean code for Lemma7.23●1 definition
Associated Lean declarations
-
Delta[complete]
-
Delta[complete]
-
defdefined in SpherePacking/ModularForms/Delta.leancomplete
def Delta : CuspForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 1)) 12
def Delta : CuspForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 1)) 12
The fact that it is invariant under translation is clear from the definition,
so we only need to check transformation under S. Now, note that
\eta^{24} = \Delta, and from Lemma 7.21 we
have \eta(-1/z) = \sqrt{-iz} \eta(z), so
\Delta(-1/z) = z^{12} \Delta(z) as required.
-
Delta_E4_eqn[complete]
We have
\Delta(z) = (E_4^3-E_6^2)/1728.
Lean code for Lemma7.24●1 theorem
Associated Lean declarations
-
Delta_E4_eqn[complete]
-
Delta_E4_eqn[complete]
-
theoremdefined in SpherePacking/ModularForms/DimensionFormulas.leancomplete
theorem Delta_E4_eqn : Delta = Delta_E4_E6_aux
theorem Delta_E4_eqn : Delta = Delta_E4_E6_aux
We only need to show its a cuspform, since once we have this, dividing the rhs
by \Delta would give a modular form of weight 0 which is a constant, and
so we can determine the constant easily.
/- source paragraph break -/
To check its a cuspform, we just look at the q-expansions of E_4 and
E_6 and prove directly that the first term vanishes.
-
Delta_imag_axis_pos[complete]
\Delta(it) > 0 for all t > 0.
Lean code for Corollary7.25●1 theorem
Associated Lean declarations
-
Delta_imag_axis_pos[complete]
-
Delta_imag_axis_pos[complete]
-
theoremdefined in SpherePacking/ModularForms/Delta.leancomplete
theorem Delta_imag_axis_pos : ResToImagAxis.Pos Δ
theorem Delta_imag_axis_pos : ResToImagAxis.Pos Δ
By Definition 7.22,
\Delta(it) = e^{-2 \pi t} \prod_{n \ge 1} (1 - e^{-2 \pi n t})^{24} > 0.
\Delta(z) \neq 0 for all z \in \mathfrak{H}.
Lean code for Corollary7.26●1 theorem
Associated Lean declarations
-
Δ_ne_zero[complete]
-
Δ_ne_zero[complete]
-
theoremdefined in SpherePacking/ModularForms/Delta.leancomplete
theorem Δ_ne_zero (z : UpperHalfPlane) : Δ z ≠ 0
theorem Δ_ne_zero (z : UpperHalfPlane) : Δ z ≠ 0
This follows from the product formula.
Let k \in \mathbb{Z} with k < 0.
Then M_k(\Gamma_1) = \{0\} and moreover
\dim M_0(\Gamma(1)) = 1.
Lean code for Theorem7.27●2 theorems
Associated Lean declarations
-
theoremdefined in Mathlib/NumberTheory/ModularForms/LevelOne/Basic.leancomplete
theorem ModularFormClass.levelOne_neg_weight_eq_zero.{u_1} {F : Type u_1} [FunLike F UpperHalfPlane ℂ] {k : ℤ} [ModularFormClass F (Matrix.SpecialLinearGroup.mapGL ℝ).range k] (hk : k < 0) (f : F) : ⇑f = 0
theorem ModularFormClass.levelOne_neg_weight_eq_zero.{u_1} {F : Type u_1} [FunLike F UpperHalfPlane ℂ] {k : ℤ} [ModularFormClass F (Matrix.SpecialLinearGroup.mapGL ℝ).range k] (hk : k < 0) (f : F) : ⇑f = 0
-
theoremdefined in Mathlib/NumberTheory/ModularForms/LevelOne/Basic.leancomplete
theorem ModularForm.levelOne_weight_zero_rank_one : Module.rank ℂ (ModularForm (Matrix.SpecialLinearGroup.mapGL ℝ).range 0) = 1
theorem ModularForm.levelOne_weight_zero_rank_one : Module.rank ℂ (ModularForm (Matrix.SpecialLinearGroup.mapGL ℝ).range 0) = 1
The proof makes use of the maximum modulus principle. Since this is already formalized, we skip the details here, but see the Lean proof for them.
-
ModularForm.dimension_level_one[complete]
Let k \in \Z with k \ge 0 and even. Then
\dim M_k(\Gamma_1) = \lfloor k / 12 \rfloor if
k \equiv 2 \mod 12, and
\dim M_k(\Gamma_1) = \lfloor k / 12 \rfloor + 1 if
k \not\equiv 2 \mod 12.
Lean code for Theorem7.28●1 theorem
Associated Lean declarations
-
ModularForm.dimension_level_one[complete]
-
ModularForm.dimension_level_one[complete]
-
theoremdefined in Mathlib/NumberTheory/ModularForms/LevelOne/DimensionFormula.leancomplete
theorem ModularForm.dimension_level_one (k : ℕ) (hk2 : Even k) : Module.rank ℂ (ModularForm (Matrix.SpecialLinearGroup.mapGL ℝ).range ↑k) = ↑(if k ≡ 2 [MOD 12] then k / 12 else k / 12 + 1)
theorem ModularForm.dimension_level_one (k : ℕ) (hk2 : Even k) : Module.rank ℂ (ModularForm (Matrix.SpecialLinearGroup.mapGL ℝ).range ↑k) = ↑(if k ≡ 2 [MOD 12] then k / 12 else k / 12 + 1)
The dimension formula for `𝒮ℒ` modular forms of even weight.
First we note that for 2 < k we have
\dim(M_k(\Gamma_1)) = 1 + \dim S_k(\Gamma_1).
This follows since we know the E_k are in M_k so by scaling
appropriately, any non-cuspform f \in M_k we would have
f - aE_k \in S_k for some a.
/- source paragraph break -/
Next, note that S_k(\Gamma_1) is isomorphic to M_{k-12}(\Gamma_1),
since if f \in S_k then f/\Delta is now a modular form (using the product
expansion of \Delta and its non-vanishing on \mathfrak{H}) of weight
k-12. Note its important that f is a cuspform so that the quotient by
\Delta is a modular form.
/- source paragraph break -/
So we only need to know the dimensions of M_k(\Gamma_1) for
0 \le k \le 12. For k = 0 we have
\dim M_0(\Gamma_1) = 1 by Theorem 7.27.
For k = 4 we have \dim M_4(\Gamma_1) = 1 since if there was a cuspform
f of weight 4 then f/\Delta would be a modular form of negative
weight, i.e. zero, so f=0.
Similarly for k=6,8,10.
For k=12 we have \dim S_{12}(\Gamma_1) = 1 since the discriminant
form is a cusp form of weight 12 and any other cusp form of weight 12
would be a scalar multiple of \Delta (since their ratio would be a modular
form of weight 0). So we have
\dim M_{12}(\Gamma_1) = 2.
/- source paragraph break -/
Finally we need to check that \dim M_2(\Gamma_1) = 0.
Firstly, there can't be any cuspforms here by the same argument as above.
So we need to check that there are no modular forms of weight 2.
If we did have one, call it f then f^2 would be a non-cuspform of weight
4 and so f^2 = a E_4, where in fact a=a_0(f)^2 (since
(f^2-a_0(f)E_4) is now a cuspform of weight 4 which means its zero).
Similarly, f^3 = a_0(f)^3 E_6.
But now taking powers to make them weight 12 forms we see that
a_0(f)^6(E_4^3 - E_6^2) = 0 = 1728 a_0(f)^6 \Delta,
but a_0(f) \ne 0 (since its assumed to not be a cuspform), this would mean
\Delta =0 which we know can't happen.
-
dim_gen_cong_levels[sorry in proof]
Let \Gamma be a congruence subgroup. Then M_k(\Gamma) is
finite-dimensional.
Lean code for Theorem7.29●1 theorem, incomplete
Associated Lean declarations
-
dim_gen_cong_levels[sorry in proof]
-
dim_gen_cong_levels[sorry in proof]
-
theoremdefined in SpherePacking/ModularForms/DimensionFormulas.leancontains sorry
theorem dim_gen_cong_levels (k : ℤ) (Γ : Subgroup (Matrix.SpecialLinearGroup (Fin 2) ℤ)) (hΓ : Γ.index ≠ 0) : FiniteDimensional ℂ (ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) Γ) k)
theorem dim_gen_cong_levels (k : ℤ) (Γ : Subgroup (Matrix.SpecialLinearGroup (Fin 2) ℤ)) (hΓ : Γ.index ≠ 0) : FiniteDimensional ℂ (ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) Γ) k)
We know that \dim(M_k(\Gamma_1)) is finite-dimensional, hence there is
some r_k such that any element of M_k(\Gamma_1) vanishing at infinity
to degree greater than r_k must be zero.
Now take f \in M_k(\Gamma) vanishing to degree n at infinity, and set
F = \prod_\gamma f\mid_k \gamma, where the product is over a set of
representatives of \Gamma_1 \backslash \Gamma.
Then F is a modular form of weight kd where
d = [\Gamma_1 : \Gamma], and it vanishes at infinity to degree at least
n.
So if n > r_{kd}, then F=0, and hence f=0.
- No associated Lean code or declarations.
We have
\dim M_2(\mathrm{SL}_{2}(\mathbb{Z})) = 0
\dim M_4(\mathrm{SL}_{2}(\mathbb{Z})) = \dim M_6(\mathrm{SL}_{2}(\mathbb{Z})) = \dim M_8(\mathrm{SL}_{2}(\mathbb{Z})) = 1
\dim S_4(\mathrm{SL}_{2}(\mathbb{Z})) = \dim S_6(\mathrm{SL}_{2}(\mathbb{Z})) = \dim S_8(\mathrm{SL}_{2}(\mathbb{Z})) = 0.
We define three different theta functions, the "Thetanullwerte",
\Theta_2,\Theta_3,\Theta_4, by
\Theta_{2}(z) = \theta_{10}(z) = \sum_{n\in\mathbb{Z}}e^{\pi i (n+\frac12)^2 z}
\Theta_{3}(z) = \theta_{00}(z) = \sum_{n\in\mathbb{Z}}e^{\pi i n^2 z}
\Theta_{4}(z) = \theta_{01}(z) = \sum_{n\in\mathbb{Z}}(-1)^n\,e^{\pi i n^2 z}.
Lean code for Definition7.31●3 definitions
-
defdefined in SpherePacking/ModularForms/JacobiTheta/Defs.leancomplete
def Θ₂ (τ : UpperHalfPlane) : ℂ
def Θ₂ (τ : UpperHalfPlane) : ℂ
-
defdefined in SpherePacking/ModularForms/JacobiTheta/Defs.leancomplete
def Θ₃ (τ : UpperHalfPlane) : ℂ
def Θ₃ (τ : UpperHalfPlane) : ℂ
-
defdefined in SpherePacking/ModularForms/JacobiTheta/Defs.leancomplete
def Θ₄ (τ : UpperHalfPlane) : ℂ
def Θ₄ (τ : UpperHalfPlane) : ℂ
Define H_2 = \Theta_2^4, H_3 = \Theta_3^4, H_4 = \Theta_4^4.
Lean code for Definition7.32●3 definitions
-
defdefined in SpherePacking/ModularForms/JacobiTheta/Defs.leancomplete
def H₂ (τ : UpperHalfPlane) : ℂ
def H₂ (τ : UpperHalfPlane) : ℂ
-
defdefined in SpherePacking/ModularForms/JacobiTheta/Defs.leancomplete
def H₃ (τ : UpperHalfPlane) : ℂ
def H₃ (τ : UpperHalfPlane) : ℂ
-
defdefined in SpherePacking/ModularForms/JacobiTheta/Defs.leancomplete
def H₄ (τ : UpperHalfPlane) : ℂ
def H₄ (τ : UpperHalfPlane) : ℂ
-
H₂_T_action[complete] -
H₃_T_action[complete] -
H₄_T_action[complete] -
H₂_S_action[complete] -
H₃_S_action[complete] -
H₄_S_action[complete]
These elements act on the theta functions in the following way.
H_2 | S = -H_4,\quad H_3 | S = -H_3,\quad H_4 | S = -H_2
and
H_2 | T = -H_2,\quad H_3 | T = H_4,\quad H_4 | T = H_3.
Lean code for Lemma7.33●6 theorems
Associated Lean declarations
-
H₂_T_action[complete]
-
H₃_T_action[complete]
-
H₄_T_action[complete]
-
H₂_S_action[complete]
-
H₃_S_action[complete]
-
H₄_S_action[complete]
-
H₂_T_action[complete] -
H₃_T_action[complete] -
H₄_T_action[complete] -
H₂_S_action[complete] -
H₃_S_action[complete] -
H₄_S_action[complete]
-
theoremdefined in SpherePacking/ModularForms/JacobiTheta/Basic.leancomplete
theorem H₂_T_action : SlashAction.map 2 ModularGroup.T H₂ = -H₂
theorem H₂_T_action : SlashAction.map 2 ModularGroup.T H₂ = -H₂
These three transformation laws follow directly from tsum definition.
-
theoremdefined in SpherePacking/ModularForms/JacobiTheta/Basic.leancomplete
theorem H₃_T_action : SlashAction.map 2 ModularGroup.T H₃ = H₄
theorem H₃_T_action : SlashAction.map 2 ModularGroup.T H₃ = H₄
-
theoremdefined in SpherePacking/ModularForms/JacobiTheta/Basic.leancomplete
theorem H₄_T_action : SlashAction.map 2 ModularGroup.T H₄ = H₃
theorem H₄_T_action : SlashAction.map 2 ModularGroup.T H₄ = H₃
-
theoremdefined in SpherePacking/ModularForms/JacobiTheta/Basic.leancomplete
theorem H₂_S_action : SlashAction.map 2 ModularGroup.S H₂ = -H₄
theorem H₂_S_action : SlashAction.map 2 ModularGroup.S H₂ = -H₄
Use jacobiTheta₂_functional_equation
-
theoremdefined in SpherePacking/ModularForms/JacobiTheta/Basic.leancomplete
theorem H₃_S_action : SlashAction.map 2 ModularGroup.S H₃ = -H₃
theorem H₃_S_action : SlashAction.map 2 ModularGroup.S H₃ = -H₃
-
theoremdefined in SpherePacking/ModularForms/JacobiTheta/Basic.leancomplete
theorem H₄_S_action : SlashAction.map 2 ModularGroup.S H₄ = -H₂
theorem H₄_S_action : SlashAction.map 2 ModularGroup.S H₄ = -H₂
The last three identities easily follow from the definition.
For example, eqn:H2-transform-T follows from
\Theta_{2}(z + 1) = \sum_{n\in\Z}e^{\pi i (n+\frac12)^2 (z + 1)}
= \sum_{n \in \Z} e^{\pi i (n + \frac{1}{2})^{2}} e^{\pi i (n + \frac{1}{2})^{2} z}
= \sum_{n \in \Z} e^{\pi i (n^2 + n + \frac{1}{4})} e^{\pi i (n + \frac{1}{2})^{2} z}
= \sum_{n \in \Z} (-1)^{n^2 + n}e^{\pi i / 4} e^{\pi i (n + \frac{1}{2})^{2} z}
= e^{\pi i / 4} \Theta_{2}(z),
and taking fourth powers.
The identities eqn:H2-transform-S and eqn:H4-transform-S are equivalent
under z \leftrightarrow -1/z, so it is enough to show
eqn:H2-transform-S and eqn:H3-transform-S.
These identities follow from the identities of the two-variable Jacobi theta
function, which is defined as
\theta(z, \tau) = \sum_{n \in \mathbb{Z}} e^{2 \pi i n z + \pi i n^2 \tau}.
This function specializes to the theta functions as
\Theta_{2}(\tau) = e^{\pi i \tau / 4} \theta(-\tau / 2, \tau),
\Theta_{3}(\tau) = \theta(0, \tau),
\Theta_{4}(\tau) = \theta(1/2, \tau),
and Poisson summation gives
\theta(z, \tau) = \frac{1}{\sqrt{-i \tau}} e^{-\frac{\pi i z^2}{\tau}} \theta\left(\frac{z}{\tau}, -\frac{1}{\tau}\right).
Applying these specializations yields the identities. For example,
eqn:H4-transform-S follows from
\Theta_{4}(\tau) = \theta\left(\frac{1}{2}, \tau\right) = \frac{1}{\sqrt{-i\tau}} e^{- \frac{\pi i }{4 \tau}} \theta\left(\frac{1}{2 \tau}, -\frac{1}{\tau}\right) = \frac{1}{\sqrt{-i\tau}} \Theta_{2}\left(-\frac{1}{\tau}\right),
and taking fourth powers.
H_{2}, H_{3}, and H_{4} are slash invariant under \Gamma(2),
that is, for all \gamma \in \Gamma(2) and
i \in \{2, 3, 4\}, we have
H_i|\gamma = H_i|\gamma^{-1} = H_i.
Lean code for Lemma7.34●3 definitions
-
defdefined in SpherePacking/ModularForms/JacobiTheta/Basic.leancomplete
def H₂_SIF : SlashInvariantForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 2)) 2
def H₂_SIF : SlashInvariantForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 2)) 2
H₂, H₃, H₄ are modular forms of weight 2 and level Γ(2)
-
defdefined in SpherePacking/ModularForms/JacobiTheta/Basic.leancomplete
def H₃_SIF : SlashInvariantForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 2)) 2
def H₃_SIF : SlashInvariantForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 2)) 2
-
defdefined in SpherePacking/ModularForms/JacobiTheta/Basic.leancomplete
def H₄_SIF : SlashInvariantForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 2)) 2
def H₄_SIF : SlashInvariantForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 2)) 2
By Lemma 7.6 and
Lemma 7.10, it suffices to show that the
H_i are invariant under slash actions with respect to \alpha,
\beta, and -I.
Invariance under -I follows from
Lemma 7.11.
The rest follows from Lemma 7.10,
Lemma 7.33, and the matrix identities
\alpha = T^2 and
\beta = -S\alpha^{-1}S = -ST^{-2}S.
For example, invariance for H_2 follows from
H_2|\alpha = H_2 |T^{2} = -H_2 |T = H_2 and
H_2|\beta = H_2 |(-S\alpha^{-1}S) = H_2 | (S\alpha^{-1}S) =-H_4 |(\alpha^{-1}S) = -H_4 |S = H_2.
-
isBoundedAtImInfty_H_slash[complete]
For all \gamma \in \Gamma_1, the slash-translates
H_{2}|_2 \gamma, H_{3}|_2 \gamma, and H_{4}|_2 \gamma are
holomorphic at i\infty.
Lean code for Lemma7.35●1 theorem
Associated Lean declarations
-
isBoundedAtImInfty_H_slash[complete]
-
isBoundedAtImInfty_H_slash[complete]
-
theoremdefined in SpherePacking/ModularForms/JacobiTheta/Basic.leancomplete
theorem isBoundedAtImInfty_H_slash (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) : UpperHalfPlane.IsBoundedAtImInfty (SlashAction.map 2 γ H₂) ∧ UpperHalfPlane.IsBoundedAtImInfty (SlashAction.map 2 γ H₃) ∧ UpperHalfPlane.IsBoundedAtImInfty (SlashAction.map 2 γ H₄)
theorem isBoundedAtImInfty_H_slash (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) : UpperHalfPlane.IsBoundedAtImInfty (SlashAction.map 2 γ H₂) ∧ UpperHalfPlane.IsBoundedAtImInfty (SlashAction.map 2 γ H₃) ∧ UpperHalfPlane.IsBoundedAtImInfty (SlashAction.map 2 γ H₄)
We want to show that for \gamma \in \Gamma_1,
\|H_2|_2\gamma(z)\| is bounded as z \in \mathbb{H} \to i\infty.
By Lemma 7.33, Lemma 7.6,
and induction on group elements, the set
\{\pm H_2, \pm H_3, \pm H_4\} is closed under the action of
\Gamma_1.
Hence it suffices to prove that H_2,H_3,H_4 are bounded at i\infty.
For z \in \mathbb{H} with \Im(z) \ge A,
\|H_2(z)\|
= \left\|\sum_{n \in \Z} \exp\left(\pi i \left(n + \frac{1}{2}\right)^2 z\right)\right\|^4
\leq \left(\sum_{n \in \Z} \left\|\exp\left(\pi i \left(n + \frac{1}{2}\right)^2 z\right)\right\|\right)^4
= \left(\sum_{n \in \Z} \left\|\exp\left(-\pi \left(n + \frac{1}{2}\right)^2 \Im(z)\right)\right\|\right)^4
\leq \left(\sum_{n \in \Z} \left\|\exp\left(-\pi \left(n + \frac{1}{2}\right)^2 A\right)\right\|\right)^4.
The final term is convergent because it equals
\exp(-\pi A / 4)\theta(iA / 2, iA).
The proofs for H_3 and H_4 are similar.
H_{2}, H_{3}, and H_{4} belong to M_2(\Gamma(2)).
Lean code for Lemma7.36●3 definitions
-
complete
def H₂_MF : ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 2)) 2
def H₂_MF : ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 2)) 2
-
complete
def H₃_MF : ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 2)) 2
def H₃_MF : ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 2)) 2
-
complete
def H₄_MF : ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 2)) 2
def H₄_MF : ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma 2)) 2
From Lemma 7.34 and
Lemma 7.35, it remains ot prove that
H_2, H_3 and H_4 are holomorphic on \mathbb{H}.
fill in proof.
- No associated Lean code or declarations.
H_2 admits a Fourier series of the form
H_2(z) = \sum_{n \ge 1} c_{H_2}(n) e^{\pi i n z}
for some c_{H_2}(n) \in \mathbb{R}_{\ge 0}, with c_{H_2}(1) = 16 and
c_{H_2}(n) = O(n^k) for some k \in \mathbb{N}.
We have
H_2(z) = \Theta_2(z)^4
= \left(\sum_{n \in \Z} e^{\pi i (n + \frac{1}{2})^{2} z}\right)^{4}
= \left(2\sum_{n \ge 0} e^{\pi i (n + \frac{1}{2})^{2} z}\right)^{4}$,
and then
\left(2 e^{\pi i z / 4} + 2 \sum_{n \ge 1} e^{\pi i (n^2 + n + \frac{1}{4}) z}\right)^{4}
= 16 e^{\pi i z}\left(1 + \sum_{n \ge 1} e^{\pi i (n^2 + n)z}\right)^{4}$,
so
H_2(z)=16 e^{\pi i z} + \sum_{n \ge 2} c_{H_2}(n) e^{\pi i n z}
= \sum_{n \ge 1} c_{H_2}(n) e^{\pi i n z}$.
- No associated Lean code or declarations.
H_3 admits a Fourier series of the form
H_3(z) = \sum_{n \ge 0} c_{H_3}(n) e^{\pi i n z}
for some c_{H_3}(n) \in \R_{\ge 0} with c_{H_3}(0) = 1 and
c_{H_3}(n) = O(n^k) for some k \in \N.
Especially, H_3 is not cuspidal.
We have
H_3(z) = \Theta_3(z)^{4}
= \left(\sum_{n \in \Z} e^{\pi i n^2 z}\right)^{4}
= \left(1 + 2 \sum_{n \ge 1} e^{\pi i n^2 z}\right)^{4}
= 1 + O(e^{\pi i z}).
- No associated Lean code or declarations.
H_4 admits a Fourier series of the form
H_4(z) = \sum_{n \ge 0} c_{H_4}(n) e^{\pi i n z}
for some c_{H_4}(n) \in \R with c_{H_4}(0) = 1 and
c_{H_4}(n) = O(n^k) for some k \in \N.
Especially, H_4 is not cuspidal.
-
jacobi_identity[complete]
These three theta functions satisfy the Jacobi identity
H_{2} + H_{4} = H_{3} \Leftrightarrow \Theta_{2}^4 + \Theta_{4}^4 = \Theta_{3}^4.
Lean code for Lemma7.40●1 theorem
Associated Lean declarations
-
jacobi_identity[complete]
-
jacobi_identity[complete]
-
theoremdefined in SpherePacking/ModularForms/JacobiTheta/JacobiIdentity.leancomplete
theorem jacobi_identity : H₂ + H₄ = H₃
theorem jacobi_identity : H₂ + H₄ = H₃
Jacobi identity: `H₂ + H₄ = H₃` (Blueprint Lemma 6.41).
Let f = (H_2 + H_4 - H_3)^{2}.
Obviously, f is a modular form of weight 4 and level \Gamma(2).
Using the transformation rules of H_2,H_3,H_4, we have
f|_{S} = (-H_4 - H_2 + H_3)^{2} = f and
f|_{T} = (-H_2 + H_3 - H_4)^{2} = f,
so f is actually a modular form of level 1.
By considering the limit as z \to i\infty, f is a cusp form, and
hence f = 0 by eqn:dimS4.
- No associated Lean code or declarations.
We have
E_4 = \frac{1}{2}(H_{2}^{2} + H_{3}^{2} + H_{4}^{2}) = H_{2}^{2} + H_{2}H_{4} + H_{4}^{2}
E_6 = \frac{1}{2} (H_{2} + H_{3})(H_{3} + H_{4}) (H_{4} - H_{2}) = \frac{1}{2}(H_2 + 2H_4)(2H_2 + H_4)(H_4 - H_2)
\Delta = \frac{1}{256} (H_{2}H_{3}H_{4})^2.
We can prove these similarly as Lemma Lemma 7.40.
The right-hand sides of eqn:e4theta, eqn:e6theta, and
eqn:disctheta are all modular forms of level \Gamma_1 and of the
desired weights, where eqn:disctheta is a cusp form since H_2 is.
Now the identities follow from the dimension calculations
\dim M_4(\Gamma_1) = \dim M_6(\Gamma_1) = \dim S_{12}(\Gamma_1) = 1
and comparing the first nonzero q-coefficients.
-
H₂_imag_axis_pos[complete] -
H₄_imag_axis_pos[complete]
All three functions t \mapsto H_2(it), H_3(it), H_4(it) are positive for
t > 0.
Lean code for Corollary7.42●2 theorems
Associated Lean declarations
-
H₂_imag_axis_pos[complete]
-
H₄_imag_axis_pos[complete]
-
H₂_imag_axis_pos[complete] -
H₄_imag_axis_pos[complete]
-
theoremdefined in SpherePacking/ModularForms/JacobiTheta/Basic.leancomplete
theorem H₂_imag_axis_pos : ResToImagAxis.Pos H₂
theorem H₂_imag_axis_pos : ResToImagAxis.Pos H₂
`H₂(it) > 0` for all `t > 0`. Blueprint: Lemma 6.43 - H₂ is positive on the imaginary axis. Proof strategy: Each term exp(-π(n+1/2)²t) > 0, so Θ₂(it) > 0, hence H₂ = Θ₂^4 > 0.
-
theoremdefined in SpherePacking/ModularForms/JacobiTheta/Basic.leancomplete
theorem H₄_imag_axis_pos : ResToImagAxis.Pos H₄
theorem H₄_imag_axis_pos : ResToImagAxis.Pos H₄
`H₄(it) > 0` for all `t > 0`. Blueprint: Corollary 6.43 - H₄ is positive on the imaginary axis. Proof strategy: Use the modular S-transformation relating H₄ and H₂. From H₄_S_action: (H₄ ∣[2] S) = -H₂ From ResToImagAxis.SlashActionS: relates values at t and 1/t. This gives H₂(i/t) = t² * H₄(it), so H₄(it) > 0 follows from H₂(i/t) > 0.
By Lemma Lemma 7.40 and the transformation law
eqn:H2-transform-S, it is enough to prove the positivity for
\Theta_2(it), which is clear from its definition:
\Theta_{2}(it) = \sum_{n \in \mathbb{Z}} e^{- \pi (n + \frac{1}{2})^{2} t} > 0.
-
D[complete]
Let F be a quasimodular form.
We define the (normalized) derivative of F as
F' = DF := \frac{1}{2\pi i} \frac{\dd}{\dd z} F.
Lean code for Definition7.43●1 definition
Associated Lean declarations
-
D[complete]
-
D[complete]
-
defdefined in SpherePacking/ModularForms/Derivative.leancomplete
def D (F : UpperHalfPlane → ℂ) : UpperHalfPlane → ℂ
def D (F : UpperHalfPlane → ℂ) : UpperHalfPlane → ℂ
-
D_qexp_tsum_pnat[complete]
We have an equality of operators D = q \frac{\dd}{\dd q}.
In particular, if F(z) = \sum_{n \ge n_0} a_n q^n, then
F'(z) = \sum_{n \ge n_0} n a_n q^n.
Lean code for Lemma7.44●1 theorem
Associated Lean declarations
-
D_qexp_tsum_pnat[complete]
-
D_qexp_tsum_pnat[complete]
-
theoremdefined in SpherePacking/ModularForms/Derivative.leancomplete
theorem D_qexp_tsum_pnat (a : ℕ+ → ℂ) (z : UpperHalfPlane) (hsum : Summable fun n ↦ a n * Complex.exp (2 * ↑Real.pi * Complex.I * ↑↑n * ↑z)) (hsum_deriv : ∀ K ⊆ {w | 0 < w.im}, IsCompact K → ∃ u, Summable u ∧ ∀ (n : ℕ+) (k : ↑K), ‖a n * (2 * ↑Real.pi * Complex.I * ↑↑n) * Complex.exp (2 * ↑Real.pi * Complex.I * ↑↑n * ↑k)‖ ≤ u n) : D (fun w ↦ ∑' (n : ℕ+), a n * Complex.exp (2 * ↑Real.pi * Complex.I * ↑↑n * ↑w)) z = ∑' (n : ℕ+), ↑↑n * a n * Complex.exp (2 * ↑Real.pi * Complex.I * ↑↑n * ↑z)
theorem D_qexp_tsum_pnat (a : ℕ+ → ℂ) (z : UpperHalfPlane) (hsum : Summable fun n ↦ a n * Complex.exp (2 * ↑Real.pi * Complex.I * ↑↑n * ↑z)) (hsum_deriv : ∀ K ⊆ {w | 0 < w.im}, IsCompact K → ∃ u, Summable u ∧ ∀ (n : ℕ+) (k : ↑K), ‖a n * (2 * ↑Real.pi * Complex.I * ↑↑n) * Complex.exp (2 * ↑Real.pi * Complex.I * ↑↑n * ↑k)‖ ≤ u n) : D (fun w ↦ ∑' (n : ℕ+), a n * Complex.exp (2 * ↑Real.pi * Complex.I * ↑↑n * ↑w)) z = ∑' (n : ℕ+), ↑↑n * a n * Complex.exp (2 * ↑Real.pi * Complex.I * ↑↑n * ↑z)
Simplified version of `D_qexp_tsum` for ℕ+-indexed series (starting from n=1). This is the form most commonly used for Eisenstein series q-expansions. **Thin layer implementation:** Extends `a : ℕ+ → ℂ` to `ℕ → ℂ` with `a' 0 = 0`, uses `tsum_pNat` and `summable_pnat_iff_summable_nat` to convert between sums, then applies `D_qexp_tsum`.
This follows directly from the definition Definition 7.43, since
\frac{1}{2 \pi i}\frac{\dd}{\dd z}e^{2\pi i n z} = n e^{2\pi i n z}.
-
serre_D[complete]
For k \in \mathbb{R}, define the weight-k Serre derivative
\partial_k of a modular form F by
\partial_k F := F' - \frac{k}{12} E_2 F.
Lean code for Definition7.45●1 definition
Associated Lean declarations
-
serre_D[complete]
-
serre_D[complete]
-
defdefined in SpherePacking/ModularForms/Derivative.leancomplete
def serre_D (k : ℂ) : (UpperHalfPlane → ℂ) → UpperHalfPlane → ℂ
def serre_D (k : ℂ) : (UpperHalfPlane → ℂ) → UpperHalfPlane → ℂ
Serre derivative of weight $k$. Note that the definition makes sense for any analytic function $F : \mathbb{H} \to \mathbb{C}$.
-
serre_D_slash_equivariant[complete]
Serre derivative \partial_k is equivariant with the slash action of
\mathrm{SL}_{2}(\mathbb{Z}) in the sense that
\partial_{k} (F|_{k}\gamma) = (\partial_{k} F)|_{k+2}\gamma, \quad \forall \gamma \in \mathrm{SL}_{2}(\mathbb{Z}).
Lean code for Theorem7.46●1 theorem
Associated Lean declarations
-
serre_D_slash_equivariant[complete]
-
serre_D_slash_equivariant[complete]
-
theoremdefined in SpherePacking/ModularForms/Derivative.leancomplete
theorem serre_D_slash_equivariant (k : ℤ) (F : UpperHalfPlane → ℂ) (hF : MDiff F) (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) : SlashAction.map (k + 2) γ (serre_D (↑k) F) = serre_D (↑k) (SlashAction.map k γ F)
theorem serre_D_slash_equivariant (k : ℤ) (F : UpperHalfPlane → ℂ) (hF : MDiff F) (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) : SlashAction.map (k + 2) γ (serre_D (↑k) F) = serre_D (↑k) (SlashAction.map k γ F)
Serre derivative is equivariant under the slash action. More precisely, if `F` is invariant under the slash action of weight `k`, then `serre_D k F` is invariant under the slash action of weight `k + 2`.
Let G = \partial_kF = F' - \frac{k}{12}E_2F.
From F \in M_k(\Gamma), we have
(F|_{k}\gamma)(z) := (cz + d)^{-k} F\left(\frac{az + b}{cz + d}\right), \quad \gamma = \begin{pmatrix}a & b \\ c & d\end{pmatrix} \in \Gamma.
By taking the derivative of the above equation, we get
\begin{aligned}
\frac{\dd}{\dd z}(F|_{k} \gamma)(z)
&= -kc (cz + d)^{-k - 1} F\left(\frac{az + b}{cz + d}\right) + (cz + d)^{-k} (cz + d)^{-2} \frac{\dd F}{\dd z}\left(\frac{az + b}{cz + d}\right) \\
&= -kc (cz + d)^{-k - 1} F\left(\frac{az + b}{cz + d}\right) + (cz + d)^{-k - 2} \frac{\dd F}{\dd z}\left(\frac{az + b}{cz + d}\right) \\
&= -kc (cz + d)^{-k - 1} F\left(\frac{az + b}{cz + d}\right) + 2 \pi i (cz + d)^{-k - 2} F'\left(\frac{az + b}{cz + d}\right) \\
\Leftrightarrow (F|_{k} \gamma)'(z)
&= -\frac{kc}{2 \pi i} (cz + d)^{-k - 1} F\left(\frac{az + b}{cz + d}\right) + (cz + d)^{-k - 2} F'\left(\frac{az + b}{cz + d}\right).
\end{aligned}
Combined with eqn:E2-transform-general, we get
\begin{aligned}
((\partial_k F)|_{k+2}\gamma)(z)
&= (cz + d)^{-k-2} \left(F'\left(\frac{az + b}{cz + d}\right) - \frac{k}{12}E_2\left(\frac{az + b}{cz + d}\right)F\left(\frac{az + b}{cz + d}\right)\right) \\
&= (cz + d)^{-k-2} F'\left(\frac{az + b}{cz + d}\right) - \frac{k}{12} \left(E_2(z) - \frac{6ic}{\pi(cz + d)}\right) \cdot (cz + d)^{-k} F\left(\frac{az + b}{cz + d}\right) \\
&= (F|_{k}\gamma)'(z) - \frac{k}{12} E_2(z) (F|_{k}\gamma)(z) \\
&= \partial_{k} (F|_{k}\gamma)(z).
\end{aligned}
-
serre_D_slash_invariant[complete]
Let F be a modular form of weight k and level \Gamma.
Then \partial_{k}F is a modular form of weight k + 2 of the same
level.
Lean code for Theorem7.47●1 theorem
Associated Lean declarations
-
serre_D_slash_invariant[complete]
-
serre_D_slash_invariant[complete]
-
theoremdefined in SpherePacking/ModularForms/Derivative.leancomplete
theorem serre_D_slash_invariant (k : ℤ) (F : UpperHalfPlane → ℂ) (hF : MDiff F) (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) (h : SlashAction.map k γ F = F) : SlashAction.map (k + 2) γ (serre_D (↑k) F) = serre_D (↑k) F
theorem serre_D_slash_invariant (k : ℤ) (F : UpperHalfPlane → ℂ) (hF : MDiff F) (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) (h : SlashAction.map k γ F = F) : SlashAction.map (k + 2) γ (serre_D (↑k) F) = serre_D (↑k) F
Immediate from Theorem Theorem 7.46 since
F|_k\gamma = F for all \gamma \in \Gamma.
-
ramanujan_E₂[complete] -
ramanujan_E₄[complete] -
ramanujan_E₆[complete] -
ramanujan_E₂'[complete] -
ramanujan_E₄'[complete] -
ramanujan_E₆'[complete]
We have
E_2' = \frac{E_2^2 - E_4}{12}
E_4' = \frac{E_2 E_4 - E_6}{3}
E_6' = \frac{E_2 E_6 - E_4^2}{2}.
Lean code for Theorem7.48●6 theorems
Associated Lean declarations
-
ramanujan_E₂[complete]
-
ramanujan_E₄[complete]
-
ramanujan_E₆[complete]
-
ramanujan_E₂'[complete]
-
ramanujan_E₄'[complete]
-
ramanujan_E₆'[complete]
-
ramanujan_E₂[complete] -
ramanujan_E₄[complete] -
ramanujan_E₆[complete] -
ramanujan_E₂'[complete] -
ramanujan_E₄'[complete] -
ramanujan_E₆'[complete]
-
theoremdefined in SpherePacking/ModularForms/RamanujanIdentities.leancomplete
theorem ramanujan_E₂ : D E₂ = 12⁻¹ * (E₂ * E₂ - E₄.toFun)
theorem ramanujan_E₂ : D E₂ = 12⁻¹ * (E₂ * E₂ - E₄.toFun)
-
theoremdefined in SpherePacking/ModularForms/RamanujanIdentities.leancomplete
theorem ramanujan_E₄ : D E₄.toFun = 3⁻¹ * (E₂ * E₄.toFun - E₆.toFun)
theorem ramanujan_E₄ : D E₄.toFun = 3⁻¹ * (E₂ * E₄.toFun - E₆.toFun)
-
theoremdefined in SpherePacking/ModularForms/RamanujanIdentities.leancomplete
theorem ramanujan_E₆ : D E₆.toFun = 2⁻¹ * (E₂ * E₆.toFun - E₄.toFun * E₄.toFun)
theorem ramanujan_E₆ : D E₆.toFun = 2⁻¹ * (E₂ * E₆.toFun - E₄.toFun * E₄.toFun)
-
theoremdefined in SpherePacking/ModularForms/RamanujanIdentities.leancomplete
theorem ramanujan_E₂' : serre_D 1 E₂ = -12⁻¹ * E₄.toFun
theorem ramanujan_E₂' : serre_D 1 E₂ = -12⁻¹ * E₄.toFun
Serre derivative of E₂: `serre_D 1 E₂ = - 12⁻¹ * E₄`. This is the hardest identity because E₂ is not modular. The proof uses: 1. `serre_DE₂_slash_invariant`: serre_D 1 E₂ is weight-4 slash-invariant 2. Bounded at infinity: serre_D 1 E₂ = D E₂ - (1/12) E₂², both terms bounded 3. Dimension formula: weight-4 forms are 1-dimensional, spanned by E₄ 4. Constant term: serre_D 1 E₂(iy) → -1/12 as y → ∞
-
theoremdefined in SpherePacking/ModularForms/RamanujanIdentities.leancomplete
theorem ramanujan_E₄' : serre_D 4 E₄.toFun = -3⁻¹ * E₆.toFun
theorem ramanujan_E₄' : serre_D 4 E₄.toFun = -3⁻¹ * E₆.toFun
Serre derivative of E₄: `serre_D 4 E₄ = - 3⁻¹ * E₆`. Uses the dimension argument: 1. serre_D 4 E₄ is weight-6 slash-invariant (by serre_D_slash_invariant) 2. serre_D 4 E₄ is bounded at infinity (serre_DE₄_isBoundedAtImInfty) 3. Weight-6 modular forms are 1-dimensional (weight_six_one_dimensional) 4. Constant term is -1/3 (from D E₄ → 0, E₂ → 1, E₄ → 1)
-
theoremdefined in SpherePacking/ModularForms/RamanujanIdentities.leancomplete
theorem ramanujan_E₆' : serre_D 6 E₆.toFun = -2⁻¹ * E₄.toFun * E₄.toFun
theorem ramanujan_E₆' : serre_D 6 E₆.toFun = -2⁻¹ * E₄.toFun * E₄.toFun
Serre derivative of E₆: `serre_D 6 E₆ = - 2⁻¹ * E₄²`. Uses the dimension argument: 1. serre_D 6 E₆ is weight-8 slash-invariant (by serre_D_slash_invariant) 2. Weight-8 modular forms are 1-dimensional, spanned by E₄² 3. Constant term is -1/2 (from D E₆ → 0, E₂ → 1, E₆ → 1)
In terms of Serre derivatives, these are equivalent to
\partial_{1}E_2 = -\frac{1}{12} E_4
\partial_{4}E_4 = -\frac{1}{3} E_6
\partial_{6}E_6 = -\frac{1}{2} E_4^2.
By Theorem Theorem 7.47, all the Serre derivatives are,
in fact, modular.
To be precise, the modularity of \partial_4 E_4 and \partial_6 E_6
directly follows from Theorem Theorem 7.47, and that of
\partial_1E_2 follows from eqn:E2-transform-general.
Differentiating and squaring then gives us the following:
E_2'|_{4}\gamma = E_2' - \frac{ic}{\pi(cz + d)} E_2 - \frac{3c^2}{\pi^2 (cz + d)^2}
E_2^2|_{4}\gamma = E_2^2 - \frac{12ic}{\pi(cz + d)} E_2 - \frac{36c^2}{\pi^2 (cz + d)^2}.
Hence, eqn:DE2 -\frac{1}{12} eqn:E2sq-transform is a modular form of
weight 4.
By Corollary 7.30, they should be multiples of E_4, E_6,
E_4^2, and the proportionality constants can be determined by observing the
constant terms of q-expansions.
- No associated Lean code or declarations.
We have
\Delta' = E_2 \Delta.
By Theorem 7.48,
\Delta' = \frac{3 E_4^2 E_4' - 2 E_6 E_6'}{1728}
= \frac{1}{1728} \left(3 E_4^2 \cdot \frac{E_2 E_4 - E_6}{3} - 2 E_6 \cdot \frac{E_2 E_6 - E_4^2}{2}\right)
= \frac{E_2(E_4^3 - E_6^2)}{1728}
= E_2\Delta.
- No associated Lean code or declarations.
We have
H_2' = \frac{1}{6} (H_{2}^{2} + 2 H_{2} H_{4} + E_2 H_2)
H_3' = \frac{1}{6} (H_{2}^{2} - H_{4}^{2} + E_2 H_3)
H_4' = -\frac{1}{6} (2H_{2} H_{4} + H_{4}^{2} - E_2 H_4)
or equivalently,
\partial_{2} H_{2} = \frac{1}{6} (H_{2}^{2} + 2 H_{2} H_{4})
\partial_{2} H_{3} = \frac{1}{6} (H_{2}^{2} - H_{4}^{2})
\partial_{2} H_{4} = -\frac{1}{6} (2H_{2} H_{4} + H_{4}^{2}).
Equivalences are obvious from the definition of the Serre derivative.
Define f_{2}, f_{3}, f_{4} be the differences of the left and right hand
sides of eqn:H2-serre-der, eqn:H3-serre-der, eqn:H4-serre-der.
\begin{aligned}
f_{2} &:= \partial_{2} H_{2} - \frac{1}{6} H_{2}(H_{2} + 2H_{4}) \\
f_{3} &:= \partial_{2} H_{3} - \frac{1}{6} (H_{2}^2 - H_{4}^2) \\
f_{4} &:= \partial_{2} H_{4} + \frac{1}{6} H_{4}(2H_{2} + H_{4}).
\end{aligned}
Then these are a priori modular forms of weight 4 and level \Gamma(2),
and our goal is to prove that they are actually zeros.
By Jacobi's identity eqn:jacobi-identity, we have f_2 + f_4 = f_3.
Also, the transformation rules of H_2,H_3,H_4 give
f_{2}|_{S} = -f_{4}
f_{2}|_{T} = -f_{2}
f_{4}|_{S} = -f_{2}
f_{4}|_{T} = f_{3} = f_{2} + f_{4}.
Now define
g := (2 H_2 + H_4) f_2 + (H_2 + 2 H_4) f_4
h := f_{2}^{2} + f_{2}f_{4} + f_{4}^{2}.
Then one can check that both g and h are invariant under the actions of
S and T, hence they are modular forms of level 1.
Also, by analyzing the limit of g and h as z \to i \infty, one can
see that g and h are cusp forms, hence g = h = 0 by eqn:dimS6 and
eqn:dimS8.
This implies
3 E_4 f_2^{2} = 3 (H_2^2 + H_2 H_4 + H_4^2) f_2^{2}
= ((2 H_2 + H_4)^{2} - (2H_2 + H_4)(H_2 + 2H_4) + (H_2 + 2H_4)^{2}) f_2^{2}
= (2 H_2 + H_4)^{2} (f_2^2 + f_2 f_4 + f_4^2) = 0
and by considering q-series (E_4 has an invertible q-series), we get
f_2 = 0.
-
serre_D_mul[complete]
The Serre derivative satisfies the following product rule: for any quasimodular
forms F and G,
\partial_{w_1 + w_2} (FG) = (\partial_{w_1}F)G + F (\partial_{w_2}G).
Lean code for Theorem7.51●1 theorem
Associated Lean declarations
-
serre_D_mul[complete]
-
serre_D_mul[complete]
-
theoremdefined in SpherePacking/ModularForms/Derivative.leancomplete
theorem serre_D_mul (k₁ k₂ : ℤ) (F G : UpperHalfPlane → ℂ) (hF : MDiff F) (hG : MDiff G) : serre_D (↑k₁ + ↑k₂) (F * G) = serre_D (↑k₁) F * G + F * serre_D (↑k₂) G
theorem serre_D_mul (k₁ k₂ : ℤ) (F G : UpperHalfPlane → ℂ) (hF : MDiff F) (hG : MDiff G) : serre_D (↑k₁ + ↑k₂) (F * G) = serre_D (↑k₁) F * G + F * serre_D (↑k₂) G
It follows from the definition:
\partial_{w_1 + w_2} (FG) = (FG)' - \frac{w_1 + w_2}{12} E_2 (FG)
= F'G + FG' - \frac{w_1 + w_2}{12} E_2(FG)
= \left(F' - \frac{w_1}{12}E_2 F\right)G + F \left(G' - \frac{w_2}{12}E_2 G\right)
= (\partial_{w_1}F)G + F(\partial_{w_2}G).
We also have the following useful theorem for proving positivity of quasimodular forms on the imaginary axis, which is Proposition 3.5 and Corollary 3.6 of Lee (2024).
- No associated Lean code or declarations.
Let F be a holomorphic quasimodular cusp form with real Fourier
coefficients. Assume that there exists k such that
(\partial_{k}F)(it) > 0 for all t > 0.
If the first Fourier coefficient of F is positive, then F(it) > 0 for
all t > 0.
By eqn:logder-disc-E2 we have
\frac{\dd}{\dd t} \left( \frac{F(it)}{\Delta(it)^{\frac{k}{12}}}\right)
= (-2 \pi) \frac{F'(it) \Delta(it)^{\frac{k}{12}} - F(it) \frac{k}{12} E_{2}(it) \Delta(it)^{\frac{k}{12}}}{\Delta(it)^{\frac{k}{6}}}
= (-2 \pi) \frac{(\partial_{k} F)(it)}{\Delta(it)^{\frac{k}{12}}} < 0.
Hence the function
t \mapsto \frac{F(it)}{\Delta(it)^{\frac{k}{12}}} is monotone decreasing.
Because the first nonzero Fourier coefficient of F is positive,
F(it) > 0 for sufficiently large t:
F = \sum_{n \geq n_{0}} a_{n} q^{n} \Rightarrow e^{2 \pi n_{0} t} F(it) = a_{n_{0}} + e^{-2 \pi t}\sum_{n\geq n_{0} + 1} a_{n} e^{-2 \pi (n - n_{0} - 1)t},
and
\lim_{t \to \infty} e^{2 \pi n_{0}t} F(it) = a_{n_0} > 0.
The result follows.