Documentation

LeanPool.SelbergSieve4.Applications.PrimeCountingUpperBound

LeanPool.SelbergSieve4.Applications.PrimeCountingUpperBound #

theorem PrimeUpperBound.prodDistinctPrimes_squarefree (s : Finset ) (h : ps, Nat.Prime p) :
Squarefree (∏ ps, p)
noncomputable def PrimeUpperBound.primeSieve (N : ) (y : ) (hy : 1 y) :

Selberg sieve specialized to primes at most the real level y.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem PrimeUpperBound.siftedSum_eq (s : SelbergSieve) (hw : is.support, s.weights i = 1) (z : ) (hz : 1 z) (hP : s.prodPrimes = primorial z⌋₊) :
    s.siftedSum = {ds.support | ∀ (p : ), Nat.Prime pp z¬p d}.card
    theorem PrimeUpperBound.primeSieve_siftedSum_eq (N : ) (y : ) (hy : 1 y) :
    (primeSieve N y hy).siftedSum = {dFinset.range (N + 1) | ∀ (p : ), Nat.Prime pp y¬p d}.card
    theorem PrimeUpperBound.prime_subset (N : ) (y : ) :
    Finset.filter Nat.Prime (Finset.range (N + 1)) {dFinset.range (N + 1) | ∀ (p : ), Nat.Prime pp y¬p d} Finset.Icc 1 y⌋₊
    theorem PrimeUpperBound.pi_le_siftedSum (N : ) (y : ) (hy : 1 y) :

    Predicate asserting that an arithmetic function is completely multiplicative.

    Equations
    Instances For
      theorem PrimeUpperBound.prod_factors_one_div_compMult_ge (M : ) (f : ArithmeticFunction ) (hf : CompletelyMultiplicative f) (hf_nonneg : ∀ (n : ), 0 f n) (d : ) (hd : Squarefree d) (hf_size : ∀ (n : ), Nat.Prime nn df n < 1) :
      f d * pd.primeFactors, 1 / (1 - f p) pd.primeFactors, nFinset.Icc 1 M, f (p ^ n)
      theorem PrimeUpperBound.prod_factors_sum_pow_compMult (M : ) (hM : M 0) (f : ArithmeticFunction ) (hf : CompletelyMultiplicative f) (d : ) (hd : Squarefree d) :
      pd.primeFactors, nFinset.Icc 1 M, f (p ^ n) = m(d ^ M).divisors with d m, f m
      theorem PrimeUpperBound.lem0 (P : ) {s : Finset } (h : ps, p P) (h' : ps, Nat.Prime p) :
      ps, p P
      theorem PrimeUpperBound.sqrt_le_self (x : ) (hx : 1 x) :
      x x
      theorem PrimeUpperBound.nat_squarefree_dvd_pow (a b N : ) (ha : Squarefree a) (hab : a b ^ N) :
      a b
      theorem PrimeUpperBound.selbergBoundingSum_ge_sum_div (s : SelbergSieve) (hP : ∀ (p : ), Nat.Prime pp s.levelp s.prodPrimes) (hnu : CompletelyMultiplicative s.nu) (hnu_nonneg : ∀ (n : ), 0 s.nu n) (hnu_lt : ∀ (p : ), Nat.Prime pp s.prodPrimess.nu p < 1) :
      theorem PrimeUpperBound.card_range_filter_dvd (N d : ) (hd : d 0) :
      {xFinset.range N | d x}.card = N / d⌉₊
      theorem PrimeUpperBound.primeSieve_multSum_eq (N : ) (y : ) (hy : 1 y) (d : ) (hd : d 0) :
      (primeSieve N y hy).multSum d = ↑(N + 1) / d⌉₊
      theorem PrimeUpperBound.primeSieve_rem_eq (N : ) (y : ) (hy : 1 y) (d : ) (hd : d 0) :
      (primeSieve N y hy).rem d = ↑(N + 1) / d⌉₊ - N / d
      theorem PrimeUpperBound.primeSieve_abs_rem_eq (N : ) (y : ) (hy : 1 y) (d : ) (hd : d 0) :
      |(primeSieve N y hy).rem d| 2
      theorem PrimeUpperBound.rem_sum_le_of_const (s : SelbergSieve) (C : ) (hrem : d > 0, |s.rem d| C) :
      theorem PrimeUpperBound.primeSieve_rem_sum_le (N : ) (y : ) (hy : 1 y) :
      (∑ d(primeSieve N y hy).prodPrimes.divisors, if d y then 3 ^ ArithmeticFunction.cardDistinctFactors d * |(primeSieve N y hy).rem d| else 0) 2 * y * (1 + Real.log y) ^ 3
      theorem PrimeUpperBound.pi_le_of_y (N : ) (y : ) (hy_lt : 1 < y) :
      N.primeCounting 2 * N / Real.log y + 3 * y * (1 + Real.log y) ^ 3
      theorem PrimeUpperBound.pi_le_id_div_log_of_eps (N : ) (ε : ) (_hε_pos : ε > 0) ( : ε < 1) :
      N.primeCounting 2 / (1 - ε) * N / Real.log N + 3 * N ^ (1 - ε) * (1 + (1 - ε) * Real.log N) ^ 3
      theorem PrimeUpperBound.pi_le_id_div_log (N : ) :
      N.primeCounting 4 * N / Real.log N + 3 * N ^ (1 / 2) * (1 + 1 / 2 * Real.log N) ^ 3
      theorem PrimeUpperBound.pi_ll :
      (fun (N : ) => N.primeCounting) =O[Filter.atTop] fun (N : ) => N / Real.log N
      theorem PrimeUpperBound.pi_le_mul :
      ∃ (N : ) (C : ), nN, n.primeCounting C * n / Real.log n