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

Backlund.zetaSurrogate_zeros_in_closedBall₀_count

PrimeNumberTheoremAnd.Backlund.ZeroCountCrude · PrimeNumberTheoremAnd/Backlund/ZeroCountCrude.lean:856 to 889

Source documentation

Zero-mass-in-ball bound for the surrogate. An O(R) form would be false: the true mass in B(0, R) is ~ (R/2π) · log R (Riemann-von Mangoldt), which beats C' · (1 + R) for every fixed C'. The (1 + R)^(3/2) form follows directly from divisorMassClosedBall₀_le_of_growth at ρ = 3/2 plus the trailing-coefficient term (zetaSurrogate 0 = 1/2 ≠ 0, so that term is the constant |log (1/2)|).

Exact Lean statement

lemma zetaSurrogate_zeros_in_closedBall₀_count :
    ∃ C' : ℝ, 0 < C' ∧
      ∀ R : ℝ, 1 ≤ R →
        Complex.Hadamard.divisorMassClosedBall₀ zetaSurrogate R ≤
          C' * (1 + R) ^ (3/2 : ℝ)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma zetaSurrogate_zeros_in_closedBall₀_count :     C' : , 0 < C'        R : , 1  R         Complex.Hadamard.divisorMassClosedBall₀ zetaSurrogate R           C' * (1 + R) ^ (3/2 : ) := by  obtain C, hC0, hC := zetaSurrogate_log_growth  set K :  := |Real.log ‖meromorphicTrailingCoeffAt zetaSurrogate 0‖| with hK  refine (C * 2 ^ (3/2 : ) + K) / Real.log 2, ?_, ?_  · refine div_pos ?_ (Real.log_pos one_lt_two)    have h2 : (0 : ) < 2 ^ (3/2 : ) := Real.rpow_pos_of_pos two_pos _    have hKnn : (0 : )  K := abs_nonneg _    nlinarith [mul_pos hC0 h2]  · intro R hR    have hmass := Complex.Hadamard.divisorMassClosedBall₀_le_of_growth      zetaSurrogate_differentiable hC hR    refine hmass.trans ?_    rw [div_mul_eq_mul_div, div_eq_mul_inv, div_eq_mul_inv]    refine mul_le_mul_of_nonneg_right ?_ (inv_nonneg.mpr (Real.log_nonneg one_le_two))    have habs : |2 * R| = 2 * R := abs_of_nonneg (by linarith)    rw [habs]    have h1R : (0 : )  1 + R := by linarith    have hone : (1 : )  (1 + R) ^ (3/2 : ) := by      calc (1 : ) = (1 : ) ^ (3/2 : ) := (Real.one_rpow _).symm        _  (1 + R) ^ (3/2 : ) :=          Real.rpow_le_rpow zero_le_one (by linarith) (by norm_num)    have hpow : (1 + 2 * R) ^ (3/2 : )  2 ^ (3/2 : ) * (1 + R) ^ (3/2 : ) := by      rw [ Real.mul_rpow (by norm_num) h1R]      exact Real.rpow_le_rpow (by linarith) (by linarith) (by norm_num)    have hKnn : (0 : )  K := abs_nonneg _    calc C * (1 + 2 * R) ^ (3/2 : ) + K         C * (2 ^ (3/2 : ) * (1 + R) ^ (3/2 : )) + K * (1 + R) ^ (3/2 : ) :=          add_le_add (mul_le_mul_of_nonneg_left hpow hC0.le)            (le_mul_of_one_le_right hKnn hone)      _ = (C * 2 ^ (3/2 : ) + K) * (1 + R) ^ (3/2 : ) := by ring