656 assumes [simp]: "\<And>s. sets (M s) = sets N" |
656 assumes [simp]: "\<And>s. sets (M s) = sets N" |
657 assumes cont: "sup_continuous F" "sup_continuous f" |
657 assumes cont: "sup_continuous F" "sup_continuous f" |
658 assumes meas: "\<And>P. Measurable.pred N P \<Longrightarrow> Measurable.pred N (F P)" |
658 assumes meas: "\<And>P. Measurable.pred N P \<Longrightarrow> Measurable.pred N (F P)" |
659 assumes iter: "\<And>P s. Measurable.pred N P \<Longrightarrow> P \<le> lfp F \<Longrightarrow> emeasure (M s) {x\<in>space N. F P x} = f (\<lambda>s. emeasure (M s) {x\<in>space N. P x}) s" |
659 assumes iter: "\<And>P s. Measurable.pred N P \<Longrightarrow> P \<le> lfp F \<Longrightarrow> emeasure (M s) {x\<in>space N. F P x} = f (\<lambda>s. emeasure (M s) {x\<in>space N. P x}) s" |
660 shows "emeasure (M s) {x\<in>space N. lfp F x} = lfp f s" |
660 shows "emeasure (M s) {x\<in>space N. lfp F x} = lfp f s" |
661 proof (subst lfp_transfer_bounded[where \<alpha>="\<lambda>F s. emeasure (M s) {x\<in>space N. F x}" and g=f and f=F and P="Measurable.pred N", symmetric]) |
661 proof (subst lfp_transfer_bounded[where \<alpha>="\<lambda>F s. emeasure (M s) {x\<in>space N. F x}" and f=F , symmetric]) |
662 fix C assume "incseq C" "\<And>i. Measurable.pred N (C i)" |
662 fix C assume "incseq C" "\<And>i. Measurable.pred N (C i)" |
663 then show "(\<lambda>s. emeasure (M s) {x \<in> space N. (SUP i. C i) x}) = (SUP i. (\<lambda>s. emeasure (M s) {x \<in> space N. C i x}))" |
663 then show "(\<lambda>s. emeasure (M s) {x \<in> space N. (SUP i. C i) x}) = (SUP i. (\<lambda>s. emeasure (M s) {x \<in> space N. C i x}))" |
664 unfolding SUP_apply[abs_def] |
664 unfolding SUP_apply |
665 by (subst SUP_emeasure_incseq) (auto simp: mono_def fun_eq_iff intro!: arg_cong2[where f=emeasure]) |
665 by (subst SUP_emeasure_incseq) (auto simp: mono_def fun_eq_iff intro!: arg_cong2[where f=emeasure]) |
666 qed (auto simp add: iter le_fun_def SUP_apply[abs_def] intro!: meas cont) |
666 qed (auto simp add: iter le_fun_def SUP_apply intro!: meas cont) |
667 |
667 |
668 lemma emeasure_subadditive_finite: |
668 lemma emeasure_subadditive_finite: |
669 "finite I \<Longrightarrow> A ` I \<subseteq> sets M \<Longrightarrow> emeasure M (\<Union>i\<in>I. A i) \<le> (\<Sum>i\<in>I. emeasure M (A i))" |
669 "finite I \<Longrightarrow> A ` I \<subseteq> sets M \<Longrightarrow> emeasure M (\<Union>i\<in>I. A i) \<le> (\<Sum>i\<in>I. emeasure M (A i))" |
670 by (rule sets.subadditive[OF emeasure_positive emeasure_additive]) auto |
670 by (rule sets.subadditive[OF emeasure_positive emeasure_additive]) auto |
671 |
671 |
2009 have [measurable]: "B N \<in> sets M" for N unfolding B_def by auto |
2009 have [measurable]: "B N \<in> sets M" for N unfolding B_def by auto |
2010 have "(\<lambda>N. emeasure M (B N)) \<longlonglongrightarrow> emeasure M (\<Union>N. B N)" |
2010 have "(\<lambda>N. emeasure M (B N)) \<longlonglongrightarrow> emeasure M (\<Union>N. B N)" |
2011 apply (rule Lim_emeasure_incseq) unfolding B_def by (auto simp add: SUP_subset_mono incseq_def) |
2011 apply (rule Lim_emeasure_incseq) unfolding B_def by (auto simp add: SUP_subset_mono incseq_def) |
2012 moreover have "emeasure M (B N) \<le> ennreal (\<Sum>n. measure M (A n))" for N |
2012 moreover have "emeasure M (B N) \<le> ennreal (\<Sum>n. measure M (A n))" for N |
2013 proof - |
2013 proof - |
2014 have *: "(\<Sum>n\<in>{..<N}. measure M (A n)) \<le> (\<Sum>n. measure M (A n))" |
2014 have *: "(\<Sum>n<N. measure M (A n)) \<le> (\<Sum>n. measure M (A n))" |
2015 using assms(3) measure_nonneg sum_le_suminf by blast |
2015 using assms(3) measure_nonneg sum_le_suminf by blast |
2016 |
2016 |
2017 have "emeasure M (B N) \<le> (\<Sum>n\<in>{..<N}. emeasure M (A n))" |
2017 have "emeasure M (B N) \<le> (\<Sum>n<N. emeasure M (A n))" |
2018 unfolding B_def by (rule emeasure_subadditive_finite, auto) |
2018 unfolding B_def by (rule emeasure_subadditive_finite, auto) |
2019 also have "\<dots> = (\<Sum>n\<in>{..<N}. ennreal(measure M (A n)))" |
2019 also have "\<dots> = (\<Sum>n<N. ennreal(measure M (A n)))" |
2020 using assms(2) by (simp add: emeasure_eq_ennreal_measure less_top) |
2020 using assms(2) by (simp add: emeasure_eq_ennreal_measure less_top) |
2021 also have "\<dots> = ennreal (\<Sum>n\<in>{..<N}. measure M (A n))" |
2021 also have "\<dots> = ennreal (\<Sum>n<N. measure M (A n))" |
2022 by auto |
2022 by auto |
2023 also have "\<dots> \<le> ennreal (\<Sum>n. measure M (A n))" |
2023 also have "\<dots> \<le> ennreal (\<Sum>n. measure M (A n))" |
2024 using * by (auto simp: ennreal_leI) |
2024 using * by (auto simp: ennreal_leI) |
2025 finally show ?thesis by simp |
2025 finally show ?thesis by simp |
2026 qed |
2026 qed |
2065 and "\<And>n. emeasure M (A n) < \<infinity>" "summable (\<lambda>n. measure M (A n))" |
2065 and "\<And>n. emeasure M (A n) < \<infinity>" "summable (\<lambda>n. measure M (A n))" |
2066 shows "AE x in M. eventually (\<lambda>n. x \<in> space M - A n) sequentially" |
2066 shows "AE x in M. eventually (\<lambda>n. x \<in> space M - A n) sequentially" |
2067 proof - |
2067 proof - |
2068 have "AE x in M. x \<notin> limsup A" |
2068 have "AE x in M. x \<notin> limsup A" |
2069 using borel_cantelli_limsup1[OF assms] unfolding eventually_ae_filter by auto |
2069 using borel_cantelli_limsup1[OF assms] unfolding eventually_ae_filter by auto |
2070 moreover |
2070 moreover have "\<forall>\<^sub>F n in sequentially. x \<notin> A n" if "x \<notin> limsup A" for x |
2071 { |
2071 using that by (auto simp: limsup_INF_SUP eventually_sequentially) |
2072 fix x assume "x \<notin> limsup A" |
|
2073 then obtain N where "x \<notin> (\<Union>n\<in>{N..}. A n)" unfolding limsup_INF_SUP by blast |
|
2074 then have "eventually (\<lambda>n. x \<notin> A n) sequentially" using eventually_sequentially by auto |
|
2075 } |
|
2076 ultimately show ?thesis by auto |
2072 ultimately show ?thesis by auto |
2077 qed |
2073 qed |
2078 |
2074 |
2079 subsection \<open>Measure spaces with \<^term>\<open>emeasure M (space M) < \<infinity>\<close>\<close> |
2075 subsection \<open>Measure spaces with \<^term>\<open>emeasure M (space M) < \<infinity>\<close>\<close> |
2080 |
2076 |
2286 assumes cont: "inf_continuous F" "inf_continuous f" |
2282 assumes cont: "inf_continuous F" "inf_continuous f" |
2287 assumes meas: "\<And>P. Measurable.pred N P \<Longrightarrow> Measurable.pred N (F P)" |
2283 assumes meas: "\<And>P. Measurable.pred N P \<Longrightarrow> Measurable.pred N (F P)" |
2288 assumes iter: "\<And>P s. Measurable.pred N P \<Longrightarrow> emeasure (M s) {x\<in>space N. F P x} = f (\<lambda>s. emeasure (M s) {x\<in>space N. P x}) s" |
2284 assumes iter: "\<And>P s. Measurable.pred N P \<Longrightarrow> emeasure (M s) {x\<in>space N. F P x} = f (\<lambda>s. emeasure (M s) {x\<in>space N. P x}) s" |
2289 assumes bound: "\<And>P. f P \<le> f (\<lambda>s. emeasure (M s) (space (M s)))" |
2285 assumes bound: "\<And>P. f P \<le> f (\<lambda>s. emeasure (M s) (space (M s)))" |
2290 shows "emeasure (M s) {x\<in>space N. gfp F x} = gfp f s" |
2286 shows "emeasure (M s) {x\<in>space N. gfp F x} = gfp f s" |
2291 proof (subst gfp_transfer_bounded[where \<alpha>="\<lambda>F s. emeasure (M s) {x\<in>space N. F x}" and g=f and f=F and |
2287 proof (subst gfp_transfer_bounded[where \<alpha>="\<lambda>F s. emeasure (M s) {x\<in>space N. F x}" and P="Measurable.pred N", symmetric]) |
2292 P="Measurable.pred N", symmetric]) |
|
2293 interpret finite_measure "M s" for s by fact |
2288 interpret finite_measure "M s" for s by fact |
2294 fix C assume "decseq C" "\<And>i. Measurable.pred N (C i)" |
2289 fix C assume "decseq C" "\<And>i. Measurable.pred N (C i)" |
2295 then show "(\<lambda>s. emeasure (M s) {x \<in> space N. (INF i. C i) x}) = (INF i. (\<lambda>s. emeasure (M s) {x \<in> space N. C i x}))" |
2290 then show "(\<lambda>s. emeasure (M s) {x \<in> space N. (INF i. C i) x}) = (INF i. (\<lambda>s. emeasure (M s) {x \<in> space N. C i x}))" |
2296 unfolding INF_apply[abs_def] |
2291 unfolding INF_apply |
2297 by (subst INF_emeasure_decseq) (auto simp: antimono_def fun_eq_iff intro!: arg_cong2[where f=emeasure]) |
2292 by (subst INF_emeasure_decseq) (auto simp: antimono_def fun_eq_iff intro!: arg_cong2[where f=emeasure]) |
2298 next |
2293 next |
2299 show "f x \<le> (\<lambda>s. emeasure (M s) {x \<in> space N. F top x})" for x |
2294 show "f x \<le> (\<lambda>s. emeasure (M s) {x \<in> space N. F top x})" for x |
2300 using bound[of x] sets_eq_imp_space_eq[OF sets] by (simp add: iter) |
2295 using bound[of x] sets_eq_imp_space_eq[OF sets] by (simp add: iter) |
2301 qed (auto simp add: iter le_fun_def INF_apply[abs_def] intro!: meas cont) |
2296 qed (auto simp add: iter le_fun_def INF_apply[abs_def] intro!: meas cont) |
2819 (\<forall>X\<in>sets (restrict_space M A). X \<inter> Y = {} \<longrightarrow> (restrict_space M A) X \<le> (restrict_space N A) X)" |
2814 (\<forall>X\<in>sets (restrict_space M A). X \<inter> Y = {} \<longrightarrow> (restrict_space M A) X \<le> (restrict_space N A) X)" |
2820 proof (rule finite_unsigned_Hahn_decomposition) |
2815 proof (rule finite_unsigned_Hahn_decomposition) |
2821 show "finite_measure (restrict_space M A)" "finite_measure (restrict_space N A)" |
2816 show "finite_measure (restrict_space M A)" "finite_measure (restrict_space N A)" |
2822 by (auto simp: space_restrict_space emeasure_restrict_space less_top intro!: finite_measureI) |
2817 by (auto simp: space_restrict_space emeasure_restrict_space less_top intro!: finite_measureI) |
2823 qed (simp add: sets_restrict_space) |
2818 qed (simp add: sets_restrict_space) |
2824 then show ?thesis |
2819 with assms show ?thesis |
2825 apply - |
2820 by (metis Int_subset_iff emeasure_restrict_space sets.Int_space_eq2 sets_restrict_space_iff space_restrict_space) |
2826 apply (erule bexE) |
|
2827 subgoal for Y |
|
2828 apply (intro bexI[of _ Y] conjI ballI conjI) |
|
2829 apply (simp_all add: sets_restrict_space emeasure_restrict_space) |
|
2830 apply safe |
|
2831 subgoal for X Z |
|
2832 by (erule ballE[of _ _ X]) (auto simp add: Int_absorb1) |
|
2833 subgoal for X Z |
|
2834 by (erule ballE[of _ _ X]) (auto simp add: Int_absorb1 ac_simps) |
|
2835 apply auto |
|
2836 done |
|
2837 done |
|
2838 qed |
2821 qed |
2839 |
2822 |
2840 text\<^marker>\<open>tag important\<close> \<open> |
2823 text\<^marker>\<open>tag important\<close> \<open> |
2841 Define a lexicographical order on \<^type>\<open>measure\<close>, in the order space, sets and measure. The parts |
2824 Define a lexicographical order on \<^type>\<open>measure\<close>, in the order space, sets and measure. The parts |
2842 of the lexicographical order are point-wise ordered. |
2825 of the lexicographical order are point-wise ordered. |
2874 qed (auto simp: le_measure_iff less_measure_def split: if_split_asm intro: measure_eqI) |
2857 qed (auto simp: le_measure_iff less_measure_def split: if_split_asm intro: measure_eqI) |
2875 |
2858 |
2876 end |
2859 end |
2877 |
2860 |
2878 proposition le_measure: "sets M = sets N \<Longrightarrow> M \<le> N \<longleftrightarrow> (\<forall>A\<in>sets M. emeasure M A \<le> emeasure N A)" |
2861 proposition le_measure: "sets M = sets N \<Longrightarrow> M \<le> N \<longleftrightarrow> (\<forall>A\<in>sets M. emeasure M A \<le> emeasure N A)" |
2879 apply - |
2862 by (metis emeasure_neq_0_sets le_fun_def le_measure_iff order_class.order_eq_iff sets_eq_imp_space_eq) |
2880 apply (auto simp: le_measure_iff le_fun_def dest: sets_eq_imp_space_eq) |
|
2881 subgoal for X |
|
2882 by (cases "X \<in> sets M") (auto simp: emeasure_notin_sets) |
|
2883 done |
|
2884 |
2863 |
2885 definition\<^marker>\<open>tag important\<close> sup_measure' :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> 'a measure" where |
2864 definition\<^marker>\<open>tag important\<close> sup_measure' :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> 'a measure" where |
2886 "sup_measure' A B = |
2865 "sup_measure' A B = |
2887 measure_of (space A) (sets A) |
2866 measure_of (space A) (sets A) |
2888 (\<lambda>X. SUP Y\<in>sets A. emeasure A (X \<inter> Y) + emeasure B (X \<inter> - Y))" |
2867 (\<lambda>X. SUP Y\<in>sets A. emeasure A (X \<inter> Y) + emeasure B (X \<inter> - Y))" |
2906 proof (rule countably_additiveI, goal_cases) |
2885 proof (rule countably_additiveI, goal_cases) |
2907 case (1 X) |
2886 case (1 X) |
2908 then have [measurable]: "\<And>i. X i \<in> sets A" and "disjoint_family X" |
2887 then have [measurable]: "\<And>i. X i \<in> sets A" and "disjoint_family X" |
2909 by auto |
2888 by auto |
2910 have disjoint: "disjoint_family (\<lambda>i. X i \<inter> Y)" "disjoint_family (\<lambda>i. X i - Y)" for Y |
2889 have disjoint: "disjoint_family (\<lambda>i. X i \<inter> Y)" "disjoint_family (\<lambda>i. X i - Y)" for Y |
2911 by (auto intro: disjoint_family_on_bisimulation [OF \<open>disjoint_family X\<close>, simplified]) |
2890 using "1"(2) disjoint_family_subset by fastforce+ |
2912 have "(\<Sum>i. ?S (X i)) = (SUP Y\<in>sets A. \<Sum>i. ?d (X i) Y)" |
2891 have "(\<Sum>i. ?S (X i)) = (SUP Y\<in>sets A. \<Sum>i. ?d (X i) Y)" |
2913 proof (rule ennreal_suminf_SUP_eq_directed) |
2892 proof (rule ennreal_suminf_SUP_eq_directed) |
2914 fix J :: "nat set" and a b assume "finite J" and [measurable]: "a \<in> sets A" "b \<in> sets A" |
2893 fix J :: "nat set" and a b assume "finite J" and [measurable]: "a \<in> sets A" "b \<in> sets A" |
2915 have "\<exists>c\<in>sets A. c \<subseteq> X i \<and> (\<forall>a\<in>sets A. ?d (X i) a \<le> ?d (X i) c)" for i |
2894 have "\<exists>c\<in>sets A. c \<subseteq> X i \<and> (\<forall>a\<in>sets A. ?d (X i) a \<le> ?d (X i) c)" for i |
2916 proof cases |
2895 proof cases |
2917 assume "emeasure A (X i) = top \<or> emeasure B (X i) = top" |
2896 assume "emeasure A (X i) = top \<or> emeasure B (X i) = top" |
2918 then show ?thesis |
2897 then show ?thesis |
2919 proof |
2898 by force |
2920 assume "emeasure A (X i) = top" then show ?thesis |
|
2921 by (intro bexI[of _ "X i"]) auto |
|
2922 next |
|
2923 assume "emeasure B (X i) = top" then show ?thesis |
|
2924 by (intro bexI[of _ "{}"]) auto |
|
2925 qed |
|
2926 next |
2899 next |
2927 assume finite: "\<not> (emeasure A (X i) = top \<or> emeasure B (X i) = top)" |
2900 assume finite: "\<not> (emeasure A (X i) = top \<or> emeasure B (X i) = top)" |
2928 then have "\<exists>Y\<in>sets A. Y \<subseteq> X i \<and> (\<forall>C\<in>sets A. C \<subseteq> Y \<longrightarrow> B C \<le> A C) \<and> (\<forall>C\<in>sets A. C \<subseteq> X i \<longrightarrow> C \<inter> Y = {} \<longrightarrow> A C \<le> B C)" |
2901 then have "\<exists>Y\<in>sets A. Y \<subseteq> X i \<and> (\<forall>C\<in>sets A. C \<subseteq> Y \<longrightarrow> B C \<le> A C) \<and> (\<forall>C\<in>sets A. C \<subseteq> X i \<longrightarrow> C \<inter> Y = {} \<longrightarrow> A C \<le> B C)" |
2929 using unsigned_Hahn_decomposition[of B A "X i"] by simp |
2902 using unsigned_Hahn_decomposition[of B A "X i"] by simp |
2930 then obtain Y where [measurable]: "Y \<in> sets A" and [simp]: "Y \<subseteq> X i" |
2903 then obtain Y where [measurable]: "Y \<in> sets A" and [simp]: "Y \<subseteq> X i" |
2931 and B_le_A: "\<And>C. C \<in> sets A \<Longrightarrow> C \<subseteq> Y \<Longrightarrow> B C \<le> A C" |
2904 and B_le_A: "\<And>C. C \<in> sets A \<Longrightarrow> C \<subseteq> Y \<Longrightarrow> B C \<le> A C" |
2932 and A_le_B: "\<And>C. C \<in> sets A \<Longrightarrow> C \<subseteq> X i \<Longrightarrow> C \<inter> Y = {} \<Longrightarrow> A C \<le> B C" |
2905 and A_le_B: "\<And>C. C \<in> sets A \<Longrightarrow> C \<subseteq> X i \<Longrightarrow> C \<inter> Y = {} \<Longrightarrow> A C \<le> B C" |
2933 by auto |
2906 by auto |
2934 |
2907 |
2935 show ?thesis |
2908 show ?thesis |
2936 proof (intro bexI[of _ Y] ballI conjI) |
2909 proof (intro bexI ballI conjI) |
2937 fix a assume [measurable]: "a \<in> sets A" |
2910 fix a assume [measurable]: "a \<in> sets A" |
2938 have *: "(X i \<inter> a \<inter> Y \<union> (X i \<inter> a - Y)) = X i \<inter> a" "(X i - a) \<inter> Y \<union> (X i - a - Y) = X i \<inter> - a" |
2911 have *: "(X i \<inter> a \<inter> Y \<union> (X i \<inter> a - Y)) = X i \<inter> a" "(X i - a) \<inter> Y \<union> (X i - a - Y) = X i \<inter> - a" |
2939 for a Y by auto |
2912 for a Y by auto |
2940 then have "?d (X i) a = |
2913 then have "?d (X i) a = |
2941 (A (X i \<inter> a \<inter> Y) + A (X i \<inter> a \<inter> - Y)) + (B (X i \<inter> - a \<inter> Y) + B (X i \<inter> - a \<inter> - Y))" |
2914 (A (X i \<inter> a \<inter> Y) + A (X i \<inter> a \<inter> - Y)) + (B (X i \<inter> - a \<inter> Y) + B (X i \<inter> - a \<inter> - Y))" |
2951 qed |
2924 qed |
2952 then obtain C where [measurable]: "C i \<in> sets A" and "C i \<subseteq> X i" |
2925 then obtain C where [measurable]: "C i \<in> sets A" and "C i \<subseteq> X i" |
2953 and C: "\<And>a. a \<in> sets A \<Longrightarrow> ?d (X i) a \<le> ?d (X i) (C i)" for i |
2926 and C: "\<And>a. a \<in> sets A \<Longrightarrow> ?d (X i) a \<le> ?d (X i) (C i)" for i |
2954 by metis |
2927 by metis |
2955 have *: "X i \<inter> (\<Union>i. C i) = X i \<inter> C i" for i |
2928 have *: "X i \<inter> (\<Union>i. C i) = X i \<inter> C i" for i |
2956 proof safe |
2929 using \<open>disjoint_family X\<close> \<open>\<And>i. C i \<subseteq> X i\<close> |
2957 fix x j assume "x \<in> X i" "x \<in> C j" |
2930 by (simp add: disjoint_family_on_def disjoint_iff_not_equal set_eq_iff) (metis subsetD) |
2958 moreover have "i = j \<or> X i \<inter> X j = {}" |
2931 then have **: "X i \<inter> - (\<Union>i. C i) = X i \<inter> - C i" for i by blast |
2959 using \<open>disjoint_family X\<close> by (auto simp: disjoint_family_on_def) |
2932 moreover have "(\<Union>i. C i) \<in> sets A" |
2960 ultimately show "x \<in> C i" |
2933 by fastforce |
2961 using \<open>C i \<subseteq> X i\<close> \<open>C j \<subseteq> X j\<close> by auto |
2934 ultimately show "\<exists>c\<in>sets A. \<forall>i\<in>J. ?d (X i) a \<le> ?d (X i) c \<and> ?d (X i) b \<le> ?d (X i) c" |
2962 qed auto |
2935 by (metis "*" C \<open>a \<in> sets A\<close> \<open>b \<in> sets A\<close>) |
2963 have **: "X i \<inter> - (\<Union>i. C i) = X i \<inter> - C i" for i |
|
2964 proof safe |
|
2965 fix x j assume "x \<in> X i" "x \<notin> C i" "x \<in> C j" |
|
2966 moreover have "i = j \<or> X i \<inter> X j = {}" |
|
2967 using \<open>disjoint_family X\<close> by (auto simp: disjoint_family_on_def) |
|
2968 ultimately show False |
|
2969 using \<open>C i \<subseteq> X i\<close> \<open>C j \<subseteq> X j\<close> by auto |
|
2970 qed auto |
|
2971 show "\<exists>c\<in>sets A. \<forall>i\<in>J. ?d (X i) a \<le> ?d (X i) c \<and> ?d (X i) b \<le> ?d (X i) c" |
|
2972 apply (intro bexI[of _ "\<Union>i. C i"]) |
|
2973 unfolding * ** |
|
2974 apply (intro C ballI conjI) |
|
2975 apply auto |
|
2976 done |
|
2977 qed |
2936 qed |
2978 also have "\<dots> = ?S (\<Union>i. X i)" |
2937 also have "\<dots> = ?S (\<Union>i. X i)" |
2979 apply (simp only: UN_extend_simps(4)) |
2938 proof - |
2980 apply (rule arg_cong [of _ _ Sup]) |
2939 have "\<And>Y. Y \<in> sets A \<Longrightarrow> (\<Sum>i. emeasure A (X i \<inter> Y) + emeasure B (X i \<inter> -Y)) |
2981 apply (rule image_cong) |
2940 = emeasure A (\<Union>i. X i \<inter> Y) + emeasure B (\<Union>i. X i \<inter> -Y)" |
2982 apply (fact refl) |
2941 using disjoint |
2983 using disjoint |
2942 by (auto simp flip: suminf_add Diff_eq simp add: image_subset_iff suminf_emeasure) |
2984 apply (auto simp add: suminf_add [symmetric] Diff_eq [symmetric] image_subset_iff suminf_emeasure simp del: UN_simps) |
2943 then show ?thesis by force |
2985 done |
2944 qed |
2986 finally show "(\<Sum>i. ?S (X i)) = ?S (\<Union>i. X i)" . |
2945 finally show "(\<Sum>i. ?S (X i)) = ?S (\<Union>i. X i)" . |
2987 qed |
2946 qed |
2988 qed (auto dest: sets.sets_into_space simp: positive_def intro!: SUP_const) |
2947 qed (auto dest: sets.sets_into_space simp: positive_def intro!: SUP_const) |
2989 qed |
2948 qed |
2990 |
2949 |
3266 proof (intro arg_cong [of _ _ Sup] image_cong refl) |
3225 proof (intro arg_cong [of _ _ Sup] image_cong refl) |
3267 fix i assume i: "i \<in> {P. finite P \<and> P \<subseteq> M}" |
3226 fix i assume i: "i \<in> {P. finite P \<and> P \<subseteq> M}" |
3268 show "(\<Sum>n. ?\<mu> i (F n)) = ?\<mu> i (\<Union>(F ` UNIV))" |
3227 show "(\<Sum>n. ?\<mu> i (F n)) = ?\<mu> i (\<Union>(F ` UNIV))" |
3269 proof cases |
3228 proof cases |
3270 assume "i \<noteq> {}" with i ** show ?thesis |
3229 assume "i \<noteq> {}" with i ** show ?thesis |
3271 apply (intro suminf_emeasure \<open>disjoint_family F\<close>) |
3230 by (smt (verit, best) "1"(2) Measure_Space.sets_sup_measure_F assms(1) mem_Collect_eq subset_eq suminf_cong suminf_emeasure) |
3272 apply (subst sets_sup_measure_F[OF _ _ sets_eq]) |
|
3273 apply auto |
|
3274 done |
|
3275 qed simp |
3231 qed simp |
3276 qed |
3232 qed |
3277 qed |
3233 qed |
3278 qed |
3234 qed |
3279 show "positive (sets (Sup_measure' M)) ?S" |
3235 show "positive (sets (Sup_measure' M)) ?S" |
3535 qed |
3491 qed |
3536 qed |
3492 qed |
3537 |
3493 |
3538 subsubsection\<^marker>\<open>tag unimportant\<close> \<open>Supremum of a set of \<open>\<sigma>\<close>-algebras\<close> |
3494 subsubsection\<^marker>\<open>tag unimportant\<close> \<open>Supremum of a set of \<open>\<sigma>\<close>-algebras\<close> |
3539 |
3495 |
3540 lemma space_Sup_eq_UN: "space (Sup M) = (\<Union>x\<in>M. space x)" |
3496 lemma space_Sup_eq_UN: "space (Sup M) = (\<Union>x\<in>M. space x)" (is "?L=?R") |
3541 unfolding Sup_measure_def |
3497 proof |
3542 apply (intro Sup_lexord[where P="\<lambda>x. space x = _"]) |
3498 show "?L \<subseteq> ?R" |
3543 apply (subst space_Sup_measure'2) |
3499 using Sup_lexord[where P="\<lambda>x. space x = _"] |
3544 apply auto [] |
3500 apply (clarsimp simp: Sup_measure_def) |
3545 apply (subst space_measure_of[OF UN_space_closed]) |
3501 by (smt (verit) Sup_lexord_def UN_E mem_Collect_eq space_Sup_measure'2 space_measure_of_conv) |
3546 apply auto |
3502 qed (use Sup_upper le_measureD1 in fastforce) |
3547 done |
3503 |
3548 |
3504 |
3549 lemma sets_Sup_eq: |
3505 lemma sets_Sup_eq: |
3550 assumes *: "\<And>m. m \<in> M \<Longrightarrow> space m = X" and "M \<noteq> {}" |
3506 assumes *: "\<And>m. m \<in> M \<Longrightarrow> space m = X" and "M \<noteq> {}" |
3551 shows "sets (Sup M) = sigma_sets X (\<Union>x\<in>M. sets x)" |
3507 shows "sets (Sup M) = sigma_sets X (\<Union>x\<in>M. sets x)" |
3552 unfolding Sup_measure_def |
3508 unfolding Sup_measure_def |
3553 apply (rule Sup_lexord1) |
3509 proof (rule Sup_lexord1 [OF \<open>M \<noteq> {}\<close>]) |
3554 apply fact |
3510 show "sets (Sup_lexord sets Sup_measure' (\<lambda>U. sigma (\<Union> (space ` U)) (\<Union> (sets ` U))) M) |
3555 apply (simp add: assms) |
3511 = sigma_sets X (\<Union> (sets ` M))" |
3556 apply (rule Sup_lexord) |
3512 apply (rule Sup_lexord) |
3557 subgoal premises that for a S |
3513 apply (metis (mono_tags, lifting) "*" empty_iff mem_Collect_eq sets.sigma_sets_eq sets_Sup_measure') |
3558 unfolding that(3) that(2)[symmetric] |
3514 by (metis "*" SUP_eq_const UN_space_closed assms(2) sets_measure_of) |
3559 using that(1) |
3515 qed (use * in blast) |
3560 apply (subst sets_Sup_measure'2) |
3516 |
3561 apply (intro arg_cong2[where f=sigma_sets]) |
|
3562 apply (auto simp: *) |
|
3563 done |
|
3564 apply (subst sets_measure_of[OF UN_space_closed]) |
|
3565 apply (simp add: assms) |
|
3566 done |
|
3567 |
3517 |
3568 lemma in_sets_Sup: "(\<And>m. m \<in> M \<Longrightarrow> space m = X) \<Longrightarrow> m \<in> M \<Longrightarrow> A \<in> sets m \<Longrightarrow> A \<in> sets (Sup M)" |
3518 lemma in_sets_Sup: "(\<And>m. m \<in> M \<Longrightarrow> space m = X) \<Longrightarrow> m \<in> M \<Longrightarrow> A \<in> sets m \<Longrightarrow> A \<in> sets (Sup M)" |
3569 by (subst sets_Sup_eq[where X=X]) auto |
3519 by (subst sets_Sup_eq[where X=X]) auto |
3570 |
3520 |
3571 lemma Sup_lexord_rel: |
3521 lemma Sup_lexord_rel: |
3581 ultimately show ?thesis |
3531 ultimately show ?thesis |
3582 using assms by (auto simp: Sup_lexord_def Let_def image_comp) |
3532 using assms by (auto simp: Sup_lexord_def Let_def image_comp) |
3583 qed |
3533 qed |
3584 |
3534 |
3585 lemma sets_SUP_cong: |
3535 lemma sets_SUP_cong: |
3586 assumes eq: "\<And>i. i \<in> I \<Longrightarrow> sets (M i) = sets (N i)" shows "sets (SUP i\<in>I. M i) = sets (SUP i\<in>I. N i)" |
3536 assumes eq: "\<And>i. i \<in> I \<Longrightarrow> sets (M i) = sets (N i)" |
|
3537 shows "sets (SUP i\<in>I. M i) = sets (SUP i\<in>I. N i)" |
3587 unfolding Sup_measure_def |
3538 unfolding Sup_measure_def |
3588 using eq eq[THEN sets_eq_imp_space_eq] |
3539 using eq eq[THEN sets_eq_imp_space_eq] |
3589 apply (intro Sup_lexord_rel[where R="\<lambda>x y. sets x = sets y"]) |
3540 by (intro Sup_lexord_rel[where R="\<lambda>x y. sets x = sets y"], simp_all add: sets_Sup_measure'2) |
3590 apply simp |
|
3591 apply simp |
|
3592 apply (simp add: sets_Sup_measure'2) |
|
3593 apply (intro arg_cong2[where f="\<lambda>x y. sets (sigma x y)"]) |
|
3594 apply auto |
|
3595 done |
|
3596 |
3541 |
3597 lemma sets_Sup_in_sets: |
3542 lemma sets_Sup_in_sets: |
3598 assumes "M \<noteq> {}" |
3543 assumes "M \<noteq> {}" |
3599 assumes "\<And>m. m \<in> M \<Longrightarrow> space m = space N" |
3544 assumes "\<And>m. m \<in> M \<Longrightarrow> space m = space N" |
3600 assumes "\<And>m. m \<in> M \<Longrightarrow> sets m \<subseteq> sets N" |
3545 assumes "\<And>m. m \<in> M \<Longrightarrow> sets m \<subseteq> sets N" |
3624 shows "f \<in> measurable N (Sup M)" |
3569 shows "f \<in> measurable N (Sup M)" |
3625 proof - |
3570 proof - |
3626 from M obtain m where "m \<in> M" by auto |
3571 from M obtain m where "m \<in> M" by auto |
3627 have space_eq: "\<And>n. n \<in> M \<Longrightarrow> space n = space m" |
3572 have space_eq: "\<And>n. n \<in> M \<Longrightarrow> space n = space m" |
3628 by (intro const_space \<open>m \<in> M\<close>) |
3573 by (intro const_space \<open>m \<in> M\<close>) |
|
3574 have eq: "sets (sigma (\<Union> (space ` M)) (\<Union> (sets ` M))) = sets (Sup M)" |
|
3575 by (metis M SUP_eq_const UN_space_closed sets_Sup_eq sets_measure_of space_eq) |
3629 have "f \<in> measurable N (sigma (\<Union>m\<in>M. space m) (\<Union>m\<in>M. sets m))" |
3576 have "f \<in> measurable N (sigma (\<Union>m\<in>M. space m) (\<Union>m\<in>M. sets m))" |
3630 proof (rule measurable_measure_of) |
3577 proof (rule measurable_measure_of) |
3631 show "f \<in> space N \<rightarrow> \<Union>(space ` M)" |
3578 show "f \<in> space N \<rightarrow> \<Union>(space ` M)" |
3632 using measurable_space[OF f] M by auto |
3579 using measurable_space[OF f] M by auto |
3633 qed (auto intro: measurable_sets f dest: sets.sets_into_space) |
3580 qed (auto intro: measurable_sets f dest: sets.sets_into_space) |
3634 also have "measurable N (sigma (\<Union>m\<in>M. space m) (\<Union>m\<in>M. sets m)) = measurable N (Sup M)" |
3581 also have "measurable N (sigma (\<Union>m\<in>M. space m) (\<Union>m\<in>M. sets m)) = measurable N (Sup M)" |
3635 apply (intro measurable_cong_sets refl) |
3582 using eq measurable_cong_sets by blast |
3636 apply (subst sets_Sup_eq[OF space_eq M]) |
|
3637 apply simp |
|
3638 apply (subst sets_measure_of[OF UN_space_closed]) |
|
3639 apply (simp add: space_eq M) |
|
3640 done |
|
3641 finally show ?thesis . |
3583 finally show ?thesis . |
3642 qed |
3584 qed |
3643 |
3585 |
3644 lemma measurable_SUP2: |
3586 lemma measurable_SUP2: |
3645 "I \<noteq> {} \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> f \<in> measurable N (M i)) \<Longrightarrow> |
3587 "I \<noteq> {} \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> f \<in> measurable N (M i)) \<Longrightarrow> |
3650 assumes [simp]: "M \<noteq> {}" and M: "\<And>m. m \<in> M \<Longrightarrow> m \<subseteq> Pow \<Omega>" |
3592 assumes [simp]: "M \<noteq> {}" and M: "\<And>m. m \<in> M \<Longrightarrow> m \<subseteq> Pow \<Omega>" |
3651 shows "sets (SUP m\<in>M. sigma \<Omega> m) = sets (sigma \<Omega> (\<Union>M))" |
3593 shows "sets (SUP m\<in>M. sigma \<Omega> m) = sets (sigma \<Omega> (\<Union>M))" |
3652 proof - |
3594 proof - |
3653 { fix a m assume "a \<in> sigma_sets \<Omega> m" "m \<in> M" |
3595 { fix a m assume "a \<in> sigma_sets \<Omega> m" "m \<in> M" |
3654 then have "a \<in> sigma_sets \<Omega> (\<Union>M)" |
3596 then have "a \<in> sigma_sets \<Omega> (\<Union>M)" |
3655 by induction (auto intro: sigma_sets.intros(2-)) } |
3597 by induction (auto intro: sigma_sets.intros(2-)) } |
|
3598 then have "sigma_sets \<Omega> (\<Union> (sigma_sets \<Omega> ` M)) = sigma_sets \<Omega> (\<Union> M)" |
|
3599 by (smt (verit, best) UN_iff Union_iff sigma_sets.Basic sigma_sets_eqI) |
3656 then show "sets (SUP m\<in>M. sigma \<Omega> m) = sets (sigma \<Omega> (\<Union>M))" |
3600 then show "sets (SUP m\<in>M. sigma \<Omega> m) = sets (sigma \<Omega> (\<Union>M))" |
3657 apply (subst sets_Sup_eq[where X="\<Omega>"]) |
3601 by (subst sets_Sup_eq) (fastforce simp add: M Union_least)+ |
3658 apply (auto simp add: M) [] |
|
3659 apply auto [] |
|
3660 apply (simp add: space_measure_of_conv M Union_least) |
|
3661 apply (rule sigma_sets_eqI) |
|
3662 apply auto |
|
3663 done |
|
3664 qed |
3602 qed |
3665 |
3603 |
3666 lemma Sup_sigma: |
3604 lemma Sup_sigma: |
3667 assumes [simp]: "M \<noteq> {}" and M: "\<And>m. m \<in> M \<Longrightarrow> m \<subseteq> Pow \<Omega>" |
3605 assumes [simp]: "M \<noteq> {}" and M: "\<And>m. m \<in> M \<Longrightarrow> m \<subseteq> Pow \<Omega>" |
3668 shows "(SUP m\<in>M. sigma \<Omega> m) = (sigma \<Omega> (\<Union>M))" |
3606 shows "(SUP m\<in>M. sigma \<Omega> m) = (sigma \<Omega> (\<Union>M))" |
3670 have *: "\<Union>M \<subseteq> Pow \<Omega>" |
3608 have *: "\<Union>M \<subseteq> Pow \<Omega>" |
3671 using M by auto |
3609 using M by auto |
3672 show "sigma \<Omega> (\<Union>M) \<le> (SUP m\<in>M. sigma \<Omega> m)" |
3610 show "sigma \<Omega> (\<Union>M) \<le> (SUP m\<in>M. sigma \<Omega> m)" |
3673 proof (intro less_eq_measure.intros(3)) |
3611 proof (intro less_eq_measure.intros(3)) |
3674 show "space (sigma \<Omega> (\<Union>M)) = space (SUP m\<in>M. sigma \<Omega> m)" |
3612 show "space (sigma \<Omega> (\<Union>M)) = space (SUP m\<in>M. sigma \<Omega> m)" |
3675 "sets (sigma \<Omega> (\<Union>M)) = sets (SUP m\<in>M. sigma \<Omega> m)" |
3613 "sets (sigma \<Omega> (\<Union>M)) = sets (SUP m\<in>M. sigma \<Omega> m)" |
3676 using sets_Sup_sigma[OF assms] sets_Sup_sigma[OF assms, THEN sets_eq_imp_space_eq] |
3614 by (auto simp add: M sets_Sup_sigma sets_eq_imp_space_eq) |
3677 by auto |
|
3678 qed (simp add: emeasure_sigma le_fun_def) |
3615 qed (simp add: emeasure_sigma le_fun_def) |
3679 fix m assume "m \<in> M" then show "sigma \<Omega> m \<le> sigma \<Omega> (\<Union>M)" |
3616 fix m assume "m \<in> M" then show "sigma \<Omega> m \<le> sigma \<Omega> (\<Union>M)" |
3680 by (subst sigma_le_iff) (auto simp add: M *) |
3617 by (subst sigma_le_iff) (auto simp add: M *) |
3681 qed |
3618 qed |
3682 |
3619 |
3685 using Sup_sigma[of "f`M" \<Omega>] by (auto simp: image_comp) |
3622 using Sup_sigma[of "f`M" \<Omega>] by (auto simp: image_comp) |
3686 |
3623 |
3687 lemma sets_vimage_Sup_eq: |
3624 lemma sets_vimage_Sup_eq: |
3688 assumes *: "M \<noteq> {}" "f \<in> X \<rightarrow> Y" "\<And>m. m \<in> M \<Longrightarrow> space m = Y" |
3625 assumes *: "M \<noteq> {}" "f \<in> X \<rightarrow> Y" "\<And>m. m \<in> M \<Longrightarrow> space m = Y" |
3689 shows "sets (vimage_algebra X f (Sup M)) = sets (SUP m \<in> M. vimage_algebra X f m)" |
3626 shows "sets (vimage_algebra X f (Sup M)) = sets (SUP m \<in> M. vimage_algebra X f m)" |
3690 (is "?IS = ?SI") |
3627 (is "?L = ?R") |
3691 proof |
3628 proof |
3692 show "?IS \<subseteq> ?SI" |
3629 have "\<And>m. m \<in> M \<Longrightarrow> f \<in> Sup (vimage_algebra X f ` M) \<rightarrow>\<^sub>M m" |
3693 apply (intro sets_image_in_sets measurable_Sup2) |
3630 using assms |
3694 apply (simp add: space_Sup_eq_UN *) |
3631 by (smt (verit, del_insts) Pi_iff imageE image_eqI measurable_Sup1 |
3695 apply (simp add: *) |
3632 measurable_vimage_algebra1 space_vimage_algebra) |
3696 apply (intro measurable_Sup1) |
3633 then show "?L \<subseteq> ?R" |
3697 apply (rule imageI) |
3634 by (intro sets_image_in_sets measurable_Sup2) (simp_all add: space_Sup_eq_UN *) |
3698 apply assumption |
3635 show "?R \<subseteq> ?L" |
3699 apply (rule measurable_vimage_algebra1) |
|
3700 apply (auto simp: *) |
|
3701 done |
|
3702 show "?SI \<subseteq> ?IS" |
|
3703 apply (intro sets_Sup_in_sets) |
3636 apply (intro sets_Sup_in_sets) |
3704 apply (auto simp: *) [] |
3637 apply (force simp add: * space_Sup_eq_UN sets_vimage_algebra2 intro: in_sets_Sup)+ |
3705 apply (auto simp: *) [] |
|
3706 apply (elim imageE) |
|
3707 apply simp |
|
3708 apply (rule sets_image_in_sets) |
|
3709 apply simp |
|
3710 apply (simp add: measurable_def) |
|
3711 apply (simp add: * space_Sup_eq_UN sets_vimage_algebra2) |
|
3712 apply (auto intro: in_sets_Sup[OF *(3)]) |
|
3713 done |
3638 done |
3714 qed |
3639 qed |
3715 |
3640 |
3716 lemma restrict_space_eq_vimage_algebra': |
3641 lemma restrict_space_eq_vimage_algebra': |
3717 "sets (restrict_space M \<Omega>) = sets (vimage_algebra (\<Omega> \<inter> space M) (\<lambda>x. x) M)" |
3642 "sets (restrict_space M \<Omega>) = sets (vimage_algebra (\<Omega> \<inter> space M) (\<lambda>x. x) M)" |
3741 by auto |
3666 by auto |
3742 qed |
3667 qed |
3743 |
3668 |
3744 lemma measurable_iff_sets: |
3669 lemma measurable_iff_sets: |
3745 "f \<in> measurable M N \<longleftrightarrow> (f \<in> space M \<rightarrow> space N \<and> sets (vimage_algebra (space M) f N) \<subseteq> sets M)" |
3670 "f \<in> measurable M N \<longleftrightarrow> (f \<in> space M \<rightarrow> space N \<and> sets (vimage_algebra (space M) f N) \<subseteq> sets M)" |
3746 proof - |
|
3747 have *: "{f -` A \<inter> space M |A. A \<in> sets N} \<subseteq> Pow (space M)" |
|
3748 by auto |
|
3749 show ?thesis |
|
3750 unfolding measurable_def |
3671 unfolding measurable_def |
3751 by (auto simp add: vimage_algebra_def sigma_le_sets[OF *]) |
3672 by (smt (verit, ccfv_threshold) mem_Collect_eq sets_vimage_algebra sigma_sets_le_sets_iff subset_eq) |
3752 qed |
|
3753 |
3673 |
3754 lemma sets_vimage_algebra_space: "X \<in> sets (vimage_algebra X f M)" |
3674 lemma sets_vimage_algebra_space: "X \<in> sets (vimage_algebra X f M)" |
3755 using sets.top[of "vimage_algebra X f M"] by simp |
3675 using sets.top[of "vimage_algebra X f M"] by simp |
3756 |
3676 |
3757 lemma measurable_mono: |
3677 lemma measurable_mono: |
3762 proof safe |
3682 proof safe |
3763 fix f A assume "f \<in> space M \<rightarrow> space N" "A \<in> sets N'" |
3683 fix f A assume "f \<in> space M \<rightarrow> space N" "A \<in> sets N'" |
3764 moreover assume "\<forall>y\<in>sets N. f -` y \<inter> space M \<in> sets M" note this[THEN bspec, of A] |
3684 moreover assume "\<forall>y\<in>sets N. f -` y \<inter> space M \<in> sets M" note this[THEN bspec, of A] |
3765 ultimately show "f -` A \<inter> space M' \<in> sets M'" |
3685 ultimately show "f -` A \<inter> space M' \<in> sets M'" |
3766 using assms by auto |
3686 using assms by auto |
3767 qed (insert N M, auto) |
3687 qed (use N M in auto) |
3768 |
3688 |
3769 lemma measurable_Sup_measurable: |
3689 lemma measurable_Sup_measurable: |
3770 assumes f: "f \<in> space N \<rightarrow> A" |
3690 assumes f: "f \<in> space N \<rightarrow> A" |
3771 shows "f \<in> measurable N (Sup {M. space M = A \<and> f \<in> measurable N M})" |
3691 shows "f \<in> measurable N (Sup {M. space M = A \<and> f \<in> measurable N M})" |
3772 proof (rule measurable_Sup2) |
3692 proof (rule measurable_Sup2) |
3778 lemma (in sigma_algebra) sigma_sets_subset': |
3698 lemma (in sigma_algebra) sigma_sets_subset': |
3779 assumes a: "a \<subseteq> M" "\<Omega>' \<in> M" |
3699 assumes a: "a \<subseteq> M" "\<Omega>' \<in> M" |
3780 shows "sigma_sets \<Omega>' a \<subseteq> M" |
3700 shows "sigma_sets \<Omega>' a \<subseteq> M" |
3781 proof |
3701 proof |
3782 show "x \<in> M" if x: "x \<in> sigma_sets \<Omega>' a" for x |
3702 show "x \<in> M" if x: "x \<in> sigma_sets \<Omega>' a" for x |
3783 using x by (induct rule: sigma_sets.induct) (insert a, auto) |
3703 using x by (induct rule: sigma_sets.induct) (use a in auto) |
3784 qed |
3704 qed |
3785 |
3705 |
3786 lemma in_sets_SUP: "i \<in> I \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> space (M i) = Y) \<Longrightarrow> X \<in> sets (M i) \<Longrightarrow> X \<in> sets (SUP i\<in>I. M i)" |
3706 lemma in_sets_SUP: "i \<in> I \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> space (M i) = Y) \<Longrightarrow> X \<in> sets (M i) \<Longrightarrow> X \<in> sets (SUP i\<in>I. M i)" |
3787 by (intro in_sets_Sup[where X=Y]) auto |
3707 by (intro in_sets_Sup[where X=Y]) auto |
3788 |
3708 |
3800 |
3720 |
3801 lemma mono_vimage_algebra: |
3721 lemma mono_vimage_algebra: |
3802 "sets M \<le> sets N \<Longrightarrow> sets (vimage_algebra X f M) \<subseteq> sets (vimage_algebra X f N)" |
3722 "sets M \<le> sets N \<Longrightarrow> sets (vimage_algebra X f M) \<subseteq> sets (vimage_algebra X f N)" |
3803 using sets.top[of "sigma X {f -` A \<inter> X |A. A \<in> sets N}"] |
3723 using sets.top[of "sigma X {f -` A \<inter> X |A. A \<in> sets N}"] |
3804 unfolding vimage_algebra_def |
3724 unfolding vimage_algebra_def |
3805 apply (subst (asm) space_measure_of) |
3725 by (smt (verit, del_insts) space_measure_of sigma_le_sets Pow_iff inf_le2 mem_Collect_eq subset_eq) |
3806 apply auto [] |
|
3807 apply (subst sigma_le_sets) |
|
3808 apply auto |
|
3809 done |
|
3810 |
3726 |
3811 lemma mono_restrict_space: "sets M \<le> sets N \<Longrightarrow> sets (restrict_space M X) \<subseteq> sets (restrict_space N X)" |
3727 lemma mono_restrict_space: "sets M \<le> sets N \<Longrightarrow> sets (restrict_space M X) \<subseteq> sets (restrict_space N X)" |
3812 unfolding sets_restrict_space by (rule image_mono) |
3728 unfolding sets_restrict_space by (rule image_mono) |
3813 |
3729 |
3814 lemma sets_eq_bot: "sets M = {{}} \<longleftrightarrow> M = bot" |
3730 lemma sets_eq_bot: "sets M = {{}} \<longleftrightarrow> M = bot" |
3815 apply safe |
3731 by (metis measure_eqI emeasure_empty sets_bot singletonD) |
3816 apply (intro measure_eqI) |
|
3817 apply auto |
|
3818 done |
|
3819 |
3732 |
3820 lemma sets_eq_bot2: "{{}} = sets M \<longleftrightarrow> M = bot" |
3733 lemma sets_eq_bot2: "{{}} = sets M \<longleftrightarrow> M = bot" |
3821 using sets_eq_bot[of M] by blast |
3734 using sets_eq_bot[of M] by blast |
3822 |
3735 |
3823 |
3736 |
3824 lemma (in finite_measure) countable_support: |
3737 lemma (in finite_measure) countable_support: |
3825 "countable {x. measure M {x} \<noteq> 0}" |
3738 "countable {x. measure M {x} \<noteq> 0}" |
3826 proof cases |
3739 proof cases |
3827 assume "measure M (space M) = 0" |
3740 assume "measure M (space M) = 0" |
3828 with bounded_measure measure_le_0_iff have "{x. measure M {x} \<noteq> 0} = {}" |
3741 then show ?thesis |
3829 by auto |
3742 by (metis (mono_tags, lifting) bounded_measure measure_le_0_iff Collect_empty_eq countable_empty) |
3830 then show ?thesis |
|
3831 by simp |
|
3832 next |
3743 next |
3833 let ?M = "measure M (space M)" and ?m = "\<lambda>x. measure M {x}" |
3744 let ?M = "measure M (space M)" and ?m = "\<lambda>x. measure M {x}" |
3834 assume "?M \<noteq> 0" |
3745 assume "?M \<noteq> 0" |
3835 then have *: "{x. ?m x \<noteq> 0} = (\<Union>n. {x. ?M / Suc n < ?m x})" |
3746 then have *: "{x. ?m x \<noteq> 0} = (\<Union>n. {x. ?M / Suc n < ?m x})" |
3836 using reals_Archimedean[of "?m x / ?M" for x] |
3747 using reals_Archimedean[of "?m x / ?M" for x] |
3838 have **: "\<And>n. finite {x. ?M / Suc n < ?m x}" |
3749 have **: "\<And>n. finite {x. ?M / Suc n < ?m x}" |
3839 proof (rule ccontr) |
3750 proof (rule ccontr) |
3840 fix n assume "infinite {x. ?M / Suc n < ?m x}" (is "infinite ?X") |
3751 fix n assume "infinite {x. ?M / Suc n < ?m x}" (is "infinite ?X") |
3841 then obtain X where "finite X" "card X = Suc (Suc n)" "X \<subseteq> ?X" |
3752 then obtain X where "finite X" "card X = Suc (Suc n)" "X \<subseteq> ?X" |
3842 by (metis infinite_arbitrarily_large) |
3753 by (metis infinite_arbitrarily_large) |
3843 from this(3) have *: "\<And>x. x \<in> X \<Longrightarrow> ?M / Suc n \<le> ?m x" |
3754 then have *: "\<And>x. x \<in> X \<Longrightarrow> ?M / Suc n \<le> ?m x" |
3844 by auto |
3755 by auto |
3845 { fix x assume "x \<in> X" |
3756 { fix x assume "x \<in> X" |
3846 from \<open>?M \<noteq> 0\<close> *[OF this] have "?m x \<noteq> 0" by (auto simp: field_simps measure_le_0_iff) |
3757 from \<open>?M \<noteq> 0\<close> *[OF this] have "?m x \<noteq> 0" by (auto simp: field_simps measure_le_0_iff) |
3847 then have "{x} \<in> sets M" by (auto dest: measure_notin_sets) } |
3758 then have "{x} \<in> sets M" by (auto dest: measure_notin_sets) } |
3848 note singleton_sets = this |
3759 note singleton_sets = this |