Sphere Packing in R^8

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\}.

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}.

Proof for Lemma 7.1
uses 0
Definition7.2
uses 0
Used by 2
Reverse dependency previews
Preview
Definition 7.3
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXXL∃∀N

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}.

Definition7.4
uses 1
Used by 2
Reverse dependency previews
Preview
Lemma 7.5
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

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.44 definitions
  • defdefined in Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.lean
    complete
    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.lean
    complete
    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, ℤ)`. 
  • def α : (CongruenceSubgroup.Gamma 2)
    def α : (CongruenceSubgroup.Gamma 2)
  • def β : (CongruenceSubgroup.Gamma 2)
    def β : (CongruenceSubgroup.Gamma 2)

We have \Gamma(1) = \langle S, T, -I \rangle.

Lean code for Lemma7.51 theorem
Lemma7.6
uses 1
Used by 2
Reverse dependency previews
Preview
Lemma 7.34
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

We have \Gamma(2) = \langle \alpha, \beta, -I \rangle.

Lean code for Lemma7.61 theorem

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.

Definition7.7
uses 0
Used by 2
Reverse dependency previews
Preview
Lemma 7.8
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

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.71 definition
  • defdefined in Mathlib/Analysis/Complex/UpperHalfPlane/MoebiusAction.lean
    complete
    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 

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.81 theorem
  • theoremdefined in Mathlib/Analysis/Complex/UpperHalfPlane/MoebiusAction.lean
    complete
    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
Proof for Lemma 7.8
uses 0
Definition7.9
Statement uses 2
Statement dependency previews
Preview
Lemma 7.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1markupTeXXL∃∀N

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).

The chain rule implies F|_k\gamma_1\gamma_2=(F|_k\gamma_1)|_k\gamma_2.

Lean code for Lemma7.101 theorem
  • theoremdefined in Mathlib/NumberTheory/ModularForms/SlashActions.lean
    complete
    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)
Proof for Lemma 7.10
uses 0
Lean code for Lemma7.111 theorem
  • 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
Proof for Lemma 7.11
uses 0

Follows from the definition of the slash operator: (F|_{k}(-I))(z) = (-1)^{-k}F((-I)z) = F(z).

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:

  1. for all \gamma \in \Gamma, we have f\mid_k \gamma = f

  2. f is holomorphic on \mathbb{H}

  3. for all \gamma \in \mathrm{SL}_2(\mathbb{Z}), there exist A, B \in \mathbb{R} such that for all z \in \mathbb{H} with A \le \mathrm{Im}(z), we have |(f \mid_k \gamma) (z) |\le B. This defines a complex vector space denoted by M_k(\Gamma).

Lean code for Definition7.121 definition
  • abbrevdefined in SpherePackingBlueprint/Formalization.lean
    complete
    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. 

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.131 definition
  • defdefined in Mathlib/NumberTheory/ModularForms/EisensteinSeries/Basic.lean
    complete
    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`. 
Lemma7.14
Statement uses 2
Statement dependency previews
Preview
Definition 7.12
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 2
Reverse dependency previews
Preview
Lemma 8.2
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

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.141 definition
  • defdefined in Mathlib/NumberTheory/ModularForms/EisensteinSeries/Defs.lean
    complete
    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`. 
Proof for Lemma 7.14
uses 0

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.

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).

Proof for Lemma 7.15
uses 0

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.

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.161 theorem
  • 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)
Proof for Lemma 7.16
uses 0
Lean code for Definition7.171 theorem
  • complete
    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))

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.181 theorem
  • complete
    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)
Proof for Lemma 7.18
uses 0

This is exercise 1.2.8 of Diamond and Shurman (2005).

Lemma7.19
Statement uses 2
Statement dependency previews
Preview
Definition 7.17
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 2
Reverse dependency previews
Preview
Theorem 7.46
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

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.191 theorem
  • complete
    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)). 
Proof for Lemma 7.19
uses 0

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.

Definition7.20

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.201 definition
  • defdefined in Mathlib/NumberTheory/ModularForms/DedekindEta.lean
    complete
    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`. 
Proof for Lemma 7.21
uses 0

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.

Lean code for Definition7.221 definition
Lemma7.23
Statement uses 2
Statement dependency previews
Preview
Lemma 7.21
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 2
Reverse dependency previews
Preview
Lemma 7.41
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

\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.231 definition
  • complete
    def Delta :
      CuspForm
        (Subgroup.map (Matrix.SpecialLinearGroup.mapGL )
          (CongruenceSubgroup.Gamma 1))
        12
    def Delta :
      CuspForm
        (Subgroup.map
          (Matrix.SpecialLinearGroup.mapGL )
          (CongruenceSubgroup.Gamma 1))
        12
Proof for Lemma 7.23

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.

Lean code for Lemma7.241 theorem
Proof for Lemma 7.24
uses 0

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.

Corollary7.25

\Delta(it) > 0 for all t > 0.

Lean code for Corollary7.251 theorem
Proof for Corollary 7.25

By Definition 7.22, \Delta(it) = e^{-2 \pi t} \prod_{n \ge 1} (1 - e^{-2 \pi n t})^{24} > 0.

Corollary7.26
uses 1
Used by 2
Reverse dependency previews
Preview
Lemma 8.14
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

\Delta(z) \neq 0 for all z \in \mathfrak{H}.

Lean code for Corollary7.261 theorem
Proof for Corollary 7.26
uses 0

This follows from the product formula.

Lean code for Theorem7.272 theorems
  • theoremdefined in Mathlib/NumberTheory/ModularForms/LevelOne/Basic.lean
    complete
    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.lean
    complete
    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
Proof for Theorem 7.27
uses 0

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.

Theorem7.28
Statement uses 3
Statement dependency previews
Preview
Definition 7.12
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 2
Reverse dependency previews
Preview
Theorem 7.29
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

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.281 theorem
  • theoremdefined in Mathlib/NumberTheory/ModularForms/LevelOne/DimensionFormula.lean
    complete
    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. 
Proof for Theorem 7.28

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.

Theorem7.29
Statement uses 2
Statement dependency previews
Preview
Definition 7.12
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 0markupTeXL∃∀N

Let \Gamma be a congruence subgroup. Then M_k(\Gamma) is finite-dimensional.

Lean code for Theorem7.291 theorem, incomplete
  • contains sorry
    theorem dim_gen_cong_levels (k : )
      (Γ : Subgroup (Matrix.SpecialLinearGroup (Fin 2) ))
      ( : Γ.index  0) :
      FiniteDimensional 
        (ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ) Γ) k)
    theorem dim_gen_cong_levels (k : )
      (Γ :
        Subgroup
          (Matrix.SpecialLinearGroup (Fin 2)
            ))
      ( : Γ.index  0) :
      FiniteDimensional 
        (ModularForm
          (Subgroup.map
            (Matrix.SpecialLinearGroup.mapGL
              )
            Γ)
          k)
Proof for Theorem 7.29
uses 0

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.

Corollary7.30
Statement uses 2
Statement dependency previews
Preview
Definition 7.12
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 2
Reverse dependency previews
Preview
Lemma 7.40
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXXL∃∀N

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.

Proof for Corollary 7.30
uses 0
Definition7.31
uses 0
Used by 2
Reverse dependency previews
Preview
Definition 7.32
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

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.313 definitions
Definition7.32
uses 1
markupTeXL∃∀N

Define H_2 = \Theta_2^4, H_3 = \Theta_3^4, H_4 = \Theta_4^4.

Lean code for Definition7.323 definitions
Lemma7.33
Statement uses 2
Statement dependency previews
Preview
Definition 7.31
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

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.336 theorems
Proof for Lemma 7.33
uses 0

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.

Lemma7.34
Statement uses 4
Statement dependency previews
Used by 2
Reverse dependency previews
Preview
Lemma 7.35
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

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.343 definitions
  • 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) 
  • 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
  • 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
Proof for Lemma 7.34
Proof uses 4
Proof dependency previews

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.

Lemma7.35
Statement uses 2
Statement dependency previews
Preview
Lemma 7.5
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1markupTeXL∃∀N

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.351 theorem
  • 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₄)
Proof for Lemma 7.35
Proof uses 2
Proof dependency previews
Preview
Lemma 7.6
Loading preview
Proof dependency preview content is loaded from the rendered-fragment cache.

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.

Lemma7.36
Statement uses 2
Statement dependency previews
Preview
Lemma 7.34
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 2
Reverse dependency previews
Preview
Lemma 7.40
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

H_{2}, H_{3}, and H_{4} belong to M_2(\Gamma(2)).

Lean code for Lemma7.363 definitions
  • 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
  • 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
  • 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
Proof for Lemma 7.36
Proof uses 2
Proof dependency previews
Preview
Lemma 7.34
Loading preview
Proof dependency preview content is loaded from the rendered-fragment cache.

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.

Lemma7.37
uses 1used by 0markupTeXXL∃∀N

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}.

Proof for Lemma 7.37
uses 0

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}$.

Lemma7.38
uses 1used by 0markupTeXXL∃∀N

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.

Proof for Lemma 7.38
uses 0

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}).

Lemma7.39
uses 1used by 0markupTeXXL∃∀N

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.

Lemma7.40
Statement uses 2
Statement dependency previews
Preview
Corollary 7.30
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 3
Reverse dependency previews
Preview
Lemma 7.41
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

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.401 theorem
Proof for Lemma 7.40
uses 0

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.

Lemma7.41
Statement uses 3
Statement dependency previews
Preview
Lemma 7.23
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 2
Reverse dependency previews
Preview
Lemma 8.19
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXXL∃∀N

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.

Proof for Lemma 7.41

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.

Corollary7.42
Statement uses 2
Statement dependency previews
Preview
Lemma 7.33
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 2
Reverse dependency previews
Preview
Lemma 9.6
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

All three functions t \mapsto H_2(it), H_3(it), H_4(it) are positive for t > 0.

Lean code for Corollary7.422 theorems
  • 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.
    
  • 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.
    
Proof for Corollary 7.42

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.

Definition7.43
uses 0
Used by 2
Reverse dependency previews
Preview
Lemma 7.44
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

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.431 definition
Lemma7.44
uses 1used by 1markupTeXL∃∀N

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.441 theorem
  • complete
    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`.
    
Proof for Lemma 7.44

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}.

Definition7.45
Statement uses 2
Statement dependency previews
Preview
Definition 7.17
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

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.451 definition
  • 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}$.
    
Theorem7.46
Group: Serre derivative identities and differential inequalities. (9)
Group member previews
Statement uses 3
Statement dependency previews
Preview
Definition 7.17
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1markupTeXL∃∀N

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.461 theorem
  • complete
    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`.
    
Proof for Theorem 7.46
uses 0

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}

Theorem7.47
Group: Serre derivative identities and differential inequalities. (9)
Group member previews
Statement uses 3
Statement dependency previews
Preview
Definition 7.12
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1markupTeXL∃∀N

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.471 theorem
  • complete
    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
Proof for Theorem 7.47

Immediate from Theorem Theorem 7.46 since F|_k\gamma = F for all \gamma \in \Gamma.

Theorem7.48
Group: Serre derivative identities and differential inequalities. (9)
Group member previews
Statement uses 4
Statement dependency previews
Preview
Lemma 7.19
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 5
Reverse dependency previews
markupTeXL∃∀N

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.486 theorems
  • theorem ramanujan_E₂ : D E₂ = 12⁻¹ * (E₂ * E₂ - E₄.toFun)
    theorem ramanujan_E₂ :
      D E₂ = 12⁻¹ * (E₂ * E₂ - E₄.toFun)
  • theorem ramanujan_E₄ : D E₄.toFun = 3⁻¹ * (E₂ * E₄.toFun - E₆.toFun)
    theorem ramanujan_E₄ :
      D E₄.toFun =
        3⁻¹ * (E₂ * E₄.toFun - E₆.toFun)
  • 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)
  • 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 → ∞
    
  • 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)
    
  • 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)
    
Proof for Theorem 7.48
Proof uses 2
Proof dependency previews
Preview
Corollary 7.30
Loading preview
Proof dependency preview content is loaded from the rendered-fragment cache.

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.

Corollary7.49
Group: Serre derivative identities and differential inequalities. (9)
Group member previews
Statement uses 2
Statement dependency previews
Preview
Definition 7.22
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1markupTeXXL∃∀N

We have \Delta' = E_2 \Delta.

Proof for Corollary 7.49

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.

Lemma7.50
Statement uses 3
Statement dependency previews
Preview
Lemma 7.33
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1markupTeXXL∃∀N

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}).

Proof for Lemma 7.50
uses 0

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.

Theorem7.51
Group: Serre derivative identities and differential inequalities. (9)
Group member previews
uses 1
Used by 2
Reverse dependency previews
Preview
Lemma 9.8
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

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.511 theorem
  • complete
    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
Proof for Theorem 7.51
uses 0

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).

Theorem7.52
Group: Serre derivative identities and differential inequalities. (9)
Group member previews
Statement uses 2
Statement dependency previews
Preview
Definition 7.45
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1markupTeXXL∃∀N

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.

Proof for Theorem 7.52
uses 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.