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

ZetaLowerBound3

PrimeNumberTheoremAnd.ZetaBounds · PrimeNumberTheoremAnd/ZetaBounds.lean:2359 to 2454

Mathematical statement

Exact Lean statement

@[blueprint
  (title := "ZetaLowerBound3")
  (statement := /--
  There exists a $c>0$ such that for all $1 < \sigma <= 2$ and $3 < |t|$,
  $$
  c \frac{(\sigma-1)^{3/4}}{(\log |t|)^{1/4}} \le |\zeta(\sigma + tI)|.
  $$
  -/)
  (proof := /--
  Combine Lemma \ref{ZetaLowerBound2} with upper bounds for
  $|\zeta(\sigma)|$ (from Lemma \ref{ZetaNear1BndExact}) and
  $|\zeta(\sigma+2it)|$ (from Lemma \ref{ZetaUpperBnd}).
  -/)
  (latexEnv := "lemma")]
lemma ZetaLowerBound3 :
    ∃ c > 0, ∀ {σ : ℝ} (_ : σ ∈ Ioc 1 2) (t : ℝ) (_ : 3 < |t|),
    c * (σ - 1) ^ ((3 : ℝ) / 4) / (Real.log |t|) ^ ((1 : ℝ) / 4) ≤ ‖ζ (σ + t * I)‖

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
@[blueprint  (title := "ZetaLowerBound3")  (statement := /--  There exists a $c>0$ such that for all $1 < \sigma <= 2$ and $3 < |t|$,  $$  c \frac{(\sigma-1)^{3/4}}{(\log |t|)^{1/4}} \le |\zeta(\sigma + tI)|.  $$  -/)  (proof := /--  Combine Lemma \ref{ZetaLowerBound2} with upper bounds for  $|\zeta(\sigma)|$ (from Lemma \ref{ZetaNear1BndExact}) and  $|\zeta(\sigma+2it)|$ (from Lemma \ref{ZetaUpperBnd}).  -/)  (latexEnv := "lemma")]lemma ZetaLowerBound3 :     c > 0,  {σ : } (_ : σ  Ioc 1 2) (t : ) (_ : 3 < |t|),    c *- 1) ^ ((3 : ) / 4) / (Real.log |t|) ^ ((1 : ) / 4)  ‖ζ (σ + t * I)‖ := by  obtain A, ha, C, hC, h_upper := ZetaUpperBnd  obtain c_near, hc_near, h_near := ZetaNear1BndExact   use 1 / (c_near ^ ((3 : ) / 4) * (2 * C) ^ ((1 : ) / 4)), by positivity  intro σ hσ t ht  obtain σ_gt, σ_le :=   -- Use ZetaLowerBound2  have lower := ZetaLowerBound2 (t := t) σ_gt  apply le_trans _ lower   -- Now we need to bound the denominator from above  -- This will give us a lower bound on the whole expression   -- Upper bound on ‖ζ σ‖ from ZetaNear1BndExact  have ζ_σ_bound : ‖ζ σ‖  c_near /- 1) := by    exact h_near σ σ_gt, σ_le   have ht_2 : 3 < |2 * t| := by simp only [abs_mul, Nat.abs_ofNat]; linarith   -- Upper bound on ‖ζ (σ + 2*t * I)‖ from ZetaUpperBnd   have σ_in_range : σ  Icc (1 - A / Real.log |2 * t|) 2 := by    constructor    · -- σ ≥ 1 - A / Real.log |2*t|      have : 0 < A / Real.log |2 * t| := by        exact ZetaLowerBound3_aux1 A ha t ht_2      nlinarith    · exact σ_le   have ζ_2t_bound := h_upper σ (2 * t) ht_2 σ_in_range   -- Combine the bounds  have denom_bound : ‖ζ σ‖ ^ ((3 : ) / 4) * ‖ζ (σ + 2 * t * I)‖ ^ ((1 : ) / 4)       (c_near /- 1)) ^ ((3 : ) / 4) * (C * Real.log |2 * t|) ^ ((1 : ) / 4) := by    apply mul_le_mul    · apply Real.rpow_le_rpow (norm_nonneg _) ζ_σ_bound (by norm_num)    · apply ZetaLowerBound3_aux2      convert ζ_2t_bound      norm_cast    · apply Real.rpow_nonneg (norm_nonneg _)    · apply Real.rpow_nonneg (div_nonneg (by linarith) (by linarith))   -- Simplify the bound  have : (c_near /- 1)) ^ ((3 : ) / 4) * (C * Real.log |2 * t|) ^ ((1 : ) / 4) =         c_near ^ ((3 : ) / 4) *- 1) ^ (-(3 : ) / 4) * C ^ ((1 : ) / 4) * (Real.log |2 * t|) ^ ((1 : ) / 4) := by    rw [Real.div_rpow (by linarith) (by linarith), Real.mul_rpow (by linarith) (Real.log_nonneg (by linarith))]    ring_nf    exact ZetaLowerBound3_aux3 _ _ _ σ_gt  rw [this] at denom_bound   -- Take reciprocal (flipping inequality)  have pos_left : 0 < c_near ^ ((3 : ) / 4) *- 1) ^ (-(3 : ) / 4) * C ^ ((1 : ) / 4) * (Real.log |2 * t|) ^ ((1 : ) / 4) := by    apply ZetaLowerBound3_aux4 C hC c_near hc_near t ht σ_gt   have pos_right : 0 < ‖ζ σ‖ ^ ((3 : ) / 4) * ‖ζ (σ + 2 * t * I)‖ ^ ((1 : ) / 4) := by    -- This follows from ZetaLowerBound1 - if either factor were zero, we'd get 0 ≥ 1    apply ZetaLowerBound3_aux5 _ <| ZetaLowerBound1 (t := t) σ_gt    use (div_le_div_of_nonneg_left zero_le_one pos_right denom_bound).trans' ?_  simp_rw [abs_mul, abs_two, neg_div, Real.rpow_neg (sub_pos.2 σ_gt).le] at *  have hlog : 0 < Real.log |t| := Real.log_pos <| ht.trans' <| by norm_num  have : 0 < Real.log |t| ^ (1 / 4 : ) := Real.rpow_pos_of_pos hlog _  have hlog2 : 0 < Real.log (2 * |t|) := Real.log_pos <| ht_2.trans' <| by norm_num  have : 0 < Real.log (2 * |t|) ^ (1 / 4 : ) := Real.rpow_pos_of_pos hlog2 (1 / 4)  field_simp  rw [Real.mul_rpow two_pos.le hC.le]  move_mul [C ^ (1 / 4)]  rw [mul_le_mul_iff_left₀]  swap  · positivity  rw [ Real.mul_rpow two_pos.le hlog.le]  apply Real.rpow_le_rpow hlog2.le ?_ (by norm_num)  rw [ Real.log_rpow (ht.trans' (by norm_num))]  apply Real.log_le_log (ht_2.trans' (by norm_num))  rw [Real.rpow_two, sq]  gcongr  exact ht.trans' (by norm_num) |>.le