Skip to main content
AlexKontorovich/PrimeNumberTheoremAnd
Source indexedlemma · leanprover/lean4:v4.32.0

Complex.Hadamard.norm_inv_weierstrassFactor_le_exp_far

PrimeNumberTheoremAnd.Mathlib.Analysis.Complex.CartanInverseFactorBound · PrimeNumberTheoremAnd/Mathlib/Analysis/Complex/CartanInverseFactorBound.lean:116 to 166

Mathematical statement

Exact Lean statement

lemma norm_inv_weierstrassFactor_le_exp_far
    {m : ℕ} {τ r : ℝ} {u a : ℂ}
    (hur : ‖u‖ = r) (ha : a ≠ 0)
    (hz : ‖u / a‖ ≤ (1 / 2 : ℝ)) (hτ_le : τ ≤ (m + 1 : ℝ)) :
    ‖(weierstrassFactor m (u / a))⁻¹‖ ≤ Real.exp ((2 : ℝ) * (r / ‖a‖) ^ τ)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma norm_inv_weierstrassFactor_le_exp_far    {m : } {τ r : } {u a : ℂ}    (hur : ‖u‖ = r) (ha : a  0)    (hz : ‖u / a‖  (1 / 2 : )) (hτ_le : τ  (m + 1 : )) :    ‖(weierstrassFactor m (u / a))⁻¹‖  Real.exp ((2 : ) * (r / ‖a‖) ^ τ) := by  by_cases hu : u = 0  · subst hu    have hr0 : r = 0 := by simpa [hur] using (norm_zero : ‖(0 : ℂ)‖ = 0)    subst hr0    have h0 : 0  ((0 : ) / ‖a‖) ^ τ := by      exact Real.rpow_nonneg (by positivity : (0 : )  0 / ‖a‖) τ    have h0' : 0  (2 : ) * ((0 : ) / ‖a‖) ^ τ := mul_nonneg (by norm_num) h0    have hexp : (1 : )  Real.exp ((2 : ) * ((0 : ) / ‖a‖) ^ τ) :=      (Real.one_le_exp_iff).2 h0'    simpa using hexp  have hlogE :=    log_norm_weierstrassFactor_ge_neg_two_pow (m := m) (z := (u / a)) hz  have hneglog : -Real.log ‖weierstrassFactor m (u / a)‖  (2 : ) * (r / ‖a‖) ^ τ := by    have h1 : -Real.log ‖weierstrassFactor m (u / a)‖  (2 : ) * ‖u / a‖ ^ (m + 1) := by      linarith [hlogE]    set x :  := ‖u / a‖    have hx1 : x  1 := le_trans (by simpa [x] using hz) (by norm_num)    have hxpos : 0 < x := by      simpa [x] using (norm_pos_iff.2 (div_ne_zero hu ha))    have hτ_le' : τ  ((m + 1 : ) : ) := by      simpa [Nat.cast_add, Nat.cast_one] using hτ_le    have hpow_rpow : x ^ ((m + 1 : ) : )  x ^ τ :=      Real.rpow_le_rpow_of_exponent_ge hxpos hx1 hτ_le'    have hpow : x ^ (m + 1)  x ^ τ := by      simpa [ Real.rpow_natCast] using hpow_rpow    have h2x : (2 : ) * x ^ (m + 1)  (2 : ) * x ^ τ :=      mul_le_mul_of_nonneg_left hpow (by positivity)    have h2 : (2 : ) * ‖u / a‖ ^ (m + 1)  (2 : ) * (‖u / a‖ : ) ^ τ := by      simpa [x] using h2x    have h3 : (‖u‖ / ‖a‖) ^ τ = (r / ‖a‖) ^ τ := by      simp [hur]    exact (h1.trans h2).trans_eq (by simp [h3])  have hpos : 0 < ‖weierstrassFactor m (u / a)‖ := by    have : weierstrassFactor m (u / a)  0 := by      intro h0      have : u / a = (1 : ℂ) := (weierstrassFactor_eq_zero_iff m (u / a)).1 h0      have : u = a := (div_eq_one_iff_eq ha).1 this      have : (‖u / a‖ : ) = 1 := by simpa [this] using (by simp [ha])      linarith [hz, this]    exact norm_pos_iff.2 this  have hEq :      ‖(weierstrassFactor m (u / a))⁻¹‖ =        Real.exp (-Real.log ‖weierstrassFactor m (u / a)‖) := by    simp [norm_inv, Real.exp_neg, Real.exp_log hpos]  have := Real.exp_le_exp.2 hneglog  simpa [hEq] using this