src/HOL/Analysis/Borel_Space.thy
author paulson <lp15@cam.ac.uk>
Thu, 12 Sep 2019 14:51:45 +0100
changeset 70688 3d894e1cfc75
parent 70617 c81ac117afa6
child 71025 be8cec1abcbb
permissions -rw-r--r--
new material on Analysis, plus some rearrangements
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
63627
6ddb43c6b711 rename HOL-Multivariate_Analysis to HOL-Analysis.
hoelzl
parents: 63626
diff changeset
     1
(*  Title:      HOL/Analysis/Borel_Space.thy
42067
66c8281349ec standardized headers
hoelzl
parents: 41981
diff changeset
     2
    Author:     Johannes Hölzl, TU München
66c8281349ec standardized headers
hoelzl
parents: 41981
diff changeset
     3
    Author:     Armin Heller, TU München
66c8281349ec standardized headers
hoelzl
parents: 41981
diff changeset
     4
*)
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
     5
69722
b5163b2132c5 minor tagging updates in 13 theories
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69683
diff changeset
     6
section \<open>Borel Space\<close>
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
     7
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
     8
theory Borel_Space
50387
3d8863c41fe8 Move the measurability prover to its own file
hoelzl
parents: 50245
diff changeset
     9
imports
63626
44ce6b524ff3 move measure theory from HOL-Probability to HOL-Multivariate_Analysis
hoelzl
parents: 63566
diff changeset
    10
  Measurable Derivative Ordered_Euclidean_Space Extended_Real_Limits
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
    11
begin
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
    12
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    13
lemma sets_Collect_eventually_sequentially[measurable]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
    14
  "(\<And>i. {x\<in>space M. P x i} \<in> sets M) \<Longrightarrow> {x\<in>space M. eventually (P x) sequentially} \<in> sets M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
    15
  unfolding eventually_sequentially by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
    16
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    17
lemma topological_basis_trivial: "topological_basis {A. open A}"
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
    18
  by (auto simp: topological_basis_def)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
    19
69722
b5163b2132c5 minor tagging updates in 13 theories
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69683
diff changeset
    20
proposition open_prod_generated: "open = generate_topology {A \<times> B | A B. open A \<and> open B}"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    21
proof -
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
    22
  have "{A \<times> B :: ('a \<times> 'b) set | A B. open A \<and> open B} = ((\<lambda>(a, b). a \<times> b) ` ({A. open A} \<times> {A. open A}))"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
    23
    by auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
    24
  then show ?thesis
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
    25
    by (auto intro: topological_basis_prod topological_basis_trivial topological_basis_imp_subbasis)
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
    26
qed
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
    27
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69861
diff changeset
    28
definition\<^marker>\<open>tag important\<close> "mono_on f A \<equiv> \<forall>r s. r \<in> A \<and> s \<in> A \<and> r \<le> s \<longrightarrow> f r \<le> f s"
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    29
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    30
lemma mono_onI:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    31
  "(\<And>r s. r \<in> A \<Longrightarrow> s \<in> A \<Longrightarrow> r \<le> s \<Longrightarrow> f r \<le> f s) \<Longrightarrow> mono_on f A"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    32
  unfolding mono_on_def by simp
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    33
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    34
lemma mono_onD:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    35
  "\<lbrakk>mono_on f A; r \<in> A; s \<in> A; r \<le> s\<rbrakk> \<Longrightarrow> f r \<le> f s"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    36
  unfolding mono_on_def by simp
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    37
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    38
lemma mono_imp_mono_on: "mono f \<Longrightarrow> mono_on f A"
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    39
  unfolding mono_def mono_on_def by auto
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    40
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    41
lemma mono_on_subset: "mono_on f A \<Longrightarrow> B \<subseteq> A \<Longrightarrow> mono_on f B"
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    42
  unfolding mono_on_def by auto
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    43
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69861
diff changeset
    44
definition\<^marker>\<open>tag important\<close> "strict_mono_on f A \<equiv> \<forall>r s. r \<in> A \<and> s \<in> A \<and> r < s \<longrightarrow> f r < f s"
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    45
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    46
lemma strict_mono_onI:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    47
  "(\<And>r s. r \<in> A \<Longrightarrow> s \<in> A \<Longrightarrow> r < s \<Longrightarrow> f r < f s) \<Longrightarrow> strict_mono_on f A"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    48
  unfolding strict_mono_on_def by simp
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    49
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    50
lemma strict_mono_onD:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    51
  "\<lbrakk>strict_mono_on f A; r \<in> A; s \<in> A; r < s\<rbrakk> \<Longrightarrow> f r < f s"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    52
  unfolding strict_mono_on_def by simp
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    53
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    54
lemma mono_on_greaterD:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    55
  assumes "mono_on g A" "x \<in> A" "y \<in> A" "g x > (g (y::_::linorder) :: _ :: linorder)"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    56
  shows "x > y"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    57
proof (rule ccontr)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    58
  assume "\<not>x > y"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    59
  hence "x \<le> y" by (simp add: not_less)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    60
  from assms(1-3) and this have "g x \<le> g y" by (rule mono_onD)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    61
  with assms(4) show False by simp
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    62
qed
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    63
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    64
lemma strict_mono_inv:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    65
  fixes f :: "('a::linorder) \<Rightarrow> ('b::linorder)"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    66
  assumes "strict_mono f" and "surj f" and inv: "\<And>x. g (f x) = x"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    67
  shows "strict_mono g"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    68
proof
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    69
  fix x y :: 'b assume "x < y"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    70
  from \<open>surj f\<close> obtain x' y' where [simp]: "x = f x'" "y = f y'" by blast
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    71
  with \<open>x < y\<close> and \<open>strict_mono f\<close> have "x' < y'" by (simp add: strict_mono_less)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    72
  with inv show "g x < g y" by simp
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    73
qed
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    74
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    75
lemma strict_mono_on_imp_inj_on:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    76
  assumes "strict_mono_on (f :: (_ :: linorder) \<Rightarrow> (_ :: preorder)) A"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    77
  shows "inj_on f A"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    78
proof (rule inj_onI)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    79
  fix x y assume "x \<in> A" "y \<in> A" "f x = f y"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    80
  thus "x = y"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    81
    by (cases x y rule: linorder_cases)
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
    82
       (auto dest: strict_mono_onD[OF assms, of x y] strict_mono_onD[OF assms, of y x])
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    83
qed
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    84
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    85
lemma strict_mono_on_leD:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    86
  assumes "strict_mono_on (f :: (_ :: linorder) \<Rightarrow> _ :: preorder) A" "x \<in> A" "y \<in> A" "x \<le> y"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    87
  shows "f x \<le> f y"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    88
proof (insert le_less_linear[of y x], elim disjE)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    89
  assume "x < y"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    90
  with assms have "f x < f y" by (rule_tac strict_mono_onD[OF assms(1)]) simp_all
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    91
  thus ?thesis by (rule less_imp_le)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    92
qed (insert assms, simp)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    93
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
    94
lemma strict_mono_on_eqD:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    95
  fixes f :: "(_ :: linorder) \<Rightarrow> (_ :: preorder)"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    96
  assumes "strict_mono_on f A" "f x = f y" "x \<in> A" "y \<in> A"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    97
  shows "y = x"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    98
  using assms by (rule_tac linorder_cases[of x y]) (auto dest: strict_mono_onD)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
    99
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   100
proposition mono_on_imp_deriv_nonneg:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   101
  assumes mono: "mono_on f A" and deriv: "(f has_real_derivative D) (at x)"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   102
  assumes "x \<in> interior A"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   103
  shows "D \<ge> 0"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   104
proof (rule tendsto_lowerbound)
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   105
  let ?A' = "(\<lambda>y. y - x) ` interior A"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   106
  from deriv show "((\<lambda>h. (f (x + h) - f x) / h) \<longlongrightarrow> D) (at 0)"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   107
      by (simp add: field_has_derivative_at has_field_derivative_def)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   108
  from mono have mono': "mono_on f (interior A)" by (rule mono_on_subset) (rule interior_subset)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   109
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   110
  show "eventually (\<lambda>h. (f (x + h) - f x) / h \<ge> 0) (at 0)"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   111
  proof (subst eventually_at_topological, intro exI conjI ballI impI)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   112
    have "open (interior A)" by simp
67399
eab6ce8368fa ran isabelle update_op on all sources
nipkow
parents: 67278
diff changeset
   113
    hence "open ((+) (-x) ` interior A)" by (rule open_translation)
eab6ce8368fa ran isabelle update_op on all sources
nipkow
parents: 67278
diff changeset
   114
    also have "((+) (-x) ` interior A) = ?A'" by auto
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   115
    finally show "open ?A'" .
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   116
  next
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   117
    from \<open>x \<in> interior A\<close> show "0 \<in> ?A'" by auto
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   118
  next
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   119
    fix h assume "h \<in> ?A'"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   120
    hence "x + h \<in> interior A" by auto
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   121
    with mono' and \<open>x \<in> interior A\<close> show "(f (x + h) - f x) / h \<ge> 0"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   122
      by (cases h rule: linorder_cases[of _ 0])
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   123
         (simp_all add: divide_nonpos_neg divide_nonneg_pos mono_onD field_simps)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   124
  qed
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   125
qed simp
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   126
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   127
lemma strict_mono_on_imp_mono_on:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   128
  "strict_mono_on (f :: (_ :: linorder) \<Rightarrow> _ :: preorder) A \<Longrightarrow> mono_on f A"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   129
  by (rule mono_onI, rule strict_mono_on_leD)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   130
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   131
proposition mono_on_ctble_discont:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   132
  fixes f :: "real \<Rightarrow> real"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   133
  fixes A :: "real set"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   134
  assumes "mono_on f A"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   135
  shows "countable {a\<in>A. \<not> continuous (at a within A) f}"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   136
proof -
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   137
  have mono: "\<And>x y. x \<in> A \<Longrightarrow> y \<in> A \<Longrightarrow> x \<le> y \<Longrightarrow> f x \<le> f y"
63167
0909deb8059b isabelle update_cartouches -c -t;
wenzelm
parents: 63040
diff changeset
   138
    using \<open>mono_on f A\<close> by (simp add: mono_on_def)
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   139
  have "\<forall>a \<in> {a\<in>A. \<not> continuous (at a within A) f}. \<exists>q :: nat \<times> rat.
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   140
      (fst q = 0 \<and> of_rat (snd q) < f a \<and> (\<forall>x \<in> A. x < a \<longrightarrow> f x < of_rat (snd q))) \<or>
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   141
      (fst q = 1 \<and> of_rat (snd q) > f a \<and> (\<forall>x \<in> A. x > a \<longrightarrow> f x > of_rat (snd q)))"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   142
  proof (clarsimp simp del: One_nat_def)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   143
    fix a assume "a \<in> A" assume "\<not> continuous (at a within A) f"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   144
    thus "\<exists>q1 q2.
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   145
            q1 = 0 \<and> real_of_rat q2 < f a \<and> (\<forall>x\<in>A. x < a \<longrightarrow> f x < real_of_rat q2) \<or>
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   146
            q1 = 1 \<and> f a < real_of_rat q2 \<and> (\<forall>x\<in>A. a < x \<longrightarrow> real_of_rat q2 < f x)"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   147
    proof (auto simp add: continuous_within order_tendsto_iff eventually_at)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   148
      fix l assume "l < f a"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   149
      then obtain q2 where q2: "l < of_rat q2" "of_rat q2 < f a"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   150
        using of_rat_dense by blast
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   151
      assume * [rule_format]: "\<forall>d>0. \<exists>x\<in>A. x \<noteq> a \<and> dist x a < d \<and> \<not> l < f x"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   152
      from q2 have "real_of_rat q2 < f a \<and> (\<forall>x\<in>A. x < a \<longrightarrow> f x < real_of_rat q2)"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   153
      proof auto
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   154
        fix x assume "x \<in> A" "x < a"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   155
        with q2 *[of "a - x"] show "f x < real_of_rat q2"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   156
          apply (auto simp add: dist_real_def not_less)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   157
          apply (subgoal_tac "f x \<le> f xa")
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   158
          by (auto intro: mono)
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
   159
      qed
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   160
      thus ?thesis by auto
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   161
    next
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   162
      fix u assume "u > f a"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   163
      then obtain q2 where q2: "f a < of_rat q2" "of_rat q2 < u"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   164
        using of_rat_dense by blast
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   165
      assume *[rule_format]: "\<forall>d>0. \<exists>x\<in>A. x \<noteq> a \<and> dist x a < d \<and> \<not> u > f x"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   166
      from q2 have "real_of_rat q2 > f a \<and> (\<forall>x\<in>A. x > a \<longrightarrow> f x > real_of_rat q2)"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   167
      proof auto
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   168
        fix x assume "x \<in> A" "x > a"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   169
        with q2 *[of "x - a"] show "f x > real_of_rat q2"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   170
          apply (auto simp add: dist_real_def)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   171
          apply (subgoal_tac "f x \<ge> f xa")
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   172
          by (auto intro: mono)
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
   173
      qed
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   174
      thus ?thesis by auto
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   175
    qed
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   176
  qed
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
   177
  hence "\<exists>g :: real \<Rightarrow> nat \<times> rat . \<forall>a \<in> {a\<in>A. \<not> continuous (at a within A) f}.
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   178
      (fst (g a) = 0 \<and> of_rat (snd (g a)) < f a \<and> (\<forall>x \<in> A. x < a \<longrightarrow> f x < of_rat (snd (g a)))) |
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   179
      (fst (g a) = 1 \<and> of_rat (snd (g a)) > f a \<and> (\<forall>x \<in> A. x > a \<longrightarrow> f x > of_rat (snd (g a))))"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   180
    by (rule bchoice)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   181
  then guess g ..
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   182
  hence g: "\<And>a x. a \<in> A \<Longrightarrow> \<not> continuous (at a within A) f \<Longrightarrow> x \<in> A \<Longrightarrow>
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   183
      (fst (g a) = 0 \<and> of_rat (snd (g a)) < f a \<and> (x < a \<longrightarrow> f x < of_rat (snd (g a)))) |
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   184
      (fst (g a) = 1 \<and> of_rat (snd (g a)) > f a \<and> (x > a \<longrightarrow> f x > of_rat (snd (g a))))"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   185
    by auto
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   186
  have "inj_on g {a\<in>A. \<not> continuous (at a within A) f}"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   187
  proof (auto simp add: inj_on_def)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   188
    fix w z
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   189
    assume 1: "w \<in> A" and 2: "\<not> continuous (at w within A) f" and
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   190
           3: "z \<in> A" and 4: "\<not> continuous (at z within A) f" and
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   191
           5: "g w = g z"
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
   192
    from g [OF 1 2 3] g [OF 3 4 1] 5
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   193
    show "w = z" by auto
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   194
  qed
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
   195
  thus ?thesis
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
   196
    by (rule countableI')
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   197
qed
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   198
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   199
lemma mono_on_ctble_discont_open:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   200
  fixes f :: "real \<Rightarrow> real"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   201
  fixes A :: "real set"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   202
  assumes "open A" "mono_on f A"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   203
  shows "countable {a\<in>A. \<not>isCont f a}"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   204
proof -
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   205
  have "{a\<in>A. \<not>isCont f a} = {a\<in>A. \<not>(continuous (at a within A) f)}"
63167
0909deb8059b isabelle update_cartouches -c -t;
wenzelm
parents: 63040
diff changeset
   206
    by (auto simp add: continuous_within_open [OF _ \<open>open A\<close>])
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   207
  thus ?thesis
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   208
    apply (elim ssubst)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   209
    by (rule mono_on_ctble_discont, rule assms)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   210
qed
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   211
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   212
lemma mono_ctble_discont:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   213
  fixes f :: "real \<Rightarrow> real"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   214
  assumes "mono f"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   215
  shows "countable {a. \<not> isCont f a}"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   216
  using assms mono_on_ctble_discont [of f UNIV] unfolding mono_on_def mono_def by auto
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   217
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   218
lemma has_real_derivative_imp_continuous_on:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   219
  assumes "\<And>x. x \<in> A \<Longrightarrow> (f has_real_derivative f' x) (at x)"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   220
  shows "continuous_on A f"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   221
  apply (intro differentiable_imp_continuous_on, unfold differentiable_on_def)
69022
e2858770997a removal of more redundancies, and fixes
paulson <lp15@cam.ac.uk>
parents: 68833
diff changeset
   222
  using assms differentiable_at_withinI real_differentiable_def by blast
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   223
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   224
lemma continuous_interval_vimage_Int:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   225
  assumes "continuous_on {a::real..b} g" and mono: "\<And>x y. a \<le> x \<Longrightarrow> x \<le> y \<Longrightarrow> y \<le> b \<Longrightarrow> g x \<le> g y"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   226
  assumes "a \<le> b" "(c::real) \<le> d" "{c..d} \<subseteq> {g a..g b}"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   227
  obtains c' d' where "{a..b} \<inter> g -` {c..d} = {c'..d'}" "c' \<le> d'" "g c' = c" "g d' = d"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   228
proof-
63040
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   229
  let ?A = "{a..b} \<inter> g -` {c..d}"
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   230
  from IVT'[of g a c b, OF _ _ \<open>a \<le> b\<close> assms(1)] assms(4,5)
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   231
  obtain c'' where c'': "c'' \<in> ?A" "g c'' = c" by auto
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   232
  from IVT'[of g a d b, OF _ _ \<open>a \<le> b\<close> assms(1)] assms(4,5)
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   233
  obtain d'' where d'': "d'' \<in> ?A" "g d'' = d" by auto
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   234
  hence [simp]: "?A \<noteq> {}" by blast
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   235
63040
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   236
  define c' where "c' = Inf ?A"
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   237
  define d' where "d' = Sup ?A"
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   238
  have "?A \<subseteq> {c'..d'}" unfolding c'_def d'_def
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   239
    by (intro subsetI) (auto intro: cInf_lower cSup_upper)
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   240
  moreover from assms have "closed ?A"
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   241
    using continuous_on_closed_vimage[of "{a..b}" g] by (subst Int_commute) simp
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   242
  hence c'd'_in_set: "c' \<in> ?A" "d' \<in> ?A" unfolding c'_def d'_def
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   243
    by ((intro closed_contains_Inf closed_contains_Sup, simp_all)[])+
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   244
  hence "{c'..d'} \<subseteq> ?A" using assms
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   245
    by (intro subsetI)
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   246
       (auto intro!: order_trans[of c "g c'" "g x" for x] order_trans[of "g x" "g d'" d for x]
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   247
             intro!: mono)
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   248
  moreover have "c' \<le> d'" using c'd'_in_set(2) unfolding c'_def by (intro cInf_lower) auto
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   249
  moreover have "g c' \<le> c" "g d' \<ge> d"
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   250
    apply (insert c'' d'' c'd'_in_set)
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   251
    apply (subst c''(2)[symmetric])
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   252
    apply (auto simp: c'_def intro!: mono cInf_lower c'') []
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   253
    apply (subst d''(2)[symmetric])
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   254
    apply (auto simp: d'_def intro!: mono cSup_upper d'') []
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   255
    done
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   256
  with c'd'_in_set have "g c' = c" "g d' = d" by auto
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   257
  ultimately show ?thesis using that by blast
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   258
qed
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   259
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
   260
subsection \<open>Generic Borel spaces\<close>
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   261
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69861
diff changeset
   262
definition\<^marker>\<open>tag important\<close> (in topological_space) borel :: "'a measure" where
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   263
  "borel = sigma UNIV {S. open S}"
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   264
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   265
abbreviation "borel_measurable M \<equiv> measurable M borel"
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   266
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   267
lemma in_borel_measurable:
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   268
   "f \<in> borel_measurable M \<longleftrightarrow>
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   269
    (\<forall>S \<in> sigma_sets UNIV {S. open S}. f -` S \<inter> space M \<in> sets M)"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   270
  by (auto simp add: measurable_def borel_def)
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   271
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   272
lemma in_borel_measurable_borel:
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   273
   "f \<in> borel_measurable M \<longleftrightarrow>
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   274
    (\<forall>S \<in> sets borel.
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   275
      f -` S \<inter> space M \<in> sets M)"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   276
  by (auto simp add: measurable_def borel_def)
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   277
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   278
lemma space_borel[simp]: "space borel = UNIV"
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   279
  unfolding borel_def by auto
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   280
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   281
lemma space_in_borel[measurable]: "UNIV \<in> sets borel"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   282
  unfolding borel_def by auto
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   283
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   284
lemma sets_borel: "sets borel = sigma_sets UNIV {S. open S}"
57235
b0b9a10e4bf4 properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
hoelzl
parents: 57138
diff changeset
   285
  unfolding borel_def by (rule sets_measure_of) simp
b0b9a10e4bf4 properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
hoelzl
parents: 57138
diff changeset
   286
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   287
lemma measurable_sets_borel:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   288
    "\<lbrakk>f \<in> measurable borel M; A \<in> sets M\<rbrakk> \<Longrightarrow> f -` A \<in> sets borel"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   289
  by (drule (1) measurable_sets) simp
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   290
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   291
lemma pred_Collect_borel[measurable (raw)]: "Measurable.pred borel P \<Longrightarrow> {x. P x} \<in> sets borel"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   292
  unfolding borel_def pred_def by auto
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   293
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   294
lemma borel_open[measurable (raw generic)]:
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   295
  assumes "open A" shows "A \<in> sets borel"
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   296
proof -
44537
c10485a6a7af make HOL-Probability respect set/pred distinction
huffman
parents: 44282
diff changeset
   297
  have "A \<in> {S. open S}" unfolding mem_Collect_eq using assms .
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   298
  thus ?thesis unfolding borel_def by auto
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   299
qed
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   300
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   301
lemma borel_closed[measurable (raw generic)]:
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   302
  assumes "closed A" shows "A \<in> sets borel"
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   303
proof -
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   304
  have "space borel - (- A) \<in> sets borel"
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   305
    using assms unfolding closed_def by (blast intro: borel_open)
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   306
  thus ?thesis by simp
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   307
qed
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   308
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   309
lemma borel_singleton[measurable]:
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
   310
  "A \<in> sets borel \<Longrightarrow> insert x A \<in> sets (borel :: 'a::t1_space measure)"
50244
de72bbe42190 qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents: 50104
diff changeset
   311
  unfolding insert_def by (rule sets.Un) auto
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   312
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   313
lemma sets_borel_eq_count_space: "sets (borel :: 'a::{countable, t2_space} measure) = count_space UNIV"
64320
ba194424b895 HOL-Probability: move stopping time from AFP/Markov_Models
hoelzl
parents: 64287
diff changeset
   314
proof -
ba194424b895 HOL-Probability: move stopping time from AFP/Markov_Models
hoelzl
parents: 64287
diff changeset
   315
  have "(\<Union>a\<in>A. {a}) \<in> sets borel" for A :: "'a set"
ba194424b895 HOL-Probability: move stopping time from AFP/Markov_Models
hoelzl
parents: 64287
diff changeset
   316
    by (intro sets.countable_UN') auto
ba194424b895 HOL-Probability: move stopping time from AFP/Markov_Models
hoelzl
parents: 64287
diff changeset
   317
  then show ?thesis
ba194424b895 HOL-Probability: move stopping time from AFP/Markov_Models
hoelzl
parents: 64287
diff changeset
   318
    by auto
ba194424b895 HOL-Probability: move stopping time from AFP/Markov_Models
hoelzl
parents: 64287
diff changeset
   319
qed
ba194424b895 HOL-Probability: move stopping time from AFP/Markov_Models
hoelzl
parents: 64287
diff changeset
   320
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   321
lemma borel_comp[measurable]: "A \<in> sets borel \<Longrightarrow> - A \<in> sets borel"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   322
  unfolding Compl_eq_Diff_UNIV by simp
41830
719b0a517c33 log is borel measurable
hoelzl
parents: 41545
diff changeset
   323
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   324
lemma borel_measurable_vimage:
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   325
  fixes f :: "'a \<Rightarrow> 'x::t2_space"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   326
  assumes borel[measurable]: "f \<in> borel_measurable M"
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   327
  shows "f -` {x} \<inter> space M \<in> sets M"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   328
  by simp
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   329
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   330
lemma borel_measurableI:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
   331
  fixes f :: "'a \<Rightarrow> 'x::topological_space"
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   332
  assumes "\<And>S. open S \<Longrightarrow> f -` S \<inter> space M \<in> sets M"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   333
  shows "f \<in> borel_measurable M"
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   334
  unfolding borel_def
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   335
proof (rule measurable_measure_of, simp_all)
44537
c10485a6a7af make HOL-Probability respect set/pred distinction
huffman
parents: 44282
diff changeset
   336
  fix S :: "'x set" assume "open S" thus "f -` S \<inter> space M \<in> sets M"
c10485a6a7af make HOL-Probability respect set/pred distinction
huffman
parents: 44282
diff changeset
   337
    using assms[of S] by simp
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   338
qed
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   339
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   340
lemma borel_measurable_const:
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   341
  "(\<lambda>x. c) \<in> borel_measurable M"
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   342
  by auto
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   343
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   344
lemma borel_measurable_indicator:
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   345
  assumes A: "A \<in> sets M"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   346
  shows "indicator A \<in> borel_measurable M"
46905
6b1c0a80a57a prefer abs_def over def_raw;
wenzelm
parents: 46884
diff changeset
   347
  unfolding indicator_def [abs_def] using A
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   348
  by (auto intro!: measurable_If_set)
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   349
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   350
lemma borel_measurable_count_space[measurable (raw)]:
50096
7c9c5b1b6cd7 more measurability rules
hoelzl
parents: 50094
diff changeset
   351
  "f \<in> borel_measurable (count_space S)"
7c9c5b1b6cd7 more measurability rules
hoelzl
parents: 50094
diff changeset
   352
  unfolding measurable_def by auto
7c9c5b1b6cd7 more measurability rules
hoelzl
parents: 50094
diff changeset
   353
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   354
lemma borel_measurable_indicator'[measurable (raw)]:
50096
7c9c5b1b6cd7 more measurability rules
hoelzl
parents: 50094
diff changeset
   355
  assumes [measurable]: "{x\<in>space M. f x \<in> A x} \<in> sets M"
7c9c5b1b6cd7 more measurability rules
hoelzl
parents: 50094
diff changeset
   356
  shows "(\<lambda>x. indicator (A x) (f x)) \<in> borel_measurable M"
50001
382bd3173584 add syntax and a.e.-rules for (conditional) probability on predicates
hoelzl
parents: 49774
diff changeset
   357
  unfolding indicator_def[abs_def]
382bd3173584 add syntax and a.e.-rules for (conditional) probability on predicates
hoelzl
parents: 49774
diff changeset
   358
  by (auto intro!: measurable_If)
382bd3173584 add syntax and a.e.-rules for (conditional) probability on predicates
hoelzl
parents: 49774
diff changeset
   359
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   360
lemma borel_measurable_indicator_iff:
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   361
  "(indicator A :: 'a \<Rightarrow> 'x::{t1_space, zero_neq_one}) \<in> borel_measurable M \<longleftrightarrow> A \<inter> space M \<in> sets M"
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   362
    (is "?I \<in> borel_measurable M \<longleftrightarrow> _")
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   363
proof
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   364
  assume "?I \<in> borel_measurable M"
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   365
  then have "?I -` {1} \<inter> space M \<in> sets M"
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   366
    unfolding measurable_def by auto
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   367
  also have "?I -` {1} \<inter> space M = A \<inter> space M"
46905
6b1c0a80a57a prefer abs_def over def_raw;
wenzelm
parents: 46884
diff changeset
   368
    unfolding indicator_def [abs_def] by auto
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   369
  finally show "A \<inter> space M \<in> sets M" .
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   370
next
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   371
  assume "A \<inter> space M \<in> sets M"
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   372
  moreover have "?I \<in> borel_measurable M \<longleftrightarrow>
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   373
    (indicator (A \<inter> space M) :: 'a \<Rightarrow> 'x) \<in> borel_measurable M"
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   374
    by (intro measurable_cong) (auto simp: indicator_def)
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   375
  ultimately show "?I \<in> borel_measurable M" by auto
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   376
qed
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   377
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   378
lemma borel_measurable_subalgebra:
41545
9c869baf1c66 tuned formalization of subalgebra
hoelzl
parents: 41097
diff changeset
   379
  assumes "sets N \<subseteq> sets M" "space N = space M" "f \<in> borel_measurable N"
39092
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
   380
  shows "f \<in> borel_measurable M"
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
   381
  using assms unfolding measurable_def by auto
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
   382
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   383
lemma borel_measurable_restrict_space_iff_ereal:
57137
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   384
  fixes f :: "'a \<Rightarrow> ereal"
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   385
  assumes \<Omega>[measurable, simp]: "\<Omega> \<inter> space M \<in> sets M"
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   386
  shows "f \<in> borel_measurable (restrict_space M \<Omega>) \<longleftrightarrow>
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   387
    (\<lambda>x. f x * indicator \<Omega> x) \<in> borel_measurable M"
57138
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   388
  by (subst measurable_restrict_space_iff)
63566
e5abbdee461a more accurate cong del;
wenzelm
parents: 63389
diff changeset
   389
     (auto simp: indicator_def if_distrib[where f="\<lambda>x. a * x" for a] cong del: if_weak_cong)
57137
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   390
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   391
lemma borel_measurable_restrict_space_iff_ennreal:
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
   392
  fixes f :: "'a \<Rightarrow> ennreal"
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
   393
  assumes \<Omega>[measurable, simp]: "\<Omega> \<inter> space M \<in> sets M"
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
   394
  shows "f \<in> borel_measurable (restrict_space M \<Omega>) \<longleftrightarrow>
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
   395
    (\<lambda>x. f x * indicator \<Omega> x) \<in> borel_measurable M"
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
   396
  by (subst measurable_restrict_space_iff)
63566
e5abbdee461a more accurate cong del;
wenzelm
parents: 63389
diff changeset
   397
     (auto simp: indicator_def if_distrib[where f="\<lambda>x. a * x" for a] cong del: if_weak_cong)
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
   398
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   399
lemma borel_measurable_restrict_space_iff:
57137
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   400
  fixes f :: "'a \<Rightarrow> 'b::real_normed_vector"
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   401
  assumes \<Omega>[measurable, simp]: "\<Omega> \<inter> space M \<in> sets M"
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   402
  shows "f \<in> borel_measurable (restrict_space M \<Omega>) \<longleftrightarrow>
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   403
    (\<lambda>x. indicator \<Omega> x *\<^sub>R f x) \<in> borel_measurable M"
57138
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   404
  by (subst measurable_restrict_space_iff)
63566
e5abbdee461a more accurate cong del;
wenzelm
parents: 63389
diff changeset
   405
     (auto simp: indicator_def if_distrib[where f="\<lambda>x. x *\<^sub>R a" for a] ac_simps
e5abbdee461a more accurate cong del;
wenzelm
parents: 63389
diff changeset
   406
       cong del: if_weak_cong)
57138
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   407
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   408
lemma cbox_borel[measurable]: "cbox a b \<in> sets borel"
57138
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   409
  by (auto intro: borel_closed)
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   410
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   411
lemma box_borel[measurable]: "box a b \<in> sets borel"
57447
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
   412
  by (auto intro: borel_open)
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
   413
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   414
lemma borel_compact: "compact (A::'a::t2_space set) \<Longrightarrow> A \<in> sets borel"
57138
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   415
  by (auto intro: borel_closed dest!: compact_imp_closed)
57137
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   416
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   417
lemma borel_sigma_sets_subset:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   418
  "A \<subseteq> sets borel \<Longrightarrow> sigma_sets UNIV A \<subseteq> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   419
  using sets.sigma_sets_subset[of A borel] by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   420
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   421
lemma borel_eq_sigmaI1:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   422
  fixes F :: "'i \<Rightarrow> 'a::topological_space set" and X :: "'a::topological_space set set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   423
  assumes borel_eq: "borel = sigma UNIV X"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   424
  assumes X: "\<And>x. x \<in> X \<Longrightarrow> x \<in> sets (sigma UNIV (F ` A))"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   425
  assumes F: "\<And>i. i \<in> A \<Longrightarrow> F i \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   426
  shows "borel = sigma UNIV (F ` A)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   427
  unfolding borel_def
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   428
proof (intro sigma_eqI antisym)
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   429
  have borel_rev_eq: "sigma_sets UNIV {S::'a set. open S} = sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   430
    unfolding borel_def by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   431
  also have "\<dots> = sigma_sets UNIV X"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   432
    unfolding borel_eq by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   433
  also have "\<dots> \<subseteq> sigma_sets UNIV (F`A)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   434
    using X by (intro sigma_algebra.sigma_sets_subset[OF sigma_algebra_sigma_sets]) auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   435
  finally show "sigma_sets UNIV {S. open S} \<subseteq> sigma_sets UNIV (F`A)" .
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   436
  show "sigma_sets UNIV (F`A) \<subseteq> sigma_sets UNIV {S. open S}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   437
    unfolding borel_rev_eq using F by (intro borel_sigma_sets_subset) auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   438
qed auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   439
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   440
lemma borel_eq_sigmaI2:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   441
  fixes F :: "'i \<Rightarrow> 'j \<Rightarrow> 'a::topological_space set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   442
    and G :: "'l \<Rightarrow> 'k \<Rightarrow> 'a::topological_space set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   443
  assumes borel_eq: "borel = sigma UNIV ((\<lambda>(i, j). G i j)`B)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   444
  assumes X: "\<And>i j. (i, j) \<in> B \<Longrightarrow> G i j \<in> sets (sigma UNIV ((\<lambda>(i, j). F i j) ` A))"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   445
  assumes F: "\<And>i j. (i, j) \<in> A \<Longrightarrow> F i j \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   446
  shows "borel = sigma UNIV ((\<lambda>(i, j). F i j) ` A)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   447
  using assms
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   448
  by (intro borel_eq_sigmaI1[where X="(\<lambda>(i, j). G i j) ` B" and F="(\<lambda>(i, j). F i j)"]) auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   449
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   450
lemma borel_eq_sigmaI3:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   451
  fixes F :: "'i \<Rightarrow> 'j \<Rightarrow> 'a::topological_space set" and X :: "'a::topological_space set set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   452
  assumes borel_eq: "borel = sigma UNIV X"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   453
  assumes X: "\<And>x. x \<in> X \<Longrightarrow> x \<in> sets (sigma UNIV ((\<lambda>(i, j). F i j) ` A))"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   454
  assumes F: "\<And>i j. (i, j) \<in> A \<Longrightarrow> F i j \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   455
  shows "borel = sigma UNIV ((\<lambda>(i, j). F i j) ` A)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   456
  using assms by (intro borel_eq_sigmaI1[where X=X and F="(\<lambda>(i, j). F i j)"]) auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   457
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   458
lemma borel_eq_sigmaI4:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   459
  fixes F :: "'i \<Rightarrow> 'a::topological_space set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   460
    and G :: "'l \<Rightarrow> 'k \<Rightarrow> 'a::topological_space set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   461
  assumes borel_eq: "borel = sigma UNIV ((\<lambda>(i, j). G i j)`A)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   462
  assumes X: "\<And>i j. (i, j) \<in> A \<Longrightarrow> G i j \<in> sets (sigma UNIV (range F))"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   463
  assumes F: "\<And>i. F i \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   464
  shows "borel = sigma UNIV (range F)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   465
  using assms by (intro borel_eq_sigmaI1[where X="(\<lambda>(i, j). G i j) ` A" and F=F]) auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   466
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   467
lemma borel_eq_sigmaI5:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   468
  fixes F :: "'i \<Rightarrow> 'j \<Rightarrow> 'a::topological_space set" and G :: "'l \<Rightarrow> 'a::topological_space set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   469
  assumes borel_eq: "borel = sigma UNIV (range G)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   470
  assumes X: "\<And>i. G i \<in> sets (sigma UNIV (range (\<lambda>(i, j). F i j)))"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   471
  assumes F: "\<And>i j. F i j \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   472
  shows "borel = sigma UNIV (range (\<lambda>(i, j). F i j))"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   473
  using assms by (intro borel_eq_sigmaI1[where X="range G" and F="(\<lambda>(i, j). F i j)"]) auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   474
69722
b5163b2132c5 minor tagging updates in 13 theories
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69683
diff changeset
   475
theorem second_countable_borel_measurable:
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   476
  fixes X :: "'a::second_countable_topology set set"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   477
  assumes eq: "open = generate_topology X"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   478
  shows "borel = sigma UNIV X"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   479
  unfolding borel_def
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   480
proof (intro sigma_eqI sigma_sets_eqI)
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   481
  interpret X: sigma_algebra UNIV "sigma_sets UNIV X"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   482
    by (rule sigma_algebra_sigma_sets) simp
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   483
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   484
  fix S :: "'a set" assume "S \<in> Collect open"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   485
  then have "generate_topology X S"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   486
    by (auto simp: eq)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   487
  then show "S \<in> sigma_sets UNIV X"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   488
  proof induction
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   489
    case (UN K)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   490
    then have K: "\<And>k. k \<in> K \<Longrightarrow> open k"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   491
      unfolding eq by auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   492
    from ex_countable_basis obtain B :: "'a set set" where
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   493
      B:  "\<And>b. b \<in> B \<Longrightarrow> open b" "\<And>X. open X \<Longrightarrow> \<exists>b\<subseteq>B. (\<Union>b) = X" and "countable B"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   494
      by (auto simp: topological_basis_def)
69745
aec42cee2521 more canonical and less specialized syntax
nipkow
parents: 69739
diff changeset
   495
    from B(2)[OF K] obtain m where m: "\<And>k. k \<in> K \<Longrightarrow> m k \<subseteq> B" "\<And>k. k \<in> K \<Longrightarrow> \<Union>(m k) = k"
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   496
      by metis
63040
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   497
    define U where "U = (\<Union>k\<in>K. m k)"
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   498
    with m have "countable U"
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
   499
      by (intro countable_subset[OF _ \<open>countable B\<close>]) auto
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   500
    have "\<Union>U = (\<Union>A\<in>U. A)" by simp
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   501
    also have "\<dots> = \<Union>K"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   502
      unfolding U_def UN_simps by (simp add: m)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   503
    finally have "\<Union>U = \<Union>K" .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   504
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   505
    have "\<forall>b\<in>U. \<exists>k\<in>K. b \<subseteq> k"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   506
      using m by (auto simp: U_def)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   507
    then obtain u where u: "\<And>b. b \<in> U \<Longrightarrow> u b \<in> K" and "\<And>b. b \<in> U \<Longrightarrow> b \<subseteq> u b"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   508
      by metis
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   509
    then have "(\<Union>b\<in>U. u b) \<subseteq> \<Union>K" "\<Union>U \<subseteq> (\<Union>b\<in>U. u b)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   510
      by auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   511
    then have "\<Union>K = (\<Union>b\<in>U. u b)"
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
   512
      unfolding \<open>\<Union>U = \<Union>K\<close> by auto
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   513
    also have "\<dots> \<in> sigma_sets UNIV X"
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
   514
      using u UN by (intro X.countable_UN' \<open>countable U\<close>) auto
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   515
    finally show "\<Union>K \<in> sigma_sets UNIV X" .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   516
  qed auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   517
qed (auto simp: eq intro: generate_topology.Basis)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   518
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   519
lemma borel_eq_closed: "borel = sigma UNIV (Collect closed)"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   520
  unfolding borel_def
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   521
proof (intro sigma_eqI sigma_sets_eqI, safe)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   522
  fix x :: "'a set" assume "open x"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   523
  hence "x = UNIV - (UNIV - x)" by auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   524
  also have "\<dots> \<in> sigma_sets UNIV (Collect closed)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   525
    by (force intro: sigma_sets.Compl simp: \<open>open x\<close>)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   526
  finally show "x \<in> sigma_sets UNIV (Collect closed)" by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   527
next
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   528
  fix x :: "'a set" assume "closed x"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   529
  hence "x = UNIV - (UNIV - x)" by auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   530
  also have "\<dots> \<in> sigma_sets UNIV (Collect open)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   531
    by (force intro: sigma_sets.Compl simp: \<open>closed x\<close>)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   532
  finally show "x \<in> sigma_sets UNIV (Collect open)" by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   533
qed simp_all
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   534
69722
b5163b2132c5 minor tagging updates in 13 theories
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69683
diff changeset
   535
proposition borel_eq_countable_basis:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   536
  fixes B::"'a::topological_space set set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   537
  assumes "countable B"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   538
  assumes "topological_basis B"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   539
  shows "borel = sigma UNIV B"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   540
  unfolding borel_def
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   541
proof (intro sigma_eqI sigma_sets_eqI, safe)
69748
7aafd0472661 less odd class.second_countable_topology_def
immler
parents: 69745
diff changeset
   542
  interpret countable_basis "open" B using assms by (rule countable_basis_openI)
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   543
  fix X::"'a set" assume "open X"
69748
7aafd0472661 less odd class.second_countable_topology_def
immler
parents: 69745
diff changeset
   544
  from open_countable_basisE[OF this] obtain B' where B': "B' \<subseteq> B" "X = \<Union> B'" .
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   545
  then show "X \<in> sigma_sets UNIV B"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   546
    by (blast intro: sigma_sets_UNION \<open>countable B\<close> countable_subset)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   547
next
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   548
  fix b assume "b \<in> B"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   549
  hence "open b" by (rule topological_basis_open[OF assms(2)])
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   550
  thus "b \<in> sigma_sets UNIV (Collect open)" by auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   551
qed simp_all
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   552
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   553
lemma borel_measurable_continuous_on_restrict:
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   554
  fixes f :: "'a::topological_space \<Rightarrow> 'b::topological_space"
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   555
  assumes f: "continuous_on A f"
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   556
  shows "f \<in> borel_measurable (restrict_space borel A)"
57138
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   557
proof (rule borel_measurableI)
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   558
  fix S :: "'b set" assume "open S"
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   559
  with f obtain T where "f -` S \<inter> A = T \<inter> A" "open T"
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   560
    by (metis continuous_on_open_invariant)
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   561
  then show "f -` S \<inter> space (restrict_space borel A) \<in> sets (restrict_space borel A)"
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   562
    by (force simp add: sets_restrict_space space_restrict_space)
57137
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   563
qed
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   564
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
   565
lemma borel_measurable_continuous_onI: "continuous_on UNIV f \<Longrightarrow> f \<in> borel_measurable borel"
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   566
  by (drule borel_measurable_continuous_on_restrict) simp
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   567
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   568
lemma borel_measurable_continuous_on_if:
59415
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
   569
  "A \<in> sets borel \<Longrightarrow> continuous_on A f \<Longrightarrow> continuous_on (- A) g \<Longrightarrow>
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
   570
    (\<lambda>x. if x \<in> A then f x else g x) \<in> borel_measurable borel"
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
   571
  by (auto simp add: measurable_If_restrict_space_iff Collect_neg_eq
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
   572
           intro!: borel_measurable_continuous_on_restrict)
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   573
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   574
lemma borel_measurable_continuous_countable_exceptions:
57275
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
   575
  fixes f :: "'a::t1_space \<Rightarrow> 'b::topological_space"
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
   576
  assumes X: "countable X"
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
   577
  assumes "continuous_on (- X) f"
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
   578
  shows "f \<in> borel_measurable borel"
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
   579
proof (rule measurable_discrete_difference[OF _ X])
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
   580
  have "X \<in> sets borel"
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
   581
    by (rule sets.countable[OF _ X]) auto
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
   582
  then show "(\<lambda>x. if x \<in> X then undefined else f x) \<in> borel_measurable borel"
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
   583
    by (intro borel_measurable_continuous_on_if assms continuous_intros)
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
   584
qed auto
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
   585
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   586
lemma borel_measurable_continuous_on:
57138
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   587
  assumes f: "continuous_on UNIV f" and g: "g \<in> borel_measurable M"
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   588
  shows "(\<lambda>x. f (g x)) \<in> borel_measurable M"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
   589
  using measurable_comp[OF g borel_measurable_continuous_onI[OF f]] by (simp add: comp_def)
57138
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   590
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   591
lemma borel_measurable_continuous_on_indicator:
57138
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   592
  fixes f g :: "'a::topological_space \<Rightarrow> 'b::real_normed_vector"
59415
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
   593
  shows "A \<in> sets borel \<Longrightarrow> continuous_on A f \<Longrightarrow> (\<lambda>x. indicator A x *\<^sub>R f x) \<in> borel_measurable borel"
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
   594
  by (subst borel_measurable_restrict_space_iff[symmetric])
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
   595
     (auto intro: borel_measurable_continuous_on_restrict)
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   596
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   597
lemma borel_measurable_Pair[measurable (raw)]:
50881
ae630bab13da renamed countable_basis_space to second_countable_topology
hoelzl
parents: 50526
diff changeset
   598
  fixes f :: "'a \<Rightarrow> 'b::second_countable_topology" and g :: "'a \<Rightarrow> 'c::second_countable_topology"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   599
  assumes f[measurable]: "f \<in> borel_measurable M"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   600
  assumes g[measurable]: "g \<in> borel_measurable M"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   601
  shows "(\<lambda>x. (f x, g x)) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   602
proof (subst borel_eq_countable_basis)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   603
  let ?B = "SOME B::'b set set. countable B \<and> topological_basis B"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   604
  let ?C = "SOME B::'c set set. countable B \<and> topological_basis B"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   605
  let ?P = "(\<lambda>(b, c). b \<times> c) ` (?B \<times> ?C)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   606
  show "countable ?P" "topological_basis ?P"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   607
    by (auto intro!: countable_basis topological_basis_prod is_basis)
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   608
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   609
  show "(\<lambda>x. (f x, g x)) \<in> measurable M (sigma UNIV ?P)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   610
  proof (rule measurable_measure_of)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   611
    fix S assume "S \<in> ?P"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   612
    then obtain b c where "b \<in> ?B" "c \<in> ?C" and S: "S = b \<times> c" by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   613
    then have borel: "open b" "open c"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   614
      by (auto intro: is_basis topological_basis_open)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   615
    have "(\<lambda>x. (f x, g x)) -` S \<inter> space M = (f -` b \<inter> space M) \<inter> (g -` c \<inter> space M)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   616
      unfolding S by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   617
    also have "\<dots> \<in> sets M"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   618
      using borel by simp
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   619
    finally show "(\<lambda>x. (f x, g x)) -` S \<inter> space M \<in> sets M" .
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   620
  qed auto
39087
96984bf6fa5b Measurable on euclidean space is equiv. to measurable components
hoelzl
parents: 39083
diff changeset
   621
qed
96984bf6fa5b Measurable on euclidean space is equiv. to measurable components
hoelzl
parents: 39083
diff changeset
   622
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   623
lemma borel_measurable_continuous_Pair:
50881
ae630bab13da renamed countable_basis_space to second_countable_topology
hoelzl
parents: 50526
diff changeset
   624
  fixes f :: "'a \<Rightarrow> 'b::second_countable_topology" and g :: "'a \<Rightarrow> 'c::second_countable_topology"
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
   625
  assumes [measurable]: "f \<in> borel_measurable M"
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
   626
  assumes [measurable]: "g \<in> borel_measurable M"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   627
  assumes H: "continuous_on UNIV (\<lambda>x. H (fst x) (snd x))"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   628
  shows "(\<lambda>x. H (f x) (g x)) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   629
proof -
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   630
  have eq: "(\<lambda>x. H (f x) (g x)) = (\<lambda>x. (\<lambda>x. H (fst x) (snd x)) (f x, g x))" by auto
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   631
  show ?thesis
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   632
    unfolding eq by (rule borel_measurable_continuous_on[OF H]) auto
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   633
qed
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   634
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
   635
subsection \<open>Borel spaces on order topologies\<close>
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   636
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   637
lemma [measurable]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   638
  fixes a b :: "'a::linorder_topology"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   639
  shows lessThan_borel: "{..< a} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   640
    and greaterThan_borel: "{a <..} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   641
    and greaterThanLessThan_borel: "{a<..<b} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   642
    and atMost_borel: "{..a} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   643
    and atLeast_borel: "{a..} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   644
    and atLeastAtMost_borel: "{a..b} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   645
    and greaterThanAtMost_borel: "{a<..b} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   646
    and atLeastLessThan_borel: "{a..<b} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   647
  unfolding greaterThanAtMost_def atLeastLessThan_def
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   648
  by (blast intro: borel_open borel_closed open_lessThan open_greaterThan open_greaterThanLessThan
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   649
                   closed_atMost closed_atLeast closed_atLeastAtMost)+
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   650
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   651
lemma borel_Iio:
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   652
  "borel = sigma UNIV (range lessThan :: 'a::{linorder_topology, second_countable_topology} set set)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   653
  unfolding second_countable_borel_measurable[OF open_generated_order]
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   654
proof (intro sigma_eqI sigma_sets_eqI)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   655
  from countable_dense_setE guess D :: "'a set" . note D = this
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   656
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   657
  interpret L: sigma_algebra UNIV "sigma_sets UNIV (range lessThan)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   658
    by (rule sigma_algebra_sigma_sets) simp
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   659
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   660
  fix A :: "'a set" assume "A \<in> range lessThan \<union> range greaterThan"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   661
  then obtain y where "A = {y <..} \<or> A = {..< y}"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   662
    by blast
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   663
  then show "A \<in> sigma_sets UNIV (range lessThan)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   664
  proof
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   665
    assume A: "A = {y <..}"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   666
    show ?thesis
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   667
    proof cases
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   668
      assume "\<forall>x>y. \<exists>d. y < d \<and> d < x"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   669
      with D(2)[of "{y <..< x}" for x] have "\<forall>x>y. \<exists>d\<in>D. y < d \<and> d < x"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   670
        by (auto simp: set_eq_iff)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   671
      then have "A = UNIV - (\<Inter>d\<in>{d\<in>D. y < d}. {..< d})"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   672
        by (auto simp: A) (metis less_asym)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   673
      also have "\<dots> \<in> sigma_sets UNIV (range lessThan)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   674
        using D(1) by (intro L.Diff L.top L.countable_INT'') auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   675
      finally show ?thesis .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   676
    next
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   677
      assume "\<not> (\<forall>x>y. \<exists>d. y < d \<and> d < x)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   678
      then obtain x where "y < x"  "\<And>d. y < d \<Longrightarrow> \<not> d < x"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   679
        by auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   680
      then have "A = UNIV - {..< x}"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   681
        unfolding A by (auto simp: not_less[symmetric])
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   682
      also have "\<dots> \<in> sigma_sets UNIV (range lessThan)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   683
        by auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   684
      finally show ?thesis .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   685
    qed
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   686
  qed auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   687
qed auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   688
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   689
lemma borel_Ioi:
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   690
  "borel = sigma UNIV (range greaterThan :: 'a::{linorder_topology, second_countable_topology} set set)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   691
  unfolding second_countable_borel_measurable[OF open_generated_order]
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   692
proof (intro sigma_eqI sigma_sets_eqI)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   693
  from countable_dense_setE guess D :: "'a set" . note D = this
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   694
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   695
  interpret L: sigma_algebra UNIV "sigma_sets UNIV (range greaterThan)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   696
    by (rule sigma_algebra_sigma_sets) simp
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   697
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   698
  fix A :: "'a set" assume "A \<in> range lessThan \<union> range greaterThan"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   699
  then obtain y where "A = {y <..} \<or> A = {..< y}"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   700
    by blast
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   701
  then show "A \<in> sigma_sets UNIV (range greaterThan)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   702
  proof
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   703
    assume A: "A = {..< y}"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   704
    show ?thesis
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   705
    proof cases
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   706
      assume "\<forall>x<y. \<exists>d. x < d \<and> d < y"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   707
      with D(2)[of "{x <..< y}" for x] have "\<forall>x<y. \<exists>d\<in>D. x < d \<and> d < y"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   708
        by (auto simp: set_eq_iff)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   709
      then have "A = UNIV - (\<Inter>d\<in>{d\<in>D. d < y}. {d <..})"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   710
        by (auto simp: A) (metis less_asym)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   711
      also have "\<dots> \<in> sigma_sets UNIV (range greaterThan)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   712
        using D(1) by (intro L.Diff L.top L.countable_INT'') auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   713
      finally show ?thesis .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   714
    next
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   715
      assume "\<not> (\<forall>x<y. \<exists>d. x < d \<and> d < y)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   716
      then obtain x where "x < y"  "\<And>d. y > d \<Longrightarrow> x \<ge> d"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   717
        by (auto simp: not_less[symmetric])
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   718
      then have "A = UNIV - {x <..}"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   719
        unfolding A Compl_eq_Diff_UNIV[symmetric] by auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   720
      also have "\<dots> \<in> sigma_sets UNIV (range greaterThan)"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   721
        by auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   722
      finally show ?thesis .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   723
    qed
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   724
  qed auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   725
qed auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   726
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   727
lemma borel_measurableI_less:
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   728
  fixes f :: "'a \<Rightarrow> 'b::{linorder_topology, second_countable_topology}"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   729
  shows "(\<And>y. {x\<in>space M. f x < y} \<in> sets M) \<Longrightarrow> f \<in> borel_measurable M"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   730
  unfolding borel_Iio
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   731
  by (rule measurable_measure_of) (auto simp: Int_def conj_commute)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   732
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   733
lemma borel_measurableI_greater:
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   734
  fixes f :: "'a \<Rightarrow> 'b::{linorder_topology, second_countable_topology}"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   735
  shows "(\<And>y. {x\<in>space M. y < f x} \<in> sets M) \<Longrightarrow> f \<in> borel_measurable M"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   736
  unfolding borel_Ioi
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   737
  by (rule measurable_measure_of) (auto simp: Int_def conj_commute)
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   738
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   739
lemma borel_measurableI_le:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   740
  fixes f :: "'a \<Rightarrow> 'b::{linorder_topology, second_countable_topology}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   741
  shows "(\<And>y. {x\<in>space M. f x \<le> y} \<in> sets M) \<Longrightarrow> f \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   742
  by (rule borel_measurableI_greater) (auto simp: not_le[symmetric])
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   743
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   744
lemma borel_measurableI_ge:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   745
  fixes f :: "'a \<Rightarrow> 'b::{linorder_topology, second_countable_topology}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   746
  shows "(\<And>y. {x\<in>space M. y \<le> f x} \<in> sets M) \<Longrightarrow> f \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   747
  by (rule borel_measurableI_less) (auto simp: not_le[symmetric])
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   748
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   749
lemma borel_measurable_less[measurable]:
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   750
  fixes f :: "'a \<Rightarrow> 'b::{second_countable_topology, linorder_topology}"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   751
  assumes "f \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   752
  assumes "g \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   753
  shows "{w \<in> space M. f w < g w} \<in> sets M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   754
proof -
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   755
  have "{w \<in> space M. f w < g w} = (\<lambda>x. (f x, g x)) -` {x. fst x < snd x} \<inter> space M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   756
    by auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   757
  also have "\<dots> \<in> sets M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   758
    by (intro measurable_sets[OF borel_measurable_Pair borel_open, OF assms open_Collect_less]
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   759
              continuous_intros)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   760
  finally show ?thesis .
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   761
qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   762
69739
nipkow
parents: 69722
diff changeset
   763
lemma
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   764
  fixes f :: "'a \<Rightarrow> 'b::{second_countable_topology, linorder_topology}"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   765
  assumes f[measurable]: "f \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   766
  assumes g[measurable]: "g \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   767
  shows borel_measurable_le[measurable]: "{w \<in> space M. f w \<le> g w} \<in> sets M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   768
    and borel_measurable_eq[measurable]: "{w \<in> space M. f w = g w} \<in> sets M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   769
    and borel_measurable_neq: "{w \<in> space M. f w \<noteq> g w} \<in> sets M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   770
  unfolding eq_iff not_less[symmetric]
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   771
  by measurable
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   772
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   773
lemma borel_measurable_SUP[measurable (raw)]:
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   774
  fixes F :: "_ \<Rightarrow> _ \<Rightarrow> _::{complete_linorder, linorder_topology, second_countable_topology}"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   775
  assumes [simp]: "countable I"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   776
  assumes [measurable]: "\<And>i. i \<in> I \<Longrightarrow> F i \<in> borel_measurable M"
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
   777
  shows "(\<lambda>x. SUP i\<in>I. F i x) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   778
  by (rule borel_measurableI_greater) (simp add: less_SUP_iff)
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   779
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   780
lemma borel_measurable_INF[measurable (raw)]:
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   781
  fixes F :: "_ \<Rightarrow> _ \<Rightarrow> _::{complete_linorder, linorder_topology, second_countable_topology}"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   782
  assumes [simp]: "countable I"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   783
  assumes [measurable]: "\<And>i. i \<in> I \<Longrightarrow> F i \<in> borel_measurable M"
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
   784
  shows "(\<lambda>x. INF i\<in>I. F i x) \<in> borel_measurable M"
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   785
  by (rule borel_measurableI_less) (simp add: INF_less_iff)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   786
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   787
lemma borel_measurable_cSUP[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   788
  fixes F :: "_ \<Rightarrow> _ \<Rightarrow> 'a::{conditionally_complete_linorder, linorder_topology, second_countable_topology}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   789
  assumes [simp]: "countable I"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   790
  assumes [measurable]: "\<And>i. i \<in> I \<Longrightarrow> F i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   791
  assumes bdd: "\<And>x. x \<in> space M \<Longrightarrow> bdd_above ((\<lambda>i. F i x) ` I)"
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
   792
  shows "(\<lambda>x. SUP i\<in>I. F i x) \<in> borel_measurable M"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   793
proof cases
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   794
  assume "I = {}" then show ?thesis
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   795
    unfolding \<open>I = {}\<close> image_empty by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   796
next
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   797
  assume "I \<noteq> {}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   798
  show ?thesis
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   799
  proof (rule borel_measurableI_le)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   800
    fix y
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   801
    have "{x \<in> space M. \<forall>i\<in>I. F i x \<le> y} \<in> sets M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   802
      by measurable
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
   803
    also have "{x \<in> space M. \<forall>i\<in>I. F i x \<le> y} = {x \<in> space M. (SUP i\<in>I. F i x) \<le> y}"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   804
      by (simp add: cSUP_le_iff \<open>I \<noteq> {}\<close> bdd cong: conj_cong)
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
   805
    finally show "{x \<in> space M. (SUP i\<in>I. F i x) \<le>  y} \<in> sets M"  .
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   806
  qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   807
qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   808
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   809
lemma borel_measurable_cINF[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   810
  fixes F :: "_ \<Rightarrow> _ \<Rightarrow> 'a::{conditionally_complete_linorder, linorder_topology, second_countable_topology}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   811
  assumes [simp]: "countable I"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   812
  assumes [measurable]: "\<And>i. i \<in> I \<Longrightarrow> F i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   813
  assumes bdd: "\<And>x. x \<in> space M \<Longrightarrow> bdd_below ((\<lambda>i. F i x) ` I)"
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
   814
  shows "(\<lambda>x. INF i\<in>I. F i x) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   815
proof cases
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   816
  assume "I = {}" then show ?thesis
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   817
    unfolding \<open>I = {}\<close> image_empty by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   818
next
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   819
  assume "I \<noteq> {}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   820
  show ?thesis
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   821
  proof (rule borel_measurableI_ge)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   822
    fix y
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   823
    have "{x \<in> space M. \<forall>i\<in>I. y \<le> F i x} \<in> sets M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   824
      by measurable
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
   825
    also have "{x \<in> space M. \<forall>i\<in>I. y \<le> F i x} = {x \<in> space M. y \<le> (INF i\<in>I. F i x)}"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   826
      by (simp add: le_cINF_iff \<open>I \<noteq> {}\<close> bdd cong: conj_cong)
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
   827
    finally show "{x \<in> space M. y \<le> (INF i\<in>I. F i x)} \<in> sets M"  .
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   828
  qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   829
qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   830
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   831
lemma borel_measurable_lfp[consumes 1, case_names continuity step]:
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   832
  fixes F :: "('a \<Rightarrow> 'b) \<Rightarrow> ('a \<Rightarrow> 'b::{complete_linorder, linorder_topology, second_countable_topology})"
60172
423273355b55 rename continuous and down_continuous in Order_Continuity to sup_/inf_continuous; relate them with topological continuity
hoelzl
parents: 60150
diff changeset
   833
  assumes "sup_continuous F"
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   834
  assumes *: "\<And>f. f \<in> borel_measurable M \<Longrightarrow> F f \<in> borel_measurable M"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   835
  shows "lfp F \<in> borel_measurable M"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   836
proof -
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   837
  { fix i have "((F ^^ i) bot) \<in> borel_measurable M"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   838
      by (induct i) (auto intro!: *) }
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   839
  then have "(\<lambda>x. SUP i. (F ^^ i) bot x) \<in> borel_measurable M"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   840
    by measurable
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   841
  also have "(\<lambda>x. SUP i. (F ^^ i) bot x) = (SUP i. (F ^^ i) bot)"
69861
62e47f06d22c avoid context-sensitive simp rules whose context-free form (image_comp) is not simp by default
haftmann
parents: 69748
diff changeset
   842
    by (auto simp add: image_comp)
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   843
  also have "(SUP i. (F ^^ i) bot) = lfp F"
60172
423273355b55 rename continuous and down_continuous in Order_Continuity to sup_/inf_continuous; relate them with topological continuity
hoelzl
parents: 60150
diff changeset
   844
    by (rule sup_continuous_lfp[symmetric]) fact
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   845
  finally show ?thesis .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   846
qed
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   847
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   848
lemma borel_measurable_gfp[consumes 1, case_names continuity step]:
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   849
  fixes F :: "('a \<Rightarrow> 'b) \<Rightarrow> ('a \<Rightarrow> 'b::{complete_linorder, linorder_topology, second_countable_topology})"
60172
423273355b55 rename continuous and down_continuous in Order_Continuity to sup_/inf_continuous; relate them with topological continuity
hoelzl
parents: 60150
diff changeset
   850
  assumes "inf_continuous F"
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   851
  assumes *: "\<And>f. f \<in> borel_measurable M \<Longrightarrow> F f \<in> borel_measurable M"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   852
  shows "gfp F \<in> borel_measurable M"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   853
proof -
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   854
  { fix i have "((F ^^ i) top) \<in> borel_measurable M"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   855
      by (induct i) (auto intro!: * simp: bot_fun_def) }
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   856
  then have "(\<lambda>x. INF i. (F ^^ i) top x) \<in> borel_measurable M"
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   857
    by measurable
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   858
  also have "(\<lambda>x. INF i. (F ^^ i) top x) = (INF i. (F ^^ i) top)"
69861
62e47f06d22c avoid context-sensitive simp rules whose context-free form (image_comp) is not simp by default
haftmann
parents: 69748
diff changeset
   859
    by (auto simp add: image_comp)
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   860
  also have "\<dots> = gfp F"
60172
423273355b55 rename continuous and down_continuous in Order_Continuity to sup_/inf_continuous; relate them with topological continuity
hoelzl
parents: 60150
diff changeset
   861
    by (rule inf_continuous_gfp[symmetric]) fact
59088
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   862
  finally show ?thesis .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   863
qed
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   864
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   865
lemma borel_measurable_max[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   866
  "f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow> (\<lambda>x. max (g x) (f x) :: 'b::{second_countable_topology, linorder_topology}) \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   867
  by (rule borel_measurableI_less) simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   868
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   869
lemma borel_measurable_min[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   870
  "f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow> (\<lambda>x. min (g x) (f x) :: 'b::{second_countable_topology, linorder_topology}) \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   871
  by (rule borel_measurableI_greater) simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   872
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   873
lemma borel_measurable_Min[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   874
  "finite I \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> f i \<in> borel_measurable M) \<Longrightarrow> (\<lambda>x. Min ((\<lambda>i. f i x)`I) :: 'b::{second_countable_topology, linorder_topology}) \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   875
proof (induct I rule: finite_induct)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   876
  case (insert i I) then show ?case
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   877
    by (cases "I = {}") auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   878
qed auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   879
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   880
lemma borel_measurable_Max[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   881
  "finite I \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> f i \<in> borel_measurable M) \<Longrightarrow> (\<lambda>x. Max ((\<lambda>i. f i x)`I) :: 'b::{second_countable_topology, linorder_topology}) \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   882
proof (induct I rule: finite_induct)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   883
  case (insert i I) then show ?case
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   884
    by (cases "I = {}") auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   885
qed auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   886
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   887
lemma borel_measurable_sup[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   888
  "f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow> (\<lambda>x. sup (g x) (f x) :: 'b::{lattice, second_countable_topology, linorder_topology}) \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   889
  unfolding sup_max by measurable
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   890
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   891
lemma borel_measurable_inf[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   892
  "f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow> (\<lambda>x. inf (g x) (f x) :: 'b::{lattice, second_countable_topology, linorder_topology}) \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   893
  unfolding inf_min by measurable
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   894
69739
nipkow
parents: 69722
diff changeset
   895
lemma [measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   896
  fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> 'b::{complete_linorder, second_countable_topology, linorder_topology}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   897
  assumes "\<And>i. f i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   898
  shows borel_measurable_liminf: "(\<lambda>x. liminf (\<lambda>i. f i x)) \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   899
    and borel_measurable_limsup: "(\<lambda>x. limsup (\<lambda>i. f i x)) \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   900
  unfolding liminf_SUP_INF limsup_INF_SUP using assms by auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   901
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   902
lemma measurable_convergent[measurable (raw)]:
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   903
  fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> 'b::{complete_linorder, second_countable_topology, linorder_topology}"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   904
  assumes [measurable]: "\<And>i. f i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   905
  shows "Measurable.pred M (\<lambda>x. convergent (\<lambda>i. f i x))"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   906
  unfolding convergent_ereal by measurable
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   907
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   908
lemma sets_Collect_convergent[measurable]:
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   909
  fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> 'b::{complete_linorder, second_countable_topology, linorder_topology}"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   910
  assumes f[measurable]: "\<And>i. f i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   911
  shows "{x\<in>space M. convergent (\<lambda>i. f i x)} \<in> sets M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   912
  by measurable
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   913
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   914
lemma borel_measurable_lim[measurable (raw)]:
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   915
  fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> 'b::{complete_linorder, second_countable_topology, linorder_topology}"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   916
  assumes [measurable]: "\<And>i. f i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   917
  shows "(\<lambda>x. lim (\<lambda>i. f i x)) \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   918
proof -
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   919
  have "\<And>x. lim (\<lambda>i. f i x) = (if convergent (\<lambda>i. f i x) then limsup (\<lambda>i. f i x) else (THE i. False))"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   920
    by (simp add: lim_def convergent_def convergent_limsup_cl)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   921
  then show ?thesis
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   922
    by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   923
qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   924
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   925
lemma borel_measurable_LIMSEQ_order:
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   926
  fixes u :: "nat \<Rightarrow> 'a \<Rightarrow> 'b::{complete_linorder, second_countable_topology, linorder_topology}"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   927
  assumes u': "\<And>x. x \<in> space M \<Longrightarrow> (\<lambda>i. u i x) \<longlonglongrightarrow> u' x"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   928
  and u: "\<And>i. u i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   929
  shows "u' \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   930
proof -
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   931
  have "\<And>x. x \<in> space M \<Longrightarrow> u' x = liminf (\<lambda>n. u n x)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   932
    using u' by (simp add: lim_imp_Liminf[symmetric])
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   933
  with u show ?thesis by (simp cong: measurable_cong)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   934
qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   935
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
   936
subsection \<open>Borel spaces on topological monoids\<close>
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   937
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   938
lemma borel_measurable_add[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   939
  fixes f g :: "'a \<Rightarrow> 'b::{second_countable_topology, topological_monoid_add}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   940
  assumes f: "f \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   941
  assumes g: "g \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   942
  shows "(\<lambda>x. f x + g x) \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   943
  using f g by (rule borel_measurable_continuous_Pair) (intro continuous_intros)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   944
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   945
lemma borel_measurable_sum[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   946
  fixes f :: "'c \<Rightarrow> 'a \<Rightarrow> 'b::{second_countable_topology, topological_comm_monoid_add}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   947
  assumes "\<And>i. i \<in> S \<Longrightarrow> f i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   948
  shows "(\<lambda>x. \<Sum>i\<in>S. f i x) \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   949
proof cases
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   950
  assume "finite S"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   951
  thus ?thesis using assms by induct auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   952
qed simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   953
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   954
lemma borel_measurable_suminf_order[measurable (raw)]:
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   955
  fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> 'b::{complete_linorder, second_countable_topology, linorder_topology, topological_comm_monoid_add}"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   956
  assumes f[measurable]: "\<And>i. f i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   957
  shows "(\<lambda>x. suminf (\<lambda>i. f i x)) \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   958
  unfolding suminf_def sums_def[abs_def] lim_def[symmetric] by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   959
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
   960
subsection \<open>Borel spaces on Euclidean spaces\<close>
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   961
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   962
lemma borel_measurable_inner[measurable (raw)]:
50881
ae630bab13da renamed countable_basis_space to second_countable_topology
hoelzl
parents: 50526
diff changeset
   963
  fixes f g :: "'a \<Rightarrow> 'b::{second_countable_topology, real_inner}"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   964
  assumes "f \<in> borel_measurable M"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   965
  assumes "g \<in> borel_measurable M"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   966
  shows "(\<lambda>x. f x \<bullet> g x) \<in> borel_measurable M"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   967
  using assms
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   968
  by (rule borel_measurable_continuous_Pair) (intro continuous_intros)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   969
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   970
notation
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   971
  eucl_less (infix "<e" 50)
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   972
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   973
lemma box_oc: "{x. a <e x \<and> x \<le> b} = {x. a <e x} \<inter> {..b}"
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   974
  and box_co: "{x. a \<le> x \<and> x <e b} = {a..} \<inter> {x. x <e b}"
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   975
  by auto
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   976
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   977
lemma eucl_ivals[measurable]:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
   978
  fixes a b :: "'a::ordered_euclidean_space"
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   979
  shows "{x. x <e a} \<in> sets borel"
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   980
    and "{x. a <e x} \<in> sets borel"
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
   981
    and "{..a} \<in> sets borel"
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
   982
    and "{a..} \<in> sets borel"
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
   983
    and "{a..b} \<in> sets borel"
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   984
    and  "{x. a <e x \<and> x \<le> b} \<in> sets borel"
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   985
    and "{x. a \<le> x \<and>  x <e b} \<in> sets borel"
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   986
  unfolding box_oc box_co
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   987
  by (auto intro: borel_open borel_closed)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   988
69739
nipkow
parents: 69722
diff changeset
   989
lemma
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
   990
  fixes i :: "'a::{second_countable_topology, real_inner}"
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
   991
  shows hafspace_less_borel: "{x. a < x \<bullet> i} \<in> sets borel"
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
   992
    and hafspace_greater_borel: "{x. x \<bullet> i < a} \<in> sets borel"
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
   993
    and hafspace_less_eq_borel: "{x. a \<le> x \<bullet> i} \<in> sets borel"
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
   994
    and hafspace_greater_eq_borel: "{x. x \<bullet> i \<le> a} \<in> sets borel"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   995
  by simp_all
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   996
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   997
lemma borel_eq_box:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
   998
  "borel = sigma UNIV (range (\<lambda> (a, b). box a b :: 'a :: euclidean_space set))"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
   999
    (is "_ = ?SIGMA")
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1000
proof (rule borel_eq_sigmaI1[OF borel_def])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1001
  fix M :: "'a set" assume "M \<in> {S. open S}"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1002
  then have "open M" by simp
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1003
  show "M \<in> ?SIGMA"
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
  1004
    apply (subst open_UNION_box[OF \<open>open M\<close>])
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1005
    apply (safe intro!: sets.countable_UN' countable_PiE countable_Collect)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1006
    apply (auto intro: countable_rat)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1007
    done
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1008
qed (auto simp: box_def)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1009
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1010
lemma halfspace_gt_in_halfspace:
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1011
  assumes i: "i \<in> A"
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1012
  shows "{x::'a. a < x \<bullet> i} \<in>
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1013
    sigma_sets UNIV ((\<lambda> (a, i). {x::'a::euclidean_space. x \<bullet> i < a}) ` (UNIV \<times> A))"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1014
  (is "?set \<in> ?SIGMA")
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1015
proof -
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1016
  interpret sigma_algebra UNIV ?SIGMA
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1017
    by (intro sigma_algebra_sigma_sets) simp_all
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1018
  have *: "?set = (\<Union>n. UNIV - {x::'a. x \<bullet> i < a + 1 / real (Suc n)})"
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: 61424
diff changeset
  1019
  proof (safe, simp_all add: not_less del: of_nat_Suc)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1020
    fix x :: 'a assume "a < x \<bullet> i"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1021
    with reals_Archimedean[of "x \<bullet> i - a"]
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1022
    obtain n where "a + 1 / real (Suc n) < x \<bullet> i"
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1023
      by (auto simp: field_simps)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1024
    then show "\<exists>n. a + 1 / real (Suc n) \<le> x \<bullet> i"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1025
      by (blast intro: less_imp_le)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1026
  next
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1027
    fix x n
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1028
    have "a < a + 1 / real (Suc n)" by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1029
    also assume "\<dots> \<le> x"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1030
    finally show "a < x" .
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1031
  qed
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1032
  show "?set \<in> ?SIGMA" unfolding *
61424
c3658c18b7bc prod_case as canonical name for product type eliminator
haftmann
parents: 61284
diff changeset
  1033
    by (auto intro!: Diff sigma_sets_Inter i)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1034
qed
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1035
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1036
lemma borel_eq_halfspace_less:
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1037
  "borel = sigma UNIV ((\<lambda>(a, i). {x::'a::euclidean_space. x \<bullet> i < a}) ` (UNIV \<times> Basis))"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1038
  (is "_ = ?SIGMA")
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1039
proof (rule borel_eq_sigmaI2[OF borel_eq_box])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1040
  fix a b :: 'a
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1041
  have "box a b = {x\<in>space ?SIGMA. \<forall>i\<in>Basis. a \<bullet> i < x \<bullet> i \<and> x \<bullet> i < b \<bullet> i}"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1042
    by (auto simp: box_def)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1043
  also have "\<dots> \<in> sets ?SIGMA"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1044
    by (intro sets.sets_Collect_conj sets.sets_Collect_finite_All sets.sets_Collect_const)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1045
       (auto intro!: halfspace_gt_in_halfspace countable_PiE countable_rat)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1046
  finally show "box a b \<in> sets ?SIGMA" .
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1047
qed auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1048
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1049
lemma borel_eq_halfspace_le:
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1050
  "borel = sigma UNIV ((\<lambda> (a, i). {x::'a::euclidean_space. x \<bullet> i \<le> a}) ` (UNIV \<times> Basis))"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1051
  (is "_ = ?SIGMA")
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1052
proof (rule borel_eq_sigmaI2[OF borel_eq_halfspace_less])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1053
  fix a :: real and i :: 'a assume "(a, i) \<in> UNIV \<times> Basis"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1054
  then have i: "i \<in> Basis" by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1055
  have *: "{x::'a. x\<bullet>i < a} = (\<Union>n. {x. x\<bullet>i \<le> a - 1/real (Suc n)})"
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: 61424
diff changeset
  1056
  proof (safe, simp_all del: of_nat_Suc)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1057
    fix x::'a assume *: "x\<bullet>i < a"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1058
    with reals_Archimedean[of "a - x\<bullet>i"]
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1059
    obtain n where "x \<bullet> i < a - 1 / (real (Suc n))"
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1060
      by (auto simp: field_simps)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1061
    then show "\<exists>n. x \<bullet> i \<le> a - 1 / (real (Suc n))"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1062
      by (blast intro: less_imp_le)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1063
  next
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1064
    fix x::'a and n
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1065
    assume "x\<bullet>i \<le> a - 1 / real (Suc n)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1066
    also have "\<dots> < a" by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1067
    finally show "x\<bullet>i < a" .
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1068
  qed
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1069
  show "{x. x\<bullet>i < a} \<in> ?SIGMA" unfolding *
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1070
    by (intro sets.countable_UN) (auto intro: i)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1071
qed auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1072
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1073
lemma borel_eq_halfspace_ge:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1074
  "borel = sigma UNIV ((\<lambda> (a, i). {x::'a::euclidean_space. a \<le> x \<bullet> i}) ` (UNIV \<times> Basis))"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1075
  (is "_ = ?SIGMA")
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1076
proof (rule borel_eq_sigmaI2[OF borel_eq_halfspace_less])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1077
  fix a :: real and i :: 'a assume i: "(a, i) \<in> UNIV \<times> Basis"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1078
  have *: "{x::'a. x\<bullet>i < a} = space ?SIGMA - {x::'a. a \<le> x\<bullet>i}" by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1079
  show "{x. x\<bullet>i < a} \<in> ?SIGMA" unfolding *
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1080
    using i by (intro sets.compl_sets) auto
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1081
qed auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1082
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1083
lemma borel_eq_halfspace_greater:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1084
  "borel = sigma UNIV ((\<lambda> (a, i). {x::'a::euclidean_space. a < x \<bullet> i}) ` (UNIV \<times> Basis))"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1085
  (is "_ = ?SIGMA")
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1086
proof (rule borel_eq_sigmaI2[OF borel_eq_halfspace_le])
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1087
  fix a :: real and i :: 'a assume "(a, i) \<in> (UNIV \<times> Basis)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1088
  then have i: "i \<in> Basis" by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1089
  have *: "{x::'a. x\<bullet>i \<le> a} = space ?SIGMA - {x::'a. a < x\<bullet>i}" by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1090
  show "{x. x\<bullet>i \<le> a} \<in> ?SIGMA" unfolding *
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1091
    by (intro sets.compl_sets) (auto intro: i)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1092
qed auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1093
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1094
lemma borel_eq_atMost:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1095
  "borel = sigma UNIV (range (\<lambda>a. {..a::'a::ordered_euclidean_space}))"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1096
  (is "_ = ?SIGMA")
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1097
proof (rule borel_eq_sigmaI4[OF borel_eq_halfspace_le])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1098
  fix a :: real and i :: 'a assume "(a, i) \<in> UNIV \<times> Basis"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1099
  then have "i \<in> Basis" by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1100
  then have *: "{x::'a. x\<bullet>i \<le> a} = (\<Union>k::nat. {.. (\<Sum>n\<in>Basis. (if n = i then a else real k)*\<^sub>R n)})"
62390
842917225d56 more canonical names
nipkow
parents: 62372
diff changeset
  1101
  proof (safe, simp_all add: eucl_le[where 'a='a] split: if_split_asm)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1102
    fix x :: 'a
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1103
    from real_arch_simple[of "Max ((\<lambda>i. x\<bullet>i)`Basis)"] guess k::nat ..
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1104
    then have "\<And>i. i \<in> Basis \<Longrightarrow> x\<bullet>i \<le> real k"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1105
      by (subst (asm) Max_le_iff) auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1106
    then show "\<exists>k::nat. \<forall>ia\<in>Basis. ia \<noteq> i \<longrightarrow> x \<bullet> ia \<le> real k"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1107
      by (auto intro!: exI[of _ k])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1108
  qed
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1109
  show "{x. x\<bullet>i \<le> a} \<in> ?SIGMA" unfolding *
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1110
    by (intro sets.countable_UN) auto
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1111
qed auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1112
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1113
lemma borel_eq_greaterThan:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1114
  "borel = sigma UNIV (range (\<lambda>a::'a::ordered_euclidean_space. {x. a <e x}))"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1115
  (is "_ = ?SIGMA")
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1116
proof (rule borel_eq_sigmaI4[OF borel_eq_halfspace_le])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1117
  fix a :: real and i :: 'a assume "(a, i) \<in> UNIV \<times> Basis"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1118
  then have i: "i \<in> Basis" by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1119
  have "{x::'a. x\<bullet>i \<le> a} = UNIV - {x::'a. a < x\<bullet>i}" by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1120
  also have *: "{x::'a. a < x\<bullet>i} =
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1121
      (\<Union>k::nat. {x. (\<Sum>n\<in>Basis. (if n = i then a else -real k) *\<^sub>R n) <e x})" using i
62390
842917225d56 more canonical names
nipkow
parents: 62372
diff changeset
  1122
  proof (safe, simp_all add: eucl_less_def split: if_split_asm)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1123
    fix x :: 'a
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1124
    from reals_Archimedean2[of "Max ((\<lambda>i. -x\<bullet>i)`Basis)"]
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1125
    guess k::nat .. note k = this
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1126
    { fix i :: 'a assume "i \<in> Basis"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1127
      then have "-x\<bullet>i < real k"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1128
        using k by (subst (asm) Max_less_iff) auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1129
      then have "- real k < x\<bullet>i" by simp }
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1130
    then show "\<exists>k::nat. \<forall>ia\<in>Basis. ia \<noteq> i \<longrightarrow> -real k < x \<bullet> ia"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1131
      by (auto intro!: exI[of _ k])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1132
  qed
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1133
  finally show "{x. x\<bullet>i \<le> a} \<in> ?SIGMA"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1134
    apply (simp only:)
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1135
    apply (intro sets.countable_UN sets.Diff)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1136
    apply (auto intro: sigma_sets_top)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1137
    done
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1138
qed auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1139
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1140
lemma borel_eq_lessThan:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1141
  "borel = sigma UNIV (range (\<lambda>a::'a::ordered_euclidean_space. {x. x <e a}))"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1142
  (is "_ = ?SIGMA")
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1143
proof (rule borel_eq_sigmaI4[OF borel_eq_halfspace_ge])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1144
  fix a :: real and i :: 'a assume "(a, i) \<in> UNIV \<times> Basis"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1145
  then have i: "i \<in> Basis" by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1146
  have "{x::'a. a \<le> x\<bullet>i} = UNIV - {x::'a. x\<bullet>i < a}" by auto
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
  1147
  also have *: "{x::'a. x\<bullet>i < a} = (\<Union>k::nat. {x. x <e (\<Sum>n\<in>Basis. (if n = i then a else real k) *\<^sub>R n)})" using \<open>i\<in> Basis\<close>
62390
842917225d56 more canonical names
nipkow
parents: 62372
diff changeset
  1148
  proof (safe, simp_all add: eucl_less_def split: if_split_asm)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1149
    fix x :: 'a
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1150
    from reals_Archimedean2[of "Max ((\<lambda>i. x\<bullet>i)`Basis)"]
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1151
    guess k::nat .. note k = this
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1152
    { fix i :: 'a assume "i \<in> Basis"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1153
      then have "x\<bullet>i < real k"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1154
        using k by (subst (asm) Max_less_iff) auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1155
      then have "x\<bullet>i < real k" by simp }
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1156
    then show "\<exists>k::nat. \<forall>ia\<in>Basis. ia \<noteq> i \<longrightarrow> x \<bullet> ia < real k"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1157
      by (auto intro!: exI[of _ k])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1158
  qed
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1159
  finally show "{x. a \<le> x\<bullet>i} \<in> ?SIGMA"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1160
    apply (simp only:)
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1161
    apply (intro sets.countable_UN sets.Diff)
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1162
    apply (auto intro: sigma_sets_top )
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1163
    done
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1164
qed auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1165
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1166
lemma borel_eq_atLeastAtMost:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1167
  "borel = sigma UNIV (range (\<lambda>(a,b). {a..b} ::'a::ordered_euclidean_space set))"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1168
  (is "_ = ?SIGMA")
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1169
proof (rule borel_eq_sigmaI5[OF borel_eq_atMost])
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1170
  fix a::'a
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1171
  have *: "{..a} = (\<Union>n::nat. {- real n *\<^sub>R One .. a})"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1172
  proof (safe, simp_all add: eucl_le[where 'a='a])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1173
    fix x :: 'a
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1174
    from real_arch_simple[of "Max ((\<lambda>i. - x\<bullet>i)`Basis)"]
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1175
    guess k::nat .. note k = this
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1176
    { fix i :: 'a assume "i \<in> Basis"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1177
      with k have "- x\<bullet>i \<le> real k"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1178
        by (subst (asm) Max_le_iff) (auto simp: field_simps)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1179
      then have "- real k \<le> x\<bullet>i" by simp }
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1180
    then show "\<exists>n::nat. \<forall>i\<in>Basis. - real n \<le> x \<bullet> i"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1181
      by (auto intro!: exI[of _ k])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1182
  qed
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1183
  show "{..a} \<in> ?SIGMA" unfolding *
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1184
    by (intro sets.countable_UN)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1185
       (auto intro!: sigma_sets_top)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1186
qed auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1187
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1188
lemma borel_set_induct[consumes 1, case_names empty interval compl union]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1189
  assumes "A \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1190
  assumes empty: "P {}" and int: "\<And>a b. a \<le> b \<Longrightarrow> P {a..b}" and compl: "\<And>A. A \<in> sets borel \<Longrightarrow> P A \<Longrightarrow> P (-A)" and
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1191
          un: "\<And>f. disjoint_family f \<Longrightarrow> (\<And>i. f i \<in> sets borel) \<Longrightarrow>  (\<And>i. P (f i)) \<Longrightarrow> P (\<Union>i::nat. f i)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1192
  shows "P (A::real set)"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1193
proof -
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1194
  let ?G = "range (\<lambda>(a,b). {a..b::real})"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1195
  have "Int_stable ?G" "?G \<subseteq> Pow UNIV" "A \<in> sigma_sets UNIV ?G"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1196
      using assms(1) by (auto simp add: borel_eq_atLeastAtMost Int_stable_def)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1197
  thus ?thesis
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1198
  proof (induction rule: sigma_sets_induct_disjoint)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1199
    case (union f)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1200
      from union.hyps(2) have "\<And>i. f i \<in> sets borel" by (auto simp: borel_eq_atLeastAtMost)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1201
      with union show ?case by (auto intro: un)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1202
  next
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1203
    case (basic A)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1204
    then obtain a b where "A = {a .. b}" by auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1205
    then show ?case
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1206
      by (cases "a \<le> b") (auto intro: int empty)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1207
  qed (auto intro: empty compl simp: Compl_eq_Diff_UNIV[symmetric] borel_eq_atLeastAtMost)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1208
qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1209
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1210
lemma borel_sigma_sets_Ioc: "borel = sigma UNIV (range (\<lambda>(a, b). {a <.. b::real}))"
57447
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
  1211
proof (rule borel_eq_sigmaI5[OF borel_eq_atMost])
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
  1212
  fix i :: real
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
  1213
  have "{..i} = (\<Union>j::nat. {-j <.. i})"
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
  1214
    by (auto simp: minus_less_iff reals_Archimedean2)
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
  1215
  also have "\<dots> \<in> sets (sigma UNIV (range (\<lambda>(i, j). {i<..j})))"
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1216
    by (intro sets.countable_nat_UN) auto
57447
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
  1217
  finally show "{..i} \<in> sets (sigma UNIV (range (\<lambda>(i, j). {i<..j})))" .
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
  1218
qed simp
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
  1219
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1220
lemma eucl_lessThan: "{x::real. x <e a} = lessThan a"
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1221
  by (simp add: eucl_less_def lessThan_def)
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1222
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1223
lemma borel_eq_atLeastLessThan:
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1224
  "borel = sigma UNIV (range (\<lambda>(a, b). {a ..< b :: real}))" (is "_ = ?SIGMA")
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1225
proof (rule borel_eq_sigmaI5[OF borel_eq_lessThan])
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1226
  have move_uminus: "\<And>x y::real. -x \<le> y \<longleftrightarrow> -y \<le> x" by auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1227
  fix x :: real
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1228
  have "{..<x} = (\<Union>i::nat. {-real i ..< x})"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1229
    by (auto simp: move_uminus real_arch_simple)
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1230
  then show "{y. y <e x} \<in> ?SIGMA"
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1231
    by (auto intro: sigma_sets.intros(2-) simp: eucl_lessThan)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1232
qed auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1233
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1234
lemma borel_measurable_halfspacesI:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1235
  fixes f :: "'a \<Rightarrow> 'c::euclidean_space"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1236
  assumes F: "borel = sigma UNIV (F ` (UNIV \<times> Basis))"
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1237
  and S_eq: "\<And>a i. S a i = f -` F (a,i) \<inter> space M"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1238
  shows "f \<in> borel_measurable M = (\<forall>i\<in>Basis. \<forall>a::real. S a i \<in> sets M)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1239
proof safe
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1240
  fix a :: real and i :: 'b assume i: "i \<in> Basis" and f: "f \<in> borel_measurable M"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1241
  then show "S a i \<in> sets M" unfolding assms
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1242
    by (auto intro!: measurable_sets simp: assms(1))
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1243
next
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1244
  assume a: "\<forall>i\<in>Basis. \<forall>a. S a i \<in> sets M"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1245
  then show "f \<in> borel_measurable M"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1246
    by (auto intro!: measurable_measure_of simp: S_eq F)
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1247
qed
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1248
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1249
lemma borel_measurable_iff_halfspace_le:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1250
  fixes f :: "'a \<Rightarrow> 'c::euclidean_space"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1251
  shows "f \<in> borel_measurable M = (\<forall>i\<in>Basis. \<forall>a. {w \<in> space M. f w \<bullet> i \<le> a} \<in> sets M)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1252
  by (rule borel_measurable_halfspacesI[OF borel_eq_halfspace_le]) auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1253
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1254
lemma borel_measurable_iff_halfspace_less:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1255
  fixes f :: "'a \<Rightarrow> 'c::euclidean_space"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1256
  shows "f \<in> borel_measurable M \<longleftrightarrow> (\<forall>i\<in>Basis. \<forall>a. {w \<in> space M. f w \<bullet> i < a} \<in> sets M)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1257
  by (rule borel_measurable_halfspacesI[OF borel_eq_halfspace_less]) auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1258
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1259
lemma borel_measurable_iff_halfspace_ge:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1260
  fixes f :: "'a \<Rightarrow> 'c::euclidean_space"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1261
  shows "f \<in> borel_measurable M = (\<forall>i\<in>Basis. \<forall>a. {w \<in> space M. a \<le> f w \<bullet> i} \<in> sets M)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1262
  by (rule borel_measurable_halfspacesI[OF borel_eq_halfspace_ge]) auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1263
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1264
lemma borel_measurable_iff_halfspace_greater:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1265
  fixes f :: "'a \<Rightarrow> 'c::euclidean_space"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1266
  shows "f \<in> borel_measurable M \<longleftrightarrow> (\<forall>i\<in>Basis. \<forall>a. {w \<in> space M. a < f w \<bullet> i} \<in> sets M)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1267
  by (rule borel_measurable_halfspacesI[OF borel_eq_halfspace_greater]) auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1268
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1269
lemma borel_measurable_iff_le:
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1270
  "(f::'a \<Rightarrow> real) \<in> borel_measurable M = (\<forall>a. {w \<in> space M. f w \<le> a} \<in> sets M)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1271
  using borel_measurable_iff_halfspace_le[where 'c=real] by simp
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1272
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1273
lemma borel_measurable_iff_less:
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1274
  "(f::'a \<Rightarrow> real) \<in> borel_measurable M = (\<forall>a. {w \<in> space M. f w < a} \<in> sets M)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1275
  using borel_measurable_iff_halfspace_less[where 'c=real] by simp
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1276
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1277
lemma borel_measurable_iff_ge:
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1278
  "(f::'a \<Rightarrow> real) \<in> borel_measurable M = (\<forall>a. {w \<in> space M. a \<le> f w} \<in> sets M)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1279
  using borel_measurable_iff_halfspace_ge[where 'c=real]
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1280
  by simp
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1281
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1282
lemma borel_measurable_iff_greater:
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1283
  "(f::'a \<Rightarrow> real) \<in> borel_measurable M = (\<forall>a. {w \<in> space M. a < f w} \<in> sets M)"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1284
  using borel_measurable_iff_halfspace_greater[where 'c=real] by simp
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1285
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1286
lemma borel_measurable_euclidean_space:
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1287
  fixes f :: "'a \<Rightarrow> 'c::euclidean_space"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1288
  shows "f \<in> borel_measurable M \<longleftrightarrow> (\<forall>i\<in>Basis. (\<lambda>x. f x \<bullet> i) \<in> borel_measurable M)"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1289
proof safe
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1290
  assume f: "\<forall>i\<in>Basis. (\<lambda>x. f x \<bullet> i) \<in> borel_measurable M"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1291
  then show "f \<in> borel_measurable M"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1292
    by (subst borel_measurable_iff_halfspace_le) auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1293
qed auto
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1294
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
  1295
subsection "Borel measurable operators"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1296
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1297
lemma borel_measurable_norm[measurable]: "norm \<in> borel_measurable borel"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1298
  by (intro borel_measurable_continuous_onI continuous_intros)
56993
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1299
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1300
lemma borel_measurable_sgn [measurable]: "(sgn::'a::real_normed_vector \<Rightarrow> 'a) \<in> borel_measurable borel"
57275
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1301
  by (rule borel_measurable_continuous_countable_exceptions[where X="{0}"])
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1302
     (auto intro!: continuous_on_sgn continuous_on_id)
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1303
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1304
lemma borel_measurable_uminus[measurable (raw)]:
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1305
  fixes g :: "'a \<Rightarrow> 'b::{second_countable_topology, real_normed_vector}"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1306
  assumes g: "g \<in> borel_measurable M"
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1307
  shows "(\<lambda>x. - g x) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1308
  by (rule borel_measurable_continuous_on[OF _ g]) (intro continuous_intros)
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1309
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1310
lemma borel_measurable_diff[measurable (raw)]:
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1311
  fixes f :: "'a \<Rightarrow> 'b::{second_countable_topology, real_normed_vector}"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1312
  assumes f: "f \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1313
  assumes g: "g \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1314
  shows "(\<lambda>x. f x - g x) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1315
  using borel_measurable_add [of f M "- g"] assms by (simp add: fun_Compl_def)
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1316
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1317
lemma borel_measurable_times[measurable (raw)]:
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1318
  fixes f :: "'a \<Rightarrow> 'b::{second_countable_topology, real_normed_algebra}"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1319
  assumes f: "f \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1320
  assumes g: "g \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1321
  shows "(\<lambda>x. f x * g x) \<in> borel_measurable M"
56371
fb9ae0727548 extend continuous_intros; remove continuous_on_intros and isCont_intros
hoelzl
parents: 56212
diff changeset
  1322
  using f g by (rule borel_measurable_continuous_Pair) (intro continuous_intros)
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1323
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1324
lemma borel_measurable_prod[measurable (raw)]:
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1325
  fixes f :: "'c \<Rightarrow> 'a \<Rightarrow> 'b::{second_countable_topology, real_normed_field}"
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1326
  assumes "\<And>i. i \<in> S \<Longrightarrow> f i \<in> borel_measurable M"
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1327
  shows "(\<lambda>x. \<Prod>i\<in>S. f i x) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1328
proof cases
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1329
  assume "finite S"
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1330
  thus ?thesis using assms by induct auto
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1331
qed simp
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1332
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1333
lemma borel_measurable_dist[measurable (raw)]:
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1334
  fixes g f :: "'a \<Rightarrow> 'b::{second_countable_topology, metric_space}"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1335
  assumes f: "f \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1336
  assumes g: "g \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1337
  shows "(\<lambda>x. dist (f x) (g x)) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1338
  using f g by (rule borel_measurable_continuous_Pair) (intro continuous_intros)
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1339
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1340
lemma borel_measurable_scaleR[measurable (raw)]:
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1341
  fixes g :: "'a \<Rightarrow> 'b::{second_countable_topology, real_normed_vector}"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1342
  assumes f: "f \<in> borel_measurable M"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1343
  assumes g: "g \<in> borel_measurable M"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1344
  shows "(\<lambda>x. f x *\<^sub>R g x) \<in> borel_measurable M"
56371
fb9ae0727548 extend continuous_intros; remove continuous_on_intros and isCont_intros
hoelzl
parents: 56212
diff changeset
  1345
  using f g by (rule borel_measurable_continuous_Pair) (intro continuous_intros)
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1346
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1347
lemma borel_measurable_uminus_eq [simp]:
66164
2d79288b042c New theorems and much tidying up of the old ones
paulson <lp15@cam.ac.uk>
parents: 64911
diff changeset
  1348
  fixes f :: "'a \<Rightarrow> 'b::{second_countable_topology, real_normed_vector}"
2d79288b042c New theorems and much tidying up of the old ones
paulson <lp15@cam.ac.uk>
parents: 64911
diff changeset
  1349
  shows "(\<lambda>x. - f x) \<in> borel_measurable M \<longleftrightarrow> f \<in> borel_measurable M" (is "?l = ?r")
2d79288b042c New theorems and much tidying up of the old ones
paulson <lp15@cam.ac.uk>
parents: 64911
diff changeset
  1350
proof
2d79288b042c New theorems and much tidying up of the old ones
paulson <lp15@cam.ac.uk>
parents: 64911
diff changeset
  1351
  assume ?l from borel_measurable_uminus[OF this] show ?r by simp
2d79288b042c New theorems and much tidying up of the old ones
paulson <lp15@cam.ac.uk>
parents: 64911
diff changeset
  1352
qed auto
2d79288b042c New theorems and much tidying up of the old ones
paulson <lp15@cam.ac.uk>
parents: 64911
diff changeset
  1353
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1354
lemma affine_borel_measurable_vector:
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1355
  fixes f :: "'a \<Rightarrow> 'x::real_normed_vector"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1356
  assumes "f \<in> borel_measurable M"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1357
  shows "(\<lambda>x. a + b *\<^sub>R f x) \<in> borel_measurable M"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1358
proof (rule borel_measurableI)
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1359
  fix S :: "'x set" assume "open S"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1360
  show "(\<lambda>x. a + b *\<^sub>R f x) -` S \<inter> space M \<in> sets M"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1361
  proof cases
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1362
    assume "b \<noteq> 0"
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
  1363
    with \<open>open S\<close> have "open ((\<lambda>x. (- a + x) /\<^sub>R b) ` S)" (is "open ?S")
54230
b1d955791529 more simplification rules on unary and binary minus
haftmann
parents: 53216
diff changeset
  1364
      using open_affinity [of S "inverse b" "- a /\<^sub>R b"]
b1d955791529 more simplification rules on unary and binary minus
haftmann
parents: 53216
diff changeset
  1365
      by (auto simp: algebra_simps)
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
  1366
    hence "?S \<in> sets borel" by auto
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1367
    moreover
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
  1368
    from \<open>b \<noteq> 0\<close> have "(\<lambda>x. a + b *\<^sub>R f x) -` S = f -` ?S"
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1369
      apply auto by (rule_tac x="a + b *\<^sub>R f x" in image_eqI, simp_all)
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
  1370
    ultimately show ?thesis using assms unfolding in_borel_measurable_borel
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1371
      by auto
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1372
  qed simp
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1373
qed
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1374
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1375
lemma borel_measurable_const_scaleR[measurable (raw)]:
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1376
  "f \<in> borel_measurable M \<Longrightarrow> (\<lambda>x. b *\<^sub>R f x ::'a::real_normed_vector) \<in> borel_measurable M"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1377
  using affine_borel_measurable_vector[of f M 0 b] by simp
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1378
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1379
lemma borel_measurable_const_add[measurable (raw)]:
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1380
  "f \<in> borel_measurable M \<Longrightarrow> (\<lambda>x. a + f x ::'a::real_normed_vector) \<in> borel_measurable M"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1381
  using affine_borel_measurable_vector[of f M a 1] by simp
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1382
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1383
lemma borel_measurable_inverse[measurable (raw)]:
57275
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1384
  fixes f :: "'a \<Rightarrow> 'b::real_normed_div_algebra"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1385
  assumes f: "f \<in> borel_measurable M"
35692
f1315bbf1bc9 Moved theorems in Lebesgue to the right places
hoelzl
parents: 35582
diff changeset
  1386
  shows "(\<lambda>x. inverse (f x)) \<in> borel_measurable M"
57275
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1387
  apply (rule measurable_compose[OF f])
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1388
  apply (rule borel_measurable_continuous_countable_exceptions[of "{0}"])
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1389
  apply (auto intro!: continuous_on_inverse continuous_on_id)
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1390
  done
35692
f1315bbf1bc9 Moved theorems in Lebesgue to the right places
hoelzl
parents: 35582
diff changeset
  1391
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1392
lemma borel_measurable_divide[measurable (raw)]:
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  1393
  "f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow>
57275
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1394
    (\<lambda>x. f x / g x::'b::{second_countable_topology, real_normed_div_algebra}) \<in> borel_measurable M"
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1395
  by (simp add: divide_inverse)
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1396
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1397
lemma borel_measurable_abs[measurable (raw)]:
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1398
  "f \<in> borel_measurable M \<Longrightarrow> (\<lambda>x. \<bar>f x :: real\<bar>) \<in> borel_measurable M"
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1399
  unfolding abs_real_def by simp
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1400
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1401
lemma borel_measurable_nth[measurable (raw)]:
41026
bea75746dc9d folding on arbitrary Lebesgue integrable functions
hoelzl
parents: 41025
diff changeset
  1402
  "(\<lambda>x::real^'n. x $ i) \<in> borel_measurable borel"
50526
899c9c4e4a4c Remove the indexed basis from the definition of euclidean spaces and only use the set of Basis vectors
hoelzl
parents: 50419
diff changeset
  1403
  by (simp add: cart_eq_inner_axis)
41026
bea75746dc9d folding on arbitrary Lebesgue integrable functions
hoelzl
parents: 41025
diff changeset
  1404
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1405
lemma convex_measurable:
59415
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1406
  fixes A :: "'a :: euclidean_space set"
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1407
  shows "X \<in> borel_measurable M \<Longrightarrow> X ` space M \<subseteq> A \<Longrightarrow> open A \<Longrightarrow> convex_on A q \<Longrightarrow>
59415
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1408
    (\<lambda>x. q (X x)) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1409
  by (rule measurable_compose[where f=X and N="restrict_space borel A"])
59415
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1410
     (auto intro!: borel_measurable_continuous_on_restrict convex_on_continuous measurable_restrict_space2)
41830
719b0a517c33 log is borel measurable
hoelzl
parents: 41545
diff changeset
  1411
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1412
lemma borel_measurable_ln[measurable (raw)]:
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1413
  assumes f: "f \<in> borel_measurable M"
60017
b785d6d06430 Overloading of ln and powr, but "approximation" no longer works for powr. Code generation also fails due to type ambiguity in scala.
paulson <lp15@cam.ac.uk>
parents: 59658
diff changeset
  1414
  shows "(\<lambda>x. ln (f x :: real)) \<in> borel_measurable M"
57275
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1415
  apply (rule measurable_compose[OF f])
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1416
  apply (rule borel_measurable_continuous_countable_exceptions[of "{0}"])
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1417
  apply (auto intro!: continuous_on_ln continuous_on_id)
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
  1418
  done
41830
719b0a517c33 log is borel measurable
hoelzl
parents: 41545
diff changeset
  1419
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1420
lemma borel_measurable_log[measurable (raw)]:
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1421
  "f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow> (\<lambda>x. log (g x) (f x)) \<in> borel_measurable M"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1422
  unfolding log_def by auto
41830
719b0a517c33 log is borel measurable
hoelzl
parents: 41545
diff changeset
  1423
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1424
lemma borel_measurable_exp[measurable]:
58656
7f14d5d9b933 relaxed class constraints for exp
immler
parents: 57514
diff changeset
  1425
  "(exp::'a::{real_normed_field,banach}\<Rightarrow>'a) \<in> borel_measurable borel"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1426
  by (intro borel_measurable_continuous_onI continuous_at_imp_continuous_on ballI isCont_exp)
50419
3177d0374701 add exponential and uniform distributions
hoelzl
parents: 50387
diff changeset
  1427
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1428
lemma measurable_real_floor[measurable]:
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1429
  "(floor :: real \<Rightarrow> int) \<in> measurable borel (count_space UNIV)"
47761
dfe747e72fa8 moved lemmas to appropriate places
hoelzl
parents: 47694
diff changeset
  1430
proof -
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: 61424
diff changeset
  1431
  have "\<And>a x. \<lfloor>x\<rfloor> = a \<longleftrightarrow> (real_of_int a \<le> x \<and> x < real_of_int (a + 1))"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1432
    by (auto intro: floor_eq2)
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1433
  then show ?thesis
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1434
    by (auto simp: vimage_def measurable_count_space_eq2_countable)
47761
dfe747e72fa8 moved lemmas to appropriate places
hoelzl
parents: 47694
diff changeset
  1435
qed
dfe747e72fa8 moved lemmas to appropriate places
hoelzl
parents: 47694
diff changeset
  1436
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1437
lemma measurable_real_ceiling[measurable]:
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1438
  "(ceiling :: real \<Rightarrow> int) \<in> measurable borel (count_space UNIV)"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1439
  unfolding ceiling_def[abs_def] by simp
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1440
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1441
lemma borel_measurable_real_floor: "(\<lambda>x::real. real_of_int \<lfloor>x\<rfloor>) \<in> borel_measurable borel"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1442
  by simp
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1443
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1444
lemma borel_measurable_root [measurable]: "root n \<in> borel_measurable borel"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1445
  by (intro borel_measurable_continuous_onI continuous_intros)
57235
b0b9a10e4bf4 properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
hoelzl
parents: 57138
diff changeset
  1446
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1447
lemma borel_measurable_sqrt [measurable]: "sqrt \<in> borel_measurable borel"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1448
  by (intro borel_measurable_continuous_onI continuous_intros)
57235
b0b9a10e4bf4 properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
hoelzl
parents: 57138
diff changeset
  1449
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1450
lemma borel_measurable_power [measurable (raw)]:
59415
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1451
  fixes f :: "_ \<Rightarrow> 'b::{power,real_normed_algebra}"
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1452
  assumes f: "f \<in> borel_measurable M"
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1453
  shows "(\<lambda>x. (f x) ^ n) \<in> borel_measurable M"
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1454
  by (intro borel_measurable_continuous_on [OF _ f] continuous_intros)
57235
b0b9a10e4bf4 properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
hoelzl
parents: 57138
diff changeset
  1455
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1456
lemma borel_measurable_Re [measurable]: "Re \<in> borel_measurable borel"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1457
  by (intro borel_measurable_continuous_onI continuous_intros)
57235
b0b9a10e4bf4 properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
hoelzl
parents: 57138
diff changeset
  1458
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1459
lemma borel_measurable_Im [measurable]: "Im \<in> borel_measurable borel"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1460
  by (intro borel_measurable_continuous_onI continuous_intros)
57235
b0b9a10e4bf4 properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
hoelzl
parents: 57138
diff changeset
  1461
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1462
lemma borel_measurable_of_real [measurable]: "(of_real :: _ \<Rightarrow> (_::real_normed_algebra)) \<in> borel_measurable borel"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1463
  by (intro borel_measurable_continuous_onI continuous_intros)
57235
b0b9a10e4bf4 properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
hoelzl
parents: 57138
diff changeset
  1464
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1465
lemma borel_measurable_sin [measurable]: "(sin :: _ \<Rightarrow> (_::{real_normed_field,banach})) \<in> borel_measurable borel"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1466
  by (intro borel_measurable_continuous_onI continuous_intros)
57235
b0b9a10e4bf4 properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
hoelzl
parents: 57138
diff changeset
  1467
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1468
lemma borel_measurable_cos [measurable]: "(cos :: _ \<Rightarrow> (_::{real_normed_field,banach})) \<in> borel_measurable borel"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1469
  by (intro borel_measurable_continuous_onI continuous_intros)
57235
b0b9a10e4bf4 properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
hoelzl
parents: 57138
diff changeset
  1470
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1471
lemma borel_measurable_arctan [measurable]: "arctan \<in> borel_measurable borel"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1472
  by (intro borel_measurable_continuous_onI continuous_intros)
57235
b0b9a10e4bf4 properties of Erlang and exponentially distributed random variables (by Sudeep Kanav)
hoelzl
parents: 57138
diff changeset
  1473
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69861
diff changeset
  1474
lemma\<^marker>\<open>tag important\<close> borel_measurable_complex_iff:
57259
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1475
  "f \<in> borel_measurable M \<longleftrightarrow>
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1476
    (\<lambda>x. Re (f x)) \<in> borel_measurable M \<and> (\<lambda>x. Im (f x)) \<in> borel_measurable M"
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1477
  apply auto
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1478
  apply (subst fun_complex_eq)
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1479
  apply (intro borel_measurable_add)
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1480
  apply auto
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1481
  done
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1482
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1483
lemma powr_real_measurable [measurable]:
67278
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents: 66164
diff changeset
  1484
  assumes "f \<in> measurable M borel" "g \<in> measurable M borel"
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents: 66164
diff changeset
  1485
  shows   "(\<lambda>x. f x powr g x :: real) \<in> measurable M borel"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1486
  using assms by (simp_all add: powr_def)
67278
c60e3d615b8c Removed Analysis/ex/Circle_Area; replaced by more general Analysis/Ball_Volume
eberlm <eberlm@in.tum.de>
parents: 66164
diff changeset
  1487
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1488
lemma measurable_of_bool[measurable]: "of_bool \<in> count_space UNIV \<rightarrow>\<^sub>M borel"
64008
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1489
  by simp
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1490
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
  1491
subsection "Borel space on the extended reals"
41981
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1492
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1493
lemma borel_measurable_ereal[measurable (raw)]:
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1494
  assumes f: "f \<in> borel_measurable M" shows "(\<lambda>x. ereal (f x)) \<in> borel_measurable M"
60771
8558e4a37b48 reorganized Extended_Real
hoelzl
parents: 60172
diff changeset
  1495
  using continuous_on_ereal f by (rule borel_measurable_continuous_on) (rule continuous_on_id)
41981
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1496
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1497
lemma borel_measurable_real_of_ereal[measurable (raw)]:
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1498
  fixes f :: "'a \<Rightarrow> ereal"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1499
  assumes f: "f \<in> borel_measurable M"
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: 61424
diff changeset
  1500
  shows "(\<lambda>x. real_of_ereal (f x)) \<in> borel_measurable M"
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1501
  apply (rule measurable_compose[OF f])
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1502
  apply (rule borel_measurable_continuous_countable_exceptions[of "{\<infinity>, -\<infinity> }"])
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1503
  apply (auto intro: continuous_on_real simp: Compl_eq_Diff_UNIV)
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1504
  done
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1505
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1506
lemma borel_measurable_ereal_cases:
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1507
  fixes f :: "'a \<Rightarrow> ereal"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1508
  assumes f: "f \<in> borel_measurable M"
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: 61424
diff changeset
  1509
  assumes H: "(\<lambda>x. H (ereal (real_of_ereal (f x)))) \<in> borel_measurable M"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1510
  shows "(\<lambda>x. H (f x)) \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1511
proof -
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: 61424
diff changeset
  1512
  let ?F = "\<lambda>x. if f x = \<infinity> then H \<infinity> else if f x = - \<infinity> then H (-\<infinity>) else H (ereal (real_of_ereal (f x)))"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1513
  { fix x have "H (f x) = ?F x" by (cases "f x") auto }
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1514
  with f H show ?thesis by simp
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
  1515
qed
41981
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1516
69739
nipkow
parents: 69722
diff changeset
  1517
lemma
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1518
  fixes f :: "'a \<Rightarrow> ereal" assumes f[measurable]: "f \<in> borel_measurable M"
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1519
  shows borel_measurable_ereal_abs[measurable(raw)]: "(\<lambda>x. \<bar>f x\<bar>) \<in> borel_measurable M"
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1520
    and borel_measurable_ereal_inverse[measurable(raw)]: "(\<lambda>x. inverse (f x) :: ereal) \<in> borel_measurable M"
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1521
    and borel_measurable_uminus_ereal[measurable(raw)]: "(\<lambda>x. - f x :: ereal) \<in> borel_measurable M"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1522
  by (auto simp del: abs_real_of_ereal simp: borel_measurable_ereal_cases[OF f] measurable_If)
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1523
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1524
lemma borel_measurable_uminus_eq_ereal[simp]:
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1525
  "(\<lambda>x. - f x :: ereal) \<in> borel_measurable M \<longleftrightarrow> f \<in> borel_measurable M" (is "?l = ?r")
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1526
proof
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1527
  assume ?l from borel_measurable_uminus_ereal[OF this] show ?r by simp
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1528
qed auto
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1529
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1530
lemma set_Collect_ereal2:
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1531
  fixes f g :: "'a \<Rightarrow> ereal"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1532
  assumes f: "f \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1533
  assumes g: "g \<in> borel_measurable M"
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: 61424
diff changeset
  1534
  assumes H: "{x \<in> space M. H (ereal (real_of_ereal (f x))) (ereal (real_of_ereal (g x)))} \<in> sets M"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1535
    "{x \<in> space borel. H (-\<infinity>) (ereal x)} \<in> sets borel"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1536
    "{x \<in> space borel. H (\<infinity>) (ereal x)} \<in> sets borel"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1537
    "{x \<in> space borel. H (ereal x) (-\<infinity>)} \<in> sets borel"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1538
    "{x \<in> space borel. H (ereal x) (\<infinity>)} \<in> sets borel"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1539
  shows "{x \<in> space M. H (f x) (g x)} \<in> sets M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1540
proof -
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: 61424
diff changeset
  1541
  let ?G = "\<lambda>y x. if g x = \<infinity> then H y \<infinity> else if g x = -\<infinity> then H y (-\<infinity>) else H y (ereal (real_of_ereal (g x)))"
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: 61424
diff changeset
  1542
  let ?F = "\<lambda>x. if f x = \<infinity> then ?G \<infinity> x else if f x = -\<infinity> then ?G (-\<infinity>) x else ?G (ereal (real_of_ereal (f x))) x"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1543
  { fix x have "H (f x) (g x) = ?F x" by (cases "f x" "g x" rule: ereal2_cases) auto }
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1544
  note * = this
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1545
  from assms show ?thesis
62390
842917225d56 more canonical names
nipkow
parents: 62372
diff changeset
  1546
    by (subst *) (simp del: space_borel split del: if_split)
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1547
qed
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1548
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1549
lemma borel_measurable_ereal_iff:
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1550
  shows "(\<lambda>x. ereal (f x)) \<in> borel_measurable M \<longleftrightarrow> f \<in> borel_measurable M"
41981
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1551
proof
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1552
  assume "(\<lambda>x. ereal (f x)) \<in> borel_measurable M"
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1553
  from borel_measurable_real_of_ereal[OF this]
41981
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1554
  show "f \<in> borel_measurable M" by auto
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1555
qed auto
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1556
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1557
lemma borel_measurable_erealD[measurable_dest]:
59353
f0707dc3d9aa measurability prover: removed app splitting, replaced by more powerful destruction rules
hoelzl
parents: 59088
diff changeset
  1558
  "(\<lambda>x. ereal (f x)) \<in> borel_measurable M \<Longrightarrow> g \<in> measurable N M \<Longrightarrow> (\<lambda>x. f (g x)) \<in> borel_measurable N"
f0707dc3d9aa measurability prover: removed app splitting, replaced by more powerful destruction rules
hoelzl
parents: 59088
diff changeset
  1559
  unfolding borel_measurable_ereal_iff by simp
f0707dc3d9aa measurability prover: removed app splitting, replaced by more powerful destruction rules
hoelzl
parents: 59088
diff changeset
  1560
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1561
theorem borel_measurable_ereal_iff_real:
43923
ab93d0190a5d add ereal to typeclass infinity
hoelzl
parents: 43920
diff changeset
  1562
  fixes f :: "'a \<Rightarrow> ereal"
ab93d0190a5d add ereal to typeclass infinity
hoelzl
parents: 43920
diff changeset
  1563
  shows "f \<in> borel_measurable M \<longleftrightarrow>
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: 61424
diff changeset
  1564
    ((\<lambda>x. real_of_ereal (f x)) \<in> borel_measurable M \<and> f -` {\<infinity>} \<inter> space M \<in> sets M \<and> f -` {-\<infinity>} \<inter> space M \<in> sets M)"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1565
proof safe
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: 61424
diff changeset
  1566
  assume *: "(\<lambda>x. real_of_ereal (f x)) \<in> borel_measurable M" "f -` {\<infinity>} \<inter> space M \<in> sets M" "f -` {-\<infinity>} \<inter> space M \<in> sets M"
41981
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1567
  have "f -` {\<infinity>} \<inter> space M = {x\<in>space M. f x = \<infinity>}" "f -` {-\<infinity>} \<inter> space M = {x\<in>space M. f x = -\<infinity>}" by auto
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1568
  with * have **: "{x\<in>space M. f x = \<infinity>} \<in> sets M" "{x\<in>space M. f x = -\<infinity>} \<in> sets M" by simp_all
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: 61424
diff changeset
  1569
  let ?f = "\<lambda>x. if f x = \<infinity> then \<infinity> else if f x = -\<infinity> then -\<infinity> else ereal (real_of_ereal (f x))"
41981
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1570
  have "?f \<in> borel_measurable M" using * ** by (intro measurable_If) auto
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1571
  also have "?f = f" by (auto simp: fun_eq_iff ereal_real)
41981
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1572
  finally show "f \<in> borel_measurable M" .
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1573
qed simp_all
41830
719b0a517c33 log is borel measurable
hoelzl
parents: 41545
diff changeset
  1574
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1575
lemma borel_measurable_ereal_iff_Iio:
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1576
  "(f::'a \<Rightarrow> ereal) \<in> borel_measurable M \<longleftrightarrow> (\<forall>a. f -` {..< a} \<inter> space M \<in> sets M)"
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1577
  by (auto simp: borel_Iio measurable_iff_measure_of)
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1578
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1579
lemma borel_measurable_ereal_iff_Ioi:
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1580
  "(f::'a \<Rightarrow> ereal) \<in> borel_measurable M \<longleftrightarrow> (\<forall>a. f -` {a <..} \<inter> space M \<in> sets M)"
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1581
  by (auto simp: borel_Ioi measurable_iff_measure_of)
35582
b16d99a72dc9 Add Lebesgue integral and probability space.
hoelzl
parents: 35347
diff changeset
  1582
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1583
lemma vimage_sets_compl_iff:
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1584
  "f -` A \<inter> space M \<in> sets M \<longleftrightarrow> f -` (- A) \<inter> space M \<in> sets M"
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1585
proof -
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1586
  { fix A assume "f -` A \<inter> space M \<in> sets M"
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1587
    moreover have "f -` (- A) \<inter> space M = space M - f -` A \<inter> space M" by auto
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1588
    ultimately have "f -` (- A) \<inter> space M \<in> sets M" by auto }
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1589
  from this[of A] this[of "-A"] show ?thesis
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1590
    by (metis double_complement)
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1591
qed
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1592
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1593
lemma borel_measurable_iff_Iic_ereal:
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1594
  "(f::'a\<Rightarrow>ereal) \<in> borel_measurable M \<longleftrightarrow> (\<forall>a. f -` {..a} \<inter> space M \<in> sets M)"
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1595
  unfolding borel_measurable_ereal_iff_Ioi vimage_sets_compl_iff[where A="{a <..}" for a] by simp
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1596
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1597
lemma borel_measurable_iff_Ici_ereal:
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1598
  "(f::'a \<Rightarrow> ereal) \<in> borel_measurable M \<longleftrightarrow> (\<forall>a. f -` {a..} \<inter> space M \<in> sets M)"
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1599
  unfolding borel_measurable_ereal_iff_Iio vimage_sets_compl_iff[where A="{..< a}" for a] by simp
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1600
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1601
lemma borel_measurable_ereal2:
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1602
  fixes f g :: "'a \<Rightarrow> ereal"
41981
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1603
  assumes f: "f \<in> borel_measurable M"
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1604
  assumes g: "g \<in> borel_measurable M"
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: 61424
diff changeset
  1605
  assumes H: "(\<lambda>x. H (ereal (real_of_ereal (f x))) (ereal (real_of_ereal (g x)))) \<in> borel_measurable M"
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: 61424
diff changeset
  1606
    "(\<lambda>x. H (-\<infinity>) (ereal (real_of_ereal (g x)))) \<in> borel_measurable M"
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: 61424
diff changeset
  1607
    "(\<lambda>x. H (\<infinity>) (ereal (real_of_ereal (g x)))) \<in> borel_measurable M"
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: 61424
diff changeset
  1608
    "(\<lambda>x. H (ereal (real_of_ereal (f x))) (-\<infinity>)) \<in> borel_measurable M"
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: 61424
diff changeset
  1609
    "(\<lambda>x. H (ereal (real_of_ereal (f x))) (\<infinity>)) \<in> borel_measurable M"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1610
  shows "(\<lambda>x. H (f x) (g x)) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1611
proof -
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: 61424
diff changeset
  1612
  let ?G = "\<lambda>y x. if g x = \<infinity> then H y \<infinity> else if g x = - \<infinity> then H y (-\<infinity>) else H y (ereal (real_of_ereal (g x)))"
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: 61424
diff changeset
  1613
  let ?F = "\<lambda>x. if f x = \<infinity> then ?G \<infinity> x else if f x = - \<infinity> then ?G (-\<infinity>) x else ?G (ereal (real_of_ereal (f x))) x"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1614
  { fix x have "H (f x) (g x) = ?F x" by (cases "f x" "g x" rule: ereal2_cases) auto }
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1615
  note * = this
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1616
  from assms show ?thesis unfolding * by simp
41981
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1617
qed
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1618
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1619
lemma [measurable(raw)]:
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1620
  fixes f :: "'a \<Rightarrow> ereal"
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1621
  assumes [measurable]: "f \<in> borel_measurable M" "g \<in> borel_measurable M"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1622
  shows borel_measurable_ereal_add: "(\<lambda>x. f x + g x) \<in> borel_measurable M"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1623
    and borel_measurable_ereal_times: "(\<lambda>x. f x * g x) \<in> borel_measurable M"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1624
  by (simp_all add: borel_measurable_ereal2)
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1625
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1626
lemma [measurable(raw)]:
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1627
  fixes f g :: "'a \<Rightarrow> ereal"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1628
  assumes "f \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1629
  assumes "g \<in> borel_measurable M"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1630
  shows borel_measurable_ereal_diff: "(\<lambda>x. f x - g x) \<in> borel_measurable M"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1631
    and borel_measurable_ereal_divide: "(\<lambda>x. f x / g x) \<in> borel_measurable M"
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1632
  using assms by (simp_all add: minus_ereal_def divide_ereal_def)
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1633
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1634
lemma borel_measurable_ereal_sum[measurable (raw)]:
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1635
  fixes f :: "'c \<Rightarrow> 'a \<Rightarrow> ereal"
41096
843c40bbc379 integral over setprod
hoelzl
parents: 41083
diff changeset
  1636
  assumes "\<And>i. i \<in> S \<Longrightarrow> f i \<in> borel_measurable M"
843c40bbc379 integral over setprod
hoelzl
parents: 41083
diff changeset
  1637
  shows "(\<lambda>x. \<Sum>i\<in>S. f i x) \<in> borel_measurable M"
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1638
  using assms by (induction S rule: infinite_finite_induct) auto
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1639
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1640
lemma borel_measurable_ereal_prod[measurable (raw)]:
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1641
  fixes f :: "'c \<Rightarrow> 'a \<Rightarrow> ereal"
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1642
  assumes "\<And>i. i \<in> S \<Longrightarrow> f i \<in> borel_measurable M"
41096
843c40bbc379 integral over setprod
hoelzl
parents: 41083
diff changeset
  1643
  shows "(\<lambda>x. \<Prod>i\<in>S. f i x) \<in> borel_measurable M"
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1644
  using assms by (induction S rule: infinite_finite_induct) auto
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1645
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1646
lemma borel_measurable_extreal_suminf[measurable (raw)]:
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1647
  fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> ereal"
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1648
  assumes [measurable]: "\<And>i. f i \<in> borel_measurable M"
41981
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1649
  shows "(\<lambda>x. (\<Sum>i. f i x)) \<in> borel_measurable M"
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1650
  unfolding suminf_def sums_def[abs_def] lim_def[symmetric] by simp
39092
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
  1651
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
  1652
subsection "Borel space on the extended non-negative reals"
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1653
69597
ff784d5a5bfb isabelle update -u control_cartouches;
wenzelm
parents: 69566
diff changeset
  1654
text \<open> \<^type>\<open>ennreal\<close> is a topological monoid, so no rules for plus are required, also all order
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1655
  statements are usually done on type classes. \<close>
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1656
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1657
lemma measurable_enn2ereal[measurable]: "enn2ereal \<in> borel \<rightarrow>\<^sub>M borel"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1658
  by (intro borel_measurable_continuous_onI continuous_on_enn2ereal)
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1659
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1660
lemma measurable_e2ennreal[measurable]: "e2ennreal \<in> borel \<rightarrow>\<^sub>M borel"
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1661
  by (intro borel_measurable_continuous_onI continuous_on_e2ennreal)
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1662
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1663
lemma borel_measurable_enn2real[measurable (raw)]:
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1664
  "f \<in> M \<rightarrow>\<^sub>M borel \<Longrightarrow> (\<lambda>x. enn2real (f x)) \<in> M \<rightarrow>\<^sub>M borel"
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1665
  unfolding enn2real_def[abs_def] by measurable
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1666
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69861
diff changeset
  1667
definition\<^marker>\<open>tag important\<close> [simp]: "is_borel f M \<longleftrightarrow> f \<in> borel_measurable M"
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1668
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1669
lemma is_borel_transfer[transfer_rule]: "rel_fun (rel_fun (=) pcr_ennreal) (=) is_borel is_borel"
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1670
  unfolding is_borel_def[abs_def]
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1671
proof (safe intro!: rel_funI ext dest!: rel_fun_eq_pcr_ennreal[THEN iffD1])
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1672
  fix f and M :: "'a measure"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1673
  show "f \<in> borel_measurable M" if f: "enn2ereal \<circ> f \<in> borel_measurable M"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1674
    using measurable_compose[OF f measurable_e2ennreal] by simp
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1675
qed simp
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1676
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1677
context
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1678
  includes ennreal.lifting
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1679
begin
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1680
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1681
lemma measurable_ennreal[measurable]: "ennreal \<in> borel \<rightarrow>\<^sub>M borel"
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1682
  unfolding is_borel_def[symmetric]
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1683
  by transfer simp
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1684
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1685
lemma borel_measurable_ennreal_iff[simp]:
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1686
  assumes [simp]: "\<And>x. x \<in> space M \<Longrightarrow> 0 \<le> f x"
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1687
  shows "(\<lambda>x. ennreal (f x)) \<in> M \<rightarrow>\<^sub>M borel \<longleftrightarrow> f \<in> M \<rightarrow>\<^sub>M borel"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1688
proof safe
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1689
  assume "(\<lambda>x. ennreal (f x)) \<in> M \<rightarrow>\<^sub>M borel"
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1690
  then have "(\<lambda>x. enn2real (ennreal (f x))) \<in> M \<rightarrow>\<^sub>M borel"
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1691
    by measurable
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1692
  then show "f \<in> M \<rightarrow>\<^sub>M borel"
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1693
    by (rule measurable_cong[THEN iffD1, rotated]) auto
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1694
qed measurable
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1695
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1696
lemma borel_measurable_times_ennreal[measurable (raw)]:
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1697
  fixes f g :: "'a \<Rightarrow> ennreal"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1698
  shows "f \<in> M \<rightarrow>\<^sub>M borel \<Longrightarrow> g \<in> M \<rightarrow>\<^sub>M borel \<Longrightarrow> (\<lambda>x. f x * g x) \<in> M \<rightarrow>\<^sub>M borel"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1699
  unfolding is_borel_def[symmetric] by transfer simp
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1700
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1701
lemma borel_measurable_inverse_ennreal[measurable (raw)]:
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1702
  fixes f :: "'a \<Rightarrow> ennreal"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1703
  shows "f \<in> M \<rightarrow>\<^sub>M borel \<Longrightarrow> (\<lambda>x. inverse (f x)) \<in> M \<rightarrow>\<^sub>M borel"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1704
  unfolding is_borel_def[symmetric] by transfer simp
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1705
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1706
lemma borel_measurable_divide_ennreal[measurable (raw)]:
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1707
  fixes f :: "'a \<Rightarrow> ennreal"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1708
  shows "f \<in> M \<rightarrow>\<^sub>M borel \<Longrightarrow> g \<in> M \<rightarrow>\<^sub>M borel \<Longrightarrow> (\<lambda>x. f x / g x) \<in> M \<rightarrow>\<^sub>M borel"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1709
  unfolding divide_ennreal_def by simp
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1710
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1711
lemma borel_measurable_minus_ennreal[measurable (raw)]:
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1712
  fixes f :: "'a \<Rightarrow> ennreal"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1713
  shows "f \<in> M \<rightarrow>\<^sub>M borel \<Longrightarrow> g \<in> M \<rightarrow>\<^sub>M borel \<Longrightarrow> (\<lambda>x. f x - g x) \<in> M \<rightarrow>\<^sub>M borel"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1714
  unfolding is_borel_def[symmetric] by transfer simp
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1715
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1716
lemma borel_measurable_prod_ennreal[measurable (raw)]:
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1717
  fixes f :: "'c \<Rightarrow> 'a \<Rightarrow> ennreal"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1718
  assumes "\<And>i. i \<in> S \<Longrightarrow> f i \<in> borel_measurable M"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1719
  shows "(\<lambda>x. \<Prod>i\<in>S. f i x) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1720
  using assms by (induction S rule: infinite_finite_induct) auto
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1721
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1722
end
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1723
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1724
hide_const (open) is_borel
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1725
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
  1726
subsection \<open>LIMSEQ is borel measurable\<close>
39092
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
  1727
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1728
lemma borel_measurable_LIMSEQ_real:
39092
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
  1729
  fixes u :: "nat \<Rightarrow> 'a \<Rightarrow> real"
61969
e01015e49041 more symbols;
wenzelm
parents: 61880
diff changeset
  1730
  assumes u': "\<And>x. x \<in> space M \<Longrightarrow> (\<lambda>i. u i x) \<longlonglongrightarrow> u' x"
39092
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
  1731
  and u: "\<And>i. u i \<in> borel_measurable M"
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
  1732
  shows "u' \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1733
proof -
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1734
  have "\<And>x. x \<in> space M \<Longrightarrow> liminf (\<lambda>n. ereal (u n x)) = ereal (u' x)"
46731
5302e932d1e5 avoid undeclared variables in let bindings;
wenzelm
parents: 45288
diff changeset
  1735
    using u' by (simp add: lim_imp_Liminf)
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1736
  moreover from u have "(\<lambda>x. liminf (\<lambda>n. ereal (u n x))) \<in> borel_measurable M"
39092
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
  1737
    by auto
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1738
  ultimately show ?thesis by (simp cong: measurable_cong add: borel_measurable_ereal_iff)
39092
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
  1739
qed
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
  1740
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1741
lemma borel_measurable_LIMSEQ_metric:
56993
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1742
  fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> 'b :: metric_space"
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1743
  assumes [measurable]: "\<And>i. f i \<in> borel_measurable M"
61969
e01015e49041 more symbols;
wenzelm
parents: 61880
diff changeset
  1744
  assumes lim: "\<And>x. x \<in> space M \<Longrightarrow> (\<lambda>i. f i x) \<longlonglongrightarrow> g x"
56993
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1745
  shows "g \<in> borel_measurable M"
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1746
  unfolding borel_eq_closed
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1747
proof (safe intro!: measurable_measure_of)
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1748
  fix A :: "'b set" assume "closed A"
56993
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1749
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1750
  have [measurable]: "(\<lambda>x. infdist (g x) A) \<in> borel_measurable M"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1751
  proof (rule borel_measurable_LIMSEQ_real)
61969
e01015e49041 more symbols;
wenzelm
parents: 61880
diff changeset
  1752
    show "\<And>x. x \<in> space M \<Longrightarrow> (\<lambda>i. infdist (f i x) A) \<longlonglongrightarrow> infdist (g x) A"
56993
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1753
      by (intro tendsto_infdist lim)
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1754
    show "\<And>i. (\<lambda>x. infdist (f i x) A) \<in> borel_measurable M"
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1755
      by (intro borel_measurable_continuous_on[where f="\<lambda>x. infdist x A"]
60150
bd773c47ad0b New material about complex transcendental functions (especially Ln, Arg) and polynomials
paulson <lp15@cam.ac.uk>
parents: 60017
diff changeset
  1756
        continuous_at_imp_continuous_on ballI continuous_infdist continuous_ident) auto
56993
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1757
  qed
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1758
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1759
  show "g -` A \<inter> space M \<in> sets M"
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1760
  proof cases
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1761
    assume "A \<noteq> {}"
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1762
    then have "\<And>x. infdist x A = 0 \<longleftrightarrow> x \<in> A"
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
  1763
      using \<open>closed A\<close> by (simp add: in_closed_iff_infdist_zero)
56993
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1764
    then have "g -` A \<inter> space M = {x\<in>space M. infdist (g x) A = 0}"
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1765
      by auto
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1766
    also have "\<dots> \<in> sets M"
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1767
      by measurable
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1768
    finally show ?thesis .
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1769
  qed simp
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1770
qed auto
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1771
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1772
lemma sets_Collect_Cauchy[measurable]:
57036
22568fb89165 generalized Bochner integral over infinite sums
hoelzl
parents: 56994
diff changeset
  1773
  fixes f :: "nat \<Rightarrow> 'a => 'b::{metric_space, second_countable_topology}"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1774
  assumes f[measurable]: "\<And>i. f i \<in> borel_measurable M"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1775
  shows "{x\<in>space M. Cauchy (\<lambda>i. f i x)} \<in> sets M"
57036
22568fb89165 generalized Bochner integral over infinite sums
hoelzl
parents: 56994
diff changeset
  1776
  unfolding metric_Cauchy_iff2 using f by auto
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1777
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1778
lemma borel_measurable_lim_metric[measurable (raw)]:
57036
22568fb89165 generalized Bochner integral over infinite sums
hoelzl
parents: 56994
diff changeset
  1779
  fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> 'b::{banach, second_countable_topology}"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1780
  assumes f[measurable]: "\<And>i. f i \<in> borel_measurable M"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1781
  shows "(\<lambda>x. lim (\<lambda>i. f i x)) \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1782
proof -
63040
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
  1783
  define u' where "u' x = lim (\<lambda>i. if Cauchy (\<lambda>i. f i x) then f i x else 0)" for x
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1784
  then have *: "\<And>x. lim (\<lambda>i. f i x) = (if Cauchy (\<lambda>i. f i x) then u' x else (THE x. False))"
64287
d85d88722745 more from moretop.ml
paulson <lp15@cam.ac.uk>
parents: 64284
diff changeset
  1785
    by (auto simp: lim_def convergent_eq_Cauchy[symmetric])
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1786
  have "u' \<in> borel_measurable M"
57036
22568fb89165 generalized Bochner integral over infinite sums
hoelzl
parents: 56994
diff changeset
  1787
  proof (rule borel_measurable_LIMSEQ_metric)
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1788
    fix x
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1789
    have "convergent (\<lambda>i. if Cauchy (\<lambda>i. f i x) then f i x else 0)"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1790
      by (cases "Cauchy (\<lambda>i. f i x)")
64287
d85d88722745 more from moretop.ml
paulson <lp15@cam.ac.uk>
parents: 64284
diff changeset
  1791
         (auto simp add: convergent_eq_Cauchy[symmetric] convergent_def)
61969
e01015e49041 more symbols;
wenzelm
parents: 61880
diff changeset
  1792
    then show "(\<lambda>i. if Cauchy (\<lambda>i. f i x) then f i x else 0) \<longlonglongrightarrow> u' x"
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1793
      unfolding u'_def
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1794
      by (rule convergent_LIMSEQ_iff[THEN iffD1])
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1795
  qed measurable
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1796
  then show ?thesis
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1797
    unfolding * by measurable
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1798
qed
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1799
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1800
lemma borel_measurable_suminf[measurable (raw)]:
57036
22568fb89165 generalized Bochner integral over infinite sums
hoelzl
parents: 56994
diff changeset
  1801
  fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> 'b::{banach, second_countable_topology}"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1802
  assumes f[measurable]: "\<And>i. f i \<in> borel_measurable M"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1803
  shows "(\<lambda>x. suminf (\<lambda>i. f i x)) \<in> borel_measurable M"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1804
  unfolding suminf_def sums_def[abs_def] lim_def[symmetric] by simp
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1805
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1806
lemma Collect_closed_imp_pred_borel: "closed {x. P x} \<Longrightarrow> Measurable.pred borel P"
63389
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1807
  by (simp add: pred_def)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1808
57447
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
  1809
(* Proof by Jeremy Avigad and Luke Serafin *)
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1810
lemma isCont_borel_pred[measurable]:
63389
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1811
  fixes f :: "'b::metric_space \<Rightarrow> 'a::metric_space"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1812
  shows "Measurable.pred borel (isCont f)"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1813
proof (subst measurable_cong)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1814
  let ?I = "\<lambda>j. inverse(real (Suc j))"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1815
  show "isCont f x = (\<forall>i. \<exists>j. \<forall>y z. dist x y < ?I j \<and> dist x z < ?I j \<longrightarrow> dist (f y) (f z) \<le> ?I i)" for x
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1816
    unfolding continuous_at_eps_delta
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1817
  proof safe
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1818
    fix i assume "\<forall>e>0. \<exists>d>0. \<forall>y. dist y x < d \<longrightarrow> dist (f y) (f x) < e"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1819
    moreover have "0 < ?I i / 2"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1820
      by simp
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1821
    ultimately obtain d where d: "0 < d" "\<And>y. dist x y < d \<Longrightarrow> dist (f y) (f x) < ?I i / 2"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1822
      by (metis dist_commute)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1823
    then obtain j where j: "?I j < d"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1824
      by (metis reals_Archimedean)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1825
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1826
    show "\<exists>j. \<forall>y z. dist x y < ?I j \<and> dist x z < ?I j \<longrightarrow> dist (f y) (f z) \<le> ?I i"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1827
    proof (safe intro!: exI[where x=j])
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1828
      fix y z assume *: "dist x y < ?I j" "dist x z < ?I j"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1829
      have "dist (f y) (f z) \<le> dist (f y) (f x) + dist (f z) (f x)"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1830
        by (rule dist_triangle2)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1831
      also have "\<dots> < ?I i / 2 + ?I i / 2"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1832
        by (intro add_strict_mono d less_trans[OF _ j] *)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1833
      also have "\<dots> \<le> ?I i"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1834
        by (simp add: field_simps of_nat_Suc)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1835
      finally show "dist (f y) (f z) \<le> ?I i"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1836
        by simp
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1837
    qed
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1838
  next
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1839
    fix e::real assume "0 < e"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1840
    then obtain n where n: "?I n < e"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1841
      by (metis reals_Archimedean)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1842
    assume "\<forall>i. \<exists>j. \<forall>y z. dist x y < ?I j \<and> dist x z < ?I j \<longrightarrow> dist (f y) (f z) \<le> ?I i"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1843
    from this[THEN spec, of "Suc n"]
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1844
    obtain j where j: "\<And>y z. dist x y < ?I j \<Longrightarrow> dist x z < ?I j \<Longrightarrow> dist (f y) (f z) \<le> ?I (Suc n)"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1845
      by auto
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1846
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1847
    show "\<exists>d>0. \<forall>y. dist y x < d \<longrightarrow> dist (f y) (f x) < e"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1848
    proof (safe intro!: exI[of _ "?I j"])
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1849
      fix y assume "dist y x < ?I j"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1850
      then have "dist (f y) (f x) \<le> ?I (Suc n)"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1851
        by (intro j) (auto simp: dist_commute)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1852
      also have "?I (Suc n) < ?I n"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1853
        by simp
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1854
      also note n
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1855
      finally show "dist (f y) (f x) < e" .
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1856
    qed simp
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1857
  qed
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1858
qed (intro pred_intros_countable closed_Collect_all closed_Collect_le open_Collect_less
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1859
           Collect_closed_imp_pred_borel closed_Collect_imp open_Collect_conj continuous_intros)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1860
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1861
lemma isCont_borel:
57447
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
  1862
  fixes f :: "'b::metric_space \<Rightarrow> 'a::metric_space"
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
  1863
  shows "{x. isCont f x} \<in> sets borel"
63389
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1864
  by simp
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1865
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1866
lemma is_real_interval:
61880
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1867
  assumes S: "is_interval S"
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1868
  shows "\<exists>a b::real. S = {} \<or> S = UNIV \<or> S = {..<b} \<or> S = {..b} \<or> S = {a<..} \<or> S = {a..} \<or>
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1869
    S = {a<..<b} \<or> S = {a<..b} \<or> S = {a..<b} \<or> S = {a..b}"
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1870
  using S unfolding is_interval_1 by (blast intro: interval_cases)
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1871
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1872
lemma real_interval_borel_measurable:
61880
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1873
  assumes "is_interval (S::real set)"
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1874
  shows "S \<in> sets borel"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1875
proof -
61880
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1876
  from assms is_real_interval have "\<exists>a b::real. S = {} \<or> S = UNIV \<or> S = {..<b} \<or> S = {..b} \<or>
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1877
    S = {a<..} \<or> S = {a..} \<or> S = {a<..<b} \<or> S = {a<..b} \<or> S = {a..<b} \<or> S = {a..b}" by auto
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1878
  then guess a ..
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1879
  then guess b ..
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1880
  thus ?thesis
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1881
    by auto
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1882
qed
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1883
64283
979cdfdf7a79 HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents: 64272
diff changeset
  1884
text \<open>The next lemmas hold in any second countable linorder (including ennreal or ereal for instance),
979cdfdf7a79 HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents: 64272
diff changeset
  1885
but in the current state they are restricted to reals.\<close>
979cdfdf7a79 HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents: 64272
diff changeset
  1886
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1887
lemma borel_measurable_mono_on_fnc:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1888
  fixes f :: "real \<Rightarrow> real" and A :: "real set"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1889
  assumes "mono_on f A"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1890
  shows "f \<in> borel_measurable (restrict_space borel A)"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1891
  apply (rule measurable_restrict_countable[OF mono_on_ctble_discont[OF assms]])
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1892
  apply (auto intro!: image_eqI[where x="{x}" for x] simp: sets_restrict_space)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1893
  apply (auto simp add: sets_restrict_restrict_space continuous_on_eq_continuous_within
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1894
              cong: measurable_cong_sets
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1895
              intro!: borel_measurable_continuous_on_restrict intro: continuous_within_subset)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1896
  done
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1897
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1898
lemma borel_measurable_piecewise_mono:
64283
979cdfdf7a79 HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents: 64272
diff changeset
  1899
  fixes f::"real \<Rightarrow> real" and C::"real set set"
979cdfdf7a79 HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents: 64272
diff changeset
  1900
  assumes "countable C" "\<And>c. c \<in> C \<Longrightarrow> c \<in> sets borel" "\<And>c. c \<in> C \<Longrightarrow> mono_on f c" "(\<Union>C) = UNIV"
979cdfdf7a79 HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents: 64272
diff changeset
  1901
  shows "f \<in> borel_measurable borel"
68833
fde093888c16 tagged 21 theories in the Analysis library for the manual
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 68635
diff changeset
  1902
  by (rule measurable_piecewise_restrict[of C], auto intro: borel_measurable_mono_on_fnc simp: assms)
64283
979cdfdf7a79 HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents: 64272
diff changeset
  1903
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1904
lemma borel_measurable_mono:
61880
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1905
  fixes f :: "real \<Rightarrow> real"
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1906
  shows "mono f \<Longrightarrow> f \<in> borel_measurable borel"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1907
  using borel_measurable_mono_on_fnc[of f UNIV] by (simp add: mono_def mono_on_def)
61880
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1908
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1909
lemma measurable_bdd_below_real[measurable (raw)]:
64008
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1910
  fixes F :: "'a \<Rightarrow> 'i \<Rightarrow> real"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1911
  assumes [simp]: "countable I" and [measurable]: "\<And>i. i \<in> I \<Longrightarrow> F i \<in> M \<rightarrow>\<^sub>M borel"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1912
  shows "Measurable.pred M (\<lambda>x. bdd_below ((\<lambda>i. F i x)`I))"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1913
proof (subst measurable_cong)
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1914
  show "bdd_below ((\<lambda>i. F i x)`I) \<longleftrightarrow> (\<exists>q\<in>\<int>. \<forall>i\<in>I. q \<le> F i x)" for x
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1915
    by (auto simp: bdd_below_def intro!: bexI[of _ "of_int (floor _)"] intro: order_trans of_int_floor_le)
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1916
  show "Measurable.pred M (\<lambda>w. \<exists>q\<in>\<int>. \<forall>i\<in>I. q \<le> F i w)"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1917
    using countable_int by measurable
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1918
qed
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1919
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1920
lemma borel_measurable_cINF_real[measurable (raw)]:
64008
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1921
  fixes F :: "_ \<Rightarrow> _ \<Rightarrow> real"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1922
  assumes [simp]: "countable I"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1923
  assumes F[measurable]: "\<And>i. i \<in> I \<Longrightarrow> F i \<in> borel_measurable M"
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
  1924
  shows "(\<lambda>x. INF i\<in>I. F i x) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1925
proof (rule measurable_piecewise_restrict)
64008
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1926
  let ?\<Omega> = "{x\<in>space M. bdd_below ((\<lambda>i. F i x)`I)}"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1927
  show "countable {?\<Omega>, - ?\<Omega>}" "space M \<subseteq> \<Union>{?\<Omega>, - ?\<Omega>}" "\<And>X. X \<in> {?\<Omega>, - ?\<Omega>} \<Longrightarrow> X \<inter> space M \<in> sets M"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1928
    by auto
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
  1929
  fix X assume "X \<in> {?\<Omega>, - ?\<Omega>}" then show "(\<lambda>x. INF i\<in>I. F i x) \<in> borel_measurable (restrict_space M X)"
64008
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1930
  proof safe
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
  1931
    show "(\<lambda>x. INF i\<in>I. F i x) \<in> borel_measurable (restrict_space M ?\<Omega>)"
64008
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1932
      by (intro borel_measurable_cINF measurable_restrict_space1 F)
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1933
         (auto simp: space_restrict_space)
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
  1934
    show "(\<lambda>x. INF i\<in>I. F i x) \<in> borel_measurable (restrict_space M (-?\<Omega>))"
64008
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1935
    proof (subst measurable_cong)
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1936
      fix x assume "x \<in> space (restrict_space M (-?\<Omega>))"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1937
      then have "\<not> (\<forall>i\<in>I. - F i x \<le> y)" for y
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1938
        by (auto simp: space_restrict_space bdd_above_def bdd_above_uminus[symmetric])
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
  1939
      then show "(INF i\<in>I. F i x) = - (THE x. False)"
64008
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1940
        by (auto simp: space_restrict_space Inf_real_def Sup_real_def Least_def simp del: Set.ball_simps(10))
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1941
    qed simp
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1942
  qed
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1943
qed
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1944
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1945
lemma borel_Ici: "borel = sigma UNIV (range (\<lambda>x::real. {x ..}))"
64008
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1946
proof (safe intro!: borel_eq_sigmaI1[OF borel_Iio])
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1947
  fix x :: real
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1948
  have eq: "{..<x} = space (sigma UNIV (range atLeast)) - {x ..}"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1949
    by auto
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1950
  show "{..<x} \<in> sets (sigma UNIV (range atLeast))"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1951
    unfolding eq by (intro sets.compl_sets) auto
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1952
qed auto
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1953
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1954
lemma borel_measurable_pred_less[measurable (raw)]:
64008
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1955
  fixes f :: "'a \<Rightarrow> 'b::{second_countable_topology, linorder_topology}"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1956
  shows "f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow> Measurable.pred M (\<lambda>w. f w < g w)"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1957
  unfolding Measurable.pred_def by (rule borel_measurable_less)
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1958
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1959
no_notation
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1960
  eucl_less (infix "<e" 50)
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1961
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1962
lemma borel_measurable_Max2[measurable (raw)]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1963
  fixes f::"_ \<Rightarrow> _ \<Rightarrow> 'a::{second_countable_topology, dense_linorder, linorder_topology}"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1964
  assumes "finite I"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1965
    and [measurable]: "\<And>i. f i \<in> borel_measurable M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1966
  shows "(\<lambda>x. Max{f i x |i. i \<in> I}) \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1967
  by (simp add: borel_measurable_Max[OF assms(1), where ?f=f and ?M=M] Setcompr_eq_image)
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1968
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1969
lemma measurable_compose_n [measurable (raw)]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1970
  assumes "T \<in> measurable M M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1971
  shows "(T^^n) \<in> measurable M M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1972
by (induction n, auto simp add: measurable_compose[OF _ assms])
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1973
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1974
lemma measurable_real_imp_nat:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1975
  fixes f::"'a \<Rightarrow> nat"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1976
  assumes [measurable]: "(\<lambda>x. real(f x)) \<in> borel_measurable M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1977
  shows "f \<in> measurable M (count_space UNIV)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1978
proof -
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1979
  let ?g = "(\<lambda>x. real(f x))"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1980
  have "\<And>(n::nat). ?g-`({real n}) \<inter> space M = f-`{n} \<inter> space M" by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1981
  moreover have "\<And>(n::nat). ?g-`({real n}) \<inter> space M \<in> sets M" using assms by measurable
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1982
  ultimately have "\<And>(n::nat). f-`{n} \<inter> space M \<in> sets M" by simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1983
  then show ?thesis using measurable_count_space_eq2_countable by blast
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1984
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1985
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1986
lemma measurable_equality_set [measurable]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1987
  fixes f g::"_\<Rightarrow> 'a::{second_countable_topology, t2_space}"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1988
  assumes [measurable]: "f \<in> borel_measurable M" "g \<in> borel_measurable M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1989
  shows "{x \<in> space M. f x = g x} \<in> sets M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1990
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1991
proof -
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1992
  define A where "A = {x \<in> space M. f x = g x}"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1993
  define B where "B = {y. \<exists>x::'a. y = (x,x)}"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1994
  have "A = (\<lambda>x. (f x, g x))-`B \<inter> space M" unfolding A_def B_def by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1995
  moreover have "(\<lambda>x. (f x, g x)) \<in> borel_measurable M" by simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1996
  moreover have "B \<in> sets borel" unfolding B_def by (simp add: closed_diagonal)
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1997
  ultimately have "A \<in> sets M" by simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1998
  then show ?thesis unfolding A_def by simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1999
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2000
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2001
lemma measurable_inequality_set [measurable]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2002
  fixes f g::"_ \<Rightarrow> 'a::{second_countable_topology, linorder_topology}"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2003
  assumes [measurable]: "f \<in> borel_measurable M" "g \<in> borel_measurable M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2004
  shows "{x \<in> space M. f x \<le> g x} \<in> sets M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2005
        "{x \<in> space M. f x < g x} \<in> sets M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2006
        "{x \<in> space M. f x \<ge> g x} \<in> sets M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2007
        "{x \<in> space M. f x > g x} \<in> sets M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2008
proof -
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2009
  define F where "F = (\<lambda>x. (f x, g x))"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2010
  have * [measurable]: "F \<in> borel_measurable M" unfolding F_def by simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2011
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2012
  have "{x \<in> space M. f x \<le> g x} = F-`{(x, y) | x y. x \<le> y} \<inter> space M" unfolding F_def by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2013
  moreover have "{(x, y) | x y. x \<le> (y::'a)} \<in> sets borel" using closed_subdiagonal borel_closed by blast
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2014
  ultimately show "{x \<in> space M. f x \<le> g x} \<in> sets M" using * by (metis (mono_tags, lifting) measurable_sets)
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2015
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2016
  have "{x \<in> space M. f x < g x} = F-`{(x, y) | x y. x < y} \<inter> space M" unfolding F_def by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2017
  moreover have "{(x, y) | x y. x < (y::'a)} \<in> sets borel" using open_subdiagonal borel_open by blast
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2018
  ultimately show "{x \<in> space M. f x < g x} \<in> sets M" using * by (metis (mono_tags, lifting) measurable_sets)
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2019
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2020
  have "{x \<in> space M. f x \<ge> g x} = F-`{(x, y) | x y. x \<ge> y} \<inter> space M" unfolding F_def by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2021
  moreover have "{(x, y) | x y. x \<ge> (y::'a)} \<in> sets borel" using closed_superdiagonal borel_closed by blast
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2022
  ultimately show "{x \<in> space M. f x \<ge> g x} \<in> sets M" using * by (metis (mono_tags, lifting) measurable_sets)
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2023
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2024
  have "{x \<in> space M. f x > g x} = F-`{(x, y) | x y. x > y} \<inter> space M" unfolding F_def by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2025
  moreover have "{(x, y) | x y. x > (y::'a)} \<in> sets borel" using open_superdiagonal borel_open by blast
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2026
  ultimately show "{x \<in> space M. f x > g x} \<in> sets M" using * by (metis (mono_tags, lifting) measurable_sets)
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2027
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2028
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2029
proposition measurable_limit [measurable]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2030
  fixes f::"nat \<Rightarrow> 'a \<Rightarrow> 'b::first_countable_topology"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2031
  assumes [measurable]: "\<And>n::nat. f n \<in> borel_measurable M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2032
  shows "Measurable.pred M (\<lambda>x. (\<lambda>n. f n x) \<longlonglongrightarrow> c)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2033
proof -
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2034
  obtain A :: "nat \<Rightarrow> 'b set" where A:
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2035
    "\<And>i. open (A i)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2036
    "\<And>i. c \<in> A i"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2037
    "\<And>S. open S \<Longrightarrow> c \<in> S \<Longrightarrow> eventually (\<lambda>i. A i \<subseteq> S) sequentially"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2038
  by (rule countable_basis_at_decseq) blast
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2039
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2040
  have [measurable]: "\<And>N i. (f N)-`(A i) \<inter> space M \<in> sets M" using A(1) by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2041
  then have mes: "(\<Inter>i. \<Union>n. \<Inter>N\<in>{n..}. (f N)-`(A i) \<inter> space M) \<in> sets M" by blast
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2042
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2043
  have "(u \<longlonglongrightarrow> c) \<longleftrightarrow> (\<forall>i. eventually (\<lambda>n. u n \<in> A i) sequentially)" for u::"nat \<Rightarrow> 'b"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2044
  proof
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2045
    assume "u \<longlonglongrightarrow> c"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2046
    then have "eventually (\<lambda>n. u n \<in> A i) sequentially" for i using A(1)[of i] A(2)[of i]
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2047
      by (simp add: topological_tendstoD)
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2048
    then show "(\<forall>i. eventually (\<lambda>n. u n \<in> A i) sequentially)" by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2049
  next
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2050
    assume H: "(\<forall>i. eventually (\<lambda>n. u n \<in> A i) sequentially)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2051
    show "(u \<longlonglongrightarrow> c)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2052
    proof (rule topological_tendstoI)
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2053
      fix S assume "open S" "c \<in> S"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2054
      with A(3)[OF this] obtain i where "A i \<subseteq> S"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2055
        using eventually_False_sequentially eventually_mono by blast
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2056
      moreover have "eventually (\<lambda>n. u n \<in> A i) sequentially" using H by simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2057
      ultimately show "\<forall>\<^sub>F n in sequentially. u n \<in> S"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2058
        by (simp add: eventually_mono subset_eq)
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2059
    qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2060
  qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2061
  then have "{x. (\<lambda>n. f n x) \<longlonglongrightarrow> c} = (\<Inter>i. \<Union>n. \<Inter>N\<in>{n..}. (f N)-`(A i))"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2062
    by (auto simp add: atLeast_def eventually_at_top_linorder)
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2063
  then have "{x \<in> space M. (\<lambda>n. f n x) \<longlonglongrightarrow> c} = (\<Inter>i. \<Union>n. \<Inter>N\<in>{n..}. (f N)-`(A i) \<inter> space M)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2064
    by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2065
  then have "{x \<in> space M. (\<lambda>n. f n x) \<longlonglongrightarrow> c} \<in> sets M" using mes by simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2066
  then show ?thesis by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2067
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2068
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2069
lemma measurable_limit2 [measurable]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2070
  fixes u::"nat \<Rightarrow> 'a \<Rightarrow> real"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2071
  assumes [measurable]: "\<And>n. u n \<in> borel_measurable M" "v \<in> borel_measurable M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2072
  shows "Measurable.pred M (\<lambda>x. (\<lambda>n. u n x) \<longlonglongrightarrow> v x)"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2073
proof -
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2074
  define w where "w = (\<lambda>n x. u n x - v x)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2075
  have [measurable]: "w n \<in> borel_measurable M" for n unfolding w_def by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2076
  have "((\<lambda>n. u n x) \<longlonglongrightarrow> v x) \<longleftrightarrow> ((\<lambda>n. w n x) \<longlonglongrightarrow> 0)" for x
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2077
    unfolding w_def using Lim_null by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2078
  then show ?thesis using measurable_limit by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2079
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2080
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2081
lemma measurable_P_restriction [measurable (raw)]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2082
  assumes [measurable]: "Measurable.pred M P" "A \<in> sets M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2083
  shows "{x \<in> A. P x} \<in> sets M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2084
proof -
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2085
  have "A \<subseteq> space M" using sets.sets_into_space[OF assms(2)].
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2086
  then have "{x \<in> A. P x} = A \<inter> {x \<in> space M. P x}" by blast
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2087
  then show ?thesis by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2088
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2089
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2090
lemma measurable_sum_nat [measurable (raw)]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2091
  fixes f :: "'c \<Rightarrow> 'a \<Rightarrow> nat"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2092
  assumes "\<And>i. i \<in> S \<Longrightarrow> f i \<in> measurable M (count_space UNIV)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2093
  shows "(\<lambda>x. \<Sum>i\<in>S. f i x) \<in> measurable M (count_space UNIV)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2094
proof cases
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2095
  assume "finite S"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2096
  then show ?thesis using assms by induct auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2097
qed simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2098
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2099
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2100
lemma measurable_abs_powr [measurable]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2101
  fixes p::real
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2102
  assumes [measurable]: "f \<in> borel_measurable M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2103
  shows "(\<lambda>x. \<bar>f x\<bar> powr p) \<in> borel_measurable M"
70688
3d894e1cfc75 new material on Analysis, plus some rearrangements
paulson <lp15@cam.ac.uk>
parents: 70617
diff changeset
  2104
  by simp
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2105
69566
c41954ee87cf more antiquotations -- less LaTeX macros;
wenzelm
parents: 69517
diff changeset
  2106
text \<open>The next one is a variation around \<open>measurable_restrict_space\<close>.\<close>
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2107
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2108
lemma measurable_restrict_space3:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2109
  assumes "f \<in> measurable M N" and
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2110
          "f \<in> A \<rightarrow> B"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2111
  shows "f \<in> measurable (restrict_space M A) (restrict_space N B)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2112
proof -
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2113
  have "f \<in> measurable (restrict_space M A) N" using assms(1) measurable_restrict_space1 by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2114
  then show ?thesis by (metis Int_iff funcsetI funcset_mem
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2115
      measurable_restrict_space2[of f, of "restrict_space M A", of B, of N] assms(2) space_restrict_space)
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2116
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2117
70688
3d894e1cfc75 new material on Analysis, plus some rearrangements
paulson <lp15@cam.ac.uk>
parents: 70617
diff changeset
  2118
lemma measurable_restrict_mono:
3d894e1cfc75 new material on Analysis, plus some rearrangements
paulson <lp15@cam.ac.uk>
parents: 70617
diff changeset
  2119
  assumes f: "f \<in> restrict_space M A \<rightarrow>\<^sub>M N" and "B \<subseteq> A"
3d894e1cfc75 new material on Analysis, plus some rearrangements
paulson <lp15@cam.ac.uk>
parents: 70617
diff changeset
  2120
  shows "f \<in> restrict_space M B \<rightarrow>\<^sub>M N"
3d894e1cfc75 new material on Analysis, plus some rearrangements
paulson <lp15@cam.ac.uk>
parents: 70617
diff changeset
  2121
by (rule measurable_compose[OF measurable_restrict_space3 f])
3d894e1cfc75 new material on Analysis, plus some rearrangements
paulson <lp15@cam.ac.uk>
parents: 70617
diff changeset
  2122
   (insert \<open>B \<subseteq> A\<close>, auto)
3d894e1cfc75 new material on Analysis, plus some rearrangements
paulson <lp15@cam.ac.uk>
parents: 70617
diff changeset
  2123
69566
c41954ee87cf more antiquotations -- less LaTeX macros;
wenzelm
parents: 69517
diff changeset
  2124
text \<open>The next one is a variation around \<open>measurable_piecewise_restrict\<close>.\<close>
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2125
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2126
lemma measurable_piecewise_restrict2:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2127
  assumes [measurable]: "\<And>n. A n \<in> sets M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2128
      and "space M = (\<Union>(n::nat). A n)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2129
          "\<And>n. \<exists>h \<in> measurable M N. (\<forall>x \<in> A n. f x = h x)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2130
  shows "f \<in> measurable M N"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2131
proof (rule measurableI)
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2132
  fix B assume [measurable]: "B \<in> sets N"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2133
  {
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2134
    fix n::nat
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2135
    obtain h where [measurable]: "h \<in> measurable M N" and "\<forall>x \<in> A n. f x = h x" using assms(3) by blast
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2136
    then have *: "f-`B \<inter> A n = h-`B \<inter> A n" by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2137
    have "h-`B \<inter> A n = h-`B \<inter> space M \<inter> A n" using assms(2) sets.sets_into_space by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2138
    then have "h-`B \<inter> A n \<in> sets M" by simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2139
    then have "f-`B \<inter> A n \<in> sets M" using * by simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2140
  }
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2141
  then have "(\<Union>n. f-`B \<inter> A n) \<in> sets M" by measurable
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2142
  moreover have "f-`B \<inter> space M = (\<Union>n. f-`B \<inter> A n)" using assms(2) by blast
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2143
  ultimately show "f-`B \<inter> space M \<in> sets M" by simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2144
next
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2145
  fix x assume "x \<in> space M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2146
  then obtain n where "x \<in> A n" using assms(2) by blast
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2147
  obtain h where [measurable]: "h \<in> measurable M N" and "\<forall>x \<in> A n. f x = h x" using assms(3) by blast
64911
f0e07600de47 isabelle update_cartouches -c -t;
wenzelm
parents: 64320
diff changeset
  2148
  then have "f x = h x" using \<open>x \<in> A n\<close> by blast
f0e07600de47 isabelle update_cartouches -c -t;
wenzelm
parents: 64320
diff changeset
  2149
  moreover have "h x \<in> space N" by (metis measurable_space \<open>x \<in> space M\<close> \<open>h \<in> measurable M N\<close>)
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2150
  ultimately show "f x \<in> space N" by simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2151
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2152
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  2153
end