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

Kadiri.zeroImagDyadicCumulativeCountByNSource_of_positive_bridge

PrimeNumberTheoremAnd.IEANTN.KadiriZeroCounting · PrimeNumberTheoremAnd/IEANTN/KadiriZeroCounting.lean:1095 to 1138

Source documentation

The remaining N(T) count source splits into two counting inputs once the finite-strip multiplicity comparison is proved: absolute-height reduction to positive-height zeros, and comparison of N' 0 T to the project N(T).

Exact Lean statement

theorem zeroImagDyadicCumulativeCountByNSource_of_positive_bridge
    (habs : zeroImagDyadicAbsToPositiveCountSource)
    (hNprime : zeroImagDyadicNPrimeToNSource) :
    zeroImagDyadicCumulativeCountByNSource

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
theorem zeroImagDyadicCumulativeCountByNSource_of_positive_bridge    (habs : zeroImagDyadicAbsToPositiveCountSource)    (hNprime : zeroImagDyadicNPrimeToNSource) :    zeroImagDyadicCumulativeCountByNSource := by  rcases habs with A, hA_nonneg, habs  rcases hNprime with B, hB_nonneg, hNprime  refine A * B, mul_nonneg hA_nonneg hB_nonneg, ?_  intro k  let T :  := (2 : ) ^ (k + 1)  have hpositive :=    positive_height_nontrivial_zero_count_le_NPrime T  have hpositive_nonneg :      0  (Nat.card {rho : NontrivialZeros //        0 < (rho : ℂ).im  (rho : ℂ).im < T} : ) := by    exact_mod_cast Nat.zero_le      (Nat.card {rho : NontrivialZeros // 0 < (rho : ℂ).im  (rho : ℂ).im < T})  have hNprime_nonneg : 0  riemannZeta.N' 0 T :=    hpositive_nonneg.trans hpositive  have hpositive_abs :      (Nat.card {rho : NontrivialZeros //        0 < (rho : ℂ).im  (rho : ℂ).im < T} : )         |riemannZeta.N' 0 T| := by    rw [abs_of_nonneg hNprime_nonneg]    exact hpositive  have habsk := habs k  have hstep1 :      (Nat.card {rho : NontrivialZeros // |(rho : ℂ).im| < T} : )         A * |riemannZeta.N' 0 T| := by    exact habsk.trans (mul_le_mul_of_nonneg_left hpositive_abs hA_nonneg)  have hstep2 :      A * |riemannZeta.N' 0 T|         A * (B * |riemannZeta.N T|) := by    dsimp [T]    exact mul_le_mul_of_nonneg_left (hNprime k) hA_nonneg  calc    (Nat.card {rho : NontrivialZeros //        |(rho : ℂ).im| < (2 : ) ^ (k + 1)} : )         A * |riemannZeta.N' 0 T| := by          dsimp [T] at hstep1          exact hstep1    _  A * (B * |riemannZeta.N T|) := hstep2    _ = A * B * |riemannZeta.N ((2 : ) ^ (k + 1))| := by          dsimp [T]          ring