| author | paulson <lp15@cam.ac.uk> | 
| Wed, 09 Dec 2015 17:35:22 +0000 | |
| changeset 61810 | 3c5040d5694a | 
| parent 61808 | fc1556774cfe | 
| child 61880 | ff4d33058566 | 
| permissions | -rw-r--r-- | 
| 47694 | 1 | (* Title: HOL/Probability/Measure_Space.thy | 
| 2 | Author: Lawrence C Paulson | |
| 3 | Author: Johannes Hölzl, TU München | |
| 4 | Author: Armin Heller, TU München | |
| 5 | *) | |
| 6 | ||
| 61808 | 7 | section \<open>Measure spaces and their properties\<close> | 
| 47694 | 8 | |
| 9 | theory Measure_Space | |
| 10 | imports | |
| 59593 | 11 | Measurable "~~/src/HOL/Multivariate_Analysis/Multivariate_Analysis" | 
| 47694 | 12 | begin | 
| 13 | ||
| 50104 | 14 | subsection "Relate extended reals and the indicator function" | 
| 15 | ||
| 47694 | 16 | lemma suminf_cmult_indicator: | 
| 17 | fixes f :: "nat \<Rightarrow> ereal" | |
| 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" | |
| 20 | proof - | |
| 21 | have **: "\<And>n. f n * indicator (A n) x = (if n = i then f n else 0 :: ereal)" | |
| 61808 | 22 | using \<open>x \<in> A i\<close> assms unfolding disjoint_family_on_def indicator_def by auto | 
| 47694 | 23 | then have "\<And>n. (\<Sum>j<n. f j * indicator (A j) x) = (if i < n then f i else 0 :: ereal)" | 
| 57418 | 24 | by (auto simp: setsum.If_cases) | 
| 47694 | 25 | moreover have "(SUP n. if i < n then f i else 0) = (f i :: ereal)" | 
| 51000 | 26 | proof (rule SUP_eqI) | 
| 47694 | 27 | fix y :: ereal assume "\<And>n. n \<in> UNIV \<Longrightarrow> (if i < n then f i else 0) \<le> y" | 
| 28 | from this[of "Suc i"] show "f i \<le> y" by auto | |
| 29 | qed (insert assms, simp) | |
| 30 | ultimately show ?thesis using assms | |
| 56212 
3253aaf73a01
consolidated theorem names containing INFI and SUPR: have INF and SUP instead uniformly
 haftmann parents: 
56193diff
changeset | 31 | by (subst suminf_ereal_eq_SUP) (auto simp: indicator_def) | 
| 47694 | 32 | qed | 
| 33 | ||
| 34 | lemma suminf_indicator: | |
| 35 | assumes "disjoint_family A" | |
| 36 | shows "(\<Sum>n. indicator (A n) x :: ereal) = indicator (\<Union>i. A i) x" | |
| 37 | proof cases | |
| 38 | assume *: "x \<in> (\<Union>i. A i)" | |
| 39 | then obtain i where "x \<in> A i" by auto | |
| 61808 | 40 | from suminf_cmult_indicator[OF assms(1), OF \<open>x \<in> A i\<close>, of "\<lambda>k. 1"] | 
| 47694 | 41 | show ?thesis using * by simp | 
| 42 | qed simp | |
| 43 | ||
| 60727 | 44 | lemma setsum_indicator_disjoint_family: | 
| 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" | |
| 47 | shows "(\<Sum>i\<in>P. f i * indicator (A i) x) = f j" | |
| 48 | proof - | |
| 49 |   have "P \<inter> {i. x \<in> A i} = {j}"
 | |
| 61808 | 50 | using d \<open>x \<in> A j\<close> \<open>j \<in> P\<close> unfolding disjoint_family_on_def | 
| 60727 | 51 | by auto | 
| 52 | thus ?thesis | |
| 53 | unfolding indicator_def | |
| 61808 | 54 | by (simp add: if_distrib setsum.If_cases[OF \<open>finite P\<close>]) | 
| 60727 | 55 | qed | 
| 56 | ||
| 61808 | 57 | text \<open> | 
| 47694 | 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). | |
| 61808 | 60 | \<close> | 
| 47694 | 61 | |
| 56994 | 62 | subsection "Extend binary sets" | 
| 47694 | 63 | |
| 64 | lemma LIMSEQ_binaryset: | |
| 65 |   assumes f: "f {} = 0"
 | |
| 66 | shows "(\<lambda>n. \<Sum>i<n. f (binaryset A B i)) ----> f A + f B" | |
| 67 | proof - | |
| 68 | have "(\<lambda>n. \<Sum>i < Suc (Suc n). f (binaryset A B i)) = (\<lambda>n. f A + f B)" | |
| 69 | proof | |
| 70 | fix n | |
| 71 | show "(\<Sum>i < Suc (Suc n). f (binaryset A B i)) = f A + f B" | |
| 72 | by (induct n) (auto simp add: binaryset_def f) | |
| 73 | qed | |
| 74 | moreover | |
| 75 | have "... ----> f A + f B" by (rule tendsto_const) | |
| 76 | ultimately | |
| 77 | have "(\<lambda>n. \<Sum>i< Suc (Suc n). f (binaryset A B i)) ----> f A + f B" | |
| 78 | by metis | |
| 79 | hence "(\<lambda>n. \<Sum>i< n+2. f (binaryset A B i)) ----> f A + f B" | |
| 80 | by simp | |
| 81 | thus ?thesis by (rule LIMSEQ_offset [where k=2]) | |
| 82 | qed | |
| 83 | ||
| 84 | lemma binaryset_sums: | |
| 85 |   assumes f: "f {} = 0"
 | |
| 86 | shows "(\<lambda>n. f (binaryset A B n)) sums (f A + f B)" | |
| 87 | by (simp add: sums_def LIMSEQ_binaryset [where f=f, OF f] atLeast0LessThan) | |
| 88 | ||
| 89 | lemma suminf_binaryset_eq: | |
| 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"
 | |
| 92 | by (metis binaryset_sums sums_unique) | |
| 93 | ||
| 61808 | 94 | subsection \<open>Properties of a premeasure @{term \<mu>}\<close>
 | 
| 47694 | 95 | |
| 61808 | 96 | text \<open> | 
| 47694 | 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}.
 | |
| 61808 | 99 | \<close> | 
| 47694 | 100 | |
| 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)"
 | |
| 103 | ||
| 104 | definition increasing where | |
| 105 | "increasing M \<mu> \<longleftrightarrow> (\<forall>x\<in>M. \<forall>y\<in>M. x \<subseteq> y \<longrightarrow> \<mu> x \<le> \<mu> y)" | |
| 106 | ||
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 107 | lemma positiveD1: "positive M f \<Longrightarrow> f {} = 0" by (auto simp: positive_def)
 | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 108 | lemma positiveD2: "positive M f \<Longrightarrow> A \<in> M \<Longrightarrow> 0 \<le> f A" by (auto simp: positive_def) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 109 | |
| 47694 | 110 | lemma positiveD_empty: | 
| 111 |   "positive M f \<Longrightarrow> f {} = 0"
 | |
| 112 | by (auto simp add: positive_def) | |
| 113 | ||
| 114 | lemma additiveD: | |
| 115 |   "additive M f \<Longrightarrow> x \<inter> y = {} \<Longrightarrow> x \<in> M \<Longrightarrow> y \<in> M \<Longrightarrow> f (x \<union> y) = f x + f y"
 | |
| 116 | by (auto simp add: additive_def) | |
| 117 | ||
| 118 | lemma increasingD: | |
| 119 | "increasing M f \<Longrightarrow> x \<subseteq> y \<Longrightarrow> x\<in>M \<Longrightarrow> y\<in>M \<Longrightarrow> f x \<le> f y" | |
| 120 | by (auto simp add: increasing_def) | |
| 121 | ||
| 50104 | 122 | lemma countably_additiveI[case_names countably]: | 
| 47694 | 123 | "(\<And>A. range A \<subseteq> M \<Longrightarrow> disjoint_family A \<Longrightarrow> (\<Union>i. A i) \<in> M \<Longrightarrow> (\<Sum>i. f (A i)) = f (\<Union>i. A i)) | 
| 124 | \<Longrightarrow> countably_additive M f" | |
| 125 | by (simp add: countably_additive_def) | |
| 126 | ||
| 127 | lemma (in ring_of_sets) disjointed_additive: | |
| 128 | assumes f: "positive M f" "additive M f" and A: "range A \<subseteq> M" "incseq A" | |
| 129 | shows "(\<Sum>i\<le>n. f (disjointed A i)) = f (A n)" | |
| 130 | proof (induct n) | |
| 131 | case (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 | |
| 134 | also have "\<dots> = f (A n \<union> disjointed A (Suc n))" | |
| 60727 | 135 | using A by (subst f(2)[THEN additiveD]) (auto simp: disjointed_mono) | 
| 47694 | 136 | also have "A n \<union> disjointed A (Suc n) = A (Suc n)" | 
| 61808 | 137 | using \<open>incseq A\<close> by (auto dest: incseq_SucD simp: disjointed_mono) | 
| 47694 | 138 | finally show ?case . | 
| 139 | qed simp | |
| 140 | ||
| 141 | lemma (in ring_of_sets) additive_sum: | |
| 142 | fixes A:: "'i \<Rightarrow> 'a set" | |
| 143 | assumes f: "positive M f" and ad: "additive M f" and "finite S" | |
| 144 | and A: "A`S \<subseteq> M" | |
| 145 | and disj: "disjoint_family_on A S" | |
| 146 | shows "(\<Sum>i\<in>S. f (A i)) = f (\<Union>i\<in>S. A i)" | |
| 61808 | 147 | using \<open>finite S\<close> disj A | 
| 53374 
a14d2a854c02
tuned proofs -- clarified flow of facts wrt. calculation;
 wenzelm parents: 
51351diff
changeset | 148 | proof induct | 
| 47694 | 149 | case empty show ?case using f by (simp add: positive_def) | 
| 150 | next | |
| 151 | case (insert s S) | |
| 152 |   then have "A s \<inter> (\<Union>i\<in>S. A i) = {}"
 | |
| 153 | by (auto simp add: disjoint_family_on_def neq_iff) | |
| 154 | moreover | |
| 155 | have "A s \<in> M" using insert by blast | |
| 156 | moreover have "(\<Union>i\<in>S. A i) \<in> M" | |
| 61808 | 157 | using insert \<open>finite S\<close> by auto | 
| 47694 | 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) | |
| 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) | |
| 162 | qed | |
| 163 | ||
| 164 | lemma (in ring_of_sets) additive_increasing: | |
| 165 | assumes posf: "positive M f" and addf: "additive M f" | |
| 166 | shows "increasing M f" | |
| 167 | proof (auto simp add: increasing_def) | |
| 168 | fix x y | |
| 169 | assume xy: "x \<in> M" "y \<in> M" "x \<subseteq> y" | |
| 170 | then have "y - x \<in> M" by auto | |
| 171 | then have "0 \<le> f (y-x)" using posf[unfolded positive_def] by auto | |
| 172 | then have "f x + 0 \<le> f x + f (y-x)" by (intro add_left_mono) auto | |
| 173 | also have "... = f (x \<union> (y-x))" using addf | |
| 174 | by (auto simp add: additive_def) (metis Diff_disjoint Un_Diff_cancel Diff xy(1,2)) | |
| 175 | also have "... = f y" | |
| 176 | by (metis Un_Diff_cancel Un_absorb1 xy(3)) | |
| 177 | finally show "f x \<le> f y" by simp | |
| 178 | qed | |
| 179 | ||
| 50087 | 180 | lemma (in ring_of_sets) subadditive: | 
| 181 | assumes f: "positive M f" "additive M f" and A: "range A \<subseteq> M" and S: "finite S" | |
| 182 | shows "f (\<Union>i\<in>S. A i) \<le> (\<Sum>i\<in>S. f (A i))" | |
| 183 | using S | |
| 184 | proof (induct S) | |
| 185 | case empty thus ?case using f by (auto simp: positive_def) | |
| 186 | next | |
| 187 | case (insert x F) | |
| 60585 | 188 | hence in_M: "A x \<in> M" "(\<Union>i\<in>F. A i) \<in> M" "(\<Union>i\<in>F. A i) - A x \<in> M" using A by force+ | 
| 189 | have subs: "(\<Union>i\<in>F. A i) - A x \<subseteq> (\<Union>i\<in>F. A i)" by auto | |
| 190 | have "(\<Union>i\<in>(insert x F). A i) = A x \<union> ((\<Union>i\<in>F. A i) - A x)" by auto | |
| 191 | hence "f (\<Union>i\<in>(insert x F). A i) = f (A x \<union> ((\<Union>i\<in>F. A i) - A x))" | |
| 50087 | 192 | by simp | 
| 60585 | 193 | also have "\<dots> = f (A x) + f ((\<Union>i\<in>F. A i) - A x)" | 
| 50087 | 194 | using f(2) by (rule additiveD) (insert in_M, auto) | 
| 60585 | 195 | also have "\<dots> \<le> f (A x) + f (\<Union>i\<in>F. A i)" | 
| 50087 | 196 | using additive_increasing[OF f] in_M subs by (auto simp: increasing_def intro: add_left_mono) | 
| 197 | also have "\<dots> \<le> f (A x) + (\<Sum>i\<in>F. f (A i))" using insert by (auto intro: add_left_mono) | |
| 60585 | 198 | finally show "f (\<Union>i\<in>(insert x F). A i) \<le> (\<Sum>i\<in>(insert x F). f (A i))" using insert by simp | 
| 50087 | 199 | qed | 
| 200 | ||
| 47694 | 201 | lemma (in ring_of_sets) countably_additive_additive: | 
| 202 | assumes posf: "positive M f" and ca: "countably_additive M f" | |
| 203 | shows "additive M f" | |
| 204 | proof (auto simp add: additive_def) | |
| 205 | fix x y | |
| 206 |   assume x: "x \<in> M" and y: "y \<in> M" and "x \<inter> y = {}"
 | |
| 207 | hence "disjoint_family (binaryset x y)" | |
| 208 | by (auto simp add: disjoint_family_on_def binaryset_def) | |
| 209 | hence "range (binaryset x y) \<subseteq> M \<longrightarrow> | |
| 210 | (\<Union>i. binaryset x y i) \<in> M \<longrightarrow> | |
| 211 | f (\<Union>i. binaryset x y i) = (\<Sum> n. f (binaryset x y n))" | |
| 212 | using ca | |
| 213 | by (simp add: countably_additive_def) | |
| 214 |   hence "{x,y,{}} \<subseteq> M \<longrightarrow> x \<union> y \<in> M \<longrightarrow>
 | |
| 215 | f (x \<union> y) = (\<Sum>n. f (binaryset x y n))" | |
| 216 | by (simp add: range_binaryset_eq UN_binaryset_eq) | |
| 217 | thus "f (x \<union> y) = f x + f y" using posf x y | |
| 218 | by (auto simp add: Un suminf_binaryset_eq positive_def) | |
| 219 | qed | |
| 220 | ||
| 221 | lemma (in algebra) increasing_additive_bound: | |
| 222 | fixes A:: "nat \<Rightarrow> 'a set" and f :: "'a set \<Rightarrow> ereal" | |
| 223 | assumes f: "positive M f" and ad: "additive M f" | |
| 224 | and inc: "increasing M f" | |
| 225 | and A: "range A \<subseteq> M" | |
| 226 | and disj: "disjoint_family A" | |
| 227 | shows "(\<Sum>i. f (A i)) \<le> f \<Omega>" | |
| 228 | proof (safe intro!: suminf_bound) | |
| 229 | fix N | |
| 230 |   note disj_N = disjoint_family_on_mono[OF _ disj, of "{..<N}"]
 | |
| 231 |   have "(\<Sum>i<N. f (A i)) = f (\<Union>i\<in>{..<N}. A i)"
 | |
| 232 | using A by (intro additive_sum [OF f ad _ _]) (auto simp: disj_N) | |
| 233 | also have "... \<le> f \<Omega>" using space_closed A | |
| 234 | by (intro increasingD[OF inc] finite_UN) auto | |
| 235 | finally show "(\<Sum>i<N. f (A i)) \<le> f \<Omega>" by simp | |
| 236 | qed (insert f A, auto simp: positive_def) | |
| 237 | ||
| 238 | lemma (in ring_of_sets) countably_additiveI_finite: | |
| 239 | assumes "finite \<Omega>" "positive M \<mu>" "additive M \<mu>" | |
| 240 | shows "countably_additive M \<mu>" | |
| 241 | proof (rule countably_additiveI) | |
| 242 | fix F :: "nat \<Rightarrow> 'a set" assume F: "range F \<subseteq> M" "(\<Union>i. F i) \<in> M" and disj: "disjoint_family F" | |
| 243 | ||
| 244 |   have "\<forall>i\<in>{i. F i \<noteq> {}}. \<exists>x. x \<in> F i" by auto
 | |
| 245 |   from bchoice[OF this] obtain f where f: "\<And>i. F i \<noteq> {} \<Longrightarrow> f i \<in> F i" by auto
 | |
| 246 | ||
| 247 |   have inj_f: "inj_on f {i. F i \<noteq> {}}"
 | |
| 248 | proof (rule inj_onI, simp) | |
| 249 |     fix i j a b assume *: "f i = f j" "F i \<noteq> {}" "F j \<noteq> {}"
 | |
| 250 | then have "f i \<in> F i" "f j \<in> F j" using f by force+ | |
| 251 | with disj * show "i = j" by (auto simp: disjoint_family_on_def) | |
| 252 | qed | |
| 253 | have "finite (\<Union>i. F i)" | |
| 254 | by (metis F(2) assms(1) infinite_super sets_into_space) | |
| 255 | ||
| 256 |   have F_subset: "{i. \<mu> (F i) \<noteq> 0} \<subseteq> {i. F i \<noteq> {}}"
 | |
| 61808 | 257 | by (auto simp: positiveD_empty[OF \<open>positive M \<mu>\<close>]) | 
| 47694 | 258 |   moreover have fin_not_empty: "finite {i. F i \<noteq> {}}"
 | 
| 259 | proof (rule finite_imageD) | |
| 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> {}})"
 | |
| 262 | by (rule finite_subset) fact | |
| 263 | qed fact | |
| 264 |   ultimately have fin_not_0: "finite {i. \<mu> (F i) \<noteq> 0}"
 | |
| 265 | by (rule finite_subset) | |
| 266 | ||
| 267 |   have disj_not_empty: "disjoint_family_on F {i. F i \<noteq> {}}"
 | |
| 268 | using disj by (auto simp: disjoint_family_on_def) | |
| 269 | ||
| 270 | from fin_not_0 have "(\<Sum>i. \<mu> (F i)) = (\<Sum>i | \<mu> (F i) \<noteq> 0. \<mu> (F i))" | |
| 47761 | 271 | by (rule suminf_finite) auto | 
| 47694 | 272 |   also have "\<dots> = (\<Sum>i | F i \<noteq> {}. \<mu> (F i))"
 | 
| 57418 | 273 | using fin_not_empty F_subset by (rule setsum.mono_neutral_left) auto | 
| 47694 | 274 |   also have "\<dots> = \<mu> (\<Union>i\<in>{i. F i \<noteq> {}}. F i)"
 | 
| 61808 | 275 | using \<open>positive M \<mu>\<close> \<open>additive M \<mu>\<close> fin_not_empty disj_not_empty F by (intro additive_sum) auto | 
| 47694 | 276 | also have "\<dots> = \<mu> (\<Union>i. F i)" | 
| 277 | by (rule arg_cong[where f=\<mu>]) auto | |
| 278 | finally show "(\<Sum>i. \<mu> (F i)) = \<mu> (\<Union>i. F i)" . | |
| 279 | qed | |
| 280 | ||
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 281 | lemma (in ring_of_sets) countably_additive_iff_continuous_from_below: | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 282 | assumes f: "positive M f" "additive M f" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 283 | shows "countably_additive M f \<longleftrightarrow> | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 284 | (\<forall>A. range A \<subseteq> M \<longrightarrow> incseq A \<longrightarrow> (\<Union>i. A i) \<in> M \<longrightarrow> (\<lambda>i. f (A i)) ----> f (\<Union>i. A i))" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 285 | unfolding countably_additive_def | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 286 | proof safe | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 287 | assume count_sum: "\<forall>A. range A \<subseteq> M \<longrightarrow> disjoint_family A \<longrightarrow> UNION UNIV A \<in> M \<longrightarrow> (\<Sum>i. f (A i)) = f (UNION UNIV A)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 288 | fix A :: "nat \<Rightarrow> 'a set" assume A: "range A \<subseteq> M" "incseq A" "(\<Union>i. A i) \<in> M" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 289 | then have dA: "range (disjointed A) \<subseteq> M" by (auto simp: range_disjointed_sets) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 290 | with count_sum[THEN spec, of "disjointed A"] A(3) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 291 | have f_UN: "(\<Sum>i. f (disjointed A i)) = f (\<Union>i. A i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 292 | by (auto simp: UN_disjointed_eq disjoint_family_disjointed) | 
| 56193 
c726ecfb22b6
cleanup Series: sorted according to typeclass hierarchy, use {..<_} instead of {0..<_}
 hoelzl parents: 
56154diff
changeset | 293 | moreover have "(\<lambda>n. (\<Sum>i<n. f (disjointed A i))) ----> (\<Sum>i. f (disjointed A i))" | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 294 | using f(1)[unfolded positive_def] dA | 
| 56193 
c726ecfb22b6
cleanup Series: sorted according to typeclass hierarchy, use {..<_} instead of {0..<_}
 hoelzl parents: 
56154diff
changeset | 295 | by (auto intro!: summable_LIMSEQ summable_ereal_pos) | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 296 | from LIMSEQ_Suc[OF this] | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 297 | have "(\<lambda>n. (\<Sum>i\<le>n. f (disjointed A i))) ----> (\<Sum>i. f (disjointed A i))" | 
| 56193 
c726ecfb22b6
cleanup Series: sorted according to typeclass hierarchy, use {..<_} instead of {0..<_}
 hoelzl parents: 
56154diff
changeset | 298 | unfolding lessThan_Suc_atMost . | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 299 | moreover have "\<And>n. (\<Sum>i\<le>n. f (disjointed A i)) = f (A n)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 300 | using disjointed_additive[OF f A(1,2)] . | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 301 | ultimately show "(\<lambda>i. f (A i)) ----> f (\<Union>i. A i)" by simp | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 302 | next | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 303 | assume cont: "\<forall>A. range A \<subseteq> M \<longrightarrow> incseq A \<longrightarrow> (\<Union>i. A i) \<in> M \<longrightarrow> (\<lambda>i. f (A i)) ----> f (\<Union>i. A i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 304 | fix A :: "nat \<Rightarrow> 'a set" assume A: "range A \<subseteq> M" "disjoint_family A" "(\<Union>i. A i) \<in> M" | 
| 57446 
06e195515deb
some lemmas about the indicator function; removed lemma sums_def2
 hoelzl parents: 
57418diff
changeset | 305 | have *: "(\<Union>n. (\<Union>i<n. A i)) = (\<Union>i. A i)" by auto | 
| 
06e195515deb
some lemmas about the indicator function; removed lemma sums_def2
 hoelzl parents: 
57418diff
changeset | 306 | have "(\<lambda>n. f (\<Union>i<n. A i)) ----> f (\<Union>i. A i)" | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 307 | proof (unfold *[symmetric], intro cont[rule_format]) | 
| 60585 | 308 | show "range (\<lambda>i. \<Union>i<i. A i) \<subseteq> M" "(\<Union>i. \<Union>i<i. A i) \<in> M" | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 309 | using A * by auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 310 | qed (force intro!: incseq_SucI) | 
| 57446 
06e195515deb
some lemmas about the indicator function; removed lemma sums_def2
 hoelzl parents: 
57418diff
changeset | 311 | moreover have "\<And>n. f (\<Union>i<n. A i) = (\<Sum>i<n. f (A i))" | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 312 | using A | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 313 | by (intro additive_sum[OF f, of _ A, symmetric]) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 314 | (auto intro: disjoint_family_on_mono[where B=UNIV]) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 315 | ultimately | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 316 | have "(\<lambda>i. f (A i)) sums f (\<Union>i. A i)" | 
| 57446 
06e195515deb
some lemmas about the indicator function; removed lemma sums_def2
 hoelzl parents: 
57418diff
changeset | 317 | unfolding sums_def by simp | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 318 | from sums_unique[OF this] | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 319 | show "(\<Sum>i. f (A i)) = f (\<Union>i. A i)" by simp | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 320 | qed | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 321 | |
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 322 | lemma (in ring_of_sets) continuous_from_above_iff_empty_continuous: | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 323 | assumes f: "positive M f" "additive M f" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 324 | shows "(\<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)) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 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)"
 | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 326 | proof safe | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 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))" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 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>"
 | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 329 | with cont[THEN spec, of A] show "(\<lambda>i. f (A i)) ----> 0" | 
| 61808 | 330 | using \<open>positive M f\<close>[unfolded positive_def] by auto | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 331 | next | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 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"
 | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 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>" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 334 | |
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 335 | have f_mono: "\<And>a b. a \<in> M \<Longrightarrow> b \<in> M \<Longrightarrow> a \<subseteq> b \<Longrightarrow> f a \<le> f b" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 336 | using additive_increasing[OF f] unfolding increasing_def by simp | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 337 | |
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 338 | have decseq_fA: "decseq (\<lambda>i. f (A i))" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 339 | using A by (auto simp: decseq_def intro!: f_mono) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 340 | have decseq: "decseq (\<lambda>i. A i - (\<Inter>i. A i))" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 341 | using A by (auto simp: decseq_def) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 342 | then have decseq_f: "decseq (\<lambda>i. f (A i - (\<Inter>i. A i)))" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 343 | using A unfolding decseq_def by (auto intro!: f_mono Diff) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 344 | have "f (\<Inter>x. A x) \<le> f (A 0)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 345 | using A by (auto intro!: f_mono) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 346 | then have f_Int_fin: "f (\<Inter>x. A x) \<noteq> \<infinity>" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 347 | using A by auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 348 |   { fix i
 | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 349 | have "f (A i - (\<Inter>i. A i)) \<le> f (A i)" using A by (auto intro!: f_mono) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 350 | then have "f (A i - (\<Inter>i. A i)) \<noteq> \<infinity>" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 351 | using A by auto } | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 352 | note f_fin = this | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 353 | have "(\<lambda>i. f (A i - (\<Inter>i. A i))) ----> 0" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 354 | proof (intro cont[rule_format, OF _ decseq _ f_fin]) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 355 |     show "range (\<lambda>i. A i - (\<Inter>i. A i)) \<subseteq> M" "(\<Inter>i. A i - (\<Inter>i. A i)) = {}"
 | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 356 | using A by auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 357 | qed | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 358 | from INF_Lim_ereal[OF decseq_f this] | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 359 | have "(INF n. f (A n - (\<Inter>i. A i))) = 0" . | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 360 | moreover have "(INF n. f (\<Inter>i. A i)) = f (\<Inter>i. A i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 361 | by auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 362 | ultimately have "(INF n. f (A n - (\<Inter>i. A i)) + f (\<Inter>i. A i)) = 0 + f (\<Inter>i. A i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 363 | using A(4) f_fin f_Int_fin | 
| 56212 
3253aaf73a01
consolidated theorem names containing INFI and SUPR: have INF and SUP instead uniformly
 haftmann parents: 
56193diff
changeset | 364 | by (subst INF_ereal_add) (auto simp: decseq_f) | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 365 |   moreover {
 | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 366 | fix n | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 367 | have "f (A n - (\<Inter>i. A i)) + f (\<Inter>i. A i) = f ((A n - (\<Inter>i. A i)) \<union> (\<Inter>i. A i))" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 368 | using A by (subst f(2)[THEN additiveD]) auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 369 | also have "(A n - (\<Inter>i. A i)) \<union> (\<Inter>i. A i) = A n" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 370 | by auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 371 | finally have "f (A n - (\<Inter>i. A i)) + f (\<Inter>i. A i) = f (A n)" . } | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 372 | ultimately have "(INF n. f (A n)) = f (\<Inter>i. A i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 373 | by simp | 
| 51351 | 374 | with LIMSEQ_INF[OF decseq_fA] | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 375 | show "(\<lambda>i. f (A i)) ----> f (\<Inter>i. A i)" by simp | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 376 | qed | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 377 | |
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 378 | lemma (in ring_of_sets) empty_continuous_imp_continuous_from_below: | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 379 | assumes f: "positive M f" "additive M f" "\<forall>A\<in>M. f A \<noteq> \<infinity>" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 380 |   assumes cont: "\<forall>A. range A \<subseteq> M \<longrightarrow> decseq A \<longrightarrow> (\<Inter>i. A i) = {} \<longrightarrow> (\<lambda>i. f (A i)) ----> 0"
 | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 381 | assumes A: "range A \<subseteq> M" "incseq A" "(\<Union>i. A i) \<in> M" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 382 | shows "(\<lambda>i. f (A i)) ----> f (\<Union>i. A i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 383 | proof - | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 384 | have "\<forall>A\<in>M. \<exists>x. f A = ereal x" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 385 | proof | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 386 | fix A assume "A \<in> M" with f show "\<exists>x. f A = ereal x" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 387 | unfolding positive_def by (cases "f A") auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 388 | qed | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 389 | from bchoice[OF this] guess f' .. note f' = this[rule_format] | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 390 | from A have "(\<lambda>i. f ((\<Union>i. A i) - A i)) ----> 0" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 391 | by (intro cont[rule_format]) (auto simp: decseq_def incseq_def) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 392 | moreover | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 393 |   { fix i
 | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 394 | have "f ((\<Union>i. A i) - A i) + f (A i) = f ((\<Union>i. A i) - A i \<union> A i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 395 | using A by (intro f(2)[THEN additiveD, symmetric]) auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 396 | also have "(\<Union>i. A i) - A i \<union> A i = (\<Union>i. A i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 397 | by auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 398 | finally have "f' (\<Union>i. A i) - f' (A i) = f' ((\<Union>i. A i) - A i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 399 | using A by (subst (asm) (1 2 3) f') auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 400 | then have "f ((\<Union>i. A i) - A i) = ereal (f' (\<Union>i. A i) - f' (A i))" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 401 | using A f' by auto } | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 402 | ultimately have "(\<lambda>i. f' (\<Union>i. A i) - f' (A i)) ----> 0" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 403 | by (simp add: zero_ereal_def) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 404 | then have "(\<lambda>i. f' (A i)) ----> f' (\<Union>i. A i)" | 
| 60142 | 405 | by (rule Lim_transform2[OF tendsto_const]) | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 406 | then show "(\<lambda>i. f (A i)) ----> f (\<Union>i. A i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 407 | using A by (subst (1 2) f') auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 408 | qed | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 409 | |
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 410 | lemma (in ring_of_sets) empty_continuous_imp_countably_additive: | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 411 | assumes f: "positive M f" "additive M f" and fin: "\<forall>A\<in>M. f A \<noteq> \<infinity>" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 412 |   assumes cont: "\<And>A. range A \<subseteq> M \<Longrightarrow> decseq A \<Longrightarrow> (\<Inter>i. A i) = {} \<Longrightarrow> (\<lambda>i. f (A i)) ----> 0"
 | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 413 | shows "countably_additive M f" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 414 | using countably_additive_iff_continuous_from_below[OF f] | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 415 | using empty_continuous_imp_continuous_from_below[OF f fin] cont | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 416 | by blast | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 417 | |
| 61808 | 418 | subsection \<open>Properties of @{const emeasure}\<close>
 | 
| 47694 | 419 | |
| 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) | |
| 422 | ||
| 423 | lemma emeasure_empty[simp, intro]: "emeasure M {} = 0"
 | |
| 424 | using emeasure_positive[of M] by (simp add: positive_def) | |
| 425 | ||
| 426 | lemma emeasure_nonneg[intro!]: "0 \<le> emeasure M A" | |
| 427 | using emeasure_notin_sets[of A M] emeasure_positive[of M] | |
| 428 | by (cases "A \<in> sets M") (auto simp: positive_def) | |
| 429 | ||
| 430 | lemma emeasure_not_MInf[simp]: "emeasure M A \<noteq> - \<infinity>" | |
| 431 | using emeasure_nonneg[of M A] by auto | |
| 50419 | 432 | |
| 433 | lemma emeasure_le_0_iff: "emeasure M A \<le> 0 \<longleftrightarrow> emeasure M A = 0" | |
| 434 | using emeasure_nonneg[of M A] by auto | |
| 435 | ||
| 436 | lemma emeasure_less_0_iff: "emeasure M A < 0 \<longleftrightarrow> False" | |
| 437 | using emeasure_nonneg[of M A] by auto | |
| 59000 | 438 | |
| 439 | lemma emeasure_single_in_space: "emeasure M {x} \<noteq> 0 \<Longrightarrow> x \<in> space M"
 | |
| 440 |   using emeasure_notin_sets[of "{x}" M] by (auto dest: sets.sets_into_space)
 | |
| 441 | ||
| 47694 | 442 | lemma emeasure_countably_additive: "countably_additive (sets M) (emeasure M)" | 
| 443 | by (cases M) (auto simp: sets_def emeasure_def Abs_measure_inverse measure_space_def) | |
| 444 | ||
| 445 | lemma suminf_emeasure: | |
| 446 | "range A \<subseteq> sets M \<Longrightarrow> disjoint_family A \<Longrightarrow> (\<Sum>i. emeasure M (A i)) = emeasure M (\<Union>i. A i)" | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 447 | using sets.countable_UN[of A UNIV M] emeasure_countably_additive[of M] | 
| 47694 | 448 | by (simp add: countably_additive_def) | 
| 449 | ||
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 450 | lemma sums_emeasure: | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 451 | "disjoint_family F \<Longrightarrow> (\<And>i. F i \<in> sets M) \<Longrightarrow> (\<lambda>i. emeasure M (F i)) sums emeasure M (\<Union>i. F i)" | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 452 | unfolding sums_iff by (intro conjI summable_ereal_pos emeasure_nonneg suminf_emeasure) auto | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 453 | |
| 47694 | 454 | lemma emeasure_additive: "additive (sets M) (emeasure M)" | 
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 455 | by (metis sets.countably_additive_additive emeasure_positive emeasure_countably_additive) | 
| 47694 | 456 | |
| 457 | lemma plus_emeasure: | |
| 458 |   "a \<in> sets M \<Longrightarrow> b \<in> sets M \<Longrightarrow> a \<inter> b = {} \<Longrightarrow> emeasure M a + emeasure M b = emeasure M (a \<union> b)"
 | |
| 459 | using additiveD[OF emeasure_additive] .. | |
| 460 | ||
| 461 | lemma setsum_emeasure: | |
| 462 | "F`I \<subseteq> sets M \<Longrightarrow> disjoint_family_on F I \<Longrightarrow> finite I \<Longrightarrow> | |
| 463 | (\<Sum>i\<in>I. emeasure M (F i)) = emeasure M (\<Union>i\<in>I. F i)" | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 464 | by (metis sets.additive_sum emeasure_positive emeasure_additive) | 
| 47694 | 465 | |
| 466 | lemma emeasure_mono: | |
| 467 | "a \<subseteq> b \<Longrightarrow> b \<in> sets M \<Longrightarrow> emeasure M a \<le> emeasure M b" | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 468 | by (metis sets.additive_increasing emeasure_additive emeasure_nonneg emeasure_notin_sets | 
| 47694 | 469 | emeasure_positive increasingD) | 
| 470 | ||
| 471 | lemma emeasure_space: | |
| 472 | "emeasure M A \<le> emeasure M (space M)" | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 473 | by (metis emeasure_mono emeasure_nonneg emeasure_notin_sets sets.sets_into_space sets.top) | 
| 47694 | 474 | |
| 475 | lemma emeasure_compl: | |
| 476 | assumes s: "s \<in> sets M" and fin: "emeasure M s \<noteq> \<infinity>" | |
| 477 | shows "emeasure M (space M - s) = emeasure M (space M) - emeasure M s" | |
| 478 | proof - | |
| 479 | from s have "0 \<le> emeasure M s" by auto | |
| 480 | have "emeasure M (space M) = emeasure M (s \<union> (space M - s))" using s | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 481 | by (metis Un_Diff_cancel Un_absorb1 s sets.sets_into_space) | 
| 47694 | 482 | also have "... = emeasure M s + emeasure M (space M - 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)" . | |
| 485 | then show ?thesis | |
| 61808 | 486 | using fin \<open>0 \<le> emeasure M s\<close> | 
| 47694 | 487 | unfolding ereal_eq_minus_iff by (auto simp: ac_simps) | 
| 488 | qed | |
| 489 | ||
| 490 | lemma emeasure_Diff: | |
| 491 | assumes finite: "emeasure M B \<noteq> \<infinity>" | |
| 50002 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 492 | and [measurable]: "A \<in> sets M" "B \<in> sets M" and "B \<subseteq> A" | 
| 47694 | 493 | shows "emeasure M (A - B) = emeasure M A - emeasure M B" | 
| 494 | proof - | |
| 495 | have "0 \<le> emeasure M B" using assms by auto | |
| 61808 | 496 | have "(A - B) \<union> B = A" using \<open>B \<subseteq> A\<close> by auto | 
| 47694 | 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" | |
| 50002 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 499 | by (subst plus_emeasure[symmetric]) auto | 
| 47694 | 500 | finally show "emeasure M (A - B) = emeasure M A - emeasure M B" | 
| 501 | unfolding ereal_eq_minus_iff | |
| 61808 | 502 | using finite \<open>0 \<le> emeasure M B\<close> by auto | 
| 47694 | 503 | qed | 
| 504 | ||
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 505 | lemma Lim_emeasure_incseq: | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 506 | "range A \<subseteq> sets M \<Longrightarrow> incseq A \<Longrightarrow> (\<lambda>i. (emeasure M (A i))) ----> emeasure M (\<Union>i. A i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 507 | using emeasure_countably_additive | 
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 508 | by (auto simp add: sets.countably_additive_iff_continuous_from_below emeasure_positive | 
| 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 509 | emeasure_additive) | 
| 47694 | 510 | |
| 511 | lemma incseq_emeasure: | |
| 512 | assumes "range B \<subseteq> sets M" "incseq B" | |
| 513 | shows "incseq (\<lambda>i. emeasure M (B i))" | |
| 514 | using assms by (auto simp: incseq_def intro!: emeasure_mono) | |
| 515 | ||
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 516 | lemma SUP_emeasure_incseq: | 
| 47694 | 517 | assumes A: "range A \<subseteq> sets M" "incseq A" | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 518 | shows "(SUP n. emeasure M (A n)) = emeasure M (\<Union>i. A i)" | 
| 51000 | 519 | using LIMSEQ_SUP[OF incseq_emeasure, OF A] Lim_emeasure_incseq[OF A] | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 520 | by (simp add: LIMSEQ_unique) | 
| 47694 | 521 | |
| 522 | lemma decseq_emeasure: | |
| 523 | assumes "range B \<subseteq> sets M" "decseq B" | |
| 524 | shows "decseq (\<lambda>i. emeasure M (B i))" | |
| 525 | using assms by (auto simp: decseq_def intro!: emeasure_mono) | |
| 526 | ||
| 527 | lemma INF_emeasure_decseq: | |
| 528 | assumes A: "range A \<subseteq> sets M" and "decseq A" | |
| 529 | and finite: "\<And>i. emeasure M (A i) \<noteq> \<infinity>" | |
| 530 | shows "(INF n. emeasure M (A n)) = emeasure M (\<Inter>i. A i)" | |
| 531 | proof - | |
| 532 | have le_MI: "emeasure M (\<Inter>i. A i) \<le> emeasure M (A 0)" | |
| 533 | using A by (auto intro!: emeasure_mono) | |
| 534 | hence *: "emeasure M (\<Inter>i. A i) \<noteq> \<infinity>" using finite[of 0] by auto | |
| 535 | ||
| 536 | have A0: "0 \<le> emeasure M (A 0)" using A by auto | |
| 537 | ||
| 538 | have "emeasure M (A 0) - (INF n. emeasure M (A n)) = emeasure M (A 0) + (SUP n. - emeasure M (A n))" | |
| 56212 
3253aaf73a01
consolidated theorem names containing INFI and SUPR: have INF and SUP instead uniformly
 haftmann parents: 
56193diff
changeset | 539 | by (simp add: ereal_SUP_uminus minus_ereal_def) | 
| 47694 | 540 | also have "\<dots> = (SUP n. emeasure M (A 0) - emeasure M (A n))" | 
| 541 | unfolding minus_ereal_def using A0 assms | |
| 56212 
3253aaf73a01
consolidated theorem names containing INFI and SUPR: have INF and SUP instead uniformly
 haftmann parents: 
56193diff
changeset | 542 | by (subst SUP_ereal_add) (auto simp add: decseq_emeasure) | 
| 47694 | 543 | also have "\<dots> = (SUP n. emeasure M (A 0 - A n))" | 
| 61808 | 544 | using A finite \<open>decseq A\<close>[unfolded decseq_def] by (subst emeasure_Diff) auto | 
| 47694 | 545 | also have "\<dots> = emeasure M (\<Union>i. A 0 - A i)" | 
| 546 | proof (rule SUP_emeasure_incseq) | |
| 547 | show "range (\<lambda>n. A 0 - A n) \<subseteq> sets M" | |
| 548 | using A by auto | |
| 549 | show "incseq (\<lambda>n. A 0 - A n)" | |
| 61808 | 550 | using \<open>decseq A\<close> by (auto simp add: incseq_def decseq_def) | 
| 47694 | 551 | qed | 
| 552 | also have "\<dots> = emeasure M (A 0) - emeasure M (\<Inter>i. A i)" | |
| 553 | using A finite * by (simp, subst emeasure_Diff) auto | |
| 554 | finally show ?thesis | |
| 555 | unfolding ereal_minus_eq_minus_iff using finite A0 by auto | |
| 556 | qed | |
| 557 | ||
| 61359 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 558 | lemma emeasure_INT_decseq_subset: | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 559 | fixes F :: "nat \<Rightarrow> 'a set" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 560 |   assumes I: "I \<noteq> {}" and F: "\<And>i j. i \<in> I \<Longrightarrow> j \<in> I \<Longrightarrow> i \<le> j \<Longrightarrow> F j \<subseteq> F i"
 | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 561 | assumes F_sets[measurable]: "\<And>i. i \<in> I \<Longrightarrow> F i \<in> sets M" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 562 | and fin: "\<And>i. i \<in> I \<Longrightarrow> emeasure M (F i) \<noteq> \<infinity>" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 563 | shows "emeasure M (\<Inter>i\<in>I. F i) = (INF i:I. emeasure M (F i))" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 564 | proof cases | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 565 | assume "finite I" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 566 | have "(\<Inter>i\<in>I. F i) = F (Max I)" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 567 | using I \<open>finite I\<close> by (intro antisym INF_lower INF_greatest F) auto | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 568 | moreover have "(INF i:I. emeasure M (F i)) = emeasure M (F (Max I))" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 569 | using I \<open>finite I\<close> by (intro antisym INF_lower INF_greatest F emeasure_mono) auto | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 570 | ultimately show ?thesis | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 571 | by simp | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 572 | next | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 573 | assume "infinite I" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 574 | def L \<equiv> "\<lambda>n. LEAST i. i \<in> I \<and> i \<ge> n" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 575 | have L: "L n \<in> I \<and> n \<le> L n" for n | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 576 | unfolding L_def | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 577 | proof (rule LeastI_ex) | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 578 | show "\<exists>x. x \<in> I \<and> n \<le> x" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 579 |       using \<open>infinite I\<close> finite_subset[of I "{..< n}"]
 | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 580 | by (rule_tac ccontr) (auto simp: not_le) | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 581 | qed | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 582 | have L_eq[simp]: "i \<in> I \<Longrightarrow> L i = i" for i | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 583 | unfolding L_def by (intro Least_equality) auto | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 584 | have L_mono: "i \<le> j \<Longrightarrow> L i \<le> L j" for i j | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 585 | using L[of j] unfolding L_def by (intro Least_le) (auto simp: L_def) | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 586 | |
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 587 | have "emeasure M (\<Inter>i. F (L i)) = (INF i. emeasure M (F (L i)))" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 588 | proof (intro INF_emeasure_decseq[symmetric]) | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 589 | show "decseq (\<lambda>i. F (L i))" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 590 | using L by (intro antimonoI F L_mono) auto | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 591 | qed (insert L fin, auto) | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 592 | also have "\<dots> = (INF i:I. emeasure M (F i))" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 593 | proof (intro antisym INF_greatest) | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 594 | show "i \<in> I \<Longrightarrow> (INF i. emeasure M (F (L i))) \<le> emeasure M (F i)" for i | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 595 | by (intro INF_lower2[of i]) auto | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 596 | qed (insert L, auto intro: INF_lower) | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 597 | also have "(\<Inter>i. F (L i)) = (\<Inter>i\<in>I. F i)" | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 598 | proof (intro antisym INF_greatest) | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 599 | show "i \<in> I \<Longrightarrow> (\<Inter>i. F (L i)) \<subseteq> F i" for i | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 600 | by (intro INF_lower2[of i]) auto | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 601 | qed (insert L, auto) | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 602 | finally show ?thesis . | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 603 | qed | 
| 
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
 hoelzl parents: 
61166diff
changeset | 604 | |
| 47694 | 605 | lemma Lim_emeasure_decseq: | 
| 606 | assumes A: "range A \<subseteq> sets M" "decseq A" and fin: "\<And>i. emeasure M (A i) \<noteq> \<infinity>" | |
| 607 | shows "(\<lambda>i. emeasure M (A i)) ----> emeasure M (\<Inter>i. A i)" | |
| 51351 | 608 | using LIMSEQ_INF[OF decseq_emeasure, OF A] | 
| 47694 | 609 | using INF_emeasure_decseq[OF A fin] by simp | 
| 610 | ||
| 60636 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 611 | lemma emeasure_lfp'[consumes 1, case_names cont measurable]: | 
| 59000 | 612 | assumes "P M" | 
| 60172 
423273355b55
rename continuous and down_continuous in Order_Continuity to sup_/inf_continuous; relate them with topological continuity
 hoelzl parents: 
60142diff
changeset | 613 | assumes cont: "sup_continuous F" | 
| 59000 | 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})"
 | |
| 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})"
 | |
| 60172 
423273355b55
rename continuous and down_continuous in Order_Continuity to sup_/inf_continuous; relate them with topological continuity
 hoelzl parents: 
60142diff
changeset | 618 | using sup_continuous_lfp[OF cont] by (auto simp add: bot_fun_def intro!: arg_cong2[where f=emeasure]) | 
| 61808 | 619 |   moreover { fix i from \<open>P M\<close> have "{x\<in>space M. (F ^^ i) (\<lambda>x. False) x} \<in> sets M"
 | 
| 59000 | 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})"
 | |
| 622 | proof (rule incseq_SucI) | |
| 623 | fix i | |
| 624 | have "(F ^^ i) (\<lambda>x. False) \<le> (F ^^ (Suc i)) (\<lambda>x. False)" | |
| 625 | proof (induct i) | |
| 626 | case 0 show ?case by (simp add: le_fun_def) | |
| 627 | next | |
| 60172 
423273355b55
rename continuous and down_continuous in Order_Continuity to sup_/inf_continuous; relate them with topological continuity
 hoelzl parents: 
60142diff
changeset | 628 | case Suc thus ?case using monoD[OF sup_continuous_mono[OF cont] Suc] by auto | 
| 59000 | 629 | qed | 
| 630 |     then show "{x \<in> space M. (F ^^ i) (\<lambda>x. False) x} \<subseteq> {x \<in> space M. (F ^^ Suc i) (\<lambda>x. False) x}"
 | |
| 631 | by auto | |
| 632 | qed | |
| 633 | ultimately show ?thesis | |
| 634 | by (subst SUP_emeasure_incseq) auto | |
| 635 | qed | |
| 636 | ||
| 60636 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 637 | lemma emeasure_lfp: | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 638 | assumes [simp]: "\<And>s. sets (M s) = sets N" | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 639 | assumes cont: "sup_continuous F" "sup_continuous f" | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 640 | assumes nonneg: "\<And>P s. 0 \<le> f P s" | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 641 | assumes meas: "\<And>P. Measurable.pred N P \<Longrightarrow> Measurable.pred N (F P)" | 
| 60714 
ff8aa76d6d1c
stronger induction assumption in lfp_transfer and emeasure_lfp
 hoelzl parents: 
60636diff
changeset | 642 |   assumes iter: "\<And>P s. Measurable.pred N P \<Longrightarrow> P \<le> lfp F \<Longrightarrow> emeasure (M s) {x\<in>space N. F P x} = f (\<lambda>s. emeasure (M s) {x\<in>space N. P x}) s"
 | 
| 60636 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 643 |   shows "emeasure (M s) {x\<in>space N. lfp F x} = lfp f s"
 | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 644 | proof (subst lfp_transfer_bounded[where \<alpha>="\<lambda>F s. emeasure (M s) {x\<in>space N. F x}" and g=f and f=F and P="Measurable.pred N", symmetric])
 | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 645 | fix C assume "incseq C" "\<And>i. Measurable.pred N (C i)" | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 646 |   then show "(\<lambda>s. emeasure (M s) {x \<in> space N. (SUP i. C i) x}) = (SUP i. (\<lambda>s. emeasure (M s) {x \<in> space N. C i x}))"
 | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 647 | unfolding SUP_apply[abs_def] | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 648 | by (subst SUP_emeasure_incseq) (auto simp: mono_def fun_eq_iff intro!: arg_cong2[where f=emeasure]) | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 649 | qed (auto simp add: iter nonneg le_fun_def SUP_apply[abs_def] intro!: meas cont) | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 650 | |
| 47694 | 651 | lemma emeasure_subadditive: | 
| 50002 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 652 | assumes [measurable]: "A \<in> sets M" "B \<in> sets M" | 
| 47694 | 653 | shows "emeasure M (A \<union> B) \<le> emeasure M A + emeasure M B" | 
| 654 | proof - | |
| 655 | from plus_emeasure[of A M "B - A"] | |
| 50002 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 656 | have "emeasure M (A \<union> B) = emeasure M A + emeasure M (B - A)" by simp | 
| 47694 | 657 | also have "\<dots> \<le> emeasure M A + emeasure M B" | 
| 658 | using assms by (auto intro!: add_left_mono emeasure_mono) | |
| 659 | finally show ?thesis . | |
| 660 | qed | |
| 661 | ||
| 662 | lemma emeasure_subadditive_finite: | |
| 663 | assumes "finite I" "A ` I \<subseteq> sets M" | |
| 664 | shows "emeasure M (\<Union>i\<in>I. A i) \<le> (\<Sum>i\<in>I. emeasure M (A i))" | |
| 665 | using assms proof induct | |
| 666 | case (insert i I) | |
| 667 | then have "emeasure M (\<Union>i\<in>insert i I. A i) = emeasure M (A i \<union> (\<Union>i\<in>I. A i))" | |
| 668 | by simp | |
| 669 | also have "\<dots> \<le> emeasure M (A i) + emeasure M (\<Union>i\<in>I. A i)" | |
| 50002 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 670 | using insert by (intro emeasure_subadditive) auto | 
| 47694 | 671 | also have "\<dots> \<le> emeasure M (A i) + (\<Sum>i\<in>I. emeasure M (A i))" | 
| 672 | using insert by (intro add_mono) auto | |
| 673 | also have "\<dots> = (\<Sum>i\<in>insert i I. emeasure M (A i))" | |
| 674 | using insert by auto | |
| 675 | finally show ?case . | |
| 676 | qed simp | |
| 677 | ||
| 678 | lemma emeasure_subadditive_countably: | |
| 679 | assumes "range f \<subseteq> sets M" | |
| 680 | shows "emeasure M (\<Union>i. f i) \<le> (\<Sum>i. emeasure M (f i))" | |
| 681 | proof - | |
| 682 | have "emeasure M (\<Union>i. f i) = emeasure M (\<Union>i. disjointed f i)" | |
| 683 | unfolding UN_disjointed_eq .. | |
| 684 | also have "\<dots> = (\<Sum>i. emeasure M (disjointed f i))" | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 685 | using sets.range_disjointed_sets[OF assms] suminf_emeasure[of "disjointed f"] | 
| 47694 | 686 | by (simp add: disjoint_family_disjointed comp_def) | 
| 687 | also have "\<dots> \<le> (\<Sum>i. emeasure M (f i))" | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 688 | using sets.range_disjointed_sets[OF assms] assms | 
| 47694 | 689 | by (auto intro!: suminf_le_pos emeasure_mono disjointed_subset) | 
| 690 | finally show ?thesis . | |
| 691 | qed | |
| 692 | ||
| 693 | lemma emeasure_insert: | |
| 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"
 | |
| 696 | proof - | |
| 61808 | 697 |   have "{x} \<inter> A = {}" using \<open>x \<notin> A\<close> by auto
 | 
| 47694 | 698 | from plus_emeasure[OF sets this] show ?thesis by simp | 
| 699 | qed | |
| 700 | ||
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 701 | lemma emeasure_insert_ne: | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 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"
 | 
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 703 | by (rule emeasure_insert) | 
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 704 | |
| 47694 | 705 | lemma emeasure_eq_setsum_singleton: | 
| 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})"
 | |
| 708 |   using setsum_emeasure[of "\<lambda>x. {x}" S M] assms
 | |
| 709 | by (auto simp: disjoint_family_on_def subset_eq) | |
| 710 | ||
| 711 | lemma setsum_emeasure_cover: | |
| 712 | assumes "finite S" and "A \<in> sets M" and br_in_M: "B ` S \<subseteq> sets M" | |
| 713 | assumes A: "A \<subseteq> (\<Union>i\<in>S. B i)" | |
| 714 | assumes disj: "disjoint_family_on B S" | |
| 715 | shows "emeasure M A = (\<Sum>i\<in>S. emeasure M (A \<inter> (B i)))" | |
| 716 | proof - | |
| 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) | |
| 719 | show "disjoint_family_on (\<lambda>i. A \<inter> B i) S" | |
| 61808 | 720 | using \<open>disjoint_family_on B S\<close> | 
| 47694 | 721 | unfolding disjoint_family_on_def by auto | 
| 722 | qed (insert assms, auto) | |
| 723 | also have "(\<Union>i\<in>S. A \<inter> (B i)) = A" | |
| 724 | using A by auto | |
| 725 | finally show ?thesis by simp | |
| 726 | qed | |
| 727 | ||
| 728 | lemma emeasure_eq_0: | |
| 729 | "N \<in> sets M \<Longrightarrow> emeasure M N = 0 \<Longrightarrow> K \<subseteq> N \<Longrightarrow> emeasure M K = 0" | |
| 730 | by (metis emeasure_mono emeasure_nonneg order_eq_iff) | |
| 731 | ||
| 732 | lemma emeasure_UN_eq_0: | |
| 733 | assumes "\<And>i::nat. emeasure M (N i) = 0" and "range N \<subseteq> sets M" | |
| 60585 | 734 | shows "emeasure M (\<Union>i. N i) = 0" | 
| 47694 | 735 | proof - | 
| 60585 | 736 | have "0 \<le> emeasure M (\<Union>i. N i)" using assms by auto | 
| 737 | moreover have "emeasure M (\<Union>i. N i) \<le> 0" | |
| 47694 | 738 | using emeasure_subadditive_countably[OF assms(2)] assms(1) by simp | 
| 739 | ultimately show ?thesis by simp | |
| 740 | qed | |
| 741 | ||
| 742 | lemma measure_eqI_finite: | |
| 743 | assumes [simp]: "sets M = Pow A" "sets N = Pow A" and "finite A" | |
| 744 |   assumes eq: "\<And>a. a \<in> A \<Longrightarrow> emeasure M {a} = emeasure N {a}"
 | |
| 745 | shows "M = N" | |
| 746 | proof (rule measure_eqI) | |
| 747 | fix X assume "X \<in> sets M" | |
| 748 | then have X: "X \<subseteq> A" by auto | |
| 749 |   then have "emeasure M X = (\<Sum>a\<in>X. emeasure M {a})"
 | |
| 61808 | 750 | using \<open>finite A\<close> by (subst emeasure_eq_setsum_singleton) (auto dest: finite_subset) | 
| 47694 | 751 |   also have "\<dots> = (\<Sum>a\<in>X. emeasure N {a})"
 | 
| 57418 | 752 | using X eq by (auto intro!: setsum.cong) | 
| 47694 | 753 | also have "\<dots> = emeasure N X" | 
| 61808 | 754 | using X \<open>finite A\<close> by (subst emeasure_eq_setsum_singleton) (auto dest: finite_subset) | 
| 47694 | 755 | finally show "emeasure M X = emeasure N X" . | 
| 756 | qed simp | |
| 757 | ||
| 758 | lemma measure_eqI_generator_eq: | |
| 759 | fixes M N :: "'a measure" and E :: "'a set set" and A :: "nat \<Rightarrow> 'a set" | |
| 760 | assumes "Int_stable E" "E \<subseteq> Pow \<Omega>" | |
| 761 | and eq: "\<And>X. X \<in> E \<Longrightarrow> emeasure M X = emeasure N X" | |
| 762 | and M: "sets M = sigma_sets \<Omega> E" | |
| 763 | and N: "sets N = sigma_sets \<Omega> E" | |
| 49784 
5e5b2da42a69
remove incseq assumption from measure_eqI_generator_eq
 hoelzl parents: 
49773diff
changeset | 764 | and A: "range A \<subseteq> E" "(\<Union>i. A i) = \<Omega>" "\<And>i. emeasure M (A i) \<noteq> \<infinity>" | 
| 47694 | 765 | shows "M = N" | 
| 766 | proof - | |
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 767 | let ?\<mu> = "emeasure M" and ?\<nu> = "emeasure N" | 
| 47694 | 768 | interpret S: sigma_algebra \<Omega> "sigma_sets \<Omega> E" by (rule sigma_algebra_sigma_sets) fact | 
| 49789 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 769 | have "space M = \<Omega>" | 
| 61808 | 770 | using sets.top[of M] sets.space_closed[of M] S.top S.space_closed \<open>sets M = sigma_sets \<Omega> E\<close> | 
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 771 | by blast | 
| 49789 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 772 | |
| 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 773 |   { fix F D assume "F \<in> E" and "?\<mu> F \<noteq> \<infinity>"
 | 
| 47694 | 774 | then have [intro]: "F \<in> sigma_sets \<Omega> E" by auto | 
| 61808 | 775 | have "?\<nu> F \<noteq> \<infinity>" using \<open>?\<mu> F \<noteq> \<infinity>\<close> \<open>F \<in> E\<close> eq by simp | 
| 49789 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 776 | assume "D \<in> sets M" | 
| 61808 | 777 | with \<open>Int_stable E\<close> \<open>E \<subseteq> Pow \<Omega>\<close> have "emeasure M (F \<inter> D) = emeasure N (F \<inter> D)" | 
| 49789 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 778 | unfolding M | 
| 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 779 | proof (induct rule: sigma_sets_induct_disjoint) | 
| 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 780 | case (basic A) | 
| 61808 | 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) | 
| 49789 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 782 | then show ?case using eq by auto | 
| 47694 | 783 | next | 
| 49789 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 784 | case empty then show ?case by simp | 
| 47694 | 785 | next | 
| 49789 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 786 | case (compl A) | 
| 47694 | 787 | then have **: "F \<inter> (\<Omega> - A) = F - (F \<inter> A)" | 
| 788 | and [intro]: "F \<inter> A \<in> sigma_sets \<Omega> E" | |
| 61808 | 789 | using \<open>F \<in> E\<close> S.sets_into_space by (auto simp: M) | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 790 | have "?\<nu> (F \<inter> A) \<le> ?\<nu> F" by (auto intro!: emeasure_mono simp: M N) | 
| 61808 | 791 | then have "?\<nu> (F \<inter> A) \<noteq> \<infinity>" using \<open>?\<nu> F \<noteq> \<infinity>\<close> by auto | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 792 | have "?\<mu> (F \<inter> A) \<le> ?\<mu> F" by (auto intro!: emeasure_mono simp: M N) | 
| 61808 | 793 | then have "?\<mu> (F \<inter> A) \<noteq> \<infinity>" using \<open>?\<mu> F \<noteq> \<infinity>\<close> by auto | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 794 | then have "?\<mu> (F \<inter> (\<Omega> - A)) = ?\<mu> F - ?\<mu> (F \<inter> A)" unfolding ** | 
| 61808 | 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 \<open>F \<in> E\<close> compl by simp | |
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 797 | also have "\<dots> = ?\<nu> (F \<inter> (\<Omega> - A))" unfolding ** | 
| 61808 | 798 | using \<open>F \<inter> A \<in> sigma_sets \<Omega> E\<close> \<open>?\<nu> (F \<inter> A) \<noteq> \<infinity>\<close> | 
| 47694 | 799 | by (auto intro!: emeasure_Diff[symmetric] simp: M N) | 
| 49789 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 800 | finally show ?case | 
| 61808 | 801 | using \<open>space M = \<Omega>\<close> by auto | 
| 47694 | 802 | next | 
| 49789 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 803 | case (union A) | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 804 | then have "?\<mu> (\<Union>x. F \<inter> A x) = ?\<nu> (\<Union>x. F \<inter> A x)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 805 | by (subst (1 2) suminf_emeasure[symmetric]) (auto simp: disjoint_family_on_def subset_eq M N) | 
| 49789 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 806 | with A show ?case | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 807 | by auto | 
| 49789 
e0a4cb91a8a9
add induction rule for intersection-stable sigma-sets
 hoelzl parents: 
49784diff
changeset | 808 | qed } | 
| 47694 | 809 | note * = this | 
| 810 | show "M = N" | |
| 811 | proof (rule measure_eqI) | |
| 812 | show "sets M = sets N" | |
| 813 | using M N by simp | |
| 49784 
5e5b2da42a69
remove incseq assumption from measure_eqI_generator_eq
 hoelzl parents: 
49773diff
changeset | 814 | have [simp, intro]: "\<And>i. A i \<in> sets M" | 
| 
5e5b2da42a69
remove incseq assumption from measure_eqI_generator_eq
 hoelzl parents: 
49773diff
changeset | 815 | using A(1) by (auto simp: subset_eq M) | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 816 | fix F assume "F \<in> sets M" | 
| 49784 
5e5b2da42a69
remove incseq assumption from measure_eqI_generator_eq
 hoelzl parents: 
49773diff
changeset | 817 | let ?D = "disjointed (\<lambda>i. F \<inter> A i)" | 
| 61808 | 818 | from \<open>space M = \<Omega>\<close> have F_eq: "F = (\<Union>i. ?D i)" | 
| 819 | using \<open>F \<in> sets M\<close>[THEN sets.sets_into_space] A(2)[symmetric] by (auto simp: UN_disjointed_eq) | |
| 49784 
5e5b2da42a69
remove incseq assumption from measure_eqI_generator_eq
 hoelzl parents: 
49773diff
changeset | 820 | have [simp, intro]: "\<And>i. ?D i \<in> sets M" | 
| 61808 | 821 | using sets.range_disjointed_sets[of "\<lambda>i. F \<inter> A i" M] \<open>F \<in> sets M\<close> | 
| 49784 
5e5b2da42a69
remove incseq assumption from measure_eqI_generator_eq
 hoelzl parents: 
49773diff
changeset | 822 | by (auto simp: subset_eq) | 
| 
5e5b2da42a69
remove incseq assumption from measure_eqI_generator_eq
 hoelzl parents: 
49773diff
changeset | 823 | have "disjoint_family ?D" | 
| 
5e5b2da42a69
remove incseq assumption from measure_eqI_generator_eq
 hoelzl parents: 
49773diff
changeset | 824 | by (auto simp: disjoint_family_disjointed) | 
| 50002 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 825 | moreover | 
| 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 826 | have "(\<Sum>i. emeasure M (?D i)) = (\<Sum>i. emeasure N (?D i))" | 
| 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 827 | proof (intro arg_cong[where f=suminf] ext) | 
| 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 828 | fix i | 
| 49784 
5e5b2da42a69
remove incseq assumption from measure_eqI_generator_eq
 hoelzl parents: 
49773diff
changeset | 829 | have "A i \<inter> ?D i = ?D i" | 
| 
5e5b2da42a69
remove incseq assumption from measure_eqI_generator_eq
 hoelzl parents: 
49773diff
changeset | 830 | by (auto simp: disjointed_def) | 
| 50002 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 831 | then show "emeasure M (?D i) = emeasure N (?D i)" | 
| 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 832 | using *[of "A i" "?D i", OF _ A(3)] A(1) by auto | 
| 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 833 | qed | 
| 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 834 | ultimately show "emeasure M F = emeasure N F" | 
| 61808 | 835 | by (simp add: image_subset_iff \<open>sets M = sets N\<close>[symmetric] F_eq[symmetric] suminf_emeasure) | 
| 47694 | 836 | qed | 
| 837 | qed | |
| 838 | ||
| 839 | lemma measure_of_of_measure: "measure_of (space M) (sets M) (emeasure M) = M" | |
| 840 | proof (intro measure_eqI emeasure_measure_of_sigma) | |
| 841 | show "sigma_algebra (space M) (sets M)" .. | |
| 842 | show "positive (sets M) (emeasure M)" | |
| 843 | by (simp add: positive_def emeasure_nonneg) | |
| 844 | show "countably_additive (sets M) (emeasure M)" | |
| 845 | by (simp add: emeasure_countably_additive) | |
| 846 | qed simp_all | |
| 847 | ||
| 61808 | 848 | subsection \<open>\<open>\<mu>\<close>-null sets\<close> | 
| 47694 | 849 | |
| 850 | definition null_sets :: "'a measure \<Rightarrow> 'a set set" where | |
| 851 |   "null_sets M = {N\<in>sets M. emeasure M N = 0}"
 | |
| 852 | ||
| 853 | lemma null_setsD1[dest]: "A \<in> null_sets M \<Longrightarrow> emeasure M A = 0" | |
| 854 | by (simp add: null_sets_def) | |
| 855 | ||
| 856 | lemma null_setsD2[dest]: "A \<in> null_sets M \<Longrightarrow> A \<in> sets M" | |
| 857 | unfolding null_sets_def by simp | |
| 858 | ||
| 859 | lemma null_setsI[intro]: "emeasure M A = 0 \<Longrightarrow> A \<in> sets M \<Longrightarrow> A \<in> null_sets M" | |
| 860 | unfolding null_sets_def by simp | |
| 861 | ||
| 862 | interpretation null_sets: ring_of_sets "space M" "null_sets M" for M | |
| 47762 | 863 | proof (rule ring_of_setsI) | 
| 47694 | 864 | show "null_sets M \<subseteq> Pow (space M)" | 
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 865 | using sets.sets_into_space by auto | 
| 47694 | 866 |   show "{} \<in> null_sets M"
 | 
| 867 | by auto | |
| 53374 
a14d2a854c02
tuned proofs -- clarified flow of facts wrt. calculation;
 wenzelm parents: 
51351diff
changeset | 868 | fix A B assume null_sets: "A \<in> null_sets M" "B \<in> null_sets M" | 
| 
a14d2a854c02
tuned proofs -- clarified flow of facts wrt. calculation;
 wenzelm parents: 
51351diff
changeset | 869 | then have sets: "A \<in> sets M" "B \<in> sets M" | 
| 47694 | 870 | by auto | 
| 53374 
a14d2a854c02
tuned proofs -- clarified flow of facts wrt. calculation;
 wenzelm parents: 
51351diff
changeset | 871 | then have *: "emeasure M (A \<union> B) \<le> emeasure M A + emeasure M B" | 
| 47694 | 872 | "emeasure M (A - B) \<le> emeasure M A" | 
| 873 | by (auto intro!: emeasure_subadditive emeasure_mono) | |
| 53374 
a14d2a854c02
tuned proofs -- clarified flow of facts wrt. calculation;
 wenzelm parents: 
51351diff
changeset | 874 | then have "emeasure M B = 0" "emeasure M A = 0" | 
| 
a14d2a854c02
tuned proofs -- clarified flow of facts wrt. calculation;
 wenzelm parents: 
51351diff
changeset | 875 | using null_sets by auto | 
| 
a14d2a854c02
tuned proofs -- clarified flow of facts wrt. calculation;
 wenzelm parents: 
51351diff
changeset | 876 | with sets * show "A - B \<in> null_sets M" "A \<union> B \<in> null_sets M" | 
| 47694 | 877 | by (auto intro!: antisym) | 
| 878 | qed | |
| 879 | ||
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 880 | lemma UN_from_nat_into: | 
| 57275 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 881 |   assumes I: "countable I" "I \<noteq> {}"
 | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 882 | shows "(\<Union>i\<in>I. N i) = (\<Union>i. N (from_nat_into I i))" | 
| 47694 | 883 | proof - | 
| 57275 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 884 | have "(\<Union>i\<in>I. N i) = \<Union>(N ` range (from_nat_into I))" | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 885 | using I by simp | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 886 | also have "\<dots> = (\<Union>i. (N \<circ> from_nat_into I) i)" | 
| 56154 
f0a927235162
more complete set of lemmas wrt. image and composition
 haftmann parents: 
54417diff
changeset | 887 | by (simp only: SUP_def image_comp) | 
| 57275 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 888 | finally show ?thesis by simp | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 889 | qed | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 890 | |
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 891 | lemma null_sets_UN': | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 892 | assumes "countable I" | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 893 | assumes "\<And>i. i \<in> I \<Longrightarrow> N i \<in> null_sets M" | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 894 | shows "(\<Union>i\<in>I. N i) \<in> null_sets M" | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 895 | proof cases | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 896 |   assume "I = {}" then show ?thesis by simp
 | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 897 | next | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 898 |   assume "I \<noteq> {}"
 | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 899 | show ?thesis | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 900 | proof (intro conjI CollectI null_setsI) | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 901 | show "(\<Union>i\<in>I. N i) \<in> sets M" | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 902 | using assms by (intro sets.countable_UN') auto | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 903 | have "emeasure M (\<Union>i\<in>I. N i) \<le> (\<Sum>n. emeasure M (N (from_nat_into I n)))" | 
| 61808 | 904 |       unfolding UN_from_nat_into[OF \<open>countable I\<close> \<open>I \<noteq> {}\<close>]
 | 
| 905 |       using assms \<open>I \<noteq> {}\<close> by (intro emeasure_subadditive_countably) (auto intro: from_nat_into)
 | |
| 57275 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 906 | also have "(\<lambda>n. emeasure M (N (from_nat_into I n))) = (\<lambda>_. 0)" | 
| 61808 | 907 |       using assms \<open>I \<noteq> {}\<close> by (auto intro: from_nat_into)
 | 
| 57275 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 908 | finally show "emeasure M (\<Union>i\<in>I. N i) = 0" | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 909 | by (intro antisym emeasure_nonneg) simp | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 910 | qed | 
| 47694 | 911 | qed | 
| 912 | ||
| 913 | lemma null_sets_UN[intro]: | |
| 57275 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 914 | "(\<And>i::'i::countable. N i \<in> null_sets M) \<Longrightarrow> (\<Union>i. N i) \<in> null_sets M" | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 915 | by (rule null_sets_UN') auto | 
| 47694 | 916 | |
| 917 | lemma null_set_Int1: | |
| 918 | assumes "B \<in> null_sets M" "A \<in> sets M" shows "A \<inter> B \<in> null_sets M" | |
| 919 | proof (intro CollectI conjI null_setsI) | |
| 920 | show "emeasure M (A \<inter> B) = 0" using assms | |
| 921 | by (intro emeasure_eq_0[of B _ "A \<inter> B"]) auto | |
| 922 | qed (insert assms, auto) | |
| 923 | ||
| 924 | lemma null_set_Int2: | |
| 925 | assumes "B \<in> null_sets M" "A \<in> sets M" shows "B \<inter> A \<in> null_sets M" | |
| 926 | using assms by (subst Int_commute) (rule null_set_Int1) | |
| 927 | ||
| 928 | lemma emeasure_Diff_null_set: | |
| 929 | assumes "B \<in> null_sets M" "A \<in> sets M" | |
| 930 | shows "emeasure M (A - B) = emeasure M A" | |
| 931 | proof - | |
| 932 | have *: "A - B = (A - (A \<inter> B))" by auto | |
| 933 | have "A \<inter> B \<in> null_sets M" using assms by (rule null_set_Int1) | |
| 934 | then show ?thesis | |
| 935 | unfolding * using assms | |
| 936 | by (subst emeasure_Diff) auto | |
| 937 | qed | |
| 938 | ||
| 939 | lemma null_set_Diff: | |
| 940 | assumes "B \<in> null_sets M" "A \<in> sets M" shows "B - A \<in> null_sets M" | |
| 941 | proof (intro CollectI conjI null_setsI) | |
| 942 | show "emeasure M (B - A) = 0" using assms by (intro emeasure_eq_0[of B _ "B - A"]) auto | |
| 943 | qed (insert assms, auto) | |
| 944 | ||
| 945 | lemma emeasure_Un_null_set: | |
| 946 | assumes "A \<in> sets M" "B \<in> null_sets M" | |
| 947 | shows "emeasure M (A \<union> B) = emeasure M A" | |
| 948 | proof - | |
| 949 | have *: "A \<union> B = A \<union> (B - A)" by auto | |
| 950 | have "B - A \<in> null_sets M" using assms(2,1) by (rule null_set_Diff) | |
| 951 | then show ?thesis | |
| 952 | unfolding * using assms | |
| 953 | by (subst plus_emeasure[symmetric]) auto | |
| 954 | qed | |
| 955 | ||
| 61808 | 956 | subsection \<open>The almost everywhere filter (i.e.\ quantifier)\<close> | 
| 47694 | 957 | |
| 958 | definition ae_filter :: "'a measure \<Rightarrow> 'a filter" where | |
| 57276 | 959 | "ae_filter M = (INF N:null_sets M. principal (space M - N))" | 
| 47694 | 960 | |
| 57276 | 961 | abbreviation almost_everywhere :: "'a measure \<Rightarrow> ('a \<Rightarrow> bool) \<Rightarrow> bool" where
 | 
| 47694 | 962 | "almost_everywhere M P \<equiv> eventually P (ae_filter M)" | 
| 963 | ||
| 964 | syntax | |
| 965 |   "_almost_everywhere" :: "pttrn \<Rightarrow> 'a \<Rightarrow> bool \<Rightarrow> bool" ("AE _ in _. _" [0,0,10] 10)
 | |
| 966 | ||
| 967 | translations | |
| 57276 | 968 | "AE x in M. P" == "CONST almost_everywhere M (\<lambda>x. P)" | 
| 47694 | 969 | |
| 57276 | 970 | lemma eventually_ae_filter: "eventually P (ae_filter M) \<longleftrightarrow> (\<exists>N\<in>null_sets M. {x \<in> space M. \<not> P x} \<subseteq> N)"
 | 
| 971 | unfolding ae_filter_def by (subst eventually_INF_base) (auto simp: eventually_principal subset_eq) | |
| 47694 | 972 | |
| 973 | lemma AE_I': | |
| 974 |   "N \<in> null_sets M \<Longrightarrow> {x\<in>space M. \<not> P x} \<subseteq> N \<Longrightarrow> (AE x in M. P x)"
 | |
| 975 | unfolding eventually_ae_filter by auto | |
| 976 | ||
| 977 | lemma AE_iff_null: | |
| 978 |   assumes "{x\<in>space M. \<not> P x} \<in> sets M" (is "?P \<in> sets M")
 | |
| 979 |   shows "(AE x in M. P x) \<longleftrightarrow> {x\<in>space M. \<not> P x} \<in> null_sets M"
 | |
| 980 | proof | |
| 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 | |
| 983 | have "0 \<le> emeasure M ?P" by auto | |
| 984 | moreover have "emeasure M ?P \<le> emeasure M N" | |
| 985 | using assms N(1,2) by (auto intro: emeasure_mono) | |
| 61808 | 986 | ultimately have "emeasure M ?P = 0" unfolding \<open>emeasure M N = 0\<close> by auto | 
| 47694 | 987 | then show "?P \<in> null_sets M" using assms by auto | 
| 988 | next | |
| 989 | assume "?P \<in> null_sets M" with assms show "AE x in M. P x" by (auto intro: AE_I') | |
| 990 | qed | |
| 991 | ||
| 992 | lemma AE_iff_null_sets: | |
| 993 | "N \<in> sets M \<Longrightarrow> N \<in> null_sets M \<longleftrightarrow> (AE x in M. x \<notin> N)" | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 994 | using Int_absorb1[OF sets.sets_into_space, of N M] | 
| 47694 | 995 | by (subst AE_iff_null) (auto simp: Int_def[symmetric]) | 
| 996 | ||
| 47761 | 997 | lemma AE_not_in: | 
| 998 | "N \<in> null_sets M \<Longrightarrow> AE x in M. x \<notin> N" | |
| 999 | by (metis AE_iff_null_sets null_setsD2) | |
| 1000 | ||
| 47694 | 1001 | lemma AE_iff_measurable: | 
| 1002 |   "N \<in> sets M \<Longrightarrow> {x\<in>space M. \<not> P x} = N \<Longrightarrow> (AE x in M. P x) \<longleftrightarrow> emeasure M N = 0"
 | |
| 1003 | using AE_iff_null[of _ P] by auto | |
| 1004 | ||
| 1005 | lemma AE_E[consumes 1]: | |
| 1006 | assumes "AE x in M. P x" | |
| 1007 |   obtains N where "{x \<in> space M. \<not> P x} \<subseteq> N" "emeasure M N = 0" "N \<in> sets M"
 | |
| 1008 | using assms unfolding eventually_ae_filter by auto | |
| 1009 | ||
| 1010 | lemma AE_E2: | |
| 1011 |   assumes "AE x in M. P x" "{x\<in>space M. P x} \<in> sets M"
 | |
| 1012 |   shows "emeasure M {x\<in>space M. \<not> P x} = 0" (is "emeasure M ?P = 0")
 | |
| 1013 | proof - | |
| 1014 |   have "{x\<in>space M. \<not> P x} = space M - {x\<in>space M. P x}" by auto
 | |
| 1015 | with AE_iff_null[of M P] assms show ?thesis by auto | |
| 1016 | qed | |
| 1017 | ||
| 1018 | lemma AE_I: | |
| 1019 |   assumes "{x \<in> space M. \<not> P x} \<subseteq> N" "emeasure M N = 0" "N \<in> sets M"
 | |
| 1020 | shows "AE x in M. P x" | |
| 1021 | using assms unfolding eventually_ae_filter by auto | |
| 1022 | ||
| 1023 | lemma AE_mp[elim!]: | |
| 1024 | assumes AE_P: "AE x in M. P x" and AE_imp: "AE x in M. P x \<longrightarrow> Q x" | |
| 1025 | shows "AE x in M. Q x" | |
| 1026 | proof - | |
| 1027 |   from AE_P obtain A where P: "{x\<in>space M. \<not> P x} \<subseteq> A"
 | |
| 1028 | and A: "A \<in> sets M" "emeasure M A = 0" | |
| 1029 | by (auto elim!: AE_E) | |
| 1030 | ||
| 1031 |   from AE_imp obtain B where imp: "{x\<in>space M. P x \<and> \<not> Q x} \<subseteq> B"
 | |
| 1032 | and B: "B \<in> sets M" "emeasure M B = 0" | |
| 1033 | by (auto elim!: AE_E) | |
| 1034 | ||
| 1035 | show ?thesis | |
| 1036 | proof (intro AE_I) | |
| 1037 | have "0 \<le> emeasure M (A \<union> B)" using A B by auto | |
| 1038 | moreover have "emeasure M (A \<union> B) \<le> 0" | |
| 1039 | using emeasure_subadditive[of A M B] A B by auto | |
| 1040 | ultimately show "A \<union> B \<in> sets M" "emeasure M (A \<union> B) = 0" using A B by auto | |
| 1041 |     show "{x\<in>space M. \<not> Q x} \<subseteq> A \<union> B"
 | |
| 1042 | using P imp by auto | |
| 1043 | qed | |
| 1044 | qed | |
| 1045 | ||
| 1046 | (* depricated replace by laws about eventually *) | |
| 1047 | lemma | |
| 1048 | shows AE_iffI: "AE x in M. P x \<Longrightarrow> AE x in M. P x \<longleftrightarrow> Q x \<Longrightarrow> AE x in M. Q x" | |
| 1049 | and AE_disjI1: "AE x in M. P x \<Longrightarrow> AE x in M. P x \<or> Q x" | |
| 1050 | and AE_disjI2: "AE x in M. Q x \<Longrightarrow> AE x in M. P x \<or> Q x" | |
| 1051 | and AE_conjI: "AE x in M. P x \<Longrightarrow> AE x in M. Q x \<Longrightarrow> AE x in M. P x \<and> Q x" | |
| 1052 | and AE_conj_iff[simp]: "(AE x in M. P x \<and> Q x) \<longleftrightarrow> (AE x in M. P x) \<and> (AE x in M. Q x)" | |
| 1053 | by auto | |
| 1054 | ||
| 1055 | lemma AE_impI: | |
| 1056 | "(P \<Longrightarrow> AE x in M. Q x) \<Longrightarrow> AE x in M. P \<longrightarrow> Q x" | |
| 1057 | by (cases P) auto | |
| 1058 | ||
| 1059 | lemma AE_measure: | |
| 1060 |   assumes AE: "AE x in M. P x" and sets: "{x\<in>space M. P x} \<in> sets M" (is "?P \<in> sets M")
 | |
| 1061 |   shows "emeasure M {x\<in>space M. P x} = emeasure M (space M)"
 | |
| 1062 | proof - | |
| 1063 | from AE_E[OF AE] guess N . note N = this | |
| 1064 | with sets have "emeasure M (space M) \<le> emeasure M (?P \<union> N)" | |
| 1065 | by (intro emeasure_mono) auto | |
| 1066 | also have "\<dots> \<le> emeasure M ?P + emeasure M N" | |
| 1067 | using sets N by (intro emeasure_subadditive) auto | |
| 1068 | also have "\<dots> = emeasure M ?P" using N by simp | |
| 1069 | finally show "emeasure M ?P = emeasure M (space M)" | |
| 1070 | using emeasure_space[of M "?P"] by auto | |
| 1071 | qed | |
| 1072 | ||
| 1073 | lemma AE_space: "AE x in M. x \<in> space M" | |
| 1074 |   by (rule AE_I[where N="{}"]) auto
 | |
| 1075 | ||
| 1076 | lemma AE_I2[simp, intro]: | |
| 1077 | "(\<And>x. x \<in> space M \<Longrightarrow> P x) \<Longrightarrow> AE x in M. P x" | |
| 1078 | using AE_space by force | |
| 1079 | ||
| 1080 | lemma AE_Ball_mp: | |
| 1081 | "\<forall>x\<in>space M. P x \<Longrightarrow> AE x in M. P x \<longrightarrow> Q x \<Longrightarrow> AE x in M. Q x" | |
| 1082 | by auto | |
| 1083 | ||
| 1084 | lemma AE_cong[cong]: | |
| 1085 | "(\<And>x. x \<in> space M \<Longrightarrow> P x \<longleftrightarrow> Q x) \<Longrightarrow> (AE x in M. P x) \<longleftrightarrow> (AE x in M. Q x)" | |
| 1086 | by auto | |
| 1087 | ||
| 1088 | lemma AE_all_countable: | |
| 1089 | "(AE x in M. \<forall>i. P i x) \<longleftrightarrow> (\<forall>i::'i::countable. AE x in M. P i x)" | |
| 1090 | proof | |
| 1091 | assume "\<forall>i. AE x in M. P i x" | |
| 1092 | from this[unfolded eventually_ae_filter Bex_def, THEN choice] | |
| 1093 |   obtain N where N: "\<And>i. N i \<in> null_sets M" "\<And>i. {x\<in>space M. \<not> P i x} \<subseteq> N i" by auto
 | |
| 1094 |   have "{x\<in>space M. \<not> (\<forall>i. P i x)} \<subseteq> (\<Union>i. {x\<in>space M. \<not> P i x})" by auto
 | |
| 1095 | also have "\<dots> \<subseteq> (\<Union>i. N i)" using N by auto | |
| 1096 |   finally have "{x\<in>space M. \<not> (\<forall>i. P i x)} \<subseteq> (\<Union>i. N i)" .
 | |
| 1097 | moreover from N have "(\<Union>i. N i) \<in> null_sets M" | |
| 1098 | by (intro null_sets_UN) auto | |
| 1099 | ultimately show "AE x in M. \<forall>i. P i x" | |
| 1100 | unfolding eventually_ae_filter by auto | |
| 1101 | qed auto | |
| 1102 | ||
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 1103 | lemma AE_ball_countable: | 
| 59000 | 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)" | |
| 1106 | proof | |
| 1107 | assume "\<forall>y\<in>X. AE x in M. P x y" | |
| 1108 | from this[unfolded eventually_ae_filter Bex_def, THEN bchoice] | |
| 1109 |   obtain N where N: "\<And>y. y \<in> X \<Longrightarrow> N y \<in> null_sets M" "\<And>y. y \<in> X \<Longrightarrow> {x\<in>space M. \<not> P x y} \<subseteq> N y"
 | |
| 1110 | by auto | |
| 1111 |   have "{x\<in>space M. \<not> (\<forall>y\<in>X. P x y)} \<subseteq> (\<Union>y\<in>X. {x\<in>space M. \<not> P x y})"
 | |
| 1112 | by auto | |
| 1113 | also have "\<dots> \<subseteq> (\<Union>y\<in>X. N y)" | |
| 1114 | using N by auto | |
| 1115 |   finally have "{x\<in>space M. \<not> (\<forall>y\<in>X. P x y)} \<subseteq> (\<Union>y\<in>X. N y)" .
 | |
| 1116 | moreover from N have "(\<Union>y\<in>X. N y) \<in> null_sets M" | |
| 1117 | by (intro null_sets_UN') auto | |
| 1118 | ultimately show "AE x in M. \<forall>y\<in>X. P x y" | |
| 1119 | unfolding eventually_ae_filter by auto | |
| 1120 | qed auto | |
| 1121 | ||
| 57275 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 1122 | lemma AE_discrete_difference: | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 1123 | assumes X: "countable X" | 
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 1124 |   assumes null: "\<And>x. x \<in> X \<Longrightarrow> emeasure M {x} = 0"
 | 
| 57275 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 1125 |   assumes sets: "\<And>x. x \<in> X \<Longrightarrow> {x} \<in> sets M"
 | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 1126 | shows "AE x in M. x \<notin> X" | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 1127 | proof - | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 1128 |   have "(\<Union>x\<in>X. {x}) \<in> null_sets M"
 | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 1129 | using assms by (intro null_sets_UN') auto | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 1130 | from AE_not_in[OF this] show "AE x in M. x \<notin> X" | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 1131 | by auto | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 1132 | qed | 
| 
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
 hoelzl parents: 
57235diff
changeset | 1133 | |
| 47694 | 1134 | lemma AE_finite_all: | 
| 1135 | assumes f: "finite S" shows "(AE x in M. \<forall>i\<in>S. P i x) \<longleftrightarrow> (\<forall>i\<in>S. AE x in M. P i x)" | |
| 1136 | using f by induct auto | |
| 1137 | ||
| 1138 | lemma AE_finite_allI: | |
| 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" | |
| 61808 | 1141 | using AE_finite_all[OF \<open>finite S\<close>] by auto | 
| 47694 | 1142 | |
| 1143 | lemma emeasure_mono_AE: | |
| 1144 | assumes imp: "AE x in M. x \<in> A \<longrightarrow> x \<in> B" | |
| 1145 | and B: "B \<in> sets M" | |
| 1146 | shows "emeasure M A \<le> emeasure M B" | |
| 1147 | proof cases | |
| 1148 | assume A: "A \<in> sets M" | |
| 1149 |   from imp obtain N where N: "{x\<in>space M. \<not> (x \<in> A \<longrightarrow> x \<in> B)} \<subseteq> N" "N \<in> null_sets M"
 | |
| 1150 | by (auto simp: eventually_ae_filter) | |
| 1151 | have "emeasure M A = emeasure M (A - N)" | |
| 1152 | using N A by (subst emeasure_Diff_null_set) auto | |
| 1153 | also have "emeasure M (A - N) \<le> emeasure M (B - N)" | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 1154 | using N A B sets.sets_into_space by (auto intro!: emeasure_mono) | 
| 47694 | 1155 | also have "emeasure M (B - N) = emeasure M B" | 
| 1156 | using N B by (subst emeasure_Diff_null_set) auto | |
| 1157 | finally show ?thesis . | |
| 1158 | qed (simp add: emeasure_nonneg emeasure_notin_sets) | |
| 1159 | ||
| 1160 | lemma emeasure_eq_AE: | |
| 1161 | assumes iff: "AE x in M. x \<in> A \<longleftrightarrow> x \<in> B" | |
| 1162 | assumes A: "A \<in> sets M" and B: "B \<in> sets M" | |
| 1163 | shows "emeasure M A = emeasure M B" | |
| 1164 | using assms by (safe intro!: antisym emeasure_mono_AE) auto | |
| 1165 | ||
| 59000 | 1166 | lemma emeasure_Collect_eq_AE: | 
| 1167 | "AE x in M. P x \<longleftrightarrow> Q x \<Longrightarrow> Measurable.pred M Q \<Longrightarrow> Measurable.pred M P \<Longrightarrow> | |
| 1168 |    emeasure M {x\<in>space M. P x} = emeasure M {x\<in>space M. Q x}"
 | |
| 1169 | by (intro emeasure_eq_AE) auto | |
| 1170 | ||
| 1171 | lemma emeasure_eq_0_AE: "AE x in M. \<not> P x \<Longrightarrow> emeasure M {x\<in>space M. P x} = 0"
 | |
| 1172 | using AE_iff_measurable[OF _ refl, of M "\<lambda>x. \<not> P x"] | |
| 1173 |   by (cases "{x\<in>space M. P x} \<in> sets M") (simp_all add: emeasure_notin_sets)
 | |
| 1174 | ||
| 60715 | 1175 | lemma emeasure_add_AE: | 
| 1176 | assumes [measurable]: "A \<in> sets M" "B \<in> sets M" "C \<in> sets M" | |
| 1177 | assumes 1: "AE x in M. x \<in> C \<longleftrightarrow> x \<in> A \<or> x \<in> B" | |
| 1178 | assumes 2: "AE x in M. \<not> (x \<in> A \<and> x \<in> B)" | |
| 1179 | shows "emeasure M C = emeasure M A + emeasure M B" | |
| 1180 | proof - | |
| 1181 | have "emeasure M C = emeasure M (A \<union> B)" | |
| 1182 | by (rule emeasure_eq_AE) (insert 1, auto) | |
| 1183 | also have "\<dots> = emeasure M A + emeasure M (B - A)" | |
| 1184 | by (subst plus_emeasure) auto | |
| 1185 | also have "emeasure M (B - A) = emeasure M B" | |
| 1186 | by (rule emeasure_eq_AE) (insert 2, auto) | |
| 1187 | finally show ?thesis . | |
| 1188 | qed | |
| 1189 | ||
| 61808 | 1190 | subsection \<open>\<open>\<sigma>\<close>-finite Measures\<close> | 
| 47694 | 1191 | |
| 1192 | locale sigma_finite_measure = | |
| 1193 | fixes M :: "'a measure" | |
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1194 | assumes sigma_finite_countable: | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 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>)" | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1196 | |
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1197 | lemma (in sigma_finite_measure) sigma_finite: | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1198 | obtains A :: "nat \<Rightarrow> 'a set" | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1199 | where "range A \<subseteq> sets M" "(\<Union>i. A i) = space M" "\<And>i. emeasure M (A i) \<noteq> \<infinity>" | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1200 | proof - | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1201 | obtain A :: "'a set set" where | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1202 | [simp]: "countable A" and | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1203 | A: "A \<subseteq> sets M" "(\<Union>A) = space M" "\<And>a. a \<in> A \<Longrightarrow> emeasure M a \<noteq> \<infinity>" | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1204 | using sigma_finite_countable by metis | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1205 | show thesis | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1206 | proof cases | 
| 61808 | 1207 |     assume "A = {}" with \<open>(\<Union>A) = space M\<close> show thesis
 | 
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1208 |       by (intro that[of "\<lambda>_. {}"]) auto
 | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1209 | next | 
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 1210 |     assume "A \<noteq> {}"
 | 
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1211 | show thesis | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1212 | proof | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1213 | show "range (from_nat_into A) \<subseteq> sets M" | 
| 61808 | 1214 |         using \<open>A \<noteq> {}\<close> A by auto
 | 
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1215 | have "(\<Union>i. from_nat_into A i) = \<Union>A" | 
| 61808 | 1216 |         using range_from_nat_into[OF \<open>A \<noteq> {}\<close> \<open>countable A\<close>] by auto
 | 
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1217 | with A show "(\<Union>i. from_nat_into A i) = space M" | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1218 | by auto | 
| 61808 | 1219 |     qed (intro A from_nat_into \<open>A \<noteq> {}\<close>)
 | 
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1220 | qed | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1221 | qed | 
| 47694 | 1222 | |
| 1223 | lemma (in sigma_finite_measure) sigma_finite_disjoint: | |
| 1224 | obtains A :: "nat \<Rightarrow> 'a set" | |
| 1225 | where "range A \<subseteq> sets M" "(\<Union>i. A i) = space M" "\<And>i. emeasure M (A i) \<noteq> \<infinity>" "disjoint_family A" | |
| 60580 | 1226 | proof - | 
| 47694 | 1227 | obtain A :: "nat \<Rightarrow> 'a set" where | 
| 1228 | range: "range A \<subseteq> sets M" and | |
| 1229 | space: "(\<Union>i. A i) = space M" and | |
| 1230 | measure: "\<And>i. emeasure M (A i) \<noteq> \<infinity>" | |
| 1231 | using sigma_finite by auto | |
| 60580 | 1232 | show thesis | 
| 1233 | proof (rule that[of "disjointed A"]) | |
| 1234 | show "range (disjointed A) \<subseteq> sets M" | |
| 1235 | by (rule sets.range_disjointed_sets[OF range]) | |
| 1236 | show "(\<Union>i. disjointed A i) = space M" | |
| 1237 | and "disjoint_family (disjointed A)" | |
| 1238 | using disjoint_family_disjointed UN_disjointed_eq[of A] space range | |
| 1239 | by auto | |
| 1240 | show "emeasure M (disjointed A i) \<noteq> \<infinity>" for i | |
| 1241 | proof - | |
| 1242 | have "emeasure M (disjointed A i) \<le> emeasure M (A i)" | |
| 1243 | using range disjointed_subset[of A i] by (auto intro!: emeasure_mono) | |
| 1244 | then show ?thesis using measure[of i] by auto | |
| 1245 | qed | |
| 1246 | qed | |
| 47694 | 1247 | qed | 
| 1248 | ||
| 1249 | lemma (in sigma_finite_measure) sigma_finite_incseq: | |
| 1250 | obtains A :: "nat \<Rightarrow> 'a set" | |
| 1251 | where "range A \<subseteq> sets M" "(\<Union>i. A i) = space M" "\<And>i. emeasure M (A i) \<noteq> \<infinity>" "incseq A" | |
| 60580 | 1252 | proof - | 
| 47694 | 1253 | obtain F :: "nat \<Rightarrow> 'a set" where | 
| 1254 | F: "range F \<subseteq> sets M" "(\<Union>i. F i) = space M" "\<And>i. emeasure M (F i) \<noteq> \<infinity>" | |
| 1255 | using sigma_finite by auto | |
| 60580 | 1256 | show thesis | 
| 1257 | proof (rule that[of "\<lambda>n. \<Union>i\<le>n. F i"]) | |
| 1258 | show "range (\<lambda>n. \<Union>i\<le>n. F i) \<subseteq> sets M" | |
| 1259 | using F by (force simp: incseq_def) | |
| 1260 | show "(\<Union>n. \<Union>i\<le>n. F i) = space M" | |
| 1261 | proof - | |
| 1262 | from F have "\<And>x. x \<in> space M \<Longrightarrow> \<exists>i. x \<in> F i" by auto | |
| 1263 | with F show ?thesis by fastforce | |
| 1264 | qed | |
| 60585 | 1265 | show "emeasure M (\<Union>i\<le>n. F i) \<noteq> \<infinity>" for n | 
| 60580 | 1266 | proof - | 
| 60585 | 1267 | have "emeasure M (\<Union>i\<le>n. F i) \<le> (\<Sum>i\<le>n. emeasure M (F i))" | 
| 60580 | 1268 | using F by (auto intro!: emeasure_subadditive_finite) | 
| 1269 | also have "\<dots> < \<infinity>" | |
| 1270 | using F by (auto simp: setsum_Pinfty) | |
| 1271 | finally show ?thesis by simp | |
| 1272 | qed | |
| 1273 | show "incseq (\<lambda>n. \<Union>i\<le>n. F i)" | |
| 1274 | by (force simp: incseq_def) | |
| 1275 | qed | |
| 47694 | 1276 | qed | 
| 1277 | ||
| 61808 | 1278 | subsection \<open>Measure space induced by distribution of @{const measurable}-functions\<close>
 | 
| 47694 | 1279 | |
| 1280 | definition distr :: "'a measure \<Rightarrow> 'b measure \<Rightarrow> ('a \<Rightarrow> 'b) \<Rightarrow> 'b measure" where
 | |
| 1281 | "distr M N f = measure_of (space N) (sets N) (\<lambda>A. emeasure M (f -` A \<inter> space M))" | |
| 1282 | ||
| 1283 | lemma | |
| 59048 | 1284 | shows sets_distr[simp, measurable_cong]: "sets (distr M N f) = sets N" | 
| 47694 | 1285 | and space_distr[simp]: "space (distr M N f) = space N" | 
| 1286 | by (auto simp: distr_def) | |
| 1287 | ||
| 1288 | lemma | |
| 1289 | shows measurable_distr_eq1[simp]: "measurable (distr Mf Nf f) Mf' = measurable Nf Mf'" | |
| 1290 | and measurable_distr_eq2[simp]: "measurable Mg' (distr Mg Ng g) = measurable Mg' Ng" | |
| 1291 | by (auto simp: measurable_def) | |
| 1292 | ||
| 54417 | 1293 | lemma distr_cong: | 
| 1294 | "M = K \<Longrightarrow> sets N = sets L \<Longrightarrow> (\<And>x. x \<in> space M \<Longrightarrow> f x = g x) \<Longrightarrow> distr M N f = distr K L g" | |
| 1295 | using sets_eq_imp_space_eq[of N L] by (simp add: distr_def Int_def cong: rev_conj_cong) | |
| 1296 | ||
| 47694 | 1297 | lemma emeasure_distr: | 
| 1298 | fixes f :: "'a \<Rightarrow> 'b" | |
| 1299 | assumes f: "f \<in> measurable M N" and A: "A \<in> sets N" | |
| 1300 | shows "emeasure (distr M N f) A = emeasure M (f -` A \<inter> space M)" (is "_ = ?\<mu> A") | |
| 1301 | unfolding distr_def | |
| 1302 | proof (rule emeasure_measure_of_sigma) | |
| 1303 | show "positive (sets N) ?\<mu>" | |
| 1304 | by (auto simp: positive_def) | |
| 1305 | ||
| 1306 | show "countably_additive (sets N) ?\<mu>" | |
| 1307 | proof (intro countably_additiveI) | |
| 1308 | fix A :: "nat \<Rightarrow> 'b set" assume "range A \<subseteq> sets N" "disjoint_family A" | |
| 1309 | then have A: "\<And>i. A i \<in> sets N" "(\<Union>i. A i) \<in> sets N" by auto | |
| 1310 | then have *: "range (\<lambda>i. f -` (A i) \<inter> space M) \<subseteq> sets M" | |
| 1311 | using f by (auto simp: measurable_def) | |
| 1312 | moreover have "(\<Union>i. f -` A i \<inter> space M) \<in> sets M" | |
| 1313 | using * by blast | |
| 1314 | moreover have **: "disjoint_family (\<lambda>i. f -` A i \<inter> space M)" | |
| 61808 | 1315 | using \<open>disjoint_family A\<close> by (auto simp: disjoint_family_on_def) | 
| 47694 | 1316 | ultimately show "(\<Sum>i. ?\<mu> (A i)) = ?\<mu> (\<Union>i. A i)" | 
| 1317 | using suminf_emeasure[OF _ **] A f | |
| 1318 | by (auto simp: comp_def vimage_UN) | |
| 1319 | qed | |
| 1320 | show "sigma_algebra (space N) (sets N)" .. | |
| 1321 | qed fact | |
| 1322 | ||
| 59000 | 1323 | lemma emeasure_Collect_distr: | 
| 1324 | assumes X[measurable]: "X \<in> measurable M N" "Measurable.pred N P" | |
| 1325 |   shows "emeasure (distr M N X) {x\<in>space N. P x} = emeasure M {x\<in>space M. P (X x)}"
 | |
| 1326 | by (subst emeasure_distr) | |
| 1327 | (auto intro!: arg_cong2[where f=emeasure] X(1)[THEN measurable_space]) | |
| 1328 | ||
| 1329 | lemma emeasure_lfp2[consumes 1, case_names cont f measurable]: | |
| 1330 | assumes "P M" | |
| 60172 
423273355b55
rename continuous and down_continuous in Order_Continuity to sup_/inf_continuous; relate them with topological continuity
 hoelzl parents: 
60142diff
changeset | 1331 | assumes cont: "sup_continuous F" | 
| 59000 | 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)" | |
| 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]) | |
| 1336 | show "f \<in> measurable M' M" "f \<in> measurable M' M" | |
| 61808 | 1337 | using f[OF \<open>P M\<close>] by auto | 
| 59000 | 1338 |   { fix i show "Measurable.pred M ((F ^^ i) (\<lambda>x. False))"
 | 
| 61808 | 1339 | using \<open>P M\<close> by (induction i arbitrary: M) (auto intro!: *) } | 
| 59000 | 1340 | show "Measurable.pred M (lfp F)" | 
| 61808 | 1341 | using \<open>P M\<close> cont * by (rule measurable_lfp_coinduct[of P]) | 
| 59000 | 1342 | |
| 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})"
 | |
| 61808 | 1345 | using \<open>P M\<close> | 
| 60636 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1346 | proof (coinduction arbitrary: M rule: emeasure_lfp') | 
| 59000 | 1347 | case (measurable A N) then have "\<And>N. P N \<Longrightarrow> Measurable.pred (distr M' N f) A" | 
| 1348 | by metis | |
| 1349 | then have "\<And>N. P N \<Longrightarrow> Measurable.pred N A" | |
| 1350 | by simp | |
| 61808 | 1351 | with \<open>P N\<close>[THEN *] show ?case | 
| 59000 | 1352 | by auto | 
| 1353 | qed fact | |
| 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})"
 | |
| 1356 | by simp | |
| 1357 | qed | |
| 1358 | ||
| 50104 | 1359 | lemma distr_id[simp]: "distr N N (\<lambda>x. x) = N" | 
| 1360 | by (rule measure_eqI) (auto simp: emeasure_distr) | |
| 1361 | ||
| 50001 
382bd3173584
add syntax and a.e.-rules for (conditional) probability on predicates
 hoelzl parents: 
49789diff
changeset | 1362 | lemma measure_distr: | 
| 
382bd3173584
add syntax and a.e.-rules for (conditional) probability on predicates
 hoelzl parents: 
49789diff
changeset | 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)" | 
| 
382bd3173584
add syntax and a.e.-rules for (conditional) probability on predicates
 hoelzl parents: 
49789diff
changeset | 1364 | by (simp add: emeasure_distr measure_def) | 
| 
382bd3173584
add syntax and a.e.-rules for (conditional) probability on predicates
 hoelzl parents: 
49789diff
changeset | 1365 | |
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1366 | lemma distr_cong_AE: | 
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 1367 | assumes 1: "M = K" "sets N = sets L" and | 
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1368 | 2: "(AE x in M. f x = g x)" and "f \<in> measurable M N" and "g \<in> measurable K L" | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1369 | shows "distr M N f = distr K L g" | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1370 | proof (rule measure_eqI) | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1371 | fix A assume "A \<in> sets (distr M N f)" | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1372 | with assms show "emeasure (distr M N f) A = emeasure (distr K L g) A" | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1373 | by (auto simp add: emeasure_distr intro!: emeasure_eq_AE measurable_sets) | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1374 | qed (insert 1, simp) | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1375 | |
| 47694 | 1376 | lemma AE_distrD: | 
| 1377 | assumes f: "f \<in> measurable M M'" | |
| 1378 | and AE: "AE x in distr M M' f. P x" | |
| 1379 | shows "AE x in M. P (f x)" | |
| 1380 | proof - | |
| 1381 | from AE[THEN AE_E] guess N . | |
| 1382 | with f show ?thesis | |
| 1383 | unfolding eventually_ae_filter | |
| 1384 | by (intro bexI[of _ "f -` N \<inter> space M"]) | |
| 1385 | (auto simp: emeasure_distr measurable_def) | |
| 1386 | qed | |
| 1387 | ||
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1388 | lemma AE_distr_iff: | 
| 50002 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 1389 |   assumes f[measurable]: "f \<in> measurable M N" and P[measurable]: "{x \<in> space N. P x} \<in> sets N"
 | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1390 | shows "(AE x in distr M N f. P x) \<longleftrightarrow> (AE x in M. P (f x))" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1391 | proof (subst (1 2) AE_iff_measurable[OF _ refl]) | 
| 50002 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 1392 |   have "f -` {x\<in>space N. \<not> P x} \<inter> space M = {x \<in> space M. \<not> P (f x)}"
 | 
| 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 1393 | using f[THEN measurable_space] by auto | 
| 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 1394 |   then show "(emeasure (distr M N f) {x \<in> space (distr M N f). \<not> P x} = 0) =
 | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1395 |     (emeasure M {x \<in> space M. \<not> P (f x)} = 0)"
 | 
| 50002 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 1396 | by (simp add: emeasure_distr) | 
| 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 1397 | qed auto | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1398 | |
| 47694 | 1399 | lemma null_sets_distr_iff: | 
| 1400 | "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" | |
| 50002 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 1401 | by (auto simp add: null_sets_def emeasure_distr) | 
| 47694 | 1402 | |
| 1403 | lemma distr_distr: | |
| 50002 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 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)" | 
| 
ce0d316b5b44
add measurability prover; add support for Borel sets
 hoelzl parents: 
50001diff
changeset | 1405 | by (auto simp add: emeasure_distr measurable_space | 
| 47694 | 1406 | intro!: arg_cong[where f="emeasure M"] measure_eqI) | 
| 1407 | ||
| 61808 | 1408 | subsection \<open>Real measure values\<close> | 
| 47694 | 1409 | |
| 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) | |
| 1412 | ||
| 59000 | 1413 | lemma measure_le_0_iff: "measure M X \<le> 0 \<longleftrightarrow> measure M X = 0" | 
| 1414 | using measure_nonneg[of M X] by auto | |
| 1415 | ||
| 47694 | 1416 | lemma measure_empty[simp]: "measure M {} = 0"
 | 
| 1417 | unfolding measure_def by simp | |
| 1418 | ||
| 1419 | lemma emeasure_eq_ereal_measure: | |
| 1420 | "emeasure M A \<noteq> \<infinity> \<Longrightarrow> emeasure M A = ereal (measure M A)" | |
| 1421 | using emeasure_nonneg[of M A] | |
| 1422 | by (cases "emeasure M A") (auto simp: measure_def) | |
| 1423 | ||
| 61633 | 1424 | lemma max_0_ereal_measure [simp]: "max 0 (ereal (measure M X)) = ereal (measure M X)" | 
| 1425 | by(simp add: max_def measure_nonneg) | |
| 1426 | ||
| 47694 | 1427 | lemma measure_Union: | 
| 1428 | assumes finite: "emeasure M A \<noteq> \<infinity>" "emeasure M B \<noteq> \<infinity>" | |
| 1429 |   and measurable: "A \<in> sets M" "B \<in> sets M" "A \<inter> B = {}"
 | |
| 1430 | shows "measure M (A \<union> B) = measure M A + measure M B" | |
| 1431 | unfolding measure_def | |
| 1432 | using plus_emeasure[OF measurable, symmetric] finite | |
| 1433 | by (simp add: emeasure_eq_ereal_measure) | |
| 1434 | ||
| 1435 | lemma measure_finite_Union: | |
| 1436 | assumes measurable: "A`S \<subseteq> sets M" "disjoint_family_on A S" "finite S" | |
| 1437 | assumes finite: "\<And>i. i \<in> S \<Longrightarrow> emeasure M (A i) \<noteq> \<infinity>" | |
| 1438 | shows "measure M (\<Union>i\<in>S. A i) = (\<Sum>i\<in>S. measure M (A i))" | |
| 1439 | unfolding measure_def | |
| 1440 | using setsum_emeasure[OF measurable, symmetric] finite | |
| 1441 | by (simp add: emeasure_eq_ereal_measure) | |
| 1442 | ||
| 1443 | lemma measure_Diff: | |
| 1444 | assumes finite: "emeasure M A \<noteq> \<infinity>" | |
| 1445 | and measurable: "A \<in> sets M" "B \<in> sets M" "B \<subseteq> A" | |
| 1446 | shows "measure M (A - B) = measure M A - measure M B" | |
| 1447 | proof - | |
| 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) | |
| 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 | |
| 61808 | 1452 | thus ?thesis using \<open>B \<subseteq> A\<close> by (auto simp: Un_absorb2) | 
| 47694 | 1453 | qed | 
| 1454 | ||
| 1455 | lemma measure_UNION: | |
| 1456 | assumes measurable: "range A \<subseteq> sets M" "disjoint_family A" | |
| 1457 | assumes finite: "emeasure M (\<Union>i. A i) \<noteq> \<infinity>" | |
| 1458 | shows "(\<lambda>i. measure M (A i)) sums (measure M (\<Union>i. A i))" | |
| 1459 | proof - | |
| 1460 | from summable_sums[OF summable_ereal_pos, of "\<lambda>i. emeasure M (A i)"] | |
| 1461 | suminf_emeasure[OF measurable] emeasure_nonneg[of M] | |
| 1462 | have "(\<lambda>i. emeasure M (A i)) sums (emeasure M (\<Union>i. A i))" by simp | |
| 1463 | moreover | |
| 1464 |   { fix i
 | |
| 1465 | have "emeasure M (A i) \<le> emeasure M (\<Union>i. A i)" | |
| 1466 | using measurable by (auto intro!: emeasure_mono) | |
| 1467 | then have "emeasure M (A i) = ereal ((measure M (A i)))" | |
| 1468 | using finite by (intro emeasure_eq_ereal_measure) auto } | |
| 1469 | ultimately show ?thesis using finite | |
| 1470 | unfolding sums_ereal[symmetric] by (simp add: emeasure_eq_ereal_measure) | |
| 1471 | qed | |
| 1472 | ||
| 1473 | lemma measure_subadditive: | |
| 1474 | assumes measurable: "A \<in> sets M" "B \<in> sets M" | |
| 1475 | and fin: "emeasure M A \<noteq> \<infinity>" "emeasure M B \<noteq> \<infinity>" | |
| 1476 | shows "(measure M (A \<union> B)) \<le> (measure M A) + (measure M B)" | |
| 1477 | proof - | |
| 1478 | have "emeasure M (A \<union> B) \<noteq> \<infinity>" | |
| 1479 | using emeasure_subadditive[OF measurable] fin by auto | |
| 1480 | then show "(measure M (A \<union> B)) \<le> (measure M A) + (measure M B)" | |
| 1481 | using emeasure_subadditive[OF measurable] fin | |
| 1482 | by (auto simp: emeasure_eq_ereal_measure) | |
| 1483 | qed | |
| 1484 | ||
| 1485 | lemma measure_subadditive_finite: | |
| 1486 | assumes A: "finite I" "A`I \<subseteq> sets M" and fin: "\<And>i. i \<in> I \<Longrightarrow> emeasure M (A i) \<noteq> \<infinity>" | |
| 1487 | shows "measure M (\<Union>i\<in>I. A i) \<le> (\<Sum>i\<in>I. measure M (A i))" | |
| 1488 | proof - | |
| 1489 |   { have "emeasure M (\<Union>i\<in>I. A i) \<le> (\<Sum>i\<in>I. emeasure M (A i))"
 | |
| 1490 | using emeasure_subadditive_finite[OF A] . | |
| 1491 | also have "\<dots> < \<infinity>" | |
| 1492 | using fin by (simp add: setsum_Pinfty) | |
| 1493 | finally have "emeasure M (\<Union>i\<in>I. A i) \<noteq> \<infinity>" by simp } | |
| 1494 | then show ?thesis | |
| 1495 | using emeasure_subadditive_finite[OF A] fin | |
| 1496 | unfolding measure_def by (simp add: emeasure_eq_ereal_measure suminf_ereal measure_nonneg) | |
| 1497 | qed | |
| 1498 | ||
| 1499 | lemma measure_subadditive_countably: | |
| 1500 | assumes A: "range A \<subseteq> sets M" and fin: "(\<Sum>i. emeasure M (A i)) \<noteq> \<infinity>" | |
| 1501 | shows "measure M (\<Union>i. A i) \<le> (\<Sum>i. measure M (A i))" | |
| 1502 | proof - | |
| 1503 | from emeasure_nonneg fin have "\<And>i. emeasure M (A i) \<noteq> \<infinity>" by (rule suminf_PInfty) | |
| 1504 | moreover | |
| 1505 |   { have "emeasure M (\<Union>i. A i) \<le> (\<Sum>i. emeasure M (A i))"
 | |
| 1506 | using emeasure_subadditive_countably[OF A] . | |
| 1507 | also have "\<dots> < \<infinity>" | |
| 1508 | using fin by simp | |
| 1509 | finally have "emeasure M (\<Union>i. A i) \<noteq> \<infinity>" by simp } | |
| 1510 | ultimately show ?thesis | |
| 1511 | using emeasure_subadditive_countably[OF A] fin | |
| 1512 | unfolding measure_def by (simp add: emeasure_eq_ereal_measure suminf_ereal measure_nonneg) | |
| 1513 | qed | |
| 1514 | ||
| 1515 | lemma measure_eq_setsum_singleton: | |
| 1516 |   assumes S: "finite S" "\<And>x. x \<in> S \<Longrightarrow> {x} \<in> sets M"
 | |
| 1517 |   and fin: "\<And>x. x \<in> S \<Longrightarrow> emeasure M {x} \<noteq> \<infinity>"
 | |
| 1518 |   shows "(measure M S) = (\<Sum>x\<in>S. (measure M {x}))"
 | |
| 1519 | unfolding measure_def | |
| 1520 | using emeasure_eq_setsum_singleton[OF S] fin | |
| 1521 | by simp (simp add: emeasure_eq_ereal_measure) | |
| 1522 | ||
| 1523 | lemma Lim_measure_incseq: | |
| 1524 | assumes A: "range A \<subseteq> sets M" "incseq A" and fin: "emeasure M (\<Union>i. A i) \<noteq> \<infinity>" | |
| 1525 | shows "(\<lambda>i. (measure M (A i))) ----> (measure M (\<Union>i. A i))" | |
| 1526 | proof - | |
| 1527 | have "ereal ((measure M (\<Union>i. A i))) = emeasure M (\<Union>i. A i)" | |
| 1528 | using fin by (auto simp: emeasure_eq_ereal_measure) | |
| 1529 | then show ?thesis | |
| 1530 | using Lim_emeasure_incseq[OF A] | |
| 1531 | unfolding measure_def | |
| 1532 | by (intro lim_real_of_ereal) simp | |
| 1533 | qed | |
| 1534 | ||
| 1535 | lemma Lim_measure_decseq: | |
| 1536 | assumes A: "range A \<subseteq> sets M" "decseq A" and fin: "\<And>i. emeasure M (A i) \<noteq> \<infinity>" | |
| 1537 | shows "(\<lambda>n. measure M (A n)) ----> measure M (\<Inter>i. A i)" | |
| 1538 | proof - | |
| 1539 | have "emeasure M (\<Inter>i. A i) \<le> emeasure M (A 0)" | |
| 1540 | using A by (auto intro!: emeasure_mono) | |
| 1541 | also have "\<dots> < \<infinity>" | |
| 1542 | using fin[of 0] by auto | |
| 1543 | finally have "ereal ((measure M (\<Inter>i. A i))) = emeasure M (\<Inter>i. A i)" | |
| 1544 | by (auto simp: emeasure_eq_ereal_measure) | |
| 1545 | then show ?thesis | |
| 1546 | unfolding measure_def | |
| 1547 | using Lim_emeasure_decseq[OF A fin] | |
| 1548 | by (intro lim_real_of_ereal) simp | |
| 1549 | qed | |
| 1550 | ||
| 61808 | 1551 | subsection \<open>Measure spaces with @{term "emeasure M (space M) < \<infinity>"}\<close>
 | 
| 47694 | 1552 | |
| 1553 | locale finite_measure = sigma_finite_measure M for M + | |
| 1554 | assumes finite_emeasure_space: "emeasure M (space M) \<noteq> \<infinity>" | |
| 1555 | ||
| 1556 | lemma finite_measureI[Pure.intro!]: | |
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1557 | "emeasure M (space M) \<noteq> \<infinity> \<Longrightarrow> finite_measure M" | 
| 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1558 |   proof qed (auto intro!: exI[of _ "{space M}"])
 | 
| 47694 | 1559 | |
| 1560 | lemma (in finite_measure) emeasure_finite[simp, intro]: "emeasure M A \<noteq> \<infinity>" | |
| 1561 | using finite_emeasure_space emeasure_space[of M A] by auto | |
| 1562 | ||
| 1563 | lemma (in finite_measure) emeasure_eq_measure: "emeasure M A = ereal (measure M A)" | |
| 1564 | unfolding measure_def by (simp add: emeasure_eq_ereal_measure) | |
| 1565 | ||
| 1566 | lemma (in finite_measure) emeasure_real: "\<exists>r. 0 \<le> r \<and> emeasure M A = ereal r" | |
| 1567 | using emeasure_finite[of A] emeasure_nonneg[of M A] by (cases "emeasure M A") auto | |
| 1568 | ||
| 1569 | lemma (in finite_measure) bounded_measure: "measure M A \<le> measure M (space M)" | |
| 1570 | using emeasure_space[of M A] emeasure_real[of A] emeasure_real[of "space M"] by (auto simp: measure_def) | |
| 1571 | ||
| 1572 | lemma (in finite_measure) finite_measure_Diff: | |
| 1573 | assumes sets: "A \<in> sets M" "B \<in> sets M" and "B \<subseteq> A" | |
| 1574 | shows "measure M (A - B) = measure M A - measure M B" | |
| 1575 | using measure_Diff[OF _ assms] by simp | |
| 1576 | ||
| 1577 | lemma (in finite_measure) finite_measure_Union: | |
| 1578 |   assumes sets: "A \<in> sets M" "B \<in> sets M" and "A \<inter> B = {}"
 | |
| 1579 | shows "measure M (A \<union> B) = measure M A + measure M B" | |
| 1580 | using measure_Union[OF _ _ assms] by simp | |
| 1581 | ||
| 1582 | lemma (in finite_measure) finite_measure_finite_Union: | |
| 1583 | assumes measurable: "A`S \<subseteq> sets M" "disjoint_family_on A S" "finite S" | |
| 1584 | shows "measure M (\<Union>i\<in>S. A i) = (\<Sum>i\<in>S. measure M (A i))" | |
| 1585 | using measure_finite_Union[OF assms] by simp | |
| 1586 | ||
| 1587 | lemma (in finite_measure) finite_measure_UNION: | |
| 1588 | assumes A: "range A \<subseteq> sets M" "disjoint_family A" | |
| 1589 | shows "(\<lambda>i. measure M (A i)) sums (measure M (\<Union>i. A i))" | |
| 1590 | using measure_UNION[OF A] by simp | |
| 1591 | ||
| 1592 | lemma (in finite_measure) finite_measure_mono: | |
| 1593 | assumes "A \<subseteq> B" "B \<in> sets M" shows "measure M A \<le> measure M B" | |
| 1594 | using emeasure_mono[OF assms] emeasure_real[of A] emeasure_real[of B] by (auto simp: measure_def) | |
| 1595 | ||
| 1596 | lemma (in finite_measure) finite_measure_subadditive: | |
| 1597 | assumes m: "A \<in> sets M" "B \<in> sets M" | |
| 1598 | shows "measure M (A \<union> B) \<le> measure M A + measure M B" | |
| 1599 | using measure_subadditive[OF m] by simp | |
| 1600 | ||
| 1601 | lemma (in finite_measure) finite_measure_subadditive_finite: | |
| 1602 | assumes "finite I" "A`I \<subseteq> sets M" shows "measure M (\<Union>i\<in>I. A i) \<le> (\<Sum>i\<in>I. measure M (A i))" | |
| 1603 | using measure_subadditive_finite[OF assms] by simp | |
| 1604 | ||
| 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))" | |
| 1607 | shows "measure M (\<Union>i. A i) \<le> (\<Sum>i. measure M (A i))" | |
| 1608 | proof - | |
| 61808 | 1609 | from \<open>summable (\<lambda>i. measure M (A i))\<close> | 
| 47694 | 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) | |
| 1612 | from sums_unique[OF this, symmetric] | |
| 1613 | measure_subadditive_countably[OF A] | |
| 1614 | show ?thesis by (simp add: emeasure_eq_measure) | |
| 1615 | qed | |
| 1616 | ||
| 1617 | lemma (in finite_measure) finite_measure_eq_setsum_singleton: | |
| 1618 |   assumes "finite S" and *: "\<And>x. x \<in> S \<Longrightarrow> {x} \<in> sets M"
 | |
| 1619 |   shows "measure M S = (\<Sum>x\<in>S. measure M {x})"
 | |
| 1620 | using measure_eq_setsum_singleton[OF assms] by simp | |
| 1621 | ||
| 1622 | lemma (in finite_measure) finite_Lim_measure_incseq: | |
| 1623 | assumes A: "range A \<subseteq> sets M" "incseq A" | |
| 1624 | shows "(\<lambda>i. measure M (A i)) ----> measure M (\<Union>i. A i)" | |
| 1625 | using Lim_measure_incseq[OF A] by simp | |
| 1626 | ||
| 1627 | lemma (in finite_measure) finite_Lim_measure_decseq: | |
| 1628 | assumes A: "range A \<subseteq> sets M" "decseq A" | |
| 1629 | shows "(\<lambda>n. measure M (A n)) ----> measure M (\<Inter>i. A i)" | |
| 1630 | using Lim_measure_decseq[OF A] by simp | |
| 1631 | ||
| 1632 | lemma (in finite_measure) finite_measure_compl: | |
| 1633 | assumes S: "S \<in> sets M" | |
| 1634 | shows "measure M (space M - S) = measure M (space M) - measure M S" | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50104diff
changeset | 1635 | using measure_Diff[OF _ sets.top S sets.sets_into_space] S by simp | 
| 47694 | 1636 | |
| 1637 | lemma (in finite_measure) finite_measure_mono_AE: | |
| 1638 | assumes imp: "AE x in M. x \<in> A \<longrightarrow> x \<in> B" and B: "B \<in> sets M" | |
| 1639 | shows "measure M A \<le> measure M B" | |
| 1640 | using assms emeasure_mono_AE[OF imp B] | |
| 1641 | by (simp add: emeasure_eq_measure) | |
| 1642 | ||
| 1643 | lemma (in finite_measure) finite_measure_eq_AE: | |
| 1644 | assumes iff: "AE x in M. x \<in> A \<longleftrightarrow> x \<in> B" | |
| 1645 | assumes A: "A \<in> sets M" and B: "B \<in> sets M" | |
| 1646 | shows "measure M A = measure M B" | |
| 1647 | using assms emeasure_eq_AE[OF assms] by (simp add: emeasure_eq_measure) | |
| 1648 | ||
| 50104 | 1649 | lemma (in finite_measure) measure_increasing: "increasing M (measure M)" | 
| 1650 | by (auto intro!: finite_measure_mono simp: increasing_def) | |
| 1651 | ||
| 1652 | lemma (in finite_measure) measure_zero_union: | |
| 1653 | assumes "s \<in> sets M" "t \<in> sets M" "measure M t = 0" | |
| 1654 | shows "measure M (s \<union> t) = measure M s" | |
| 1655 | using assms | |
| 1656 | proof - | |
| 1657 | have "measure M (s \<union> t) \<le> measure M s" | |
| 1658 | using finite_measure_subadditive[of s t] assms by auto | |
| 1659 | moreover have "measure M (s \<union> t) \<ge> measure M s" | |
| 1660 | using assms by (blast intro: finite_measure_mono) | |
| 1661 | ultimately show ?thesis by simp | |
| 1662 | qed | |
| 1663 | ||
| 1664 | lemma (in finite_measure) measure_eq_compl: | |
| 1665 | assumes "s \<in> sets M" "t \<in> sets M" | |
| 1666 | assumes "measure M (space M - s) = measure M (space M - t)" | |
| 1667 | shows "measure M s = measure M t" | |
| 1668 | using assms finite_measure_compl by auto | |
| 1669 | ||
| 1670 | lemma (in finite_measure) measure_eq_bigunion_image: | |
| 1671 | assumes "range f \<subseteq> sets M" "range g \<subseteq> sets M" | |
| 1672 | assumes "disjoint_family f" "disjoint_family g" | |
| 1673 | assumes "\<And> n :: nat. measure M (f n) = measure M (g n)" | |
| 60585 | 1674 | shows "measure M (\<Union>i. f i) = measure M (\<Union>i. g i)" | 
| 50104 | 1675 | using assms | 
| 1676 | proof - | |
| 60585 | 1677 | have a: "(\<lambda> i. measure M (f i)) sums (measure M (\<Union>i. f i))" | 
| 50104 | 1678 | by (rule finite_measure_UNION[OF assms(1,3)]) | 
| 60585 | 1679 | have b: "(\<lambda> i. measure M (g i)) sums (measure M (\<Union>i. g i))" | 
| 50104 | 1680 | by (rule finite_measure_UNION[OF assms(2,4)]) | 
| 1681 | show ?thesis using sums_unique[OF b] sums_unique[OF a] assms by simp | |
| 1682 | qed | |
| 1683 | ||
| 1684 | lemma (in finite_measure) measure_countably_zero: | |
| 1685 | assumes "range c \<subseteq> sets M" | |
| 1686 | assumes "\<And> i. measure M (c i) = 0" | |
| 60585 | 1687 | shows "measure M (\<Union>i :: nat. c i) = 0" | 
| 50104 | 1688 | proof (rule antisym) | 
| 60585 | 1689 | show "measure M (\<Union>i :: nat. c i) \<le> 0" | 
| 50104 | 1690 | using finite_measure_subadditive_countably[OF assms(1)] by (simp add: assms(2)) | 
| 1691 | qed (simp add: measure_nonneg) | |
| 1692 | ||
| 1693 | lemma (in finite_measure) measure_space_inter: | |
| 1694 | assumes events:"s \<in> sets M" "t \<in> sets M" | |
| 1695 | assumes "measure M t = measure M (space M)" | |
| 1696 | shows "measure M (s \<inter> t) = measure M s" | |
| 1697 | proof - | |
| 1698 | have "measure M ((space M - s) \<union> (space M - t)) = measure M (space M - s)" | |
| 1699 | using events assms finite_measure_compl[of "t"] by (auto intro!: measure_zero_union) | |
| 1700 | also have "(space M - s) \<union> (space M - t) = space M - (s \<inter> t)" | |
| 1701 | by blast | |
| 1702 | finally show "measure M (s \<inter> t) = measure M s" | |
| 1703 | using events by (auto intro!: measure_eq_compl[of "s \<inter> t" s]) | |
| 1704 | qed | |
| 1705 | ||
| 1706 | lemma (in finite_measure) measure_equiprobable_finite_unions: | |
| 1707 |   assumes s: "finite s" "\<And>x. x \<in> s \<Longrightarrow> {x} \<in> sets M"
 | |
| 1708 |   assumes "\<And> x y. \<lbrakk>x \<in> s; y \<in> s\<rbrakk> \<Longrightarrow> measure M {x} = measure M {y}"
 | |
| 1709 |   shows "measure M s = real (card s) * measure M {SOME x. x \<in> s}"
 | |
| 1710 | proof cases | |
| 1711 |   assume "s \<noteq> {}"
 | |
| 1712 | then have "\<exists> x. x \<in> s" by blast | |
| 1713 | from someI_ex[OF this] assms | |
| 1714 |   have prob_some: "\<And> x. x \<in> s \<Longrightarrow> measure M {x} = measure M {SOME y. y \<in> s}" by blast
 | |
| 1715 |   have "measure M s = (\<Sum> x \<in> s. measure M {x})"
 | |
| 1716 | using finite_measure_eq_setsum_singleton[OF s] by simp | |
| 1717 |   also have "\<dots> = (\<Sum> x \<in> s. measure M {SOME y. y \<in> s})" using prob_some by auto
 | |
| 1718 |   also have "\<dots> = real (card s) * measure M {(SOME x. x \<in> s)}"
 | |
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 1719 | using setsum_constant assms by simp | 
| 50104 | 1720 | finally show ?thesis by simp | 
| 1721 | qed simp | |
| 1722 | ||
| 1723 | lemma (in finite_measure) measure_real_sum_image_fn: | |
| 1724 | assumes "e \<in> sets M" | |
| 1725 | assumes "\<And> x. x \<in> s \<Longrightarrow> e \<inter> f x \<in> sets M" | |
| 1726 | assumes "finite s" | |
| 1727 |   assumes disjoint: "\<And> x y. \<lbrakk>x \<in> s ; y \<in> s ; x \<noteq> y\<rbrakk> \<Longrightarrow> f x \<inter> f y = {}"
 | |
| 60585 | 1728 | assumes upper: "space M \<subseteq> (\<Union>i \<in> s. f i)" | 
| 50104 | 1729 | shows "measure M e = (\<Sum> x \<in> s. measure M (e \<inter> f x))" | 
| 1730 | proof - | |
| 60585 | 1731 | have e: "e = (\<Union>i \<in> s. e \<inter> f i)" | 
| 61808 | 1732 | using \<open>e \<in> sets M\<close> sets.sets_into_space upper by blast | 
| 60585 | 1733 | hence "measure M e = measure M (\<Union>i \<in> s. e \<inter> f i)" by simp | 
| 50104 | 1734 | also have "\<dots> = (\<Sum> x \<in> s. measure M (e \<inter> f x))" | 
| 1735 | proof (rule finite_measure_finite_Union) | |
| 1736 | show "finite s" by fact | |
| 1737 | show "(\<lambda>i. e \<inter> f i)`s \<subseteq> sets M" using assms(2) by auto | |
| 1738 | show "disjoint_family_on (\<lambda>i. e \<inter> f i) s" | |
| 1739 | using disjoint by (auto simp: disjoint_family_on_def) | |
| 1740 | qed | |
| 1741 | finally show ?thesis . | |
| 1742 | qed | |
| 1743 | ||
| 1744 | lemma (in finite_measure) measure_exclude: | |
| 1745 | assumes "A \<in> sets M" "B \<in> sets M" | |
| 1746 |   assumes "measure M A = measure M (space M)" "A \<inter> B = {}"
 | |
| 1747 | shows "measure M B = 0" | |
| 1748 | using measure_space_inter[of B A] assms by (auto simp: ac_simps) | |
| 57235 
b0b9a10e4bf4
properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
 hoelzl parents: 
57137diff
changeset | 1749 | lemma (in finite_measure) finite_measure_distr: | 
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 1750 | assumes f: "f \<in> measurable M M'" | 
| 57235 
b0b9a10e4bf4
properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
 hoelzl parents: 
57137diff
changeset | 1751 | shows "finite_measure (distr M M' f)" | 
| 
b0b9a10e4bf4
properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
 hoelzl parents: 
57137diff
changeset | 1752 | proof (rule finite_measureI) | 
| 
b0b9a10e4bf4
properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
 hoelzl parents: 
57137diff
changeset | 1753 | have "f -` space M' \<inter> space M = space M" using f by (auto dest: measurable_space) | 
| 
b0b9a10e4bf4
properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
 hoelzl parents: 
57137diff
changeset | 1754 | with f show "emeasure (distr M M' f) (space (distr M M' f)) \<noteq> \<infinity>" by (auto simp: emeasure_distr) | 
| 
b0b9a10e4bf4
properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
 hoelzl parents: 
57137diff
changeset | 1755 | qed | 
| 
b0b9a10e4bf4
properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
 hoelzl parents: 
57137diff
changeset | 1756 | |
| 60636 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1757 | lemma emeasure_gfp[consumes 1, case_names cont measurable]: | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1758 | assumes sets[simp]: "\<And>s. sets (M s) = sets N" | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1759 | assumes "\<And>s. finite_measure (M s)" | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1760 | assumes cont: "inf_continuous F" "inf_continuous f" | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1761 | assumes meas: "\<And>P. Measurable.pred N P \<Longrightarrow> Measurable.pred N (F P)" | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1762 |   assumes iter: "\<And>P s. Measurable.pred N P \<Longrightarrow> emeasure (M s) {x\<in>space N. F P x} = f (\<lambda>s. emeasure (M s) {x\<in>space N. P x}) s"
 | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1763 | assumes bound: "\<And>P. f P \<le> f (\<lambda>s. emeasure (M s) (space (M s)))" | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1764 |   shows "emeasure (M s) {x\<in>space N. gfp F x} = gfp f s"
 | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1765 | proof (subst gfp_transfer_bounded[where \<alpha>="\<lambda>F s. emeasure (M s) {x\<in>space N. F x}" and g=f and f=F and
 | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1766 | P="Measurable.pred N", symmetric]) | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1767 | interpret finite_measure "M s" for s by fact | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1768 | fix C assume "decseq C" "\<And>i. Measurable.pred N (C i)" | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1769 |   then show "(\<lambda>s. emeasure (M s) {x \<in> space N. (INF i. C i) x}) = (INF i. (\<lambda>s. emeasure (M s) {x \<in> space N. C i x}))"
 | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1770 | unfolding INF_apply[abs_def] | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1771 | by (subst INF_emeasure_decseq) (auto simp: antimono_def fun_eq_iff intro!: arg_cong2[where f=emeasure]) | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1772 | next | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1773 |   show "f x \<le> (\<lambda>s. emeasure (M s) {x \<in> space N. F top x})" for x
 | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1774 | using bound[of x] sets_eq_imp_space_eq[OF sets] by (simp add: iter) | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1775 | qed (auto simp add: iter le_fun_def INF_apply[abs_def] intro!: meas cont) | 
| 
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
 hoelzl parents: 
60585diff
changeset | 1776 | |
| 61808 | 1777 | subsection \<open>Counting space\<close> | 
| 47694 | 1778 | |
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1779 | lemma strict_monoI_Suc: | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1780 | assumes ord [simp]: "(\<And>n. f n < f (Suc n))" shows "strict_mono f" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1781 | unfolding strict_mono_def | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1782 | proof safe | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1783 | fix n m :: nat assume "n < m" then show "f n < f m" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1784 | by (induct m) (auto simp: less_Suc_eq intro: less_trans ord) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1785 | qed | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1786 | |
| 47694 | 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>)" | |
| 1789 | (is "_ = ?M X") | |
| 1790 | unfolding count_space_def | |
| 1791 | proof (rule emeasure_measure_of_sigma) | |
| 61808 | 1792 | show "X \<in> Pow A" using \<open>X \<subseteq> A\<close> by auto | 
| 47694 | 1793 | show "sigma_algebra A (Pow A)" by (rule sigma_algebra_Pow) | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1794 | show positive: "positive (Pow A) ?M" | 
| 47694 | 1795 | by (auto simp: positive_def) | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1796 | have additive: "additive (Pow A) ?M" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1797 | by (auto simp: card_Un_disjoint additive_def) | 
| 47694 | 1798 | |
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1799 | interpret ring_of_sets A "Pow A" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1800 | by (rule ring_of_setsI) auto | 
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 1801 | show "countably_additive (Pow A) ?M" | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1802 | unfolding countably_additive_iff_continuous_from_below[OF positive additive] | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1803 | proof safe | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1804 | fix F :: "nat \<Rightarrow> 'a set" assume "incseq F" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1805 | show "(\<lambda>i. ?M (F i)) ----> ?M (\<Union>i. F i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1806 | proof cases | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1807 | assume "\<exists>i. \<forall>j\<ge>i. F i = F j" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1808 | then guess i .. note i = this | 
| 61808 | 1809 |       { fix j from i \<open>incseq F\<close> have "F j \<subseteq> F i"
 | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1810 | by (cases "i \<le> j") (auto simp: incseq_def) } | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1811 | then have eq: "(\<Union>i. F i) = F i" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1812 | by auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1813 | with i show ?thesis | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1814 | by (auto intro!: Lim_eventually eventually_sequentiallyI[where c=i]) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1815 | next | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1816 | assume "\<not> (\<exists>i. \<forall>j\<ge>i. F i = F j)" | 
| 53374 
a14d2a854c02
tuned proofs -- clarified flow of facts wrt. calculation;
 wenzelm parents: 
51351diff
changeset | 1817 | then obtain f where f: "\<And>i. i \<le> f i" "\<And>i. F i \<noteq> F (f i)" by metis | 
| 61808 | 1818 | then have "\<And>i. F i \<subseteq> F (f i)" using \<open>incseq F\<close> by (auto simp: incseq_def) | 
| 53374 
a14d2a854c02
tuned proofs -- clarified flow of facts wrt. calculation;
 wenzelm parents: 
51351diff
changeset | 1819 | with f have *: "\<And>i. F i \<subset> F (f i)" by auto | 
| 47694 | 1820 | |
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1821 | have "incseq (\<lambda>i. ?M (F i))" | 
| 61808 | 1822 | using \<open>incseq F\<close> unfolding incseq_def by (auto simp: card_mono dest: finite_subset) | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1823 | then have "(\<lambda>i. ?M (F i)) ----> (SUP n. ?M (F n))" | 
| 51000 | 1824 | by (rule LIMSEQ_SUP) | 
| 47694 | 1825 | |
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1826 | moreover have "(SUP n. ?M (F n)) = \<infinity>" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1827 | proof (rule SUP_PInfty) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1828 | fix n :: nat show "\<exists>k::nat\<in>UNIV. ereal n \<le> ?M (F k)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1829 | proof (induct n) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1830 | case (Suc n) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1831 | then guess k .. note k = this | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1832 | moreover have "finite (F k) \<Longrightarrow> finite (F (f k)) \<Longrightarrow> card (F k) < card (F (f k))" | 
| 61808 | 1833 | using \<open>F k \<subset> F (f k)\<close> by (simp add: psubset_card_mono) | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1834 | moreover have "finite (F (f k)) \<Longrightarrow> finite (F k)" | 
| 61808 | 1835 | using \<open>k \<le> f k\<close> \<open>incseq F\<close> by (auto simp: incseq_def dest: finite_subset) | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1836 | ultimately show ?case | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1837 | by (auto intro!: exI[of _ "f k"]) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1838 | qed auto | 
| 47694 | 1839 | qed | 
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1840 | |
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1841 | moreover | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1842 | have "inj (\<lambda>n. F ((f ^^ n) 0))" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1843 | by (intro strict_mono_imp_inj_on strict_monoI_Suc) (simp add: *) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1844 | then have 1: "infinite (range (\<lambda>i. F ((f ^^ i) 0)))" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1845 | by (rule range_inj_infinite) | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1846 | have "infinite (Pow (\<Union>i. F i))" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1847 | by (rule infinite_super[OF _ 1]) auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1848 | then have "infinite (\<Union>i. F i)" | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1849 | by auto | 
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 1850 | |
| 49773 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1851 | ultimately show ?thesis by auto | 
| 
16907431e477
tuned measurable_If; moved countably_additive equalities to Measure_Space; tuned proofs
 hoelzl parents: 
47762diff
changeset | 1852 | qed | 
| 47694 | 1853 | qed | 
| 1854 | qed | |
| 1855 | ||
| 59011 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1856 | lemma distr_bij_count_space: | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1857 | assumes f: "bij_betw f A B" | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1858 | shows "distr (count_space A) (count_space B) f = count_space B" | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1859 | proof (rule measure_eqI) | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1860 | have f': "f \<in> measurable (count_space A) (count_space B)" | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1861 | using f unfolding Pi_def bij_betw_def by auto | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1862 | fix X assume "X \<in> sets (distr (count_space A) (count_space B) f)" | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1863 | then have X: "X \<in> sets (count_space B)" by auto | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1864 | moreover then have "f -` X \<inter> A = the_inv_into A f ` X" | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1865 | using f by (auto simp: bij_betw_def subset_image_iff image_iff the_inv_into_f_f intro: the_inv_into_f_f[symmetric]) | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1866 | moreover have "inj_on (the_inv_into A f) B" | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1867 | using X f by (auto simp: bij_betw_def inj_on_the_inv_into) | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1868 | with X have "inj_on (the_inv_into A f) X" | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1869 | by (auto intro: subset_inj_on) | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1870 | ultimately show "emeasure (distr (count_space A) (count_space B) f) X = emeasure (count_space B) X" | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1871 | using f unfolding emeasure_distr[OF f' X] | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1872 | by (subst (1 2) emeasure_count_space) (auto simp: card_image dest: finite_imageD) | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1873 | qed simp | 
| 
4902a2fec434
add reindex rules for distr and nn_integral on count_space
 hoelzl parents: 
59000diff
changeset | 1874 | |
| 47694 | 1875 | lemma emeasure_count_space_finite[simp]: | 
| 1876 | "X \<subseteq> A \<Longrightarrow> finite X \<Longrightarrow> emeasure (count_space A) X = ereal (card X)" | |
| 1877 | using emeasure_count_space[of X A] by simp | |
| 1878 | ||
| 1879 | lemma emeasure_count_space_infinite[simp]: | |
| 1880 | "X \<subseteq> A \<Longrightarrow> infinite X \<Longrightarrow> emeasure (count_space A) X = \<infinity>" | |
| 1881 | using emeasure_count_space[of X A] by simp | |
| 1882 | ||
| 58606 | 1883 | lemma measure_count_space: "measure (count_space A) X = (if X \<subseteq> A then card X else 0)" | 
| 1884 | unfolding measure_def | |
| 1885 | by (cases "finite X") (simp_all add: emeasure_notin_sets) | |
| 1886 | ||
| 47694 | 1887 | lemma emeasure_count_space_eq_0: | 
| 1888 |   "emeasure (count_space A) X = 0 \<longleftrightarrow> (X \<subseteq> A \<longrightarrow> X = {})"
 | |
| 1889 | proof cases | |
| 1890 | assume X: "X \<subseteq> A" | |
| 1891 | then show ?thesis | |
| 1892 | proof (intro iffI impI) | |
| 1893 | assume "emeasure (count_space A) X = 0" | |
| 1894 |     with X show "X = {}"
 | |
| 1895 | by (subst (asm) emeasure_count_space) (auto split: split_if_asm) | |
| 1896 | qed simp | |
| 1897 | qed (simp add: emeasure_notin_sets) | |
| 1898 | ||
| 58606 | 1899 | lemma space_empty: "space M = {} \<Longrightarrow> M = count_space {}"
 | 
| 1900 | by (rule measure_eqI) (simp_all add: space_empty_iff) | |
| 1901 | ||
| 47694 | 1902 | lemma null_sets_count_space: "null_sets (count_space A) = { {} }"
 | 
| 1903 | unfolding null_sets_def by (auto simp add: emeasure_count_space_eq_0) | |
| 1904 | ||
| 1905 | lemma AE_count_space: "(AE x in count_space A. P x) \<longleftrightarrow> (\<forall>x\<in>A. P x)" | |
| 1906 | unfolding eventually_ae_filter by (auto simp add: null_sets_count_space) | |
| 1907 | ||
| 57025 | 1908 | lemma sigma_finite_measure_count_space_countable: | 
| 1909 | assumes A: "countable A" | |
| 47694 | 1910 | shows "sigma_finite_measure (count_space A)" | 
| 57447 
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
 hoelzl parents: 
57446diff
changeset | 1911 |   proof qed (auto intro!: exI[of _ "(\<lambda>a. {a}) ` A"] simp: A)
 | 
| 47694 | 1912 | |
| 57025 | 1913 | lemma sigma_finite_measure_count_space: | 
| 1914 | fixes A :: "'a::countable set" shows "sigma_finite_measure (count_space A)" | |
| 1915 | by (rule sigma_finite_measure_count_space_countable) auto | |
| 1916 | ||
| 47694 | 1917 | lemma finite_measure_count_space: | 
| 1918 | assumes [simp]: "finite A" | |
| 1919 | shows "finite_measure (count_space A)" | |
| 1920 | by rule simp | |
| 1921 | ||
| 1922 | lemma sigma_finite_measure_count_space_finite: | |
| 1923 | assumes A: "finite A" shows "sigma_finite_measure (count_space A)" | |
| 1924 | proof - | |
| 1925 | interpret finite_measure "count_space A" using A by (rule finite_measure_count_space) | |
| 1926 | show "sigma_finite_measure (count_space A)" .. | |
| 1927 | qed | |
| 1928 | ||
| 61808 | 1929 | subsection \<open>Measure restricted to space\<close> | 
| 54417 | 1930 | |
| 1931 | lemma emeasure_restrict_space: | |
| 57025 | 1932 | assumes "\<Omega> \<inter> space M \<in> sets M" "A \<subseteq> \<Omega>" | 
| 54417 | 1933 | shows "emeasure (restrict_space M \<Omega>) A = emeasure M A" | 
| 1934 | proof cases | |
| 1935 | assume "A \<in> sets M" | |
| 57025 | 1936 | show ?thesis | 
| 54417 | 1937 | proof (rule emeasure_measure_of[OF restrict_space_def]) | 
| 57025 | 1938 | show "op \<inter> \<Omega> ` sets M \<subseteq> Pow (\<Omega> \<inter> space M)" "A \<in> sets (restrict_space M \<Omega>)" | 
| 61808 | 1939 | using \<open>A \<subseteq> \<Omega>\<close> \<open>A \<in> sets M\<close> sets.space_closed by (auto simp: sets_restrict_space) | 
| 57025 | 1940 | show "positive (sets (restrict_space M \<Omega>)) (emeasure M)" | 
| 54417 | 1941 | by (auto simp: positive_def emeasure_nonneg) | 
| 57025 | 1942 | show "countably_additive (sets (restrict_space M \<Omega>)) (emeasure M)" | 
| 54417 | 1943 | proof (rule countably_additiveI) | 
| 1944 | fix A :: "nat \<Rightarrow> _" assume "range A \<subseteq> sets (restrict_space M \<Omega>)" "disjoint_family A" | |
| 1945 | with assms have "\<And>i. A i \<in> sets M" "\<And>i. A i \<subseteq> space M" "disjoint_family A" | |
| 57025 | 1946 | by (fastforce simp: sets_restrict_space_iff[OF assms(1)] image_subset_iff | 
| 1947 | dest: sets.sets_into_space)+ | |
| 1948 | then show "(\<Sum>i. emeasure M (A i)) = emeasure M (\<Union>i. A i)" | |
| 54417 | 1949 | by (subst suminf_emeasure) (auto simp: disjoint_family_subset) | 
| 1950 | qed | |
| 1951 | qed | |
| 1952 | next | |
| 1953 | assume "A \<notin> sets M" | |
| 1954 | moreover with assms have "A \<notin> sets (restrict_space M \<Omega>)" | |
| 1955 | by (simp add: sets_restrict_space_iff) | |
| 1956 | ultimately show ?thesis | |
| 1957 | by (simp add: emeasure_notin_sets) | |
| 1958 | qed | |
| 1959 | ||
| 57137 | 1960 | lemma measure_restrict_space: | 
| 1961 | assumes "\<Omega> \<inter> space M \<in> sets M" "A \<subseteq> \<Omega>" | |
| 1962 | shows "measure (restrict_space M \<Omega>) A = measure M A" | |
| 1963 | using emeasure_restrict_space[OF assms] by (simp add: measure_def) | |
| 1964 | ||
| 1965 | lemma AE_restrict_space_iff: | |
| 1966 | assumes "\<Omega> \<inter> space M \<in> sets M" | |
| 1967 | shows "(AE x in restrict_space M \<Omega>. P x) \<longleftrightarrow> (AE x in M. x \<in> \<Omega> \<longrightarrow> P x)" | |
| 1968 | proof - | |
| 1969 | have ex_cong: "\<And>P Q f. (\<And>x. P x \<Longrightarrow> Q x) \<Longrightarrow> (\<And>x. Q x \<Longrightarrow> P (f x)) \<Longrightarrow> (\<exists>x. P x) \<longleftrightarrow> (\<exists>x. Q x)" | |
| 1970 | by auto | |
| 1971 |   { fix X assume X: "X \<in> sets M" "emeasure M X = 0"
 | |
| 1972 | then have "emeasure M (\<Omega> \<inter> space M \<inter> X) \<le> emeasure M X" | |
| 1973 | by (intro emeasure_mono) auto | |
| 1974 | then have "emeasure M (\<Omega> \<inter> space M \<inter> X) = 0" | |
| 1975 | using X by (auto intro!: antisym) } | |
| 1976 | with assms show ?thesis | |
| 1977 | unfolding eventually_ae_filter | |
| 1978 | by (auto simp add: space_restrict_space null_sets_def sets_restrict_space_iff | |
| 1979 | emeasure_restrict_space cong: conj_cong | |
| 1980 | intro!: ex_cong[where f="\<lambda>X. (\<Omega> \<inter> space M) \<inter> X"]) | |
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 1981 | qed | 
| 57137 | 1982 | |
| 57025 | 1983 | lemma restrict_restrict_space: | 
| 1984 | assumes "A \<inter> space M \<in> sets M" "B \<inter> space M \<in> sets M" | |
| 1985 | shows "restrict_space (restrict_space M A) B = restrict_space M (A \<inter> B)" (is "?l = ?r") | |
| 1986 | proof (rule measure_eqI[symmetric]) | |
| 1987 | show "sets ?r = sets ?l" | |
| 1988 | unfolding sets_restrict_space image_comp by (intro image_cong) auto | |
| 1989 | next | |
| 1990 | fix X assume "X \<in> sets (restrict_space M (A \<inter> B))" | |
| 1991 | then obtain Y where "Y \<in> sets M" "X = Y \<inter> A \<inter> B" | |
| 1992 | by (auto simp: sets_restrict_space) | |
| 1993 | with assms sets.Int[OF assms] show "emeasure ?r X = emeasure ?l X" | |
| 1994 | by (subst (1 2) emeasure_restrict_space) | |
| 1995 | (auto simp: space_restrict_space sets_restrict_space_iff emeasure_restrict_space ac_simps) | |
| 1996 | qed | |
| 1997 | ||
| 1998 | lemma restrict_count_space: "restrict_space (count_space B) A = count_space (A \<inter> B)" | |
| 54417 | 1999 | proof (rule measure_eqI) | 
| 57025 | 2000 | show "sets (restrict_space (count_space B) A) = sets (count_space (A \<inter> B))" | 
| 2001 | by (subst sets_restrict_space) auto | |
| 54417 | 2002 | moreover fix X assume "X \<in> sets (restrict_space (count_space B) A)" | 
| 57025 | 2003 | ultimately have "X \<subseteq> A \<inter> B" by auto | 
| 2004 | then show "emeasure (restrict_space (count_space B) A) X = emeasure (count_space (A \<inter> B)) X" | |
| 54417 | 2005 | by (cases "finite X") (auto simp add: emeasure_restrict_space) | 
| 2006 | qed | |
| 2007 | ||
| 60063 | 2008 | lemma sigma_finite_measure_restrict_space: | 
| 2009 | assumes "sigma_finite_measure M" | |
| 2010 | and A: "A \<in> sets M" | |
| 2011 | shows "sigma_finite_measure (restrict_space M A)" | |
| 2012 | proof - | |
| 2013 | interpret sigma_finite_measure M by fact | |
| 2014 | from sigma_finite_countable obtain C | |
| 2015 | where C: "countable C" "C \<subseteq> sets M" "(\<Union>C) = space M" "\<forall>a\<in>C. emeasure M a \<noteq> \<infinity>" | |
| 2016 | by blast | |
| 2017 | let ?C = "op \<inter> A ` C" | |
| 2018 | from C have "countable ?C" "?C \<subseteq> sets (restrict_space M A)" "(\<Union>?C) = space (restrict_space M A)" | |
| 2019 | by(auto simp add: sets_restrict_space space_restrict_space) | |
| 2020 |   moreover {
 | |
| 2021 | fix a | |
| 2022 | assume "a \<in> ?C" | |
| 2023 | then obtain a' where "a = A \<inter> a'" "a' \<in> C" .. | |
| 2024 | then have "emeasure (restrict_space M A) a \<le> emeasure M a'" | |
| 2025 | using A C by(auto simp add: emeasure_restrict_space intro: emeasure_mono) | |
| 2026 | also have "\<dots> < \<infinity>" using C(4)[rule_format, of a'] \<open>a' \<in> C\<close> by simp | |
| 2027 | finally have "emeasure (restrict_space M A) a \<noteq> \<infinity>" by simp } | |
| 2028 | ultimately show ?thesis | |
| 2029 | by unfold_locales (rule exI conjI|assumption|blast)+ | |
| 2030 | qed | |
| 2031 | ||
| 2032 | lemma finite_measure_restrict_space: | |
| 2033 | assumes "finite_measure M" | |
| 2034 | and A: "A \<in> sets M" | |
| 2035 | shows "finite_measure (restrict_space M A)" | |
| 2036 | proof - | |
| 2037 | interpret finite_measure M by fact | |
| 2038 | show ?thesis | |
| 2039 | by(rule finite_measureI)(simp add: emeasure_restrict_space A space_restrict_space) | |
| 2040 | qed | |
| 2041 | ||
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 2042 | lemma restrict_distr: | 
| 57137 | 2043 | assumes [measurable]: "f \<in> measurable M N" | 
| 2044 | assumes [simp]: "\<Omega> \<inter> space N \<in> sets N" and restrict: "f \<in> space M \<rightarrow> \<Omega>" | |
| 2045 | shows "restrict_space (distr M N f) \<Omega> = distr M (restrict_space N \<Omega>) f" | |
| 2046 | (is "?l = ?r") | |
| 2047 | proof (rule measure_eqI) | |
| 2048 | fix A assume "A \<in> sets (restrict_space (distr M N f) \<Omega>)" | |
| 2049 | with restrict show "emeasure ?l A = emeasure ?r A" | |
| 2050 | by (subst emeasure_distr) | |
| 2051 | (auto simp: sets_restrict_space_iff emeasure_restrict_space emeasure_distr | |
| 2052 | intro!: measurable_restrict_space2) | |
| 2053 | qed (simp add: sets_restrict_space) | |
| 2054 | ||
| 59000 | 2055 | lemma measure_eqI_restrict_generator: | 
| 2056 | assumes E: "Int_stable E" "E \<subseteq> Pow \<Omega>" "\<And>X. X \<in> E \<Longrightarrow> emeasure M X = emeasure N X" | |
| 2057 | assumes sets_eq: "sets M = sets N" and \<Omega>: "\<Omega> \<in> sets M" | |
| 2058 | assumes "sets (restrict_space M \<Omega>) = sigma_sets \<Omega> E" | |
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 2059 | assumes "sets (restrict_space N \<Omega>) = sigma_sets \<Omega> E" | 
| 59000 | 2060 | assumes ae: "AE x in M. x \<in> \<Omega>" "AE x in N. x \<in> \<Omega>" | 
| 2061 |   assumes A: "countable A" "A \<noteq> {}" "A \<subseteq> E" "\<Union>A = \<Omega>" "\<And>a. a \<in> A \<Longrightarrow> emeasure M a \<noteq> \<infinity>"
 | |
| 2062 | shows "M = N" | |
| 2063 | proof (rule measure_eqI) | |
| 2064 | fix X assume X: "X \<in> sets M" | |
| 2065 | then have "emeasure M X = emeasure (restrict_space M \<Omega>) (X \<inter> \<Omega>)" | |
| 2066 | using ae \<Omega> by (auto simp add: emeasure_restrict_space intro!: emeasure_eq_AE) | |
| 2067 | also have "restrict_space M \<Omega> = restrict_space N \<Omega>" | |
| 2068 | proof (rule measure_eqI_generator_eq) | |
| 2069 | fix X assume "X \<in> E" | |
| 2070 | then show "emeasure (restrict_space M \<Omega>) X = emeasure (restrict_space N \<Omega>) X" | |
| 2071 | using E \<Omega> by (subst (1 2) emeasure_restrict_space) (auto simp: sets_eq sets_eq[THEN sets_eq_imp_space_eq]) | |
| 2072 | next | |
| 2073 | show "range (from_nat_into A) \<subseteq> E" "(\<Union>i. from_nat_into A i) = \<Omega>" | |
| 2074 | unfolding Sup_image_eq[symmetric, where f="from_nat_into A"] using A by auto | |
| 2075 | next | |
| 2076 | fix i | |
| 2077 | have "emeasure (restrict_space M \<Omega>) (from_nat_into A i) = emeasure M (from_nat_into A i)" | |
| 2078 | using A \<Omega> by (subst emeasure_restrict_space) | |
| 2079 | (auto simp: sets_eq sets_eq[THEN sets_eq_imp_space_eq] intro: from_nat_into) | |
| 2080 | with A show "emeasure (restrict_space M \<Omega>) (from_nat_into A i) \<noteq> \<infinity>" | |
| 2081 | by (auto intro: from_nat_into) | |
| 2082 | qed fact+ | |
| 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) | |
| 2085 | finally show "emeasure M X = emeasure N X" . | |
| 2086 | qed fact | |
| 2087 | ||
| 61808 | 2088 | subsection \<open>Null measure\<close> | 
| 59425 | 2089 | |
| 2090 | definition "null_measure M = sigma (space M) (sets M)" | |
| 2091 | ||
| 2092 | lemma space_null_measure[simp]: "space (null_measure M) = space M" | |
| 2093 | by (simp add: null_measure_def) | |
| 2094 | ||
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 2095 | lemma sets_null_measure[simp, measurable_cong]: "sets (null_measure M) = sets M" | 
| 59425 | 2096 | by (simp add: null_measure_def) | 
| 2097 | ||
| 2098 | lemma emeasure_null_measure[simp]: "emeasure (null_measure M) X = 0" | |
| 2099 | by (cases "X \<in> sets M", rule emeasure_measure_of) | |
| 2100 | (auto simp: positive_def countably_additive_def emeasure_notin_sets null_measure_def | |
| 2101 | dest: sets.sets_into_space) | |
| 2102 | ||
| 2103 | lemma measure_null_measure[simp]: "measure (null_measure M) X = 0" | |
| 2104 | by (simp add: measure_def) | |
| 2105 | ||
| 61633 | 2106 | lemma null_measure_idem [simp]: "null_measure (null_measure M) = null_measure M" | 
| 2107 | by(rule measure_eqI) simp_all | |
| 2108 | ||
| 61634 | 2109 | subsection \<open>Scaling a measure\<close> | 
| 2110 | ||
| 2111 | definition scale_measure :: "real \<Rightarrow> 'a measure \<Rightarrow> 'a measure" | |
| 2112 | where "scale_measure r M = measure_of (space M) (sets M) (\<lambda>A. (max 0 r) * emeasure M A)" | |
| 2113 | ||
| 2114 | lemma space_scale_measure: "space (scale_measure r M) = space M" | |
| 2115 | by(simp add: scale_measure_def) | |
| 2116 | ||
| 2117 | lemma sets_scale_measure [simp, measurable_cong]: "sets (scale_measure r M) = sets M" | |
| 2118 | by(simp add: scale_measure_def) | |
| 2119 | ||
| 2120 | lemma emeasure_scale_measure [simp]: | |
| 2121 | "emeasure (scale_measure r M) A = max 0 r * emeasure M A" | |
| 2122 | (is "_ = ?\<mu> A") | |
| 2123 | proof(cases "A \<in> sets M") | |
| 2124 | case True | |
| 2125 | show ?thesis unfolding scale_measure_def | |
| 2126 | proof(rule emeasure_measure_of_sigma) | |
| 2127 | show "sigma_algebra (space M) (sets M)" .. | |
| 2128 | show "positive (sets M) ?\<mu>" by(simp add: positive_def emeasure_nonneg) | |
| 2129 | show "countably_additive (sets M) ?\<mu>" | |
| 2130 | proof (rule countably_additiveI) | |
| 2131 | fix A :: "nat \<Rightarrow> _" assume *: "range A \<subseteq> sets M" "disjoint_family A" | |
| 2132 | have "(\<Sum>i. ?\<mu> (A i)) = max 0 (ereal r) * (\<Sum>i. emeasure M (A i))" | |
| 2133 | by(rule suminf_cmult_ereal)(simp_all add: emeasure_nonneg) | |
| 2134 | also have "\<dots> = ?\<mu> (\<Union>i. A i)" using * by(simp add: suminf_emeasure) | |
| 2135 | finally show "(\<Sum>i. ?\<mu> (A i)) = ?\<mu> (\<Union>i. A i)" . | |
| 2136 | qed | |
| 2137 | qed(fact True) | |
| 2138 | qed(simp add: emeasure_notin_sets) | |
| 2139 | ||
| 2140 | lemma measure_scale_measure [simp]: "measure (scale_measure r M) A = max 0 r * measure M A" | |
| 2141 | by(simp add: measure_def max_def) | |
| 2142 | ||
| 2143 | lemma scale_measure_1 [simp]: "scale_measure 1 M = M" | |
| 2144 | by(rule measure_eqI)(simp_all add: max_def) | |
| 2145 | ||
| 2146 | lemma scale_measure_le_0: "r \<le> 0 \<Longrightarrow> scale_measure r M = null_measure M" | |
| 2147 | by(rule measure_eqI)(simp_all add: max_def) | |
| 2148 | ||
| 2149 | lemma scale_measure_0 [simp]: "scale_measure 0 M = null_measure M" | |
| 2150 | by(simp add: scale_measure_le_0) | |
| 2151 | ||
| 2152 | lemma scale_scale_measure [simp]: | |
| 2153 | "scale_measure r (scale_measure r' M) = scale_measure (max 0 r * max 0 r') M" | |
| 2154 | by(rule measure_eqI)(simp_all add: max_def mult.assoc times_ereal.simps(1)[symmetric] del: times_ereal.simps(1)) | |
| 2155 | ||
| 2156 | lemma scale_null_measure [simp]: "scale_measure r (null_measure M) = null_measure M" | |
| 2157 | by(rule measure_eqI) simp_all | |
| 2158 | ||
| 60772 | 2159 | subsection \<open>Measures form a chain-complete partial order\<close> | 
| 2160 | ||
| 2161 | instantiation measure :: (type) order_bot | |
| 2162 | begin | |
| 2163 | ||
| 2164 | definition bot_measure :: "'a measure" where | |
| 2165 |   "bot_measure = sigma {} {{}}"
 | |
| 2166 | ||
| 2167 | lemma space_bot[simp]: "space bot = {}"
 | |
| 2168 | unfolding bot_measure_def by (rule space_measure_of) auto | |
| 2169 | ||
| 2170 | lemma sets_bot[simp]: "sets bot = {{}}"
 | |
| 2171 | unfolding bot_measure_def by (subst sets_measure_of) auto | |
| 2172 | ||
| 2173 | lemma emeasure_bot[simp]: "emeasure bot = (\<lambda>x. 0)" | |
| 2174 | unfolding bot_measure_def by (rule emeasure_sigma) | |
| 2175 | ||
| 2176 | inductive less_eq_measure :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> bool" where | |
| 2177 | "sets N = sets M \<Longrightarrow> (\<And>A. A \<in> sets M \<Longrightarrow> emeasure M A \<le> emeasure N A) \<Longrightarrow> less_eq_measure M N" | |
| 2178 | | "less_eq_measure bot N" | |
| 2179 | ||
| 2180 | definition less_measure :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> bool" where | |
| 2181 | "less_measure M N \<longleftrightarrow> (M \<le> N \<and> \<not> N \<le> M)" | |
| 2182 | ||
| 2183 | instance | |
| 61166 
5976fe402824
renamed method "goals" to "goal_cases" to emphasize its meaning;
 wenzelm parents: 
60772diff
changeset | 2184 | proof (standard, goal_cases) | 
| 60772 | 2185 | case 1 then show ?case | 
| 2186 | unfolding less_measure_def .. | |
| 2187 | next | |
| 2188 | case (2 M) then show ?case | |
| 2189 | by (intro less_eq_measure.intros) auto | |
| 2190 | next | |
| 2191 | case (3 M N L) then show ?case | |
| 2192 | apply (safe elim!: less_eq_measure.cases) | |
| 2193 | apply (simp_all add: less_eq_measure.intros) | |
| 2194 | apply (rule less_eq_measure.intros) | |
| 2195 | apply simp | |
| 2196 | apply (blast intro: order_trans) [] | |
| 2197 | unfolding less_eq_measure.simps | |
| 2198 | apply (rule disjI2) | |
| 2199 | apply simp | |
| 2200 | apply (rule measure_eqI) | |
| 2201 | apply (auto intro!: antisym) | |
| 2202 | done | |
| 2203 | next | |
| 2204 | case (4 M N) then show ?case | |
| 2205 | apply (safe elim!: less_eq_measure.cases intro!: measure_eqI) | |
| 2206 | apply simp | |
| 2207 | apply simp | |
| 2208 | apply (blast intro: antisym) | |
| 2209 | apply (simp) | |
| 2210 | apply (blast intro: antisym) | |
| 2211 | apply simp | |
| 2212 | done | |
| 2213 | qed (rule less_eq_measure.intros) | |
| 47694 | 2214 | end | 
| 2215 | ||
| 60772 | 2216 | lemma le_emeasureD: "M \<le> N \<Longrightarrow> emeasure M A \<le> emeasure N A" | 
| 2217 | by (cases "A \<in> sets M") (auto elim!: less_eq_measure.cases simp: emeasure_notin_sets) | |
| 2218 | ||
| 2219 | lemma le_sets: "N \<le> M \<Longrightarrow> sets N \<le> sets M" | |
| 2220 | unfolding less_eq_measure.simps by auto | |
| 2221 | ||
| 2222 | instantiation measure :: (type) ccpo | |
| 2223 | begin | |
| 2224 | ||
| 2225 | definition Sup_measure :: "'a measure set \<Rightarrow> 'a measure" where | |
| 2226 | "Sup_measure A = measure_of (SUP a:A. space a) (SUP a:A. sets a) (SUP a:A. emeasure a)" | |
| 2227 | ||
| 2228 | lemma | |
| 2229 | assumes A: "Complete_Partial_Order.chain op \<le> A" and a: "a \<noteq> bot" "a \<in> A" | |
| 2230 | shows space_Sup: "space (Sup A) = space a" | |
| 2231 | and sets_Sup: "sets (Sup A) = sets a" | |
| 2232 | proof - | |
| 2233 | have sets: "(SUP a:A. sets a) = sets a" | |
| 2234 | proof (intro antisym SUP_least) | |
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 2235 | fix a' show "a' \<in> A \<Longrightarrow> sets a' \<subseteq> sets a" | 
| 60772 | 2236 | using a chainD[OF A, of a a'] by (auto elim!: less_eq_measure.cases) | 
| 2237 | qed (insert \<open>a\<in>A\<close>, auto) | |
| 2238 | have space: "(SUP a:A. space a) = space a" | |
| 2239 | proof (intro antisym SUP_least) | |
| 61609 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 paulson <lp15@cam.ac.uk> parents: 
61359diff
changeset | 2240 | fix a' show "a' \<in> A \<Longrightarrow> space a' \<subseteq> space a" | 
| 60772 | 2241 | using a chainD[OF A, of a a'] by (intro sets_le_imp_space_le) (auto elim!: less_eq_measure.cases) | 
| 2242 | qed (insert \<open>a\<in>A\<close>, auto) | |
| 2243 | show "space (Sup A) = space a" | |
| 2244 | unfolding Sup_measure_def sets space sets.space_measure_of_eq .. | |
| 2245 | show "sets (Sup A) = sets a" | |
| 2246 | unfolding Sup_measure_def sets space sets.sets_measure_of_eq .. | |
| 2247 | qed | |
| 2248 | ||
| 2249 | lemma emeasure_Sup: | |
| 2250 |   assumes A: "Complete_Partial_Order.chain op \<le> A" "A \<noteq> {}"
 | |
| 2251 | assumes "X \<in> sets (Sup A)" | |
| 2252 | shows "emeasure (Sup A) X = (SUP a:A. emeasure a) X" | |
| 2253 | proof (rule emeasure_measure_of[OF Sup_measure_def]) | |
| 2254 | show "countably_additive (sets (Sup A)) (SUP a:A. emeasure a)" | |
| 2255 | unfolding countably_additive_def | |
| 2256 | proof safe | |
| 2257 | fix F :: "nat \<Rightarrow> 'a set" assume F: "range F \<subseteq> sets (Sup A)" "disjoint_family F" | |
| 2258 | show "(\<Sum>i. (SUP a:A. emeasure a) (F i)) = SUPREMUM A emeasure (UNION UNIV F)" | |
| 2259 | unfolding SUP_apply | |
| 2260 | proof (subst suminf_SUP_eq_directed) | |
| 2261 | fix N i j assume "i \<in> A" "j \<in> A" | |
| 2262 | with A(1) | |
| 2263 | show "\<exists>k\<in>A. \<forall>n\<in>N. emeasure i (F n) \<le> emeasure k (F n) \<and> emeasure j (F n) \<le> emeasure k (F n)" | |
| 2264 | by (blast elim: chainE dest: le_emeasureD) | |
| 2265 | next | |
| 2266 | show "(SUP n:A. \<Sum>i. emeasure n (F i)) = (SUP y:A. emeasure y (UNION UNIV F))" | |
| 2267 | proof (intro SUP_cong refl) | |
| 2268 | fix a assume "a \<in> A" then show "(\<Sum>i. emeasure a (F i)) = emeasure a (UNION UNIV F)" | |
| 2269 | using sets_Sup[OF A(1), of a] F by (cases "a = bot") (auto simp: suminf_emeasure) | |
| 2270 | qed | |
| 2271 |     qed (insert F \<open>A \<noteq> {}\<close>, auto simp: suminf_emeasure intro!: SUP_cong)
 | |
| 2272 | qed | |
| 2273 | qed (insert \<open>A \<noteq> {}\<close> \<open>X \<in> sets (Sup A)\<close>, auto simp: positive_def dest: sets.sets_into_space intro: SUP_upper2)
 | |
| 2274 | ||
| 2275 | instance | |
| 2276 | proof | |
| 2277 | fix A and x :: "'a measure" assume A: "Complete_Partial_Order.chain op \<le> A" and x: "x \<in> A" | |
| 2278 | show "x \<le> Sup A" | |
| 2279 | proof cases | |
| 2280 | assume "x \<noteq> bot" | |
| 2281 | show ?thesis | |
| 2282 | proof | |
| 2283 | show "sets (Sup A) = sets x" | |
| 2284 | using A \<open>x \<noteq> bot\<close> x by (rule sets_Sup) | |
| 2285 | with x show "\<And>a. a \<in> sets x \<Longrightarrow> emeasure x a \<le> emeasure (Sup A) a" | |
| 2286 | by (subst emeasure_Sup[OF A]) (auto intro: SUP_upper) | |
| 2287 | qed | |
| 2288 | qed simp | |
| 2289 | next | |
| 2290 | fix A and x :: "'a measure" assume A: "Complete_Partial_Order.chain op \<le> A" and x: "\<And>z. z \<in> A \<Longrightarrow> z \<le> x" | |
| 2291 |   consider "A = {}" | "A = {bot}" | x where "x\<in>A" "x \<noteq> bot"
 | |
| 2292 | by blast | |
| 2293 | then show "Sup A \<le> x" | |
| 2294 | proof cases | |
| 2295 |     assume "A = {}"
 | |
| 2296 |     moreover have "Sup ({}::'a measure set) = bot"
 | |
| 2297 | by (auto simp add: Sup_measure_def sigma_sets_empty_eq intro!: measure_eqI) | |
| 2298 | ultimately show ?thesis | |
| 2299 | by simp | |
| 2300 | next | |
| 2301 |     assume "A = {bot}"
 | |
| 2302 |     moreover have "Sup ({bot}::'a measure set) = bot"
 | |
| 2303 | by (auto simp add: Sup_measure_def sigma_sets_empty_eq intro!: measure_eqI) | |
| 2304 | ultimately show ?thesis | |
| 2305 | by simp | |
| 2306 | next | |
| 2307 | fix a assume "a \<in> A" "a \<noteq> bot" | |
| 2308 | then have "a \<le> x" "x \<noteq> bot" "a \<noteq> bot" | |
| 2309 | using x[OF \<open>a \<in> A\<close>] by (auto simp: bot_unique) | |
| 2310 | then have "sets x = sets a" | |
| 2311 | by (auto elim: less_eq_measure.cases) | |
| 2312 | ||
| 2313 | show "Sup A \<le> x" | |
| 2314 | proof (rule less_eq_measure.intros) | |
| 2315 | show "sets x = sets (Sup A)" | |
| 2316 | by (subst sets_Sup[OF A \<open>a \<noteq> bot\<close> \<open>a \<in> A\<close>]) fact | |
| 2317 | next | |
| 2318 | fix X assume "X \<in> sets (Sup A)" | |
| 2319 | then have "emeasure (Sup A) X \<le> (SUP a:A. emeasure a X)" | |
| 2320 | using \<open>a\<in>A\<close> by (subst emeasure_Sup[OF A _]) auto | |
| 2321 | also have "\<dots> \<le> emeasure x X" | |
| 2322 | by (intro SUP_least le_emeasureD x) | |
| 2323 | finally show "emeasure (Sup A) X \<le> emeasure x X" . | |
| 2324 | qed | |
| 2325 | qed | |
| 2326 | qed | |
| 2327 | end | |
| 2328 | ||
| 61633 | 2329 | lemma | 
| 2330 | assumes A: "Complete_Partial_Order.chain op \<le> (f ` A)" and a: "a \<in> A" "f a \<noteq> bot" | |
| 2331 | shows space_SUP: "space (SUP M:A. f M) = space (f a)" | |
| 2332 | and sets_SUP: "sets (SUP M:A. f M) = sets (f a)" | |
| 2333 | unfolding SUP_def by(rule space_Sup[OF A a(2) imageI[OF a(1)]] sets_Sup[OF A a(2) imageI[OF a(1)]])+ | |
| 2334 | ||
| 2335 | lemma emeasure_SUP: | |
| 2336 |   assumes A: "Complete_Partial_Order.chain op \<le> (f ` A)" "A \<noteq> {}"
 | |
| 2337 | assumes "X \<in> sets (SUP M:A. f M)" | |
| 2338 | shows "emeasure (SUP M:A. f M) X = (SUP M:A. emeasure (f M)) X" | |
| 2339 | using \<open>X \<in> _\<close> unfolding SUP_def by(subst emeasure_Sup[OF A(1)]; simp add: A) | |
| 2340 | ||
| 60772 | 2341 | end |