17 fixes f :: "nat \<Rightarrow> ereal" |
17 fixes f :: "nat \<Rightarrow> ereal" |
18 assumes "disjoint_family A" "x \<in> A i" "\<And>i. 0 \<le> f i" |
18 assumes "disjoint_family A" "x \<in> A i" "\<And>i. 0 \<le> f i" |
19 shows "(\<Sum>n. f n * indicator (A n) x) = f i" |
19 shows "(\<Sum>n. f n * indicator (A n) x) = f i" |
20 proof - |
20 proof - |
21 have **: "\<And>n. f n * indicator (A n) x = (if n = i then f n else 0 :: ereal)" |
21 have **: "\<And>n. f n * indicator (A n) x = (if n = i then f n else 0 :: ereal)" |
22 using `x \<in> A i` assms unfolding disjoint_family_on_def indicator_def by auto |
22 using \<open>x \<in> A i\<close> assms unfolding disjoint_family_on_def indicator_def by auto |
23 then have "\<And>n. (\<Sum>j<n. f j * indicator (A j) x) = (if i < n then f i else 0 :: ereal)" |
23 then have "\<And>n. (\<Sum>j<n. f j * indicator (A j) x) = (if i < n then f i else 0 :: ereal)" |
24 by (auto simp: setsum.If_cases) |
24 by (auto simp: setsum.If_cases) |
25 moreover have "(SUP n. if i < n then f i else 0) = (f i :: ereal)" |
25 moreover have "(SUP n. if i < n then f i else 0) = (f i :: ereal)" |
26 proof (rule SUP_eqI) |
26 proof (rule SUP_eqI) |
27 fix y :: ereal assume "\<And>n. n \<in> UNIV \<Longrightarrow> (if i < n then f i else 0) \<le> y" |
27 fix y :: ereal assume "\<And>n. n \<in> UNIV \<Longrightarrow> (if i < n then f i else 0) \<le> y" |
35 assumes "disjoint_family A" |
35 assumes "disjoint_family A" |
36 shows "(\<Sum>n. indicator (A n) x :: ereal) = indicator (\<Union>i. A i) x" |
36 shows "(\<Sum>n. indicator (A n) x :: ereal) = indicator (\<Union>i. A i) x" |
37 proof cases |
37 proof cases |
38 assume *: "x \<in> (\<Union>i. A i)" |
38 assume *: "x \<in> (\<Union>i. A i)" |
39 then obtain i where "x \<in> A i" by auto |
39 then obtain i where "x \<in> A i" by auto |
40 from suminf_cmult_indicator[OF assms(1), OF `x \<in> A i`, of "\<lambda>k. 1"] |
40 from suminf_cmult_indicator[OF assms(1), OF \<open>x \<in> A i\<close>, of "\<lambda>k. 1"] |
41 show ?thesis using * by simp |
41 show ?thesis using * by simp |
42 qed simp |
42 qed simp |
43 |
43 |
44 lemma setsum_indicator_disjoint_family: |
44 lemma setsum_indicator_disjoint_family: |
45 fixes f :: "'d \<Rightarrow> 'e::semiring_1" |
45 fixes f :: "'d \<Rightarrow> 'e::semiring_1" |
46 assumes d: "disjoint_family_on A P" and "x \<in> A j" and "finite P" and "j \<in> P" |
46 assumes d: "disjoint_family_on A P" and "x \<in> A j" and "finite P" and "j \<in> P" |
47 shows "(\<Sum>i\<in>P. f i * indicator (A i) x) = f j" |
47 shows "(\<Sum>i\<in>P. f i * indicator (A i) x) = f j" |
48 proof - |
48 proof - |
49 have "P \<inter> {i. x \<in> A i} = {j}" |
49 have "P \<inter> {i. x \<in> A i} = {j}" |
50 using d `x \<in> A j` `j \<in> P` unfolding disjoint_family_on_def |
50 using d \<open>x \<in> A j\<close> \<open>j \<in> P\<close> unfolding disjoint_family_on_def |
51 by auto |
51 by auto |
52 thus ?thesis |
52 thus ?thesis |
53 unfolding indicator_def |
53 unfolding indicator_def |
54 by (simp add: if_distrib setsum.If_cases[OF `finite P`]) |
54 by (simp add: if_distrib setsum.If_cases[OF \<open>finite P\<close>]) |
55 qed |
55 qed |
56 |
56 |
57 text {* |
57 text \<open> |
58 The type for emeasure spaces is already defined in @{theory Sigma_Algebra}, as it is also used to |
58 The type for emeasure spaces is already defined in @{theory Sigma_Algebra}, as it is also used to |
59 represent sigma algebras (with an arbitrary emeasure). |
59 represent sigma algebras (with an arbitrary emeasure). |
60 *} |
60 \<close> |
61 |
61 |
62 subsection "Extend binary sets" |
62 subsection "Extend binary sets" |
63 |
63 |
64 lemma LIMSEQ_binaryset: |
64 lemma LIMSEQ_binaryset: |
65 assumes f: "f {} = 0" |
65 assumes f: "f {} = 0" |
89 lemma suminf_binaryset_eq: |
89 lemma suminf_binaryset_eq: |
90 fixes f :: "'a set \<Rightarrow> 'b::{comm_monoid_add, t2_space}" |
90 fixes f :: "'a set \<Rightarrow> 'b::{comm_monoid_add, t2_space}" |
91 shows "f {} = 0 \<Longrightarrow> (\<Sum>n. f (binaryset A B n)) = f A + f B" |
91 shows "f {} = 0 \<Longrightarrow> (\<Sum>n. f (binaryset A B n)) = f A + f B" |
92 by (metis binaryset_sums sums_unique) |
92 by (metis binaryset_sums sums_unique) |
93 |
93 |
94 subsection {* Properties of a premeasure @{term \<mu>} *} |
94 subsection \<open>Properties of a premeasure @{term \<mu>}\<close> |
95 |
95 |
96 text {* |
96 text \<open> |
97 The definitions for @{const positive} and @{const countably_additive} should be here, by they are |
97 The definitions for @{const positive} and @{const countably_additive} should be here, by they are |
98 necessary to define @{typ "'a measure"} in @{theory Sigma_Algebra}. |
98 necessary to define @{typ "'a measure"} in @{theory Sigma_Algebra}. |
99 *} |
99 \<close> |
100 |
100 |
101 definition additive where |
101 definition additive where |
102 "additive M \<mu> \<longleftrightarrow> (\<forall>x\<in>M. \<forall>y\<in>M. x \<inter> y = {} \<longrightarrow> \<mu> (x \<union> y) = \<mu> x + \<mu> y)" |
102 "additive M \<mu> \<longleftrightarrow> (\<forall>x\<in>M. \<forall>y\<in>M. x \<inter> y = {} \<longrightarrow> \<mu> (x \<union> y) = \<mu> x + \<mu> y)" |
103 |
103 |
104 definition increasing where |
104 definition increasing where |
132 then have "(\<Sum>i\<le>Suc n. f (disjointed A i)) = f (A n) + f (disjointed A (Suc n))" |
132 then have "(\<Sum>i\<le>Suc n. f (disjointed A i)) = f (A n) + f (disjointed A (Suc n))" |
133 by simp |
133 by simp |
134 also have "\<dots> = f (A n \<union> disjointed A (Suc n))" |
134 also have "\<dots> = f (A n \<union> disjointed A (Suc n))" |
135 using A by (subst f(2)[THEN additiveD]) (auto simp: disjointed_mono) |
135 using A by (subst f(2)[THEN additiveD]) (auto simp: disjointed_mono) |
136 also have "A n \<union> disjointed A (Suc n) = A (Suc n)" |
136 also have "A n \<union> disjointed A (Suc n) = A (Suc n)" |
137 using `incseq A` by (auto dest: incseq_SucD simp: disjointed_mono) |
137 using \<open>incseq A\<close> by (auto dest: incseq_SucD simp: disjointed_mono) |
138 finally show ?case . |
138 finally show ?case . |
139 qed simp |
139 qed simp |
140 |
140 |
141 lemma (in ring_of_sets) additive_sum: |
141 lemma (in ring_of_sets) additive_sum: |
142 fixes A:: "'i \<Rightarrow> 'a set" |
142 fixes A:: "'i \<Rightarrow> 'a set" |
143 assumes f: "positive M f" and ad: "additive M f" and "finite S" |
143 assumes f: "positive M f" and ad: "additive M f" and "finite S" |
144 and A: "A`S \<subseteq> M" |
144 and A: "A`S \<subseteq> M" |
145 and disj: "disjoint_family_on A S" |
145 and disj: "disjoint_family_on A S" |
146 shows "(\<Sum>i\<in>S. f (A i)) = f (\<Union>i\<in>S. A i)" |
146 shows "(\<Sum>i\<in>S. f (A i)) = f (\<Union>i\<in>S. A i)" |
147 using `finite S` disj A |
147 using \<open>finite S\<close> disj A |
148 proof induct |
148 proof induct |
149 case empty show ?case using f by (simp add: positive_def) |
149 case empty show ?case using f by (simp add: positive_def) |
150 next |
150 next |
151 case (insert s S) |
151 case (insert s S) |
152 then have "A s \<inter> (\<Union>i\<in>S. A i) = {}" |
152 then have "A s \<inter> (\<Union>i\<in>S. A i) = {}" |
153 by (auto simp add: disjoint_family_on_def neq_iff) |
153 by (auto simp add: disjoint_family_on_def neq_iff) |
154 moreover |
154 moreover |
155 have "A s \<in> M" using insert by blast |
155 have "A s \<in> M" using insert by blast |
156 moreover have "(\<Union>i\<in>S. A i) \<in> M" |
156 moreover have "(\<Union>i\<in>S. A i) \<in> M" |
157 using insert `finite S` by auto |
157 using insert \<open>finite S\<close> by auto |
158 ultimately have "f (A s \<union> (\<Union>i\<in>S. A i)) = f (A s) + f(\<Union>i\<in>S. A i)" |
158 ultimately have "f (A s \<union> (\<Union>i\<in>S. A i)) = f (A s) + f(\<Union>i\<in>S. A i)" |
159 using ad UNION_in_sets A by (auto simp add: additive_def) |
159 using ad UNION_in_sets A by (auto simp add: additive_def) |
160 with insert show ?case using ad disjoint_family_on_mono[of S "insert s S" A] |
160 with insert show ?case using ad disjoint_family_on_mono[of S "insert s S" A] |
161 by (auto simp add: additive_def subset_insertI) |
161 by (auto simp add: additive_def subset_insertI) |
162 qed |
162 qed |
252 qed |
252 qed |
253 have "finite (\<Union>i. F i)" |
253 have "finite (\<Union>i. F i)" |
254 by (metis F(2) assms(1) infinite_super sets_into_space) |
254 by (metis F(2) assms(1) infinite_super sets_into_space) |
255 |
255 |
256 have F_subset: "{i. \<mu> (F i) \<noteq> 0} \<subseteq> {i. F i \<noteq> {}}" |
256 have F_subset: "{i. \<mu> (F i) \<noteq> 0} \<subseteq> {i. F i \<noteq> {}}" |
257 by (auto simp: positiveD_empty[OF `positive M \<mu>`]) |
257 by (auto simp: positiveD_empty[OF \<open>positive M \<mu>\<close>]) |
258 moreover have fin_not_empty: "finite {i. F i \<noteq> {}}" |
258 moreover have fin_not_empty: "finite {i. F i \<noteq> {}}" |
259 proof (rule finite_imageD) |
259 proof (rule finite_imageD) |
260 from f have "f`{i. F i \<noteq> {}} \<subseteq> (\<Union>i. F i)" by auto |
260 from f have "f`{i. F i \<noteq> {}} \<subseteq> (\<Union>i. F i)" by auto |
261 then show "finite (f`{i. F i \<noteq> {}})" |
261 then show "finite (f`{i. F i \<noteq> {}})" |
262 by (rule finite_subset) fact |
262 by (rule finite_subset) fact |
270 from fin_not_0 have "(\<Sum>i. \<mu> (F i)) = (\<Sum>i | \<mu> (F i) \<noteq> 0. \<mu> (F i))" |
270 from fin_not_0 have "(\<Sum>i. \<mu> (F i)) = (\<Sum>i | \<mu> (F i) \<noteq> 0. \<mu> (F i))" |
271 by (rule suminf_finite) auto |
271 by (rule suminf_finite) auto |
272 also have "\<dots> = (\<Sum>i | F i \<noteq> {}. \<mu> (F i))" |
272 also have "\<dots> = (\<Sum>i | F i \<noteq> {}. \<mu> (F i))" |
273 using fin_not_empty F_subset by (rule setsum.mono_neutral_left) auto |
273 using fin_not_empty F_subset by (rule setsum.mono_neutral_left) auto |
274 also have "\<dots> = \<mu> (\<Union>i\<in>{i. F i \<noteq> {}}. F i)" |
274 also have "\<dots> = \<mu> (\<Union>i\<in>{i. F i \<noteq> {}}. F i)" |
275 using `positive M \<mu>` `additive M \<mu>` fin_not_empty disj_not_empty F by (intro additive_sum) auto |
275 using \<open>positive M \<mu>\<close> \<open>additive M \<mu>\<close> fin_not_empty disj_not_empty F by (intro additive_sum) auto |
276 also have "\<dots> = \<mu> (\<Union>i. F i)" |
276 also have "\<dots> = \<mu> (\<Union>i. F i)" |
277 by (rule arg_cong[where f=\<mu>]) auto |
277 by (rule arg_cong[where f=\<mu>]) auto |
278 finally show "(\<Sum>i. \<mu> (F i)) = \<mu> (\<Union>i. F i)" . |
278 finally show "(\<Sum>i. \<mu> (F i)) = \<mu> (\<Union>i. F i)" . |
279 qed |
279 qed |
280 |
280 |
325 \<longleftrightarrow> (\<forall>A. range A \<subseteq> M \<longrightarrow> decseq A \<longrightarrow> (\<Inter>i. A i) = {} \<longrightarrow> (\<forall>i. f (A i) \<noteq> \<infinity>) \<longrightarrow> (\<lambda>i. f (A i)) ----> 0)" |
325 \<longleftrightarrow> (\<forall>A. range A \<subseteq> M \<longrightarrow> decseq A \<longrightarrow> (\<Inter>i. A i) = {} \<longrightarrow> (\<forall>i. f (A i) \<noteq> \<infinity>) \<longrightarrow> (\<lambda>i. f (A i)) ----> 0)" |
326 proof safe |
326 proof safe |
327 assume cont: "(\<forall>A. range A \<subseteq> M \<longrightarrow> decseq A \<longrightarrow> (\<Inter>i. A i) \<in> M \<longrightarrow> (\<forall>i. f (A i) \<noteq> \<infinity>) \<longrightarrow> (\<lambda>i. f (A i)) ----> f (\<Inter>i. A i))" |
327 assume cont: "(\<forall>A. range A \<subseteq> M \<longrightarrow> decseq A \<longrightarrow> (\<Inter>i. A i) \<in> M \<longrightarrow> (\<forall>i. f (A i) \<noteq> \<infinity>) \<longrightarrow> (\<lambda>i. f (A i)) ----> f (\<Inter>i. A i))" |
328 fix A :: "nat \<Rightarrow> 'a set" assume A: "range A \<subseteq> M" "decseq A" "(\<Inter>i. A i) = {}" "\<forall>i. f (A i) \<noteq> \<infinity>" |
328 fix A :: "nat \<Rightarrow> 'a set" assume A: "range A \<subseteq> M" "decseq A" "(\<Inter>i. A i) = {}" "\<forall>i. f (A i) \<noteq> \<infinity>" |
329 with cont[THEN spec, of A] show "(\<lambda>i. f (A i)) ----> 0" |
329 with cont[THEN spec, of A] show "(\<lambda>i. f (A i)) ----> 0" |
330 using `positive M f`[unfolded positive_def] by auto |
330 using \<open>positive M f\<close>[unfolded positive_def] by auto |
331 next |
331 next |
332 assume cont: "\<forall>A. range A \<subseteq> M \<longrightarrow> decseq A \<longrightarrow> (\<Inter>i. A i) = {} \<longrightarrow> (\<forall>i. f (A i) \<noteq> \<infinity>) \<longrightarrow> (\<lambda>i. f (A i)) ----> 0" |
332 assume cont: "\<forall>A. range A \<subseteq> M \<longrightarrow> decseq A \<longrightarrow> (\<Inter>i. A i) = {} \<longrightarrow> (\<forall>i. f (A i) \<noteq> \<infinity>) \<longrightarrow> (\<lambda>i. f (A i)) ----> 0" |
333 fix A :: "nat \<Rightarrow> 'a set" assume A: "range A \<subseteq> M" "decseq A" "(\<Inter>i. A i) \<in> M" "\<forall>i. f (A i) \<noteq> \<infinity>" |
333 fix A :: "nat \<Rightarrow> 'a set" assume A: "range A \<subseteq> M" "decseq A" "(\<Inter>i. A i) \<in> M" "\<forall>i. f (A i) \<noteq> \<infinity>" |
334 |
334 |
335 have f_mono: "\<And>a b. a \<in> M \<Longrightarrow> b \<in> M \<Longrightarrow> a \<subseteq> b \<Longrightarrow> f a \<le> f b" |
335 have f_mono: "\<And>a b. a \<in> M \<Longrightarrow> b \<in> M \<Longrightarrow> a \<subseteq> b \<Longrightarrow> f a \<le> f b" |
413 shows "countably_additive M f" |
413 shows "countably_additive M f" |
414 using countably_additive_iff_continuous_from_below[OF f] |
414 using countably_additive_iff_continuous_from_below[OF f] |
415 using empty_continuous_imp_continuous_from_below[OF f fin] cont |
415 using empty_continuous_imp_continuous_from_below[OF f fin] cont |
416 by blast |
416 by blast |
417 |
417 |
418 subsection {* Properties of @{const emeasure} *} |
418 subsection \<open>Properties of @{const emeasure}\<close> |
419 |
419 |
420 lemma emeasure_positive: "positive (sets M) (emeasure M)" |
420 lemma emeasure_positive: "positive (sets M) (emeasure M)" |
421 by (cases M) (auto simp: sets_def emeasure_def Abs_measure_inverse measure_space_def) |
421 by (cases M) (auto simp: sets_def emeasure_def Abs_measure_inverse measure_space_def) |
422 |
422 |
423 lemma emeasure_empty[simp, intro]: "emeasure M {} = 0" |
423 lemma emeasure_empty[simp, intro]: "emeasure M {} = 0" |
481 by (metis Un_Diff_cancel Un_absorb1 s sets.sets_into_space) |
481 by (metis Un_Diff_cancel Un_absorb1 s sets.sets_into_space) |
482 also have "... = emeasure M s + emeasure M (space M - s)" |
482 also have "... = emeasure M s + emeasure M (space M - s)" |
483 by (rule plus_emeasure[symmetric]) (auto simp add: s) |
483 by (rule plus_emeasure[symmetric]) (auto simp add: s) |
484 finally have "emeasure M (space M) = emeasure M s + emeasure M (space M - s)" . |
484 finally have "emeasure M (space M) = emeasure M s + emeasure M (space M - s)" . |
485 then show ?thesis |
485 then show ?thesis |
486 using fin `0 \<le> emeasure M s` |
486 using fin \<open>0 \<le> emeasure M s\<close> |
487 unfolding ereal_eq_minus_iff by (auto simp: ac_simps) |
487 unfolding ereal_eq_minus_iff by (auto simp: ac_simps) |
488 qed |
488 qed |
489 |
489 |
490 lemma emeasure_Diff: |
490 lemma emeasure_Diff: |
491 assumes finite: "emeasure M B \<noteq> \<infinity>" |
491 assumes finite: "emeasure M B \<noteq> \<infinity>" |
492 and [measurable]: "A \<in> sets M" "B \<in> sets M" and "B \<subseteq> A" |
492 and [measurable]: "A \<in> sets M" "B \<in> sets M" and "B \<subseteq> A" |
493 shows "emeasure M (A - B) = emeasure M A - emeasure M B" |
493 shows "emeasure M (A - B) = emeasure M A - emeasure M B" |
494 proof - |
494 proof - |
495 have "0 \<le> emeasure M B" using assms by auto |
495 have "0 \<le> emeasure M B" using assms by auto |
496 have "(A - B) \<union> B = A" using `B \<subseteq> A` by auto |
496 have "(A - B) \<union> B = A" using \<open>B \<subseteq> A\<close> by auto |
497 then have "emeasure M A = emeasure M ((A - B) \<union> B)" by simp |
497 then have "emeasure M A = emeasure M ((A - B) \<union> B)" by simp |
498 also have "\<dots> = emeasure M (A - B) + emeasure M B" |
498 also have "\<dots> = emeasure M (A - B) + emeasure M B" |
499 by (subst plus_emeasure[symmetric]) auto |
499 by (subst plus_emeasure[symmetric]) auto |
500 finally show "emeasure M (A - B) = emeasure M A - emeasure M B" |
500 finally show "emeasure M (A - B) = emeasure M A - emeasure M B" |
501 unfolding ereal_eq_minus_iff |
501 unfolding ereal_eq_minus_iff |
502 using finite `0 \<le> emeasure M B` by auto |
502 using finite \<open>0 \<le> emeasure M B\<close> by auto |
503 qed |
503 qed |
504 |
504 |
505 lemma Lim_emeasure_incseq: |
505 lemma Lim_emeasure_incseq: |
506 "range A \<subseteq> sets M \<Longrightarrow> incseq A \<Longrightarrow> (\<lambda>i. (emeasure M (A i))) ----> emeasure M (\<Union>i. A i)" |
506 "range A \<subseteq> sets M \<Longrightarrow> incseq A \<Longrightarrow> (\<lambda>i. (emeasure M (A i))) ----> emeasure M (\<Union>i. A i)" |
507 using emeasure_countably_additive |
507 using emeasure_countably_additive |
539 by (simp add: ereal_SUP_uminus minus_ereal_def) |
539 by (simp add: ereal_SUP_uminus minus_ereal_def) |
540 also have "\<dots> = (SUP n. emeasure M (A 0) - emeasure M (A n))" |
540 also have "\<dots> = (SUP n. emeasure M (A 0) - emeasure M (A n))" |
541 unfolding minus_ereal_def using A0 assms |
541 unfolding minus_ereal_def using A0 assms |
542 by (subst SUP_ereal_add) (auto simp add: decseq_emeasure) |
542 by (subst SUP_ereal_add) (auto simp add: decseq_emeasure) |
543 also have "\<dots> = (SUP n. emeasure M (A 0 - A n))" |
543 also have "\<dots> = (SUP n. emeasure M (A 0 - A n))" |
544 using A finite `decseq A`[unfolded decseq_def] by (subst emeasure_Diff) auto |
544 using A finite \<open>decseq A\<close>[unfolded decseq_def] by (subst emeasure_Diff) auto |
545 also have "\<dots> = emeasure M (\<Union>i. A 0 - A i)" |
545 also have "\<dots> = emeasure M (\<Union>i. A 0 - A i)" |
546 proof (rule SUP_emeasure_incseq) |
546 proof (rule SUP_emeasure_incseq) |
547 show "range (\<lambda>n. A 0 - A n) \<subseteq> sets M" |
547 show "range (\<lambda>n. A 0 - A n) \<subseteq> sets M" |
548 using A by auto |
548 using A by auto |
549 show "incseq (\<lambda>n. A 0 - A n)" |
549 show "incseq (\<lambda>n. A 0 - A n)" |
550 using `decseq A` by (auto simp add: incseq_def decseq_def) |
550 using \<open>decseq A\<close> by (auto simp add: incseq_def decseq_def) |
551 qed |
551 qed |
552 also have "\<dots> = emeasure M (A 0) - emeasure M (\<Inter>i. A i)" |
552 also have "\<dots> = emeasure M (A 0) - emeasure M (\<Inter>i. A i)" |
553 using A finite * by (simp, subst emeasure_Diff) auto |
553 using A finite * by (simp, subst emeasure_Diff) auto |
554 finally show ?thesis |
554 finally show ?thesis |
555 unfolding ereal_minus_eq_minus_iff using finite A0 by auto |
555 unfolding ereal_minus_eq_minus_iff using finite A0 by auto |
614 assumes *: "\<And>M A. P M \<Longrightarrow> (\<And>N. P N \<Longrightarrow> Measurable.pred N A) \<Longrightarrow> Measurable.pred M (F A)" |
614 assumes *: "\<And>M A. P M \<Longrightarrow> (\<And>N. P N \<Longrightarrow> Measurable.pred N A) \<Longrightarrow> Measurable.pred M (F A)" |
615 shows "emeasure M {x\<in>space M. lfp F x} = (SUP i. emeasure M {x\<in>space M. (F ^^ i) (\<lambda>x. False) x})" |
615 shows "emeasure M {x\<in>space M. lfp F x} = (SUP i. emeasure M {x\<in>space M. (F ^^ i) (\<lambda>x. False) x})" |
616 proof - |
616 proof - |
617 have "emeasure M {x\<in>space M. lfp F x} = emeasure M (\<Union>i. {x\<in>space M. (F ^^ i) (\<lambda>x. False) x})" |
617 have "emeasure M {x\<in>space M. lfp F x} = emeasure M (\<Union>i. {x\<in>space M. (F ^^ i) (\<lambda>x. False) x})" |
618 using sup_continuous_lfp[OF cont] by (auto simp add: bot_fun_def intro!: arg_cong2[where f=emeasure]) |
618 using sup_continuous_lfp[OF cont] by (auto simp add: bot_fun_def intro!: arg_cong2[where f=emeasure]) |
619 moreover { fix i from `P M` have "{x\<in>space M. (F ^^ i) (\<lambda>x. False) x} \<in> sets M" |
619 moreover { fix i from \<open>P M\<close> have "{x\<in>space M. (F ^^ i) (\<lambda>x. False) x} \<in> sets M" |
620 by (induct i arbitrary: M) (auto simp add: pred_def[symmetric] intro: *) } |
620 by (induct i arbitrary: M) (auto simp add: pred_def[symmetric] intro: *) } |
621 moreover have "incseq (\<lambda>i. {x\<in>space M. (F ^^ i) (\<lambda>x. False) x})" |
621 moreover have "incseq (\<lambda>i. {x\<in>space M. (F ^^ i) (\<lambda>x. False) x})" |
622 proof (rule incseq_SucI) |
622 proof (rule incseq_SucI) |
623 fix i |
623 fix i |
624 have "(F ^^ i) (\<lambda>x. False) \<le> (F ^^ (Suc i)) (\<lambda>x. False)" |
624 have "(F ^^ i) (\<lambda>x. False) \<le> (F ^^ (Suc i)) (\<lambda>x. False)" |
692 |
692 |
693 lemma emeasure_insert: |
693 lemma emeasure_insert: |
694 assumes sets: "{x} \<in> sets M" "A \<in> sets M" and "x \<notin> A" |
694 assumes sets: "{x} \<in> sets M" "A \<in> sets M" and "x \<notin> A" |
695 shows "emeasure M (insert x A) = emeasure M {x} + emeasure M A" |
695 shows "emeasure M (insert x A) = emeasure M {x} + emeasure M A" |
696 proof - |
696 proof - |
697 have "{x} \<inter> A = {}" using `x \<notin> A` by auto |
697 have "{x} \<inter> A = {}" using \<open>x \<notin> A\<close> by auto |
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" |
715 shows "emeasure M A = (\<Sum>i\<in>S. emeasure M (A \<inter> (B i)))" |
715 shows "emeasure M A = (\<Sum>i\<in>S. emeasure M (A \<inter> (B i)))" |
716 proof - |
716 proof - |
717 have "(\<Sum>i\<in>S. emeasure M (A \<inter> (B i))) = emeasure M (\<Union>i\<in>S. A \<inter> (B i))" |
717 have "(\<Sum>i\<in>S. emeasure M (A \<inter> (B i))) = emeasure M (\<Union>i\<in>S. A \<inter> (B i))" |
718 proof (rule setsum_emeasure) |
718 proof (rule setsum_emeasure) |
719 show "disjoint_family_on (\<lambda>i. A \<inter> B i) S" |
719 show "disjoint_family_on (\<lambda>i. A \<inter> B i) S" |
720 using `disjoint_family_on B S` |
720 using \<open>disjoint_family_on B S\<close> |
721 unfolding disjoint_family_on_def by auto |
721 unfolding disjoint_family_on_def by auto |
722 qed (insert assms, auto) |
722 qed (insert assms, auto) |
723 also have "(\<Union>i\<in>S. A \<inter> (B i)) = A" |
723 also have "(\<Union>i\<in>S. A \<inter> (B i)) = A" |
724 using A by auto |
724 using A by auto |
725 finally show ?thesis by simp |
725 finally show ?thesis by simp |
745 shows "M = N" |
745 shows "M = N" |
746 proof (rule measure_eqI) |
746 proof (rule measure_eqI) |
747 fix X assume "X \<in> sets M" |
747 fix X assume "X \<in> sets M" |
748 then have X: "X \<subseteq> A" by auto |
748 then have X: "X \<subseteq> A" by auto |
749 then have "emeasure M X = (\<Sum>a\<in>X. emeasure M {a})" |
749 then have "emeasure M X = (\<Sum>a\<in>X. emeasure M {a})" |
750 using `finite A` by (subst emeasure_eq_setsum_singleton) (auto dest: finite_subset) |
750 using \<open>finite A\<close> by (subst emeasure_eq_setsum_singleton) (auto dest: finite_subset) |
751 also have "\<dots> = (\<Sum>a\<in>X. emeasure N {a})" |
751 also have "\<dots> = (\<Sum>a\<in>X. emeasure N {a})" |
752 using X eq by (auto intro!: setsum.cong) |
752 using X eq by (auto intro!: setsum.cong) |
753 also have "\<dots> = emeasure N X" |
753 also have "\<dots> = emeasure N X" |
754 using X `finite A` by (subst emeasure_eq_setsum_singleton) (auto dest: finite_subset) |
754 using X \<open>finite A\<close> by (subst emeasure_eq_setsum_singleton) (auto dest: finite_subset) |
755 finally show "emeasure M X = emeasure N X" . |
755 finally show "emeasure M X = emeasure N X" . |
756 qed simp |
756 qed simp |
757 |
757 |
758 lemma measure_eqI_generator_eq: |
758 lemma measure_eqI_generator_eq: |
759 fixes M N :: "'a measure" and E :: "'a set set" and A :: "nat \<Rightarrow> 'a set" |
759 fixes M N :: "'a measure" and E :: "'a set set" and A :: "nat \<Rightarrow> 'a set" |
765 shows "M = N" |
765 shows "M = N" |
766 proof - |
766 proof - |
767 let ?\<mu> = "emeasure M" and ?\<nu> = "emeasure N" |
767 let ?\<mu> = "emeasure M" and ?\<nu> = "emeasure N" |
768 interpret S: sigma_algebra \<Omega> "sigma_sets \<Omega> E" by (rule sigma_algebra_sigma_sets) fact |
768 interpret S: sigma_algebra \<Omega> "sigma_sets \<Omega> E" by (rule sigma_algebra_sigma_sets) fact |
769 have "space M = \<Omega>" |
769 have "space M = \<Omega>" |
770 using sets.top[of M] sets.space_closed[of M] S.top S.space_closed `sets M = sigma_sets \<Omega> E` |
770 using sets.top[of M] sets.space_closed[of M] S.top S.space_closed \<open>sets M = sigma_sets \<Omega> E\<close> |
771 by blast |
771 by blast |
772 |
772 |
773 { fix F D assume "F \<in> E" and "?\<mu> F \<noteq> \<infinity>" |
773 { fix F D assume "F \<in> E" and "?\<mu> F \<noteq> \<infinity>" |
774 then have [intro]: "F \<in> sigma_sets \<Omega> E" by auto |
774 then have [intro]: "F \<in> sigma_sets \<Omega> E" by auto |
775 have "?\<nu> F \<noteq> \<infinity>" using `?\<mu> F \<noteq> \<infinity>` `F \<in> E` eq by simp |
775 have "?\<nu> F \<noteq> \<infinity>" using \<open>?\<mu> F \<noteq> \<infinity>\<close> \<open>F \<in> E\<close> eq by simp |
776 assume "D \<in> sets M" |
776 assume "D \<in> sets M" |
777 with `Int_stable E` `E \<subseteq> Pow \<Omega>` have "emeasure M (F \<inter> D) = emeasure N (F \<inter> D)" |
777 with \<open>Int_stable E\<close> \<open>E \<subseteq> Pow \<Omega>\<close> have "emeasure M (F \<inter> D) = emeasure N (F \<inter> D)" |
778 unfolding M |
778 unfolding M |
779 proof (induct rule: sigma_sets_induct_disjoint) |
779 proof (induct rule: sigma_sets_induct_disjoint) |
780 case (basic A) |
780 case (basic A) |
781 then have "F \<inter> A \<in> E" using `Int_stable E` `F \<in> E` by (auto simp: Int_stable_def) |
781 then have "F \<inter> A \<in> E" using \<open>Int_stable E\<close> \<open>F \<in> E\<close> by (auto simp: Int_stable_def) |
782 then show ?case using eq by auto |
782 then show ?case using eq by auto |
783 next |
783 next |
784 case empty then show ?case by simp |
784 case empty then show ?case by simp |
785 next |
785 next |
786 case (compl A) |
786 case (compl A) |
787 then have **: "F \<inter> (\<Omega> - A) = F - (F \<inter> A)" |
787 then have **: "F \<inter> (\<Omega> - A) = F - (F \<inter> A)" |
788 and [intro]: "F \<inter> A \<in> sigma_sets \<Omega> E" |
788 and [intro]: "F \<inter> A \<in> sigma_sets \<Omega> E" |
789 using `F \<in> E` S.sets_into_space by (auto simp: M) |
789 using \<open>F \<in> E\<close> S.sets_into_space by (auto simp: M) |
790 have "?\<nu> (F \<inter> A) \<le> ?\<nu> F" by (auto intro!: emeasure_mono simp: M N) |
790 have "?\<nu> (F \<inter> A) \<le> ?\<nu> F" by (auto intro!: emeasure_mono simp: M N) |
791 then have "?\<nu> (F \<inter> A) \<noteq> \<infinity>" using `?\<nu> F \<noteq> \<infinity>` by auto |
791 then have "?\<nu> (F \<inter> A) \<noteq> \<infinity>" using \<open>?\<nu> F \<noteq> \<infinity>\<close> by auto |
792 have "?\<mu> (F \<inter> A) \<le> ?\<mu> F" by (auto intro!: emeasure_mono simp: M N) |
792 have "?\<mu> (F \<inter> A) \<le> ?\<mu> F" by (auto intro!: emeasure_mono simp: M N) |
793 then have "?\<mu> (F \<inter> A) \<noteq> \<infinity>" using `?\<mu> F \<noteq> \<infinity>` by auto |
793 then have "?\<mu> (F \<inter> A) \<noteq> \<infinity>" using \<open>?\<mu> F \<noteq> \<infinity>\<close> by auto |
794 then have "?\<mu> (F \<inter> (\<Omega> - A)) = ?\<mu> F - ?\<mu> (F \<inter> A)" unfolding ** |
794 then have "?\<mu> (F \<inter> (\<Omega> - A)) = ?\<mu> F - ?\<mu> (F \<inter> A)" unfolding ** |
795 using `F \<inter> A \<in> sigma_sets \<Omega> E` by (auto intro!: emeasure_Diff simp: M N) |
795 using \<open>F \<inter> A \<in> sigma_sets \<Omega> E\<close> by (auto intro!: emeasure_Diff simp: M N) |
796 also have "\<dots> = ?\<nu> F - ?\<nu> (F \<inter> A)" using eq `F \<in> E` compl by simp |
796 also have "\<dots> = ?\<nu> F - ?\<nu> (F \<inter> A)" using eq \<open>F \<in> E\<close> compl by simp |
797 also have "\<dots> = ?\<nu> (F \<inter> (\<Omega> - A))" unfolding ** |
797 also have "\<dots> = ?\<nu> (F \<inter> (\<Omega> - A))" unfolding ** |
798 using `F \<inter> A \<in> sigma_sets \<Omega> E` `?\<nu> (F \<inter> A) \<noteq> \<infinity>` |
798 using \<open>F \<inter> A \<in> sigma_sets \<Omega> E\<close> \<open>?\<nu> (F \<inter> A) \<noteq> \<infinity>\<close> |
799 by (auto intro!: emeasure_Diff[symmetric] simp: M N) |
799 by (auto intro!: emeasure_Diff[symmetric] simp: M N) |
800 finally show ?case |
800 finally show ?case |
801 using `space M = \<Omega>` by auto |
801 using \<open>space M = \<Omega>\<close> by auto |
802 next |
802 next |
803 case (union A) |
803 case (union A) |
804 then have "?\<mu> (\<Union>x. F \<inter> A x) = ?\<nu> (\<Union>x. F \<inter> A x)" |
804 then have "?\<mu> (\<Union>x. F \<inter> A x) = ?\<nu> (\<Union>x. F \<inter> A x)" |
805 by (subst (1 2) suminf_emeasure[symmetric]) (auto simp: disjoint_family_on_def subset_eq M N) |
805 by (subst (1 2) suminf_emeasure[symmetric]) (auto simp: disjoint_family_on_def subset_eq M N) |
806 with A show ?case |
806 with A show ?case |
813 using M N by simp |
813 using M N by simp |
814 have [simp, intro]: "\<And>i. A i \<in> sets M" |
814 have [simp, intro]: "\<And>i. A i \<in> sets M" |
815 using A(1) by (auto simp: subset_eq M) |
815 using A(1) by (auto simp: subset_eq M) |
816 fix F assume "F \<in> sets M" |
816 fix F assume "F \<in> sets M" |
817 let ?D = "disjointed (\<lambda>i. F \<inter> A i)" |
817 let ?D = "disjointed (\<lambda>i. F \<inter> A i)" |
818 from `space M = \<Omega>` have F_eq: "F = (\<Union>i. ?D i)" |
818 from \<open>space M = \<Omega>\<close> have F_eq: "F = (\<Union>i. ?D i)" |
819 using `F \<in> sets M`[THEN sets.sets_into_space] A(2)[symmetric] by (auto simp: UN_disjointed_eq) |
819 using \<open>F \<in> sets M\<close>[THEN sets.sets_into_space] A(2)[symmetric] by (auto simp: UN_disjointed_eq) |
820 have [simp, intro]: "\<And>i. ?D i \<in> sets M" |
820 have [simp, intro]: "\<And>i. ?D i \<in> sets M" |
821 using sets.range_disjointed_sets[of "\<lambda>i. F \<inter> A i" M] `F \<in> sets M` |
821 using sets.range_disjointed_sets[of "\<lambda>i. F \<inter> A i" M] \<open>F \<in> sets M\<close> |
822 by (auto simp: subset_eq) |
822 by (auto simp: subset_eq) |
823 have "disjoint_family ?D" |
823 have "disjoint_family ?D" |
824 by (auto simp: disjoint_family_disjointed) |
824 by (auto simp: disjoint_family_disjointed) |
825 moreover |
825 moreover |
826 have "(\<Sum>i. emeasure M (?D i)) = (\<Sum>i. emeasure N (?D i))" |
826 have "(\<Sum>i. emeasure M (?D i)) = (\<Sum>i. emeasure N (?D i))" |
830 by (auto simp: disjointed_def) |
830 by (auto simp: disjointed_def) |
831 then show "emeasure M (?D i) = emeasure N (?D i)" |
831 then show "emeasure M (?D i) = emeasure N (?D i)" |
832 using *[of "A i" "?D i", OF _ A(3)] A(1) by auto |
832 using *[of "A i" "?D i", OF _ A(3)] A(1) by auto |
833 qed |
833 qed |
834 ultimately show "emeasure M F = emeasure N F" |
834 ultimately show "emeasure M F = emeasure N F" |
835 by (simp add: image_subset_iff `sets M = sets N`[symmetric] F_eq[symmetric] suminf_emeasure) |
835 by (simp add: image_subset_iff \<open>sets M = sets N\<close>[symmetric] F_eq[symmetric] suminf_emeasure) |
836 qed |
836 qed |
837 qed |
837 qed |
838 |
838 |
839 lemma measure_of_of_measure: "measure_of (space M) (sets M) (emeasure M) = M" |
839 lemma measure_of_of_measure: "measure_of (space M) (sets M) (emeasure M) = M" |
840 proof (intro measure_eqI emeasure_measure_of_sigma) |
840 proof (intro measure_eqI emeasure_measure_of_sigma) |
843 by (simp add: positive_def emeasure_nonneg) |
843 by (simp add: positive_def emeasure_nonneg) |
844 show "countably_additive (sets M) (emeasure M)" |
844 show "countably_additive (sets M) (emeasure M)" |
845 by (simp add: emeasure_countably_additive) |
845 by (simp add: emeasure_countably_additive) |
846 qed simp_all |
846 qed simp_all |
847 |
847 |
848 subsection {* @{text \<mu>}-null sets *} |
848 subsection \<open>\<open>\<mu>\<close>-null sets\<close> |
849 |
849 |
850 definition null_sets :: "'a measure \<Rightarrow> 'a set set" where |
850 definition null_sets :: "'a measure \<Rightarrow> 'a set set" where |
851 "null_sets M = {N\<in>sets M. emeasure M N = 0}" |
851 "null_sets M = {N\<in>sets M. emeasure M N = 0}" |
852 |
852 |
853 lemma null_setsD1[dest]: "A \<in> null_sets M \<Longrightarrow> emeasure M A = 0" |
853 lemma null_setsD1[dest]: "A \<in> null_sets M \<Longrightarrow> emeasure M A = 0" |
899 show ?thesis |
899 show ?thesis |
900 proof (intro conjI CollectI null_setsI) |
900 proof (intro conjI CollectI null_setsI) |
901 show "(\<Union>i\<in>I. N i) \<in> sets M" |
901 show "(\<Union>i\<in>I. N i) \<in> sets M" |
902 using assms by (intro sets.countable_UN') auto |
902 using assms by (intro sets.countable_UN') auto |
903 have "emeasure M (\<Union>i\<in>I. N i) \<le> (\<Sum>n. emeasure M (N (from_nat_into I n)))" |
903 have "emeasure M (\<Union>i\<in>I. N i) \<le> (\<Sum>n. emeasure M (N (from_nat_into I n)))" |
904 unfolding UN_from_nat_into[OF `countable I` `I \<noteq> {}`] |
904 unfolding UN_from_nat_into[OF \<open>countable I\<close> \<open>I \<noteq> {}\<close>] |
905 using assms `I \<noteq> {}` by (intro emeasure_subadditive_countably) (auto intro: from_nat_into) |
905 using assms \<open>I \<noteq> {}\<close> by (intro emeasure_subadditive_countably) (auto intro: from_nat_into) |
906 also have "(\<lambda>n. emeasure M (N (from_nat_into I n))) = (\<lambda>_. 0)" |
906 also have "(\<lambda>n. emeasure M (N (from_nat_into I n))) = (\<lambda>_. 0)" |
907 using assms `I \<noteq> {}` by (auto intro: from_nat_into) |
907 using assms \<open>I \<noteq> {}\<close> by (auto intro: from_nat_into) |
908 finally show "emeasure M (\<Union>i\<in>I. N i) = 0" |
908 finally show "emeasure M (\<Union>i\<in>I. N i) = 0" |
909 by (intro antisym emeasure_nonneg) simp |
909 by (intro antisym emeasure_nonneg) simp |
910 qed |
910 qed |
911 qed |
911 qed |
912 |
912 |
981 assume "AE x in M. P x" then obtain N where N: "N \<in> sets M" "?P \<subseteq> N" "emeasure M N = 0" |
981 assume "AE x in M. P x" then obtain N where N: "N \<in> sets M" "?P \<subseteq> N" "emeasure M N = 0" |
982 unfolding eventually_ae_filter by auto |
982 unfolding eventually_ae_filter by auto |
983 have "0 \<le> emeasure M ?P" by auto |
983 have "0 \<le> emeasure M ?P" by auto |
984 moreover have "emeasure M ?P \<le> emeasure M N" |
984 moreover have "emeasure M ?P \<le> emeasure M N" |
985 using assms N(1,2) by (auto intro: emeasure_mono) |
985 using assms N(1,2) by (auto intro: emeasure_mono) |
986 ultimately have "emeasure M ?P = 0" unfolding `emeasure M N = 0` by auto |
986 ultimately have "emeasure M ?P = 0" unfolding \<open>emeasure M N = 0\<close> by auto |
987 then show "?P \<in> null_sets M" using assms by auto |
987 then show "?P \<in> null_sets M" using assms by auto |
988 next |
988 next |
989 assume "?P \<in> null_sets M" with assms show "AE x in M. P x" by (auto intro: AE_I') |
989 assume "?P \<in> null_sets M" with assms show "AE x in M. P x" by (auto intro: AE_I') |
990 qed |
990 qed |
991 |
991 |
1136 using f by induct auto |
1136 using f by induct auto |
1137 |
1137 |
1138 lemma AE_finite_allI: |
1138 lemma AE_finite_allI: |
1139 assumes "finite S" |
1139 assumes "finite S" |
1140 shows "(\<And>s. s \<in> S \<Longrightarrow> AE x in M. Q s x) \<Longrightarrow> AE x in M. \<forall>s\<in>S. Q s x" |
1140 shows "(\<And>s. s \<in> S \<Longrightarrow> AE x in M. Q s x) \<Longrightarrow> AE x in M. \<forall>s\<in>S. Q s x" |
1141 using AE_finite_all[OF `finite S`] by auto |
1141 using AE_finite_all[OF \<open>finite S\<close>] by auto |
1142 |
1142 |
1143 lemma emeasure_mono_AE: |
1143 lemma emeasure_mono_AE: |
1144 assumes imp: "AE x in M. x \<in> A \<longrightarrow> x \<in> B" |
1144 assumes imp: "AE x in M. x \<in> A \<longrightarrow> x \<in> B" |
1145 and B: "B \<in> sets M" |
1145 and B: "B \<in> sets M" |
1146 shows "emeasure M A \<le> emeasure M B" |
1146 shows "emeasure M A \<le> emeasure M B" |
1185 also have "emeasure M (B - A) = emeasure M B" |
1185 also have "emeasure M (B - A) = emeasure M B" |
1186 by (rule emeasure_eq_AE) (insert 2, auto) |
1186 by (rule emeasure_eq_AE) (insert 2, auto) |
1187 finally show ?thesis . |
1187 finally show ?thesis . |
1188 qed |
1188 qed |
1189 |
1189 |
1190 subsection {* @{text \<sigma>}-finite Measures *} |
1190 subsection \<open>\<open>\<sigma>\<close>-finite Measures\<close> |
1191 |
1191 |
1192 locale sigma_finite_measure = |
1192 locale sigma_finite_measure = |
1193 fixes M :: "'a measure" |
1193 fixes M :: "'a measure" |
1194 assumes sigma_finite_countable: |
1194 assumes sigma_finite_countable: |
1195 "\<exists>A::'a set set. countable A \<and> A \<subseteq> sets M \<and> (\<Union>A) = space M \<and> (\<forall>a\<in>A. emeasure M a \<noteq> \<infinity>)" |
1195 "\<exists>A::'a set set. countable A \<and> A \<subseteq> sets M \<and> (\<Union>A) = space M \<and> (\<forall>a\<in>A. emeasure M a \<noteq> \<infinity>)" |
1202 [simp]: "countable A" and |
1202 [simp]: "countable A" and |
1203 A: "A \<subseteq> sets M" "(\<Union>A) = space M" "\<And>a. a \<in> A \<Longrightarrow> emeasure M a \<noteq> \<infinity>" |
1203 A: "A \<subseteq> sets M" "(\<Union>A) = space M" "\<And>a. a \<in> A \<Longrightarrow> emeasure M a \<noteq> \<infinity>" |
1204 using sigma_finite_countable by metis |
1204 using sigma_finite_countable by metis |
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 \<open>(\<Union>A) = space M\<close> 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 \<open>A \<noteq> {}\<close> 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" |
1216 using range_from_nat_into[OF `A \<noteq> {}` `countable A`] by auto |
1216 using range_from_nat_into[OF \<open>A \<noteq> {}\<close> \<open>countable A\<close>] by auto |
1217 with A show "(\<Union>i. from_nat_into A i) = space M" |
1217 with A show "(\<Union>i. from_nat_into A i) = space M" |
1218 by auto |
1218 by auto |
1219 qed (intro A from_nat_into `A \<noteq> {}`) |
1219 qed (intro A from_nat_into \<open>A \<noteq> {}\<close>) |
1220 qed |
1220 qed |
1221 qed |
1221 qed |
1222 |
1222 |
1223 lemma (in sigma_finite_measure) sigma_finite_disjoint: |
1223 lemma (in sigma_finite_measure) sigma_finite_disjoint: |
1224 obtains A :: "nat \<Rightarrow> 'a set" |
1224 obtains A :: "nat \<Rightarrow> 'a set" |
1310 then have *: "range (\<lambda>i. f -` (A i) \<inter> space M) \<subseteq> sets M" |
1310 then have *: "range (\<lambda>i. f -` (A i) \<inter> space M) \<subseteq> sets M" |
1311 using f by (auto simp: measurable_def) |
1311 using f by (auto simp: measurable_def) |
1312 moreover have "(\<Union>i. f -` A i \<inter> space M) \<in> sets M" |
1312 moreover have "(\<Union>i. f -` A i \<inter> space M) \<in> sets M" |
1313 using * by blast |
1313 using * by blast |
1314 moreover have **: "disjoint_family (\<lambda>i. f -` A i \<inter> space M)" |
1314 moreover have **: "disjoint_family (\<lambda>i. f -` A i \<inter> space M)" |
1315 using `disjoint_family A` by (auto simp: disjoint_family_on_def) |
1315 using \<open>disjoint_family A\<close> by (auto simp: disjoint_family_on_def) |
1316 ultimately show "(\<Sum>i. ?\<mu> (A i)) = ?\<mu> (\<Union>i. A i)" |
1316 ultimately show "(\<Sum>i. ?\<mu> (A i)) = ?\<mu> (\<Union>i. A i)" |
1317 using suminf_emeasure[OF _ **] A f |
1317 using suminf_emeasure[OF _ **] A f |
1318 by (auto simp: comp_def vimage_UN) |
1318 by (auto simp: comp_def vimage_UN) |
1319 qed |
1319 qed |
1320 show "sigma_algebra (space N) (sets N)" .. |
1320 show "sigma_algebra (space N) (sets N)" .. |
1332 assumes f: "\<And>M. P M \<Longrightarrow> f \<in> measurable M' M" |
1332 assumes f: "\<And>M. P M \<Longrightarrow> f \<in> measurable M' M" |
1333 assumes *: "\<And>M A. P M \<Longrightarrow> (\<And>N. P N \<Longrightarrow> Measurable.pred N A) \<Longrightarrow> Measurable.pred M (F A)" |
1333 assumes *: "\<And>M A. P M \<Longrightarrow> (\<And>N. P N \<Longrightarrow> Measurable.pred N A) \<Longrightarrow> Measurable.pred M (F A)" |
1334 shows "emeasure M' {x\<in>space M'. lfp F (f x)} = (SUP i. emeasure M' {x\<in>space M'. (F ^^ i) (\<lambda>x. False) (f x)})" |
1334 shows "emeasure M' {x\<in>space M'. lfp F (f x)} = (SUP i. emeasure M' {x\<in>space M'. (F ^^ i) (\<lambda>x. False) (f x)})" |
1335 proof (subst (1 2) emeasure_Collect_distr[symmetric, where X=f]) |
1335 proof (subst (1 2) emeasure_Collect_distr[symmetric, where X=f]) |
1336 show "f \<in> measurable M' M" "f \<in> measurable M' M" |
1336 show "f \<in> measurable M' M" "f \<in> measurable M' M" |
1337 using f[OF `P M`] by auto |
1337 using f[OF \<open>P M\<close>] by auto |
1338 { fix i show "Measurable.pred M ((F ^^ i) (\<lambda>x. False))" |
1338 { fix i show "Measurable.pred M ((F ^^ i) (\<lambda>x. False))" |
1339 using `P M` by (induction i arbitrary: M) (auto intro!: *) } |
1339 using \<open>P M\<close> by (induction i arbitrary: M) (auto intro!: *) } |
1340 show "Measurable.pred M (lfp F)" |
1340 show "Measurable.pred M (lfp F)" |
1341 using `P M` cont * by (rule measurable_lfp_coinduct[of P]) |
1341 using \<open>P M\<close> cont * by (rule measurable_lfp_coinduct[of P]) |
1342 |
1342 |
1343 have "emeasure (distr M' M f) {x \<in> space (distr M' M f). lfp F x} = |
1343 have "emeasure (distr M' M f) {x \<in> space (distr M' M f). lfp F x} = |
1344 (SUP i. emeasure (distr M' M f) {x \<in> space (distr M' M f). (F ^^ i) (\<lambda>x. False) x})" |
1344 (SUP i. emeasure (distr M' M f) {x \<in> space (distr M' M f). (F ^^ i) (\<lambda>x. False) x})" |
1345 using `P M` |
1345 using \<open>P M\<close> |
1346 proof (coinduction arbitrary: M rule: emeasure_lfp') |
1346 proof (coinduction arbitrary: M rule: emeasure_lfp') |
1347 case (measurable A N) then have "\<And>N. P N \<Longrightarrow> Measurable.pred (distr M' N f) A" |
1347 case (measurable A N) then have "\<And>N. P N \<Longrightarrow> Measurable.pred (distr M' N f) A" |
1348 by metis |
1348 by metis |
1349 then have "\<And>N. P N \<Longrightarrow> Measurable.pred N A" |
1349 then have "\<And>N. P N \<Longrightarrow> Measurable.pred N A" |
1350 by simp |
1350 by simp |
1351 with `P N`[THEN *] show ?case |
1351 with \<open>P N\<close>[THEN *] show ?case |
1352 by auto |
1352 by auto |
1353 qed fact |
1353 qed fact |
1354 then show "emeasure (distr M' M f) {x \<in> space M. lfp F x} = |
1354 then show "emeasure (distr M' M f) {x \<in> space M. lfp F x} = |
1355 (SUP i. emeasure (distr M' M f) {x \<in> space M. (F ^^ i) (\<lambda>x. False) x})" |
1355 (SUP i. emeasure (distr M' M f) {x \<in> space M. (F ^^ i) (\<lambda>x. False) x})" |
1356 by simp |
1356 by simp |
1403 lemma distr_distr: |
1403 lemma distr_distr: |
1404 "g \<in> measurable N L \<Longrightarrow> f \<in> measurable M N \<Longrightarrow> distr (distr M N f) L g = distr M L (g \<circ> f)" |
1404 "g \<in> measurable N L \<Longrightarrow> f \<in> measurable M N \<Longrightarrow> distr (distr M N f) L g = distr M L (g \<circ> f)" |
1405 by (auto simp add: emeasure_distr measurable_space |
1405 by (auto simp add: emeasure_distr measurable_space |
1406 intro!: arg_cong[where f="emeasure M"] measure_eqI) |
1406 intro!: arg_cong[where f="emeasure M"] measure_eqI) |
1407 |
1407 |
1408 subsection {* Real measure values *} |
1408 subsection \<open>Real measure values\<close> |
1409 |
1409 |
1410 lemma measure_nonneg: "0 \<le> measure M A" |
1410 lemma measure_nonneg: "0 \<le> measure M A" |
1411 using emeasure_nonneg[of M A] unfolding measure_def by (auto intro: real_of_ereal_pos) |
1411 using emeasure_nonneg[of M A] unfolding measure_def by (auto intro: real_of_ereal_pos) |
1412 |
1412 |
1413 lemma measure_le_0_iff: "measure M X \<le> 0 \<longleftrightarrow> measure M X = 0" |
1413 lemma measure_le_0_iff: "measure M X \<le> 0 \<longleftrightarrow> measure M X = 0" |
1447 proof - |
1447 proof - |
1448 have "emeasure M (A - B) \<le> emeasure M A" "emeasure M B \<le> emeasure M A" |
1448 have "emeasure M (A - B) \<le> emeasure M A" "emeasure M B \<le> emeasure M A" |
1449 using measurable by (auto intro!: emeasure_mono) |
1449 using measurable by (auto intro!: emeasure_mono) |
1450 hence "measure M ((A - B) \<union> B) = measure M (A - B) + measure M B" |
1450 hence "measure M ((A - B) \<union> B) = measure M (A - B) + measure M B" |
1451 using measurable finite by (rule_tac measure_Union) auto |
1451 using measurable finite by (rule_tac measure_Union) auto |
1452 thus ?thesis using `B \<subseteq> A` by (auto simp: Un_absorb2) |
1452 thus ?thesis using \<open>B \<subseteq> A\<close> by (auto simp: Un_absorb2) |
1453 qed |
1453 qed |
1454 |
1454 |
1455 lemma measure_UNION: |
1455 lemma measure_UNION: |
1456 assumes measurable: "range A \<subseteq> sets M" "disjoint_family A" |
1456 assumes measurable: "range A \<subseteq> sets M" "disjoint_family A" |
1457 assumes finite: "emeasure M (\<Union>i. A i) \<noteq> \<infinity>" |
1457 assumes finite: "emeasure M (\<Union>i. A i) \<noteq> \<infinity>" |
1546 unfolding measure_def |
1546 unfolding measure_def |
1547 using Lim_emeasure_decseq[OF A fin] |
1547 using Lim_emeasure_decseq[OF A fin] |
1548 by (intro lim_real_of_ereal) simp |
1548 by (intro lim_real_of_ereal) simp |
1549 qed |
1549 qed |
1550 |
1550 |
1551 subsection {* Measure spaces with @{term "emeasure M (space M) < \<infinity>"} *} |
1551 subsection \<open>Measure spaces with @{term "emeasure M (space M) < \<infinity>"}\<close> |
1552 |
1552 |
1553 locale finite_measure = sigma_finite_measure M for M + |
1553 locale finite_measure = sigma_finite_measure M for M + |
1554 assumes finite_emeasure_space: "emeasure M (space M) \<noteq> \<infinity>" |
1554 assumes finite_emeasure_space: "emeasure M (space M) \<noteq> \<infinity>" |
1555 |
1555 |
1556 lemma finite_measureI[Pure.intro!]: |
1556 lemma finite_measureI[Pure.intro!]: |
1604 |
1604 |
1605 lemma (in finite_measure) finite_measure_subadditive_countably: |
1605 lemma (in finite_measure) finite_measure_subadditive_countably: |
1606 assumes A: "range A \<subseteq> sets M" and sum: "summable (\<lambda>i. measure M (A i))" |
1606 assumes A: "range A \<subseteq> sets M" and sum: "summable (\<lambda>i. measure M (A i))" |
1607 shows "measure M (\<Union>i. A i) \<le> (\<Sum>i. measure M (A i))" |
1607 shows "measure M (\<Union>i. A i) \<le> (\<Sum>i. measure M (A i))" |
1608 proof - |
1608 proof - |
1609 from `summable (\<lambda>i. measure M (A i))` |
1609 from \<open>summable (\<lambda>i. measure M (A i))\<close> |
1610 have "(\<lambda>i. ereal (measure M (A i))) sums ereal (\<Sum>i. measure M (A i))" |
1610 have "(\<lambda>i. ereal (measure M (A i))) sums ereal (\<Sum>i. measure M (A i))" |
1611 by (simp add: sums_ereal) (rule summable_sums) |
1611 by (simp add: sums_ereal) (rule summable_sums) |
1612 from sums_unique[OF this, symmetric] |
1612 from sums_unique[OF this, symmetric] |
1613 measure_subadditive_countably[OF A] |
1613 measure_subadditive_countably[OF A] |
1614 show ?thesis by (simp add: emeasure_eq_measure) |
1614 show ?thesis by (simp add: emeasure_eq_measure) |
1727 assumes disjoint: "\<And> x y. \<lbrakk>x \<in> s ; y \<in> s ; x \<noteq> y\<rbrakk> \<Longrightarrow> f x \<inter> f y = {}" |
1727 assumes disjoint: "\<And> x y. \<lbrakk>x \<in> s ; y \<in> s ; x \<noteq> y\<rbrakk> \<Longrightarrow> f x \<inter> f y = {}" |
1728 assumes upper: "space M \<subseteq> (\<Union>i \<in> s. f i)" |
1728 assumes upper: "space M \<subseteq> (\<Union>i \<in> s. f i)" |
1729 shows "measure M e = (\<Sum> x \<in> s. measure M (e \<inter> f x))" |
1729 shows "measure M e = (\<Sum> x \<in> s. measure M (e \<inter> f x))" |
1730 proof - |
1730 proof - |
1731 have e: "e = (\<Union>i \<in> s. e \<inter> f i)" |
1731 have e: "e = (\<Union>i \<in> s. e \<inter> f i)" |
1732 using `e \<in> sets M` sets.sets_into_space upper by blast |
1732 using \<open>e \<in> sets M\<close> sets.sets_into_space upper by blast |
1733 hence "measure M e = measure M (\<Union>i \<in> s. e \<inter> f i)" by simp |
1733 hence "measure M e = measure M (\<Union>i \<in> s. e \<inter> f i)" by simp |
1734 also have "\<dots> = (\<Sum> x \<in> s. measure M (e \<inter> f x))" |
1734 also have "\<dots> = (\<Sum> x \<in> s. measure M (e \<inter> f x))" |
1735 proof (rule finite_measure_finite_Union) |
1735 proof (rule finite_measure_finite_Union) |
1736 show "finite s" by fact |
1736 show "finite s" by fact |
1737 show "(\<lambda>i. e \<inter> f i)`s \<subseteq> sets M" using assms(2) by auto |
1737 show "(\<lambda>i. e \<inter> f i)`s \<subseteq> sets M" using assms(2) by auto |
1772 next |
1772 next |
1773 show "f x \<le> (\<lambda>s. emeasure (M s) {x \<in> space N. F top x})" for x |
1773 show "f x \<le> (\<lambda>s. emeasure (M s) {x \<in> space N. F top x})" for x |
1774 using bound[of x] sets_eq_imp_space_eq[OF sets] by (simp add: iter) |
1774 using bound[of x] sets_eq_imp_space_eq[OF sets] by (simp add: iter) |
1775 qed (auto simp add: iter le_fun_def INF_apply[abs_def] intro!: meas cont) |
1775 qed (auto simp add: iter le_fun_def INF_apply[abs_def] intro!: meas cont) |
1776 |
1776 |
1777 subsection {* Counting space *} |
1777 subsection \<open>Counting space\<close> |
1778 |
1778 |
1779 lemma strict_monoI_Suc: |
1779 lemma strict_monoI_Suc: |
1780 assumes ord [simp]: "(\<And>n. f n < f (Suc n))" shows "strict_mono f" |
1780 assumes ord [simp]: "(\<And>n. f n < f (Suc n))" shows "strict_mono f" |
1781 unfolding strict_mono_def |
1781 unfolding strict_mono_def |
1782 proof safe |
1782 proof safe |
1787 lemma emeasure_count_space: |
1787 lemma emeasure_count_space: |
1788 assumes "X \<subseteq> A" shows "emeasure (count_space A) X = (if finite X then ereal (card X) else \<infinity>)" |
1788 assumes "X \<subseteq> A" shows "emeasure (count_space A) X = (if finite X then ereal (card X) else \<infinity>)" |
1789 (is "_ = ?M X") |
1789 (is "_ = ?M X") |
1790 unfolding count_space_def |
1790 unfolding count_space_def |
1791 proof (rule emeasure_measure_of_sigma) |
1791 proof (rule emeasure_measure_of_sigma) |
1792 show "X \<in> Pow A" using `X \<subseteq> A` by auto |
1792 show "X \<in> Pow A" using \<open>X \<subseteq> A\<close> by auto |
1793 show "sigma_algebra A (Pow A)" by (rule sigma_algebra_Pow) |
1793 show "sigma_algebra A (Pow A)" by (rule sigma_algebra_Pow) |
1794 show positive: "positive (Pow A) ?M" |
1794 show positive: "positive (Pow A) ?M" |
1795 by (auto simp: positive_def) |
1795 by (auto simp: positive_def) |
1796 have additive: "additive (Pow A) ?M" |
1796 have additive: "additive (Pow A) ?M" |
1797 by (auto simp: card_Un_disjoint additive_def) |
1797 by (auto simp: card_Un_disjoint additive_def) |
1804 fix F :: "nat \<Rightarrow> 'a set" assume "incseq F" |
1804 fix F :: "nat \<Rightarrow> 'a set" assume "incseq F" |
1805 show "(\<lambda>i. ?M (F i)) ----> ?M (\<Union>i. F i)" |
1805 show "(\<lambda>i. ?M (F i)) ----> ?M (\<Union>i. F i)" |
1806 proof cases |
1806 proof cases |
1807 assume "\<exists>i. \<forall>j\<ge>i. F i = F j" |
1807 assume "\<exists>i. \<forall>j\<ge>i. F i = F j" |
1808 then guess i .. note i = this |
1808 then guess i .. note i = this |
1809 { fix j from i `incseq F` have "F j \<subseteq> F i" |
1809 { fix j from i \<open>incseq F\<close> have "F j \<subseteq> F i" |
1810 by (cases "i \<le> j") (auto simp: incseq_def) } |
1810 by (cases "i \<le> j") (auto simp: incseq_def) } |
1811 then have eq: "(\<Union>i. F i) = F i" |
1811 then have eq: "(\<Union>i. F i) = F i" |
1812 by auto |
1812 by auto |
1813 with i show ?thesis |
1813 with i show ?thesis |
1814 by (auto intro!: Lim_eventually eventually_sequentiallyI[where c=i]) |
1814 by (auto intro!: Lim_eventually eventually_sequentiallyI[where c=i]) |
1815 next |
1815 next |
1816 assume "\<not> (\<exists>i. \<forall>j\<ge>i. F i = F j)" |
1816 assume "\<not> (\<exists>i. \<forall>j\<ge>i. F i = F j)" |
1817 then obtain f where f: "\<And>i. i \<le> f i" "\<And>i. F i \<noteq> F (f i)" by metis |
1817 then obtain f where f: "\<And>i. i \<le> f i" "\<And>i. F i \<noteq> F (f i)" by metis |
1818 then have "\<And>i. F i \<subseteq> F (f i)" using `incseq F` by (auto simp: incseq_def) |
1818 then have "\<And>i. F i \<subseteq> F (f i)" using \<open>incseq F\<close> by (auto simp: incseq_def) |
1819 with f have *: "\<And>i. F i \<subset> F (f i)" by auto |
1819 with f have *: "\<And>i. F i \<subset> F (f i)" by auto |
1820 |
1820 |
1821 have "incseq (\<lambda>i. ?M (F i))" |
1821 have "incseq (\<lambda>i. ?M (F i))" |
1822 using `incseq F` unfolding incseq_def by (auto simp: card_mono dest: finite_subset) |
1822 using \<open>incseq F\<close> unfolding incseq_def by (auto simp: card_mono dest: finite_subset) |
1823 then have "(\<lambda>i. ?M (F i)) ----> (SUP n. ?M (F n))" |
1823 then have "(\<lambda>i. ?M (F i)) ----> (SUP n. ?M (F n))" |
1824 by (rule LIMSEQ_SUP) |
1824 by (rule LIMSEQ_SUP) |
1825 |
1825 |
1826 moreover have "(SUP n. ?M (F n)) = \<infinity>" |
1826 moreover have "(SUP n. ?M (F n)) = \<infinity>" |
1827 proof (rule SUP_PInfty) |
1827 proof (rule SUP_PInfty) |
1828 fix n :: nat show "\<exists>k::nat\<in>UNIV. ereal n \<le> ?M (F k)" |
1828 fix n :: nat show "\<exists>k::nat\<in>UNIV. ereal n \<le> ?M (F k)" |
1829 proof (induct n) |
1829 proof (induct n) |
1830 case (Suc n) |
1830 case (Suc n) |
1831 then guess k .. note k = this |
1831 then guess k .. note k = this |
1832 moreover have "finite (F k) \<Longrightarrow> finite (F (f k)) \<Longrightarrow> card (F k) < card (F (f k))" |
1832 moreover have "finite (F k) \<Longrightarrow> finite (F (f k)) \<Longrightarrow> card (F k) < card (F (f k))" |
1833 using `F k \<subset> F (f k)` by (simp add: psubset_card_mono) |
1833 using \<open>F k \<subset> F (f k)\<close> by (simp add: psubset_card_mono) |
1834 moreover have "finite (F (f k)) \<Longrightarrow> finite (F k)" |
1834 moreover have "finite (F (f k)) \<Longrightarrow> finite (F k)" |
1835 using `k \<le> f k` `incseq F` by (auto simp: incseq_def dest: finite_subset) |
1835 using \<open>k \<le> f k\<close> \<open>incseq F\<close> by (auto simp: incseq_def dest: finite_subset) |
1836 ultimately show ?case |
1836 ultimately show ?case |
1837 by (auto intro!: exI[of _ "f k"]) |
1837 by (auto intro!: exI[of _ "f k"]) |
1838 qed auto |
1838 qed auto |
1839 qed |
1839 qed |
1840 |
1840 |
1924 proof - |
1924 proof - |
1925 interpret finite_measure "count_space A" using A by (rule finite_measure_count_space) |
1925 interpret finite_measure "count_space A" using A by (rule finite_measure_count_space) |
1926 show "sigma_finite_measure (count_space A)" .. |
1926 show "sigma_finite_measure (count_space A)" .. |
1927 qed |
1927 qed |
1928 |
1928 |
1929 subsection {* Measure restricted to space *} |
1929 subsection \<open>Measure restricted to space\<close> |
1930 |
1930 |
1931 lemma emeasure_restrict_space: |
1931 lemma emeasure_restrict_space: |
1932 assumes "\<Omega> \<inter> space M \<in> sets M" "A \<subseteq> \<Omega>" |
1932 assumes "\<Omega> \<inter> space M \<in> sets M" "A \<subseteq> \<Omega>" |
1933 shows "emeasure (restrict_space M \<Omega>) A = emeasure M A" |
1933 shows "emeasure (restrict_space M \<Omega>) A = emeasure M A" |
1934 proof cases |
1934 proof cases |
1935 assume "A \<in> sets M" |
1935 assume "A \<in> sets M" |
1936 show ?thesis |
1936 show ?thesis |
1937 proof (rule emeasure_measure_of[OF restrict_space_def]) |
1937 proof (rule emeasure_measure_of[OF restrict_space_def]) |
1938 show "op \<inter> \<Omega> ` sets M \<subseteq> Pow (\<Omega> \<inter> space M)" "A \<in> sets (restrict_space M \<Omega>)" |
1938 show "op \<inter> \<Omega> ` sets M \<subseteq> Pow (\<Omega> \<inter> space M)" "A \<in> sets (restrict_space M \<Omega>)" |
1939 using `A \<subseteq> \<Omega>` `A \<in> sets M` sets.space_closed by (auto simp: sets_restrict_space) |
1939 using \<open>A \<subseteq> \<Omega>\<close> \<open>A \<in> sets M\<close> sets.space_closed by (auto simp: sets_restrict_space) |
1940 show "positive (sets (restrict_space M \<Omega>)) (emeasure M)" |
1940 show "positive (sets (restrict_space M \<Omega>)) (emeasure M)" |
1941 by (auto simp: positive_def emeasure_nonneg) |
1941 by (auto simp: positive_def emeasure_nonneg) |
1942 show "countably_additive (sets (restrict_space M \<Omega>)) (emeasure M)" |
1942 show "countably_additive (sets (restrict_space M \<Omega>)) (emeasure M)" |
1943 proof (rule countably_additiveI) |
1943 proof (rule countably_additiveI) |
1944 fix A :: "nat \<Rightarrow> _" assume "range A \<subseteq> sets (restrict_space M \<Omega>)" "disjoint_family A" |
1944 fix A :: "nat \<Rightarrow> _" assume "range A \<subseteq> sets (restrict_space M \<Omega>)" "disjoint_family A" |
2083 also have "emeasure (restrict_space N \<Omega>) (X \<inter> \<Omega>) = emeasure N X" |
2083 also have "emeasure (restrict_space N \<Omega>) (X \<inter> \<Omega>) = emeasure N X" |
2084 using X ae \<Omega> by (auto simp add: emeasure_restrict_space sets_eq intro!: emeasure_eq_AE) |
2084 using X ae \<Omega> by (auto simp add: emeasure_restrict_space sets_eq intro!: emeasure_eq_AE) |
2085 finally show "emeasure M X = emeasure N X" . |
2085 finally show "emeasure M X = emeasure N X" . |
2086 qed fact |
2086 qed fact |
2087 |
2087 |
2088 subsection {* Null measure *} |
2088 subsection \<open>Null measure\<close> |
2089 |
2089 |
2090 definition "null_measure M = sigma (space M) (sets M)" |
2090 definition "null_measure M = sigma (space M) (sets M)" |
2091 |
2091 |
2092 lemma space_null_measure[simp]: "space (null_measure M) = space M" |
2092 lemma space_null_measure[simp]: "space (null_measure M) = space M" |
2093 by (simp add: null_measure_def) |
2093 by (simp add: null_measure_def) |