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

ZetaAbelFractKernel.integral_analytic

PrimeNumberTheoremAnd.Mathlib.NumberTheory.LSeries.RiemannZetaAbelKernel · PrimeNumberTheoremAnd/Mathlib/NumberTheory/LSeries/RiemannZetaAbelKernel.lean:182 to 212

Source documentation

∫_{(1,∞)} K_z is analytic in z for re z > 0.

Exact Lean statement

theorem integral_analytic (s : ℂ) (hs : 0 < s.re) :
    AnalyticAt ℂ (fun z => ∫ u in Ioi (1 : ℝ), zetaAbelFractKernel z u) s

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
theorem integral_analytic (s : ℂ) (hs : 0 < s.re) :    AnalyticAt ℂ (fun z => ∫ u in Ioi (1 : ), zetaAbelFractKernel z u) s := by  set ε :  := s.re / 2  have hεpos : 0 < ε := half_pos hs  obtain δ, hδpos, hδprop :=    Complex.exists_pos_radius_forall_mem_ball_re_ge (z₀ := s) (a := ε) (half_lt_self hs)  set F : ℂ   := zetaAbelFractKernel  set F' : ℂ   := fun z u => -((Real.log u) : ℂ) * F z u  set bound :    := fun u => (2 / ε) * u ^ (-1 - ε / 2)  have hbound_int : Integrable bound (volume.restrict (Ioi (1 : ))) := by    simpa [bound, IntegrableOn] using      (integrableOn_Ioi_rpow_of_lt (by linarith [half_pos hεpos]) one_pos).const_mul (2 / ε)  have hDiff : ᶠ z in 𝓝 s, DifferentiableAt ℂ (fun z0 => ∫ u in Ioi (1 : ), F z0 u) z := by    refine Filter.eventually_of_mem (Metric.ball_mem_nhds s (half_pos hδpos)) ?_    intro z hz    set δ' :  := δ / 2    have hz_lt : dist z s < δ := dist_lt_of_mem_ball_half hz hδpos    have hRe :  y  Metric.ball z δ', ε  y.re := fun y hy =>      hδprop z y hz_lt (dist_lt_of_mem_ball_half hy hδpos)    have hzRe : ε  z.re := hδprop s z (by simpa [dist_self] using hδpos) hz_lt    exact (hasDerivAt_integral_param_dominated_Ioi F F' z δ' (half_pos hδpos)      (eventually_aestronglyMeasurable_param z)      (by simpa using integrableOn_Ioi z (lt_of_lt_of_le hεpos hzRe))      (by simpa [F, F'] using aestronglyMeasurable_param_deriv z)      bound hbound_int      (ae_on_Ioi_of_all fun u hu w hw =>        (kernel_deriv_norm_bound_on_ball ε u hu w (hRe w hw)).trans          (by simpa [bound] using Real.log_mul_rpow_neg_le_two_div_mul_rpow_neg hεpos hu))      (ae_on_Ioi_of_all fun u hu w hw => by simpa [F, F'] using hasDerivAt_in_param u hu w)).differentiableAt  exact (Complex.analyticAt_iff_eventually_differentiableAt    (f := fun z => ∫ u in Ioi (1 : ), zetaAbelFractKernel z u)).2 hDiff