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

Complex.Hadamard.analyticAt_update_limUnder_divisorCanonicalProduct_div_pow

PrimeNumberTheoremAnd.Mathlib.Analysis.Complex.DivisorQuotientRemovable · PrimeNumberTheoremAnd/Mathlib/Analysis/Complex/DivisorQuotientRemovable.lean:116 to 149

Mathematical statement

Exact Lean statement

theorem analyticAt_update_limUnder_divisorCanonicalProduct_div_pow
    (m : ℕ) (f : ℂ → ℂ)
    (h_sum : Summable (fun p : divisorZeroIndex₀ f (Set.univ : Set ℂ) =>
      ‖divisorZeroIndex₀_val p‖⁻¹ ^ (m + 1)))
    (z₀ : ℂ) : AnalyticAt ℂ (Function.update (fun z : ℂ =>
          (divisorCanonicalProduct m f (Set.univ : Set ℂ) z) /
        (z - z₀) ^ (divisorZeroIndex₀_fiberFinset (f := f) z₀).card) z₀
        (limUnder (𝓝[≠] z₀) (fun z : ℂ => (divisorCanonicalProduct m f (Set.univ : Set ℂ) z) /
              (z - z₀) ^ (divisorZeroIndex₀_fiberFinset (f := f) z₀).card)))
      z₀

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
theorem analyticAt_update_limUnder_divisorCanonicalProduct_div_pow    (m : ) (f : ℂ  ℂ)    (h_sum : Summable (fun p : divisorZeroIndex₀ f (Set.univ : Set ℂ) =>      ‖divisorZeroIndex₀_val p‖⁻¹ ^ (m + 1)))    (z₀ : ℂ) : AnalyticAt ℂ (Function.update (fun z : ℂ =>          (divisorCanonicalProduct m f (Set.univ : Set ℂ) z) /        (z - z₀) ^ (divisorZeroIndex₀_fiberFinset (f := f) z₀).card) z₀        (limUnder (𝓝[] z₀) (fun z : ℂ => (divisorCanonicalProduct m f (Set.univ : Set ℂ) z) /              (z - z₀) ^ (divisorZeroIndex₀_fiberFinset (f := f) z₀).card)))      z₀ := by  rcases      differentiableOn_update_limUnder_divisorCanonicalProduct_div_pow        (m := m) (f := f) h_sum (z₀ := z₀) with r, hrpos, hdiff  let g : ℂ :=    Function.update      (fun z : ℂ =>        (divisorCanonicalProduct m f (Set.univ : Set ℂ) z) /          (z - z₀) ^ (divisorZeroIndex₀_fiberFinset (f := f) z₀).card)      z₀      (limUnder (𝓝[] z₀) fun z : ℂ =>        (divisorCanonicalProduct m f (Set.univ : Set ℂ) z) /          (z - z₀) ^ (divisorZeroIndex₀_fiberFinset (f := f) z₀).card)  have hcont : ContinuousAt g z₀ :=    (hdiff.differentiableAt (Metric.ball_mem_nhds z₀ hrpos)).continuousAt  have hd :      ᶠ z in 𝓝[] z₀, DifferentiableAt ℂ g z := by    have hballWithin : Metric.ball z₀ r  𝓝[] z₀ := by      refine mem_nhdsWithin_iff_exists_mem_nhds_inter.2 ?_      refine Metric.ball z₀ r, Metric.ball_mem_nhds z₀ hrpos, ?_      intro z hz      exact hz.1    filter_upwards [hballWithin] with z hz    exact (hdiff z hz).differentiableAt (Metric.isOpen_ball.mem_nhds hz)  simpa [g] using Complex.analyticAt_of_differentiable_on_punctured_nhds_of_continuousAt hd hcont