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

Complex.Gamma.norm_Gamma_le_two_mul_norm_Gamma_add_one

PrimeNumberTheoremAnd.Mathlib.Analysis.SpecialFunctions.Gamma.StripBounds · PrimeNumberTheoremAnd/Mathlib/Analysis/SpecialFunctions/Gamma/StripBounds.lean:188 to 208

Source documentation

From Γ(z + 1) = z Γ(z) and 1/2 ≤ ‖z‖, bound ‖Γ(z)‖ by 2 * ‖Γ(z + 1)‖.

Exact Lean statement

lemma norm_Gamma_le_two_mul_norm_Gamma_add_one {z : ℂ} (hz : z ≠ 0) (hz_lb : (1 / 2 : ℝ) ≤ ‖z‖) :
    ‖Gamma z‖ ≤ 2 * ‖Gamma (z + 1)‖

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma norm_Gamma_le_two_mul_norm_Gamma_add_one {z : ℂ} (hz : z  0) (hz_lb : (1 / 2 : )  ‖z‖) :Gamma z‖  2 *Gamma (z + 1)‖ := by  have hfunc := Gamma_add_one z hz  have hnorm_mul : ‖Gamma (z + 1)‖ = ‖z‖ *Gamma z‖ := by    calcGamma (z + 1)‖ = ‖z * Gamma z‖ := by simp [hfunc]      _ = ‖z‖ *Gamma z‖ := by simp  have hz_pos : 0 < ‖z‖ := lt_of_lt_of_le (by norm_num) hz_lb  have hz_ne : ‖z‖  0 := ne_of_gt hz_pos  have h_inv : 1 / ‖z‖  (2 : ) := by    have hhalf_pos : (0 : ) < (1 / 2 : ) := by norm_num    simpa using one_div_le_one_div_of_le hhalf_pos hz_lb  have : ‖Gamma z‖ =Gamma (z + 1)‖ / ‖z‖ := by    calcGamma z‖ = (‖z‖ *Gamma z‖) / ‖z‖ := by field_simp [hz_ne]      _ =Gamma (z + 1)‖ / ‖z‖ := by simp [hnorm_mul]  rw [this, div_eq_mul_inv]  have :      (‖Gamma (z + 1)‖ : ) * (1 / ‖z‖) Gamma (z + 1)‖ * 2 :=    mul_le_mul_of_nonneg_left h_inv (norm_nonneg _)  simpa [mul_assoc, mul_left_comm, mul_comm] using this