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

DerivUpperBnd_aux1

PrimeNumberTheoremAnd.ZetaBounds · PrimeNumberTheoremAnd/ZetaBounds.lean:1745 to 1777

Mathematical statement

Exact Lean statement

lemma DerivUpperBnd_aux1 {A C σ t : ℝ} (hA : A ∈ Ioc 0 (1 / 2))
    (σ_ge : 1 - A / Real.log |t| ≤ σ) (t_gt : 3 < |t|) (hC : 2 ≤ C) : let N

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma DerivUpperBnd_aux1 {A C σ t : } (hA : A  Ioc 0 (1 / 2))    (σ_ge : 1 - A / Real.log |t|  σ) (t_gt : 3 < |t|) (hC : 2  C) : let N := ⌊|t|⌋₊;    ‖∑ n  Finset.range (N + 1), -1 / (n : ℂ) ^+ t * I) * (Real.log n)‖       Real.exp A * C * (Real.log |t|) ^ 2 := by  intro N  obtain Npos, N_le_t, _, _, σPos, _ := UpperBnd_aux hA t_gt σ_ge  have logt_gt := logt_gt_one t_gt.le  have logN_pos : 0  Real.log N := Real.log_nonneg (by norm_cast)  have fact0 {n : } (hn : n  N) : n  |t| := by linarith [(by exact_mod_cast hn : (n : )  N)]  have fact1 {n : } (hn : n  N) :    ‖(n : ℂ) ^ (-+ t * I))‖  (n : )⁻¹ * A.exp := ZetaBnd_aux2 hA.1 σPos (fact0 hn) σ_ge  have fact2 {n : } (hn : n  N) : Real.log n  Real.log |t| := by    cases n    · simp only [CharP.cast_eq_zero, Real.log_zero]; linarith    · exact Real.log_le_log (by exact_mod_cast Nat.add_one_pos _) (fact0 hn)  have fact3 (n : ) (hn : n  N) :-1 / (n : ℂ) ^+ t * I) * (Real.log n)‖  (n : )⁻¹ * Real.exp A * (Real.log |t|) := by    convert! mul_le_mul (fact1 hn) (fact2 hn) (Real.log_natCast_nonneg n) (by positivity)    simp only [norm_mul, norm_div, norm_neg, norm_one, one_div, natCast_log,  norm_inv, cpow_neg]    congr; exact norm_complex_log_ofNat n  have := norm_sum_le_of_le (Finset.range (N + 1))    (by simp only [Finset.mem_range, Nat.lt_succ_iff]; exact fact3)  rw [ Finset.sum_mul,  Finset.sum_mul, mul_comm _ A.exp, mul_assoc] at this  rw [mul_assoc]  apply le_trans this <| (mul_le_mul_iff_right₀ A.exp_pos).mpr ?_  rw [pow_two,  mul_assoc, Finset.range_eq_Ico,  Finset.Icc_eq_Ico, harmonic_eq_sum_Icc0]  apply le_trans (mul_le_mul (h₁ := harmonic_le_one_add_log (n := N)) (le_refl (Real.log |t|))    (by linarith) (by linarith))  apply (mul_le_mul_iff_left₀ (by linarith)).mpr  rw [(by ring : C * Real.log |t| = Real.log |t| + (C - 1) * Real.log |t|),       one_mul <| Real.log (N: )]  refine add_le_add logt_gt.le <| mul_le_mul (by linarith) ?_ (by positivity) (by linarith)  exact Real.log_le_log (by positivity) N_le_t