Documentation

PrimeNumberTheoremAnd.Consequences

theorem Set.Ico_subset_Ico_of_Icc_subset_Icc {a b c d : } (h : Icc a bIcc c d) :
Ico a bIco c d
theorem th43_b (x : ) (hx : 2 x) :
theorem finsum_range_eq_sum_range {R : Type u_1} [AddCommMonoid R] {f : ArithmeticFunction R} (x : ) :
∑ᶠ (n : ) (_ : n < x), f n = nFinset.range x⌉₊, f n
theorem finsum_range_eq_sum_range' {R : Type u_1} [AddCommMonoid R] {f : ArithmeticFunction R} (x : ) :
∑ᶠ (n : ) (_ : n x), f n = nx⌋₊, f n
theorem Asymptotics.IsEquivalent.add_isLittleO' {α : Type u_1} {β : Type u_2} [NormedAddCommGroup β] {u v w : αβ} {l : Filter α} (huv : IsEquivalent l u v) (hwu : (w - u) =o[l] v) :

If u v and w-u = o(v) then w v.

theorem Asymptotics.IsEquivalent.add_isLittleO'' {α : Type u_1} {β : Type u_2} [NormedAddCommGroup β] {u v w : αβ} {l : Filter α} (huv : IsEquivalent l u v) (hwu : (u - w) =o[l] v) :

If u v and u-w = o(v) then w v.

theorem WeakPNT' :
Filter.Tendsto (fun (N : ) => (∑ nN, ArithmeticFunction.vonMangoldt n) / N) Filter.atTop (nhds 1)

An alternate form of the Weak PNT.

√x · log x = o(x) as x → ∞.

(⌊x⌋₊ + 1) / x → 1 as x → ∞.

theorem isTheta_self_div_const {c : } (hc : c 0) :
(fun (x : ) => x) =Θ[Filter.atTop] fun (x : ) => x / c

x =Θ x / c for nonzero constant c.

Filtered sum over Iic n equals filtered sum over Icc 1 n for primes.

theorem Icc_zero_eq_insert (n : ) :

Icc 0 n = insert 0 (Icc 1 n)

theorem chebyshev_asymptotic_finsum :
Asymptotics.IsEquivalent Filter.atTop (fun (x : ) => ∑ᶠ (p : ) (_ : p x) (_ : Nat.Prime p), Real.log p) fun (x : ) => x
theorem chebyshev_asymptotic' :
∃ (f : ), (∀ ε > 0, f =o[Filter.atTop] fun (t : ) => ε * t) (∀ (x : ), 2 xMeasureTheory.IntegrableOn f (Set.Icc 2 x) MeasureTheory.volume) ∀ (x : ), Chebyshev.theta x = x + f x
theorem chebyshev_asymptotic'' :
∃ (f : ), (∀ ε > 0, f =o[Filter.atTop] fun (x : ) => ε) (∀ (x : ), 2 xMeasureTheory.IntegrableOn f (Set.Icc 2 x) MeasureTheory.volume) x > 0, Chebyshev.theta x = x + x * f x
theorem primorial_bounds :
∃ (E : ), (E =o[Filter.atTop] fun (x : ) => x) ∀ (x : ), (∏ px⌋₊ with Nat.Prime p, p) = Real.exp (x + E x)
theorem primorial_bounds_finprod :
∃ (E : ), (E =o[Filter.atTop] fun (x : ) => x) ∀ (x : ), (∏ᶠ (p : ) (_ : p x) (_ : Nat.Prime p), p) = Real.exp (x + E x)
theorem continuousOn_log0 :
ContinuousOn (fun (x : ) => -1 / (x * Real.log x ^ 2)) {0, 1, -1}
theorem continuousOn_log1 :
ContinuousOn (fun (x : ) => (Real.log x ^ 2)⁻¹ * x⁻¹) {0, 1, -1}
theorem integral_log_inv (a b : ) (ha : 2 a) (hb : a b) :
(t : ) in a..b, (Real.log t)⁻¹ = (Real.log b)⁻¹ * b - (Real.log a)⁻¹ * a + (t : ) in a..b, (Real.log t ^ 2)⁻¹
theorem integral_log_inv' (a b : ) (ha : 2 a) (hb : a b) :
theorem integral_log_inv'' (a b : ) (ha : 2 a) (hb : a b) :
theorem integral_log_inv_pos (x : ) (hx : 2 < x) :
0 < (t : ) in Set.Icc 2 x, (Real.log t)⁻¹
theorem integral_log_inv_ne_zero (x : ) (hx : 2 < x) :
theorem pi_asymp'' :
(fun (x : ) => (x⌋₊.primeCounting / (t : ) in Set.Icc 2 x, 1 / Real.log t) - 1) =o[Filter.atTop] fun (x : ) => 1
theorem pi_asymp :
∃ (c : ), (c =o[Filter.atTop] fun (x : ) => 1) ∀ᶠ (x : ) in Filter.atTop, x⌋₊.primeCounting = (1 + c x) * (t : ) in 2..x, 1 / Real.log t
theorem inv_div_log_asy :
∃ (c : ), ∀ᶠ (x : ) in Filter.atTop, (t : ) in Set.Icc 2 x, 1 / Real.log t ^ 2 c * (x / Real.log x ^ 2)
theorem integral_log_inv_pialt (x : ) (hx : 4 x) :
(t : ) in Set.Icc 2 x, 1 / Real.log t = x / Real.log x - 2 / Real.log 2 + (t : ) in Set.Icc 2 x, 1 / Real.log t ^ 2
theorem integral_div_log_asymptotic :
∃ (c : ), (c =o[Filter.atTop] fun (x : ) => 1) ∀ᶠ (x : ) in Filter.atTop, (t : ) in Set.Icc 2 x, 1 / Real.log t = (1 + c x) * x / Real.log x
theorem pi_alt :
∃ (c : ), (c =o[Filter.atTop] fun (x : ) => 1) ∀ (x : ), x⌋₊.primeCounting = (1 + c x) * x / Real.log x
theorem pi_nth_prime_asymp :
Asymptotics.IsEquivalent Filter.atTop (fun (n : ) => (nth_prime n) / Real.log (nth_prime n)) fun (n : ) => n
theorem nth_prime_asymp :
Asymptotics.IsEquivalent Filter.atTop (fun (n : ) => (nth_prime n)) fun (n : ) => n * Real.log n
theorem pn_asymptotic :
∃ (c : ), (c =o[Filter.atTop] fun (x : ) => 1) n > 1, (nth_prime n) = (1 + c n) * n * Real.log n
theorem pn_pn_plus_one :
∃ (c : ), (c =o[Filter.atTop] fun (x : ) => 1) ∀ (n : ), (nth_prime (n + 1)) - (nth_prime n) = c n * (nth_prime n)
theorem prime_in_gap' (a b : ) (h : a.primeCounting < b.primeCounting) :
∃ (p : ), Nat.Prime p a + 1 p p < b + 1
theorem prime_in_gap (a b : ) (ha : 0 < a) (h : a⌋₊.primeCounting < b⌋₊.primeCounting) :
∃ (p : ), Nat.Prime p a < p p b
theorem bound_f_second_term (f : ) (hf : Filter.Tendsto f Filter.atTop (nhds 0)) (δ : ) ( : δ > 0) :
∀ᶠ (x : ) in Filter.atTop, 1 + f x < 1 + δ
theorem bound_f_first_term {ε : } ( : 0 < ε) (f : ) (hf : Filter.Tendsto f Filter.atTop (nhds 0)) (δ : ) ( : δ > 0) :
∀ᶠ (x : ) in Filter.atTop, 1 + f ((1 + ε) * x) > 1 - δ
theorem smaller_terms {ε : } ( : 0 < ε) (f : ) (hf : Filter.Tendsto f Filter.atTop (nhds 0)) (δ : ) ( : δ > 0) :
∀ᶠ (x : ) in Filter.atTop, (1 - δ) * ((1 + ε) * x / Real.log ((1 + ε) * x)) < (1 + f ((1 + ε) * x)) * ((1 + ε) * x / Real.log ((1 + ε) * x))
theorem second_smaller_terms (f : ) (hf : Filter.Tendsto f Filter.atTop (nhds 0)) (δ : ) ( : δ > 0) :
∀ᶠ (x : ) in Filter.atTop, (1 + δ) * (x / Real.log x) > (1 + f x) * (x / Real.log x)
theorem prime_between {ε : } ( : 0 < ε) :
∀ᶠ (x : ) in Filter.atTop, ∃ (p : ), Nat.Prime p x < p p < (1 + ε) * x
theorem sum_mobius_mul_floor (x : ) (hx : 1 x) :
nx⌋₊, (ArithmeticFunction.moebius n) * x / n = 1
noncomputable def mu_log :
Equations
Instances For
    theorem sum_mu_Lambda (x : ) :
    nx⌋₊, (ArithmeticFunction.moebius n) * Real.log n = -kx⌋₊, (ArithmeticFunction.moebius k) * Psi (x / k)
    theorem M_log_identity (x : ) (hx : 1 x) :
    M x * Real.log x = kx⌋₊, (ArithmeticFunction.moebius k) * (Real.log (x / k) - Psi (x / k))
    noncomputable def R (x : ) :
    Equations
    Instances For
      theorem sum_mobius_div_isBigO :
      (fun (x : ) => kx⌋₊, (ArithmeticFunction.moebius k) * (x / k)) =O[Filter.atTop] id
      theorem sum_log_div_isBigO :
      (fun (x : ) => kx⌋₊, Real.log (x / k)) =O[Filter.atTop] id
      theorem R_locally_bounded (K : ) (hK : 0 K) :
      ∃ (C : ), ySet.Icc 0 K, |R y| C
      theorem sum_bounded_of_linear_bound {f : } {ε C : } ( : 0 ε) (hC : 0 C) (h : ∀ (y : ), 1 y|f y| ε * y + C) (x : ) (hx : 1 x) :
      kFinset.Icc 1 x⌋₊, |f (x / k)| ε * x * (Real.log x + 1) + C * x
      theorem sum_abs_R_isLittleO :
      (fun (x : ) => kx⌋₊, |R (x / k)|) =o[Filter.atTop] fun (x : ) => x * Real.log x
      theorem R_linear_bound (ε : ) ( : 0 < ε) :
      ∃ (C : ), 0 C ∀ (y : ), 1 y|R y| ε * y + C
      theorem sum_abs_R_isLittleO' :
      (fun (x : ) => kx⌋₊, |R (x / k)|) =o[Filter.atTop] fun (x : ) => x * Real.log x
      theorem mu_pnt :
      (fun (x : ) => nFinset.range x⌋₊, ArithmeticFunction.moebius n) =o[Filter.atTop] fun (x : ) => x
      theorem lambda_eq_sum_sq_dvd_mu (n : ) (hn : n 0) :
      (-1) ^ ArithmeticFunction.cardFactors n = dFinset.Icc 1 n with d ^ 2 n, (ArithmeticFunction.moebius (n / d ^ 2))
      theorem sum_lambda_eq_sum_mu_div_sq (N : ) :
      nFinset.Icc 1 N, (-1) ^ ArithmeticFunction.cardFactors n = dFinset.Icc 1 N.sqrt, kFinset.Icc 1 (N / d ^ 2), (ArithmeticFunction.moebius k)
      theorem sum_mu_div_sq_isLittleO :
      (fun (N : ) => dFinset.Icc 1 N.sqrt, kFinset.Icc 1 (N / d ^ 2), (ArithmeticFunction.moebius k)) =o[Filter.atTop] fun (N : ) => N
      theorem lambda_pnt :
      (fun (x : ) => nFinset.range x⌋₊, (-1) ^ ArithmeticFunction.cardFactors n) =o[Filter.atTop] fun (x : ) => x
      theorem sum_mobius_floor (x : ) (hx : 1 x) :
      nFinset.Icc 1 x⌋₊, (ArithmeticFunction.moebius n) * x / n = 1
      theorem sum_mobius_floor_tail_isLittleO (K : ) (hK : 0 < K) :
      (fun (x : ) => nFinset.Ioc x / K⌋₊ x⌋₊, (ArithmeticFunction.moebius n) * x / n) =o[Filter.atTop] fun (x : ) => x
      theorem sum_mobius_div_approx (x : ) (K : ) (hK : 0 < K) (hx : 1 x) :
      |x * nFinset.Icc 1 x / K⌋₊, (ArithmeticFunction.moebius n) / n - 1| x / K + |nFinset.Ioc x / K⌋₊ x⌋₊, (ArithmeticFunction.moebius n) * x / n|
      theorem mu_pnt_alt :
      (fun (x : ) => nFinset.range x⌋₊, (ArithmeticFunction.moebius n) / n) =o[Filter.atTop] fun (x : ) => 1
      theorem chebyshev_asymptotic_pnt {q a : } (hq : q 1) (ha : a.Coprime q) (ha' : a < q) :
      Asymptotics.IsEquivalent Filter.atTop (fun (x : ) => px⌋₊ with Nat.Prime p, if p % q = a then Real.log p else 0) fun (x : ) => x / q.totient
      theorem dirichlet_thm {q a : } (hq : q 1) (ha : a.Coprime q) (ha' : a < q) :