src/HOL/Probability/Measure_Space.thy
changeset 49784 5e5b2da42a69
parent 49773 16907431e477
child 49789 e0a4cb91a8a9
equal deleted inserted replaced
49783:38b84d1802ed 49784:5e5b2da42a69
   626   fixes M N :: "'a measure" and E :: "'a set set" and A :: "nat \<Rightarrow> 'a set"
   626   fixes M N :: "'a measure" and E :: "'a set set" and A :: "nat \<Rightarrow> 'a set"
   627   assumes "Int_stable E" "E \<subseteq> Pow \<Omega>"
   627   assumes "Int_stable E" "E \<subseteq> Pow \<Omega>"
   628   and eq: "\<And>X. X \<in> E \<Longrightarrow> emeasure M X = emeasure N X"
   628   and eq: "\<And>X. X \<in> E \<Longrightarrow> emeasure M X = emeasure N X"
   629   and M: "sets M = sigma_sets \<Omega> E"
   629   and M: "sets M = sigma_sets \<Omega> E"
   630   and N: "sets N = sigma_sets \<Omega> E"
   630   and N: "sets N = sigma_sets \<Omega> E"
   631   and A: "range A \<subseteq> E" "incseq A" "(\<Union>i. A i) = \<Omega>" "\<And>i. emeasure M (A i) \<noteq> \<infinity>"
   631   and A: "range A \<subseteq> E" "(\<Union>i. A i) = \<Omega>" "\<And>i. emeasure M (A i) \<noteq> \<infinity>"
   632   shows "M = N"
   632   shows "M = N"
   633 proof -
   633 proof -
   634   let ?\<mu>  = "emeasure M" and ?\<nu> = "emeasure N"
   634   let ?\<mu>  = "emeasure M" and ?\<nu> = "emeasure N"
   635   interpret S: sigma_algebra \<Omega> "sigma_sets \<Omega> E" by (rule sigma_algebra_sigma_sets) fact
   635   interpret S: sigma_algebra \<Omega> "sigma_sets \<Omega> E" by (rule sigma_algebra_sigma_sets) fact
   636   { fix F assume "F \<in> E" and "?\<mu> F \<noteq> \<infinity>"
   636   { fix F assume "F \<in> E" and "?\<mu> F \<noteq> \<infinity>"
   671         by auto
   671         by auto
   672     qed
   672     qed
   673     have *: "sigma_sets \<Omega> E = ?D"
   673     have *: "sigma_sets \<Omega> E = ?D"
   674       using `F \<in> E` `Int_stable E`
   674       using `F \<in> E` `Int_stable E`
   675       by (intro D.dynkin_lemma) (auto simp add: Int_stable_def eq)
   675       by (intro D.dynkin_lemma) (auto simp add: Int_stable_def eq)
   676     have "\<And>D. D \<in> sigma_sets \<Omega> E \<Longrightarrow> ?\<mu> (F \<inter> D) = ?\<nu> (F \<inter> D)"
   676     have "\<And>D. D \<in> sets M \<Longrightarrow> emeasure M (F \<inter> D) = emeasure N (F \<inter> D)"
   677       by (subst (asm) *) auto }
   677       unfolding M by (subst (asm) *) auto }
   678   note * = this
   678   note * = this
   679   show "M = N"
   679   show "M = N"
   680   proof (rule measure_eqI)
   680   proof (rule measure_eqI)
   681     show "sets M = sets N"
   681     show "sets M = sets N"
   682       using M N by simp
   682       using M N by simp
       
   683     have [simp, intro]: "\<And>i. A i \<in> sets M"
       
   684       using A(1) by (auto simp: subset_eq M)
   683     fix F assume "F \<in> sets M"
   685     fix F assume "F \<in> sets M"
   684     then have "F \<in> sigma_sets \<Omega> E"
   686     let ?D = "disjointed (\<lambda>i. F \<inter> A i)"
   685       using M by simp
   687     have "space M = \<Omega>"
   686     let ?A = "\<lambda>i. A i \<inter> F"
   688       using top[of M] space_closed[of M] S.top S.space_closed `sets M = sigma_sets \<Omega> E` by blast
   687     have "range ?A \<subseteq> sigma_sets \<Omega> E" "incseq ?A"
   689     then have F_eq: "F = (\<Union>i. ?D i)"
   688       using A(1,2) `F \<in> sigma_sets \<Omega> E` by (auto simp: incseq_def)
   690       using `F \<in> sets M`[THEN sets_into_space] A(2)[symmetric] by (auto simp: UN_disjointed_eq)
   689     moreover
   691     have [simp, intro]: "\<And>i. ?D i \<in> sets M"
   690     { fix i have "?\<mu> (?A i) = ?\<nu> (?A i)"
   692       using range_disjointed_sets[of "\<lambda>i. F \<inter> A i" M] `F \<in> sets M`
   691         using *[of "A i" F] `F \<in> sigma_sets \<Omega> E` A finite by auto }
   693       by (auto simp: subset_eq)
   692     ultimately show "?\<mu> F = ?\<nu> F"
   694     have "disjoint_family ?D"
   693       using SUP_emeasure_incseq[of ?A M] SUP_emeasure_incseq[of ?A N] A(3) `F \<in> sigma_sets \<Omega> E`
   695       by (auto simp: disjoint_family_disjointed)
   694       by (auto simp: M N SUP_emeasure_incseq)
   696      moreover
       
   697     { fix i
       
   698       have "A i \<inter> ?D i = ?D i"
       
   699         by (auto simp: disjointed_def)
       
   700       then have "emeasure M (?D i) = emeasure N (?D i)"
       
   701         using *[of "A i" "?D i", OF _ A(3)] A(1) by auto }
       
   702      ultimately show "emeasure M F = emeasure N F"
       
   703       using N M
       
   704       apply (subst (1 2) F_eq)
       
   705       apply (subst (1 2) suminf_emeasure[symmetric])
       
   706       apply auto
       
   707       done
   695   qed
   708   qed
   696 qed
   709 qed
   697 
   710 
   698 lemma measure_of_of_measure: "measure_of (space M) (sets M) (emeasure M) = M"
   711 lemma measure_of_of_measure: "measure_of (space M) (sets M) (emeasure M) = M"
   699 proof (intro measure_eqI emeasure_measure_of_sigma)
   712 proof (intro measure_eqI emeasure_measure_of_sigma)