All proofs
Project-declaredLean 4.31.0 · mathlib@fabf563a7c95

D slash

D_slash

Plain-language statement

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

Exact Lean statement

lemma D_slash (k : ℤ) (F : ℍ → ℂ) (hF : MDiff F) (γ : SL(2, ℤ)) :
    D (F ∣[k] γ) = (D F ∣[k + 2] γ) -
        (fun z : ℍ => (k : ℂ) * (2 * π * I)⁻¹ * (γ 1 0 / denom γ z) * (F ∣[k] γ) z)

Formal artifact

Lean source

Canonical source
Full Lean sourceLean 4
lemma D_slash (k : ) (F : ℍ  ℂ) (hF : MDiff F) (γ : SL(2, )) :    D (F ∣[k] γ) = (D F ∣[k + 2] γ) -        (fun z : ℍ => (k : ℂ) * (2 * π * I)⁻¹ *1 0 / denom γ z) * (F ∣[k] γ) z) := by  -- Strategy (all micro-lemmas proven above):  -- 1. SL_slash_apply: (F ∣[k] γ) z = F(γ•z) * denom(γ,z)^(-k)  -- 2. coe_smul_of_det_pos: (γ•z : ℂ) = num γ z / denom γ z (since det(SL₂) = 1 > 0)  -- 3. Product rule: deriv[f*g] = f*deriv[g] + deriv[f]*g  -- 4. Chain rule: deriv[F ∘ mobius] = deriv[F](mobius z) * deriv_moebius  -- 5. deriv_moebius: d/dz[num/denom] = 1/denom² (uses det = 1)  -- 6. deriv_denom_zpow: d/dz[denom^(-k)] = -k * c * denom^(-k-1)  --  -- Computation (product rule + chain rule):  -- D(F ∣[k] γ) = (2πi)⁻¹ * deriv[F(γ•·) * denom^(-k)]  --   = (2πi)⁻¹ * [F(γ•z)*(-k*c*denom^(-k-1)) + deriv[F](γ•z)*(1/denom²)*denom^(-k)]  --   = (D F ∣[k+2] γ) - k*(2πi)⁻¹*(c/denom)*(F ∣[k] γ)  ext z  unfold D  simp only [Pi.sub_apply]  -- Key facts about denom and determinant (used multiple times below)  have hz_denom_ne : denom γ z  0 := UpperHalfPlane.denom_ne_zero γ z  have hdet_pos : (0 : ) < ((γ : GL (Fin 2) ).det).val := by simp  -- The derivative computation on ℂ using Filter.EventuallyEq.deriv_eq  -- (F ∣[k] γ) ∘ ofComplex agrees with F(num/denom) * denom^(-k) on ℍ  have hcomp : deriv (((F ∣[k] γ)) ∘ ofComplex) z =      deriv (fun w => (F ∘ ofComplex) (num γ w / denom γ w) * (denom γ w) ^ (-k)) z := by    apply Filter.EventuallyEq.deriv_eq    filter_upwards [isOpen_upperHalfPlaneSet.mem_nhds z.im_pos] with w hw    simp only [Function.comp_apply, ofComplex_apply_of_im_pos hw]    rw [ModularForm.SL_slash_apply (f := F) (k := k) γ w, hw]    -- Key: (γ • ⟨w, hw⟩ : ℂ) = num γ w / denom γ w    congr 1    · -- F (γ • ⟨w, hw⟩) = (F ∘ ofComplex) (num γ w / denom γ w)      -- Need: γ • ⟨w, hw⟩ = ofComplex (num γ w / denom γ w) as points in ℍ      -- The smul result as element of ℍ, then coerce to ℂ      let gz : ℍ := γ • w, hw      -- The key: (gz : ℂ) = num/denom (using the lemma for GL coercion)      have hsmul_coe : (gz : ℂ) = num γ w / denom γ w := by        have h := UpperHalfPlane.coe_smul_of_det_pos hdet_pos w, hw        simp only [gz] at h         exact h      -- im(num/denom) > 0 follows from gz ∈ ℍ      have hmob_im : (num γ w / denom γ w).im > 0 := by        rw [ hsmul_coe]; exact gz.im_pos      -- Now F(gz) = F(ofComplex(num/denom)) = (F ∘ ofComplex)(num/denom)      -- gz = γ • ⟨w, hw⟩, so F gz = F (γ • ⟨w, hw⟩)      congr 1      -- Show gz = ofComplex (num/denom) as points in ℍ      apply UpperHalfPlane.ext      rw [ofComplex_apply_of_im_pos hmob_im]      exact hsmul_coe  rw [hcomp]  -- Now apply product rule: deriv[f * g] = f * deriv[g] + deriv[f] * g  -- where f(w) = (F ∘ ofComplex)(num w / denom w) and g(w) = denom(w)^(-k)  --  -- Setup differentiability for product rule  have hdenom_ne :  w : ℂ, w.im > 0  denom γ w  0 := fun w hw =>    UpperHalfPlane.denom_ne_zero γ w, hw  have hdiff_denom_zpow : DifferentiableAt ℂ (fun w => (denom γ w) ^ (-k)) z :=    DifferentiableAt.zpow (differentiableAt_denom γ z) (Or.inl (hdenom_ne z z.im_pos))  -- For the F ∘ (num/denom) term, we need differentiability of the Möbius and F  have hdiff_mobius : DifferentiableAt ℂ (fun w => num γ w / denom γ w) z :=    (differentiableAt_num γ z).div (differentiableAt_denom γ z) (hdenom_ne z z.im_pos)  -- The composition (F ∘ ofComplex) ∘ mobius is differentiable at z  -- because mobius(z) is in ℍ and F is MDifferentiable  have hmobius_in_H : (num γ z / denom γ z).im > 0 := by    rw [ UpperHalfPlane.coe_smul_of_det_pos hdet_pos z]    exact (γ • z).im_pos  have hdiff_F_comp : DifferentiableAt ℂ (F ∘ ofComplex) (num γ z / denom γ z) :=    MDifferentiableAt_DifferentiableAt (hF num γ z / denom γ z, hmobius_in_H)  have hcomp_eq : (fun w => (F ∘ ofComplex) (num γ w / denom γ w)) =      (F ∘ ofComplex) ∘ (fun w => num γ w / denom γ w) := rfl  have hdiff_F_mobius : DifferentiableAt ℂ (fun w => (F ∘ ofComplex) (num γ w / denom γ w)) z := by    rw [hcomp_eq]    exact DifferentiableAt.comp (z : ℂ) hdiff_F_comp hdiff_mobius  -- Apply product rule  -- Note: need to show the functions are equal to use deriv_mul  have hfun_eq : (fun w => (F ∘ ofComplex) (num γ w / denom γ w) * (denom γ w) ^ (-k)) =      ((fun w => (F ∘ ofComplex) (num γ w / denom γ w)) * (fun w => (denom γ w) ^ (-k))) := rfl  rw [hfun_eq]  have hprod := deriv_mul hdiff_F_mobius hdiff_denom_zpow  rw [hprod]  -- Apply chain rule to (F ∘ ofComplex) ∘ mobius  have hchain : deriv (fun w => (F ∘ ofComplex) (num γ w / denom γ w)) z =      deriv (F ∘ ofComplex) (num γ z / denom γ z) * deriv (fun w => num γ w / denom γ w) z := by    rw [hcomp_eq, (hdiff_F_comp.hasDerivAt.comp (z : ℂ) hdiff_mobius.hasDerivAt).deriv]  -- Substitute the micro-lemmas  have hderiv_mob := deriv_moebius γ z  have hderiv_zpow := deriv_denom_zpow γ k z  rw [hchain, hderiv_mob, hderiv_zpow]  -- Now we have:  -- (2πi)⁻¹ * [deriv(F∘ofComplex)(mob z) * (1/denom²) * denom^(-k) +  --            (F∘ofComplex)(mob z) * (-k * c * denom^(-k-1))]  -- = (D F ∣[k+2] γ) z - k * (2πi)⁻¹ * (c/denom) * (F ∣[k] γ) z  --  -- Key observations:  -- - (2πi)⁻¹ * deriv(F∘ofComplex)(mob z) = D F (γ • z)  (by def of D)  -- - denom^(-k) / denom² = denom^(-k-2)  -- - (D F)(γ • z) * denom^(-k-2) = (D F ∣[k+2] γ) z  -- - (F∘ofComplex)(mob z) * denom^(-k) = F(γ • z) * denom^(-k) = (F ∣[k] γ) z  -- - -k * c * denom^(-k-1) * (2πi)⁻¹ = -k * (2πi)⁻¹ * c/denom * denom^(-k)  --  -- Relate mobius to γ • z: ↑(γ • z) = num/denom (explicit coercion from ℍ to ℂ)  have hmob_eq : ↑(γ • z) = num γ z / denom γ z :=    UpperHalfPlane.coe_smul_of_det_pos hdet_pos z  -- Relate (F ∘ ofComplex)(mob z) to F(γ • z)  have hF_mob : (F ∘ ofComplex) (num γ z / denom γ z) = F (γ • z) := by    simp only [Function.comp_apply,  hmob_eq, ofComplex_apply]  -- Final algebraic manipulation  -- Goal: (2πi)⁻¹ * (deriv(F∘ofComplex)(mob z) * (1/denom²) * denom^(-k) +  --                   (F∘ofComplex)(mob z) * (-k * c * denom^(-k-1)))  --      = D F(γ•z) * denom^(-(k+2)) - k * (2πi)⁻¹ * (c/denom) * F(γ•z) * denom^(-k)  -- This follows from the above lemmas by algebraic manipulation  --  -- First expand the slash action on the RHS and normalize denom coercions  simp only [ModularForm.SL_slash_apply, hF_mob, hmob_eq]  -- Now both sides should have normalized denom (num/denom arguments and ℂ coercions)  -- Key identities for zpow:  -- (1/denom²) * denom^(-k) = denom^(-2) * denom^(-k) = denom^(-k-2) = denom^(-(k+2))  -- -k * c * denom^(-k-1) = -k * (c/denom) * denom^(-k)  --  -- Use zpow identities  have hpow_combine : 1 / (denom γ z) ^ 2 * (denom γ z) ^ (-k) = (denom γ z) ^ (-(k + 2)) := by    rw [one_div,  zpow_natCast (denom γ z) 2,  zpow_neg,  zpow_add₀ hz_denom_ne]    congr 1    ring  have hpow_m1 : (denom γ z) ^ (-k - 1) = (denom γ z) ^ (-1 : ) * (denom γ z) ^ (-k) := by    rw [ zpow_add₀ hz_denom_ne]    congr 1    ring  -- Rewrite powers on LHS  conv_lhs =>    rw [mul_assoc (deriv (F ∘ ofComplex) (num γ z / denom γ z)) (1 / denom γ z ^ 2) _]    rw [hpow_combine, hpow_m1]  -- Now the goal should be cleaner - distribute and simplify  simp only [zpow_neg_one]  ring
Project
Sphere Packing in Dimension 8
License
Apache-2.0
Commit
acfc6204e65a
Source
SpherePacking/ModularForms/Derivative.lean:532-667

Reuse this declaration

Bring the exact result into your workflow

The import identifies the source module. Your project still needs the pinned package dependency shown on this page.

What this badge means

This completion status comes from the project or community source. It has not yet been represented here as an independent rebuild and axiom audit.

Continue in this project

Related declarations

Project-declaredLean 4.31.0

Anti Der Pos

antiDerPos

Plain-language statement

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

sphere packingFourier analysismodular forms

Source project: Sphere Packing in Dimension 8

Person-level attribution pending.

View proof record
Project-declaredLean 4.31.0

Anti Serre Der Pos

antiSerreDerPos

Plain-language statement

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

sphere packingFourier analysismodular forms

Source project: Sphere Packing in Dimension 8

Person-level attribution pending.

View proof record