214 have int: "set_integrable lborel {0<..} (\<lambda>x. exp (- x) * (x + 1) :: real)" |
214 have int: "set_integrable lborel {0<..} (\<lambda>x. exp (- x) * (x + 1) :: real)" |
215 unfolding distrib_left |
215 unfolding distrib_left |
216 using has_bochner_integral_I0i_power_exp_m[of 0] has_bochner_integral_I0i_power_exp_m[of 1] |
216 using has_bochner_integral_I0i_power_exp_m[of 0] has_bochner_integral_I0i_power_exp_m[of 1] |
217 by (intro set_integral_add) (auto dest!: integrable.intros simp: ac_simps set_integrable_def) |
217 by (intro set_integral_add) (auto dest!: integrable.intros simp: ac_simps set_integrable_def) |
218 |
218 |
219 have "((\<lambda>t::real. LBINT x:{0<..}. ?F x t) \<longlongrightarrow> LBINT x::real:{0<..}. 0) at_top" |
219 have "((\<lambda>t::real. LBINT x:{0<..}. ?F x t) \<longlongrightarrow> (LBINT x::real:{0<..}. 0)) at_top" |
220 unfolding set_lebesgue_integral_def |
220 unfolding set_lebesgue_integral_def |
221 proof (rule integral_dominated_convergence_at_top[OF _ _ int [unfolded set_integrable_def]], |
221 proof (rule integral_dominated_convergence_at_top[OF _ _ int [unfolded set_integrable_def]], |
222 simp_all del: abs_divide split: split_indicator) |
222 simp_all del: abs_divide split: split_indicator) |
223 have *: "0 < x \<Longrightarrow> \<bar>x * sin t + cos t\<bar> / (1 + x\<^sup>2) \<le> (x * 1 + 1) / 1" for x t :: real |
223 have *: "0 < x \<Longrightarrow> \<bar>x * sin t + cos t\<bar> / (1 + x\<^sup>2) \<le> (x * 1 + 1) / 1" for x t :: real |
224 by (intro frac_le abs_triangle_ineq[THEN order_trans] add_mono) |
224 by (intro frac_le abs_triangle_ineq[THEN order_trans] add_mono) |
276 proof eventually_elim |
276 proof eventually_elim |
277 fix t :: real assume "t \<ge> 0" |
277 fix t :: real assume "t \<ge> 0" |
278 have "Si t = LBINT x=0..t. sin x * (LBINT u=0..\<infinity>. exp (-(u * x)))" |
278 have "Si t = LBINT x=0..t. sin x * (LBINT u=0..\<infinity>. exp (-(u * x)))" |
279 unfolding Si_def using \<open>0 \<le> t\<close> |
279 unfolding Si_def using \<open>0 \<le> t\<close> |
280 by (intro interval_integral_discrete_difference[where X="{0}"]) (auto simp: LBINT_I0i_exp_mscale) |
280 by (intro interval_integral_discrete_difference[where X="{0}"]) (auto simp: LBINT_I0i_exp_mscale) |
281 also have "\<dots> = LBINT x. (LBINT u=ereal 0..\<infinity>. indicator {0 <..< t} x *\<^sub>R sin x * exp (-(u * x)))" |
281 also have "\<dots> = (LBINT x. (LBINT u=ereal 0..\<infinity>. indicator {0 <..< t} x *\<^sub>R sin x * exp (-(u * x))))" |
282 using \<open>0\<le>t\<close> by (simp add: zero_ereal_def interval_lebesgue_integral_le_eq mult_ac set_lebesgue_integral_def) |
282 using \<open>0\<le>t\<close> by (simp add: zero_ereal_def interval_lebesgue_integral_le_eq mult_ac set_lebesgue_integral_def) |
283 also have "\<dots> = LBINT x. (LBINT u. indicator ({0<..} \<times> {0 <..< t}) (u, x) *\<^sub>R (sin x * exp (-(u * x))))" |
283 also have "\<dots> = (LBINT x. (LBINT u. indicator ({0<..} \<times> {0 <..< t}) (u, x) *\<^sub>R (sin x * exp (-(u * x)))))" |
284 apply (subst interval_integral_Ioi) |
284 apply (subst interval_integral_Ioi) |
285 unfolding set_lebesgue_integral_def by(simp_all add: indicator_times ac_simps ) |
285 unfolding set_lebesgue_integral_def by(simp_all add: indicator_times ac_simps ) |
286 also have "\<dots> = LBINT u. (LBINT x. indicator ({0<..} \<times> {0 <..< t}) (u, x) *\<^sub>R (sin x * exp (-(u * x))))" |
286 also have "\<dots> = (LBINT u. (LBINT x. indicator ({0<..} \<times> {0 <..< t}) (u, x) *\<^sub>R (sin x * exp (-(u * x)))))" |
287 proof (intro lborel_pair.Fubini_integral[symmetric] lborel_pair.Fubini_integrable) |
287 proof (intro lborel_pair.Fubini_integral[symmetric] lborel_pair.Fubini_integrable) |
288 show "(\<lambda>(x, y). indicator ({0<..} \<times> {0<..<t}) (y, x) *\<^sub>R (sin x * exp (- (y * x)))) |
288 show "(\<lambda>(x, y). indicator ({0<..} \<times> {0<..<t}) (y, x) *\<^sub>R (sin x * exp (- (y * x)))) |
289 \<in> borel_measurable (lborel \<Otimes>\<^sub>M lborel)" (is "?f \<in> borel_measurable _") |
289 \<in> borel_measurable (lborel \<Otimes>\<^sub>M lborel)" (is "?f \<in> borel_measurable _") |
290 by measurable |
290 by measurable |
291 |
291 |
292 have "AE x in lborel. indicator {0..t} x *\<^sub>R abs (sinc x) = LBINT y. norm (?f (x, y))" |
292 have "AE x in lborel. indicator {0..t} x *\<^sub>R abs (sinc x) = (LBINT y. norm (?f (x, y)))" |
293 using AE_lborel_singleton[of 0] AE_lborel_singleton[of t] |
293 using AE_lborel_singleton[of 0] AE_lborel_singleton[of t] |
294 proof eventually_elim |
294 proof eventually_elim |
295 fix x :: real assume x: "x \<noteq> 0" "x \<noteq> t" |
295 fix x :: real assume x: "x \<noteq> 0" "x \<noteq> t" |
296 have "LBINT y. \<bar>indicator ({0<..} \<times> {0<..<t}) (y, x) *\<^sub>R (sin x * exp (- (y * x)))\<bar> = |
296 have "(LBINT y. \<bar>indicator ({0<..} \<times> {0<..<t}) (y, x) *\<^sub>R (sin x * exp (- (y * x)))\<bar>) = |
297 LBINT y. \<bar>sin x\<bar> * exp (- (y * x)) * indicator {0<..} y * indicator {0<..<t} x" |
297 (LBINT y. \<bar>sin x\<bar> * exp (- (y * x)) * indicator {0<..} y * indicator {0<..<t} x)" |
298 by (intro Bochner_Integration.integral_cong) (auto split: split_indicator simp: abs_mult) |
298 by (intro Bochner_Integration.integral_cong) (auto split: split_indicator simp: abs_mult) |
299 also have "\<dots> = \<bar>sin x\<bar> * indicator {0<..<t} x * (LBINT y=0..\<infinity>. exp (- (y * x)))" |
299 also have "\<dots> = \<bar>sin x\<bar> * indicator {0<..<t} x * (LBINT y=0..\<infinity>. exp (- (y * x)))" |
300 by (cases "x > 0") |
300 by (cases "x > 0") |
301 (auto simp: field_simps interval_lebesgue_integral_0_infty set_lebesgue_integral_def split: split_indicator) |
301 (auto simp: field_simps interval_lebesgue_integral_0_infty set_lebesgue_integral_def split: split_indicator) |
302 also have "\<dots> = \<bar>sin x\<bar> * indicator {0<..<t} x * (1 / x)" |
302 also have "\<dots> = \<bar>sin x\<bar> * indicator {0<..<t} x * (1 / x)" |
303 by (cases "x > 0") (auto simp add: LBINT_I0i_exp_mscale) |
303 by (cases "x > 0") (auto simp add: LBINT_I0i_exp_mscale) |
304 also have "\<dots> = indicator {0..t} x *\<^sub>R \<bar>sinc x\<bar>" |
304 also have "\<dots> = indicator {0..t} x *\<^sub>R \<bar>sinc x\<bar>" |
305 using x by (simp add: field_simps split: split_indicator) |
305 using x by (simp add: field_simps split: split_indicator) |
306 finally show "indicator {0..t} x *\<^sub>R abs (sinc x) = LBINT y. norm (?f (x, y))" |
306 finally show "indicator {0..t} x *\<^sub>R abs (sinc x) = (LBINT y. norm (?f (x, y)))" |
307 by simp |
307 by simp |
308 qed |
308 qed |
309 moreover have "integrable lborel (\<lambda>x. indicat_real {0..t} x *\<^sub>R \<bar>sinc x\<bar>)" |
309 moreover have "integrable lborel (\<lambda>x. indicat_real {0..t} x *\<^sub>R \<bar>sinc x\<bar>)" |
310 by (auto intro!: borel_integrable_compact continuous_intros simp del: real_scaleR_def) |
310 by (auto intro!: borel_integrable_compact continuous_intros simp del: real_scaleR_def) |
311 ultimately show "integrable lborel (\<lambda>x. LBINT y. norm (?f (x, y)))" |
311 ultimately show "integrable lborel (\<lambda>x. LBINT y. norm (?f (x, y)))" |
314 have "0 < x \<Longrightarrow> set_integrable lborel {0<..} (\<lambda>y. sin x * exp (- (y * x)))" for x :: real |
314 have "0 < x \<Longrightarrow> set_integrable lborel {0<..} (\<lambda>y. sin x * exp (- (y * x)))" for x :: real |
315 by (intro set_integrable_mult_right integrable_I0i_exp_mscale) |
315 by (intro set_integrable_mult_right integrable_I0i_exp_mscale) |
316 then show "AE x in lborel. integrable lborel (\<lambda>y. ?f (x, y))" |
316 then show "AE x in lborel. integrable lborel (\<lambda>y. ?f (x, y))" |
317 by (intro AE_I2) (auto simp: indicator_times set_integrable_def split: split_indicator) |
317 by (intro AE_I2) (auto simp: indicator_times set_integrable_def split: split_indicator) |
318 qed |
318 qed |
319 also have "... = LBINT u=0..\<infinity>. (LBINT x=0..t. exp (-(u * x)) * sin x)" |
319 also have "... = (LBINT u=0..\<infinity>. (LBINT x=0..t. exp (-(u * x)) * sin x))" |
320 using \<open>0\<le>t\<close> |
320 using \<open>0\<le>t\<close> |
321 by (auto simp: interval_lebesgue_integral_def set_lebesgue_integral_def zero_ereal_def ac_simps |
321 by (auto simp: interval_lebesgue_integral_def set_lebesgue_integral_def zero_ereal_def ac_simps |
322 split: split_indicator intro!: Bochner_Integration.integral_cong) |
322 split: split_indicator intro!: Bochner_Integration.integral_cong) |
323 also have "\<dots> = LBINT u=0..\<infinity>. 1 / (1 + u\<^sup>2) - 1 / (1 + u\<^sup>2) * (exp (- (u * t)) * (u * sin t + cos t))" |
323 also have "\<dots> = (LBINT u=0..\<infinity>. 1 / (1 + u\<^sup>2) - 1 / (1 + u\<^sup>2) * (exp (- (u * t)) * (u * sin t + cos t)))" |
324 by (auto simp: divide_simps LBINT_I0c_exp_mscale_sin intro!: interval_integral_cong) |
324 by (auto simp: divide_simps LBINT_I0c_exp_mscale_sin intro!: interval_integral_cong) |
325 also have "... = pi / 2 - (LBINT u=0..\<infinity>. exp (- (u * t)) * (u * sin t + cos t) / (1 + u^2))" |
325 also have "... = pi / 2 - (LBINT u=0..\<infinity>. exp (- (u * t)) * (u * sin t + cos t) / (1 + u^2))" |
326 using Si_at_top_integrable[OF \<open>0\<le>t\<close>] by (simp add: integrable_I0i_1_div_plus_square LBINT_I0i_1_div_plus_square) |
326 using Si_at_top_integrable[OF \<open>0\<le>t\<close>] by (simp add: integrable_I0i_1_div_plus_square LBINT_I0i_1_div_plus_square) |
327 finally show "pi / 2 - (LBINT u=0..\<infinity>. exp (-(u * t)) * (u * sin t + cos t) / (1 + u^2)) = Si t" .. |
327 finally show "pi / 2 - (LBINT u=0..\<infinity>. exp (-(u * t)) * (u * sin t + cos t) / (1 + u^2)) = Si t" .. |
328 qed |
328 qed |
369 by (auto intro!: derivative_intros continuous_at_imp_continuous_on isCont_sinc) |
369 by (auto intro!: derivative_intros continuous_at_imp_continuous_on isCont_sinc) |
370 also have "\<dots> = (LBINT t=ereal (0 * \<theta>)..T * \<theta>. sin t / t)" |
370 also have "\<dots> = (LBINT t=ereal (0 * \<theta>)..T * \<theta>. sin t / t)" |
371 by (rule interval_integral_discrete_difference[of "{0}"]) auto |
371 by (rule interval_integral_discrete_difference[of "{0}"]) auto |
372 finally have "(LBINT t=ereal 0..T. sin (t * \<theta>) / t) = (LBINT t=ereal 0..T * \<theta>. sin t / t)" |
372 finally have "(LBINT t=ereal 0..T. sin (t * \<theta>) / t) = (LBINT t=ereal 0..T * \<theta>. sin t / t)" |
373 by simp |
373 by simp |
374 hence "LBINT x. indicator {0<..<T} x * sin (x * \<theta>) / x = |
374 hence "(LBINT x. indicator {0<..<T} x * sin (x * \<theta>) / x) = (LBINT x. indicator {0<..<T * \<theta>} x * sin x / x)" |
375 LBINT x. indicator {0<..<T * \<theta>} x * sin x / x" |
|
376 using assms \<open>0 < \<theta>\<close> unfolding interval_lebesgue_integral_def einterval_eq zero_ereal_def |
375 using assms \<open>0 < \<theta>\<close> unfolding interval_lebesgue_integral_def einterval_eq zero_ereal_def |
377 by (auto simp: ac_simps set_lebesgue_integral_def) |
376 by (auto simp: ac_simps set_lebesgue_integral_def) |
378 } note aux1 = this |
377 } note aux1 = this |
379 { assume "0 > \<theta>" |
378 { assume "0 > \<theta>" |
380 have [simp]: "integrable lborel (\<lambda>x. sin (x * \<theta>) * indicator {0<..<T} x / x)" |
379 have [simp]: "integrable lborel (\<lambda>x. sin (x * \<theta>) * indicator {0<..<T} x / x)" |
388 by (auto intro!: derivative_intros continuous_at_imp_continuous_on isCont_sinc) |
387 by (auto intro!: derivative_intros continuous_at_imp_continuous_on isCont_sinc) |
389 also have "\<dots> = (LBINT t=ereal (0 * -\<theta>)..T * -\<theta>. sin t / t)" |
388 also have "\<dots> = (LBINT t=ereal (0 * -\<theta>)..T * -\<theta>. sin t / t)" |
390 by (rule interval_integral_discrete_difference[of "{0}"]) auto |
389 by (rule interval_integral_discrete_difference[of "{0}"]) auto |
391 finally have "(LBINT t=ereal 0..T. sin (t * -\<theta>) / t) = (LBINT t=ereal 0..T * -\<theta>. sin t / t)" |
390 finally have "(LBINT t=ereal 0..T. sin (t * -\<theta>) / t) = (LBINT t=ereal 0..T * -\<theta>. sin t / t)" |
392 by simp |
391 by simp |
393 hence "LBINT x. indicator {0<..<T} x * sin (x * \<theta>) / x = |
392 hence "(LBINT x. indicator {0<..<T} x * sin (x * \<theta>) / x) = |
394 - (LBINT x. indicator {0<..<- (T * \<theta>)} x * sin x / x)" |
393 - (LBINT x. indicator {0<..<- (T * \<theta>)} x * sin x / x)" |
395 using assms \<open>0 > \<theta>\<close> unfolding interval_lebesgue_integral_def einterval_eq zero_ereal_def |
394 using assms \<open>0 > \<theta>\<close> unfolding interval_lebesgue_integral_def einterval_eq zero_ereal_def |
396 by (auto simp add: field_simps mult_le_0_iff set_lebesgue_integral_def split: if_split_asm) |
395 by (auto simp add: field_simps mult_le_0_iff set_lebesgue_integral_def split: if_split_asm) |
397 } note aux2 = this |
396 } note aux2 = this |
398 show ?thesis |
397 show ?thesis |