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

CH2.CH2_lemma_4_2b

PrimeNumberTheoremAnd.IEANTN.CH2.CH2_part1 · PrimeNumberTheoremAnd/IEANTN/CH2/CH2_part1.lean:6425 to 6470

Mathematical statement

Exact Lean statement

@[blueprint
  "CH2-lemma-4-2b"
  (title := "CH2 Lemma 4.2(b)")
  (statement := /--
If $|\Im z| \leq \frac{\pi}{2}$, then $|(z \coth z)'| \leq |z|$. -/)
  (proof := /-- See previous. -/)
  (latexEnv := "sublemma")
  (discussion := 1234)]
theorem CH2_lemma_4_2b (z : ℂ) (hz : |z.im| ≤ π / 2) : ‖deriv (fun z:ℂ ↦ z * coth z) z‖ ≤ ‖z‖

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
@[blueprint  "CH2-lemma-4-2b"  (title := "CH2 Lemma 4.2(b)")  (statement := /--If $|\Im z| \leq \frac{\pi}{2}$, then $|(z \coth z)'| \leq |z|$. -/)  (proof := /-- See previous. -/)  (latexEnv := "sublemma")  (discussion := 1234)]theorem CH2_lemma_4_2b (z : ℂ) (hz : |z.im|  π / 2) : ‖deriv (fun z:ℂ  z * coth z) z‖  ‖z‖ := by  set f := fun w : ℂ  deriv (fun z : ℂ  z * coth z) w  rcases eq_or_ne z 0 with rfl | hz_nz  · simp [deriv_z_coth_z_at_zero]  · let g := dslope f 0    have hg_bound : ‖g z‖  1 := by      apply PhragmenLindelof.horizontal_strip (a := -/ 2)) (b := π / 2) (C := 1) (f := g) (z := z) (hza := (abs_le.mp hz).1) (hzb := (abs_le.mp hz).2)      · have h_g_anal : AnalyticOn ℂ g {w | |w.im| < π} :=          analyticOn_dslope_deriv_z_coth_z_zero        constructor        · apply h_g_anal.differentiableOn.mono          intro w hw; simp only [Set.mem_preimage, Set.mem_Ioo, Set.mem_setOf_eq, abs_lt] at hw           constructor <;> linarith [Real.pi_pos]        · rw [Complex.closure_preimage_im, closure_Ioo (by linarith [Real.pi_pos])]          apply h_g_anal.continuousOn.mono          intro w hw; simp only [Set.mem_preimage, Set.mem_Icc, Set.mem_setOf_eq, abs_lt] at hw           constructor <;> linarith [Real.pi_pos]      · rcases deriv_z_coth_z_growth_bound_half_pi with c, hc, B, hO        refine c, hc, B, hO.congr' ?_ (Filter.EventuallyEq.refl _ _)        have h_nz : ᶠ w : ℂ in Filter.comap (abs ∘ re) Filter.atTopFilter.principal (im ⁻¹' Set.Ioo (-/ 2)) (π / 2)), w  0 := by          rw [Filter.eventually_inf_principal]          filter_upwards [Filter.tendsto_comap.eventually (Filter.eventually_ge_atTop 1)] with w hw _          intro h; simp [h] at hw; linarith        filter_upwards [h_nz] with w hw        simp only [f, g, dslope_of_ne f hw, slope, deriv_z_coth_z_at_zero]        simp; ring_nf      · intro w hw        exact norm_dslope_deriv_z_coth_z_le_one_of_abs_im_eq w          (by rw [hw, abs_neg]; exact abs_of_pos (by linarith [Real.pi_pos]))      · intro w hw        exact norm_dslope_deriv_z_coth_z_le_one_of_abs_im_eq w          (by rw [hw]; exact abs_of_pos (by linarith [Real.pi_pos]))    have hg_eq : ‖g z‖ = ‖f z‖ / ‖z‖ := by      unfold g dslope; rw [Function.update_of_ne hz_nz]      unfold slope f      simp only [sub_zero, vsub_eq_sub, smul_eq_mul, deriv_z_coth_z_at_zero]      rw [ div_eq_inv_mul, norm_div]    simpa [f] using (div_le_one (norm_pos_iff.mpr hz_nz)).mp (hg_eq ▸ hg_bound)