src/HOL/Probability/Measure_Space.thy
changeset 57446 06e195515deb
parent 57418 6ab1c7cb0b8d
child 57447 87429bdecad5
equal deleted inserted replaced
57445:2d0cf40f6fb3 57446:06e195515deb
     6 
     6 
     7 header {* Measure spaces and their properties *}
     7 header {* Measure spaces and their properties *}
     8 
     8 
     9 theory Measure_Space
     9 theory Measure_Space
    10 imports
    10 imports
    11   Measurable
    11   Measurable Multivariate_Analysis
    12   "~~/src/HOL/Multivariate_Analysis/Extended_Real_Limits"
       
    13 begin
    12 begin
    14 
    13 
    15 lemma sums_def2:
       
    16   "f sums x \<longleftrightarrow> (\<lambda>n. (\<Sum>i\<le>n. f i)) ----> x"
       
    17   unfolding sums_def
       
    18   apply (subst LIMSEQ_Suc_iff[symmetric])
       
    19   unfolding lessThan_Suc_atMost ..
       
    20 
       
    21 subsection "Relate extended reals and the indicator function"
    14 subsection "Relate extended reals and the indicator function"
    22 
       
    23 lemma ereal_indicator: "ereal (indicator A x) = indicator A x"
       
    24   by (auto simp: indicator_def one_ereal_def)
       
    25 
       
    26 lemma ereal_mult_indicator: "ereal (x * indicator A y) = ereal x * indicator A y"
       
    27   by (simp split: split_indicator)
       
    28 
       
    29 lemma ereal_indicator_pos[simp,intro]: "0 \<le> (indicator A x ::ereal)"
       
    30   unfolding indicator_def by auto
       
    31 
       
    32 lemma LIMSEQ_indicator_UN:
       
    33   "(\<lambda>k. indicator (\<Union> i<k. A i) x) ----> (indicator (\<Union>i. A i) x :: real)"
       
    34 proof cases
       
    35   assume "\<exists>i. x \<in> A i" then guess i .. note i = this
       
    36   then have *: "\<And>n. (indicator (\<Union> i<n + Suc i. A i) x :: real) = 1"
       
    37     "(indicator (\<Union> i. A i) x :: real) = 1" by (auto simp: indicator_def)
       
    38   show ?thesis
       
    39     apply (rule LIMSEQ_offset[of _ "Suc i"]) unfolding * by auto
       
    40 qed (auto simp: indicator_def)
       
    41 
       
    42 lemma indicator_add:
       
    43   "A \<inter> B = {} \<Longrightarrow> (indicator A x::_::monoid_add) + indicator B x = indicator (A \<union> B) x"
       
    44   unfolding indicator_def by auto
       
    45 
    15 
    46 lemma suminf_cmult_indicator:
    16 lemma suminf_cmult_indicator:
    47   fixes f :: "nat \<Rightarrow> ereal"
    17   fixes f :: "nat \<Rightarrow> ereal"
    48   assumes "disjoint_family A" "x \<in> A i" "\<And>i. 0 \<le> f i"
    18   assumes "disjoint_family A" "x \<in> A i" "\<And>i. 0 \<le> f i"
    49   shows "(\<Sum>n. f n * indicator (A n) x) = f i"
    19   shows "(\<Sum>n. f n * indicator (A n) x) = f i"
   317     using disjointed_additive[OF f A(1,2)] .
   287     using disjointed_additive[OF f A(1,2)] .
   318   ultimately show "(\<lambda>i. f (A i)) ----> f (\<Union>i. A i)" by simp
   288   ultimately show "(\<lambda>i. f (A i)) ----> f (\<Union>i. A i)" by simp
   319 next
   289 next
   320   assume cont: "\<forall>A. range A \<subseteq> M \<longrightarrow> incseq A \<longrightarrow> (\<Union>i. A i) \<in> M \<longrightarrow> (\<lambda>i. f (A i)) ----> f (\<Union>i. A i)"
   290   assume cont: "\<forall>A. range A \<subseteq> M \<longrightarrow> incseq A \<longrightarrow> (\<Union>i. A i) \<in> M \<longrightarrow> (\<lambda>i. f (A i)) ----> f (\<Union>i. A i)"
   321   fix A :: "nat \<Rightarrow> 'a set" assume A: "range A \<subseteq> M" "disjoint_family A" "(\<Union>i. A i) \<in> M"
   291   fix A :: "nat \<Rightarrow> 'a set" assume A: "range A \<subseteq> M" "disjoint_family A" "(\<Union>i. A i) \<in> M"
   322   have *: "(\<Union>n. (\<Union>i\<le>n. A i)) = (\<Union>i. A i)" by auto
   292   have *: "(\<Union>n. (\<Union>i<n. A i)) = (\<Union>i. A i)" by auto
   323   have "(\<lambda>n. f (\<Union>i\<le>n. A i)) ----> f (\<Union>i. A i)"
   293   have "(\<lambda>n. f (\<Union>i<n. A i)) ----> f (\<Union>i. A i)"
   324   proof (unfold *[symmetric], intro cont[rule_format])
   294   proof (unfold *[symmetric], intro cont[rule_format])
   325     show "range (\<lambda>i. \<Union> i\<le>i. A i) \<subseteq> M" "(\<Union>i. \<Union> i\<le>i. A i) \<in> M"
   295     show "range (\<lambda>i. \<Union> i<i. A i) \<subseteq> M" "(\<Union>i. \<Union> i<i. A i) \<in> M"
   326       using A * by auto
   296       using A * by auto
   327   qed (force intro!: incseq_SucI)
   297   qed (force intro!: incseq_SucI)
   328   moreover have "\<And>n. f (\<Union>i\<le>n. A i) = (\<Sum>i\<le>n. f (A i))"
   298   moreover have "\<And>n. f (\<Union>i<n. A i) = (\<Sum>i<n. f (A i))"
   329     using A
   299     using A
   330     by (intro additive_sum[OF f, of _ A, symmetric])
   300     by (intro additive_sum[OF f, of _ A, symmetric])
   331        (auto intro: disjoint_family_on_mono[where B=UNIV])
   301        (auto intro: disjoint_family_on_mono[where B=UNIV])
   332   ultimately
   302   ultimately
   333   have "(\<lambda>i. f (A i)) sums f (\<Union>i. A i)"
   303   have "(\<lambda>i. f (A i)) sums f (\<Union>i. A i)"
   334     unfolding sums_def2 by simp
   304     unfolding sums_def by simp
   335   from sums_unique[OF this]
   305   from sums_unique[OF this]
   336   show "(\<Sum>i. f (A i)) = f (\<Union>i. A i)" by simp
   306   show "(\<Sum>i. f (A i)) = f (\<Union>i. A i)" by simp
   337 qed
   307 qed
   338 
   308 
   339 lemma (in ring_of_sets) continuous_from_above_iff_empty_continuous:
   309 lemma (in ring_of_sets) continuous_from_above_iff_empty_continuous: