9 theory Measure_Space |
9 theory Measure_Space |
10 imports |
10 imports |
11 Measurable "HOL-Library.Extended_Nonnegative_Real" |
11 Measurable "HOL-Library.Extended_Nonnegative_Real" |
12 begin |
12 begin |
13 |
13 |
14 subsection "Relate extended reals and the indicator function" |
14 subsection%unimportant "Relate extended reals and the indicator function" |
15 |
15 |
16 lemma suminf_cmult_indicator: |
16 lemma suminf_cmult_indicator: |
17 fixes f :: "nat \<Rightarrow> ennreal" |
17 fixes f :: "nat \<Rightarrow> ennreal" |
18 assumes "disjoint_family A" "x \<in> A i" |
18 assumes "disjoint_family A" "x \<in> A 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" |
57 text \<open> |
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 \<close> |
60 \<close> |
61 |
61 |
62 subsection "Extend binary sets" |
62 subsection%unimportant "Extend binary sets" |
63 |
63 |
64 lemma LIMSEQ_binaryset: |
64 lemma LIMSEQ_binaryset: |
65 assumes f: "f {} = 0" |
65 assumes f: "f {} = 0" |
66 shows "(\<lambda>n. \<Sum>i<n. f (binaryset A B i)) \<longlonglongrightarrow> f A + f B" |
66 shows "(\<lambda>n. \<Sum>i<n. f (binaryset A B i)) \<longlonglongrightarrow> f A + f B" |
67 proof - |
67 proof - |
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 \<open>Properties of a premeasure @{term \<mu>}\<close> |
94 subsection%unimportant \<open>Properties of a premeasure @{term \<mu>}\<close> |
95 |
95 |
96 text \<open> |
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 \<close> |
99 \<close> |
440 shows "countably_additive M f" |
440 shows "countably_additive M f" |
441 using countably_additive_iff_continuous_from_below[OF f] |
441 using countably_additive_iff_continuous_from_below[OF f] |
442 using empty_continuous_imp_continuous_from_below[OF f fin] cont |
442 using empty_continuous_imp_continuous_from_below[OF f fin] cont |
443 by blast |
443 by blast |
444 |
444 |
445 subsection \<open>Properties of @{const emeasure}\<close> |
445 subsection%unimportant \<open>Properties of @{const emeasure}\<close> |
446 |
446 |
447 lemma emeasure_positive: "positive (sets M) (emeasure M)" |
447 lemma emeasure_positive: "positive (sets M) (emeasure M)" |
448 by (cases M) (auto simp: sets_def emeasure_def Abs_measure_inverse measure_space_def) |
448 by (cases M) (auto simp: sets_def emeasure_def Abs_measure_inverse measure_space_def) |
449 |
449 |
450 lemma emeasure_empty[simp, intro]: "emeasure M {} = 0" |
450 lemma emeasure_empty[simp, intro]: "emeasure M {} = 0" |
879 by (simp add: emeasure_countably_additive) |
879 by (simp add: emeasure_countably_additive) |
880 qed simp_all |
880 qed simp_all |
881 |
881 |
882 subsection \<open>\<open>\<mu>\<close>-null sets\<close> |
882 subsection \<open>\<open>\<mu>\<close>-null sets\<close> |
883 |
883 |
884 definition null_sets :: "'a measure \<Rightarrow> 'a set set" where |
884 definition%important null_sets :: "'a measure \<Rightarrow> 'a set set" where |
885 "null_sets M = {N\<in>sets M. emeasure M N = 0}" |
885 "null_sets M = {N\<in>sets M. emeasure M N = 0}" |
886 |
886 |
887 lemma null_setsD1[dest]: "A \<in> null_sets M \<Longrightarrow> emeasure M A = 0" |
887 lemma null_setsD1[dest]: "A \<in> null_sets M \<Longrightarrow> emeasure M A = 0" |
888 by (simp add: null_sets_def) |
888 by (simp add: null_sets_def) |
889 |
889 |
987 by (subst plus_emeasure[symmetric]) auto |
987 by (subst plus_emeasure[symmetric]) auto |
988 qed |
988 qed |
989 |
989 |
990 subsection \<open>The almost everywhere filter (i.e.\ quantifier)\<close> |
990 subsection \<open>The almost everywhere filter (i.e.\ quantifier)\<close> |
991 |
991 |
992 definition ae_filter :: "'a measure \<Rightarrow> 'a filter" where |
992 definition%important ae_filter :: "'a measure \<Rightarrow> 'a filter" where |
993 "ae_filter M = (INF N:null_sets M. principal (space M - N))" |
993 "ae_filter M = (INF N:null_sets M. principal (space M - N))" |
994 |
994 |
995 abbreviation almost_everywhere :: "'a measure \<Rightarrow> ('a \<Rightarrow> bool) \<Rightarrow> bool" where |
995 abbreviation almost_everywhere :: "'a measure \<Rightarrow> ('a \<Rightarrow> bool) \<Rightarrow> bool" where |
996 "almost_everywhere M P \<equiv> eventually P (ae_filter M)" |
996 "almost_everywhere M P \<equiv> eventually P (ae_filter M)" |
997 |
997 |
1263 finally show ?thesis . |
1263 finally show ?thesis . |
1264 qed |
1264 qed |
1265 |
1265 |
1266 subsection \<open>\<open>\<sigma>\<close>-finite Measures\<close> |
1266 subsection \<open>\<open>\<sigma>\<close>-finite Measures\<close> |
1267 |
1267 |
1268 locale sigma_finite_measure = |
1268 locale%important sigma_finite_measure = |
1269 fixes M :: "'a measure" |
1269 fixes M :: "'a measure" |
1270 assumes sigma_finite_countable: |
1270 assumes sigma_finite_countable: |
1271 "\<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>)" |
1271 "\<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>)" |
1272 |
1272 |
1273 lemma (in sigma_finite_measure) sigma_finite: |
1273 lemma (in sigma_finite_measure) sigma_finite: |
1385 then show ?thesis using that by blast |
1385 then show ?thesis using that by blast |
1386 qed |
1386 qed |
1387 |
1387 |
1388 subsection \<open>Measure space induced by distribution of @{const measurable}-functions\<close> |
1388 subsection \<open>Measure space induced by distribution of @{const measurable}-functions\<close> |
1389 |
1389 |
1390 definition distr :: "'a measure \<Rightarrow> 'b measure \<Rightarrow> ('a \<Rightarrow> 'b) \<Rightarrow> 'b measure" where |
1390 definition%important distr :: "'a measure \<Rightarrow> 'b measure \<Rightarrow> ('a \<Rightarrow> 'b) \<Rightarrow> 'b measure" where |
1391 "distr M N f = measure_of (space N) (sets N) (\<lambda>A. emeasure M (f -` A \<inter> space M))" |
1391 "distr M N f = measure_of (space N) (sets N) (\<lambda>A. emeasure M (f -` A \<inter> space M))" |
1392 |
1392 |
1393 lemma |
1393 lemma |
1394 shows sets_distr[simp, measurable_cong]: "sets (distr M N f) = sets N" |
1394 shows sets_distr[simp, measurable_cong]: "sets (distr M N f) = sets N" |
1395 and space_distr[simp]: "space (distr M N f) = space N" |
1395 and space_distr[simp]: "space (distr M N f) = space N" |
1511 |
1511 |
1512 lemma null_sets_distr_iff: |
1512 lemma null_sets_distr_iff: |
1513 "f \<in> measurable M N \<Longrightarrow> A \<in> null_sets (distr M N f) \<longleftrightarrow> f -` A \<inter> space M \<in> null_sets M \<and> A \<in> sets N" |
1513 "f \<in> measurable M N \<Longrightarrow> A \<in> null_sets (distr M N f) \<longleftrightarrow> f -` A \<inter> space M \<in> null_sets M \<and> A \<in> sets N" |
1514 by (auto simp add: null_sets_def emeasure_distr) |
1514 by (auto simp add: null_sets_def emeasure_distr) |
1515 |
1515 |
1516 lemma distr_distr: |
1516 lemma%important distr_distr: |
1517 "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)" |
1517 "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)" |
1518 by (auto simp add: emeasure_distr measurable_space |
1518 by (auto simp add: emeasure_distr measurable_space |
1519 intro!: arg_cong[where f="emeasure M"] measure_eqI) |
1519 intro!: arg_cong[where f="emeasure M"] measure_eqI) |
1520 |
1520 |
1521 subsection \<open>Real measure values\<close> |
1521 subsection%unimportant \<open>Real measure values\<close> |
1522 |
1522 |
1523 lemma ring_of_finite_sets: "ring_of_sets (space M) {A\<in>sets M. emeasure M A \<noteq> top}" |
1523 lemma ring_of_finite_sets: "ring_of_sets (space M) {A\<in>sets M. emeasure M A \<noteq> top}" |
1524 proof (rule ring_of_setsI) |
1524 proof (rule ring_of_setsI) |
1525 show "a \<in> {A \<in> sets M. emeasure M A \<noteq> top} \<Longrightarrow> b \<in> {A \<in> sets M. emeasure M A \<noteq> top} \<Longrightarrow> |
1525 show "a \<in> {A \<in> sets M. emeasure M A \<noteq> top} \<Longrightarrow> b \<in> {A \<in> sets M. emeasure M A \<noteq> top} \<Longrightarrow> |
1526 a \<union> b \<in> {A \<in> sets M. emeasure M A \<noteq> top}" for a b |
1526 a \<union> b \<in> {A \<in> sets M. emeasure M A \<noteq> top}" for a b |
1703 using fin A by (auto intro!: Lim_emeasure_decseq) |
1703 using fin A by (auto intro!: Lim_emeasure_decseq) |
1704 qed auto |
1704 qed auto |
1705 |
1705 |
1706 subsection \<open>Set of measurable sets with finite measure\<close> |
1706 subsection \<open>Set of measurable sets with finite measure\<close> |
1707 |
1707 |
1708 definition fmeasurable :: "'a measure \<Rightarrow> 'a set set" |
1708 definition%important fmeasurable :: "'a measure \<Rightarrow> 'a set set" |
1709 where |
1709 where |
1710 "fmeasurable M = {A\<in>sets M. emeasure M A < \<infinity>}" |
1710 "fmeasurable M = {A\<in>sets M. emeasure M A < \<infinity>}" |
1711 |
1711 |
1712 lemma fmeasurableD[dest, measurable_dest]: "A \<in> fmeasurable M \<Longrightarrow> A \<in> sets M" |
1712 lemma fmeasurableD[dest, measurable_dest]: "A \<in> fmeasurable M \<Longrightarrow> A \<in> sets M" |
1713 by (auto simp: fmeasurable_def) |
1713 by (auto simp: fmeasurable_def) |
1970 ultimately show ?thesis by auto |
1970 ultimately show ?thesis by auto |
1971 qed |
1971 qed |
1972 |
1972 |
1973 subsection \<open>Measure spaces with @{term "emeasure M (space M) < \<infinity>"}\<close> |
1973 subsection \<open>Measure spaces with @{term "emeasure M (space M) < \<infinity>"}\<close> |
1974 |
1974 |
1975 locale finite_measure = sigma_finite_measure M for M + |
1975 locale%important finite_measure = sigma_finite_measure M for M + |
1976 assumes finite_emeasure_space: "emeasure M (space M) \<noteq> top" |
1976 assumes finite_emeasure_space: "emeasure M (space M) \<noteq> top" |
1977 |
1977 |
1978 lemma finite_measureI[Pure.intro!]: |
1978 lemma finite_measureI[Pure.intro!]: |
1979 "emeasure M (space M) \<noteq> \<infinity> \<Longrightarrow> finite_measure M" |
1979 "emeasure M (space M) \<noteq> \<infinity> \<Longrightarrow> finite_measure M" |
1980 proof qed (auto intro!: exI[of _ "{space M}"]) |
1980 proof qed (auto intro!: exI[of _ "{space M}"]) |
2192 next |
2192 next |
2193 show "f x \<le> (\<lambda>s. emeasure (M s) {x \<in> space N. F top x})" for x |
2193 show "f x \<le> (\<lambda>s. emeasure (M s) {x \<in> space N. F top x})" for x |
2194 using bound[of x] sets_eq_imp_space_eq[OF sets] by (simp add: iter) |
2194 using bound[of x] sets_eq_imp_space_eq[OF sets] by (simp add: iter) |
2195 qed (auto simp add: iter le_fun_def INF_apply[abs_def] intro!: meas cont) |
2195 qed (auto simp add: iter le_fun_def INF_apply[abs_def] intro!: meas cont) |
2196 |
2196 |
2197 subsection \<open>Counting space\<close> |
2197 subsection%unimportant \<open>Counting space\<close> |
2198 |
2198 |
2199 lemma strict_monoI_Suc: |
2199 lemma strict_monoI_Suc: |
2200 assumes ord [simp]: "(\<And>n. f n < f (Suc n))" shows "strict_mono f" |
2200 assumes ord [simp]: "(\<And>n. f n < f (Suc n))" shows "strict_mono f" |
2201 unfolding strict_mono_def |
2201 unfolding strict_mono_def |
2202 proof safe |
2202 proof safe |
2341 proof - |
2341 proof - |
2342 interpret finite_measure "count_space A" using A by (rule finite_measure_count_space) |
2342 interpret finite_measure "count_space A" using A by (rule finite_measure_count_space) |
2343 show "sigma_finite_measure (count_space A)" .. |
2343 show "sigma_finite_measure (count_space A)" .. |
2344 qed |
2344 qed |
2345 |
2345 |
2346 subsection \<open>Measure restricted to space\<close> |
2346 subsection%unimportant \<open>Measure restricted to space\<close> |
2347 |
2347 |
2348 lemma emeasure_restrict_space: |
2348 lemma emeasure_restrict_space: |
2349 assumes "\<Omega> \<inter> space M \<in> sets M" "A \<subseteq> \<Omega>" |
2349 assumes "\<Omega> \<inter> space M \<in> sets M" "A \<subseteq> \<Omega>" |
2350 shows "emeasure (restrict_space M \<Omega>) A = emeasure M A" |
2350 shows "emeasure (restrict_space M \<Omega>) A = emeasure M A" |
2351 proof (cases "A \<in> sets M") |
2351 proof (cases "A \<in> sets M") |
2500 also have "emeasure (restrict_space N \<Omega>) (X \<inter> \<Omega>) = emeasure N X" |
2500 also have "emeasure (restrict_space N \<Omega>) (X \<inter> \<Omega>) = emeasure N X" |
2501 using X ae \<Omega> by (auto simp add: emeasure_restrict_space sets_eq intro!: emeasure_eq_AE) |
2501 using X ae \<Omega> by (auto simp add: emeasure_restrict_space sets_eq intro!: emeasure_eq_AE) |
2502 finally show "emeasure M X = emeasure N X" . |
2502 finally show "emeasure M X = emeasure N X" . |
2503 qed fact |
2503 qed fact |
2504 |
2504 |
2505 subsection \<open>Null measure\<close> |
2505 subsection%unimportant \<open>Null measure\<close> |
2506 |
2506 |
2507 definition "null_measure M = sigma (space M) (sets M)" |
2507 definition "null_measure M = sigma (space M) (sets M)" |
2508 |
2508 |
2509 lemma space_null_measure[simp]: "space (null_measure M) = space M" |
2509 lemma space_null_measure[simp]: "space (null_measure M) = space M" |
2510 by (simp add: null_measure_def) |
2510 by (simp add: null_measure_def) |
2523 lemma null_measure_idem [simp]: "null_measure (null_measure M) = null_measure M" |
2523 lemma null_measure_idem [simp]: "null_measure (null_measure M) = null_measure M" |
2524 by(rule measure_eqI) simp_all |
2524 by(rule measure_eqI) simp_all |
2525 |
2525 |
2526 subsection \<open>Scaling a measure\<close> |
2526 subsection \<open>Scaling a measure\<close> |
2527 |
2527 |
2528 definition scale_measure :: "ennreal \<Rightarrow> 'a measure \<Rightarrow> 'a measure" |
2528 definition%important scale_measure :: "ennreal \<Rightarrow> 'a measure \<Rightarrow> 'a measure" |
2529 where |
2529 where |
2530 "scale_measure r M = measure_of (space M) (sets M) (\<lambda>A. r * emeasure M A)" |
2530 "scale_measure r M = measure_of (space M) (sets M) (\<lambda>A. r * emeasure M A)" |
2531 |
2531 |
2532 lemma space_scale_measure: "space (scale_measure r M) = space M" |
2532 lemma space_scale_measure: "space (scale_measure r M) = space M" |
2533 by (simp add: scale_measure_def) |
2533 by (simp add: scale_measure_def) |
2701 then show "emeasure M X \<le> emeasure N X" |
2701 then show "emeasure M X \<le> emeasure N X" |
2702 by (auto simp: d_def M.emeasure_eq_measure N.emeasure_eq_measure) |
2702 by (auto simp: d_def M.emeasure_eq_measure N.emeasure_eq_measure) |
2703 qed auto |
2703 qed auto |
2704 qed |
2704 qed |
2705 |
2705 |
2706 lemma unsigned_Hahn_decomposition: |
2706 lemma%important unsigned_Hahn_decomposition: |
2707 assumes [simp]: "sets N = sets M" and [measurable]: "A \<in> sets M" |
2707 assumes [simp]: "sets N = sets M" and [measurable]: "A \<in> sets M" |
2708 and [simp]: "emeasure M A \<noteq> top" "emeasure N A \<noteq> top" |
2708 and [simp]: "emeasure M A \<noteq> top" "emeasure N A \<noteq> top" |
2709 shows "\<exists>Y\<in>sets M. Y \<subseteq> A \<and> (\<forall>X\<in>sets M. X \<subseteq> Y \<longrightarrow> N X \<le> M X) \<and> (\<forall>X\<in>sets M. X \<subseteq> A \<longrightarrow> X \<inter> Y = {} \<longrightarrow> M X \<le> N X)" |
2709 shows "\<exists>Y\<in>sets M. Y \<subseteq> A \<and> (\<forall>X\<in>sets M. X \<subseteq> Y \<longrightarrow> N X \<le> M X) \<and> (\<forall>X\<in>sets M. X \<subseteq> A \<longrightarrow> X \<inter> Y = {} \<longrightarrow> M X \<le> N X)" |
2710 proof - |
2710 proof%unimportant - |
2711 have "\<exists>Y\<in>sets (restrict_space M A). |
2711 have "\<exists>Y\<in>sets (restrict_space M A). |
2712 (\<forall>X\<in>sets (restrict_space M A). X \<subseteq> Y \<longrightarrow> (restrict_space N A) X \<le> (restrict_space M A) X) \<and> |
2712 (\<forall>X\<in>sets (restrict_space M A). X \<subseteq> Y \<longrightarrow> (restrict_space N A) X \<le> (restrict_space M A) X) \<and> |
2713 (\<forall>X\<in>sets (restrict_space M A). X \<inter> Y = {} \<longrightarrow> (restrict_space M A) X \<le> (restrict_space N A) X)" |
2713 (\<forall>X\<in>sets (restrict_space M A). X \<inter> Y = {} \<longrightarrow> (restrict_space M A) X \<le> (restrict_space N A) X)" |
2714 proof (rule finite_unsigned_Hahn_decomposition) |
2714 proof (rule finite_unsigned_Hahn_decomposition) |
2715 show "finite_measure (restrict_space M A)" "finite_measure (restrict_space N A)" |
2715 show "finite_measure (restrict_space M A)" "finite_measure (restrict_space N A)" |
2726 by (erule ballE[of _ _ X]) (auto simp add: Int_absorb1 ac_simps) |
2726 by (erule ballE[of _ _ X]) (auto simp add: Int_absorb1 ac_simps) |
2727 apply auto |
2727 apply auto |
2728 done |
2728 done |
2729 qed |
2729 qed |
2730 |
2730 |
2731 text \<open> |
2731 text%important \<open> |
2732 Define a lexicographical order on @{type measure}, in the order space, sets and measure. The parts |
2732 Define a lexicographical order on @{type measure}, in the order space, sets and measure. The parts |
2733 of the lexicographical order are point-wise ordered. |
2733 of the lexicographical order are point-wise ordered. |
2734 \<close> |
2734 \<close> |
2735 |
2735 |
2736 instantiation measure :: (type) order_bot |
2736 instantiation%important measure :: (type) order_bot |
2737 begin |
2737 begin |
2738 |
2738 |
2739 inductive less_eq_measure :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> bool" where |
2739 inductive less_eq_measure :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> bool" where |
2740 "space M \<subset> space N \<Longrightarrow> less_eq_measure M N" |
2740 "space M \<subset> space N \<Longrightarrow> less_eq_measure M N" |
2741 | "space M = space N \<Longrightarrow> sets M \<subset> sets N \<Longrightarrow> less_eq_measure M N" |
2741 | "space M = space N \<Longrightarrow> sets M \<subset> sets N \<Longrightarrow> less_eq_measure M N" |
2744 lemma le_measure_iff: |
2744 lemma le_measure_iff: |
2745 "M \<le> N \<longleftrightarrow> (if space M = space N then |
2745 "M \<le> N \<longleftrightarrow> (if space M = space N then |
2746 if sets M = sets N then emeasure M \<le> emeasure N else sets M \<subseteq> sets N else space M \<subseteq> space N)" |
2746 if sets M = sets N then emeasure M \<le> emeasure N else sets M \<subseteq> sets N else space M \<subseteq> space N)" |
2747 by (auto elim: less_eq_measure.cases intro: less_eq_measure.intros) |
2747 by (auto elim: less_eq_measure.cases intro: less_eq_measure.intros) |
2748 |
2748 |
2749 definition less_measure :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> bool" where |
2749 definition%important less_measure :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> bool" where |
2750 "less_measure M N \<longleftrightarrow> (M \<le> N \<and> \<not> N \<le> M)" |
2750 "less_measure M N \<longleftrightarrow> (M \<le> N \<and> \<not> N \<le> M)" |
2751 |
2751 |
2752 definition bot_measure :: "'a measure" where |
2752 definition%important bot_measure :: "'a measure" where |
2753 "bot_measure = sigma {} {}" |
2753 "bot_measure = sigma {} {}" |
2754 |
2754 |
2755 lemma |
2755 lemma |
2756 shows space_bot[simp]: "space bot = {}" |
2756 shows space_bot[simp]: "space bot = {}" |
2757 and sets_bot[simp]: "sets bot = {{}}" |
2757 and sets_bot[simp]: "sets bot = {{}}" |
2764 by (simp add: le_measure_iff bot_measure_def sigma_sets_empty_eq emeasure_sigma le_fun_def) |
2764 by (simp add: le_measure_iff bot_measure_def sigma_sets_empty_eq emeasure_sigma le_fun_def) |
2765 qed (auto simp: le_measure_iff less_measure_def split: if_split_asm intro: measure_eqI) |
2765 qed (auto simp: le_measure_iff less_measure_def split: if_split_asm intro: measure_eqI) |
2766 |
2766 |
2767 end |
2767 end |
2768 |
2768 |
2769 lemma le_measure: "sets M = sets N \<Longrightarrow> M \<le> N \<longleftrightarrow> (\<forall>A\<in>sets M. emeasure M A \<le> emeasure N A)" |
2769 lemma%important le_measure: "sets M = sets N \<Longrightarrow> M \<le> N \<longleftrightarrow> (\<forall>A\<in>sets M. emeasure M A \<le> emeasure N A)" |
|
2770 apply%unimportant - |
2770 apply (auto simp: le_measure_iff le_fun_def dest: sets_eq_imp_space_eq) |
2771 apply (auto simp: le_measure_iff le_fun_def dest: sets_eq_imp_space_eq) |
2771 subgoal for X |
2772 subgoal for X |
2772 by (cases "X \<in> sets M") (auto simp: emeasure_notin_sets) |
2773 by (cases "X \<in> sets M") (auto simp: emeasure_notin_sets) |
2773 done |
2774 done |
2774 |
2775 |
2775 definition sup_measure' :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> 'a measure" |
2776 definition%important sup_measure' :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> 'a measure" |
2776 where |
2777 where |
2777 "sup_measure' A B = measure_of (space A) (sets A) (\<lambda>X. SUP Y:sets A. emeasure A (X \<inter> Y) + emeasure B (X \<inter> - Y))" |
2778 "sup_measure' A B = measure_of (space A) (sets A) (\<lambda>X. SUP Y:sets A. emeasure A (X \<inter> Y) + emeasure B (X \<inter> - Y))" |
2778 |
2779 |
2779 lemma assumes [simp]: "sets B = sets A" |
2780 lemma assumes [simp]: "sets B = sets A" |
2780 shows space_sup_measure'[simp]: "space (sup_measure' A B) = space A" |
2781 shows space_sup_measure'[simp]: "space (sup_measure' A B) = space A" |
2898 by (subst plus_emeasure) (auto simp: Diff_eq[symmetric]) |
2899 by (subst plus_emeasure) (auto simp: Diff_eq[symmetric]) |
2899 finally show "emeasure A (X \<inter> Y) + emeasure B (X \<inter> - Y) \<le> emeasure C X" . |
2900 finally show "emeasure A (X \<inter> Y) + emeasure B (X \<inter> - Y) \<le> emeasure C X" . |
2900 qed |
2901 qed |
2901 qed simp_all |
2902 qed simp_all |
2902 |
2903 |
2903 definition sup_lexord :: "'a \<Rightarrow> 'a \<Rightarrow> ('a \<Rightarrow> 'b::order) \<Rightarrow> 'a \<Rightarrow> 'a \<Rightarrow> 'a" |
2904 definition%important sup_lexord :: "'a \<Rightarrow> 'a \<Rightarrow> ('a \<Rightarrow> 'b::order) \<Rightarrow> 'a \<Rightarrow> 'a \<Rightarrow> 'a" |
2904 where |
2905 where |
2905 "sup_lexord A B k s c = |
2906 "sup_lexord A B k s c = |
2906 (if k A = k B then c else if \<not> k A \<le> k B \<and> \<not> k B \<le> k A then s else if k B \<le> k A then A else B)" |
2907 (if k A = k B then c else if \<not> k A \<le> k B \<and> \<not> k B \<le> k A then s else if k B \<le> k A then A else B)" |
2907 |
2908 |
2908 lemma sup_lexord: |
2909 lemma sup_lexord: |
2924 lemma sigma_le_iff: "\<A> \<subseteq> Pow \<Omega> \<Longrightarrow> sigma \<Omega> \<A> \<le> x \<longleftrightarrow> (\<Omega> \<subseteq> space x \<and> (space x = \<Omega> \<longrightarrow> \<A> \<subseteq> sets x))" |
2925 lemma sigma_le_iff: "\<A> \<subseteq> Pow \<Omega> \<Longrightarrow> sigma \<Omega> \<A> \<le> x \<longleftrightarrow> (\<Omega> \<subseteq> space x \<and> (space x = \<Omega> \<longrightarrow> \<A> \<subseteq> sets x))" |
2925 by (cases "\<Omega> = space x") |
2926 by (cases "\<Omega> = space x") |
2926 (simp_all add: eq_commute[of _ "sets x"] le_measure_iff emeasure_sigma le_fun_def |
2927 (simp_all add: eq_commute[of _ "sets x"] le_measure_iff emeasure_sigma le_fun_def |
2927 sigma_sets_superset_generator sigma_sets_le_sets_iff) |
2928 sigma_sets_superset_generator sigma_sets_le_sets_iff) |
2928 |
2929 |
2929 instantiation measure :: (type) semilattice_sup |
2930 instantiation%important measure :: (type) semilattice_sup |
2930 begin |
2931 begin |
2931 |
2932 |
2932 definition sup_measure :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> 'a measure" |
2933 definition%important sup_measure :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> 'a measure" |
2933 where |
2934 where |
2934 "sup_measure A B = |
2935 "sup_measure A B = |
2935 sup_lexord A B space (sigma (space A \<union> space B) {}) |
2936 sup_lexord A B space (sigma (space A \<union> space B) {}) |
2936 (sup_lexord A B sets (sigma (space A) (sets A \<union> sets B)) (sup_measure' A B))" |
2937 (sup_lexord A B sets (sigma (space A) (sets A \<union> sets B)) (sup_measure' A B))" |
2937 |
2938 |
3055 by (metis A(2)[symmetric]) |
3056 by (metis A(2)[symmetric]) |
3056 then show "P (c {a \<in> A. k a = (\<Union>x\<in>A. k x)})" |
3057 then show "P (c {a \<in> A. k a = (\<Union>x\<in>A. k x)})" |
3057 by (simp add: A(3)) |
3058 by (simp add: A(3)) |
3058 qed |
3059 qed |
3059 |
3060 |
3060 instantiation measure :: (type) complete_lattice |
3061 instantiation%important measure :: (type) complete_lattice |
3061 begin |
3062 begin |
3062 |
3063 |
3063 interpretation sup_measure: comm_monoid_set sup "bot :: 'a measure" |
3064 interpretation sup_measure: comm_monoid_set sup "bot :: 'a measure" |
3064 by standard (auto intro!: antisym) |
3065 by standard (auto intro!: antisym) |
3065 |
3066 |
3090 |
3091 |
3091 lemma sets_sup_measure_F: |
3092 lemma sets_sup_measure_F: |
3092 "finite I \<Longrightarrow> I \<noteq> {} \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> sets i = sets M) \<Longrightarrow> sets (sup_measure.F id I) = sets M" |
3093 "finite I \<Longrightarrow> I \<noteq> {} \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> sets i = sets M) \<Longrightarrow> sets (sup_measure.F id I) = sets M" |
3093 by (induction I rule: finite_ne_induct) (simp_all add: sets_sup) |
3094 by (induction I rule: finite_ne_induct) (simp_all add: sets_sup) |
3094 |
3095 |
3095 definition Sup_measure' :: "'a measure set \<Rightarrow> 'a measure" |
3096 definition%important Sup_measure' :: "'a measure set \<Rightarrow> 'a measure" |
3096 where |
3097 where |
3097 "Sup_measure' M = measure_of (\<Union>a\<in>M. space a) (\<Union>a\<in>M. sets a) |
3098 "Sup_measure' M = measure_of (\<Union>a\<in>M. space a) (\<Union>a\<in>M. sets a) |
3098 (\<lambda>X. (SUP P:{P. finite P \<and> P \<subseteq> M }. sup_measure.F id P X))" |
3099 (\<lambda>X. (SUP P:{P. finite P \<and> P \<subseteq> M }. sup_measure.F id P X))" |
3099 |
3100 |
3100 lemma space_Sup_measure'2: "space (Sup_measure' M) = (\<Union>m\<in>M. space m)" |
3101 lemma space_Sup_measure'2: "space (Sup_measure' M) = (\<Union>m\<in>M. space m)" |
3161 by (auto simp: positive_def bot_ennreal[symmetric]) |
3162 by (auto simp: positive_def bot_ennreal[symmetric]) |
3162 show "X \<in> sets (Sup_measure' M)" |
3163 show "X \<in> sets (Sup_measure' M)" |
3163 using assms * by auto |
3164 using assms * by auto |
3164 qed (rule UN_space_closed) |
3165 qed (rule UN_space_closed) |
3165 |
3166 |
3166 definition Sup_measure :: "'a measure set \<Rightarrow> 'a measure" |
3167 definition%important Sup_measure :: "'a measure set \<Rightarrow> 'a measure" |
3167 where |
3168 where |
3168 "Sup_measure = Sup_lexord space (Sup_lexord sets Sup_measure' |
3169 "Sup_measure = Sup_lexord space (Sup_lexord sets Sup_measure' |
3169 (\<lambda>U. sigma (\<Union>u\<in>U. space u) (\<Union>u\<in>U. sets u))) (\<lambda>U. sigma (\<Union>u\<in>U. space u) {})" |
3170 (\<lambda>U. sigma (\<Union>u\<in>U. space u) (\<Union>u\<in>U. sets u))) (\<lambda>U. sigma (\<Union>u\<in>U. space u) {})" |
3170 |
3171 |
3171 definition Inf_measure :: "'a measure set \<Rightarrow> 'a measure" |
3172 definition%important Inf_measure :: "'a measure set \<Rightarrow> 'a measure" |
3172 where |
3173 where |
3173 "Inf_measure A = Sup {x. \<forall>a\<in>A. x \<le> a}" |
3174 "Inf_measure A = Sup {x. \<forall>a\<in>A. x \<le> a}" |
3174 |
3175 |
3175 definition inf_measure :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> 'a measure" |
3176 definition%important inf_measure :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> 'a measure" |
3176 where |
3177 where |
3177 "inf_measure a b = Inf {a, b}" |
3178 "inf_measure a b = Inf {a, b}" |
3178 |
3179 |
3179 definition top_measure :: "'a measure" |
3180 definition%important top_measure :: "'a measure" |
3180 where |
3181 where |
3181 "top_measure = Inf {}" |
3182 "top_measure = Inf {}" |
3182 |
3183 |
3183 instance |
3184 instance |
3184 proof |
3185 proof |
3415 fix j assume "j\<in>A" then show "\<exists>i\<in>{J. J \<noteq> {} \<and> finite J \<and> J \<subseteq> A}. emeasure (M j) X \<le> emeasure (SUPREMUM i M) X" |
3416 fix j assume "j\<in>A" then show "\<exists>i\<in>{J. J \<noteq> {} \<and> finite J \<and> J \<subseteq> A}. emeasure (M j) X \<le> emeasure (SUPREMUM i M) X" |
3416 by (intro bexI[of _ "{j}"]) auto |
3417 by (intro bexI[of _ "{j}"]) auto |
3417 qed |
3418 qed |
3418 qed |
3419 qed |
3419 |
3420 |
3420 subsubsection \<open>Supremum of a set of $\sigma$-algebras\<close> |
3421 subsubsection%unimportant \<open>Supremum of a set of $\sigma$-algebras\<close> |
3421 |
3422 |
3422 lemma space_Sup_eq_UN: "space (Sup M) = (\<Union>x\<in>M. space x)" |
3423 lemma space_Sup_eq_UN: "space (Sup M) = (\<Union>x\<in>M. space x)" |
3423 unfolding Sup_measure_def |
3424 unfolding Sup_measure_def |
3424 apply (intro Sup_lexord[where P="\<lambda>x. space x = _"]) |
3425 apply (intro Sup_lexord[where P="\<lambda>x. space x = _"]) |
3425 apply (subst space_Sup_measure'2) |
3426 apply (subst space_Sup_measure'2) |