698 from plus_emeasure[OF sets this] show ?thesis by simp |
698 from plus_emeasure[OF sets this] show ?thesis by simp |
699 qed |
699 qed |
700 |
700 |
701 lemma emeasure_insert_ne: |
701 lemma emeasure_insert_ne: |
702 "A \<noteq> {} \<Longrightarrow> {x} \<in> sets M \<Longrightarrow> A \<in> sets M \<Longrightarrow> x \<notin> A \<Longrightarrow> emeasure M (insert x A) = emeasure M {x} + emeasure M A" |
702 "A \<noteq> {} \<Longrightarrow> {x} \<in> sets M \<Longrightarrow> A \<in> sets M \<Longrightarrow> x \<notin> A \<Longrightarrow> emeasure M (insert x A) = emeasure M {x} + emeasure M A" |
703 by (rule emeasure_insert) |
703 by (rule emeasure_insert) |
704 |
704 |
705 lemma emeasure_eq_setsum_singleton: |
705 lemma emeasure_eq_setsum_singleton: |
706 assumes "finite S" "\<And>x. x \<in> S \<Longrightarrow> {x} \<in> sets M" |
706 assumes "finite S" "\<And>x. x \<in> S \<Longrightarrow> {x} \<in> sets M" |
707 shows "emeasure M S = (\<Sum>x\<in>S. emeasure M {x})" |
707 shows "emeasure M S = (\<Sum>x\<in>S. emeasure M {x})" |
708 using setsum_emeasure[of "\<lambda>x. {x}" S M] assms |
708 using setsum_emeasure[of "\<lambda>x. {x}" S M] assms |
875 using null_sets by auto |
875 using null_sets by auto |
876 with sets * show "A - B \<in> null_sets M" "A \<union> B \<in> null_sets M" |
876 with sets * show "A - B \<in> null_sets M" "A \<union> B \<in> null_sets M" |
877 by (auto intro!: antisym) |
877 by (auto intro!: antisym) |
878 qed |
878 qed |
879 |
879 |
880 lemma UN_from_nat_into: |
880 lemma UN_from_nat_into: |
881 assumes I: "countable I" "I \<noteq> {}" |
881 assumes I: "countable I" "I \<noteq> {}" |
882 shows "(\<Union>i\<in>I. N i) = (\<Union>i. N (from_nat_into I i))" |
882 shows "(\<Union>i\<in>I. N i) = (\<Union>i. N (from_nat_into I i))" |
883 proof - |
883 proof - |
884 have "(\<Union>i\<in>I. N i) = \<Union>(N ` range (from_nat_into I))" |
884 have "(\<Union>i\<in>I. N i) = \<Union>(N ` range (from_nat_into I))" |
885 using I by simp |
885 using I by simp |
1098 by (intro null_sets_UN) auto |
1098 by (intro null_sets_UN) auto |
1099 ultimately show "AE x in M. \<forall>i. P i x" |
1099 ultimately show "AE x in M. \<forall>i. P i x" |
1100 unfolding eventually_ae_filter by auto |
1100 unfolding eventually_ae_filter by auto |
1101 qed auto |
1101 qed auto |
1102 |
1102 |
1103 lemma AE_ball_countable: |
1103 lemma AE_ball_countable: |
1104 assumes [intro]: "countable X" |
1104 assumes [intro]: "countable X" |
1105 shows "(AE x in M. \<forall>y\<in>X. P x y) \<longleftrightarrow> (\<forall>y\<in>X. AE x in M. P x y)" |
1105 shows "(AE x in M. \<forall>y\<in>X. P x y) \<longleftrightarrow> (\<forall>y\<in>X. AE x in M. P x y)" |
1106 proof |
1106 proof |
1107 assume "\<forall>y\<in>X. AE x in M. P x y" |
1107 assume "\<forall>y\<in>X. AE x in M. P x y" |
1108 from this[unfolded eventually_ae_filter Bex_def, THEN bchoice] |
1108 from this[unfolded eventually_ae_filter Bex_def, THEN bchoice] |
1119 unfolding eventually_ae_filter by auto |
1119 unfolding eventually_ae_filter by auto |
1120 qed auto |
1120 qed auto |
1121 |
1121 |
1122 lemma AE_discrete_difference: |
1122 lemma AE_discrete_difference: |
1123 assumes X: "countable X" |
1123 assumes X: "countable X" |
1124 assumes null: "\<And>x. x \<in> X \<Longrightarrow> emeasure M {x} = 0" |
1124 assumes null: "\<And>x. x \<in> X \<Longrightarrow> emeasure M {x} = 0" |
1125 assumes sets: "\<And>x. x \<in> X \<Longrightarrow> {x} \<in> sets M" |
1125 assumes sets: "\<And>x. x \<in> X \<Longrightarrow> {x} \<in> sets M" |
1126 shows "AE x in M. x \<notin> X" |
1126 shows "AE x in M. x \<notin> X" |
1127 proof - |
1127 proof - |
1128 have "(\<Union>x\<in>X. {x}) \<in> null_sets M" |
1128 have "(\<Union>x\<in>X. {x}) \<in> null_sets M" |
1129 using assms by (intro null_sets_UN') auto |
1129 using assms by (intro null_sets_UN') auto |
1205 show thesis |
1205 show thesis |
1206 proof cases |
1206 proof cases |
1207 assume "A = {}" with `(\<Union>A) = space M` show thesis |
1207 assume "A = {}" with `(\<Union>A) = space M` show thesis |
1208 by (intro that[of "\<lambda>_. {}"]) auto |
1208 by (intro that[of "\<lambda>_. {}"]) auto |
1209 next |
1209 next |
1210 assume "A \<noteq> {}" |
1210 assume "A \<noteq> {}" |
1211 show thesis |
1211 show thesis |
1212 proof |
1212 proof |
1213 show "range (from_nat_into A) \<subseteq> sets M" |
1213 show "range (from_nat_into A) \<subseteq> sets M" |
1214 using `A \<noteq> {}` A by auto |
1214 using `A \<noteq> {}` A by auto |
1215 have "(\<Union>i. from_nat_into A i) = \<Union>A" |
1215 have "(\<Union>i. from_nat_into A i) = \<Union>A" |
1362 lemma measure_distr: |
1362 lemma measure_distr: |
1363 "f \<in> measurable M N \<Longrightarrow> S \<in> sets N \<Longrightarrow> measure (distr M N f) S = measure M (f -` S \<inter> space M)" |
1363 "f \<in> measurable M N \<Longrightarrow> S \<in> sets N \<Longrightarrow> measure (distr M N f) S = measure M (f -` S \<inter> space M)" |
1364 by (simp add: emeasure_distr measure_def) |
1364 by (simp add: emeasure_distr measure_def) |
1365 |
1365 |
1366 lemma distr_cong_AE: |
1366 lemma distr_cong_AE: |
1367 assumes 1: "M = K" "sets N = sets L" and |
1367 assumes 1: "M = K" "sets N = sets L" and |
1368 2: "(AE x in M. f x = g x)" and "f \<in> measurable M N" and "g \<in> measurable K L" |
1368 2: "(AE x in M. f x = g x)" and "f \<in> measurable M N" and "g \<in> measurable K L" |
1369 shows "distr M N f = distr K L g" |
1369 shows "distr M N f = distr K L g" |
1370 proof (rule measure_eqI) |
1370 proof (rule measure_eqI) |
1371 fix A assume "A \<in> sets (distr M N f)" |
1371 fix A assume "A \<in> sets (distr M N f)" |
1372 with assms show "emeasure (distr M N f) A = emeasure (distr K L g) A" |
1372 with assms show "emeasure (distr M N f) A = emeasure (distr K L g) A" |
1711 have prob_some: "\<And> x. x \<in> s \<Longrightarrow> measure M {x} = measure M {SOME y. y \<in> s}" by blast |
1711 have prob_some: "\<And> x. x \<in> s \<Longrightarrow> measure M {x} = measure M {SOME y. y \<in> s}" by blast |
1712 have "measure M s = (\<Sum> x \<in> s. measure M {x})" |
1712 have "measure M s = (\<Sum> x \<in> s. measure M {x})" |
1713 using finite_measure_eq_setsum_singleton[OF s] by simp |
1713 using finite_measure_eq_setsum_singleton[OF s] by simp |
1714 also have "\<dots> = (\<Sum> x \<in> s. measure M {SOME y. y \<in> s})" using prob_some by auto |
1714 also have "\<dots> = (\<Sum> x \<in> s. measure M {SOME y. y \<in> s})" using prob_some by auto |
1715 also have "\<dots> = real (card s) * measure M {(SOME x. x \<in> s)}" |
1715 also have "\<dots> = real (card s) * measure M {(SOME x. x \<in> s)}" |
1716 using setsum_constant assms by (simp add: real_eq_of_nat) |
1716 using setsum_constant assms by simp |
1717 finally show ?thesis by simp |
1717 finally show ?thesis by simp |
1718 qed simp |
1718 qed simp |
1719 |
1719 |
1720 lemma (in finite_measure) measure_real_sum_image_fn: |
1720 lemma (in finite_measure) measure_real_sum_image_fn: |
1721 assumes "e \<in> sets M" |
1721 assumes "e \<in> sets M" |
1742 assumes "A \<in> sets M" "B \<in> sets M" |
1742 assumes "A \<in> sets M" "B \<in> sets M" |
1743 assumes "measure M A = measure M (space M)" "A \<inter> B = {}" |
1743 assumes "measure M A = measure M (space M)" "A \<inter> B = {}" |
1744 shows "measure M B = 0" |
1744 shows "measure M B = 0" |
1745 using measure_space_inter[of B A] assms by (auto simp: ac_simps) |
1745 using measure_space_inter[of B A] assms by (auto simp: ac_simps) |
1746 lemma (in finite_measure) finite_measure_distr: |
1746 lemma (in finite_measure) finite_measure_distr: |
1747 assumes f: "f \<in> measurable M M'" |
1747 assumes f: "f \<in> measurable M M'" |
1748 shows "finite_measure (distr M M' f)" |
1748 shows "finite_measure (distr M M' f)" |
1749 proof (rule finite_measureI) |
1749 proof (rule finite_measureI) |
1750 have "f -` space M' \<inter> space M = space M" using f by (auto dest: measurable_space) |
1750 have "f -` space M' \<inter> space M = space M" using f by (auto dest: measurable_space) |
1751 with f show "emeasure (distr M M' f) (space (distr M M' f)) \<noteq> \<infinity>" by (auto simp: emeasure_distr) |
1751 with f show "emeasure (distr M M' f) (space (distr M M' f)) \<noteq> \<infinity>" by (auto simp: emeasure_distr) |
1752 qed |
1752 qed |
1793 have additive: "additive (Pow A) ?M" |
1793 have additive: "additive (Pow A) ?M" |
1794 by (auto simp: card_Un_disjoint additive_def) |
1794 by (auto simp: card_Un_disjoint additive_def) |
1795 |
1795 |
1796 interpret ring_of_sets A "Pow A" |
1796 interpret ring_of_sets A "Pow A" |
1797 by (rule ring_of_setsI) auto |
1797 by (rule ring_of_setsI) auto |
1798 show "countably_additive (Pow A) ?M" |
1798 show "countably_additive (Pow A) ?M" |
1799 unfolding countably_additive_iff_continuous_from_below[OF positive additive] |
1799 unfolding countably_additive_iff_continuous_from_below[OF positive additive] |
1800 proof safe |
1800 proof safe |
1801 fix F :: "nat \<Rightarrow> 'a set" assume "incseq F" |
1801 fix F :: "nat \<Rightarrow> 'a set" assume "incseq F" |
1802 show "(\<lambda>i. ?M (F i)) ----> ?M (\<Union>i. F i)" |
1802 show "(\<lambda>i. ?M (F i)) ----> ?M (\<Union>i. F i)" |
1803 proof cases |
1803 proof cases |
1973 with assms show ?thesis |
1973 with assms show ?thesis |
1974 unfolding eventually_ae_filter |
1974 unfolding eventually_ae_filter |
1975 by (auto simp add: space_restrict_space null_sets_def sets_restrict_space_iff |
1975 by (auto simp add: space_restrict_space null_sets_def sets_restrict_space_iff |
1976 emeasure_restrict_space cong: conj_cong |
1976 emeasure_restrict_space cong: conj_cong |
1977 intro!: ex_cong[where f="\<lambda>X. (\<Omega> \<inter> space M) \<inter> X"]) |
1977 intro!: ex_cong[where f="\<lambda>X. (\<Omega> \<inter> space M) \<inter> X"]) |
1978 qed |
1978 qed |
1979 |
1979 |
1980 lemma restrict_restrict_space: |
1980 lemma restrict_restrict_space: |
1981 assumes "A \<inter> space M \<in> sets M" "B \<inter> space M \<in> sets M" |
1981 assumes "A \<inter> space M \<in> sets M" "B \<inter> space M \<in> sets M" |
1982 shows "restrict_space (restrict_space M A) B = restrict_space M (A \<inter> B)" (is "?l = ?r") |
1982 shows "restrict_space (restrict_space M A) B = restrict_space M (A \<inter> B)" (is "?l = ?r") |
1983 proof (rule measure_eqI[symmetric]) |
1983 proof (rule measure_eqI[symmetric]) |
2034 interpret finite_measure M by fact |
2034 interpret finite_measure M by fact |
2035 show ?thesis |
2035 show ?thesis |
2036 by(rule finite_measureI)(simp add: emeasure_restrict_space A space_restrict_space) |
2036 by(rule finite_measureI)(simp add: emeasure_restrict_space A space_restrict_space) |
2037 qed |
2037 qed |
2038 |
2038 |
2039 lemma restrict_distr: |
2039 lemma restrict_distr: |
2040 assumes [measurable]: "f \<in> measurable M N" |
2040 assumes [measurable]: "f \<in> measurable M N" |
2041 assumes [simp]: "\<Omega> \<inter> space N \<in> sets N" and restrict: "f \<in> space M \<rightarrow> \<Omega>" |
2041 assumes [simp]: "\<Omega> \<inter> space N \<in> sets N" and restrict: "f \<in> space M \<rightarrow> \<Omega>" |
2042 shows "restrict_space (distr M N f) \<Omega> = distr M (restrict_space N \<Omega>) f" |
2042 shows "restrict_space (distr M N f) \<Omega> = distr M (restrict_space N \<Omega>) f" |
2043 (is "?l = ?r") |
2043 (is "?l = ?r") |
2044 proof (rule measure_eqI) |
2044 proof (rule measure_eqI) |
2051 |
2051 |
2052 lemma measure_eqI_restrict_generator: |
2052 lemma measure_eqI_restrict_generator: |
2053 assumes E: "Int_stable E" "E \<subseteq> Pow \<Omega>" "\<And>X. X \<in> E \<Longrightarrow> emeasure M X = emeasure N X" |
2053 assumes E: "Int_stable E" "E \<subseteq> Pow \<Omega>" "\<And>X. X \<in> E \<Longrightarrow> emeasure M X = emeasure N X" |
2054 assumes sets_eq: "sets M = sets N" and \<Omega>: "\<Omega> \<in> sets M" |
2054 assumes sets_eq: "sets M = sets N" and \<Omega>: "\<Omega> \<in> sets M" |
2055 assumes "sets (restrict_space M \<Omega>) = sigma_sets \<Omega> E" |
2055 assumes "sets (restrict_space M \<Omega>) = sigma_sets \<Omega> E" |
2056 assumes "sets (restrict_space N \<Omega>) = sigma_sets \<Omega> E" |
2056 assumes "sets (restrict_space N \<Omega>) = sigma_sets \<Omega> E" |
2057 assumes ae: "AE x in M. x \<in> \<Omega>" "AE x in N. x \<in> \<Omega>" |
2057 assumes ae: "AE x in M. x \<in> \<Omega>" "AE x in N. x \<in> \<Omega>" |
2058 assumes A: "countable A" "A \<noteq> {}" "A \<subseteq> E" "\<Union>A = \<Omega>" "\<And>a. a \<in> A \<Longrightarrow> emeasure M a \<noteq> \<infinity>" |
2058 assumes A: "countable A" "A \<noteq> {}" "A \<subseteq> E" "\<Union>A = \<Omega>" "\<And>a. a \<in> A \<Longrightarrow> emeasure M a \<noteq> \<infinity>" |
2059 shows "M = N" |
2059 shows "M = N" |
2060 proof (rule measure_eqI) |
2060 proof (rule measure_eqI) |
2061 fix X assume X: "X \<in> sets M" |
2061 fix X assume X: "X \<in> sets M" |
2087 definition "null_measure M = sigma (space M) (sets M)" |
2087 definition "null_measure M = sigma (space M) (sets M)" |
2088 |
2088 |
2089 lemma space_null_measure[simp]: "space (null_measure M) = space M" |
2089 lemma space_null_measure[simp]: "space (null_measure M) = space M" |
2090 by (simp add: null_measure_def) |
2090 by (simp add: null_measure_def) |
2091 |
2091 |
2092 lemma sets_null_measure[simp, measurable_cong]: "sets (null_measure M) = sets M" |
2092 lemma sets_null_measure[simp, measurable_cong]: "sets (null_measure M) = sets M" |
2093 by (simp add: null_measure_def) |
2093 by (simp add: null_measure_def) |
2094 |
2094 |
2095 lemma emeasure_null_measure[simp]: "emeasure (null_measure M) X = 0" |
2095 lemma emeasure_null_measure[simp]: "emeasure (null_measure M) X = 0" |
2096 by (cases "X \<in> sets M", rule emeasure_measure_of) |
2096 by (cases "X \<in> sets M", rule emeasure_measure_of) |
2097 (auto simp: positive_def countably_additive_def emeasure_notin_sets null_measure_def |
2097 (auto simp: positive_def countably_additive_def emeasure_notin_sets null_measure_def |
2174 shows space_Sup: "space (Sup A) = space a" |
2174 shows space_Sup: "space (Sup A) = space a" |
2175 and sets_Sup: "sets (Sup A) = sets a" |
2175 and sets_Sup: "sets (Sup A) = sets a" |
2176 proof - |
2176 proof - |
2177 have sets: "(SUP a:A. sets a) = sets a" |
2177 have sets: "(SUP a:A. sets a) = sets a" |
2178 proof (intro antisym SUP_least) |
2178 proof (intro antisym SUP_least) |
2179 fix a' show "a' \<in> A \<Longrightarrow> sets a' \<subseteq> sets a" |
2179 fix a' show "a' \<in> A \<Longrightarrow> sets a' \<subseteq> sets a" |
2180 using a chainD[OF A, of a a'] by (auto elim!: less_eq_measure.cases) |
2180 using a chainD[OF A, of a a'] by (auto elim!: less_eq_measure.cases) |
2181 qed (insert \<open>a\<in>A\<close>, auto) |
2181 qed (insert \<open>a\<in>A\<close>, auto) |
2182 have space: "(SUP a:A. space a) = space a" |
2182 have space: "(SUP a:A. space a) = space a" |
2183 proof (intro antisym SUP_least) |
2183 proof (intro antisym SUP_least) |
2184 fix a' show "a' \<in> A \<Longrightarrow> space a' \<subseteq> space a" |
2184 fix a' show "a' \<in> A \<Longrightarrow> space a' \<subseteq> space a" |
2185 using a chainD[OF A, of a a'] by (intro sets_le_imp_space_le) (auto elim!: less_eq_measure.cases) |
2185 using a chainD[OF A, of a a'] by (intro sets_le_imp_space_le) (auto elim!: less_eq_measure.cases) |
2186 qed (insert \<open>a\<in>A\<close>, auto) |
2186 qed (insert \<open>a\<in>A\<close>, auto) |
2187 show "space (Sup A) = space a" |
2187 show "space (Sup A) = space a" |
2188 unfolding Sup_measure_def sets space sets.space_measure_of_eq .. |
2188 unfolding Sup_measure_def sets space sets.space_measure_of_eq .. |
2189 show "sets (Sup A) = sets a" |
2189 show "sets (Sup A) = sets a" |