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

Complex.Hadamard.cartan_card_small_le

PrimeNumberTheoremAnd.Mathlib.Analysis.Complex.CartanMajorantBound · PrimeNumberTheoremAnd/Mathlib/Analysis/Complex/CartanMajorantBound.lean:294 to 352

Mathematical statement

Exact Lean statement

lemma cartan_card_small_le
    {f : ℂ → ℂ} {τ R : ℝ} (hRpos : 0 < R) (hτ_nonneg : 0 ≤ τ)
    (small : Finset (divisorZeroIndex₀ f (Set.univ : Set ℂ)))
    (hsmall : ∀ p ∈ small, ‖divisorZeroIndex₀_val p‖ ≤ 4 * R)
    (hsumτ :
      Summable
        (fun p : divisorZeroIndex₀ f (Set.univ : Set ℂ) =>
          ‖divisorZeroIndex₀_val p‖⁻¹ ^ τ)) :
    (small.card : ℝ)
      ≤ (4 * R) ^ τ
          * ((∑' p : divisorZeroIndex₀ f (Set.univ : Set ℂ),
                ‖divisorZeroIndex₀_val p‖⁻¹ ^ τ) + 1)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma cartan_card_small_le    {f : ℂ  ℂ} {τ R : } (hRpos : 0 < R) (hτ_nonneg : 0  τ)    (small : Finset (divisorZeroIndex₀ f (Set.univ : Set ℂ)))    (hsmall :  p  small, ‖divisorZeroIndex₀_val p‖  4 * R)    (hsumτ :      Summable        (fun p : divisorZeroIndex₀ f (Set.univ : Set ℂ) =>          ‖divisorZeroIndex₀_val p‖⁻¹ ^ τ)) :    (small.card : )       (4 * R) ^ τ          * ((∑' p : divisorZeroIndex₀ f (Set.univ : Set ℂ),                ‖divisorZeroIndex₀_val p‖⁻¹ ^ τ) + 1) := by  classical  set Sτ :  :=    ∑' p : divisorZeroIndex₀ f (Set.univ : Set ℂ), ‖divisorZeroIndex₀_val p‖⁻¹ ^ τ  have hsum_le : (∑ p  small, ‖divisorZeroIndex₀_val p‖⁻¹ ^ τ) := by    have hnn :         p : divisorZeroIndex₀ f (Set.univ : Set ℂ),          0  ‖divisorZeroIndex₀_val p‖⁻¹ ^ τ := by      intro p      exact Real.rpow_nonneg (inv_nonneg.2 (norm_nonneg _)) _    simpa [Sτ] using      (Summable.sum_le_tsum (s := small)        (f := fun p : divisorZeroIndex₀ f (Set.univ : Set ℂ) =>          ‖divisorZeroIndex₀_val p‖⁻¹ ^ τ)        (fun p _ => hnn p) hsumτ)  have hgeom_sum :      (small.card : )  ∑ p  small, (4 * R) ^ τ * ‖divisorZeroIndex₀_val p‖⁻¹ ^ τ := by    have hcard_eq : (small.card : ) = ∑ p  small, (1 : ) := by simp    rw [hcard_eq]    refine Finset.sum_le_sum (fun p hp => ?_)    have hp_le : ‖divisorZeroIndex₀_val p‖  4 * R := hsmall p hp    have hap : 0 < ‖divisorZeroIndex₀_val p‖ :=      norm_pos_iff.2 (divisorZeroIndex₀_val_ne_zero p)    have hbase : (1 : )  (4 * R) / ‖divisorZeroIndex₀_val p‖ := by      exact (le_div_iff₀ hap).2 (by simpa [mul_one] using hp_le)    have : (1 : )  ((4 * R) / ‖divisorZeroIndex₀_val p‖) ^ τ :=      Real.one_le_rpow hbase hτ_nonneg    have hdiv :        ((4 * R) / ‖divisorZeroIndex₀_val p‖) ^ τ =          (4 * R) ^ τ * (‖divisorZeroIndex₀_val p‖)⁻¹ ^ τ := by      have h4 : 0  (4 * R : ) := by nlinarith [le_of_lt hRpos]      have ha : 0  (‖divisorZeroIndex₀_val p‖ : )⁻¹ := by positivity      simpa [div_eq_mul_inv, mul_assoc, mul_left_comm, mul_comm] using        (Real.mul_rpow (x := (4 * R : ))          (y := (‖divisorZeroIndex₀_val p‖ : )⁻¹) (z := τ) h4 ha)    have : (1 : )  (4 * R) ^ τ * ‖divisorZeroIndex₀_val p‖⁻¹ ^ τ := by      simpa [hdiv] using this    exact this  have hgeom :      (small.card : )  (4 * R) ^ τ * (∑ p  small, ‖divisorZeroIndex₀_val p‖⁻¹ ^ τ) := by    simpa [Finset.mul_sum] using hgeom_sum  have hsmall_le : (small.card : )  (4 * R) ^ τ *:= by    exact hgeom.trans (mul_le_mul_of_nonneg_left hsum_le (by positivity))  have hS_le : (4 * R) ^ τ * (4 * R) ^ τ * (Sτ + 1) := by    refine mul_le_mul_of_nonneg_left ?_ (by positivity)    linarith  have : (small.card : )  (4 * R) ^ τ * (Sτ + 1) := hsmall_le.trans hS_le  simpa [Sτ, add_comm, add_left_comm, add_assoc, mul_assoc] using this