Documentation

StrongPNT.PNT3_RiemannZeta

@[reducible, inline]
abbrev :
Equations
Instances For
    theorem p_s_abs_1 (p : ) (s : ) (hs : 1 < s.re) :
    p ^ (-s) < 1
    theorem zetaEulerprod (s : ) (hs : 1 < s.re) :
    (Multipliable fun (p : ) => (1 - p ^ (-s))⁻¹) riemannZeta s = ∏' (p : ), (1 - p ^ (-s))⁻¹
    theorem abs_of_tprod {P : Type u_1} (w : P) (hw : Multipliable w) :
    ∏' (p : P), w p = ∏' (p : P), w p
    theorem abs_P_prod (s : ) (hs : 1 < s.re) :
    ∏' (p : ), (1 - p ^ (-s))⁻¹ = ∏' (p : ), (1 - p ^ (-s))⁻¹
    theorem abs_zeta_prod (s : ) (hs : 1 < s.re) :
    riemannZeta s = ∏' (p : ), (1 - p ^ (-s))⁻¹
    theorem abs_of_inv (z : ) (hz : z 0) :
    theorem one_minus_p_s_neq_0 (p : ) (s : ) (hs : 1 < s.re) :
    1 - p ^ (-s) 0
    theorem abs_zeta_prod_prime (s : ) (hs : 1 < s.re) :
    riemannZeta s = ∏' (p : ), 1 - p ^ (-s)⁻¹
    theorem Re2s (s : ) :
    (2 * s).re = 2 * s.re
    theorem Re2sge1 (s : ) (hs : 1 < s.re) :
    1 < (2 * s).re
    theorem zeta_ratio_prod (s : ) (hs : 1 < s.re) :
    riemannZeta (2 * s) / riemannZeta s = (∏' (p : ), (1 - p ^ (-(2 * s)))⁻¹) / ∏' (p : ), (1 - p ^ (-s))⁻¹
    theorem tprod_commutes_with_inclusion_infinite {α : Type u_1} (f : αˣ) (h : Multipliable f) :
    (fun (z : ˣ) => z) (tprod f) = ∏' (i : α), (fun (z : ˣ) => z) (f i)
    theorem inclusion_commutes_with_division (a b : ˣ) :
    (fun (z : ˣ) => z) (a / b) = (fun (z : ˣ) => z) a / (fun (z : ˣ) => z) b
    theorem lift_multipliable_of_nonzero {P : Type u_1} (a : P) (ha : Multipliable a) (h_a_nonzero : ∀ (p : P), a p 0) (hA_nonzero' : ∀ (A : ), HasProd a AA 0) :
    Multipliable fun (p : P) => Units.mk0 (a p)
    theorem prod_of_ratios_simplified {P : Type u_1} (a b : P) (ha : Multipliable a) (hb : Multipliable b) (h_a_nonzero : ∀ (p : P), a p 0) (h_b_nonzero : ∀ (p : P), b p 0) (hA_nonzero' : ∀ (A : ), HasProd a AA 0) (hB_nonzero' : ∀ (A : ), HasProd b AA 0) :
    (∏' (p : P), a p) / ∏' (p : P), b p = ∏' (p : P), a p / b p
    theorem prod_of_ratios {P : Type u_1} (a b : P) (ha : Multipliable a) (hb : Multipliable b) (h_b_nonzero : ∀ (p : P), b p 0) (hA_nonzero' : ∀ (A : ), HasProd a AA 0) (hB_nonzero' : ∀ (B : ), HasProd b BB 0) :
    (∏' (p : P), a p) / ∏' (p : P), b p = ∏' (p : P), a p / b p
    theorem simplify_prod_ratio (s : ) (hs : 1 < s.re) :
    (∏' (p : ), (1 - p ^ (-(2 * s)))⁻¹) / ∏' (p : ), (1 - p ^ (-s))⁻¹ = ∏' (p : ), (1 - p ^ (-(2 * s)))⁻¹ / (1 - p ^ (-s))⁻¹
    theorem zeta_ratios (s : ) (hs : 1 < s.re) :
    riemannZeta (2 * s) / riemannZeta s = ∏' (p : ), (1 - p ^ (-(2 * s)))⁻¹ / (1 - p ^ (-s))⁻¹
    theorem diff_of_squares (z : ) :
    1 - z ^ 2 = (1 - z) * (1 + z)
    theorem one_sub_ne_zero_of_abs_lt_one (z : ) (hz : z < 1) :
    1 - z 0
    theorem one_add_ne_zero_of_abs_lt_one (z : ) (hz : z < 1) :
    1 + z 0
    theorem ratio_invs (z : ) (hz : z < 1) :
    (1 - z ^ 2)⁻¹ / (1 - z)⁻¹ = (1 + z)⁻¹
    theorem complex_cpow_neg_two_mul (z w : ) (hz : z 0) :
    z ^ (-(2 * w)) = (z ^ (-w)) ^ 2
    theorem zeta_ratio_identity (s : ) (hs : 1 < s.re) :
    riemannZeta (2 * s) / riemannZeta s = ∏' (p : ), (1 + p ^ (-s))⁻¹
    theorem two_mul_ofReal_div_two (r : ) :
    2 * (r / 2) = r
    theorem zeta_ratio_identity_ofReal_div_two (r : ) (hr : 1 < (r / 2).re) :
    riemannZeta r / riemannZeta ↑(r / 2) = ∏' (p : ), (1 + p ^ (-(r / 2)))⁻¹
    theorem zeta_ratio_at_3_2 :
    riemannZeta 3 / riemannZeta (3 / 2) = ∏' (p : ), (1 + p ^ (-(3 / 2)))⁻¹
    theorem re_neg_eq_neg_re (s : ) :
    (-s).re = -s.re
    theorem abs_cpow_eq_rpow_re_of_pos {x : } (hx : 0 < x) (y : ) :
    x ^ y = x ^ y.re
    theorem abs_p_pow_s (p : ) (s : ) :
    p ^ (-s) = p ^ (-s.re)
    theorem abs_term_bound (p : ) (t : ) :
    1 - p ^ (-(3 / 2 + t * Complex.I)) 1 + p ^ (-(3 / 2))
    theorem inv_inequality {a b : } (ha : 0 < a) (hab : a b) :
    theorem eq_of_one_sub_eq_zero (z : ) (h : 1 - z = 0) :
    z = 1
    theorem condp32 (p : ) (t : ) :
    1 - p ^ (-(3 / 2 + t * Complex.I)) 0
    theorem abs_term_inv_bound (p : ) (t : ) :
    (1 + p ^ (-(3 / 2)))⁻¹ 1 - p ^ (-(3 / 2 + t * Complex.I))⁻¹
    theorem prod_inequality {P : Type u_1} (a b : PNNReal) (ha : Multipliable a) (hb : Multipliable b) (hab : ∀ (p : P), a p b p) :
    ∏' (p : P), a p ∏' (p : P), b p
    theorem multipliable_complex_abs_inv {i : Type u_1} (g : i) (h_mult : Multipliable fun (i : i) => (1 - g i)⁻¹) (h_nonzero : ∀ (i : i), 1 - g i 0) :
    Multipliable fun (i : i) => 1 - g i⁻¹
    theorem multipliable_positive_inv_powers (r : ) (hr : 1 < r) :
    Multipliable fun (p : ) => (1 + p ^ (-r))⁻¹
    theorem hasProd_map_nnreal_coe {i : Type u_1} (f : iNNReal) (a : NNReal) (h : HasProd f a) :
    HasProd (fun (i : i) => (f i)) a
    theorem multipliable_nnreal_coe {i : Type u_1} (f : iNNReal) (hf : Multipliable f) :
    Multipliable fun (i : i) => (f i)
    theorem nnreal_coe_tprod_eq {i : Type u_1} (f : iNNReal) (hf : Multipliable f) :
    ∏' (i : i), (f i) = ∏' (i : i), (f i)
    theorem hasProd_nonneg_of_pos {i : Type u_1} (f : i) (hpos : ∀ (i : i), 0 < f i) (a : ) (ha : HasProd f a) :
    0 a
    theorem tendsto_finprod_coe_iff_tendsto_coe_finprod {i : Type u_1} (f : iNNReal) (a : NNReal) :
    Filter.Tendsto (fun (s : Finset i) => is, (f i)) Filter.atTop (nhds a) Filter.Tendsto ((fun (x : NNReal) => x) fun (s : Finset i) => is, f i) Filter.atTop (nhds a)
    theorem HasProd.of_coe_hasProd {i : Type u_1} (f : iNNReal) (a : NNReal) (h : HasProd (fun (i : i) => (f i)) a) :
    theorem hasProd_nnreal_of_coe {i : Type u_1} (g : iNNReal) (b : NNReal) (h : HasProd (fun (i : i) => (g i)) b) :
    theorem multipliable_real_to_nnreal {i : Type u_1} (f : i) (hpos : ∀ (i : i), 0 < f i) (h_mult : Multipliable f) :
    Multipliable fun (i : i) => f i,
    theorem nnreal_coe_tprod_eq_tprod_coe {i : Type u_1} (f : iNNReal) (hf : Multipliable f) :
    ∏' (i : i), (f i) = (∏' (i : i), f i)
    theorem nnreal_tprod_le_coe {i : Type u_1} (f g : iNNReal) (hf : Multipliable f) (hg : Multipliable g) (h : ∏' (i : i), f i ∏' (i : i), g i) :
    ∏' (i : i), (f i) ∏' (i : i), (g i)
    theorem abs_zeta_inequality (t : ) :
    ∏' (p : ), (1 + p ^ (-(3 / 2)))⁻¹ ∏' (p : ), 1 - p ^ (-(3 / 2 + t * Complex.I))⁻¹
    theorem abs_zeta_ratio_eval :
    riemannZeta 3 / riemannZeta (3 / 2) = ∏' (p : ), (1 + p ^ (-(3 / 2)))⁻¹
    theorem summable_one_div_nat_add_rpow' {x : } (hx : 1 < x) :
    Summable fun (n : ) => 1 / (n + 1) ^ x
    theorem tsum_pos_of_pos_first_term {f : } (hf : Summable f) (h0 : 0 < f 0) (hnonneg : ∀ (n : ), 0 f n) :
    0 < ∑' (n : ), f n
    theorem first_term_pos (x : ) :
    0 < 1 / 1 ^ x
    theorem terms_nonneg (x : ) (n : ) :
    0 1 / (n + 1) ^ x
    theorem term_eq_ofRealC (x : ) (n : ) :
    1 / (n + 1) ^ x = ↑(1 / (n + 1) ^ x)
    theorem zeta_eq_ofReal (x : ) (hx : 1 < x) :
    riemannZeta x = (∑' (n : ), 1 / (n + 1) ^ x)
    theorem term_inv_eq_ofRealC (x : ) (n : ) :
    ((n + 1) ^ x)⁻¹ = ↑(1 / (n + 1) ^ x)
    theorem im_tsum_ofReal (g : ) :
    (∑' (n : ), (g n)).im = 0
    theorem re_tsum_ofReal (g : ) :
    (∑' (n : ), (g n)).re = ∑' (n : ), g n
    theorem zetapos (x : ) (hx : 1 < x) :
    (riemannZeta x).im = 0 0 < (riemannZeta x).re
    theorem zeta_low_332 :
    ∃ (a : ), 0 < a ∀ (t : ), a riemannZeta (3 / 2 + t * Complex.I)
    theorem one_div_nat_cpow_eq_ite_cpow_neg (s : ) (hs : s 0) (n : ) :
    1 / n ^ s = if n = 0 then 0 else n ^ (-s)
    theorem lem_zetaLimit (s : ) (hs : 1 < s.re) :
    riemannZeta s = ∑' (n : ), if n = 0 then 0 else n ^ (-s)

    Lemma 1: Basic zeta function series representation.

    noncomputable def zetaPartialSum (s : ) (N : ) :

    Definition: Partial sum of zeta.

    Equations
    Instances For
      theorem sum_Icc1_eq_sum_range_succ (N : ) (g : ) :
      kFinset.Icc 1 N, g k = nFinset.range N, g (n + 1)
      theorem sum_Icc0_eq_sum_Icc1_of_zero (N : ) (g : ) (h0 : g 0 = 0) :
      kFinset.Icc 0 N, g k = kFinset.Icc 1 N, g k
      theorem sum_Icc0_shifted_eq_sum_range (a : ) (m : ) :
      (∑ kFinset.Icc 0 m, if k = 0 then 0 else a k) = nFinset.range m, a (n + 1)
      theorem sum_Icc0_shifted_floor_eq (a : ) (t : ) :
      (∑ kFinset.Icc 0 t⌋₊, if k = 0 then 0 else a k) = nFinset.range t⌋₊, a (n + 1)
      theorem sum_range_mul_shift_comm (N : ) (a : ) (f : ) :
      (∑ nFinset.range N, f (n + 1) * if n + 1 = 0 then 0 else a (n + 1)) = nFinset.range N, a (n + 1) * f (n + 1)
      theorem sum_range_shifted_coeffs (N : ) (a c : ) (f : ) (hshift : ∀ (n : ), c (n + 1) = a (n + 1)) :
      nFinset.range N, f ↑(n + 1) * c (n + 1) = nFinset.range N, f ↑(n + 1) * a (n + 1)
      theorem sum_range_commute_mul (N : ) (a : ) (f : ) :
      nFinset.range N, f ↑(n + 1) * a (n + 1) = nFinset.range N, a (n + 1) * f ↑(n + 1)
      theorem lem_abelSummation {a : } {f : } (hf : ContDiff 1 f) (N : ) (hN : 1 N) :
      let A := fun (u : ) => nFinset.range u⌋₊, a (n + 1); nFinset.range N, a (n + 1) * f (n + 1) = A N * f N - (u : ) in 1 ..N, A u * deriv f u
      theorem lem_partialSumIsZetaN (s : ) (N : ) :
      let f := fun (u : ) => u ^ (-s); let a := fun (_n : ) => 1; zetaPartialSum s N = nFinset.range N, a n * f (n + 1)

      Lemma: Partial sum equals ∑ a(n) f(n+1) with a(n)=1, f(u)=u^{-s}.

      theorem lem_sumOfAn (u : ) (hu : 1 u) :
      let a := fun (_n : ) => 1; let A := fun (u : ) => nFinset.range u⌋₊, a (n + 1); A u = u⌋₊

      Lemma: Sum of a_n = 1.

      theorem lem_fDeriv (s : ) (u : ) (hu : 0 < u) :
      let f := fun (u : ) => u ^ (-s); deriv f u = -s * u ^ (-s - 1)

      Lemma: Derivative of f(u)=u^{-s}.

      theorem differentiable_integrable_cpow_on_Icc (s : ) (a b : ) (h0 : 0 < a) (hle : a b) :
      (∀ tSet.Icc a b, DifferentiableAt (fun (u : ) => u ^ (-s)) t) MeasureTheory.IntegrableOn (deriv fun (u : ) => u ^ (-s)) (Set.Icc a b) MeasureTheory.volume
      theorem intervalIntegral_congr_of_Ioc_eq (a b : ) (h : a b) (f g : ) (hpt : uSet.Ioc a b, f u = g u) :
      (u : ) in a..b, f u = (u : ) in a..b, g u
      theorem lem_applyAbel (s : ) (N : ) (hN : 1 N) :
      zetaPartialSum s N = N * N ^ (-s) - (u : ) in 1 ..N, u⌋₊ * (-s * u ^ (-s - 1))

      Lemma: Apply Abel with a_n=1, f(u)=u^{-s}.

      theorem lem_floorNisN (N : ) (hN : 1 N) :
      N⌋₊ = N

      Lemma: Nat.floor (N : ℝ) = N for natural N.

      theorem helper_integral_const_mul (a b : ) (c : ) (g : ) :
      (x : ) in a..b, c * g x = c * (x : ) in a..b, g x
      theorem helper_cpow_mul_cpow_neg_eq_cpow_sub (x s : ) (hx : x 0) :
      x * x ^ (-s) = x ^ (1 - s)
      theorem lem_zetaNsimplified1 (s : ) (N : ) (hN : 1 N) :
      zetaPartialSum s N = N ^ (1 - s) + s * (u : ) in 1 ..N, u⌋₊ * u ^ (-s - 1)

      Lemma: Simplified ζ_N formula 1.

      theorem lem_floorUdecomp (u : ) :

      Lemma: Floor decomposition using fractional part.

      Lemma: Fractional part bound.

      theorem helper_continuousOn_cpow (r : ) {a b : } (ha : 0 < a) (hab : a b) :
      ContinuousOn (fun (u : ) => u ^ r) (Set.Icc a b)

      Helper: continuity of u ↦ (u:ℂ)^r on Icc a b when a>0.

      theorem helper_intervalIntegrable_mul_cpow_id (s : ) {a b : } (ha : 1 a) (hab : a b) :
      IntervalIntegrable (fun (u : ) => u * u ^ (-s - 1)) MeasureTheory.volume a b

      Helper: IntervalIntegrable of (u:ℂ)*(u:ℂ)^(-s-1) on [a,b] when a≥1.

      Helper: a.e.-strong measurability for the fractional-part kernel on Icc.

      theorem helper_intervalIntegrable_frac_kernel (s : ) {a b : } (ha : 1 a) (hab : a b) :
      IntervalIntegrable (fun (u : ) => (Int.fract u) * u ^ (-s - 1)) MeasureTheory.volume a b

      Helper: IntervalIntegrable of the fractional-part kernel on [a,b] when a≥1.

      theorem lem_integralSplit (s : ) (N : ) (hN : 1 N) :
      (u : ) in 1 ..N, u⌋₊ * u ^ (-s - 1) = ( (u : ) in 1 ..N, u ^ (-s)) - (u : ) in 1 ..N, (Int.fract u) * u ^ (-s - 1)

      Lemma: Integral split using floor = u - fract.

      theorem lem_zetaNsimplified2 (s : ) (N : ) (hN : 1 N) :
      zetaPartialSum s N = (N ^ (1 - s) + s * (u : ) in 1 ..N, u ^ (-s)) - s * (u : ) in 1 ..N, (Int.fract u) * u ^ (-s - 1)

      Lemma: Simplified ζ_N formula 2.

      theorem lem_evalMainIntegral (s : ) (hs : s 1) (N : ) (hN : 1 N) :
      s * (u : ) in 1 ..N, u ^ (-s) = s / (1 - s) * (N ^ (1 - s) - 1)

      Lemma: Evaluate the main integral.

      theorem lem_zetaNfinal (s : ) (hs : s 1) (N : ) (hN : 1 N) :
      zetaPartialSum s N = N ^ (1 - s) / (1 - s) + 1 + 1 / (s - 1) - s * (u : ) in 1 ..N, (Int.fract u) * u ^ (-s - 1)

      Lemma: Final ζ_N formula.

      theorem complex_tendsto_zero_iff_norm_tendsto_zero {α : Type u_1} {f : α} {l : Filter α} :
      Filter.Tendsto f l (nhds 0) Filter.Tendsto (fun (x : α) => f x) l (nhds 0)
      theorem complex_norm_natCast_cpow (N : ) (w : ) (hN : 0 < N) :
      N ^ w = N ^ w.re
      theorem tendsto_natCast_cpow_zero_of_neg_re (w : ) (hw : w.re < 0) :
      Filter.Tendsto (fun (N : ) => N ^ w) Filter.atTop (nhds 0)
      theorem lem_limitTerm1 (s : ) (hs : 1 < s.re) :
      Filter.Tendsto (fun (N : ) => N ^ (1 - s)) Filter.atTop (nhds 0)
      theorem lem_integrandBound (u : ) (hu : 1 u) (s : ) :
      (Int.fract u) * u ^ (-s - 1) u ^ (-s.re - 1)

      Lemma: Integrand bound.

      theorem lem_integrandBoundeps (ε : ) ( : 0 < ε) (u : ) (hu : 1 u) (s : ) (hs : ε s.re) :
      (Int.fract u) * u ^ (-s - 1) u ^ (-1 - ε)

      Lemma: Integrand bound with ε.

      theorem lem_triangleInequality_add (z₁ z₂ : ) :
      z₁ + z₂ z₁ + z₂

      Lemma: Triangle inequality (scalar and integral versions).

      theorem lem_triangleInequality_integral {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {f : E} {a b : } (hf : IntervalIntegrable f MeasureTheory.volume a b) (h : a b) :
      (u : ) in a..b, f u (u : ) in a..b, f u
      theorem helper_integral_interval_sub_left {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {f : E} {a b c : } (hab : IntervalIntegrable f MeasureTheory.volume a b) (hac : IntervalIntegrable f MeasureTheory.volume a c) :
      ( (x : ) in a..b, f x) - (x : ) in a..c, f x = (x : ) in c..b, f x

      Lemma: Integral convergence of the fractional-part kernel.

      theorem helper_integral_rpow_eval {ε : } ( : 0 < ε) {m n : } (hm : 1 m) (hmn : m n) :
      (u : ) in m..n, u ^ (-1 - ε) = (m ^ (-ε) - n ^ (-ε)) / ε
      theorem helper_integral_rpow_le {ε : } ( : 0 < ε) {m n : } (hm : 1 m) (hmn : m n) :
      (u : ) in m..n, u ^ (-1 - ε) 1 / ε * m ^ (-ε)
      theorem helper_tendsto_nat_rpow_neg (ε : ) ( : 0 < ε) :
      Filter.Tendsto (fun (m : ) => m ^ (-ε)) Filter.atTop (nhds 0)
      theorem helper_exists_limit_of_tail_bound (a : ) (b : ) (hb_nonneg : ∀ (m : ), 0 b m) (hb_tendsto : Filter.Tendsto b Filter.atTop (nhds 0)) (hbound : ∀ᶠ (m : ) (n : ) in Filter.atTop, m na n - a m b m) :
      theorem helper_limit_norm_le_of_uniform_bound {a : } {l : } {B : } (h : Filter.Tendsto a Filter.atTop (nhds l)) (hbound : ∀ (n : ), a n B) :
      theorem helper_one_le_of_mem_Icc {m n u : } (hm : 1 m) (hu : u Set.Icc m n) :
      1 u
      theorem helper_intervalIntegrable_rpow_neg {ε a b : } ( : 0 < ε) (ha : 1 a) (hab : a b) :
      IntervalIntegrable (fun (u : ) => u ^ (-1 - ε)) MeasureTheory.volume a b
      theorem helper_one_le_of_mem_Ioc {m n u : } (hm : 1 m) (hu : u Set.Ioc m n) :
      1 u
      theorem helper_aebound_kernel_Ioc {ε : } ( : 0 < ε) (s : ) (hs : ε s.re) {m n : } (hm : 1 m) (hmn : m n) :
      ∀ᵐ (u : ) MeasureTheory.volume.restrict (Set.Ioc m n), (Int.fract u) * u ^ (-s - 1) u ^ (-1 - ε)
      theorem helper_integrableOn_rpow_neg_Ioc {ε : } ( : 0 < ε) {m n : } (hm : 1 m) (hmn : m n) :
      theorem helper_rpow_neg_nonneg_on {ε a b : } ( : 0 < ε) (ha : 1 a) (hab : a b) (u : ) :
      u Set.Icc a b0 u ^ (-1 - ε)
      theorem helper_norm_integral_le_integral_norm_of_le {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {f : E} {a b : } (h : a b) :
      (u : ) in a..b, f u (u : ) in a..b, f u
      theorem helper_tendsto_const_mul_zero (c : ) {f : } (h : Filter.Tendsto f Filter.atTop (nhds 0)) :
      Filter.Tendsto (fun (n : ) => c * f n) Filter.atTop (nhds 0)
      theorem lem_integralConvergence (ε : ) ( : 0 < ε) (s : ) (hs : ε s.re) :
      ∃ (I : ), Filter.Tendsto (fun (N : ) => (u : ) in 1 ..N, (Int.fract u) * u ^ (-s - 1)) Filter.atTop (nhds I) I 1 / ε

      Lemma: Zeta formula for Re(s) > 1.

      theorem helper_intervalIntegral_tendstoIoi_kernel (s : ) (hs : 1 < s.re) :
      Filter.Tendsto (fun (N : ) => (u : ) in 1 ..N, (Int.fract u) * u ^ (-s - 1)) Filter.atTop (nhds ( (u : ) in Set.Ioi 1, (Int.fract u) * u ^ (-s - 1)))
      theorem helper_zetaNfinal (s : ) (hs : s 1) (N : ) (hN : 1 N) :
      zetaPartialSum s N = N ^ (1 - s) / (1 - s) + 1 + 1 / (s - 1) - s * (u : ) in 1 ..N, (Int.fract u) * u ^ (-s - 1)
      theorem helper_eventually_eq_from_zetaNfinal (s : ) (hs : s 1) :
      ∀ᶠ (N : ) in Filter.atTop, zetaPartialSum s N = N ^ (1 - s) / (1 - s) + 1 + 1 / (s - 1) - s * (u : ) in 1 ..N, (Int.fract u) * u ^ (-s - 1)
      theorem helper_limit_scaled_cpow (s : ) (hs : 1 < s.re) (hsne : s 1) :
      Filter.Tendsto (fun (N : ) => N ^ (1 - s) / (1 - s)) Filter.atTop (nhds 0)
      theorem helper_tendsto_const_mul {f : } {l : } (c : ) (h : Filter.Tendsto f Filter.atTop (nhds l)) :
      Filter.Tendsto (fun (n : ) => c * f n) Filter.atTop (nhds (c * l))
      theorem helper_tendsto_add {f g : } {a b : } (hf : Filter.Tendsto f Filter.atTop (nhds a)) (hg : Filter.Tendsto g Filter.atTop (nhds b)) :
      Filter.Tendsto (fun (n : ) => f n + g n) Filter.atTop (nhds (a + b))
      theorem helper_tendsto_neg {f : } {a : } (hf : Filter.Tendsto f Filter.atTop (nhds a)) :
      Filter.Tendsto (fun (n : ) => -f n) Filter.atTop (nhds (-a))
      theorem helper_tendsto_sub {f g : } {a b : } (hf : Filter.Tendsto f Filter.atTop (nhds a)) (hg : Filter.Tendsto g Filter.atTop (nhds b)) :
      Filter.Tendsto (fun (n : ) => f n - g n) Filter.atTop (nhds (a - b))
      theorem lem_zetaFormula (s : ) (hs : 1 < s.re) :
      riemannZeta s = 1 + 1 / (s - 1) - s * (u : ) in Set.Ioi 1, (Int.fract u) * u ^ (-s - 1)
      theorem lem_zetaanalS :
      let S := {s : | s 1}; AnalyticOn riemannZeta S

      Lemma: Zeta is analytic on ℂ \ {1}.

      theorem lem_S_isOpen :
      let S := {s : | s 1}; IsOpen S

      Lemma: The set S = {s : ℂ | s ≠ 1} is open.

      theorem lem_T_isOpen :
      let S := {s : | s 1}; let T := {s : | s S 1 / 10 < s.re}; IsOpen T

      Lemma: The set T = {s ∈ S | Re(s) > 1/10} is open.

      theorem helper_T_open :
      let S := {s : | s 1}; let T := {s : | s S 1 / 10 < s.re}; IsOpen T
      theorem open_mem_interior_of_isOpen {X : Type u_1} [TopologicalSpace X] {U : Set X} (hU : IsOpen U) {x : X} (hx : x U) :
      theorem T_eq_inter_S_half (S T : Set ) (hS : S = {s : | s 1}) (hT : T = {s : | s S 1 / 10 < s.re}) :
      T = S {s : | 1 / 10 < s.re}
      theorem inter_compl_singleton_eq_diff {α : Type u_1} [DecidableEq α] (A : Set α) (x : α) :
      A {x} = A \ {x}
      theorem joinedIn_of_path_forall_mem {s : Set } {x y : } (γ : Path x y) ( : ∀ (t : unitInterval), γ t s) :
      JoinedIn s x y
      theorem path_forall_mem_symm {x y : } {P : Prop} (γ : Path x y) (h : ∀ (t : unitInterval), P (γ t)) (t : unitInterval) :
      P (γ.symm t)
      theorem inter_compl_singleton_eq_diff' {α : Type u_1} [DecidableEq α] (A : Set α) (x : α) :
      A {x} = A \ {x}
      theorem lem_T_isPreconnected :
      let S := {s : | s 1}; let T := {s : | s S 1 / 10 < s.re}; IsPreconnected T

      Lemma: The set T = {s ∈ S | Re(s) > 1/10} is preconnected.

      theorem hasDerivAt_param_cpow_neg_one (u : ) (hu : 0 < u) (z : ) :
      HasDerivAt (fun (w : ) => u ^ (-w - 1)) (-(Real.log u) * u ^ (-z - 1)) z
      theorem kernel_deriv_norm_bound_on_ball (ε u : ) (hu : 1 < u) (x : ) (hx : ε x.re) :
      -(Real.log u) * ((Int.fract u) * u ^ (-x - 1)) Real.log u * u ^ (-1 - ε)
      theorem exists_radius_ball_two_step_subset_halfspace (s : ) {ε : } ( : ε < s.re) :
      δ > 0, ∀ (x : ), dist x s < δ∀ (y : ), dist y x < δε y.re
      theorem integrable_kernel_at_param (s : ) (hs : 0 < s.re) :
      theorem hasDerivAt_kernel_in_param (u : ) (hu : 1 < u) (z : ) :
      HasDerivAt (fun (w : ) => (Int.fract u) * u ^ (-w - 1)) (-(Real.log u) * ((Int.fract u) * u ^ (-z - 1))) z
      theorem hasDerivAt_integral_param_dominated_Ioi (F F' : ) (s : ) (δ : ) ( : 0 < δ) (hmeas : ∀ᶠ (z : ) in nhds s, MeasureTheory.AEStronglyMeasurable (F z) (MeasureTheory.volume.restrict (Set.Ioi 1))) (hFint : MeasureTheory.Integrable (F s) (MeasureTheory.volume.restrict (Set.Ioi 1))) (hF'meas : MeasureTheory.AEStronglyMeasurable (F' s) (MeasureTheory.volume.restrict (Set.Ioi 1))) (bound : ) (hbound_int : MeasureTheory.Integrable bound (MeasureTheory.volume.restrict (Set.Ioi 1))) (hbound : ∀ᵐ (u : ) MeasureTheory.volume.restrict (Set.Ioi 1), zMetric.ball s δ, F' z u bound u) (hderiv : ∀ᵐ (u : ) MeasureTheory.volume.restrict (Set.Ioi 1), zMetric.ball s δ, HasDerivAt (fun (w : ) => F w u) (F' z u) z) :
      HasDerivAt (fun (z : ) => (u : ) in Set.Ioi 1, F z u) ( (u : ) in Set.Ioi 1, F' s u) s
      theorem dist_lt_of_mem_two_balls {x z s : } {r : } (hxz : dist x z < r) (hzs : dist z s < r) :
      dist x s < r + r
      theorem mem_ball_of_mem_two_half_balls {x z s : } {δ : } (hx : x Metric.ball z (δ / 2)) (hz : z Metric.ball s (δ / 2)) :
      theorem dist_lt_delta_of_half {x s : } {δ : } (hδpos : 0 < δ) (hx : dist x s < δ / 2) :
      dist x s < δ
      theorem re_lower_bound_from_two_step {s x : } {ε δ : } (h : ∀ (z : ), dist z s < δ∀ (y : ), dist y z < δε y.re) (hδpos : 0 < δ) (hx : dist x s < δ) :
      ε x.re
      theorem integrable_kernel_at_param' (z : ) (hz : 0 < z.re) :
      theorem lem_integralAnalytic (s : ) (hs : 1 / 10 < s.re) :
      AnalyticAt (fun (z : ) => (u : ) in Set.Ioi 1, (Int.fract u) * u ^ (-z - 1)) s
      theorem lem_zetaFormulaAC :
      let S := {s : | s 1}; let T := {s : | s S 1 / 10 < s.re}; let F := fun (z : ) => z / (z - 1) - z * (u : ) in Set.Ioi 1, (Int.fract u) * u ^ (-z - 1); AnalyticOn F T

      Lemma: The continuation formula is analytic on T = { s ≠ 1, Re(s) > 0 }.

      theorem lem_div_eq_one_plus_one_div (z : ) (hz : z 1) :
      z / (z - 1) = 1 + 1 / (z - 1)

      Lemma: Algebraic identity for complex division.

      theorem lem_zetaAnalyticContinuation :
      let S := {s : | s 1}; let T := {s : | s S 1 / 10 < s.re}; sT, riemannZeta s = 1 + 1 / (s - 1) - s * (u : ) in Set.Ioi 1, (Int.fract u) * u ^ (-s - 1)

      Lemma: Analytic continuation identity on T = { s ≠ 1, Re(s) > 0 }.

      theorem lem_zetaBound1 (s : ) (hs_re : 1 / 10 < s.re) (hs_ne : s 1) :
      riemannZeta s 1 + 1 / (s - 1) + s * (u : ) in Set.Ioi 1, (Int.fract u) * u ^ (-s - 1)

      Lemma: Zeta bound 1 on Re(s) > 0, s ≠ 1.

      theorem lem_integralBoundValue (s : ) (hs : 0 < s.re) :
      (u : ) in Set.Ioi 1, u ^ (-s.re - 1) = 1 / s.re

      Lemma: Integral bound value ∫_{1}^{∞} u^{-Re(s)-1} = 1/Re(s).

      theorem lem_zetaBound2 (s : ) (hs_re : 1 / 10 < s.re) (hs_ne : s 1) :

      Lemma: Zeta bound 2.

      theorem lem_sOverSminus1Bound (s : ) (hs : s 1) :
      1 / (s - 1) = 1 / s - 1

      Lemma: Reciprocal norm identity in ℂ.

      theorem lem_zetaBound3 (s : ) (hs_re : 1 / 10 < s.re) (hs_ne : s 1) :

      Lemma: Zeta bound 3.

      theorem helper_normsq (z : ) :
      z ^ 2 = z.re ^ 2 + z.im ^ 2
      theorem helper_three_abs_sq (t : ) :
      3 ^ 2 + t ^ 2 (3 + |t|) ^ 2
      theorem lem_sBound (s : ) (hs : 1 / 2 s.re s.re < 3) :
      s < 3 + |s.im|

      Lemma: Bound on ‖s‖ when 1/2 ≤ Re(s) < 3.

      theorem lem_invReSbound (s : ) (hs : 1 / 2 s.re s.re < 3) :
      1 / s.re 2

      Lemma: Bound on 1 / Re(s) under 1/2 ≤ Re(s) < 3.

      theorem lem_invSminus1bound (s : ) (hs_re : 1 / 2 s.re s.re < 3) (hs_im : 1 |s.im|) :
      1 s - 1

      Lemma: Lower bound on ‖s - 1‖ when 1/2 ≤ Re(s) < 3 and |Im(s)| ≥ 1.

      theorem reciprocal_le_one_of_one_le {x : } (hx_pos : 0 < x) (hx_ge : 1 x) :
      1 / x 1
      theorem div_le_mul_of_one_div_le {a c d : } (ha : 0 a) (hc : 0 < c) (h : 1 / c d) :
      a / c a * d
      theorem lem_finalBoundCombination (s : ) (hs_re : 1 / 2 s.re s.re < 3) (hs_im : 1 |s.im|) :
      riemannZeta s < 1 + 1 + (3 + |s.im|) * 2

      Lemma: Final bound combination.

      theorem lem_finalAlgebra (t : ) :
      1 + 1 + (3 + |t|) * 2 = 8 + 2 * |t|

      Lemma: Final algebraic simplification.

      theorem lem_zetaUppBd (z : ) (hz_re : z.re Set.Ico (1 / 2) 3) (hz_im : 1 |z.im|) :

      Lemma: Upper bound on zeta in the vertical strip.

      theorem lem_zfroms_calc (s : ) (t : ) :
      let z := s + (3 / 2) + I * t; z.re = s.re + 3 / 2 z.im = s.im + t

      Lemma: z from s (first version).

      theorem lem_zfroms_conditions (s : ) (t : ) (hs : s 1) (ht : 2 < |t|) :
      let z := s + (3 / 2) + I * t; z.re Set.Ico (1 / 2) 3 1 |z.im|
      theorem lem_abs_im_bound (s : ) (t : ) (hs : s 1) :
      |s.im + t| 1 + |t|

      Helper lemma for the final bound.

      theorem lem_zetaUppBound (t : ) (s : ) :
      s 12 < |t|riemannZeta (s + (3 / 2) + I * t) < 10 + 2 * |t|

      Lemma: Final zeta upper bound with shift.

      noncomputable def logDerivZeta (s : ) :
      Equations
      Instances For
        def zerosetKfRc (R : ) (c : ) (f : ) :
        Equations
        Instances For
          theorem DiffAtWithinAt {T : Set } {g : } {s : } (_hs : s T) :
          theorem DiffWithinAtallOn {T : Set } {g : } :
          (∀ sT, DifferentiableWithinAt g T s)DifferentiableOn g T
          theorem DiffAtOn {T : Set } {g : } :
          (∀ sT, DifferentiableAt g s)DifferentiableOn g T
          theorem DiffOnanalOnNhd {T : Set } (hT : IsOpen T) {g : } :
          theorem DiffAtallanalOnNhd {T : Set } (hT : IsOpen T) {g : } :
          (∀ sT, DifferentiableAt g s)AnalyticOnNhd g T
          theorem I_mul_ofReal_im (t : ) :
          (I * t).im = t
          theorem complex_im_sub_I_mul (a : ) (t : ) :
          (a - I * t).im = a.im - t
          theorem D1cinTt_pre (t : ) (ht : |t| > 1) (s : ) :
          s Metric.closedBall (3 / 2 + I * t) 1s 1
          theorem D1cinTt (t : ) (ht : |t| > 1) :
          Metric.closedBall (3 / 2 + I * t) 1 {s : | s 1}
          theorem zetaanalOnD1c (t : ) (ht : |t| > 1) :
          theorem sigmageq1 (s : ) (hs : s.re > 1) :
          theorem Complex_I_mul_ofReal_re (r : ) :
          (I * r).re = 0
          theorem re_real_add_I_mul_gt (a b : ) (h : a > 1) :
          (a + I * b).re > 1
          theorem zetacnot0 (t : ) :
          riemannZeta (3 / 2 + I * t) 0
          theorem zetacnot0_general (x t : ) (hx : x > 1) :
          riemannZeta (x + I * t) 0
          theorem fc_analytic_normalized (c : ) (f : ) (h_analytic : AnalyticOnNhd f (Metric.closedBall c 1)) (h_nonzero : f c 0) :
          AnalyticOnNhd (fun (z : ) => f (z + c) / f c) (Metric.closedBall 0 1) (fun (z : ) => f (z + c) / f c) 0 = 1
          theorem deriv_normalized_nohd (c : ) (f : ) (z : ) (h_nonzero : f c 0) :
          deriv (fun (w : ) => f (w + c) / f c) z = deriv f (z + c) / f c
          theorem frac_cancel_const {x y c : } (hc : c 0) (hy : y 0) :
          x / c / (y / c) = x / y
          theorem fc_log_deriv (c : ) (f : ) (h_analytic : AnalyticOnNhd f (Metric.closedBall c 1)) (h_nonzero : f c 0) {z : } (hz_nonzero : f (z + c) 0) :
          deriv (fun (w : ) => f (w + c) / f c) z / (f (z + c) / f c) = deriv f (z + c) / f (z + c)
          theorem fc_bound (B : ) (hB : B > 1) (R : ) (hRpos : 0 < R) (hR : R < 1) (c : ) (f : ) (h_nonzero : f c 0) (h_bound : zMetric.closedBall c R, f z B) (z : ) :
          z Metric.closedBall 0 R(fun (w : ) => f (w + c) / f c) z B / f c
          theorem fc_zeros (r : ) (h : r > 0) (c : ) (f : ) (h_nonzero : f c 0) (h_analytic : AnalyticOnNhd f (Metric.closedBall c 1)) :
          (zerosetKfRc r 0 fun (z : ) => f (z + c) / f c) = (fun (ρ : ) => ρ - c) '' zerosetKfRc r c f
          theorem analyticOrderAt_const_mul_eq (f : ) (a z0 : ) (ha : a 0) :
          analyticOrderAt (fun (z : ) => a * f z) z0 = analyticOrderAt f z0
          theorem AnalyticAt.comp_add_const {f : } {z0 c : } (hf : AnalyticAt f (z0 + c)) :
          AnalyticAt (fun (z : ) => f (z + c)) z0
          theorem AnalyticAt.of_comp_add_const {f : } {z0 c : } (hg : AnalyticAt (fun (z : ) => f (z + c)) z0) :
          AnalyticAt f (z0 + c)
          theorem order_top_iff_comp_add (f : ) (z0 c : ) :
          analyticOrderAt (fun (z : ) => f (z + c)) z0 = analyticOrderAt f (z0 + c) =
          theorem enat_le_iff_forall_nat {x y : ℕ∞} :
          x y ∀ (n : ), n xn y
          theorem natCast_le_order_const_mul_iff (f : ) (a z0 : ) (ha : a 0) (n : ) :
          n analyticOrderAt (fun (z : ) => a * f z) z0 n analyticOrderAt f z0
          theorem order_top_iff_const_mul (f : ) (a z0 : ) (ha : a 0) :
          analyticOrderAt (fun (z : ) => a * f z) z0 = analyticOrderAt f z0 =
          theorem analyticOrderAt_mul_const_eq (f : ) (a z0 : ) (ha : a 0) :
          analyticOrderAt (fun (z : ) => f z * a) z0 = analyticOrderAt f z0
          theorem fc_m_order (r : ) (h : r > 0) (c : ) (f : ) (h_nonzero : f c 0) (h_analytic : AnalyticOnNhd f (Metric.closedBall c 1)) {ρ' : } (hρ' : ρ' zerosetKfRc r 0 fun (z : ) => f (z + c) / f c) :
          analyticOrderAt (fun (z : ) => f (z + c) / f c) ρ' = analyticOrderAt f (ρ' + c)
          theorem DminusK (r1 R1 : ) (hr1 : r1 > 0) (hR1 : R1 > 0) (c : ) (f : ) (h_analytic : AnalyticOnNhd f (Metric.closedBall c 1)) (h_nonzero : f c 0) (z : ) :
          (z Metric.closedBall 0 r1 \ zerosetKfRc R1 0 fun (w : ) => f (w + c) / f c) z + c Metric.closedBall c r1 \ zerosetKfRc R1 c f
          theorem shifted_zeros_correspondence (R1 : ) (hR1 : R1 > 0) (c z : ) (f : ) (h_nonzero : f c 0) (h_analytic : AnalyticOnNhd f (Metric.closedBall c 1)) (hfin_orig : (zerosetKfRc R1 c f).Finite) (hfin_shift : (zerosetKfRc R1 0 fun (u : ) => f (u + c) / f c).Finite) :
          ρhfin_orig.toFinset, (analyticOrderAt f ρ).toNat / (z - ρ) = ρ'hfin_shift.toFinset, (analyticOrderAt (fun (u : ) => f (u + c) / f c) ρ').toNat / (z - c - ρ')
          theorem final_ineq2 (B : ) (hB : 1 < B) (r1 r R R1 : ) (hr1pos : 0 < r1) (hr1_lt_r : r1 < r) (hr_lt_R1 : r < R1) (hR1_lt_R : R1 < R) (hR : R < 1) (c : ) (f : ) (h_analytic : AnalyticOnNhd f (Metric.closedBall c 1)) (h_nonzero : f c 0) (h_bound : zMetric.closedBall c R, f z < B) (hfin : (zerosetKfRc R1 0 fun (z : ) => f (z + c) / f c).Finite) (z : ) :
          (z Metric.closedBall 0 r1 \ zerosetKfRc R1 0 fun (z : ) => f (z + c) / f c) → deriv (fun (z : ) => f (z + c) / f c) z / (f (z + c) / f c) - ρhfin.toFinset, (analyticOrderAt (fun (w : ) => f (w + c) / f c) ρ).toNat / (z - ρ) (16 * r ^ 2 / (r - r1) ^ 3 + 1 / ((R ^ 2 / R1 - R1) * Real.log (R / R1))) * Real.log (B / f c)
          theorem log_Deriv_Expansion_Zeta (t : ) (ht : |t| > 2) (r1 r R1 R : ) (hr1_pos : 0 < r1) (hr1_lt_r : r1 < r) (hr_pos : 0 < r) (hr_lt_R1 : r < R1) (hR1_pos : 0 < R1) (hR1_lt_R : R1 < R) (hR_lt_1 : R < 1) :
          let c := 3 / 2 + I * t; B > 1, (∀ zMetric.closedBall c R, riemannZeta z < B)∀ (hfin : (zerosetKfRc R1 c riemannZeta).Finite), zMetric.closedBall c r1 \ zerosetKfRc R1 c riemannZeta, logDerivZeta z - ρhfin.toFinset, (analyticOrderAt riemannZeta ρ).toNat / (z - ρ) (16 * r ^ 2 / (r - r1) ^ 3 + 1 / ((R ^ 2 / R1 - R1) * Real.log (R / R1))) * Real.log (B / riemannZeta c)
          theorem zeta32lower :
          a > 0, ∀ (t : ), riemannZeta (3 / 2 + I * t) a
          theorem zeta32lower_log :
          A > 1, ∀ (t : ), Real.log (1 / riemannZeta (3 / 2 + I * t)) A
          theorem zeta32upper_pre :
          b > 1, ∀ (t : ) (s : ), s 12 < |t|riemannZeta (s + 3 / 2 + Complex.I * t) < b * |t|
          theorem zeta32upper :
          b > 1, ∀ (t : ), |t| > 2let c := 3 / 2 + I * t; sMetric.closedBall c 1, riemannZeta s < b * |t|
          theorem closedBall_subset_unit (c : ) (R : ) (hR_lt_1 : R < 1) :
          theorem zeta_c_nonzero (t : ) :
          riemannZeta (3 / 2 + I * t) 0
          theorem zeta_c_norm_pos (t : ) :
          0 < riemannZeta (3 / 2 + I * t)
          theorem Zeta1_Zeta_Expand :
          A > 1, b > 1, ∀ (t : ), |t| > 2∀ (r1 r R1 R : ), 0 < r1r1 < r0 < rr < R10 < R1R1 < RR < 1let c := 3 / 2 + I * t; ∀ (hfin : (zerosetKfRc R1 c riemannZeta).Finite), zMetric.closedBall c r1 \ zerosetKfRc R1 c riemannZeta, logDerivZeta z - ρhfin.toFinset, (analyticOrderAt riemannZeta ρ).toNat / (z - ρ) (16 * r ^ 2 / (r - r1) ^ 3 + 1 / ((R ^ 2 / R1 - R1) * Real.log (R / R1))) * (Real.log |t| + Real.log b + A)
          theorem helper_log_ratio_le_sum (b t x A : ) (hb : b > 1) (ht : 0 < |t|) (hx : 0 < x) (hA : Real.log (1 / x) A) :
          theorem helper_bound_sum_by_Klog (t b A : ) (ht : |t| > 3) (hb : b > 1) (hA : A > 1) :
          K > 1, Real.log |t| + Real.log b + A K * Real.log (|t| + 2)
          theorem Zeta1_Zeta_Expansion (r1 r : ) (hr1_pos : 0 < r1) (hr1_lt_r : r1 < r) (hr_lt_R1 : r < 5 / 6) :
          C > 1, ∀ (t : ), |t| > 3let c := 3 / 2 + I * t; ∀ (hfin : (zerosetKfRc (5 / 6) c riemannZeta).Finite), zMetric.closedBall c r1 \ zerosetKfRc (5 / 6) c riemannZeta, logDerivZeta z - ρhfin.toFinset, (analyticOrderAt riemannZeta ρ).toNat / (z - ρ) C * (1 / (r - r1) ^ 3 + 1) * Real.log |t|