Documentation

SpherePacking.ModularForms.Derivative

Constant Pi functions (numeric literals) are MDifferentiable.

Inverse of a constant Pi function (e.g. 6⁻¹ : ℍ → ℂ) is MDifferentiable.

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]

    Division of MDifferentiable functions on ℍ is MDifferentiable, when the denominator is everywhere nonzero.

    @[simp]
    @[simp]

    Normalize a numeric literal (n : ℍ → ℂ) to Function.const ℍ n so D_const fires.

    @[simp]

    Normalize (Function.const ℍ c)⁻¹ to Function.const ℍ c⁻¹ so D_const fires.

    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
      @[simp]
      theorem serre_D_apply (k : ) (F : UpperHalfPlane) (z : UpperHalfPlane) :
      serre_D k F z = D F z - k * 12⁻¹ * E₂ z * F z
      theorem serre_D_eq (k : ) (F : UpperHalfPlane) :
      serre_D k F = fun (z : UpperHalfPlane) => D F z - k * 12⁻¹ * E₂ z * F z

      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.

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

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

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

      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.

      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)
      theorem im_deriv_eq_zero_of_im_eq_zero {f : } {t : } (hf : DifferentiableAt f t) (him : ∀ (s : ), (f s).im = 0) :
      (deriv f t).im = 0

      The derivative of a function with zero imaginary part also has zero imaginary part.

      If F is real on the imaginary axis and MDifferentiable, then D F is also real on the imaginary axis.

      The real part of F.resToImagAxis has derivative -2π * ((D F).resToImagAxis t).re at t.

      If F is MDifferentiable and antitone on the imaginary axis, then D F has non-negative real part on the imaginary axis.

      theorem D_pos_from_deriv_neg {F : UpperHalfPlane} (hreal : ResToImagAxis.Real F) (hdiff : MDifferentiable (modelWithCornersSelf ) (modelWithCornersSelf ) F) (hderiv_neg : ∀ (t : ), 0 < tderiv (fun (s : ) => (Function.resToImagAxis F s).re) t < 0) :

      If F is real on the imaginary axis, MDifferentiable, and has strictly negative derivative on the imaginary axis, then D F is positive on the imaginary axis.

      Note: StrictAntiOn is NOT sufficient - a strictly decreasing function can have deriv = 0 at isolated points (e.g., -x³ at x=0). Use this theorem when you can prove the derivative is strictly negative, typically from q-expansion analysis.

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

      Cauchy Estimates for D-derivative #

      Infrastructure for bounding derivatives using Cauchy estimates on disks in the upper half plane.

      If f : ℍ → ℂ is MDifferentiable and a closed disk in lies in the upper half-plane, then f ∘ ofComplex is DiffContOnCl on the corresponding open disk.

      Closed ball centered at z with radius z.im/2 is contained in the upper half plane.

      theorem norm_D_le_of_sphere_bound {f : UpperHalfPlane} {z : UpperHalfPlane} {r M : } (hr : 0 < r) (hDiff : DiffContOnCl (f UpperHalfPlane.ofComplex) (Metric.ball (↑z) r)) (hbdd : wMetric.sphere (↑z) r, (f UpperHalfPlane.ofComplex) w M) :
      D f z M / (2 * Real.pi * r)

      Cauchy estimate for the D-derivative: if f ∘ ofComplex is holomorphic on a disk of radius r around z and bounded by M on the boundary sphere, then ‖D f z‖ ≤ M / (2πr).

      The D-derivative is bounded at infinity for bounded holomorphic functions.

      For y large (y ≥ 2·max(A,0) + 1), we use a ball of radius z.im/2 around z. The ball lies in the upper half plane, f is bounded by M on it, and norm_D_le_of_sphere_bound gives ‖D f z‖ ≤ M/(π·z.im) ≤ M/π.

      The D-derivative of a bounded holomorphic function tends to zero at infinity.

      For z with im(z) = y, a Cauchy estimate on a ball of radius y/2 gives ‖D f z‖ ≤ M / (π · y), which tends to zero as y → ∞.

      The Serre derivative of a bounded holomorphic function is bounded at infinity.

      serre_D k f = D f - (k/12)·E₂·f. Both terms are bounded:

      @[simp]

      A level-1 modular form is invariant under slash action by any element of SL(2,ℤ).

      The Serre derivative of a weight-k level-1 modular form is a weight-(k+2) modular form.

      Equations
      Instances For