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

integrable_exp_neg_mul_sin_prod_Ioi

PrimeNumberTheoremAnd.LaplaceInversion · PrimeNumberTheoremAnd/LaplaceInversion.lean:1964 to 2029

Source documentation

Product-integrability of the damped sine kernel on (0,∞) × (a,∞). The proof integrates the u-tail first and bounds the inner norm by exp (-a*x) using |sin x| ≤ x for x > 0.

Exact Lean statement

theorem integrable_exp_neg_mul_sin_prod_Ioi (a : ℝ) (ha : 0 < a) :
    Integrable
      (Function.uncurry
        (fun x u : ℝ => Real.exp (-u * x) * Real.sin x))
      ((volume.restrict (Set.Ioi 0)).prod (volume.restrict (Set.Ioi a)))

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
theorem integrable_exp_neg_mul_sin_prod_Ioi (a : ) (ha : 0 < a) :    Integrable      (Function.uncurry        (fun x u :  => Real.exp (-u * x) * Real.sin x))      ((volume.restrict (Set.Ioi 0)).prod (volume.restrict (Set.Ioi a))) := by  let μ := volume.restrict (Set.Ioi (0 : ))  let ν := volume.restrict (Set.Ioi a)  change Integrable      (Function.uncurry        (fun x u :  => Real.exp (-u * x) * Real.sin x)) (μ.prod ν)  have hsm : AEStronglyMeasurable      (Function.uncurry        (fun x u :  => Real.exp (-u * x) * Real.sin x)) (μ.prod ν) := by    exact (by fun_prop : AEStronglyMeasurable      (Function.uncurry        (fun x u :  => Real.exp (-u * x) * Real.sin x)) (μ.prod ν))  rw [integrable_prod_iff hsm]  constructor  · dsimp [μ]    filter_upwards [ae_restrict_mem measurableSet_Ioi] with x hx    change Integrable (fun u :  => Real.exp (-u * x) * Real.sin x) ν    have h_exp : Integrable (fun u :  => Real.exp (-u * x)) ν := by      dsimp [ν]      change IntegrableOn (fun u :  => Real.exp (-u * x)) (Set.Ioi a)      simpa [mul_comm] using integrableOn_exp_mul_Ioi (a := -x) (neg_lt_zero.mpr hx) a    exact h_exp.mul_const (Real.sin x)  · have h_exp_a : Integrable (fun x :  => Real.exp (-a * x)) μ := by      dsimp [μ]      change IntegrableOn (fun x :  => Real.exp (-a * x)) (Set.Ioi 0)      simpa [mul_comm] using exp_neg_integrableOn_Ioi (0 : ) (b := a) ha    refine h_exp_a.mono ?_ ?_    · exact hsm.norm.integral_prod_right'    · filter_upwards [ae_restrict_mem measurableSet_Ioi] with x hx      have hx0 : 0 < x := hx      have h_exp_x : Integrable (fun y :  => Real.exp (-y * x)) ν := by        dsimp [ν]        change IntegrableOn (fun y :  => Real.exp (-y * x)) (Set.Ioi a)        simpa [mul_comm] using integrableOn_exp_mul_Ioi (a := -x) (neg_lt_zero.mpr hx0) a      have h_lhs : Integrable          (fun y :  =>Function.uncurry            (fun x u :  => Real.exp (-u * x) * Real.sin x) (x, y)‖) ν := by        simpa [Function.uncurry] using (h_exp_x.mul_const (Real.sin x)).norm      have h_rhs : Integrable (fun y :  => Real.exp (-y * x) * x) ν :=        h_exp_x.mul_const x      calc        ‖∫ y : , ‖Function.uncurry            (fun x u :  => Real.exp (-u * x) * Real.sin x) (x, y)‖ ∂ν‖            = ∫ y : , ‖Function.uncurry                (fun x u :  => Real.exp (-u * x) * Real.sin x) (x, y)‖ ∂ν := by              rw [Real.norm_eq_abs, abs_of_nonneg]              exact integral_nonneg fun y => norm_nonneg _        _  ∫ y : , Real.exp (-y * x) * x ∂ν := by              refine integral_mono_ae h_lhs h_rhs ?_              filter_upwards with y              rw [Function.uncurry, Real.norm_eq_abs, abs_mul,                abs_of_pos (Real.exp_pos _)]              exact mul_le_mul_of_nonneg_left                (by simpa [abs_of_pos hx0] using (Real.abs_sin_le_abs (x := x)))                (Real.exp_pos _).le        _ = Real.exp (-a * x) := by              dsimp [ν]              rw [integral_mul_const]              rw [integral_Ioi_exp_neg_mul_const a x hx0]              field_simp [hx0.ne']        _ =Real.exp (-a * x)‖ := by              rw [Real.norm_eq_abs, abs_of_pos (Real.exp_pos _)]