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

Real.dyadic_growth_mass_mul_inv_le_geometric

PrimeNumberTheoremAnd.Mathlib.Analysis.SpecialFunctions.Log.Dyadic · PrimeNumberTheoremAnd/Mathlib/Analysis/SpecialFunctions/Log/Dyadic.lean:264 to 307

Mathematical statement

Exact Lean statement

lemma dyadic_growth_mass_mul_inv_le_geometric {C L M X T Ctrail r0 ρ τ : ℝ} {k : ℕ}
    (hL : 0 < L) (hC : 0 ≤ C) (hr0 : 0 ≤ r0)
    (hX : X ≤ M * ((2 : ℝ) ^ ρ) ^ k)
    (hT : T ≤ ((C * X + Ctrail) / L) * ((r0 * (2 : ℝ) ^ (k : ℝ))⁻¹ ^ τ)) :
    T ≤ (((C / L) * M) * (r0⁻¹ : ℝ) ^ τ) * ((2 : ℝ) ^ (ρ - τ)) ^ k
        + (((Ctrail / L) + 1) * (r0⁻¹ : ℝ) ^ τ) * ((2 : ℝ) ^ (-τ)) ^ k

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma dyadic_growth_mass_mul_inv_le_geometric {C L M X T Ctrail r0 ρ τ : } {k : }    (hL : 0 < L) (hC : 0  C) (hr0 : 0  r0)    (hX : X  M * ((2 : ) ^ ρ) ^ k)    (hT : T  ((C * X + Ctrail) / L) * ((r0 * (2 : ) ^ (k : ))⁻¹ ^ τ)) :    T  (((C / L) * M) * (r0⁻¹ : ) ^ τ) * ((2 : ) ^- τ)) ^ k        + (((Ctrail / L) + 1) * (r0⁻¹ : ) ^ τ) * ((2 : ) ^ (-τ)) ^ k := by  have hmul : C * X  C * (M * ((2 : ) ^ ρ) ^ k) :=    mul_le_mul_of_nonneg_left hX hC  have hnum : C * X + Ctrail  C * (M * ((2 : ) ^ ρ) ^ k) + Ctrail :=    add_le_add hmul le_rfl  have hdiv :      (C * X + Ctrail) / L  (C * (M * ((2 : ) ^ ρ) ^ k) + Ctrail) / L :=    div_le_div_of_nonneg_right hnum hL.le  have h2k_nonneg : 0  (2 : ) ^ (k : ) :=    le_of_lt (Real.rpow_pos_of_pos (by norm_num : (0 : ) < 2) (k : ))  have hrk_nonneg : 0  r0 * (2 : ) ^ (k : ) :=    mul_nonneg hr0 h2k_nonneg  have hfactor_nonneg : 0  ((r0 * (2 : ) ^ (k : ))⁻¹ ^ τ) :=    Real.rpow_nonneg (inv_nonneg.2 hrk_nonneg) τ  have hmul' :=    mul_le_mul_of_nonneg_right hdiv hfactor_nonneg  have hdecomp :      ((C * (M * ((2 : ) ^ ρ) ^ k) + Ctrail) / L) *          ((r0 * (2 : ) ^ (k : ))⁻¹ ^ τ)        =        ((C / L) * (M * ((2 : ) ^ ρ) ^ k)) *            ((r0 * (2 : ) ^ (k : ))⁻¹ ^ τ)          + ((Ctrail / L) * ((r0 * (2 : ) ^ (k : ))⁻¹ ^ τ)) := by    let Y :  := (r0 * (2 : ) ^ (k : ))⁻¹ ^ τ    have :        ((C * (M * ((2 : ) ^ ρ) ^ k) + Ctrail) / L) * Y          = ((C / L) * (M * ((2 : ) ^ ρ) ^ k)) * Y            + ((Ctrail / L) * Y) := by      ring    simpa [Y]  have hpre :      T  ((C / L) * (M * ((2 : ) ^ ρ) ^ k)) *            ((r0 * (2 : ) ^ (k : ))⁻¹ ^ τ)          + ((Ctrail / L) * ((r0 * (2 : ) ^ (k : ))⁻¹ ^ τ)) :=    hT.trans (hmul'.trans_eq hdecomp)  have hA := le_of_eq (dyadic_growth_inv_term_eq C L M r0 ρ τ k hr0)  have hB := dyadic_trailing_inv_term_le Ctrail L r0 τ k hr0  exact hpre.trans (by    simpa [mul_assoc, mul_left_comm, mul_comm] using add_le_add hA hB)