src/HOL/Probability/Complete_Measure.thy
changeset 41981 cdf7693bbe08
parent 41959 b460124855b8
child 41983 2dc6e382a58b
equal deleted inserted replaced
41980:28b51effc5ed 41981:cdf7693bbe08
     1 (*  Title:      HOL/Probability/Complete_Measure.thy
     1 (*  Title:      Complete_Measure.thy
     2     Author:     Robert Himmelmann, Johannes Hoelzl, TU Muenchen
     2     Author:     Robert Himmelmann, Johannes Hoelzl, TU Muenchen
     3 *)
     3 *)
     4 
       
     5 theory Complete_Measure
     4 theory Complete_Measure
     6 imports Product_Measure
     5 imports Product_Measure
     7 begin
     6 begin
     8 
     7 
     9 locale completeable_measure_space = measure_space
     8 locale completeable_measure_space = measure_space
   175 sublocale completeable_measure_space \<subseteq> completion!: measure_space completion
   174 sublocale completeable_measure_space \<subseteq> completion!: measure_space completion
   176   where "measure completion = \<mu>'"
   175   where "measure completion = \<mu>'"
   177 proof -
   176 proof -
   178   show "measure_space completion"
   177   show "measure_space completion"
   179   proof
   178   proof
   180     show "measure completion {} = 0" by (auto simp: completion_def)
   179     show "positive completion (measure completion)"
       
   180       by (auto simp: completion_def positive_def)
   181   next
   181   next
   182     show "countably_additive completion (measure completion)"
   182     show "countably_additive completion (measure completion)"
   183     proof (intro countably_additiveI)
   183     proof (intro countably_additiveI)
   184       fix A :: "nat \<Rightarrow> 'a set" assume A: "range A \<subseteq> sets completion" "disjoint_family A"
   184       fix A :: "nat \<Rightarrow> 'a set" assume A: "range A \<subseteq> sets completion" "disjoint_family A"
   185       have "disjoint_family (\<lambda>i. main_part (A i))"
   185       have "disjoint_family (\<lambda>i. main_part (A i))"
   187         fix n m assume "A n \<inter> A m = {}"
   187         fix n m assume "A n \<inter> A m = {}"
   188         then have "(main_part (A n) \<union> null_part (A n)) \<inter> (main_part (A m) \<union> null_part (A m)) = {}"
   188         then have "(main_part (A n) \<union> null_part (A n)) \<inter> (main_part (A m) \<union> null_part (A m)) = {}"
   189           using A by (subst (1 2) main_part_null_part_Un) auto
   189           using A by (subst (1 2) main_part_null_part_Un) auto
   190         then show "main_part (A n) \<inter> main_part (A m) = {}" by auto
   190         then show "main_part (A n) \<inter> main_part (A m) = {}" by auto
   191       qed
   191       qed
   192       then have "(\<Sum>\<^isub>\<infinity>n. measure completion (A n)) = \<mu> (\<Union>i. main_part (A i))"
   192       then have "(\<Sum>n. measure completion (A n)) = \<mu> (\<Union>i. main_part (A i))"
   193         unfolding completion_def using A by (auto intro!: measure_countably_additive)
   193         unfolding completion_def using A by (auto intro!: measure_countably_additive)
   194       then show "(\<Sum>\<^isub>\<infinity>n. measure completion (A n)) = measure completion (UNION UNIV A)"
   194       then show "(\<Sum>n. measure completion (A n)) = measure completion (UNION UNIV A)"
   195         by (simp add: completion_def \<mu>_main_part_UN[OF A(1)])
   195         by (simp add: completion_def \<mu>_main_part_UN[OF A(1)])
   196     qed
   196     qed
   197   qed
   197   qed
   198   show "measure completion = \<mu>'" unfolding completion_def by simp
   198   show "measure completion = \<mu>'" unfolding completion_def by simp
   199 qed
   199 qed
   249     show "AE x. f x = ?f' x"
   249     show "AE x. f x = ?f' x"
   250       by (rule AE_I', rule sets) auto
   250       by (rule AE_I', rule sets) auto
   251   qed
   251   qed
   252 qed
   252 qed
   253 
   253 
   254 lemma (in completeable_measure_space) completion_ex_borel_measurable:
   254 lemma (in completeable_measure_space) completion_ex_borel_measurable_pos:
   255   fixes g :: "'a \<Rightarrow> pextreal"
   255   fixes g :: "'a \<Rightarrow> extreal"
   256   assumes g: "g \<in> borel_measurable completion"
   256   assumes g: "g \<in> borel_measurable completion" and "\<And>x. 0 \<le> g x"
   257   shows "\<exists>g'\<in>borel_measurable M. (AE x. g x = g' x)"
   257   shows "\<exists>g'\<in>borel_measurable M. (AE x. g x = g' x)"
   258 proof -
   258 proof -
   259   from g[THEN completion.borel_measurable_implies_simple_function_sequence]
   259   from g[THEN completion.borel_measurable_implies_simple_function_sequence'] guess f . note f = this
   260   obtain f where "\<And>i. simple_function completion (f i)" "f \<up> g" by auto
   260   from this(1)[THEN completion_ex_simple_function]
   261   then have "\<forall>i. \<exists>f'. simple_function M f' \<and> (AE x. f i x = f' x)"
   261   have "\<forall>i. \<exists>f'. simple_function M f' \<and> (AE x. f i x = f' x)" ..
   262     using completion_ex_simple_function by auto
       
   263   from this[THEN choice] obtain f' where
   262   from this[THEN choice] obtain f' where
   264     sf: "\<And>i. simple_function M (f' i)" and
   263     sf: "\<And>i. simple_function M (f' i)" and
   265     AE: "\<forall>i. AE x. f i x = f' i x" by auto
   264     AE: "\<forall>i. AE x. f i x = f' i x" by auto
   266   show ?thesis
   265   show ?thesis
   267   proof (intro bexI)
   266   proof (intro bexI)
   268     from AE[unfolded all_AE_countable]
   267     from AE[unfolded AE_all_countable[symmetric]]
   269     show "AE x. g x = (SUP i. f' i x)" (is "AE x. g x = ?f x")
   268     show "AE x. g x = (SUP i. f' i x)" (is "AE x. g x = ?f x")
   270     proof (elim AE_mp, safe intro!: AE_I2)
   269     proof (elim AE_mp, safe intro!: AE_I2)
   271       fix x assume eq: "\<forall>i. f i x = f' i x"
   270       fix x assume eq: "\<forall>i. f i x = f' i x"
   272       moreover have "g = SUPR UNIV f" using `f \<up> g` unfolding isoton_def by simp
   271       moreover have "g x = (SUP i. f i x)"
   273       ultimately show "g x = ?f x" by (simp add: SUPR_apply)
   272         unfolding f using `0 \<le> g x` by (auto split: split_max)
       
   273       ultimately show "g x = ?f x" by auto
   274     qed
   274     qed
   275     show "?f \<in> borel_measurable M"
   275     show "?f \<in> borel_measurable M"
   276       using sf by (auto intro: borel_measurable_simple_function)
   276       using sf by (auto intro: borel_measurable_simple_function)
   277   qed
   277   qed
   278 qed
   278 qed
   279 
   279 
       
   280 lemma (in completeable_measure_space) completion_ex_borel_measurable:
       
   281   fixes g :: "'a \<Rightarrow> extreal"
       
   282   assumes g: "g \<in> borel_measurable completion"
       
   283   shows "\<exists>g'\<in>borel_measurable M. (AE x. g x = g' x)"
       
   284 proof -
       
   285   have "(\<lambda>x. max 0 (g x)) \<in> borel_measurable completion" "\<And>x. 0 \<le> max 0 (g x)" using g by auto
       
   286   from completion_ex_borel_measurable_pos[OF this] guess g_pos ..
       
   287   moreover
       
   288   have "(\<lambda>x. max 0 (- g x)) \<in> borel_measurable completion" "\<And>x. 0 \<le> max 0 (- g x)" using g by auto
       
   289   from completion_ex_borel_measurable_pos[OF this] guess g_neg ..
       
   290   ultimately
       
   291   show ?thesis
       
   292   proof (safe intro!: bexI[of _ "\<lambda>x. g_pos x - g_neg x"])
       
   293     show "AE x. max 0 (- g x) = g_neg x \<longrightarrow> max 0 (g x) = g_pos x \<longrightarrow> g x = g_pos x - g_neg x"
       
   294     proof (intro AE_I2 impI)
       
   295       fix x assume g: "max 0 (- g x) = g_neg x" "max 0 (g x) = g_pos x"
       
   296       show "g x = g_pos x - g_neg x" unfolding g[symmetric]
       
   297         by (cases "g x") (auto split: split_max)
       
   298     qed
       
   299   qed auto
       
   300 qed
       
   301 
   280 end
   302 end