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

M_log_identity

PrimeNumberTheoremAnd.Consequences · PrimeNumberTheoremAnd/Consequences.lean:1693 to 1719

Mathematical statement

Exact Lean statement

lemma M_log_identity (x : ℝ) (hx : 1 ≤ x) : M x * log x = ∑ k ∈ Iic ⌊x⌋₊, (μ k : ℝ) * (log (x/k) - Psi (x/k))

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma M_log_identity (x : ) (hx : 1  x) : M x * log x = ∑ k  Iic ⌊x⌋₊, (μ k : ) * (log (x/k) - Psi (x/k)) := by  have h_log_identity : ∑ k  Iic ⌊x⌋₊, (μ k : ) * Real.log (x / k) = (∑ k  Iic ⌊x⌋₊, (μ k : )) * Real.log x - ∑ k  Iic ⌊x⌋₊, (μ k : ) * Real.log k := by    rw [Finset.sum_mul _ _ _]    rw [ Finset.sum_sub_distrib] ; refine Finset.sum_congr rfl fun i hi => ?_ ; by_cases hi' : i = 0 <;> simp +decide [*, Real.log_div, ne_of_gt (zero_lt_one.trans_le hx)] ; ring  generalize_proofs at *  have h_log_identity' : ∑ k  Iic ⌊x⌋₊, (μ k : ) * Real.log k = -∑ k  Iic ⌊x⌋₊, (μ k : ) * Psi (x / k) := by    convert sum_mu_Lambda x using 1  have h_psi_identity :      (∑ k  Iic ⌊x⌋₊, (μ k : ) * Psi (x / k)) =        -∑ k  Iic ⌊x⌋₊, (μ k : ) * Real.log k := by    simpa [neg_neg] using (congrArg Neg.neg h_log_identity').symm  unfold M  symm  calc    (∑ k  Iic ⌊x⌋₊, (μ k : ) * (Real.log (x / k) - Psi (x / k))) =        (∑ k  Iic ⌊x⌋₊, (μ k : ) * Real.log (x / k)) -          ∑ k  Iic ⌊x⌋₊, (μ k : ) * Psi (x / k) := by          simp [mul_sub, Finset.sum_sub_distrib]    _ = ((∑ k  Iic ⌊x⌋₊, (μ k : )) * Real.log x -          ∑ k  Iic ⌊x⌋₊, (μ k : ) * Real.log k) -          ∑ k  Iic ⌊x⌋₊, (μ k : ) * Psi (x / k) := by          simp [h_log_identity]    _ = ((∑ k  Iic ⌊x⌋₊, (μ k : )) * Real.log x -          ∑ k  Iic ⌊x⌋₊, (μ k : ) * Real.log k) -          (-∑ k  Iic ⌊x⌋₊, (μ k : ) * Real.log k) := by          simp [h_psi_identity]    _ = (∑ k  Iic ⌊x⌋₊, (μ k : )) * Real.log x := by ring