Documentation

SpherePacking.ModularForms.Derivative

Definition of (Serre) derivative of modular forms. Prove Ramanujan's formulas on derivatives of Eisenstein series.

noncomputable def D (F : UpperHalfPlane) :
Equations
Instances For

    TODO: Remove this or move this to somewhere more appropriate.

    The derivative operator D preserves MDifferentiability. If F : ℍ → ℂ is MDifferentiable, then D F is also MDifferentiable.

    @[simp]

    Basic properties of derivatives: linearity, Leibniz rule, etc.

    @[simp]
    @[simp]
    @[simp]

    Termwise differentiation of q-series (Lemma 6.45) #

    theorem D_qexp_term (n : ) (a : ) (z : UpperHalfPlane) :
    D (fun (w : UpperHalfPlane) => a * Complex.exp (2 * Real.pi * Complex.I * n * w)) z = n * a * Complex.exp (2 * Real.pi * Complex.I * n * z)

    Lemma 6.45 (Blueprint): The normalized derivative $D$ acts as $q \frac{d}{dq}$ on $q$-series. For a single q-power term: D(a·qⁿ) = n·a·qⁿ where q = exp(2πiz) and n ∈ ℤ.

    The key calculation:

    • d/dz(exp(2πinz)) = 2πin·exp(2πinz)
    • D(exp(2πinz)) = (2πi)⁻¹·(2πin·exp(2πinz)) = n·exp(2πinz)
    theorem D_qexp_tsum (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 : UpperHalfPlane) => ∑' (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)

    Lemma 6.45 (Blueprint): $D$ commutes with tsum for $q$-series. If F(z) = Σ a(n)·qⁿ where q = exp(2πiz), then D F(z) = Σ n·a(n)·qⁿ.

    More precisely, this lemma shows that for a ℕ-indexed q-series with summable coefficients satisfying appropriate derivative bounds, D acts termwise by multiplying coefficients by n.

    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 : UpperHalfPlane) => ∑' (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 nat_pos_tsum2 to convert between sums, then applies D_qexp_tsum.

    noncomputable def serre_D (k : ) :

    Serre derivative of weight $k$. Note that the definition makes sense for any analytic function $F : \mathbb{H} \to \mathbb{C}$.

    Equations
    Instances For

      Basic properties of Serre derivative: linearity, Leibniz rule, etc.

      theorem serre_D_mul (k₁ k₂ : ) (F G : UpperHalfPlane) (hF : MDifferentiable (modelWithCornersSelf ) (modelWithCornersSelf ) F) (hG : MDifferentiable (modelWithCornersSelf ) (modelWithCornersSelf ) G) :
      serre_D (k₁ + k₂) (F * G) = serre_D (↑k₁) F * G + F * serre_D (↑k₂) G

      The Serre derivative preserves MDifferentiability. If F : ℍ → ℂ is MDifferentiable, then serre_D k F is also MDifferentiable.

      Helper lemmas for D_slash #

      These micro-lemmas compute derivatives of the components in the slash action formula.

      theorem deriv_denom (γ : Matrix.SpecialLinearGroup (Fin 2) ) (z : ) :
      deriv (fun (w : ) => UpperHalfPlane.denom (↑γ) w) z = (γ 1 0)

      Derivative of the denominator function: d/dz[cz + d] = c.

      theorem deriv_num (γ : Matrix.SpecialLinearGroup (Fin 2) ) (z : ) :
      deriv (fun (w : ) => UpperHalfPlane.num (↑γ) w) z = (γ 0 0)

      Derivative of the numerator function: d/dz[az + b] = a.

      Differentiability of denom.

      Differentiability of num.

      theorem deriv_moebius (γ : Matrix.SpecialLinearGroup (Fin 2) ) (z : UpperHalfPlane) :
      deriv (fun (w : ) => UpperHalfPlane.num (↑γ) w / UpperHalfPlane.denom (↑γ) w) z = 1 / UpperHalfPlane.denom γ z ^ 2

      Derivative of the Möbius transformation: d/dz[(az+b)/(cz+d)] = 1/(cz+d)². Uses det(γ) = 1: a(cz+d) - c(az+b) = ad - bc = 1.

      theorem deriv_denom_zpow (γ : Matrix.SpecialLinearGroup (Fin 2) ) (k : ) (z : UpperHalfPlane) :
      deriv (fun (w : ) => UpperHalfPlane.denom (↑γ) w ^ (-k)) z = -k * (γ 1 0) * UpperHalfPlane.denom γ z ^ (-k - 1)

      Derivative of denom^(-k): d/dz[(cz+d)^(-k)] = -k * c * (cz+d)^(-k-1).

      theorem D_slash (k : ) (F : UpperHalfPlane) (hF : MDifferentiable (modelWithCornersSelf ) (modelWithCornersSelf ) F) (γ : Matrix.SpecialLinearGroup (Fin 2) ) :
      D (SlashAction.map k γ F) = SlashAction.map (k + 2) γ (D F) - fun (z : UpperHalfPlane) => k * (2 * Real.pi * Complex.I)⁻¹ * ((γ 1 0) / UpperHalfPlane.denom γ z) * SlashAction.map k γ F z

      The derivative anomaly: how D interacts with the slash action. This is the key computation for proving Serre derivative equivariance.

      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.

      Serre derivative of Eisenstein series. Use serre_D_slash_invariant and compare constant terms. Note that the dimensions of the spaces of modular forms are all 1.

      theorem StrictAntiOn.eventuallyPos_Ioi {g : } (hAnti : StrictAntiOn g (Set.Ioi 0)) {t₀ : } (ht₀_pos : 0 < t₀) (hEv : ∀ (t : ), t₀ t0 < g t) (t : ) :
      0 < t0 < g t

      Chain rule for restriction to imaginary axis: d/dt F(it) = -2π * (D F)(it).

      This connects the real derivative along the imaginary axis to the normalized derivative D. The key computation is:

      • The imaginary axis is parametrized by g(t) = I * t
      • By chain rule: d/dt F(it) = (dF/dz)(it) · (d/dt)(it) = F'(it) · I
      • Since D = (2πi)⁻¹ · d/dz, we have F' = 2πi · D F
      • So d/dt F(it) = 2πi · D F(it) · I = -2π · D F(it)

      If $F$ is a modular form where $F(it)$ is positive for sufficiently large $t$ (i.e. constant term is positive) and the derivative is positive, then $F$ is also positive.

      Let $F : \mathbb{H} \to \mathbb{C}$ be a holomorphic function where $F(it)$ is real for all $t > 0$. Assume that Serre derivative $\partial_k F$ is positive on the imaginary axis. If $F(it)$ is positive for sufficiently large $t$, then $F(it)$ is positive for all $t > 0$.