src/HOL/Analysis/Borel_Space.thy
author nipkow
Tue, 27 Aug 2019 17:08:51 +0200
changeset 70614 6a2c982363e9
parent 70365 4df0628e8545
child 70617 c81ac117afa6
permissions -rw-r--r--
moved lemmas
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 closure_contains_Sup:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   225
  fixes S :: "real set"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   226
  assumes "S \<noteq> {}" "bdd_above S"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   227
  shows "Sup S \<in> closure S"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   228
proof -
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
   229
  have "Inf (uminus ` S) \<in> closure (uminus ` S)"
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   230
      using assms by (intro closure_contains_Inf) auto
69861
62e47f06d22c avoid context-sensitive simp rules whose context-free form (image_comp) is not simp by default
haftmann
parents: 69748
diff changeset
   231
  also have "Inf (uminus ` S) = -Sup S" by (simp add: Inf_real_def image_comp)
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   232
  also have "closure (uminus ` S) = uminus ` closure S"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   233
      by (rule sym, intro closure_injective_linear_image) (auto intro: linearI)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   234
  finally show ?thesis by auto
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   235
qed
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   236
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   237
lemma closed_contains_Sup:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   238
  fixes S :: "real set"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   239
  shows "S \<noteq> {} \<Longrightarrow> bdd_above S \<Longrightarrow> closed S \<Longrightarrow> Sup S \<in> S"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   240
  by (subst closure_closed[symmetric], assumption, rule closure_contains_Sup)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   241
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   242
lemma closed_subset_contains_Sup:
67685
bdff8bf0a75b moved theorems from AFP/Affine_Arithmetic and AFP/Ordinary_Differential_Equations
immler
parents: 67399
diff changeset
   243
  fixes A C :: "real set"
bdff8bf0a75b moved theorems from AFP/Affine_Arithmetic and AFP/Ordinary_Differential_Equations
immler
parents: 67399
diff changeset
   244
  shows "closed C \<Longrightarrow> A \<subseteq> C \<Longrightarrow> A \<noteq> {} \<Longrightarrow> bdd_above A \<Longrightarrow> Sup A \<in> C"
bdff8bf0a75b moved theorems from AFP/Affine_Arithmetic and AFP/Ordinary_Differential_Equations
immler
parents: 67399
diff changeset
   245
  by (metis closure_contains_Sup closure_minimal subset_eq)
bdff8bf0a75b moved theorems from AFP/Affine_Arithmetic and AFP/Ordinary_Differential_Equations
immler
parents: 67399
diff changeset
   246
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   247
lemma continuous_interval_vimage_Int:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   248
  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
   249
  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
   250
  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
   251
proof-
63040
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   252
  let ?A = "{a..b} \<inter> g -` {c..d}"
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   253
  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
   254
  obtain c'' where c'': "c'' \<in> ?A" "g c'' = c" by auto
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   255
  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
   256
  obtain d'' where d'': "d'' \<in> ?A" "g d'' = d" by auto
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   257
  hence [simp]: "?A \<noteq> {}" by blast
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   258
63040
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   259
  define c' where "c' = Inf ?A"
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   260
  define d' where "d' = Sup ?A"
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   261
  have "?A \<subseteq> {c'..d'}" unfolding c'_def d'_def
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   262
    by (intro subsetI) (auto intro: cInf_lower cSup_upper)
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   263
  moreover from assms have "closed ?A"
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   264
    using continuous_on_closed_vimage[of "{a..b}" g] by (subst Int_commute) simp
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   265
  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
   266
    by ((intro closed_contains_Inf closed_contains_Sup, simp_all)[])+
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   267
  hence "{c'..d'} \<subseteq> ?A" using assms
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   268
    by (intro subsetI)
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   269
       (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
   270
             intro!: mono)
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   271
  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
   272
  moreover have "g c' \<le> c" "g d' \<ge> d"
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   273
    apply (insert c'' d'' c'd'_in_set)
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   274
    apply (subst c''(2)[symmetric])
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   275
    apply (auto simp: c'_def intro!: mono cInf_lower c'') []
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   276
    apply (subst d''(2)[symmetric])
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   277
    apply (auto simp: d'_def intro!: mono cSup_upper d'') []
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   278
    done
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   279
  with c'd'_in_set have "g c' = c" "g d' = d" by auto
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   280
  ultimately show ?thesis using that by blast
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   281
qed
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   282
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
   283
subsection \<open>Generic Borel spaces\<close>
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   284
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69861
diff changeset
   285
definition\<^marker>\<open>tag important\<close> (in topological_space) borel :: "'a measure" where
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   286
  "borel = sigma UNIV {S. open S}"
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   287
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   288
abbreviation "borel_measurable M \<equiv> measurable M borel"
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   289
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   290
lemma in_borel_measurable:
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   291
   "f \<in> borel_measurable M \<longleftrightarrow>
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   292
    (\<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
   293
  by (auto simp add: measurable_def borel_def)
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   294
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   295
lemma in_borel_measurable_borel:
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   296
   "f \<in> borel_measurable M \<longleftrightarrow>
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   297
    (\<forall>S \<in> sets borel.
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   298
      f -` S \<inter> space M \<in> sets M)"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   299
  by (auto simp add: measurable_def borel_def)
33533
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 space_borel[simp]: "space borel = UNIV"
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   302
  unfolding borel_def by auto
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   303
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   304
lemma space_in_borel[measurable]: "UNIV \<in> sets borel"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   305
  unfolding borel_def by auto
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   306
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   307
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
   308
  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
   309
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   310
lemma measurable_sets_borel:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   311
    "\<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
   312
  by (drule (1) measurable_sets) simp
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
   313
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   314
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
   315
  unfolding borel_def pred_def by auto
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   316
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   317
lemma borel_open[measurable (raw generic)]:
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   318
  assumes "open A" shows "A \<in> sets borel"
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   319
proof -
44537
c10485a6a7af make HOL-Probability respect set/pred distinction
huffman
parents: 44282
diff changeset
   320
  have "A \<in> {S. open S}" unfolding mem_Collect_eq using assms .
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   321
  thus ?thesis unfolding borel_def by auto
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   322
qed
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   323
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   324
lemma borel_closed[measurable (raw generic)]:
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   325
  assumes "closed A" shows "A \<in> sets borel"
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   326
proof -
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   327
  have "space borel - (- A) \<in> sets borel"
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   328
    using assms unfolding closed_def by (blast intro: borel_open)
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   329
  thus ?thesis by simp
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   330
qed
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   331
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   332
lemma borel_singleton[measurable]:
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
   333
  "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
   334
  unfolding insert_def by (rule sets.Un) auto
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   335
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   336
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
   337
proof -
ba194424b895 HOL-Probability: move stopping time from AFP/Markov_Models
hoelzl
parents: 64287
diff changeset
   338
  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
   339
    by (intro sets.countable_UN') auto
ba194424b895 HOL-Probability: move stopping time from AFP/Markov_Models
hoelzl
parents: 64287
diff changeset
   340
  then show ?thesis
ba194424b895 HOL-Probability: move stopping time from AFP/Markov_Models
hoelzl
parents: 64287
diff changeset
   341
    by auto
ba194424b895 HOL-Probability: move stopping time from AFP/Markov_Models
hoelzl
parents: 64287
diff changeset
   342
qed
ba194424b895 HOL-Probability: move stopping time from AFP/Markov_Models
hoelzl
parents: 64287
diff changeset
   343
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   344
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
   345
  unfolding Compl_eq_Diff_UNIV by simp
41830
719b0a517c33 log is borel measurable
hoelzl
parents: 41545
diff changeset
   346
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   347
lemma borel_measurable_vimage:
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   348
  fixes f :: "'a \<Rightarrow> 'x::t2_space"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   349
  assumes borel[measurable]: "f \<in> borel_measurable M"
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   350
  shows "f -` {x} \<inter> space M \<in> sets M"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   351
  by simp
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   352
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   353
lemma borel_measurableI:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
   354
  fixes f :: "'a \<Rightarrow> 'x::topological_space"
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   355
  assumes "\<And>S. open S \<Longrightarrow> f -` S \<inter> space M \<in> sets M"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   356
  shows "f \<in> borel_measurable M"
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   357
  unfolding borel_def
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   358
proof (rule measurable_measure_of, simp_all)
44537
c10485a6a7af make HOL-Probability respect set/pred distinction
huffman
parents: 44282
diff changeset
   359
  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
   360
    using assms[of S] by simp
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   361
qed
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   362
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   363
lemma borel_measurable_const:
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   364
  "(\<lambda>x. c) \<in> borel_measurable M"
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   365
  by auto
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   366
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   367
lemma borel_measurable_indicator:
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   368
  assumes A: "A \<in> sets M"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   369
  shows "indicator A \<in> borel_measurable M"
46905
6b1c0a80a57a prefer abs_def over def_raw;
wenzelm
parents: 46884
diff changeset
   370
  unfolding indicator_def [abs_def] using A
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
   371
  by (auto intro!: measurable_If_set)
33533
40b44cb20c8c New theory Probability/Borel.thy, and some associated lemmas
paulson
parents:
diff changeset
   372
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   373
lemma borel_measurable_count_space[measurable (raw)]:
50096
7c9c5b1b6cd7 more measurability rules
hoelzl
parents: 50094
diff changeset
   374
  "f \<in> borel_measurable (count_space S)"
7c9c5b1b6cd7 more measurability rules
hoelzl
parents: 50094
diff changeset
   375
  unfolding measurable_def by auto
7c9c5b1b6cd7 more measurability rules
hoelzl
parents: 50094
diff changeset
   376
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   377
lemma borel_measurable_indicator'[measurable (raw)]:
50096
7c9c5b1b6cd7 more measurability rules
hoelzl
parents: 50094
diff changeset
   378
  assumes [measurable]: "{x\<in>space M. f x \<in> A x} \<in> sets M"
7c9c5b1b6cd7 more measurability rules
hoelzl
parents: 50094
diff changeset
   379
  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
   380
  unfolding indicator_def[abs_def]
382bd3173584 add syntax and a.e.-rules for (conditional) probability on predicates
hoelzl
parents: 49774
diff changeset
   381
  by (auto intro!: measurable_If)
382bd3173584 add syntax and a.e.-rules for (conditional) probability on predicates
hoelzl
parents: 49774
diff changeset
   382
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   383
lemma borel_measurable_indicator_iff:
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   384
  "(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
   385
    (is "?I \<in> borel_measurable M \<longleftrightarrow> _")
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   386
proof
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   387
  assume "?I \<in> borel_measurable M"
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   388
  then have "?I -` {1} \<inter> space M \<in> sets M"
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   389
    unfolding measurable_def by auto
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   390
  also have "?I -` {1} \<inter> space M = A \<inter> space M"
46905
6b1c0a80a57a prefer abs_def over def_raw;
wenzelm
parents: 46884
diff changeset
   391
    unfolding indicator_def [abs_def] by auto
40859
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   392
  finally show "A \<inter> space M \<in> sets M" .
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   393
next
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   394
  assume "A \<inter> space M \<in> sets M"
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   395
  moreover have "?I \<in> borel_measurable M \<longleftrightarrow>
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   396
    (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
   397
    by (intro measurable_cong) (auto simp: indicator_def)
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   398
  ultimately show "?I \<in> borel_measurable M" by auto
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   399
qed
de0b30e6c2d2 Support product spaces on sigma finite measures.
hoelzl
parents: 39302
diff changeset
   400
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   401
lemma borel_measurable_subalgebra:
41545
9c869baf1c66 tuned formalization of subalgebra
hoelzl
parents: 41097
diff changeset
   402
  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
   403
  shows "f \<in> borel_measurable M"
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
   404
  using assms unfolding measurable_def by auto
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
   405
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   406
lemma borel_measurable_restrict_space_iff_ereal:
57137
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   407
  fixes f :: "'a \<Rightarrow> ereal"
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   408
  assumes \<Omega>[measurable, simp]: "\<Omega> \<inter> space M \<in> sets M"
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   409
  shows "f \<in> borel_measurable (restrict_space M \<Omega>) \<longleftrightarrow>
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   410
    (\<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
   411
  by (subst measurable_restrict_space_iff)
63566
e5abbdee461a more accurate cong del;
wenzelm
parents: 63389
diff changeset
   412
     (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
   413
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   414
lemma borel_measurable_restrict_space_iff_ennreal:
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
   415
  fixes f :: "'a \<Rightarrow> ennreal"
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
   416
  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
   417
  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
   418
    (\<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
   419
  by (subst measurable_restrict_space_iff)
63566
e5abbdee461a more accurate cong del;
wenzelm
parents: 63389
diff changeset
   420
     (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
   421
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   422
lemma borel_measurable_restrict_space_iff:
57137
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   423
  fixes f :: "'a \<Rightarrow> 'b::real_normed_vector"
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   424
  assumes \<Omega>[measurable, simp]: "\<Omega> \<inter> space M \<in> sets M"
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   425
  shows "f \<in> borel_measurable (restrict_space M \<Omega>) \<longleftrightarrow>
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   426
    (\<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
   427
  by (subst measurable_restrict_space_iff)
63566
e5abbdee461a more accurate cong del;
wenzelm
parents: 63389
diff changeset
   428
     (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
   429
       cong del: if_weak_cong)
57138
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   430
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   431
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
   432
  by (auto intro: borel_closed)
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   433
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   434
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
   435
  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
   436
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   437
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
   438
  by (auto intro: borel_closed dest!: compact_imp_closed)
57137
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   439
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   440
lemma borel_sigma_sets_subset:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   441
  "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
   442
  using sets.sigma_sets_subset[of A borel] by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   443
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   444
lemma borel_eq_sigmaI1:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   445
  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
   446
  assumes borel_eq: "borel = sigma UNIV X"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   447
  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
   448
  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
   449
  shows "borel = sigma UNIV (F ` A)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   450
  unfolding borel_def
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   451
proof (intro sigma_eqI antisym)
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   452
  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
   453
    unfolding borel_def by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   454
  also have "\<dots> = sigma_sets UNIV X"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   455
    unfolding borel_eq by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   456
  also have "\<dots> \<subseteq> sigma_sets UNIV (F`A)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   457
    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
   458
  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
   459
  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
   460
    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
   461
qed auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   462
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   463
lemma borel_eq_sigmaI2:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   464
  fixes F :: "'i \<Rightarrow> 'j \<Rightarrow> 'a::topological_space set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   465
    and G :: "'l \<Rightarrow> 'k \<Rightarrow> 'a::topological_space set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   466
  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
   467
  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
   468
  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
   469
  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
   470
  using assms
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   471
  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
   472
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   473
lemma borel_eq_sigmaI3:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   474
  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
   475
  assumes borel_eq: "borel = sigma UNIV X"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   476
  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
   477
  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
   478
  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
   479
  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
   480
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   481
lemma borel_eq_sigmaI4:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   482
  fixes F :: "'i \<Rightarrow> 'a::topological_space set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   483
    and G :: "'l \<Rightarrow> 'k \<Rightarrow> 'a::topological_space set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   484
  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
   485
  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
   486
  assumes F: "\<And>i. F i \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   487
  shows "borel = sigma UNIV (range F)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   488
  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
   489
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   490
lemma borel_eq_sigmaI5:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   491
  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
   492
  assumes borel_eq: "borel = sigma UNIV (range G)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   493
  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
   494
  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
   495
  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
   496
  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
   497
69722
b5163b2132c5 minor tagging updates in 13 theories
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69683
diff changeset
   498
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
   499
  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
   500
  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
   501
  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
   502
  unfolding borel_def
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   503
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
   504
  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
   505
    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
   506
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   507
  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
   508
  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
   509
    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
   510
  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
   511
  proof induction
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   512
    case (UN K)
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   513
    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
   514
      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
   515
    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
   516
      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
   517
      by (auto simp: topological_basis_def)
69745
aec42cee2521 more canonical and less specialized syntax
nipkow
parents: 69739
diff changeset
   518
    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
   519
      by metis
63040
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
   520
    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
   521
    with m have "countable U"
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
   522
      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
   523
    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
   524
    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
   525
      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
   526
    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
   527
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   528
    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
   529
      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
   530
    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
   531
      by metis
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   532
    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
   533
      by auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   534
    then have "\<Union>K = (\<Union>b\<in>U. u b)"
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
   535
      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
   536
    also have "\<dots> \<in> sigma_sets UNIV X"
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
   537
      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
   538
    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
   539
  qed auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   540
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
   541
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   542
lemma borel_eq_closed: "borel = sigma UNIV (Collect closed)"
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   543
  unfolding borel_def
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   544
proof (intro sigma_eqI sigma_sets_eqI, safe)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   545
  fix x :: "'a set" assume "open x"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   546
  hence "x = UNIV - (UNIV - x)" by auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   547
  also have "\<dots> \<in> sigma_sets UNIV (Collect closed)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   548
    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
   549
  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
   550
next
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   551
  fix x :: "'a set" assume "closed x"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   552
  hence "x = UNIV - (UNIV - x)" by auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   553
  also have "\<dots> \<in> sigma_sets UNIV (Collect open)"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   554
    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
   555
  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
   556
qed simp_all
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   557
69722
b5163b2132c5 minor tagging updates in 13 theories
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69683
diff changeset
   558
proposition borel_eq_countable_basis:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   559
  fixes B::"'a::topological_space set set"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   560
  assumes "countable B"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   561
  assumes "topological_basis B"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   562
  shows "borel = sigma UNIV B"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   563
  unfolding borel_def
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   564
proof (intro sigma_eqI sigma_sets_eqI, safe)
69748
7aafd0472661 less odd class.second_countable_topology_def
immler
parents: 69745
diff changeset
   565
  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
   566
  fix X::"'a set" assume "open X"
69748
7aafd0472661 less odd class.second_countable_topology_def
immler
parents: 69745
diff changeset
   567
  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
   568
  then show "X \<in> sigma_sets UNIV B"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   569
    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
   570
next
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   571
  fix b assume "b \<in> B"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   572
  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
   573
  thus "b \<in> sigma_sets UNIV (Collect open)" by auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   574
qed simp_all
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   575
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   576
lemma borel_measurable_continuous_on_restrict:
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   577
  fixes f :: "'a::topological_space \<Rightarrow> 'b::topological_space"
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   578
  assumes f: "continuous_on A f"
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   579
  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
   580
proof (rule borel_measurableI)
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   581
  fix S :: "'b set" assume "open S"
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   582
  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
   583
    by (metis continuous_on_open_invariant)
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   584
  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
   585
    by (force simp add: sets_restrict_space space_restrict_space)
57137
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   586
qed
f174712d0a84 better support for restrict_space
hoelzl
parents: 57036
diff changeset
   587
70365
4df0628e8545 a few new lemmas and a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
   588
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
   589
  by (drule borel_measurable_continuous_on_restrict) simp
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
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_if:
59415
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
   592
  "A \<in> sets borel \<Longrightarrow> continuous_on A f \<Longrightarrow> continuous_on (- A) g \<Longrightarrow>
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
   593
    (\<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
   594
  by (auto simp add: measurable_If_restrict_space_iff Collect_neg_eq
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
   595
           intro!: borel_measurable_continuous_on_restrict)
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
   596
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   597
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
   598
  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
   599
  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
   600
  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
   601
  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
   602
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
   603
  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
   604
    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
   605
  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
   606
    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
   607
qed auto
0ddb5b755cdc moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents: 57259
diff changeset
   608
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   609
lemma borel_measurable_continuous_on:
57138
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   610
  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
   611
  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
   612
  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
   613
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   614
lemma borel_measurable_continuous_on_indicator:
57138
7b3146180291 generalizd measurability on restricted space; rule for integrability on compact sets
hoelzl
parents: 57137
diff changeset
   615
  fixes f g :: "'a::topological_space \<Rightarrow> 'b::real_normed_vector"
59415
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
   616
  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
   617
  by (subst borel_measurable_restrict_space_iff[symmetric])
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
   618
     (auto intro: borel_measurable_continuous_on_restrict)
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
   619
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   620
lemma borel_measurable_Pair[measurable (raw)]:
50881
ae630bab13da renamed countable_basis_space to second_countable_topology
hoelzl
parents: 50526
diff changeset
   621
  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
   622
  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
   623
  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
   624
  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
   625
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
   626
  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
   627
  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
   628
  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
   629
  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
   630
    by (auto intro!: countable_basis topological_basis_prod is_basis)
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
   631
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
   632
  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
   633
  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
   634
    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
   635
    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
   636
    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
   637
      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
   638
    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
   639
      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
   640
    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
   641
      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
   642
    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
   643
  qed auto
39087
96984bf6fa5b Measurable on euclidean space is equiv. to measurable components
hoelzl
parents: 39083
diff changeset
   644
qed
96984bf6fa5b Measurable on euclidean space is equiv. to measurable components
hoelzl
parents: 39083
diff changeset
   645
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   646
lemma borel_measurable_continuous_Pair:
50881
ae630bab13da renamed countable_basis_space to second_countable_topology
hoelzl
parents: 50526
diff changeset
   647
  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
   648
  assumes [measurable]: "f \<in> borel_measurable M"
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
   649
  assumes [measurable]: "g \<in> borel_measurable M"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   650
  assumes H: "continuous_on UNIV (\<lambda>x. H (fst x) (snd x))"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   651
  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
   652
proof -
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   653
  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
   654
  show ?thesis
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   655
    unfolding eq by (rule borel_measurable_continuous_on[OF H]) auto
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   656
qed
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
   657
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
   658
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
   659
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   660
lemma [measurable]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   661
  fixes a b :: "'a::linorder_topology"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   662
  shows lessThan_borel: "{..< a} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   663
    and greaterThan_borel: "{a <..} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   664
    and greaterThanLessThan_borel: "{a<..<b} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   665
    and atMost_borel: "{..a} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   666
    and atLeast_borel: "{a..} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   667
    and atLeastAtMost_borel: "{a..b} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   668
    and greaterThanAtMost_borel: "{a<..b} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   669
    and atLeastLessThan_borel: "{a..<b} \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   670
  unfolding greaterThanAtMost_def atLeastLessThan_def
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   671
  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
   672
                   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
   673
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   674
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
   675
  "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
   676
  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
   677
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
   678
  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
   679
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   680
  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
   681
    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
   682
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   683
  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
   684
  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
   685
    by blast
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   686
  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
   687
  proof
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   688
    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
   689
    show ?thesis
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   690
    proof cases
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   691
      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
   692
      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
   693
        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
   694
      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
   695
        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
   696
      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
   697
        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
   698
      finally show ?thesis .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   699
    next
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   700
      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
   701
      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
   702
        by auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   703
      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
   704
        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
   705
      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
   706
        by auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   707
      finally show ?thesis .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   708
    qed
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   709
  qed auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   710
qed auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   711
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   712
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
   713
  "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
   714
  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
   715
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
   716
  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
   717
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   718
  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
   719
    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
   720
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   721
  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
   722
  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
   723
    by blast
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   724
  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
   725
  proof
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   726
    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
   727
    show ?thesis
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   728
    proof cases
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   729
      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
   730
      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
   731
        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
   732
      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
   733
        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
   734
      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
   735
        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
   736
      finally show ?thesis .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   737
    next
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   738
      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
   739
      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
   740
        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
   741
      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
   742
        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
   743
      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
   744
        by auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   745
      finally show ?thesis .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   746
    qed
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   747
  qed auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   748
qed auto
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   749
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   750
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
   751
  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
   752
  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
   753
  unfolding borel_Iio
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   754
  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
   755
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   756
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
   757
  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
   758
  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
   759
  unfolding borel_Ioi
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   760
  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
   761
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   762
lemma borel_measurableI_le:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   763
  fixes f :: "'a \<Rightarrow> 'b::{linorder_topology, second_countable_topology}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   764
  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
   765
  by (rule borel_measurableI_greater) (auto simp: not_le[symmetric])
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   766
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   767
lemma borel_measurableI_ge:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   768
  fixes f :: "'a \<Rightarrow> 'b::{linorder_topology, second_countable_topology}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   769
  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
   770
  by (rule borel_measurableI_less) (auto simp: not_le[symmetric])
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   771
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   772
lemma borel_measurable_less[measurable]:
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   773
  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
   774
  assumes "f \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   775
  assumes "g \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   776
  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
   777
proof -
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   778
  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
   779
    by auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   780
  also have "\<dots> \<in> sets M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   781
    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
   782
              continuous_intros)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   783
  finally show ?thesis .
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   784
qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   785
69739
nipkow
parents: 69722
diff changeset
   786
lemma
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   787
  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
   788
  assumes f[measurable]: "f \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   789
  assumes g[measurable]: "g \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   790
  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
   791
    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
   792
    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
   793
  unfolding eq_iff not_less[symmetric]
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   794
  by measurable
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   795
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   796
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
   797
  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
   798
  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
   799
  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
   800
  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
   801
  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
   802
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   803
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
   804
  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
   805
  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
   806
  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
   807
  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
   808
  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
   809
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   810
lemma borel_measurable_cSUP[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   811
  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
   812
  assumes [simp]: "countable I"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   813
  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
   814
  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
   815
  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
   816
proof cases
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   817
  assume "I = {}" then show ?thesis
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   818
    unfolding \<open>I = {}\<close> image_empty by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   819
next
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   820
  assume "I \<noteq> {}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   821
  show ?thesis
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   822
  proof (rule borel_measurableI_le)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   823
    fix y
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   824
    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
   825
      by measurable
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
   826
    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
   827
      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
   828
    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
   829
  qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   830
qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   831
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   832
lemma borel_measurable_cINF[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   833
  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
   834
  assumes [simp]: "countable I"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   835
  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
   836
  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
   837
  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
   838
proof cases
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   839
  assume "I = {}" then show ?thesis
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   840
    unfolding \<open>I = {}\<close> image_empty by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   841
next
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   842
  assume "I \<noteq> {}"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   843
  show ?thesis
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   844
  proof (rule borel_measurableI_ge)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   845
    fix y
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   846
    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
   847
      by measurable
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
   848
    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
   849
      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
   850
    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
   851
  qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   852
qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   853
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   854
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
   855
  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
   856
  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
   857
  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
   858
  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
   859
proof -
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   860
  { 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
   861
      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
   862
  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
   863
    by measurable
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   864
  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
   865
    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
   866
  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
   867
    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
   868
  finally show ?thesis .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   869
qed
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   870
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   871
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
   872
  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
   873
  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
   874
  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
   875
  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
   876
proof -
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   877
  { 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
   878
      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
   879
  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
   880
    by measurable
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   881
  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
   882
    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
   883
  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
   884
    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
   885
  finally show ?thesis .
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   886
qed
ff2bd4a14ddb generalized (borel_)measurable_SUP/INF/lfp/gfp; tuned proofs for sigma-closure of product spaces
hoelzl
parents: 59000
diff changeset
   887
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   888
lemma borel_measurable_max[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   889
  "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
   890
  by (rule borel_measurableI_less) simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   891
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   892
lemma borel_measurable_min[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   893
  "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
   894
  by (rule borel_measurableI_greater) simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   895
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   896
lemma borel_measurable_Min[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   897
  "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
   898
proof (induct I rule: finite_induct)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   899
  case (insert i I) then show ?case
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   900
    by (cases "I = {}") auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   901
qed auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   902
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   903
lemma borel_measurable_Max[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   904
  "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
   905
proof (induct I rule: finite_induct)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   906
  case (insert i I) then show ?case
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   907
    by (cases "I = {}") auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   908
qed auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   909
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   910
lemma borel_measurable_sup[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   911
  "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
   912
  unfolding sup_max 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_inf[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   915
  "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
   916
  unfolding inf_min by measurable
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   917
69739
nipkow
parents: 69722
diff changeset
   918
lemma [measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   919
  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
   920
  assumes "\<And>i. f i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   921
  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
   922
    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
   923
  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
   924
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   925
lemma measurable_convergent[measurable (raw)]:
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   926
  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
   927
  assumes [measurable]: "\<And>i. f i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   928
  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
   929
  unfolding convergent_ereal by measurable
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   930
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   931
lemma sets_Collect_convergent[measurable]:
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   932
  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
   933
  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
   934
  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
   935
  by measurable
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   936
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   937
lemma borel_measurable_lim[measurable (raw)]:
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   938
  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
   939
  assumes [measurable]: "\<And>i. f i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   940
  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
   941
proof -
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   942
  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
   943
    by (simp add: lim_def convergent_def convergent_limsup_cl)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   944
  then show ?thesis
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   945
    by simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   946
qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   947
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   948
lemma borel_measurable_LIMSEQ_order:
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   949
  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
   950
  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
   951
  and u: "\<And>i. u i \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   952
  shows "u' \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   953
proof -
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   954
  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
   955
    using u' by (simp add: lim_imp_Liminf[symmetric])
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   956
  with u show ?thesis by (simp cong: measurable_cong)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   957
qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   958
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
   959
subsection \<open>Borel spaces on topological monoids\<close>
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   960
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   961
lemma borel_measurable_add[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   962
  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
   963
  assumes f: "f \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   964
  assumes g: "g \<in> borel_measurable M"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   965
  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
   966
  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
   967
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   968
lemma borel_measurable_sum[measurable (raw)]:
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   969
  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
   970
  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
   971
  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
   972
proof cases
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   973
  assume "finite S"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   974
  thus ?thesis using assms by induct auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   975
qed simp
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
   976
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   977
lemma borel_measurable_suminf_order[measurable (raw)]:
63332
f164526d8727 move open_Collect_eq/less to HOL
hoelzl
parents: 63167
diff changeset
   978
  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
   979
  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
   980
  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
   981
  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
   982
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
   983
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
   984
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   985
lemma borel_measurable_inner[measurable (raw)]:
50881
ae630bab13da renamed countable_basis_space to second_countable_topology
hoelzl
parents: 50526
diff changeset
   986
  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
   987
  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
   988
  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
   989
  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
   990
  using assms
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   991
  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
   992
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   993
notation
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   994
  eucl_less (infix "<e" 50)
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   995
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
   996
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
   997
  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
   998
  by auto
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
   999
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1000
lemma eucl_ivals[measurable]:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1001
  fixes a b :: "'a::ordered_euclidean_space"
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1002
  shows "{x. x <e a} \<in> sets borel"
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1003
    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
  1004
    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
  1005
    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
  1006
    and "{a..b} \<in> sets borel"
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1007
    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
  1008
    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
  1009
  unfolding box_oc box_co
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1010
  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
  1011
69739
nipkow
parents: 69722
diff changeset
  1012
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
  1013
  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
  1014
  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
  1015
    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
  1016
    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
  1017
    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
  1018
  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
  1019
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1020
lemma borel_eq_box:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1021
  "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
  1022
    (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
  1023
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
  1024
  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
  1025
  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
  1026
  show "M \<in> ?SIGMA"
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
  1027
    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
  1028
    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
  1029
    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
  1030
    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
  1031
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
  1032
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1033
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
  1034
  assumes i: "i \<in> A"
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1035
  shows "{x::'a. a < x \<bullet> i} \<in>
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1036
    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
  1037
  (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
  1038
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
  1039
  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
  1040
    by (intro sigma_algebra_sigma_sets) simp_all
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1041
  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
  1042
  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
  1043
    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
  1044
    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
  1045
    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
  1046
      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
  1047
    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
  1048
      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
  1049
  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
  1050
    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
  1051
    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
  1052
    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
  1053
    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
  1054
  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
  1055
  show "?set \<in> ?SIGMA" unfolding *
61424
c3658c18b7bc prod_case as canonical name for product type eliminator
haftmann
parents: 61284
diff changeset
  1056
    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
  1057
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
  1058
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1059
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
  1060
  "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
  1061
  (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
  1062
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
  1063
  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
  1064
  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
  1065
    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
  1066
  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
  1067
    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
  1068
       (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
  1069
  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
  1070
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
  1071
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1072
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
  1073
  "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
  1074
  (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
  1075
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
  1076
  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
  1077
  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
  1078
  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
  1079
  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
  1080
    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
  1081
    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
  1082
    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
  1083
      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
  1084
    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
  1085
      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
  1086
  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
  1087
    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
  1088
    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
  1089
    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
  1090
    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
  1091
  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
  1092
  show "{x. x\<bullet>i < a} \<in> ?SIGMA" unfolding *
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1093
    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
  1094
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
  1095
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1096
lemma borel_eq_halfspace_ge:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1097
  "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
  1098
  (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
  1099
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
  1100
  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
  1101
  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
  1102
  show "{x. x\<bullet>i < a} \<in> ?SIGMA" unfolding *
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1103
    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
  1104
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
  1105
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1106
lemma borel_eq_halfspace_greater:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1107
  "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
  1108
  (is "_ = ?SIGMA")
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1109
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
  1110
  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
  1111
  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
  1112
  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
  1113
  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
  1114
    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
  1115
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
  1116
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1117
lemma borel_eq_atMost:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1118
  "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
  1119
  (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
  1120
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
  1121
  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
  1122
  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
  1123
  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
  1124
  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
  1125
    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
  1126
    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
  1127
    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
  1128
      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
  1129
    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
  1130
      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
  1131
  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
  1132
  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
  1133
    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
  1134
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
  1135
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1136
lemma borel_eq_greaterThan:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1137
  "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
  1138
  (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
  1139
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
  1140
  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
  1141
  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
  1142
  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
  1143
  also have *: "{x::'a. a < x\<bullet>i} =
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1144
      (\<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
  1145
  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
  1146
    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
  1147
    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
  1148
    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
  1149
    { 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
  1150
      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
  1151
        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
  1152
      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
  1153
    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
  1154
      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
  1155
  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
  1156
  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
  1157
    apply (simp only:)
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1158
    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
  1159
    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
  1160
    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
  1161
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
  1162
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1163
lemma borel_eq_lessThan:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1164
  "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
  1165
  (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
  1166
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
  1167
  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
  1168
  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
  1169
  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
  1170
  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
  1171
  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
  1172
    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
  1173
    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
  1174
    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
  1175
    { 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
  1176
      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
  1177
        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
  1178
      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
  1179
    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
  1180
      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
  1181
  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
  1182
  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
  1183
    apply (simp only:)
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1184
    apply (intro sets.countable_UN sets.Diff)
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1185
    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
  1186
    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
  1187
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
  1188
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1189
lemma borel_eq_atLeastAtMost:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1190
  "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
  1191
  (is "_ = ?SIGMA")
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1192
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
  1193
  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
  1194
  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
  1195
  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
  1196
    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
  1197
    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
  1198
    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
  1199
    { 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
  1200
      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
  1201
        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
  1202
      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
  1203
    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
  1204
      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
  1205
  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
  1206
  show "{..a} \<in> ?SIGMA" unfolding *
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1207
    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
  1208
       (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
  1209
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
  1210
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1211
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
  1212
  assumes "A \<in> sets borel"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1213
  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
  1214
          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
  1215
  shows "P (A::real set)"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1216
proof -
62624
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1217
  let ?G = "range (\<lambda>(a,b). {a..b::real})"
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1218
  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
  1219
      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
  1220
  thus ?thesis
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1221
  proof (induction rule: sigma_sets_induct_disjoint)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1222
    case (union f)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1223
      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
  1224
      with union show ?case by (auto intro: un)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1225
  next
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1226
    case (basic A)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1227
    then obtain a b where "A = {a .. b}" by auto
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1228
    then show ?case
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1229
      by (cases "a \<le> b") (auto intro: int empty)
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1230
  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
  1231
qed
59ceeb6f3079 generalized some Borel measurable statements to support ennreal
hoelzl
parents: 62390
diff changeset
  1232
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1233
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
  1234
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
  1235
  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
  1236
  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
  1237
    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
  1238
  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
  1239
    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
  1240
  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
  1241
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
  1242
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1243
lemma eucl_lessThan: "{x::real. x <e a} = lessThan a"
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1244
  by (simp add: eucl_less_def lessThan_def)
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1245
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1246
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
  1247
  "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
  1248
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
  1249
  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
  1250
  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
  1251
  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
  1252
    by (auto simp: move_uminus real_arch_simple)
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1253
  then show "{y. y <e x} \<in> ?SIGMA"
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1254
    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
  1255
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
  1256
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1257
lemma borel_measurable_halfspacesI:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1258
  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
  1259
  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
  1260
  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
  1261
  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
  1262
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
  1263
  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
  1264
  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
  1265
    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
  1266
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
  1267
  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
  1268
  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
  1269
    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
  1270
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
  1271
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1272
lemma borel_measurable_iff_halfspace_le:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1273
  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
  1274
  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
  1275
  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
  1276
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1277
lemma borel_measurable_iff_halfspace_less:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1278
  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
  1279
  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
  1280
  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
  1281
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1282
lemma borel_measurable_iff_halfspace_ge:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1283
  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
  1284
  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
  1285
  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
  1286
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1287
lemma borel_measurable_iff_halfspace_greater:
61076
bdc1e2f0a86a eliminated \<Colon>;
wenzelm
parents: 60771
diff changeset
  1288
  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
  1289
  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
  1290
  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
  1291
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1292
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
  1293
  "(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
  1294
  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
  1295
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1296
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
  1297
  "(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
  1298
  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
  1299
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1300
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
  1301
  "(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
  1302
  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
  1303
  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
  1304
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1305
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
  1306
  "(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
  1307
  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
  1308
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1309
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
  1310
  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
  1311
  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
  1312
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
  1313
  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
  1314
  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
  1315
    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
  1316
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
  1317
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
  1318
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
  1319
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1320
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
  1321
  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
  1322
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1323
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
  1324
  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
  1325
     (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
  1326
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1327
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
  1328
  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
  1329
  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
  1330
  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
  1331
  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
  1332
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1333
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
  1334
  fixes f :: "'a \<Rightarrow> 'b::{second_countable_topology, real_normed_vector}"
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. 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 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
  1339
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1340
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
  1341
  fixes f :: "'a \<Rightarrow> 'b::{second_countable_topology, real_normed_algebra}"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1342
  assumes f: "f \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1343
  assumes g: "g \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1344
  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
  1345
  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
  1346
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1347
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
  1348
  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
  1349
  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
  1350
  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
  1351
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
  1352
  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
  1353
  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
  1354
qed simp
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1355
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1356
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
  1357
  fixes g f :: "'a \<Rightarrow> 'b::{second_countable_topology, metric_space}"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1358
  assumes f: "f \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1359
  assumes g: "g \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1360
  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
  1361
  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
  1362
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1363
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
  1364
  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
  1365
  assumes f: "f \<in> borel_measurable M"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1366
  assumes g: "g \<in> borel_measurable M"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1367
  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
  1368
  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
  1369
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1370
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
  1371
  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
  1372
  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
  1373
proof
2d79288b042c New theorems and much tidying up of the old ones
paulson <lp15@cam.ac.uk>
parents: 64911
diff changeset
  1374
  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
  1375
qed auto
2d79288b042c New theorems and much tidying up of the old ones
paulson <lp15@cam.ac.uk>
parents: 64911
diff changeset
  1376
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1377
lemma affine_borel_measurable_vector:
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1378
  fixes f :: "'a \<Rightarrow> 'x::real_normed_vector"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1379
  assumes "f \<in> borel_measurable M"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1380
  shows "(\<lambda>x. a + b *\<^sub>R f x) \<in> borel_measurable M"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1381
proof (rule borel_measurableI)
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1382
  fix S :: "'x set" assume "open S"
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1383
  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
  1384
  proof cases
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1385
    assume "b \<noteq> 0"
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
  1386
    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
  1387
      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
  1388
      by (auto simp: algebra_simps)
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
  1389
    hence "?S \<in> sets borel" by auto
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1390
    moreover
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
  1391
    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
  1392
      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
  1393
    ultimately show ?thesis using assms unfolding in_borel_measurable_borel
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1394
      by auto
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1395
  qed simp
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1396
qed
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1397
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1398
lemma borel_measurable_const_scaleR[measurable (raw)]:
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1399
  "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
  1400
  using affine_borel_measurable_vector[of f M 0 b] by simp
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1401
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1402
lemma borel_measurable_const_add[measurable (raw)]:
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1403
  "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
  1404
  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
  1405
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1406
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
  1407
  fixes f :: "'a \<Rightarrow> 'b::real_normed_div_algebra"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1408
  assumes f: "f \<in> borel_measurable M"
35692
f1315bbf1bc9 Moved theorems in Lebesgue to the right places
hoelzl
parents: 35582
diff changeset
  1409
  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
  1410
  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
  1411
  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
  1412
  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
  1413
  done
35692
f1315bbf1bc9 Moved theorems in Lebesgue to the right places
hoelzl
parents: 35582
diff changeset
  1414
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1415
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
  1416
  "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
  1417
    (\<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
  1418
  by (simp add: divide_inverse)
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1419
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1420
lemma borel_measurable_abs[measurable (raw)]:
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1421
  "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
  1422
  unfolding abs_real_def by simp
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1423
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1424
lemma borel_measurable_nth[measurable (raw)]:
41026
bea75746dc9d folding on arbitrary Lebesgue integrable functions
hoelzl
parents: 41025
diff changeset
  1425
  "(\<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
  1426
  by (simp add: cart_eq_inner_axis)
41026
bea75746dc9d folding on arbitrary Lebesgue integrable functions
hoelzl
parents: 41025
diff changeset
  1427
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1428
lemma convex_measurable:
59415
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1429
  fixes A :: "'a :: euclidean_space set"
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1430
  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
  1431
    (\<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
  1432
  by (rule measurable_compose[where f=X and N="restrict_space borel A"])
59415
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1433
     (auto intro!: borel_measurable_continuous_on_restrict convex_on_continuous measurable_restrict_space2)
41830
719b0a517c33 log is borel measurable
hoelzl
parents: 41545
diff changeset
  1434
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1435
lemma borel_measurable_ln[measurable (raw)]:
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1436
  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
  1437
  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
  1438
  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
  1439
  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
  1440
  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
  1441
  done
41830
719b0a517c33 log is borel measurable
hoelzl
parents: 41545
diff changeset
  1442
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1443
lemma borel_measurable_log[measurable (raw)]:
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1444
  "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
  1445
  unfolding log_def by auto
41830
719b0a517c33 log is borel measurable
hoelzl
parents: 41545
diff changeset
  1446
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1447
lemma borel_measurable_exp[measurable]:
58656
7f14d5d9b933 relaxed class constraints for exp
immler
parents: 57514
diff changeset
  1448
  "(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
  1449
  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
  1450
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1451
lemma measurable_real_floor[measurable]:
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1452
  "(floor :: real \<Rightarrow> int) \<in> measurable borel (count_space UNIV)"
47761
dfe747e72fa8 moved lemmas to appropriate places
hoelzl
parents: 47694
diff changeset
  1453
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
  1454
  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
  1455
    by (auto intro: floor_eq2)
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1456
  then show ?thesis
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1457
    by (auto simp: vimage_def measurable_count_space_eq2_countable)
47761
dfe747e72fa8 moved lemmas to appropriate places
hoelzl
parents: 47694
diff changeset
  1458
qed
dfe747e72fa8 moved lemmas to appropriate places
hoelzl
parents: 47694
diff changeset
  1459
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1460
lemma measurable_real_ceiling[measurable]:
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1461
  "(ceiling :: real \<Rightarrow> int) \<in> measurable borel (count_space UNIV)"
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1462
  unfolding ceiling_def[abs_def] by simp
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1463
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1464
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
  1465
  by simp
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1466
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1467
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
  1468
  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
  1469
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1470
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
  1471
  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
  1472
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1473
lemma borel_measurable_power [measurable (raw)]:
59415
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1474
  fixes f :: "_ \<Rightarrow> 'b::{power,real_normed_algebra}"
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1475
  assumes f: "f \<in> borel_measurable M"
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1476
  shows "(\<lambda>x. (f x) ^ n) \<in> borel_measurable M"
854fe701c984 tuned measurability proofs
hoelzl
parents: 59361
diff changeset
  1477
  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
  1478
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1479
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
  1480
  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
  1481
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1482
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
  1483
  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
  1484
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1485
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
  1486
  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
  1487
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1488
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
  1489
  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
  1490
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1491
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
  1492
  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
  1493
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1494
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
  1495
  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
  1496
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69861
diff changeset
  1497
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
  1498
  "f \<in> borel_measurable M \<longleftrightarrow>
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1499
    (\<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
  1500
  apply auto
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1501
  apply (subst fun_complex_eq)
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1502
  apply (intro borel_measurable_add)
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1503
  apply auto
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1504
  done
3a448982a74a add more derivative and continuity rules for complex-values functions
hoelzl
parents: 57235
diff changeset
  1505
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1506
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
  1507
  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
  1508
  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
  1509
  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
  1510
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1511
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
  1512
  by simp
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1513
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
  1514
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
  1515
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1516
lemma borel_measurable_ereal[measurable (raw)]:
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1517
  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
  1518
  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
  1519
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1520
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
  1521
  fixes f :: "'a \<Rightarrow> ereal"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1522
  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
  1523
  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
  1524
  apply (rule measurable_compose[OF f])
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1525
  apply (rule borel_measurable_continuous_countable_exceptions[of "{\<infinity>, -\<infinity> }"])
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1526
  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
  1527
  done
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1528
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1529
lemma borel_measurable_ereal_cases:
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1530
  fixes f :: "'a \<Rightarrow> ereal"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1531
  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
  1532
  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
  1533
  shows "(\<lambda>x. H (f x)) \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1534
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
  1535
  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
  1536
  { 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
  1537
  with f H show ?thesis by simp
47694
05663f75964c reworked Probability theory
hoelzl
parents: 46905
diff changeset
  1538
qed
41981
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1539
69739
nipkow
parents: 69722
diff changeset
  1540
lemma
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1541
  fixes f :: "'a \<Rightarrow> ereal" assumes f[measurable]: "f \<in> borel_measurable M"
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1542
  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
  1543
    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
  1544
    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
  1545
  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
  1546
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1547
lemma borel_measurable_uminus_eq_ereal[simp]:
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1548
  "(\<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
  1549
proof
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1550
  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
  1551
qed auto
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1552
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1553
lemma set_Collect_ereal2:
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1554
  fixes f g :: "'a \<Rightarrow> ereal"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1555
  assumes f: "f \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1556
  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
  1557
  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
  1558
    "{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
  1559
    "{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
  1560
    "{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
  1561
    "{x \<in> space borel. H (ereal x) (\<infinity>)} \<in> sets borel"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1562
  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
  1563
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
  1564
  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
  1565
  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
  1566
  { 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
  1567
  note * = this
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1568
  from assms show ?thesis
62390
842917225d56 more canonical names
nipkow
parents: 62372
diff changeset
  1569
    by (subst *) (simp del: space_borel split del: if_split)
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1570
qed
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1571
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1572
lemma borel_measurable_ereal_iff:
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1573
  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
  1574
proof
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1575
  assume "(\<lambda>x. ereal (f x)) \<in> borel_measurable M"
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1576
  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
  1577
  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
  1578
qed auto
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1579
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1580
lemma borel_measurable_erealD[measurable_dest]:
59353
f0707dc3d9aa measurability prover: removed app splitting, replaced by more powerful destruction rules
hoelzl
parents: 59088
diff changeset
  1581
  "(\<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
  1582
  unfolding borel_measurable_ereal_iff by simp
f0707dc3d9aa measurability prover: removed app splitting, replaced by more powerful destruction rules
hoelzl
parents: 59088
diff changeset
  1583
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1584
theorem borel_measurable_ereal_iff_real:
43923
ab93d0190a5d add ereal to typeclass infinity
hoelzl
parents: 43920
diff changeset
  1585
  fixes f :: "'a \<Rightarrow> ereal"
ab93d0190a5d add ereal to typeclass infinity
hoelzl
parents: 43920
diff changeset
  1586
  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
  1587
    ((\<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
  1588
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
  1589
  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
  1590
  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
  1591
  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
  1592
  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
  1593
  have "?f \<in> borel_measurable M" using * ** by (intro measurable_If) auto
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1594
  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
  1595
  finally show "f \<in> borel_measurable M" .
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1596
qed simp_all
41830
719b0a517c33 log is borel measurable
hoelzl
parents: 41545
diff changeset
  1597
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1598
lemma borel_measurable_ereal_iff_Iio:
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1599
  "(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
  1600
  by (auto simp: borel_Iio measurable_iff_measure_of)
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1601
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1602
lemma borel_measurable_ereal_iff_Ioi:
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1603
  "(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
  1604
  by (auto simp: borel_Ioi measurable_iff_measure_of)
35582
b16d99a72dc9 Add Lebesgue integral and probability space.
hoelzl
parents: 35347
diff changeset
  1605
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1606
lemma vimage_sets_compl_iff:
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1607
  "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
  1608
proof -
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1609
  { 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
  1610
    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
  1611
    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
  1612
  from this[of A] this[of "-A"] show ?thesis
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1613
    by (metis double_complement)
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1614
qed
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1615
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1616
lemma borel_measurable_iff_Iic_ereal:
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1617
  "(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
  1618
  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
  1619
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1620
lemma borel_measurable_iff_Ici_ereal:
59361
fd5da2434be4 piecewise measurability using restrict_space; cleanup Borel_Space
hoelzl
parents: 59353
diff changeset
  1621
  "(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
  1622
  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
  1623
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1624
lemma borel_measurable_ereal2:
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1625
  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
  1626
  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
  1627
  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
  1628
  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
  1629
    "(\<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
  1630
    "(\<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
  1631
    "(\<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
  1632
    "(\<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
  1633
  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
  1634
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
  1635
  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
  1636
  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
  1637
  { 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
  1638
  note * = this
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1639
  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
  1640
qed
cdf7693bbe08 reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents: 41969
diff changeset
  1641
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1642
lemma [measurable(raw)]:
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1643
  fixes f :: "'a \<Rightarrow> ereal"
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1644
  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
  1645
  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
  1646
    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
  1647
  by (simp_all add: borel_measurable_ereal2)
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1648
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1649
lemma [measurable(raw)]:
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1650
  fixes f g :: "'a \<Rightarrow> ereal"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1651
  assumes "f \<in> borel_measurable M"
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1652
  assumes "g \<in> borel_measurable M"
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1653
  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
  1654
    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
  1655
  using assms by (simp_all add: minus_ereal_def divide_ereal_def)
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1656
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1657
lemma borel_measurable_ereal_sum[measurable (raw)]:
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1658
  fixes f :: "'c \<Rightarrow> 'a \<Rightarrow> ereal"
41096
843c40bbc379 integral over setprod
hoelzl
parents: 41083
diff changeset
  1659
  assumes "\<And>i. i \<in> S \<Longrightarrow> f i \<in> borel_measurable M"
843c40bbc379 integral over setprod
hoelzl
parents: 41083
diff changeset
  1660
  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
  1661
  using assms by (induction S rule: infinite_finite_induct) auto
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1662
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1663
lemma borel_measurable_ereal_prod[measurable (raw)]:
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1664
  fixes f :: "'c \<Rightarrow> 'a \<Rightarrow> ereal"
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1665
  assumes "\<And>i. i \<in> S \<Longrightarrow> f i \<in> borel_measurable M"
41096
843c40bbc379 integral over setprod
hoelzl
parents: 41083
diff changeset
  1666
  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
  1667
  using assms by (induction S rule: infinite_finite_induct) auto
38656
d5d342611edb Rewrite the Probability theory.
hoelzl
parents: 37887
diff changeset
  1668
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1669
lemma borel_measurable_extreal_suminf[measurable (raw)]:
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1670
  fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> ereal"
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1671
  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
  1672
  shows "(\<lambda>x. (\<Sum>i. f i x)) \<in> borel_measurable M"
50003
8c213922ed49 use measurability prover
hoelzl
parents: 50002
diff changeset
  1673
  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
  1674
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
  1675
subsection "Borel space on the extended non-negative reals"
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1676
69597
ff784d5a5bfb isabelle update -u control_cartouches;
wenzelm
parents: 69566
diff changeset
  1677
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
  1678
  statements are usually done on type classes. \<close>
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1679
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1680
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
  1681
  by (intro borel_measurable_continuous_onI continuous_on_enn2ereal)
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1682
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1683
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
  1684
  by (intro borel_measurable_continuous_onI continuous_on_e2ennreal)
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1685
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1686
lemma borel_measurable_enn2real[measurable (raw)]:
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1687
  "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
  1688
  unfolding enn2real_def[abs_def] by measurable
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1689
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69861
diff changeset
  1690
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
  1691
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1692
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
  1693
  unfolding is_borel_def[abs_def]
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1694
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
  1695
  fix f and M :: "'a measure"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1696
  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
  1697
    using measurable_compose[OF f measurable_e2ennreal] by simp
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1698
qed simp
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1699
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1700
context
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1701
  includes ennreal.lifting
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1702
begin
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1703
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1704
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
  1705
  unfolding is_borel_def[symmetric]
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1706
  by transfer simp
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1707
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1708
lemma borel_measurable_ennreal_iff[simp]:
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1709
  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
  1710
  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
  1711
proof safe
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1712
  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
  1713
  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
  1714
    by measurable
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1715
  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
  1716
    by (rule measurable_cong[THEN iffD1, rotated]) auto
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1717
qed measurable
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1718
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1719
lemma borel_measurable_times_ennreal[measurable (raw)]:
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1720
  fixes f g :: "'a \<Rightarrow> ennreal"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1721
  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
  1722
  unfolding is_borel_def[symmetric] by transfer simp
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1723
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1724
lemma borel_measurable_inverse_ennreal[measurable (raw)]:
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1725
  fixes f :: "'a \<Rightarrow> ennreal"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1726
  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
  1727
  unfolding is_borel_def[symmetric] by transfer simp
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1728
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1729
lemma borel_measurable_divide_ennreal[measurable (raw)]:
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1730
  fixes f :: "'a \<Rightarrow> ennreal"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1731
  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
  1732
  unfolding divide_ennreal_def by simp
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1733
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1734
lemma borel_measurable_minus_ennreal[measurable (raw)]:
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1735
  fixes f :: "'a \<Rightarrow> ennreal"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1736
  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
  1737
  unfolding is_borel_def[symmetric] by transfer simp
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1738
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1739
lemma borel_measurable_prod_ennreal[measurable (raw)]:
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1740
  fixes f :: "'c \<Rightarrow> 'a \<Rightarrow> ennreal"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1741
  assumes "\<And>i. i \<in> S \<Longrightarrow> f i \<in> borel_measurable M"
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1742
  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
  1743
  using assms by (induction S rule: infinite_finite_induct) auto
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1744
62975
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1745
end
1d066f6ab25d Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents: 62625
diff changeset
  1746
62625
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1747
hide_const (open) is_borel
2d73385aa5f3 add measurability rules for ennreal
hoelzl
parents: 62624
diff changeset
  1748
69683
8b3458ca0762 subsection is always %important
immler
parents: 69652
diff changeset
  1749
subsection \<open>LIMSEQ is borel measurable\<close>
39092
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
  1750
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1751
lemma borel_measurable_LIMSEQ_real:
39092
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
  1752
  fixes u :: "nat \<Rightarrow> 'a \<Rightarrow> real"
61969
e01015e49041 more symbols;
wenzelm
parents: 61880
diff changeset
  1753
  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
  1754
  and u: "\<And>i. u i \<in> borel_measurable M"
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
  1755
  shows "u' \<in> borel_measurable M"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1756
proof -
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1757
  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
  1758
    using u' by (simp add: lim_imp_Liminf)
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1759
  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
  1760
    by auto
43920
cedb5cb948fd Rename extreal => ereal
hoelzl
parents: 42990
diff changeset
  1761
  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
  1762
qed
98de40859858 move lemmas to correct theory files
hoelzl
parents: 39087
diff changeset
  1763
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1764
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
  1765
  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
  1766
  assumes [measurable]: "\<And>i. f i \<in> borel_measurable M"
61969
e01015e49041 more symbols;
wenzelm
parents: 61880
diff changeset
  1767
  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
  1768
  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
  1769
  unfolding borel_eq_closed
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1770
proof (safe intro!: measurable_measure_of)
62372
4fe872ff91bf Borel_Space.borel is now in the type class locale
hoelzl
parents: 62083
diff changeset
  1771
  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
  1772
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1773
  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
  1774
  proof (rule borel_measurable_LIMSEQ_real)
61969
e01015e49041 more symbols;
wenzelm
parents: 61880
diff changeset
  1775
    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
  1776
      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
  1777
    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
  1778
      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
  1779
        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
  1780
  qed
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1781
e5366291d6aa introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents: 56371
diff changeset
  1782
  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
  1783
  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
  1784
    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
  1785
    then have "\<And>x. infdist x A = 0 \<longleftrightarrow> x \<in> A"
61808
fc1556774cfe isabelle update_cartouches -c -t;
wenzelm
parents: 61609
diff changeset
  1786
      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
  1787
    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
  1788
      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
  1789
    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
  1790
      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
  1791
    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
  1792
  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
  1793
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
  1794
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1795
lemma sets_Collect_Cauchy[measurable]:
57036
22568fb89165 generalized Bochner integral over infinite sums
hoelzl
parents: 56994
diff changeset
  1796
  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
  1797
  assumes f[measurable]: "\<And>i. f i \<in> borel_measurable M"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1798
  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
  1799
  unfolding metric_Cauchy_iff2 using f by auto
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1800
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1801
lemma borel_measurable_lim_metric[measurable (raw)]:
57036
22568fb89165 generalized Bochner integral over infinite sums
hoelzl
parents: 56994
diff changeset
  1802
  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
  1803
  assumes f[measurable]: "\<And>i. f i \<in> borel_measurable M"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1804
  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
  1805
proof -
63040
eb4ddd18d635 eliminated old 'def';
wenzelm
parents: 62975
diff changeset
  1806
  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
  1807
  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
  1808
    by (auto simp: lim_def convergent_eq_Cauchy[symmetric])
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1809
  have "u' \<in> borel_measurable M"
57036
22568fb89165 generalized Bochner integral over infinite sums
hoelzl
parents: 56994
diff changeset
  1810
  proof (rule borel_measurable_LIMSEQ_metric)
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1811
    fix x
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1812
    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
  1813
      by (cases "Cauchy (\<lambda>i. f i x)")
64287
d85d88722745 more from moretop.ml
paulson <lp15@cam.ac.uk>
parents: 64284
diff changeset
  1814
         (auto simp add: convergent_eq_Cauchy[symmetric] convergent_def)
61969
e01015e49041 more symbols;
wenzelm
parents: 61880
diff changeset
  1815
    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
  1816
      unfolding u'_def
50002
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1817
      by (rule convergent_LIMSEQ_iff[THEN iffD1])
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1818
  qed measurable
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1819
  then show ?thesis
ce0d316b5b44 add measurability prover; add support for Borel sets
hoelzl
parents: 50001
diff changeset
  1820
    unfolding * by measurable
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1821
qed
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1822
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1823
lemma borel_measurable_suminf[measurable (raw)]:
57036
22568fb89165 generalized Bochner integral over infinite sums
hoelzl
parents: 56994
diff changeset
  1824
  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
  1825
  assumes f[measurable]: "\<And>i. f i \<in> borel_measurable M"
49774
dfa8ddb874ce use continuity to show Borel-measurability
hoelzl
parents: 47761
diff changeset
  1826
  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
  1827
  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
  1828
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1829
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
  1830
  by (simp add: pred_def)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1831
57447
87429bdecad5 import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents: 57275
diff changeset
  1832
(* Proof by Jeremy Avigad and Luke Serafin *)
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1833
lemma isCont_borel_pred[measurable]:
63389
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1834
  fixes f :: "'b::metric_space \<Rightarrow> 'a::metric_space"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1835
  shows "Measurable.pred borel (isCont f)"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1836
proof (subst measurable_cong)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1837
  let ?I = "\<lambda>j. inverse(real (Suc j))"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1838
  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
  1839
    unfolding continuous_at_eps_delta
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1840
  proof safe
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1841
    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
  1842
    moreover have "0 < ?I i / 2"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1843
      by simp
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1844
    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
  1845
      by (metis dist_commute)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1846
    then obtain j where j: "?I j < d"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1847
      by (metis reals_Archimedean)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1848
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1849
    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
  1850
    proof (safe intro!: exI[where x=j])
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1851
      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
  1852
      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
  1853
        by (rule dist_triangle2)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1854
      also have "\<dots> < ?I i / 2 + ?I i / 2"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1855
        by (intro add_strict_mono d less_trans[OF _ j] *)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1856
      also have "\<dots> \<le> ?I i"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1857
        by (simp add: field_simps of_nat_Suc)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1858
      finally show "dist (f y) (f z) \<le> ?I i"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1859
        by simp
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1860
    qed
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1861
  next
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1862
    fix e::real assume "0 < e"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1863
    then obtain n where n: "?I n < e"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1864
      by (metis reals_Archimedean)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1865
    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
  1866
    from this[THEN spec, of "Suc n"]
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1867
    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
  1868
      by auto
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1869
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1870
    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
  1871
    proof (safe intro!: exI[of _ "?I j"])
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1872
      fix y assume "dist y x < ?I j"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1873
      then have "dist (f y) (f x) \<le> ?I (Suc n)"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1874
        by (intro j) (auto simp: dist_commute)
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1875
      also have "?I (Suc n) < ?I n"
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1876
        by simp
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1877
      also note n
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1878
      finally show "dist (f y) (f x) < e" .
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1879
    qed simp
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1880
  qed
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1881
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
  1882
           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
  1883
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1884
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
  1885
  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
  1886
  shows "{x. isCont f x} \<in> sets borel"
63389
5d8607370faf simplified proof for measurability of isCont
hoelzl
parents: 63332
diff changeset
  1887
  by simp
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1888
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1889
lemma is_real_interval:
61880
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1890
  assumes S: "is_interval S"
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1891
  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
  1892
    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
  1893
  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
  1894
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1895
lemma real_interval_borel_measurable:
61880
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1896
  assumes "is_interval (S::real set)"
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1897
  shows "S \<in> sets borel"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1898
proof -
61880
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1899
  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
  1900
    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
  1901
  then guess a ..
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1902
  then guess b ..
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1903
  thus ?thesis
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1904
    by auto
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1905
qed
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1906
64283
979cdfdf7a79 HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents: 64272
diff changeset
  1907
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
  1908
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
  1909
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1910
lemma borel_measurable_mono_on_fnc:
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1911
  fixes f :: "real \<Rightarrow> real" and A :: "real set"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1912
  assumes "mono_on f A"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1913
  shows "f \<in> borel_measurable (restrict_space borel A)"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1914
  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
  1915
  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
  1916
  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
  1917
              cong: measurable_cong_sets
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1918
              intro!: borel_measurable_continuous_on_restrict intro: continuous_within_subset)
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1919
  done
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1920
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1921
lemma borel_measurable_piecewise_mono:
64283
979cdfdf7a79 HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents: 64272
diff changeset
  1922
  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
  1923
  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
  1924
  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
  1925
  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
  1926
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1927
lemma borel_measurable_mono:
61880
ff4d33058566 moved some theorems from the CLT proof; reordered some theorems / notation
hoelzl
parents: 61808
diff changeset
  1928
  fixes f :: "real \<Rightarrow> real"
62083
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1929
  shows "mono f \<Longrightarrow> f \<in> borel_measurable borel"
7582b39f51ed add the proof of the central limit theorem
hoelzl
parents: 61969
diff changeset
  1930
  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
  1931
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1932
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
  1933
  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
  1934
  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
  1935
  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
  1936
proof (subst measurable_cong)
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1937
  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
  1938
    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
  1939
  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
  1940
    using countable_int by measurable
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1941
qed
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1942
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1943
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
  1944
  fixes F :: "_ \<Rightarrow> _ \<Rightarrow> real"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1945
  assumes [simp]: "countable I"
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1946
  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
  1947
  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
  1948
proof (rule measurable_piecewise_restrict)
64008
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1949
  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
  1950
  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
  1951
    by auto
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
  1952
  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
  1953
  proof safe
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
  1954
    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
  1955
      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
  1956
         (auto simp: space_restrict_space)
69260
0a9688695a1b removed relics of ASCII syntax for indexed big operators
haftmann
parents: 69022
diff changeset
  1957
    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
  1958
    proof (subst measurable_cong)
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1959
      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
  1960
      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
  1961
        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
  1962
      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
  1963
        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
  1964
    qed simp
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1965
  qed
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1966
qed
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1967
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1968
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
  1969
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
  1970
  fix x :: real
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1971
  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
  1972
    by auto
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1973
  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
  1974
    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
  1975
qed auto
17a20ca86d62 HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents: 63952
diff changeset
  1976
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1977
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
  1978
  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
  1979
  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
  1980
  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
  1981
54775
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1982
no_notation
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1983
  eucl_less (infix "<e" 50)
2d3df8633dad prefer box over greaterThanLessThan on euclidean_space
immler
parents: 54230
diff changeset
  1984
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1985
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
  1986
  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
  1987
  assumes "finite I"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1988
    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
  1989
  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
  1990
  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
  1991
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1992
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
  1993
  assumes "T \<in> measurable M M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1994
  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
  1995
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
  1996
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  1997
lemma measurable_real_imp_nat:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1998
  fixes f::"'a \<Rightarrow> nat"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  1999
  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
  2000
  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
  2001
proof -
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2002
  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
  2003
  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
  2004
  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
  2005
  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
  2006
  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
  2007
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2008
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2009
lemma measurable_equality_set [measurable]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2010
  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
  2011
  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
  2012
  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
  2013
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2014
proof -
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2015
  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
  2016
  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
  2017
  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
  2018
  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
  2019
  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
  2020
  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
  2021
  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
  2022
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2023
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2024
lemma measurable_inequality_set [measurable]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2025
  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
  2026
  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
  2027
  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
  2028
        "{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
  2029
        "{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
  2030
        "{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
  2031
proof -
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2032
  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
  2033
  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
  2034
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2035
  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
  2036
  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
  2037
  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
  2038
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2039
  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
  2040
  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
  2041
  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
  2042
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2043
  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
  2044
  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
  2045
  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
  2046
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2047
  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
  2048
  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
  2049
  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
  2050
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2051
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2052
proposition measurable_limit [measurable]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2053
  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
  2054
  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
  2055
  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
  2056
proof -
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2057
  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
  2058
    "\<And>i. open (A i)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2059
    "\<And>i. c \<in> A i"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2060
    "\<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
  2061
  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
  2062
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2063
  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
  2064
  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
  2065
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2066
  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
  2067
  proof
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2068
    assume "u \<longlonglongrightarrow> c"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2069
    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
  2070
      by (simp add: topological_tendstoD)
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2071
    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
  2072
  next
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2073
    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
  2074
    show "(u \<longlonglongrightarrow> c)"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2075
    proof (rule topological_tendstoI)
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2076
      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
  2077
      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
  2078
        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
  2079
      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
  2080
      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
  2081
        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
  2082
    qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2083
  qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2084
  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
  2085
    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
  2086
  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
  2087
    by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2088
  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
  2089
  then show ?thesis by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2090
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2091
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2092
lemma measurable_limit2 [measurable]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2093
  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
  2094
  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
  2095
  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
  2096
proof -
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2097
  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
  2098
  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
  2099
  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
  2100
    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
  2101
  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
  2102
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2103
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2104
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
  2105
  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
  2106
  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
  2107
proof -
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2108
  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
  2109
  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
  2110
  then show ?thesis by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2111
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2112
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2113
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
  2114
  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
  2115
  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
  2116
  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
  2117
proof cases
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2118
  assume "finite S"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2119
  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
  2120
qed simp
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2121
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2122
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2123
lemma measurable_abs_powr [measurable]:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2124
  fixes p::real
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2125
  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
  2126
  shows "(\<lambda>x. \<bar>f x\<bar> powr p) \<in> borel_measurable M"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2127
unfolding powr_def by auto
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2128
69566
c41954ee87cf more antiquotations -- less LaTeX macros;
wenzelm
parents: 69517
diff changeset
  2129
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
  2130
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2131
lemma measurable_restrict_space3:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2132
  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
  2133
          "f \<in> A \<rightarrow> B"
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2134
  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
  2135
proof -
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2136
  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
  2137
  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
  2138
      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
  2139
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2140
69566
c41954ee87cf more antiquotations -- less LaTeX macros;
wenzelm
parents: 69517
diff changeset
  2141
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
  2142
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2143
lemma measurable_piecewise_restrict2:
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2144
  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
  2145
      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
  2146
          "\<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
  2147
  shows "f \<in> measurable M N"
69652
3417a8f154eb updated tagging first 5
Angeliki KoutsoukouArgyraki <ak2110@cam.ac.uk>
parents: 69597
diff changeset
  2148
proof (rule measurableI)
64284
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2149
  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
  2150
  {
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2151
    fix n::nat
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2152
    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
  2153
    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
  2154
    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
  2155
    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
  2156
    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
  2157
  }
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2158
  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
  2159
  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
  2160
  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
  2161
next
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2162
  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
  2163
  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
  2164
  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
  2165
  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
  2166
  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
  2167
  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
  2168
qed
f3b905b2eee2 HOL-Analysis: more theorems from Sébastien Gouëzel's Ergodic_Theory
hoelzl
parents: 64283
diff changeset
  2169
51683
baefa3b461c2 generalize Borel-set properties from real/ereal/ordered_euclidean_spaces to order_topology and real_normed_vector
hoelzl
parents: 51478
diff changeset
  2170
end