@@ -62,25 +62,51 @@ noncomputable def eta (z : ℂ) := 𝕢 24 z * ∏' n, (1 - eta_q n z)
6262/-- Notation for the Dedekind eta function. -/
6363scoped [ModularForm] notation "η" => eta
6464
65+ /-- For `‖q‖ < 1`, the infinite product `∏ (1 - q^(n+1))` is multipliable. -/
66+ lemma multipliable_one_sub_pow {q : ℂ} (hq : ‖q‖ < 1 ) :
67+ Multipliable fun n : ℕ ↦ 1 - q ^ (n + 1 ) := by
68+ apply multipliable_one_add_of_summable (f := fun n ↦ -q ^ (n + 1 ))
69+ simpa using (summable_nat_add_iff 1 ).mpr (summable_geometric_of_lt_one (norm_nonneg _) hq)
70+
71+ /-- The infinite product `∏ (1 - q^(n+1))` converges locally uniformly on the open unit disc,
72+ with limit `q ↦ ∏' n, (1 - q^(n+1))`. -/
73+ lemma multipliableLocallyUniformlyOn_one_sub_pow :
74+ MultipliableLocallyUniformlyOn (fun n q ↦ 1 - q ^ (n + 1 )) (Metric.ball (0 : ℂ) 1 ) := by
75+ use fun q ↦ ∏' n, (1 - q ^ (n + 1 ))
76+ simp_rw [sub_eq_add_neg]
77+ apply hasProdLocallyUniformlyOn_of_forall_compact Metric.isOpen_ball
78+ intro K hK hcK
79+ rcases K.eq_empty_or_nonempty with hN | hN
80+ · simpa [hasProdUniformlyOn_iff_tendstoUniformlyOn, hN] using tendstoUniformlyOn_empty
81+ · obtain ⟨q₀, hq₀, _, HB⟩ := hcK.exists_sSup_image_eq_and_ge hN
82+ (show ContinuousOn (fun q : ℂ ↦ ‖q‖) K by fun_prop)
83+ refine ((summable_nat_add_iff 1 ).mpr (summable_geometric_of_lt_one (norm_nonneg _)
84+ (by simpa [Metric.mem_ball, dist_zero_right] using hK hq₀))).hasProdUniformlyOn_nat_one_add
85+ hcK (.of_forall fun n x hx ↦ ?_) (fun _ ↦ by fun_prop)
86+ simpa using pow_le_pow_left₀ (norm_nonneg _) (HB x hx) (n + 1 )
87+
88+ /-- The infinite product `q ↦ ∏' n, (1 - q^(n+1))` is differentiable on the open unit disc. -/
89+ lemma differentiableOn_tprod_one_sub_pow :
90+ DifferentiableOn ℂ (fun q ↦ ∏' n, (1 - q ^ (n + 1 ))) (Metric.ball (0 : ℂ) 1 ) :=
91+ multipliableLocallyUniformlyOn_one_sub_pow.hasProdLocallyUniformlyOn.differentiableOn
92+ (.of_forall fun _ ↦ by simpa [Finset.prod_fn] using
93+ DifferentiableOn.finsetProd (fun _ _ ↦ by fun_prop)) Metric.isOpen_ball
94+
95+ /-- For any `k`, the function `q ↦ ∏' n, (1 - q^(n+1))^k` is differentiable on the
96+ open unit disc. -/
97+ lemma differentiableOn_tprod_one_sub_pow_pow (k : ℕ) :
98+ DifferentiableOn ℂ (fun q ↦ ∏' n, (1 - q ^ (n + 1 )) ^ k) (Metric.ball (0 : ℂ) 1 ) :=
99+ (differentiableOn_tprod_one_sub_pow.fun_pow k).congr fun _ hq ↦
100+ (multipliable_one_sub_pow (by simpa using hq)).tprod_pow k
101+
65102theorem summable_eta_q (z : ℍ) : Summable fun n ↦ ‖-eta_q n z‖ := by
66- simp [eta_q, eta_q_eq_pow, summable_nat_add_iff 1 , norm_exp_two_pi_I_lt_one z]
103+ simpa [summable_nat_add_iff] using
104+ summable_geometric_of_lt_one (norm_nonneg _) (mod_cast norm_qParam_lt_one 1 z)
67105
68106lemma multipliableLocallyUniformlyOn_eta :
69- MultipliableLocallyUniformlyOn (fun n a ↦ 1 - eta_q n a) ℍₒ := by
70- use fun z ↦ ∏' n, (1 - eta_q n z)
71- simp_rw [sub_eq_add_neg]
72- apply hasProdLocallyUniformlyOn_of_forall_compact isOpen_upperHalfPlaneSet
73- intro K hK hcK
74- by_cases hN : K.Nonempty
75- · have hc : ContinuousOn (fun x ↦ ‖cexp (2 * π * I * x)‖) K := by fun_prop
76- obtain ⟨z, hz, hB, HB⟩ := hcK.exists_sSup_image_eq_and_ge hN hc
77- apply (summable_eta_q ⟨z, hK hz⟩).hasProdUniformlyOn_nat_one_add hcK
78- · filter_upwards with n x hx
79- simpa [eta_q, eta_q_eq_pow] using pow_le_pow_left₀ (by simp [norm_nonneg]) (HB x hx) _
80- · simp_rw [eta_q, Periodic.qParam]
81- fun_prop
82- · rw [hasProdUniformlyOn_iff_tendstoUniformlyOn]
83- simpa [not_nonempty_iff_eq_empty.mp hN] using tendstoUniformlyOn_empty
107+ MultipliableLocallyUniformlyOn (fun n a ↦ 1 - eta_q n a) ℍₒ :=
108+ multipliableLocallyUniformlyOn_one_sub_pow.comp (𝕢 1 )
109+ (fun z hz ↦ by simpa using norm_qParam_lt_one 1 ⟨z, hz⟩) (by fun_prop)
84110
85111lemma eta_tprod_ne_zero {z : ℂ} (hz : z ∈ ℍₒ) : ∏' n, (1 - eta_q n z) ≠ 0 := by
86112 refine tprod_one_add_ne_zero_of_summable (f := fun n ↦ -eta_q n z) ?_ ?_
@@ -118,10 +144,9 @@ lemma tsum_logDeriv_eta_q (z : ℂ) : ∑' n, logDeriv (fun x ↦ 1 - eta_q n x)
118144
119145lemma differentiableAt_eta_tprod {z : ℂ} (hz : z ∈ ℍₒ) :
120146 DifferentiableAt ℂ (fun x ↦ ∏' n, (1 - eta_q n x)) z := by
121- apply (multipliableLocallyUniformlyOn_eta.hasProdLocallyUniformlyOn.differentiableOn ?_
122- isOpen_upperHalfPlaneSet z hz).differentiableAt (isOpen_upperHalfPlaneSet.mem_nhds hz)
123- filter_upwards with b
124- simpa [Finset.prod_fn] using DifferentiableOn.finsetProd (by fun_prop)
147+ have hq : 𝕢 1 z ∈ Metric.ball 0 1 := by simpa using norm_qParam_lt_one 1 ⟨z, hz⟩
148+ exact (differentiableOn_tprod_one_sub_pow.differentiableAt
149+ (Metric.isOpen_ball.mem_nhds hq)).comp z (by fun_prop)
125150
126151theorem differentiableAt_eta_of_mem_upperHalfPlaneSet {z : ℂ} (hz : z ∈ ℍₒ) :
127152 DifferentiableAt ℂ eta z :=
0 commit comments