51 thus ?thesis by simp |
51 thus ?thesis by simp |
52 qed |
52 qed |
53 |
53 |
54 lemma borel_singleton[measurable]: |
54 lemma borel_singleton[measurable]: |
55 "A \<in> sets borel \<Longrightarrow> insert x A \<in> sets (borel :: 'a::t1_space measure)" |
55 "A \<in> sets borel \<Longrightarrow> insert x A \<in> sets (borel :: 'a::t1_space measure)" |
56 unfolding insert_def by (rule Un) auto |
56 unfolding insert_def by (rule sets.Un) auto |
57 |
57 |
58 lemma borel_comp[measurable]: "A \<in> sets borel \<Longrightarrow> - A \<in> sets borel" |
58 lemma borel_comp[measurable]: "A \<in> sets borel \<Longrightarrow> - A \<in> sets borel" |
59 unfolding Compl_eq_Diff_UNIV by simp |
59 unfolding Compl_eq_Diff_UNIV by simp |
60 |
60 |
61 lemma borel_measurable_vimage: |
61 lemma borel_measurable_vimage: |
178 |
178 |
179 subsection "Borel space equals sigma algebras over intervals" |
179 subsection "Borel space equals sigma algebras over intervals" |
180 |
180 |
181 lemma borel_sigma_sets_subset: |
181 lemma borel_sigma_sets_subset: |
182 "A \<subseteq> sets borel \<Longrightarrow> sigma_sets UNIV A \<subseteq> sets borel" |
182 "A \<subseteq> sets borel \<Longrightarrow> sigma_sets UNIV A \<subseteq> sets borel" |
183 using sigma_sets_subset[of A borel] by simp |
183 using sets.sigma_sets_subset[of A borel] by simp |
184 |
184 |
185 lemma borel_eq_sigmaI1: |
185 lemma borel_eq_sigmaI1: |
186 fixes F :: "'i \<Rightarrow> 'a::topological_space set" and X :: "'a::topological_space set set" |
186 fixes F :: "'i \<Rightarrow> 'a::topological_space set" and X :: "'a::topological_space set set" |
187 assumes borel_eq: "borel = sigma UNIV X" |
187 assumes borel_eq: "borel = sigma UNIV X" |
188 assumes X: "\<And>x. x \<in> X \<Longrightarrow> x \<in> sets (sigma UNIV (range F))" |
188 assumes X: "\<And>x. x \<in> X \<Longrightarrow> x \<in> sets (sigma UNIV (range F))" |
274 unfolding eucl_greaterThan_eq_halfspaces[where 'a='a] |
274 unfolding eucl_greaterThan_eq_halfspaces[where 'a='a] |
275 unfolding eucl_lessThan_eq_halfspaces[where 'a='a] |
275 unfolding eucl_lessThan_eq_halfspaces[where 'a='a] |
276 by blast |
276 by blast |
277 show "S \<in> ?SIGMA" |
277 show "S \<in> ?SIGMA" |
278 unfolding * |
278 unfolding * |
279 by (safe intro!: countable_UN Int countable_INT) (auto intro!: halfspace_gt_in_halfspace) |
279 by (safe intro!: sets.countable_UN sets.Int sets.countable_INT) |
|
280 (auto intro!: halfspace_gt_in_halfspace) |
280 qed auto |
281 qed auto |
281 |
282 |
282 lemma borel_eq_halfspace_le: |
283 lemma borel_eq_halfspace_le: |
283 "borel = sigma UNIV (range (\<lambda> (a, i). {x::'a::ordered_euclidean_space. x $$ i \<le> a}))" |
284 "borel = sigma UNIV (range (\<lambda> (a, i). {x::'a::ordered_euclidean_space. x $$ i \<le> a}))" |
284 (is "_ = ?SIGMA") |
285 (is "_ = ?SIGMA") |
297 assume "x$$i \<le> a - 1 / real (Suc n)" |
298 assume "x$$i \<le> a - 1 / real (Suc n)" |
298 also have "\<dots> < a" by auto |
299 also have "\<dots> < a" by auto |
299 finally show "x$$i < a" . |
300 finally show "x$$i < a" . |
300 qed |
301 qed |
301 show "{x. x$$i < a} \<in> ?SIGMA" unfolding * |
302 show "{x. x$$i < a} \<in> ?SIGMA" unfolding * |
302 by (safe intro!: countable_UN) auto |
303 by (safe intro!: sets.countable_UN) auto |
303 qed auto |
304 qed auto |
304 |
305 |
305 lemma borel_eq_halfspace_ge: |
306 lemma borel_eq_halfspace_ge: |
306 "borel = sigma UNIV (range (\<lambda> (a, i). {x\<Colon>'a\<Colon>ordered_euclidean_space. a \<le> x $$ i}))" |
307 "borel = sigma UNIV (range (\<lambda> (a, i). {x\<Colon>'a\<Colon>ordered_euclidean_space. a \<le> x $$ i}))" |
307 (is "_ = ?SIGMA") |
308 (is "_ = ?SIGMA") |
308 proof (rule borel_eq_sigmaI2[OF borel_eq_halfspace_less]) |
309 proof (rule borel_eq_sigmaI2[OF borel_eq_halfspace_less]) |
309 fix a i have *: "{x::'a. x$$i < a} = space ?SIGMA - {x::'a. a \<le> x$$i}" by auto |
310 fix a i have *: "{x::'a. x$$i < a} = space ?SIGMA - {x::'a. a \<le> x$$i}" by auto |
310 show "{x. x$$i < a} \<in> ?SIGMA" unfolding * |
311 show "{x. x$$i < a} \<in> ?SIGMA" unfolding * |
311 by (safe intro!: compl_sets) auto |
312 by (safe intro!: sets.compl_sets) auto |
312 qed auto |
313 qed auto |
313 |
314 |
314 lemma borel_eq_halfspace_greater: |
315 lemma borel_eq_halfspace_greater: |
315 "borel = sigma UNIV (range (\<lambda> (a, i). {x\<Colon>'a\<Colon>ordered_euclidean_space. a < x $$ i}))" |
316 "borel = sigma UNIV (range (\<lambda> (a, i). {x\<Colon>'a\<Colon>ordered_euclidean_space. a < x $$ i}))" |
316 (is "_ = ?SIGMA") |
317 (is "_ = ?SIGMA") |
317 proof (rule borel_eq_sigmaI2[OF borel_eq_halfspace_le]) |
318 proof (rule borel_eq_sigmaI2[OF borel_eq_halfspace_le]) |
318 fix a i have *: "{x::'a. x$$i \<le> a} = space ?SIGMA - {x::'a. a < x$$i}" by auto |
319 fix a i have *: "{x::'a. x$$i \<le> a} = space ?SIGMA - {x::'a. a < x$$i}" by auto |
319 show "{x. x$$i \<le> a} \<in> ?SIGMA" unfolding * |
320 show "{x. x$$i \<le> a} \<in> ?SIGMA" unfolding * |
320 by (safe intro!: compl_sets) auto |
321 by (safe intro!: sets.compl_sets) auto |
321 qed auto |
322 qed auto |
322 |
323 |
323 lemma borel_eq_atMost: |
324 lemma borel_eq_atMost: |
324 "borel = sigma UNIV (range (\<lambda>a. {..a\<Colon>'a\<Colon>ordered_euclidean_space}))" |
325 "borel = sigma UNIV (range (\<lambda>a. {..a\<Colon>'a\<Colon>ordered_euclidean_space}))" |
325 (is "_ = ?SIGMA") |
326 (is "_ = ?SIGMA") |
335 by (subst (asm) Max_le_iff) auto |
336 by (subst (asm) Max_le_iff) auto |
336 then show "\<exists>k::nat. \<forall>ia. ia \<noteq> i \<longrightarrow> ia < DIM('a) \<longrightarrow> x $$ ia \<le> real k" |
337 then show "\<exists>k::nat. \<forall>ia. ia \<noteq> i \<longrightarrow> ia < DIM('a) \<longrightarrow> x $$ ia \<le> real k" |
337 by (auto intro!: exI[of _ k]) |
338 by (auto intro!: exI[of _ k]) |
338 qed |
339 qed |
339 show "{x. x$$i \<le> a} \<in> ?SIGMA" unfolding * |
340 show "{x. x$$i \<le> a} \<in> ?SIGMA" unfolding * |
340 by (safe intro!: countable_UN) auto |
341 by (safe intro!: sets.countable_UN) auto |
341 qed (auto intro: sigma_sets_top sigma_sets.Empty) |
342 qed (auto intro: sigma_sets_top sigma_sets.Empty) |
342 qed auto |
343 qed auto |
343 |
344 |
344 lemma borel_eq_greaterThan: |
345 lemma borel_eq_greaterThan: |
345 "borel = sigma UNIV (range (\<lambda>a\<Colon>'a\<Colon>ordered_euclidean_space. {a<..}))" |
346 "borel = sigma UNIV (range (\<lambda>a\<Colon>'a\<Colon>ordered_euclidean_space. {a<..}))" |
361 then show "\<exists>k::nat. \<forall>ia. ia \<noteq> i \<longrightarrow> ia < DIM('a) \<longrightarrow> -real k < x $$ ia" |
362 then show "\<exists>k::nat. \<forall>ia. ia \<noteq> i \<longrightarrow> ia < DIM('a) \<longrightarrow> -real k < x $$ ia" |
362 by (auto intro!: exI[of _ k]) |
363 by (auto intro!: exI[of _ k]) |
363 qed |
364 qed |
364 finally show "{x. x$$i \<le> a} \<in> ?SIGMA" |
365 finally show "{x. x$$i \<le> a} \<in> ?SIGMA" |
365 apply (simp only:) |
366 apply (simp only:) |
366 apply (safe intro!: countable_UN Diff) |
367 apply (safe intro!: sets.countable_UN sets.Diff) |
367 apply (auto intro: sigma_sets_top) |
368 apply (auto intro: sigma_sets_top) |
368 done |
369 done |
369 qed (auto intro: sigma_sets_top sigma_sets.Empty) |
370 qed (auto intro: sigma_sets_top sigma_sets.Empty) |
370 qed auto |
371 qed auto |
371 |
372 |
389 then show "\<exists>k::nat. \<forall>ia. ia \<noteq> i \<longrightarrow> ia < DIM('a) \<longrightarrow> x $$ ia < real k" |
390 then show "\<exists>k::nat. \<forall>ia. ia \<noteq> i \<longrightarrow> ia < DIM('a) \<longrightarrow> x $$ ia < real k" |
390 by (auto intro!: exI[of _ k]) |
391 by (auto intro!: exI[of _ k]) |
391 qed |
392 qed |
392 finally show "{x. a \<le> x$$i} \<in> ?SIGMA" |
393 finally show "{x. a \<le> x$$i} \<in> ?SIGMA" |
393 apply (simp only:) |
394 apply (simp only:) |
394 apply (safe intro!: countable_UN Diff) |
395 apply (safe intro!: sets.countable_UN sets.Diff) |
395 apply (auto intro: sigma_sets_top) |
396 apply (auto intro: sigma_sets_top) |
396 done |
397 done |
397 qed (auto intro: sigma_sets_top sigma_sets.Empty) |
398 qed (auto intro: sigma_sets_top sigma_sets.Empty) |
398 qed auto |
399 qed auto |
399 |
400 |
413 then have "- real k \<le> x$$i" by simp } |
414 then have "- real k \<le> x$$i" by simp } |
414 then show "\<exists>n::nat. \<forall>i<DIM('a). - real n \<le> x $$ i" |
415 then show "\<exists>n::nat. \<forall>i<DIM('a). - real n \<le> x $$ i" |
415 by (auto intro!: exI[of _ k]) |
416 by (auto intro!: exI[of _ k]) |
416 qed |
417 qed |
417 show "{..a} \<in> ?SIGMA" unfolding * |
418 show "{..a} \<in> ?SIGMA" unfolding * |
418 by (safe intro!: countable_UN) |
419 by (safe intro!: sets.countable_UN) |
419 (auto intro!: sigma_sets_top) |
420 (auto intro!: sigma_sets_top) |
420 qed auto |
421 qed auto |
421 |
422 |
422 lemma borel_eq_greaterThanLessThan: |
423 lemma borel_eq_greaterThanLessThan: |
423 "borel = sigma UNIV (range (\<lambda> (a, b). {a <..< b} :: 'a \<Colon> ordered_euclidean_space set))" |
424 "borel = sigma UNIV (range (\<lambda> (a, b). {a <..< b} :: 'a \<Colon> ordered_euclidean_space set))" |
425 proof (rule borel_eq_sigmaI1[OF borel_def]) |
426 proof (rule borel_eq_sigmaI1[OF borel_def]) |
426 fix M :: "'a set" assume "M \<in> {S. open S}" |
427 fix M :: "'a set" assume "M \<in> {S. open S}" |
427 then have "open M" by simp |
428 then have "open M" by simp |
428 show "M \<in> ?SIGMA" |
429 show "M \<in> ?SIGMA" |
429 apply (subst open_UNION[OF `open M`]) |
430 apply (subst open_UNION[OF `open M`]) |
430 apply (safe intro!: countable_UN) |
431 apply (safe intro!: sets.countable_UN) |
431 apply auto |
432 apply auto |
432 done |
433 done |
433 qed auto |
434 qed auto |
434 |
435 |
435 lemma borel_eq_atLeastLessThan: |
436 lemma borel_eq_atLeastLessThan: |