Skip to main content
All packages

AlexKontorovich/PrimeNumberTheoremAnd

PrimeNumberTheoremAnd

Blueprint for the PNT+ Project

Therefore indexed 1,644 complete source declarations from the exact package revision. Individual authorship and independent verification remain unset.

Research project325 GitHub starsApache-2.09 indexed versionsRepositoryFull history on Reservoir

Head version

a93551347dce

a93551347dce924b1db75d40218841bf085a465f

Toolchain
leanprover/lean4:v4.32.0
Revision date
22 Jul 2026
Dependencies
13
Versions
9

External build observation

Exact head commit and toolchain

No Reservoir build observation was found for this exact commit and toolchain. This is not evidence of failure.

Pin this source in lakefile.lean

require PrimeNumberTheoremAnd from git "https://github.com/AlexKontorovich/PrimeNumberTheoremAnd.git" @ "a93551347dce924b1db75d40218841bf085a465f"

Source declarations

1,644 indexed proofs

Package history

Showing 721 to 740 of 1,644 declarations.

theorem

Mertens.E₂p.eq

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.Mertens · PrimeNumberTheoremAnd/IEANTN/Mertens.lean:2021

theorem

Mertens.E₂p.abs_le

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.Mertens · PrimeNumberTheoremAnd/IEANTN/Mertens.lean:2064

theorem

Mertens.sum_prime_div_eq_log_log

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.Mertens · PrimeNumberTheoremAnd/IEANTN/Mertens.lean:2118

lemma

Mertens.tsum_M_eq_f_eq_tsum

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.Mertens · PrimeNumberTheoremAnd/IEANTN/Mertens.lean:2222

theorem

Mertens.prod_one_minus_div_prime_eq

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.Mertens · PrimeNumberTheoremAnd/IEANTN/Mertens.lean:2265

lemma

Mertens.M_eq_summand_bound

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.Mertens · PrimeNumberTheoremAnd/IEANTN/Mertens.lean:2287

lemma

Mertens.sum_one_div_sq_le

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.Mertens · PrimeNumberTheoremAnd/IEANTN/Mertens.lean:2315

lemma

Mertens.sum_M_eq_summand_le

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.Mertens · PrimeNumberTheoremAnd/IEANTN/Mertens.lean:2343

theorem

Mertens.E₃.abs_le

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.Mertens · PrimeNumberTheoremAnd/IEANTN/Mertens.lean:2369

theorem

Mertens.E₃.bound''

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.Mertens · PrimeNumberTheoremAnd/IEANTN/Mertens.lean:2418

theorem

Mertens.E₃.bound'''

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.Mertens · PrimeNumberTheoremAnd/IEANTN/Mertens.lean:2431

lemma

MobiusLemma.sq_dvd_mul_iff_of_coprime

If m, n are coprime and a ∣ m, b ∣ n, then (ab)² ∣ mn iff a² ∣ m and b² ∣ n.

PrimeNumberTheoremAnd.IEANTN.MobiusLemma · PrimeNumberTheoremAnd/IEANTN/MobiusLemma.lean:49

lemma

MobiusLemma.sum_sq_div_moebius_prime_pow

The function sum_sq_div_moebius is multiplicative (explicitly stated). -/ lemma sum_sq_div_moebius_is_multiplicative_explicit : (sum_sq_div_moebius 1 = 1) ∧ (∀ m n : ℕ, Nat.Coprime m n → sum_sq_div_moebius (m * n) = sum_sq_div_moebius m * sum_sq_div_moebius n) := by have h_map : ∀ m n, m.Coprime n → (Nat.divisors (m * n)).filter (fun d ↦ d ^ 2 ∣ m * n) = image (fun p : ℕ × ℕ ↦ p.1 * p.2) ((Nat.divisors m).filter (fun d ↦ d ^ 2 ∣ m) ×ˢ (Nat.divisors n).filter (fun d ↦ d ^ 2 ∣ n)) := by intro m n hmn ext d simp only [mem_filter, Nat.mem_divisors, ne_eq, mul_eq_zero, not_or, mem_image, mem_product, Prod.exists] refine ⟨fun hd ↦ ?, ?⟩ swap · rintro ⟨a, b, ⟨⟨⟨ha₁, ha₂⟩, ha₃⟩, ⟨⟨hb₁, hb₂⟩, hb₃⟩⟩, rfl⟩ exact ⟨⟨mul_dvd_mul ha₁ hb₁, ha₂, hb₂⟩, by convert! mul_dvd_mul ha₃ hb₃ using 1; ring⟩ obtain ⟨hd_div, hd_sq_div⟩ := hd obtain ⟨a, b, ha, hb, rfl⟩ : ∃ a b : ℕ, a ∣ m ∧ b ∣ n ∧ d = a * b := Exists.imp (by grind) (Nat.dvd_mul.mp hd_div.1) simp_all only [mul_pow, not_false_eq_true, and_true] exact ⟨a, b, ⟨⟨ha, (hmn.coprime_dvd_left ha).pow_left 2 |>.dvd_of_dvd_mul_right <| dvd_of_mul_right_dvd hd_sq_div⟩, hb, (hmn.symm.coprime_dvd_left hb).pow_left 2 |>.dvd_of_dvd_mul_left <| dvd_of_mul_left_dvd hd_sq_div⟩, rfl⟩ have h_sum : ∀ m n : ℕ, Nat.Coprime m n → ∑ d ∈ (Nat.divisors (m * n)).filter (fun d ↦ d ^ 2 ∣ m * n), (moebius d : ℤ) = ∑ a ∈ (Nat.divisors m).filter (fun d ↦ d ^ 2 ∣ m), ∑ b ∈ (Nat.divisors n).filter (fun d ↦ d ^ 2 ∣ n), (moebius (a * b) : ℤ) := by intro m n hmn rw [h_map m n hmn, sum_image, sum_product] intro p hp q hq h_eq have hp1_eq_q1 : p.1 = q.1 := by norm_num at * have hdvd : p.1 ∣ q.1 ∧ q.1 ∣ p.1 := ⟨(hmn.coprime_dvd_left (by grind)).coprime_dvd_right (by grind) |>.dvd_of_dvd_mul_right <| h_eq ▸ dvd_mul_right _ _, (hmn.coprime_dvd_left (by grind)).coprime_dvd_right (by grind) |>.dvd_of_dvd_mul_right <| h_eq.symm ▸ dvd_mul_right _ _⟩ exact Nat.dvd_antisymm hdvd.1 hdvd.2 aesop have h_inner : ∀ m n, m.Coprime n → ∀ a ∈ (Nat.divisors m).filter (fun d ↦ d ^ 2 ∣ m), ∀ b ∈ (Nat.divisors n).filter (fun d ↦ d ^ 2 ∣ n), (moebius (a * b) : ℤ) = (moebius a : ℤ) * (moebius b : ℤ) := by intro m n hmn a ha b hb simp only [moebius, mem_filter, Nat.mem_divisors, ne_eq, Int.reduceNeg, coe_mk, mul_ite, ite_mul, zero_mul, mul_zero] at * split_ifs with h <;> simp_all only [Nat.squarefree_mul_iff, and_self, and_true, ne_eq, Int.reduceNeg, zero_eq_mul, pow_eq_zero_iff', neg_eq_zero, one_ne_zero, cardFactors_eq_zero_iff_eq_zero_or_one, not_or, false_and, or_self, and_false] · rw [← pow_add, cardFactors_mul] · intro a; simp_all [Int.reduceNeg] · intro a; simp_all [Int.reduceNeg] · exact h (hmn.coprime_dvd_left ha.1.1 |>.coprime_dvd_right hb.1.1) dsimp only [sum_sq_div_moebius] exact ⟨by simp [sum_filter], fun m n hmn ↦ by rw [h_sum m n hmn, sum_mul] exact sum_congr rfl fun i hi ↦ by rw [mul_sum]; exact sum_congr rfl fun j hj ↦ h_inner m n hmn i hi j hj⟩

/- For a prime power p^k, sum_sq_div_moebius is 1 if k < 2 and 0 otherwise.

PrimeNumberTheoremAnd.IEANTN.MobiusLemma · PrimeNumberTheoremAnd/IEANTN/MobiusLemma.lean:121

lemma

MobiusLemma.sum_sq_div_moebius_eq_squarefree

The function sum_sq_div_moebius is equal to the indicator function of squarefree numbers.

PrimeNumberTheoremAnd.IEANTN.MobiusLemma · PrimeNumberTheoremAnd/IEANTN/MobiusLemma.lean:132

theorem

MobiusLemma.mobius_lemma_1_sub

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.MobiusLemma · PrimeNumberTheoremAnd/IEANTN/MobiusLemma.lean:159

theorem

MobiusLemma.sum_moebius_div_sq

The sum ∑' n, μ(n) / n² = 1 / ζ(2).

PrimeNumberTheoremAnd.IEANTN.MobiusLemma · PrimeNumberTheoremAnd/IEANTN/MobiusLemma.lean:242

theorem

MobiusLemma.integral_M_sqrt_div

The integral ∫ u in 0..x, M(√(x/u)) = x · ∑' n, μ(n)/n².

PrimeNumberTheoremAnd.IEANTN.MobiusLemma · PrimeNumberTheoremAnd/IEANTN/MobiusLemma.lean:265

theorem

MobiusLemma.mobius_lemma_2_sub_1

Since our sums start from 11, the sum kK\sum_{k\leq K} is empty for K=0K=0.

PrimeNumberTheoremAnd.IEANTN.MobiusLemma · PrimeNumberTheoremAnd/IEANTN/MobiusLemma.lean:401

theorem

MobiusLemma.mobius_lemma_2_sub_2

Open the record for the exact Lean statement and complete source.

PrimeNumberTheoremAnd.IEANTN.MobiusLemma · PrimeNumberTheoremAnd/IEANTN/MobiusLemma.lean:428

Static source extraction only. Package code was not executed. Every result keeps its complete declaration, exact file and line range, commit, toolchain, license file, and content hash.