Complex.log_norm_weierstrassFactor_ge_log_norm_one_sub_sub
PrimeNumberTheoremAnd.Mathlib.Analysis.Complex.WeierstrassFactor · PrimeNumberTheoremAnd/Mathlib/Analysis/Complex/WeierstrassFactor.lean:261 to 286
Source documentation
For ‖z‖ ≤ 1 / 2, ‖E_m(z) - 1‖ ≤ 4‖z‖^(m+1). -/
theorem weierstrassFactor_sub_one_pow_bound {m : ℕ} {z : ℂ} (hz : ‖z‖ ≤ 1 / 2) :
‖weierstrassFactor m z - 1‖ ≤ 4 * ‖z‖ ^ (m + 1) := by
by_cases hm : m = 0
· subst hm
have hmain : ‖(1 - z) - 1‖ ≤ 4 * ‖z‖ ^ 1 := by
have h : (1 - z) - 1 = -z := by ring
calc
‖(1 - z) - 1‖ = ‖-z‖ := by simp [h]
_ = ‖z‖ := norm_neg z
_ = ‖z‖ ^ 1 := by simp
_ ≤ 4 * ‖z‖ ^ 1 := by nlinarith [pow_nonneg (norm_nonneg z) 1]
simpa [weierstrassFactor] using hmain
· have hz_lt : ‖z‖ < 1 := lt_of_le_of_lt hz (by norm_num)
by_cases hz1 : z = 1
· exfalso; rw [hz1] at hz; norm_num at hz
have h_eq : weierstrassFactor m z = exp (-logTail m z) :=
weierstrassFactor_eq_exp_neg_tail m hz_lt hz1
rw [h_eq]
have h_tail_bound := norm_logTail_le_two_mul_norm_pow hz_lt hz m
have hw_le_one : ‖-logTail m z‖ ≤ 1 := by
simp only [norm_neg]
have : ‖logTail m z‖ ≤ 1 := by
have hm_pos : 0 < m := Nat.pos_of_ne_zero hm
have h2 : 2 ≤ m + 1 := by
exact Nat.succ_le_succ (Nat.succ_le_iff.2 hm_pos)
have hpow : (‖z‖ ^ (m + 1)) ≤ (‖z‖ ^ 2) := by
have hz1' : ‖z‖ ≤ 1 := by nlinarith [hz]
have hz0' : 0 ≤ ‖z‖ := norm_nonneg z
exact pow_le_pow_of_le_one hz0' hz1' h2
have hmul : 2 * ‖z‖ ^ (m + 1) ≤ 2 * ‖z‖ ^ 2 := by gcongr
have hsq : 2 * ‖z‖ ^ 2 ≤ 1 := by
have hz0 : 0 ≤ ‖z‖ := norm_nonneg z
have hz_sq : ‖z‖ ^ 2 ≤ (1 / 2 : ℝ) ^ 2 := pow_le_pow_left₀ hz0 hz 2
nlinarith
exact (h_tail_bound.trans hmul).trans hsq
linarith
have h_exp_sub_one : ‖exp (-logTail m z) - 1‖ ≤ 2 * ‖-logTail m z‖ :=
Complex.norm_exp_sub_one_le hw_le_one
simp only [norm_neg] at h_exp_sub_one
calc
‖exp (-logTail m z) - 1‖ ≤ 2 * ‖logTail m z‖ := h_exp_sub_one
_ ≤ 2 * (2 * ‖z‖ ^ (m + 1)) := by gcongr
_ = 4 * ‖z‖ ^ (m + 1) := by ring
/-!
Lower bounds on Real.log ‖weierstrassFactor m z‖
Auxiliary inequalities for minimum-modulus / Cartan-type arguments in Hadamard factorization.
Exact Lean statement
lemma log_norm_weierstrassFactor_ge_log_norm_one_sub_sub (m : ℕ) (z : ℂ) :
Real.log ‖1 - z‖ - ‖partialLogSum m z‖ ≤ Real.log ‖weierstrassFactor m z‖Complete declaration
Lean source
lemma log_norm_weierstrassFactor_ge_log_norm_one_sub_sub (m : ℕ) (z : ℂ) : Real.log ‖1 - z‖ - ‖partialLogSum m z‖ ≤ Real.log ‖weierstrassFactor m z‖ := by by_cases hz1 : z = (1 : ℂ) · subst hz1 simp [weierstrassFactor] set S : ℂ := partialLogSum m z have hS : weierstrassFactor m z = (1 - z) * Complex.exp S := by simp [weierstrassFactor, S] have hnorm_pos : 0 < ‖(1 : ℂ) - z‖ := norm_pos_iff.mpr (sub_ne_zero.mpr (Ne.symm hz1)) have hlog : Real.log ‖weierstrassFactor m z‖ = Real.log ‖1 - z‖ + S.re := by have hne : ‖(1 : ℂ) - z‖ ≠ 0 := ne_of_gt hnorm_pos calc Real.log ‖weierstrassFactor m z‖ = Real.log (‖(1 : ℂ) - z‖ * ‖Complex.exp S‖) := by simp [hS] _ = Real.log ‖(1 : ℂ) - z‖ + Real.log ‖Complex.exp S‖ := by simpa using (Real.log_mul hne (ne_of_gt (by simp))) _ = Real.log ‖(1 : ℂ) - z‖ + S.re := by simp [Complex.norm_exp, Real.log_exp] _ = Real.log ‖1 - z‖ + S.re := by simp [sub_eq_add_neg, add_comm] have hre : S.re ≥ -‖S‖ := Complex.neg_norm_le_re S have : Real.log ‖weierstrassFactor m z‖ ≥ Real.log ‖1 - z‖ - ‖S‖ := by linarith [hlog, hre] simpa [S] using this