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

Kadiri.kadiri_laplace_full_strip_exp_interval_moment_integrable_of_continuous

PrimeNumberTheoremAnd.IEANTN.KadiriEq12Foundations · PrimeNumberTheoremAnd/IEANTN/KadiriEq12Foundations.lean:129 to 339

Mathematical statement

Exact Lean statement

theorem kadiri_laplace_full_strip_exp_interval_moment_integrable_of_continuous
    {ψ : ℝ → ℂ} (hψ : Continuous ψ) {b lo hi : ℝ}
    (hlo : -b < lo) (hhi : hi < 1 + b) (hlohi : lo ≤ hi)
    (hψ_decay : (fun x : ℝ ↦ ψ x * exp ((x : ℂ) / 2))
        =O[Filter.cocompact ℝ] fun x : ℝ ↦ Real.exp (-(1/2 + b) * |x|)) :
    Integrable (fun y : ℝ =>
      ‖(y : ℂ)‖ * ‖ψ y‖ * (Real.exp (lo * y) + Real.exp (hi * y)))

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
theorem kadiri_laplace_full_strip_exp_interval_moment_integrable_of_continuous    {ψ :   ℂ} (hψ : Continuous ψ) {b lo hi : }    (hlo : -b < lo) (hhi : hi < 1 + b) (hlohi : lo  hi)    (hψ_decay : (fun x :   ψ x * exp ((x : ℂ) / 2))        =O[Filter.cocompact ] fun x :   Real.exp (-(1/2 + b) * |x|)) :    Integrable (fun y :  =>      ‖(y : ℂ)‖ * ‖ψ y‖ * (Real.exp (lo * y) + Real.exp (hi * y))) := by  let F :    := fun y =>    ‖(y : ℂ)‖ * ‖ψ y‖ * (Real.exp (lo * y) + Real.exp (hi * 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 =        ‖(x : ℂ)‖ *          (Real.exp ((lo - 1 / 2) * x) + Real.exp ((hi - 1 / 2) * x)) *            ‖ψ x * exp ((x : ℂ) / 2)‖ := by    intro x    dsimp [F]    have hxre : ((x : ℂ) / 2).re = x / 2 := by norm_num    have hψexp : ‖ψ x * exp ((x : ℂ) / 2)‖ = ‖ψ x‖ * Real.exp (x / 2) := by      rw [norm_mul, Complex.norm_exp, hxre]    have hloexp :        Real.exp ((lo - 1 / 2) * x) * Real.exp (x / 2) = Real.exp (lo * x) := by      rw [ Real.exp_add]      ring_nf    have hhiexp :        Real.exp ((hi - 1 / 2) * x) * Real.exp (x / 2) = Real.exp (hi * x) := by      rw [ Real.exp_add]      ring_nf    rw [hψexp]    rw [ hloexp,  hhiexp]    ring  let topBound :    := fun x =>    x * Real.exp (-(1 + b - lo) * x) +      x * Real.exp (-(1 + b - hi) * x)  let botBound :    := fun x =>    (-x) * Real.exp ((b + lo) * x) +      (-x) * Real.exp ((b + hi) * x)  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] topBound := 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    have hxnorm : ‖(x : ℂ)‖ = x := by      rw [Complex.norm_real, Real.norm_eq_abs, abs_of_pos hxpos]    have hdecay :Real.exp (-(1 / 2 + b) * |x|)‖ = Real.exp (-(1 / 2 + b) * x) := by      rw [Real.norm_eq_abs, abs_of_pos (Real.exp_pos _), abs_of_pos hxpos]    rw [hshape, hxnorm]    rw [Real.norm_eq_abs, abs_of_nonneg      (by positivity :        0  x * (Real.exp ((lo - 1 / 2) * x) + Real.exp ((hi - 1 / 2) * x)) *          ‖ψ x * exp ((x : ℂ) / 2)‖)]    calc      x * (Real.exp ((lo - 1 / 2) * x) + Real.exp ((hi - 1 / 2) * x)) *          ‖ψ x * exp ((x : ℂ) / 2)‖           x * (Real.exp ((lo - 1 / 2) * x) + Real.exp ((hi - 1 / 2) * x)) *              (C *Real.exp (-(1 / 2 + b) * |x|)‖) := by            gcongr      _ = C * ‖topBound x‖ := by            rw [hdecay]            have hlo_prod :                Real.exp ((lo - 1 / 2) * x) * Real.exp (-(1 / 2 + b) * x) =                  Real.exp (-(1 + b - lo) * x) := by              rw [ Real.exp_add]              ring_nf            have hhi_prod :                Real.exp ((hi - 1 / 2) * x) * Real.exp (-(1 / 2 + b) * x) =                  Real.exp (-(1 + b - hi) * x) := by              rw [ Real.exp_add]              ring_nf            have htopNorm :                ‖topBound x‖ =                  x * Real.exp (-(1 + b - lo) * x) +                    x * Real.exp (-(1 + b - hi) * x) := by              dsimp [topBound]              rw [abs_of_nonneg]              · positivity            rw [htopNorm]            calc              x * (Real.exp ((lo - 1 / 2) * x) + Real.exp ((hi - 1 / 2) * x)) *                    (C * Real.exp (-(1 / 2 + b) * x))                  = C * (x * (Real.exp ((lo - 1 / 2) * x) *                        Real.exp (-(1 / 2 + b) * x)) +                      x * (Real.exp ((hi - 1 / 2) * x) *                        Real.exp (-(1 / 2 + b) * x))) := by ring              _ = C * (x * Real.exp (-(1 + b - lo) * x) +                    x * Real.exp (-(1 + b - hi) * x)) := by                    rw [hlo_prod, hhi_prod]  have hbot : F =O[Filter.atBot] botBound := 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    have hxnorm : ‖(x : ℂ)‖ = -x := by      rw [Complex.norm_real, Real.norm_eq_abs, abs_of_neg hxneg]    have hdecay :Real.exp (-(1 / 2 + b) * |x|)‖ =          Real.exp (-(1 / 2 + b) * (-x)) := by      rw [Real.norm_eq_abs, abs_of_pos (Real.exp_pos _), abs_of_neg hxneg]    have hxneg_nonneg : 0  -x := by linarith    have hsum_nonneg :        0  Real.exp ((lo - 1 / 2) * x) + Real.exp ((hi - 1 / 2) * x) :=      add_nonneg (Real.exp_nonneg _) (Real.exp_nonneg _)    have hpref_nonneg :        0  (-x) * (Real.exp ((lo - 1 / 2) * x) +          Real.exp ((hi - 1 / 2) * x)) :=      mul_nonneg hxneg_nonneg hsum_nonneg    rw [hshape, hxnorm]    rw [Real.norm_eq_abs, abs_of_nonneg      (mul_nonneg hpref_nonneg (norm_nonneg _))]    calc      (-x) * (Real.exp ((lo - 1 / 2) * x) + Real.exp ((hi - 1 / 2) * x)) *          ‖ψ x * exp ((x : ℂ) / 2)‖           (-x) * (Real.exp ((lo - 1 / 2) * x) + Real.exp ((hi - 1 / 2) * x)) *              (C *Real.exp (-(1 / 2 + b) * |x|)‖) := by            exact mul_le_mul_of_nonneg_left hxC hpref_nonneg      _ = C * ‖botBound x‖ := by            rw [hdecay]            have hlo_prod :                Real.exp ((lo - 1 / 2) * x) * Real.exp (-(1 / 2 + b) * (-x)) =                  Real.exp ((b + lo) * x) := by              rw [ Real.exp_add]              ring_nf            have hhi_prod :                Real.exp ((hi - 1 / 2) * x) * Real.exp (-(1 / 2 + b) * (-x)) =                  Real.exp ((b + hi) * x) := by              rw [ Real.exp_add]              ring_nf            have hbotNorm :                ‖botBound x‖ =                  (-x) * Real.exp ((b + lo) * x) +                    (-x) * Real.exp ((b + hi) * x) := by              dsimp [botBound]              rw [abs_of_nonneg]              · exact add_nonneg                  (mul_nonneg hxneg_nonneg (Real.exp_nonneg _))                  (mul_nonneg hxneg_nonneg (Real.exp_nonneg _))            rw [hbotNorm]            calc              (-x) * (Real.exp ((lo - 1 / 2) * x) + Real.exp ((hi - 1 / 2) * x)) *                    (C * Real.exp (-(1 / 2 + b) * (-x)))                  = C * ((-x) * (Real.exp ((lo - 1 / 2) * x) *                        Real.exp (-(1 / 2 + b) * (-x))) +                      (-x) * (Real.exp ((hi - 1 / 2) * x) *                        Real.exp (-(1 / 2 + b) * (-x)))) := by ring              _ = C * ((-x) * Real.exp ((b + lo) * x) +                    (-x) * Real.exp ((b + hi) * x)) := by                    rw [hlo_prod, hhi_prod]  have htop_int : IntegrableAtFilter topBound Filter.atTop volume := by    have h1 : IntegrableAtFilter        (fun x :  => x ^ (1 : ) * Real.exp (-(1 + b - lo) * x))        Filter.atTop volume := by      refine Set.Ioi 0, Filter.Ioi_mem_atTop 0, ?_      simpa [Real.rpow_one] using        integrableOn_rpow_mul_exp_neg_mul_rpow          (s := 1) (p := 1) (b := 1 + b - lo) (by norm_num) (by norm_num)          (by linarith)    have h2 : IntegrableAtFilter        (fun x :  => x ^ (1 : ) * Real.exp (-(1 + b - hi) * x))        Filter.atTop volume := by      refine Set.Ioi 0, Filter.Ioi_mem_atTop 0, ?_      simpa [Real.rpow_one] using        integrableOn_rpow_mul_exp_neg_mul_rpow          (s := 1) (p := 1) (b := 1 + b - hi) (by norm_num) (by norm_num)          (by linarith)    have hfun : topBound = fun x :  =>        x ^ (1 : ) * Real.exp (-(1 + b - lo) * x) +          x ^ (1 : ) * Real.exp (-(1 + b - hi) * x) := by      funext x      simp [topBound, Real.rpow_one, mul_comm]    rw [hfun]    exact h1.add h2  have hbot_int : IntegrableAtFilter botBound Filter.atBot volume := by    rw [ Filter.map_neg_atTop, measurableEmbedding_neg.integrableAtFilter_iff_comap]    have hvol : (volume : Measure ).comap Neg.neg = volume := by      have he : ((MeasurableEquiv.neg ).symm :   ) = Neg.neg := rfl      rw [ he, (MeasurableEquiv.neg ).comap_symm]      simp    rw [hvol, Function.comp_def]    have h1 : IntegrableAtFilter        (fun x :  => x ^ (1 : ) * Real.exp (-(b + lo) * x))        Filter.atTop volume := by      refine Set.Ioi 0, Filter.Ioi_mem_atTop 0, ?_      simpa [Real.rpow_one] using        integrableOn_rpow_mul_exp_neg_mul_rpow          (s := 1) (p := 1) (b := b + lo) (by norm_num) (by norm_num)          (by linarith)    have h2 : IntegrableAtFilter        (fun x :  => x ^ (1 : ) * Real.exp (-(b + hi) * x))        Filter.atTop volume := by      refine Set.Ioi 0, Filter.Ioi_mem_atTop 0, ?_      simpa [Real.rpow_one] using        integrableOn_rpow_mul_exp_neg_mul_rpow          (s := 1) (p := 1) (b := b + hi) (by norm_num) (by norm_num)          (by linarith)    have hfun : (fun x :  => botBound (-x)) = fun x :  =>        x ^ (1 : ) * Real.exp (-(b + lo) * x) +          x ^ (1 : ) * Real.exp (-(b + hi) * x) := by      funext x      simp [botBound, Real.rpow_one, mul_comm]      ring_nf    rw [hfun]    exact h1.add h2  exact hF_loc.integrable_of_isBigO_atBot_atTop hbot hbot_int htop htop_int