27 |
27 |
28 show "?LT`Rats \<subseteq> ?E" "(\<Union>i\<in>Rats. ?LT i) = UNIV" "\<And>a. a \<in> ?LT`Rats \<Longrightarrow> emeasure M a \<noteq> \<infinity>" |
28 show "?LT`Rats \<subseteq> ?E" "(\<Union>i\<in>Rats. ?LT i) = UNIV" "\<And>a. a \<in> ?LT`Rats \<Longrightarrow> emeasure M a \<noteq> \<infinity>" |
29 using fin by (auto intro: Rats_no_bot_less simp: less_top) |
29 using fin by (auto intro: Rats_no_bot_less simp: less_top) |
30 qed (auto intro: assms countable_rat) |
30 qed (auto intro: assms countable_rat) |
31 |
31 |
32 subsection \<open>Every right continuous and nondecreasing function gives rise to a measure\<close> |
32 subsection \<open>Measures defined by monotonous functions\<close> |
33 |
33 |
34 definition interval_measure :: "(real \<Rightarrow> real) \<Rightarrow> real measure" where |
34 text \<open> |
35 "interval_measure F = extend_measure UNIV {(a, b). a \<le> b} (\<lambda>(a, b). {a <.. b}) (\<lambda>(a, b). ennreal (F b - F a))" |
35 Every right-continuous and nondecreasing function gives rise to a measure on the reals: |
36 |
36 \<close> |
37 lemma emeasure_interval_measure_Ioc: |
37 |
|
38 definition%important interval_measure :: "(real \<Rightarrow> real) \<Rightarrow> real measure" where |
|
39 "interval_measure F = |
|
40 extend_measure UNIV {(a, b). a \<le> b} (\<lambda>(a, b). {a<..b}) (\<lambda>(a, b). ennreal (F b - F a))" |
|
41 |
|
42 lemma%important emeasure_interval_measure_Ioc: |
38 assumes "a \<le> b" |
43 assumes "a \<le> b" |
39 assumes mono_F: "\<And>x y. x \<le> y \<Longrightarrow> F x \<le> F y" |
44 assumes mono_F: "\<And>x y. x \<le> y \<Longrightarrow> F x \<le> F y" |
40 assumes right_cont_F : "\<And>a. continuous (at_right a) F" |
45 assumes right_cont_F : "\<And>a. continuous (at_right a) F" |
41 shows "emeasure (interval_measure F) {a <.. b} = F b - F a" |
46 shows "emeasure (interval_measure F) {a<..b} = F b - F a" |
42 proof (rule extend_measure_caratheodory_pair[OF interval_measure_def \<open>a \<le> b\<close>]) |
47 proof%unimportant (rule extend_measure_caratheodory_pair[OF interval_measure_def \<open>a \<le> b\<close>]) |
43 show "semiring_of_sets UNIV {{a<..b} |a b :: real. a \<le> b}" |
48 show "semiring_of_sets UNIV {{a<..b} |a b :: real. a \<le> b}" |
44 proof (unfold_locales, safe) |
49 proof (unfold_locales, safe) |
45 fix a b c d :: real assume *: "a \<le> b" "c \<le> d" |
50 fix a b c d :: real assume *: "a \<le> b" "c \<le> d" |
46 then show "\<exists>C\<subseteq>{{a<..b} |a b. a \<le> b}. finite C \<and> disjoint C \<and> {a<..b} - {c<..d} = \<Union>C" |
51 then show "\<exists>C\<subseteq>{{a<..b} |a b. a \<le> b}. finite C \<and> disjoint C \<and> {a<..b} - {c<..d} = \<Union>C" |
47 proof cases |
52 proof cases |
307 lemma emeasure_interval_measure_Ioc_eq: |
312 lemma emeasure_interval_measure_Ioc_eq: |
308 "(\<And>x y. x \<le> y \<Longrightarrow> F x \<le> F y) \<Longrightarrow> (\<And>a. continuous (at_right a) F) \<Longrightarrow> |
313 "(\<And>x y. x \<le> y \<Longrightarrow> F x \<le> F y) \<Longrightarrow> (\<And>a. continuous (at_right a) F) \<Longrightarrow> |
309 emeasure (interval_measure F) {a <.. b} = (if a \<le> b then F b - F a else 0)" |
314 emeasure (interval_measure F) {a <.. b} = (if a \<le> b then F b - F a else 0)" |
310 using emeasure_interval_measure_Ioc[of a b F] by auto |
315 using emeasure_interval_measure_Ioc[of a b F] by auto |
311 |
316 |
312 lemma sets_interval_measure [simp, measurable_cong]: "sets (interval_measure F) = sets borel" |
317 lemma%important sets_interval_measure [simp, measurable_cong]: |
|
318 "sets (interval_measure F) = sets borel" |
313 apply (simp add: sets_extend_measure interval_measure_def borel_sigma_sets_Ioc) |
319 apply (simp add: sets_extend_measure interval_measure_def borel_sigma_sets_Ioc) |
314 apply (rule sigma_sets_eqI) |
320 apply (rule sigma_sets_eqI) |
315 apply auto |
321 apply auto |
316 apply (case_tac "a \<le> ba") |
322 apply (case_tac "a \<le> ba") |
317 apply (auto intro: sigma_sets.Empty) |
323 apply (auto intro: sigma_sets.Empty) |
358 show "((\<lambda>a. ennreal (F b - F a)) \<longlongrightarrow> F b - F a) (at_left a)" |
364 show "((\<lambda>a. ennreal (F b - F a)) \<longlongrightarrow> F b - F a) (at_left a)" |
359 by (rule continuous_on_tendsto_compose[where g="\<lambda>x. x" and s=UNIV]) |
365 by (rule continuous_on_tendsto_compose[where g="\<lambda>x. x" and s=UNIV]) |
360 (auto simp: continuous_on_ennreal continuous_on_diff cont_F continuous_on_const) |
366 (auto simp: continuous_on_ennreal continuous_on_diff cont_F continuous_on_const) |
361 qed (rule trivial_limit_at_left_real) |
367 qed (rule trivial_limit_at_left_real) |
362 |
368 |
363 lemma sigma_finite_interval_measure: |
369 lemma%important sigma_finite_interval_measure: |
364 assumes mono_F: "\<And>x y. x \<le> y \<Longrightarrow> F x \<le> F y" |
370 assumes mono_F: "\<And>x y. x \<le> y \<Longrightarrow> F x \<le> F y" |
365 assumes right_cont_F : "\<And>a. continuous (at_right a) F" |
371 assumes right_cont_F : "\<And>a. continuous (at_right a) F" |
366 shows "sigma_finite_measure (interval_measure F)" |
372 shows "sigma_finite_measure (interval_measure F)" |
367 apply unfold_locales |
373 apply unfold_locales |
368 apply (intro exI[of _ "(\<lambda>(a, b). {a <.. b}) ` (\<rat> \<times> \<rat>)"]) |
374 apply (intro exI[of _ "(\<lambda>(a, b). {a <.. b}) ` (\<rat> \<times> \<rat>)"]) |
369 apply (auto intro!: Rats_no_top_le Rats_no_bot_less countable_rat simp: emeasure_interval_measure_Ioc_eq[OF assms]) |
375 apply (auto intro!: Rats_no_top_le Rats_no_bot_less countable_rat simp: emeasure_interval_measure_Ioc_eq[OF assms]) |
370 done |
376 done |
371 |
377 |
372 subsection \<open>Lebesgue-Borel measure\<close> |
378 subsection \<open>Lebesgue-Borel measure\<close> |
373 |
379 |
374 definition lborel :: "('a :: euclidean_space) measure" where |
380 definition%important lborel :: "('a :: euclidean_space) measure" where |
375 "lborel = distr (\<Pi>\<^sub>M b\<in>Basis. interval_measure (\<lambda>x. x)) borel (\<lambda>f. \<Sum>b\<in>Basis. f b *\<^sub>R b)" |
381 "lborel = distr (\<Pi>\<^sub>M b\<in>Basis. interval_measure (\<lambda>x. x)) borel (\<lambda>f. \<Sum>b\<in>Basis. f b *\<^sub>R b)" |
376 |
382 |
377 abbreviation lebesgue :: "'a::euclidean_space measure" |
383 abbreviation%important lebesgue :: "'a::euclidean_space measure" |
378 where "lebesgue \<equiv> completion lborel" |
384 where "lebesgue \<equiv> completion lborel" |
379 |
385 |
380 abbreviation lebesgue_on :: "'a set \<Rightarrow> 'a::euclidean_space measure" |
386 abbreviation%important lebesgue_on :: "'a set \<Rightarrow> 'a::euclidean_space measure" |
381 where "lebesgue_on \<Omega> \<equiv> restrict_space (completion lborel) \<Omega>" |
387 where "lebesgue_on \<Omega> \<equiv> restrict_space (completion lborel) \<Omega>" |
382 |
388 |
383 lemma |
389 lemma |
384 shows sets_lborel[simp, measurable_cong]: "sets lborel = sets borel" |
390 shows sets_lborel[simp, measurable_cong]: "sets lborel = sets borel" |
385 and space_lborel[simp]: "space lborel = space borel" |
391 and space_lborel[simp]: "space lborel = space borel" |
396 lemma measurable_lebesgue_cong: |
402 lemma measurable_lebesgue_cong: |
397 assumes "\<And>x. x \<in> S \<Longrightarrow> f x = g x" |
403 assumes "\<And>x. x \<in> S \<Longrightarrow> f x = g x" |
398 shows "f \<in> measurable (lebesgue_on S) M \<longleftrightarrow> g \<in> measurable (lebesgue_on S) M" |
404 shows "f \<in> measurable (lebesgue_on S) M \<longleftrightarrow> g \<in> measurable (lebesgue_on S) M" |
399 by (metis (mono_tags, lifting) IntD1 assms measurable_cong_strong space_restrict_space) |
405 by (metis (mono_tags, lifting) IntD1 assms measurable_cong_strong space_restrict_space) |
400 |
406 |
401 text\<open>Measurability of continuous functions\<close> |
407 text%unimportant \<open>Measurability of continuous functions\<close> |
|
408 |
402 lemma continuous_imp_measurable_on_sets_lebesgue: |
409 lemma continuous_imp_measurable_on_sets_lebesgue: |
403 assumes f: "continuous_on S f" and S: "S \<in> sets lebesgue" |
410 assumes f: "continuous_on S f" and S: "S \<in> sets lebesgue" |
404 shows "f \<in> borel_measurable (lebesgue_on S)" |
411 shows "f \<in> borel_measurable (lebesgue_on S)" |
405 proof - |
412 proof - |
406 have "sets (restrict_space borel S) \<subseteq> sets (lebesgue_on S)" |
413 have "sets (restrict_space borel S) \<subseteq> sets (lebesgue_on S)" |
446 qed |
453 qed |
447 |
454 |
448 lemma emeasure_lborel_Icc_eq: "emeasure lborel {l .. u} = ennreal (if l \<le> u then u - l else 0)" |
455 lemma emeasure_lborel_Icc_eq: "emeasure lborel {l .. u} = ennreal (if l \<le> u then u - l else 0)" |
449 by simp |
456 by simp |
450 |
457 |
451 lemma emeasure_lborel_cbox[simp]: |
458 lemma%important emeasure_lborel_cbox[simp]: |
452 assumes [simp]: "\<And>b. b \<in> Basis \<Longrightarrow> l \<bullet> b \<le> u \<bullet> b" |
459 assumes [simp]: "\<And>b. b \<in> Basis \<Longrightarrow> l \<bullet> b \<le> u \<bullet> b" |
453 shows "emeasure lborel (cbox l u) = (\<Prod>b\<in>Basis. (u - l) \<bullet> b)" |
460 shows "emeasure lborel (cbox l u) = (\<Prod>b\<in>Basis. (u - l) \<bullet> b)" |
454 proof - |
461 proof%unimportant - |
455 have "(\<lambda>x. \<Prod>b\<in>Basis. indicator {l\<bullet>b .. u\<bullet>b} (x \<bullet> b) :: ennreal) = indicator (cbox l u)" |
462 have "(\<lambda>x. \<Prod>b\<in>Basis. indicator {l\<bullet>b .. u\<bullet>b} (x \<bullet> b) :: ennreal) = indicator (cbox l u)" |
456 by (auto simp: fun_eq_iff cbox_def split: split_indicator) |
463 by (auto simp: fun_eq_iff cbox_def split: split_indicator) |
457 then have "emeasure lborel (cbox l u) = (\<integral>\<^sup>+x. (\<Prod>b\<in>Basis. indicator {l\<bullet>b .. u\<bullet>b} (x \<bullet> b)) \<partial>lborel)" |
464 then have "emeasure lborel (cbox l u) = (\<integral>\<^sup>+x. (\<Prod>b\<in>Basis. indicator {l\<bullet>b .. u\<bullet>b} (x \<bullet> b)) \<partial>lborel)" |
458 by simp |
465 by simp |
459 also have "\<dots> = (\<Prod>b\<in>Basis. (u - l) \<bullet> b)" |
466 also have "\<dots> = (\<Prod>b\<in>Basis. (u - l) \<bullet> b)" |
640 using mem_closed_if_AE_lebesgue_open[OF open_UNIV] by simp |
647 using mem_closed_if_AE_lebesgue_open[OF open_UNIV] by simp |
641 |
648 |
642 |
649 |
643 subsection \<open>Affine transformation on the Lebesgue-Borel\<close> |
650 subsection \<open>Affine transformation on the Lebesgue-Borel\<close> |
644 |
651 |
645 lemma lborel_eqI: |
652 lemma%important lborel_eqI: |
646 fixes M :: "'a::euclidean_space measure" |
653 fixes M :: "'a::euclidean_space measure" |
647 assumes emeasure_eq: "\<And>l u. (\<And>b. b \<in> Basis \<Longrightarrow> l \<bullet> b \<le> u \<bullet> b) \<Longrightarrow> emeasure M (box l u) = (\<Prod>b\<in>Basis. (u - l) \<bullet> b)" |
654 assumes emeasure_eq: "\<And>l u. (\<And>b. b \<in> Basis \<Longrightarrow> l \<bullet> b \<le> u \<bullet> b) \<Longrightarrow> emeasure M (box l u) = (\<Prod>b\<in>Basis. (u - l) \<bullet> b)" |
648 assumes sets_eq: "sets M = sets borel" |
655 assumes sets_eq: "sets M = sets borel" |
649 shows "lborel = M" |
656 shows "lborel = M" |
650 proof (rule measure_eqI_generator_eq) |
657 proof%unimportant (rule measure_eqI_generator_eq) |
651 let ?E = "range (\<lambda>(a, b). box a b::'a set)" |
658 let ?E = "range (\<lambda>(a, b). box a b::'a set)" |
652 show "Int_stable ?E" |
659 show "Int_stable ?E" |
653 by (auto simp: Int_stable_def box_Int_box) |
660 by (auto simp: Int_stable_def box_Int_box) |
654 |
661 |
655 show "?E \<subseteq> Pow UNIV" "sets lborel = sigma_sets UNIV ?E" "sets M = sigma_sets UNIV ?E" |
662 show "?E \<subseteq> Pow UNIV" "sets lborel = sigma_sets UNIV ?E" "sets M = sigma_sets UNIV ?E" |
665 apply (subst box_eq_empty(1)[THEN iffD2]) |
672 apply (subst box_eq_empty(1)[THEN iffD2]) |
666 apply (auto intro: less_imp_le simp: not_le) |
673 apply (auto intro: less_imp_le simp: not_le) |
667 done } |
674 done } |
668 qed |
675 qed |
669 |
676 |
670 lemma lborel_affine_euclidean: |
677 lemma%important lborel_affine_euclidean: |
671 fixes c :: "'a::euclidean_space \<Rightarrow> real" and t |
678 fixes c :: "'a::euclidean_space \<Rightarrow> real" and t |
672 defines "T x \<equiv> t + (\<Sum>j\<in>Basis. (c j * (x \<bullet> j)) *\<^sub>R j)" |
679 defines "T x \<equiv> t + (\<Sum>j\<in>Basis. (c j * (x \<bullet> j)) *\<^sub>R j)" |
673 assumes c: "\<And>j. j \<in> Basis \<Longrightarrow> c j \<noteq> 0" |
680 assumes c: "\<And>j. j \<in> Basis \<Longrightarrow> c j \<noteq> 0" |
674 shows "lborel = density (distr lborel borel T) (\<lambda>_. (\<Prod>j\<in>Basis. \<bar>c j\<bar>))" (is "_ = ?D") |
681 shows "lborel = density (distr lborel borel T) (\<lambda>_. (\<Prod>j\<in>Basis. \<bar>c j\<bar>))" (is "_ = ?D") |
675 proof (rule lborel_eqI) |
682 proof%unimportant (rule lborel_eqI) |
676 let ?B = "Basis :: 'a set" |
683 let ?B = "Basis :: 'a set" |
677 fix l u assume le: "\<And>b. b \<in> ?B \<Longrightarrow> l \<bullet> b \<le> u \<bullet> b" |
684 fix l u assume le: "\<And>b. b \<in> ?B \<Longrightarrow> l \<bullet> b \<le> u \<bullet> b" |
678 have [measurable]: "T \<in> borel \<rightarrow>\<^sub>M borel" |
685 have [measurable]: "T \<in> borel \<rightarrow>\<^sub>M borel" |
679 by (simp add: T_def[abs_def]) |
686 by (simp add: T_def[abs_def]) |
680 have eq: "T -` box l u = box |
687 have eq: "T -` box l u = box |
722 using |
729 using |
723 lborel_integrable_real_affine[of f c t] |
730 lborel_integrable_real_affine[of f c t] |
724 lborel_integrable_real_affine[of "\<lambda>x. f (t + c * x)" "1/c" "-t/c"] |
731 lborel_integrable_real_affine[of "\<lambda>x. f (t + c * x)" "1/c" "-t/c"] |
725 by (auto simp add: field_simps) |
732 by (auto simp add: field_simps) |
726 |
733 |
727 lemma lborel_integral_real_affine: |
734 lemma%important lborel_integral_real_affine: |
728 fixes f :: "real \<Rightarrow> 'a :: {banach, second_countable_topology}" and c :: real |
735 fixes f :: "real \<Rightarrow> 'a :: {banach, second_countable_topology}" and c :: real |
729 assumes c: "c \<noteq> 0" shows "(\<integral>x. f x \<partial> lborel) = \<bar>c\<bar> *\<^sub>R (\<integral>x. f (t + c * x) \<partial>lborel)" |
736 assumes c: "c \<noteq> 0" shows "(\<integral>x. f x \<partial> lborel) = \<bar>c\<bar> *\<^sub>R (\<integral>x. f (t + c * x) \<partial>lborel)" |
730 proof cases |
737 proof%unimportant cases |
731 assume f[measurable]: "integrable lborel f" then show ?thesis |
738 assume f[measurable]: "integrable lborel f" then show ?thesis |
732 using c f f[THEN borel_measurable_integrable] f[THEN lborel_integrable_real_affine, of c t] |
739 using c f f[THEN borel_measurable_integrable] f[THEN lborel_integrable_real_affine, of c t] |
733 by (subst lborel_real_affine[OF c, of t]) |
740 by (subst lborel_real_affine[OF c, of t]) |
734 (simp add: integral_density integral_distr) |
741 (simp add: integral_density integral_distr) |
735 next |
742 next |
887 interpretation lborel: sigma_finite_measure lborel |
894 interpretation lborel: sigma_finite_measure lborel |
888 by (rule sigma_finite_lborel) |
895 by (rule sigma_finite_lborel) |
889 |
896 |
890 interpretation lborel_pair: pair_sigma_finite lborel lborel .. |
897 interpretation lborel_pair: pair_sigma_finite lborel lborel .. |
891 |
898 |
892 lemma lborel_prod: |
899 lemma%important lborel_prod: |
893 "lborel \<Otimes>\<^sub>M lborel = (lborel :: ('a::euclidean_space \<times> 'b::euclidean_space) measure)" |
900 "lborel \<Otimes>\<^sub>M lborel = (lborel :: ('a::euclidean_space \<times> 'b::euclidean_space) measure)" |
894 proof (rule lborel_eqI[symmetric], clarify) |
901 proof%unimportant (rule lborel_eqI[symmetric], clarify) |
895 fix la ua :: 'a and lb ub :: 'b |
902 fix la ua :: 'a and lb ub :: 'b |
896 assume lu: "\<And>a b. (a, b) \<in> Basis \<Longrightarrow> (la, lb) \<bullet> (a, b) \<le> (ua, ub) \<bullet> (a, b)" |
903 assume lu: "\<And>a b. (a, b) \<in> Basis \<Longrightarrow> (la, lb) \<bullet> (a, b) \<le> (ua, ub) \<bullet> (a, b)" |
897 have [simp]: |
904 have [simp]: |
898 "\<And>b. b \<in> Basis \<Longrightarrow> la \<bullet> b \<le> ua \<bullet> b" |
905 "\<And>b. b \<in> Basis \<Longrightarrow> la \<bullet> b \<le> ua \<bullet> b" |
899 "\<And>b. b \<in> Basis \<Longrightarrow> lb \<bullet> b \<le> ub \<bullet> b" |
906 "\<And>b. b \<in> Basis \<Longrightarrow> lb \<bullet> b \<le> ub \<bullet> b" |
962 qed simp |
969 qed simp |
963 then show ?thesis |
970 then show ?thesis |
964 by (auto simp: mult.commute) |
971 by (auto simp: mult.commute) |
965 qed |
972 qed |
966 |
973 |
967 subsection\<open>Lebesgue measurable sets\<close> |
974 subsection \<open>Lebesgue measurable sets\<close> |
968 |
975 |
969 abbreviation lmeasurable :: "'a::euclidean_space set set" |
976 abbreviation%important lmeasurable :: "'a::euclidean_space set set" |
970 where |
977 where |
971 "lmeasurable \<equiv> fmeasurable lebesgue" |
978 "lmeasurable \<equiv> fmeasurable lebesgue" |
972 |
979 |
973 lemma not_measurable_UNIV [simp]: "UNIV \<notin> lmeasurable" |
980 lemma not_measurable_UNIV [simp]: "UNIV \<notin> lmeasurable" |
974 by (simp add: fmeasurable_def) |
981 by (simp add: fmeasurable_def) |
975 |
982 |
976 lemma lmeasurable_iff_integrable: |
983 lemma%important lmeasurable_iff_integrable: |
977 "S \<in> lmeasurable \<longleftrightarrow> integrable lebesgue (indicator S :: 'a::euclidean_space \<Rightarrow> real)" |
984 "S \<in> lmeasurable \<longleftrightarrow> integrable lebesgue (indicator S :: 'a::euclidean_space \<Rightarrow> real)" |
978 by (auto simp: fmeasurable_def integrable_iff_bounded borel_measurable_indicator_iff ennreal_indicator) |
985 by (auto simp: fmeasurable_def integrable_iff_bounded borel_measurable_indicator_iff ennreal_indicator) |
979 |
986 |
980 lemma lmeasurable_cbox [iff]: "cbox a b \<in> lmeasurable" |
987 lemma lmeasurable_cbox [iff]: "cbox a b \<in> lmeasurable" |
981 and lmeasurable_box [iff]: "box a b \<in> lmeasurable" |
988 and lmeasurable_box [iff]: "box a b \<in> lmeasurable" |
1025 lemma bounded_set_imp_lmeasurable: |
1032 lemma bounded_set_imp_lmeasurable: |
1026 assumes "bounded S" "S \<in> sets lebesgue" shows "S \<in> lmeasurable" |
1033 assumes "bounded S" "S \<in> sets lebesgue" shows "S \<in> lmeasurable" |
1027 by (metis assms bounded_Un emeasure_bounded_finite emeasure_completion fmeasurableI main_part_null_part_Un) |
1034 by (metis assms bounded_Un emeasure_bounded_finite emeasure_completion fmeasurableI main_part_null_part_Un) |
1028 |
1035 |
1029 |
1036 |
1030 subsection\<open>Translation preserves Lebesgue measure\<close> |
1037 subsection%unimportant\<open>Translation preserves Lebesgue measure\<close> |
1031 |
1038 |
1032 lemma sigma_sets_image: |
1039 lemma sigma_sets_image: |
1033 assumes S: "S \<in> sigma_sets \<Omega> M" and "M \<subseteq> Pow \<Omega>" "f ` \<Omega> = \<Omega>" "inj_on f \<Omega>" |
1040 assumes S: "S \<in> sigma_sets \<Omega> M" and "M \<subseteq> Pow \<Omega>" "f ` \<Omega> = \<Omega>" "inj_on f \<Omega>" |
1034 and M: "\<And>y. y \<in> M \<Longrightarrow> f ` y \<in> M" |
1041 and M: "\<And>y. y \<in> M \<Longrightarrow> f ` y \<in> M" |
1035 shows "(f ` S) \<in> sigma_sets \<Omega> M" |
1042 shows "(f ` S) \<in> sigma_sets \<Omega> M" |
1106 subsection \<open>A nice lemma for negligibility proofs\<close> |
1113 subsection \<open>A nice lemma for negligibility proofs\<close> |
1107 |
1114 |
1108 lemma summable_iff_suminf_neq_top: "(\<And>n. f n \<ge> 0) \<Longrightarrow> \<not> summable f \<Longrightarrow> (\<Sum>i. ennreal (f i)) = top" |
1115 lemma summable_iff_suminf_neq_top: "(\<And>n. f n \<ge> 0) \<Longrightarrow> \<not> summable f \<Longrightarrow> (\<Sum>i. ennreal (f i)) = top" |
1109 by (metis summable_suminf_not_top) |
1116 by (metis summable_suminf_not_top) |
1110 |
1117 |
1111 proposition starlike_negligible_bounded_gmeasurable: |
1118 proposition%important starlike_negligible_bounded_gmeasurable: |
1112 fixes S :: "'a :: euclidean_space set" |
1119 fixes S :: "'a :: euclidean_space set" |
1113 assumes S: "S \<in> sets lebesgue" and "bounded S" |
1120 assumes S: "S \<in> sets lebesgue" and "bounded S" |
1114 and eq1: "\<And>c x. \<lbrakk>(c *\<^sub>R x) \<in> S; 0 \<le> c; x \<in> S\<rbrakk> \<Longrightarrow> c = 1" |
1121 and eq1: "\<And>c x. \<lbrakk>(c *\<^sub>R x) \<in> S; 0 \<le> c; x \<in> S\<rbrakk> \<Longrightarrow> c = 1" |
1115 shows "S \<in> null_sets lebesgue" |
1122 shows "S \<in> null_sets lebesgue" |
1116 proof - |
1123 proof%unimportant - |
1117 obtain M where "0 < M" "S \<subseteq> ball 0 M" |
1124 obtain M where "0 < M" "S \<subseteq> ball 0 M" |
1118 using \<open>bounded S\<close> by (auto dest: bounded_subset_ballD) |
1125 using \<open>bounded S\<close> by (auto dest: bounded_subset_ballD) |
1119 |
1126 |
1120 let ?f = "\<lambda>n. root DIM('a) (Suc n)" |
1127 let ?f = "\<lambda>n. root DIM('a) (Suc n)" |
1121 |
1128 |
1230 finally show "emeasure lborel ((\<Union>n. U n) - B) \<le> ennreal e" |
1237 finally show "emeasure lborel ((\<Union>n. U n) - B) \<le> ennreal e" |
1231 by simp |
1238 by simp |
1232 qed |
1239 qed |
1233 qed |
1240 qed |
1234 |
1241 |
1235 lemma outer_regular_lborel: |
1242 lemma%important outer_regular_lborel: |
1236 assumes B: "B \<in> sets borel" and "0 < (e::real)" |
1243 assumes B: "B \<in> sets borel" and "0 < (e::real)" |
1237 obtains U where "open U" "B \<subseteq> U" "emeasure lborel (U - B) < e" |
1244 obtains U where "open U" "B \<subseteq> U" "emeasure lborel (U - B) < e" |
1238 proof - |
1245 proof%unimportant - |
1239 obtain U where U: "open U" "B \<subseteq> U" and "emeasure lborel (U-B) \<le> e/2" |
1246 obtain U where U: "open U" "B \<subseteq> U" and "emeasure lborel (U-B) \<le> e/2" |
1240 using outer_regular_lborel_le [OF B, of "e/2"] \<open>e > 0\<close> |
1247 using outer_regular_lborel_le [OF B, of "e/2"] \<open>e > 0\<close> |
1241 by force |
1248 by force |
1242 moreover have "ennreal (e/2) < ennreal e" |
1249 moreover have "ennreal (e/2) < ennreal e" |
1243 using \<open>e > 0\<close> by (simp add: ennreal_lessI) |
1250 using \<open>e > 0\<close> by (simp add: ennreal_lessI) |