src/HOL/Probability/Finite_Product_Measure.thy
changeset 61362 48d1b147f094
parent 61359 e985b52c3eb3
child 61363 76ac925927aa
equal deleted inserted replaced
61361:8b5f00202e1a 61362:48d1b147f094
   738 lemma sets_in_extensional[measurable (raw)]:
   738 lemma sets_in_extensional[measurable (raw)]:
   739   "f \<in> measurable N (PiM I M) \<Longrightarrow> Measurable.pred N (\<lambda>x. f x \<in> extensional I)"
   739   "f \<in> measurable N (PiM I M) \<Longrightarrow> Measurable.pred N (\<lambda>x. f x \<in> extensional I)"
   740   unfolding pred_def
   740   unfolding pred_def
   741   by (rule measurable_sets_Collect[of f N "PiM I M", OF _ sets_in_extensional_aux]) auto
   741   by (rule measurable_sets_Collect[of f N "PiM I M", OF _ sets_in_extensional_aux]) auto
   742 
   742 
       
   743 lemma measure_eqI_PiM_finite:
       
   744   assumes [simp]: "finite I" "sets P = PiM I M" "sets Q = PiM I M"
       
   745   assumes eq: "\<And>A. (\<And>i. i \<in> I \<Longrightarrow> A i \<in> sets (M i)) \<Longrightarrow> P (Pi\<^sub>E I A) = Q (Pi\<^sub>E I A)"
       
   746   assumes A: "range A \<subseteq> prod_algebra I M" "(\<Union>i. A i) = space (PiM I M)" "\<And>i::nat. P (A i) \<noteq> \<infinity>"
       
   747   shows "P = Q"
       
   748 proof (rule measure_eqI_generator_eq[OF Int_stable_prod_algebra prod_algebra_sets_into_space])
       
   749   show "range A \<subseteq> prod_algebra I M" "(\<Union>i. A i) = (\<Pi>\<^sub>E i\<in>I. space (M i))" "\<And>i. P (A i) \<noteq> \<infinity>"
       
   750     unfolding space_PiM[symmetric] by fact+
       
   751   fix X assume "X \<in> prod_algebra I M"
       
   752   then obtain J E where X: "X = prod_emb I M J (PIE j:J. E j)"
       
   753     and J: "finite J" "J \<subseteq> I" "\<And>j. j \<in> J \<Longrightarrow> E j \<in> sets (M j)"
       
   754     by (force elim!: prod_algebraE)
       
   755   then show "emeasure P X = emeasure Q X"
       
   756     unfolding X by (subst (1 2) prod_emb_Pi) (auto simp: eq)
       
   757 qed (simp_all add: sets_PiM)
       
   758 
       
   759 lemma measure_eqI_PiM_infinite:
       
   760   assumes [simp]: "sets P = PiM I M" "sets Q = PiM I M"
       
   761   assumes eq: "\<And>A J. finite J \<Longrightarrow> J \<subseteq> I \<Longrightarrow> (\<And>i. i \<in> J \<Longrightarrow> A i \<in> sets (M i)) \<Longrightarrow>
       
   762     P (prod_emb I M J (Pi\<^sub>E J A)) = Q (prod_emb I M J (Pi\<^sub>E J A))"
       
   763   assumes A: "finite_measure P"
       
   764   shows "P = Q"
       
   765 proof (rule measure_eqI_generator_eq[OF Int_stable_prod_algebra prod_algebra_sets_into_space])
       
   766   interpret finite_measure P by fact
       
   767   def i \<equiv> "SOME i. i \<in> I"
       
   768   have i: "I \<noteq> {} \<Longrightarrow> i \<in> I"
       
   769     unfolding i_def by (rule someI_ex) auto
       
   770   def A \<equiv> "\<lambda>n::nat. if I = {} then prod_emb I M {} (\<Pi>\<^sub>E i\<in>{}. {}) else prod_emb I M {i} (\<Pi>\<^sub>E i\<in>{i}. space (M i))"
       
   771   then show "range A \<subseteq> prod_algebra I M"
       
   772     using prod_algebraI[of "{}" I "\<lambda>i. space (M i)" M] by (auto intro!: prod_algebraI i)
       
   773   have "\<And>i. A i = space (PiM I M)"
       
   774     by (auto simp: prod_emb_def space_PiM PiE_iff A_def i ex_in_conv[symmetric] exI)
       
   775   then show "(\<Union>i. A i) = (\<Pi>\<^sub>E i\<in>I. space (M i))" "\<And>i. emeasure P (A i) \<noteq> \<infinity>"
       
   776     by (auto simp: space_PiM)
       
   777 next
       
   778   fix X assume X: "X \<in> prod_algebra I M"
       
   779   then obtain J E where X: "X = prod_emb I M J (PIE j:J. E j)"
       
   780     and J: "finite J" "J \<subseteq> I" "\<And>j. j \<in> J \<Longrightarrow> E j \<in> sets (M j)"
       
   781     by (force elim!: prod_algebraE)
       
   782   then show "emeasure P X = emeasure Q X"
       
   783     by (auto intro!: eq)
       
   784 qed (auto simp: sets_PiM)
       
   785 
   743 locale product_sigma_finite =
   786 locale product_sigma_finite =
   744   fixes M :: "'i \<Rightarrow> 'a measure"
   787   fixes M :: "'i \<Rightarrow> 'a measure"
   745   assumes sigma_finite_measures: "\<And>i. sigma_finite_measure (M i)"
   788   assumes sigma_finite_measures: "\<And>i. sigma_finite_measure (M i)"
   746 
   789 
   747 sublocale product_sigma_finite \<subseteq> M: sigma_finite_measure "M i" for i
   790 sublocale product_sigma_finite \<subseteq> M: sigma_finite_measure "M i" for i
   858   with insert show ?case
   901   with insert show ?case
   859     by (subst (asm) prod_emb_PiE_same_index) (auto intro!: sets.sets_into_space)
   902     by (subst (asm) prod_emb_PiE_same_index) (auto intro!: sets.sets_into_space)
   860 qed simp
   903 qed simp
   861 
   904 
   862 lemma (in product_sigma_finite) PiM_eqI:
   905 lemma (in product_sigma_finite) PiM_eqI:
   863   assumes "finite I" "sets P = PiM I M"
   906   assumes I[simp]: "finite I" and P: "sets P = PiM I M"
   864   assumes eq: "\<And>A. (\<And>i. i \<in> I \<Longrightarrow> A i \<in> sets (M i)) \<Longrightarrow> P (Pi\<^sub>E I A) = (\<Prod>i\<in>I. emeasure (M i) (A i))"
   907   assumes eq: "\<And>A. (\<And>i. i \<in> I \<Longrightarrow> A i \<in> sets (M i)) \<Longrightarrow> P (Pi\<^sub>E I A) = (\<Prod>i\<in>I. emeasure (M i) (A i))"
   865   shows "P = PiM I M"
   908   shows "P = PiM I M"
   866 proof -
   909 proof -
   867   interpret finite_product_sigma_finite M I
   910   interpret finite_product_sigma_finite M I
   868     proof qed fact
   911     proof qed fact
   869   from sigma_finite_pairs guess C .. note C = this
   912   from sigma_finite_pairs guess C .. note C = this
   870   show ?thesis
   913   show ?thesis
   871   proof (rule measure_eqI_generator_eq[symmetric, OF Int_stable_prod_algebra prod_algebra_sets_into_space])
   914   proof (rule measure_eqI_PiM_finite[OF I refl P, symmetric])
   872     show "sets (PiM I M) = sigma_sets (\<Pi>\<^sub>E i\<in>I. space (M i)) (prod_algebra I M)"
   915     show "(\<And>i. i \<in> I \<Longrightarrow> A i \<in> sets (M i)) \<Longrightarrow> (Pi\<^sub>M I M) (Pi\<^sub>E I A) = P (Pi\<^sub>E I A)" for A
   873       by (rule sets_PiM)
   916       by (simp add: eq emeasure_PiM)
   874     then show "sets P = sigma_sets (\<Pi>\<^sub>E i\<in>I. space (M i)) (prod_algebra I M)"
       
   875       unfolding `sets P = sets (PiM I M)` by simp
       
   876     def A \<equiv> "\<lambda>n. \<Pi>\<^sub>E i\<in>I. C i n"
   917     def A \<equiv> "\<lambda>n. \<Pi>\<^sub>E i\<in>I. C i n"
   877     show "range A \<subseteq> prod_algebra I M" "\<And>i. emeasure (Pi\<^sub>M I M) (A i) \<noteq> \<infinity>"
   918     with C show "range A \<subseteq> prod_algebra I M" "\<And>i. emeasure (Pi\<^sub>M I M) (A i) \<noteq> \<infinity>" "(\<Union>i. A i) = space (PiM I M)"
   878       using C \<open>finite I\<close>
   919       by (auto intro!: prod_algebraI_finite simp: emeasure_PiM subset_eq setprod_PInf emeasure_nonneg)
   879       by (auto intro!: prod_algebraI_finite simp: A_def emeasure_PiM subset_eq setprod_PInf emeasure_nonneg)
       
   880     show "(\<Union>i. A i) = (\<Pi>\<^sub>E i\<in>I. space (M i))"
       
   881       using C by (simp add: A_def space_PiM)
       
   882 
       
   883     fix X assume X: "X \<in> prod_algebra I M"
       
   884     then obtain J E where X: "X = prod_emb I M J (PIE j:J. E j)"
       
   885       and J: "finite J" "J \<subseteq> I" "\<And>j. j \<in> J \<Longrightarrow> E j \<in> sets (M j)"
       
   886       by (force elim!: prod_algebraE)
       
   887     show "emeasure (PiM I M) X = emeasure P X"
       
   888       unfolding X by (subst (1 2) prod_emb_Pi) (auto simp: eq emeasure_PiM J \<open>finite I\<close>)
       
   889   qed
   920   qed
   890 qed
   921 qed
   891 
   922 
   892 lemma (in product_sigma_finite) sigma_finite: 
   923 lemma (in product_sigma_finite) sigma_finite: 
   893   assumes "finite I"
   924   assumes "finite I"