88 assume "T \<ge> 0" |
88 assume "T \<ge> 0" |
89 let ?f' = "\<lambda>(t, x). indicator {-T<..<T} t *\<^sub>R ?f t x" |
89 let ?f' = "\<lambda>(t, x). indicator {-T<..<T} t *\<^sub>R ?f t x" |
90 { fix x |
90 { fix x |
91 have 1: "complex_interval_lebesgue_integrable lborel u v (\<lambda>t. ?f t x)" for u v :: real |
91 have 1: "complex_interval_lebesgue_integrable lborel u v (\<lambda>t. ?f t x)" for u v :: real |
92 using Levy_Inversion_aux2[of "x - b" "x - a"] |
92 using Levy_Inversion_aux2[of "x - b" "x - a"] |
93 apply (simp add: interval_lebesgue_integrable_def del: times_divide_eq_left) |
93 apply (simp add: interval_lebesgue_integrable_def set_integrable_def del: times_divide_eq_left) |
94 apply (intro integrableI_bounded_set_indicator[where B="b - a"] conjI impI) |
94 apply (intro integrableI_bounded_set_indicator[where B="b - a"] conjI impI) |
95 apply (auto intro!: AE_I [of _ _ "{0}"] simp: assms) |
95 apply (auto intro!: AE_I [of _ _ "{0}"] simp: assms) |
96 done |
96 done |
97 have "(CLBINT t. ?f' (t, x)) = (CLBINT t=-T..T. ?f t x)" |
97 have "(CLBINT t. ?f' (t, x)) = (CLBINT t=-T..T. ?f t x)" |
98 using \<open>T \<ge> 0\<close> by (simp add: interval_lebesgue_integral_def) |
98 using \<open>T \<ge> 0\<close> by (simp add: interval_lebesgue_integral_def set_lebesgue_integral_def) |
99 also have "\<dots> = (CLBINT t=-T..(0 :: real). ?f t x) + (CLBINT t=(0 :: real)..T. ?f t x)" |
99 also have "\<dots> = (CLBINT t=-T..(0 :: real). ?f t x) + (CLBINT t=(0 :: real)..T. ?f t x)" |
100 (is "_ = _ + ?t") |
100 (is "_ = _ + ?t") |
101 using 1 by (intro interval_integral_sum[symmetric]) (simp add: min_absorb1 max_absorb2 \<open>T \<ge> 0\<close>) |
101 using 1 by (intro interval_integral_sum[symmetric]) (simp add: min_absorb1 max_absorb2 \<open>T \<ge> 0\<close>) |
102 also have "(CLBINT t=-T..(0 :: real). ?f t x) = (CLBINT t=(0::real)..T. ?f (-t) x)" |
102 also have "(CLBINT t=-T..(0 :: real). ?f t x) = (CLBINT t=(0::real)..T. ?f (-t) x)" |
103 by (subst interval_integral_reflect) auto |
103 by (subst interval_integral_reflect) auto |
128 finally have "(CLBINT t. ?f' (t, x)) = |
128 finally have "(CLBINT t. ?f' (t, x)) = |
129 2 * (sgn (x - a) * Si (T * abs (x - a)) - sgn (x - b) * Si (T * abs (x - b)))" . |
129 2 * (sgn (x - a) * Si (T * abs (x - a)) - sgn (x - b) * Si (T * abs (x - b)))" . |
130 } note main_eq = this |
130 } note main_eq = this |
131 have "(CLBINT t=-T..T. ?F t * \<phi> t) = |
131 have "(CLBINT t=-T..T. ?F t * \<phi> t) = |
132 (CLBINT t. (CLINT x | M. ?F t * iexp (t * x) * indicator {-T<..<T} t))" |
132 (CLBINT t. (CLINT x | M. ?F t * iexp (t * x) * indicator {-T<..<T} t))" |
133 using \<open>T \<ge> 0\<close> unfolding \<phi>_def char_def interval_lebesgue_integral_def |
133 using \<open>T \<ge> 0\<close> unfolding \<phi>_def char_def interval_lebesgue_integral_def set_lebesgue_integral_def |
134 by (auto split: split_indicator intro!: Bochner_Integration.integral_cong) |
134 by (auto split: split_indicator intro!: Bochner_Integration.integral_cong) |
135 also have "\<dots> = (CLBINT t. (CLINT x | M. ?f' (t, x)))" |
135 also have "\<dots> = (CLBINT t. (CLINT x | M. ?f' (t, x)))" |
136 by (auto intro!: Bochner_Integration.integral_cong simp: field_simps exp_diff exp_minus split: split_indicator) |
136 by (auto intro!: Bochner_Integration.integral_cong simp: field_simps exp_diff exp_minus split: split_indicator) |
137 also have "\<dots> = (CLINT x | M. (CLBINT t. ?f' (t, x)))" |
137 also have "\<dots> = (CLINT x | M. (CLBINT t. ?f' (t, x)))" |
138 proof (intro P.Fubini_integral [symmetric] integrableI_bounded_set [where B="b - a"]) |
138 proof (intro P.Fubini_integral [symmetric] integrableI_bounded_set [where B="b - a"]) |
321 (* TODO: make this automatic somehow? *) |
321 (* TODO: make this automatic somehow? *) |
322 have Mn2 [simp]: "\<And>x. complex_integrable (M n) (\<lambda>t. exp (\<i> * complex_of_real (x * t)))" |
322 have Mn2 [simp]: "\<And>x. complex_integrable (M n) (\<lambda>t. exp (\<i> * complex_of_real (x * t)))" |
323 by (rule Mn.integrable_const_bound [where B = 1], auto) |
323 by (rule Mn.integrable_const_bound [where B = 1], auto) |
324 have Mn3: "set_integrable (M n \<Otimes>\<^sub>M lborel) (UNIV \<times> {- u..u}) (\<lambda>a. 1 - exp (\<i> * complex_of_real (snd a * fst a)))" |
324 have Mn3: "set_integrable (M n \<Otimes>\<^sub>M lborel) (UNIV \<times> {- u..u}) (\<lambda>a. 1 - exp (\<i> * complex_of_real (snd a * fst a)))" |
325 using \<open>0 < u\<close> |
325 using \<open>0 < u\<close> |
|
326 unfolding set_integrable_def |
326 by (intro integrableI_bounded_set_indicator [where B="2"]) |
327 by (intro integrableI_bounded_set_indicator [where B="2"]) |
327 (auto simp: lborel.emeasure_pair_measure_Times ennreal_mult_less_top not_less top_unique |
328 (auto simp: lborel.emeasure_pair_measure_Times ennreal_mult_less_top not_less top_unique |
328 split: split_indicator |
329 split: split_indicator |
329 intro!: order_trans [OF norm_triangle_ineq4]) |
330 intro!: order_trans [OF norm_triangle_ineq4]) |
330 have "(CLBINT t:{-u..u}. 1 - char (M n) t) = |
331 have "(CLBINT t:{-u..u}. 1 - char (M n) t) = |
331 (CLBINT t:{-u..u}. (CLINT x | M n. 1 - iexp (t * x)))" |
332 (CLBINT t:{-u..u}. (CLINT x | M n. 1 - iexp (t * x)))" |
332 unfolding char_def by (rule set_lebesgue_integral_cong, auto simp del: of_real_mult) |
333 unfolding char_def by (rule set_lebesgue_integral_cong, auto simp del: of_real_mult) |
333 also have "\<dots> = (CLBINT t. (CLINT x | M n. indicator {-u..u} t *\<^sub>R (1 - iexp (t * x))))" |
334 also have "\<dots> = (CLBINT t. (CLINT x | M n. indicator {-u..u} t *\<^sub>R (1 - iexp (t * x))))" |
|
335 unfolding set_lebesgue_integral_def |
334 by (rule Bochner_Integration.integral_cong) (auto split: split_indicator) |
336 by (rule Bochner_Integration.integral_cong) (auto split: split_indicator) |
335 also have "\<dots> = (CLINT x | M n. (CLBINT t:{-u..u}. 1 - iexp (t * x)))" |
337 also have "\<dots> = (CLINT x | M n. (CLBINT t:{-u..u}. 1 - iexp (t * x)))" |
336 using Mn3 by (subst P.Fubini_integral) (auto simp: indicator_times split_beta') |
338 using Mn3 by (subst P.Fubini_integral) (auto simp: indicator_times split_beta' set_integrable_def set_lebesgue_integral_def) |
337 also have "\<dots> = (CLINT x | M n. (if x = 0 then 0 else 2 * (u - sin (u * x) / x)))" |
339 also have "\<dots> = (CLINT x | M n. (if x = 0 then 0 else 2 * (u - sin (u * x) / x)))" |
338 using \<open>u > 0\<close> by (intro Bochner_Integration.integral_cong, auto simp add: * simp del: of_real_mult) |
340 using \<open>u > 0\<close> by (intro Bochner_Integration.integral_cong, auto simp add: * simp del: of_real_mult) |
339 also have "\<dots> = (LINT x | M n. (if x = 0 then 0 else 2 * (u - sin (u * x) / x)))" |
341 also have "\<dots> = (LINT x | M n. (if x = 0 then 0 else 2 * (u - sin (u * x) / x)))" |
340 by (rule integral_complex_of_real) |
342 by (rule integral_complex_of_real) |
341 finally have "Re (CLBINT t:{-u..u}. 1 - char (M n) t) = |
343 finally have "Re (CLBINT t:{-u..u}. 1 - char (M n) t) = |
342 (LINT x | M n. (if x = 0 then 0 else 2 * (u - sin (u * x) / x)))" by simp |
344 (LINT x | M n. (if x = 0 then 0 else 2 * (u - sin (u * x) / x)))" by simp |
343 also have "\<dots> \<ge> (LINT x : {x. abs x \<ge> 2 / u} | M n. u)" |
345 also have "\<dots> \<ge> (LINT x : {x. abs x \<ge> 2 / u} | M n. u)" |
344 proof - |
346 proof - |
345 have "complex_integrable (M n) (\<lambda>x. CLBINT t:{-u..u}. 1 - iexp (snd (x, t) * fst (x, t)))" |
347 have "complex_integrable (M n) (\<lambda>x. CLBINT t:{-u..u}. 1 - iexp (snd (x, t) * fst (x, t)))" |
346 using Mn3 by (intro P.integrable_fst) (simp add: indicator_times split_beta') |
348 using Mn3 unfolding set_integrable_def set_lebesgue_integral_def |
|
349 by (intro P.integrable_fst) (simp add: indicator_times split_beta') |
347 hence "complex_integrable (M n) (\<lambda>x. if x = 0 then 0 else 2 * (u - sin (u * x) / x))" |
350 hence "complex_integrable (M n) (\<lambda>x. if x = 0 then 0 else 2 * (u - sin (u * x) / x))" |
348 using \<open>u > 0\<close> by (subst integrable_cong) (auto simp add: * simp del: of_real_mult) |
351 using \<open>u > 0\<close> |
|
352 unfolding set_integrable_def |
|
353 by (subst integrable_cong) (auto simp add: * simp del: of_real_mult) |
349 hence **: "integrable (M n) (\<lambda>x. if x = 0 then 0 else 2 * (u - sin (u * x) / x))" |
354 hence **: "integrable (M n) (\<lambda>x. if x = 0 then 0 else 2 * (u - sin (u * x) / x))" |
350 unfolding complex_of_real_integrable_eq . |
355 unfolding complex_of_real_integrable_eq . |
351 have "2 * sin x \<le> x" if "2 \<le> x" for x :: real |
356 have "2 * sin x \<le> x" if "2 \<le> x" for x :: real |
352 by (rule order_trans[OF _ \<open>2 \<le> x\<close>]) auto |
357 by (rule order_trans[OF _ \<open>2 \<le> x\<close>]) auto |
353 moreover have "x \<le> 2 * sin x" if "x \<le> - 2" for x :: real |
358 moreover have "x \<le> 2 * sin x" if "x \<le> - 2" for x :: real |
354 by (rule order_trans[OF \<open>x \<le> - 2\<close>]) auto |
359 by (rule order_trans[OF \<open>x \<le> - 2\<close>]) auto |
355 moreover have "x < 0 \<Longrightarrow> x \<le> sin x" for x :: real |
360 moreover have "x < 0 \<Longrightarrow> x \<le> sin x" for x :: real |
356 using sin_x_le_x[of "-x"] by simp |
361 using sin_x_le_x[of "-x"] by simp |
357 ultimately show ?thesis |
362 ultimately show ?thesis |
358 using \<open>u > 0\<close> |
363 using \<open>u > 0\<close> unfolding set_lebesgue_integral_def |
359 by (intro integral_mono [OF _ **]) |
364 by (intro integral_mono [OF _ **]) |
360 (auto simp: divide_simps sin_x_le_x mult.commute[of u] mult_neg_pos top_unique less_top[symmetric] |
365 (auto simp: divide_simps sin_x_le_x mult.commute[of u] mult_neg_pos top_unique less_top[symmetric] |
361 split: split_indicator) |
366 split: split_indicator) |
362 qed |
367 qed |
363 also (xtrans) have "(LINT x : {x. abs x \<ge> 2 / u} | M n. u) = |
368 also (xtrans) have "(LINT x : {x. abs x \<ge> 2 / u} | M n. u) = u * measure (M n) {x. abs x \<ge> 2 / u}" |
364 u * measure (M n) {x. abs x \<ge> 2 / u}" |
369 unfolding set_lebesgue_integral_def |
365 by (simp add: Mn.emeasure_eq_measure) |
370 by (simp add: Mn.emeasure_eq_measure) |
366 finally show "Re (CLBINT t:{-u..u}. 1 - char (M n) t) \<ge> u * measure (M n) {x. abs x \<ge> 2 / u}" . |
371 finally show "Re (CLBINT t:{-u..u}. 1 - char (M n) t) \<ge> u * measure (M n) {x. abs x \<ge> 2 / u}" . |
367 qed |
372 qed |
368 |
373 |
369 have tight_aux: "\<And>\<epsilon>. \<epsilon> > 0 \<Longrightarrow> \<exists>a b. a < b \<and> (\<forall>n. 1 - \<epsilon> < measure (M n) {a<..b})" |
374 have tight_aux: "\<And>\<epsilon>. \<epsilon> > 0 \<Longrightarrow> \<exists>a b. a < b \<and> (\<forall>n. 1 - \<epsilon> < measure (M n) {a<..b})" |
378 then obtain d where "d > 0 \<and> (\<forall>t. (abs t < d \<longrightarrow> cmod (char M' t - 1) < \<epsilon> / 4))" .. |
383 then obtain d where "d > 0 \<and> (\<forall>t. (abs t < d \<longrightarrow> cmod (char M' t - 1) < \<epsilon> / 4))" .. |
379 hence d0: "d > 0" and d1: "\<And>t. abs t < d \<Longrightarrow> cmod (char M' t - 1) < \<epsilon> / 4" by auto |
384 hence d0: "d > 0" and d1: "\<And>t. abs t < d \<Longrightarrow> cmod (char M' t - 1) < \<epsilon> / 4" by auto |
380 have 1: "\<And>x. cmod (1 - char M' x) \<le> 2" |
385 have 1: "\<And>x. cmod (1 - char M' x) \<le> 2" |
381 by (rule order_trans [OF norm_triangle_ineq4], auto simp add: M'.cmod_char_le_1) |
386 by (rule order_trans [OF norm_triangle_ineq4], auto simp add: M'.cmod_char_le_1) |
382 then have 2: "\<And>u v. complex_set_integrable lborel {u..v} (\<lambda>x. 1 - char M' x)" |
387 then have 2: "\<And>u v. complex_set_integrable lborel {u..v} (\<lambda>x. 1 - char M' x)" |
|
388 unfolding set_integrable_def |
383 by (intro integrableI_bounded_set_indicator[where B=2]) (auto simp: emeasure_lborel_Icc_eq) |
389 by (intro integrableI_bounded_set_indicator[where B=2]) (auto simp: emeasure_lborel_Icc_eq) |
384 have 3: "\<And>u v. set_integrable lborel {u..v} (\<lambda>x. cmod (1 - char M' x))" |
390 have 3: "\<And>u v. integrable lborel (\<lambda>x. indicat_real {u..v} x *\<^sub>R cmod (1 - char M' x))" |
385 by (intro borel_integrable_compact[OF compact_Icc] continuous_at_imp_continuous_on |
391 by (intro borel_integrable_compact[OF compact_Icc] continuous_at_imp_continuous_on |
386 continuous_intros ballI M'.isCont_char continuous_intros) |
392 continuous_intros ballI M'.isCont_char continuous_intros) |
387 have "cmod (CLBINT t:{-d/2..d/2}. 1 - char M' t) \<le> LBINT t:{-d/2..d/2}. cmod (1 - char M' t)" |
393 have "cmod (CLBINT t:{-d/2..d/2}. 1 - char M' t) \<le> LBINT t:{-d/2..d/2}. cmod (1 - char M' t)" |
|
394 unfolding set_lebesgue_integral_def |
388 using integral_norm_bound[of _ "\<lambda>x. indicator {u..v} x *\<^sub>R (1 - char M' x)" for u v] by simp |
395 using integral_norm_bound[of _ "\<lambda>x. indicator {u..v} x *\<^sub>R (1 - char M' x)" for u v] by simp |
389 also have 4: "\<dots> \<le> LBINT t:{-d/2..d/2}. \<epsilon> / 4" |
396 also have 4: "\<dots> \<le> LBINT t:{-d/2..d/2}. \<epsilon> / 4" |
|
397 unfolding set_lebesgue_integral_def |
390 apply (rule integral_mono [OF 3]) |
398 apply (rule integral_mono [OF 3]) |
391 apply (simp add: emeasure_lborel_Icc_eq) |
399 apply (simp add: emeasure_lborel_Icc_eq) |
392 apply (case_tac "x \<in> {-d/2..d/2}") |
400 apply (case_tac "x \<in> {-d/2..d/2}") |
393 apply auto |
401 apply auto |
394 apply (subst norm_minus_commute) |
402 apply (subst norm_minus_commute) |
395 apply (rule less_imp_le) |
403 apply (rule less_imp_le) |
396 apply (rule d1 [simplified]) |
404 apply (rule d1 [simplified]) |
397 using d0 apply auto |
405 using d0 apply auto |
398 done |
406 done |
399 also from d0 4 have "\<dots> = d * \<epsilon> / 4" |
407 also from d0 4 have "\<dots> = d * \<epsilon> / 4" |
400 by simp |
408 unfolding set_lebesgue_integral_def by simp |
401 finally have bound: "cmod (CLBINT t:{-d/2..d/2}. 1 - char M' t) \<le> d * \<epsilon> / 4" . |
409 finally have bound: "cmod (CLBINT t:{-d/2..d/2}. 1 - char M' t) \<le> d * \<epsilon> / 4" . |
402 have "cmod (1 - char (M n) x) \<le> 2" for n x |
410 have "cmod (1 - char (M n) x) \<le> 2" for n x |
403 by (rule order_trans [OF norm_triangle_ineq4], auto simp add: Mn.cmod_char_le_1) |
411 by (rule order_trans [OF norm_triangle_ineq4], auto simp add: Mn.cmod_char_le_1) |
404 then have "(\<lambda>n. CLBINT t:{-d/2..d/2}. 1 - char (M n) t) \<longlonglongrightarrow> (CLBINT t:{-d/2..d/2}. 1 - char M' t)" |
412 then have "(\<lambda>n. CLBINT t:{-d/2..d/2}. 1 - char (M n) t) \<longlonglongrightarrow> (CLBINT t:{-d/2..d/2}. 1 - char M' t)" |
|
413 unfolding set_lebesgue_integral_def |
405 apply (intro integral_dominated_convergence[where w="\<lambda>x. indicator {-d/2..d/2} x *\<^sub>R 2"]) |
414 apply (intro integral_dominated_convergence[where w="\<lambda>x. indicator {-d/2..d/2} x *\<^sub>R 2"]) |
406 apply (auto intro!: char_conv tendsto_intros |
415 apply (auto intro!: char_conv tendsto_intros |
407 simp: emeasure_lborel_Icc_eq |
416 simp: emeasure_lborel_Icc_eq |
408 split: split_indicator) |
417 split: split_indicator) |
409 done |
418 done |