220 | Empty: "{} \<in> sigma_sets sp A" |
220 | Empty: "{} \<in> sigma_sets sp A" |
221 | Compl: "a \<in> sigma_sets sp A \<Longrightarrow> sp - a \<in> sigma_sets sp A" |
221 | Compl: "a \<in> sigma_sets sp A \<Longrightarrow> sp - a \<in> sigma_sets sp A" |
222 | Union: "(\<And>i::nat. a i \<in> sigma_sets sp A) \<Longrightarrow> (\<Union>i. a i) \<in> sigma_sets sp A" |
222 | Union: "(\<And>i::nat. a i \<in> sigma_sets sp A) \<Longrightarrow> (\<Union>i. a i) \<in> sigma_sets sp A" |
223 |
223 |
224 definition |
224 definition |
225 "sigma M = (| space = space M, sets = sigma_sets (space M) (sets M) |)" |
225 "sigma M = \<lparr> space = space M, sets = sigma_sets (space M) (sets M) \<rparr>" |
|
226 |
|
227 lemma (in sigma_algebra) sigma_sets_subset: |
|
228 assumes a: "a \<subseteq> sets M" |
|
229 shows "sigma_sets (space M) a \<subseteq> sets M" |
|
230 proof |
|
231 fix x |
|
232 assume "x \<in> sigma_sets (space M) a" |
|
233 from this show "x \<in> sets M" |
|
234 by (induct rule: sigma_sets.induct, auto) (metis a subsetD) |
|
235 qed |
|
236 |
|
237 lemma sigma_sets_into_sp: "A \<subseteq> Pow sp \<Longrightarrow> x \<in> sigma_sets sp A \<Longrightarrow> x \<subseteq> sp" |
|
238 by (erule sigma_sets.induct, auto) |
|
239 |
|
240 lemma sigma_algebra_sigma_sets: |
|
241 "a \<subseteq> Pow (space M) \<Longrightarrow> sets M = sigma_sets (space M) a \<Longrightarrow> sigma_algebra M" |
|
242 by (auto simp add: sigma_algebra_iff2 dest: sigma_sets_into_sp |
|
243 intro!: sigma_sets.Union sigma_sets.Empty sigma_sets.Compl) |
|
244 |
|
245 lemma sigma_sets_least_sigma_algebra: |
|
246 assumes "A \<subseteq> Pow S" |
|
247 shows "sigma_sets S A = \<Inter>{B. A \<subseteq> B \<and> sigma_algebra \<lparr>space = S, sets = B\<rparr>}" |
|
248 proof safe |
|
249 fix B X assume "A \<subseteq> B" and sa: "sigma_algebra \<lparr> space = S, sets = B \<rparr>" |
|
250 and X: "X \<in> sigma_sets S A" |
|
251 from sigma_algebra.sigma_sets_subset[OF sa, simplified, OF `A \<subseteq> B`] X |
|
252 show "X \<in> B" by auto |
|
253 next |
|
254 fix X assume "X \<in> \<Inter>{B. A \<subseteq> B \<and> sigma_algebra \<lparr>space = S, sets = B\<rparr>}" |
|
255 then have [intro!]: "\<And>B. A \<subseteq> B \<Longrightarrow> sigma_algebra \<lparr>space = S, sets = B\<rparr> \<Longrightarrow> X \<in> B" |
|
256 by simp |
|
257 have "A \<subseteq> sigma_sets S A" using assms |
|
258 by (auto intro!: sigma_sets.Basic) |
|
259 moreover have "sigma_algebra \<lparr>space = S, sets = sigma_sets S A\<rparr>" |
|
260 using assms by (intro sigma_algebra_sigma_sets[of A]) auto |
|
261 ultimately show "X \<in> sigma_sets S A" by auto |
|
262 qed |
226 |
263 |
227 lemma sets_sigma: "sets (sigma M) = sigma_sets (space M) (sets M)" |
264 lemma sets_sigma: "sets (sigma M) = sigma_sets (space M) (sets M)" |
228 unfolding sigma_def by simp |
265 unfolding sigma_def by simp |
229 |
266 |
230 lemma space_sigma [simp]: "space (sigma M) = space M" |
267 lemma space_sigma [simp]: "space (sigma M) = space M" |
231 by (simp add: sigma_def) |
268 by (simp add: sigma_def) |
232 |
269 |
233 lemma sigma_sets_top: "sp \<in> sigma_sets sp A" |
270 lemma sigma_sets_top: "sp \<in> sigma_sets sp A" |
234 by (metis Diff_empty sigma_sets.Compl sigma_sets.Empty) |
271 by (metis Diff_empty sigma_sets.Compl sigma_sets.Empty) |
235 |
|
236 lemma sigma_sets_into_sp: "A \<subseteq> Pow sp \<Longrightarrow> x \<in> sigma_sets sp A \<Longrightarrow> x \<subseteq> sp" |
|
237 by (erule sigma_sets.induct, auto) |
|
238 |
272 |
239 lemma sigma_sets_Un: |
273 lemma sigma_sets_Un: |
240 "a \<in> sigma_sets sp A \<Longrightarrow> b \<in> sigma_sets sp A \<Longrightarrow> a \<union> b \<in> sigma_sets sp A" |
274 "a \<in> sigma_sets sp A \<Longrightarrow> b \<in> sigma_sets sp A \<Longrightarrow> a \<union> b \<in> sigma_sets sp A" |
241 apply (simp add: Un_range_binary range_binary_eq) |
275 apply (simp add: Un_range_binary range_binary_eq) |
242 apply (rule Union, simp add: binary_def) |
276 apply (rule Union, simp add: binary_def) |
272 also have "(\<Inter>i. (if i\<in>S then a i else sp)) = (\<Inter>i\<in>S. a i)" |
306 also have "(\<Inter>i. (if i\<in>S then a i else sp)) = (\<Inter>i\<in>S. a i)" |
273 by auto (metis ai non sigma_sets_into_sp subset_empty subset_iff Asb)+ |
307 by auto (metis ai non sigma_sets_into_sp subset_empty subset_iff Asb)+ |
274 finally show ?thesis . |
308 finally show ?thesis . |
275 qed |
309 qed |
276 |
310 |
277 lemma (in sigma_algebra) sigma_sets_subset: |
|
278 assumes a: "a \<subseteq> sets M" |
|
279 shows "sigma_sets (space M) a \<subseteq> sets M" |
|
280 proof |
|
281 fix x |
|
282 assume "x \<in> sigma_sets (space M) a" |
|
283 from this show "x \<in> sets M" |
|
284 by (induct rule: sigma_sets.induct, auto) (metis a subsetD) |
|
285 qed |
|
286 |
|
287 lemma (in sigma_algebra) sigma_sets_eq: |
311 lemma (in sigma_algebra) sigma_sets_eq: |
288 "sigma_sets (space M) (sets M) = sets M" |
312 "sigma_sets (space M) (sets M) = sets M" |
289 proof |
313 proof |
290 show "sets M \<subseteq> sigma_sets (space M) (sets M)" |
314 show "sets M \<subseteq> sigma_sets (space M) (sets M)" |
291 by (metis Set.subsetI sigma_sets.Basic) |
315 by (metis Set.subsetI sigma_sets.Basic) |
292 next |
316 next |
293 show "sigma_sets (space M) (sets M) \<subseteq> sets M" |
317 show "sigma_sets (space M) (sets M) \<subseteq> sets M" |
294 by (metis sigma_sets_subset subset_refl) |
318 by (metis sigma_sets_subset subset_refl) |
295 qed |
319 qed |
296 |
320 |
297 lemma sigma_algebra_sigma_sets: |
|
298 "a \<subseteq> Pow (space M) \<Longrightarrow> sets M = sigma_sets (space M) a \<Longrightarrow> sigma_algebra M" |
|
299 apply (auto simp add: sigma_algebra_def sigma_algebra_axioms_def |
|
300 algebra_def sigma_sets.Empty sigma_sets.Compl sigma_sets_Un) |
|
301 apply (blast dest: sigma_sets_into_sp) |
|
302 apply (rule sigma_sets.Union, fast) |
|
303 done |
|
304 |
|
305 lemma sigma_algebra_sigma: |
321 lemma sigma_algebra_sigma: |
306 "sets M \<subseteq> Pow (space M) \<Longrightarrow> sigma_algebra (sigma M)" |
322 "sets M \<subseteq> Pow (space M) \<Longrightarrow> sigma_algebra (sigma M)" |
307 apply (rule sigma_algebra_sigma_sets) |
323 apply (rule sigma_algebra_sigma_sets) |
308 apply (auto simp add: sigma_def) |
324 apply (auto simp add: sigma_def) |
309 done |
325 done |
310 |
326 |
311 lemma (in sigma_algebra) sigma_subset: |
327 lemma (in sigma_algebra) sigma_subset: |
312 "sets N \<subseteq> sets M \<Longrightarrow> space N = space M \<Longrightarrow> sets (sigma N) \<subseteq> (sets M)" |
328 "sets N \<subseteq> sets M \<Longrightarrow> space N = space M \<Longrightarrow> sets (sigma N) \<subseteq> (sets M)" |
313 by (simp add: sigma_def sigma_sets_subset) |
329 by (simp add: sigma_def sigma_sets_subset) |
314 |
|
315 lemma sigma_sets_least_sigma_algebra: |
|
316 assumes "A \<subseteq> Pow S" |
|
317 shows "sigma_sets S A = \<Inter>{B. A \<subseteq> B \<and> sigma_algebra \<lparr>space = S, sets = B\<rparr>}" |
|
318 proof safe |
|
319 fix B X assume "A \<subseteq> B" and sa: "sigma_algebra \<lparr> space = S, sets = B \<rparr>" |
|
320 and X: "X \<in> sigma_sets S A" |
|
321 from sigma_algebra.sigma_sets_subset[OF sa, simplified, OF `A \<subseteq> B`] X |
|
322 show "X \<in> B" by auto |
|
323 next |
|
324 fix X assume "X \<in> \<Inter>{B. A \<subseteq> B \<and> sigma_algebra \<lparr>space = S, sets = B\<rparr>}" |
|
325 then have [intro!]: "\<And>B. A \<subseteq> B \<Longrightarrow> sigma_algebra \<lparr>space = S, sets = B\<rparr> \<Longrightarrow> X \<in> B" |
|
326 by simp |
|
327 have "A \<subseteq> sigma_sets S A" using assms |
|
328 by (auto intro!: sigma_sets.Basic) |
|
329 moreover have "sigma_algebra \<lparr>space = S, sets = sigma_sets S A\<rparr>" |
|
330 using assms by (intro sigma_algebra_sigma_sets[of A]) auto |
|
331 ultimately show "X \<in> sigma_sets S A" by auto |
|
332 qed |
|
333 |
330 |
334 lemma (in sigma_algebra) restriction_in_sets: |
331 lemma (in sigma_algebra) restriction_in_sets: |
335 fixes A :: "nat \<Rightarrow> 'a set" |
332 fixes A :: "nat \<Rightarrow> 'a set" |
336 assumes "S \<in> sets M" |
333 assumes "S \<in> sets M" |
337 and *: "range A \<subseteq> (\<lambda>A. S \<inter> A) ` sets M" (is "_ \<subseteq> ?r") |
334 and *: "range A \<subseteq> (\<lambda>A. S \<inter> A) ` sets M" (is "_ \<subseteq> ?r") |