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

Kadiri.kadiri_laplace_positive_line_weight_integrable_of_continuous

PrimeNumberTheoremAnd.IEANTN.KadiriEq13 · PrimeNumberTheoremAnd/IEANTN/KadiriEq13.lean:38 to 126

Mathematical statement

Exact Lean statement

lemma kadiri_laplace_positive_line_weight_integrable_of_continuous {ψ : ℝ → ℂ}
    (hψ : Continuous ψ) {b : ℝ}
    (hψ_decay : (fun x : ℝ ↦ ψ x * exp ((x : ℂ) / 2))
        =O[Filter.cocompact ℝ] fun x : ℝ ↦ Real.exp (-(1/2 + b) * |x|))
    {a : ℝ} (ha : 0 < a) (hab : a < b) :
    Integrable (fun y : ℝ => exp (-((a : ℂ) * (y : ℂ))) * ψ y)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma kadiri_laplace_positive_line_weight_integrable_of_continuous {ψ :   ℂ}    (hψ : Continuous ψ) {b : }    (hψ_decay : (fun x :   ψ x * exp ((x : ℂ) / 2))        =O[Filter.cocompact ] fun x :   Real.exp (-(1/2 + b) * |x|))    {a : } (ha : 0 < a) (hab : a < b) :    Integrable (fun y :  => exp (-((a : ℂ) * (y : ℂ))) * ψ y) := by  let F :  := fun y => exp (-((a : ℂ) * (y : ℂ))) * ψ y  have hF_cont : Continuous F := by    dsimp [F]    fun_prop  have hF_loc : LocallyIntegrable F volume := hF_cont.locallyIntegrable  have hshape :  x : ,      ‖F x‖ = Real.exp (-(a + 1 / 2) * x) * ‖ψ x * exp ((x : ℂ) / 2)‖ := by    intro x    dsimp [F]    rw [norm_mul, norm_mul, Complex.norm_exp, Complex.norm_exp]    have h1 : (-(↑a * ↑x) : ℂ).re = -a * x := by      norm_num [Complex.mul_re]    have h2 : ((x : ℂ) / 2).re = x / 2 := by      norm_num    rw [h1, h2]    calc      Real.exp (-a * x) * ‖ψ x‖          = (Real.exp (-(a + 1 / 2) * x) * Real.exp (x / 2)) * ‖ψ x‖ := by            rw [ Real.exp_add]            congr 1            ring_nf      _ = Real.exp (-(a + 1 / 2) * x) * (‖ψ x‖ * Real.exp (x / 2)) := by ring_nf  have htop_decay := hψ_decay.mono (show Filter.atTop  Filter.cocompact  from    atTop_le_cocompact)  have hbot_decay := hψ_decay.mono (show Filter.atBot  Filter.cocompact  from    atBot_le_cocompact)  have htop : F =O[Filter.atTop] fun x :  => Real.exp (-(a + b + 1) * x) := by    rw [Asymptotics.isBigO_iff] at htop_decay     obtain C, hC := htop_decay    refine C, ?_    filter_upwards [hC, Filter.eventually_gt_atTop (0 : )] with x hxC hxpos    rw [hshape]    calc      Real.exp (-(a + 1 / 2) * x) * ‖ψ x * exp ((x : ℂ) / 2)‖           Real.exp (-(a + 1 / 2) * x) *              (C *Real.exp (-(1 / 2 + b) * |x|)‖) := by            exact mul_le_mul_of_nonneg_left hxC (Real.exp_nonneg _)      _ = C *Real.exp (-(a + b + 1) * x)‖ := by            rw [Real.norm_eq_abs, Real.norm_eq_abs, abs_of_pos (Real.exp_pos _),              abs_of_pos (Real.exp_pos _), abs_of_pos hxpos]            calc              Real.exp (-(a + 1 / 2) * x) * (C * Real.exp (-(1 / 2 + b) * x))                  = C * (Real.exp (-(a + 1 / 2) * x) *                      Real.exp (-(1 / 2 + b) * x)) := by ring_nf              _ = C * Real.exp (-(a + 1 / 2) * x + (-(1 / 2 + b) * x)) := by                    rw [Real.exp_add]              _ = C * Real.exp (-(a + b + 1) * x) := by ring_nf  have hbot : F =O[Filter.atBot] fun x :  => Real.exp ((b - a) * x) := by    rw [Asymptotics.isBigO_iff] at hbot_decay     obtain C, hC := hbot_decay    refine C, ?_    filter_upwards [hC, Filter.eventually_lt_atBot (0 : )] with x hxC hxneg    rw [hshape]    calc      Real.exp (-(a + 1 / 2) * x) * ‖ψ x * exp ((x : ℂ) / 2)‖           Real.exp (-(a + 1 / 2) * x) *              (C *Real.exp (-(1 / 2 + b) * |x|)‖) := by            exact mul_le_mul_of_nonneg_left hxC (Real.exp_nonneg _)      _ = C *Real.exp ((b - a) * x)‖ := by            rw [Real.norm_eq_abs, Real.norm_eq_abs, abs_of_pos (Real.exp_pos _),              abs_of_pos (Real.exp_pos _), abs_of_neg hxneg]            calc              Real.exp (-(a + 1 / 2) * x) * (C * Real.exp (-(1 / 2 + b) * -x))                  = C * (Real.exp (-(a + 1 / 2) * x) *                      Real.exp (-(1 / 2 + b) * -x)) := by ring_nf              _ = C * Real.exp (-(a + 1 / 2) * x + (-(1 / 2 + b) * -x)) := by                    rw [Real.exp_add]              _ = C * Real.exp ((b - a) * x) := by ring_nf  have htop_int : IntegrableAtFilter (fun x :  => Real.exp (-(a + b + 1) * x))      Filter.atTop volume := by    refine Set.Ioi 0, Filter.Ioi_mem_atTop 0, ?_    exact exp_neg_integrableOn_Ioi 0 (show 0 < a + b + 1 by linarith)  have hbot_int : IntegrableAtFilter (fun x :  => Real.exp ((b - a) * x))      Filter.atBot volume := by    rw [ Filter.map_neg_atTop, measurableEmbedding_neg.integrableAtFilter_iff_comap]    have hvol : (volume : Measure ).comap Neg.neg = volume := by      convert! (MeasurableEquiv.neg ).map_symm.symm using 1; simp    rw [hvol, Function.comp_def]    refine Set.Ioi 0, Filter.Ioi_mem_atTop 0, ?_    convert exp_neg_integrableOn_Ioi 0 (sub_pos.mpr hab) using 1    ext x    ring_nf  exact hF_loc.integrable_of_isBigO_atBot_atTop hbot hbot_int htop htop_int