diff -r 8e32c9254535 -r bfd5198cbe40 src/HOL/Probability/Projective_Family.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/Probability/Projective_Family.thy Wed Nov 07 11:33:27 2012 +0100 @@ -0,0 +1,113 @@ +theory Projective_Family +imports Finite_Product_Measure Probability_Measure +begin + +definition + PiP :: "'i set \ ('i \ 'a measure) \ ('i set \ ('i \ 'a) measure) \ ('i \ 'a) measure" where + "PiP I M P = extend_measure (\\<^isub>E i\I. space (M i)) + {(J, X). (J \ {} \ I = {}) \ finite J \ J \ I \ X \ (\ j\J. sets (M j))} + (\(J, X). prod_emb I M J (\\<^isub>E j\J. X j)) + (\(J, X). emeasure (P J) (Pi\<^isub>E J X))" + +lemma space_PiP[simp]: "space (PiP I M P) = space (PiM I M)" + by (auto simp add: PiP_def space_PiM prod_emb_def intro!: space_extend_measure) + +lemma sets_PiP[simp]: "sets (PiP I M P) = sets (PiM I M)" + by (auto simp add: PiP_def sets_PiM prod_algebra_def prod_emb_def intro!: sets_extend_measure) + +lemma measurable_PiP1[simp]: "measurable (PiP I M P) M' = measurable (\\<^isub>M i\I. M i) M'" + unfolding measurable_def by auto + +lemma measurable_PiP2[simp]: "measurable M' (PiP I M P) = measurable M' (\\<^isub>M i\I. M i)" + unfolding measurable_def by auto + +locale projective_family = + fixes I::"'i set" and P::"'i set \ ('i \ 'a) measure" and M::"('i \ 'a measure)" + assumes projective: "\J H X. J \ {} \ J \ H \ H \ I \ finite H \ X \ sets (PiM J M) \ + (P H) (prod_emb H M J X) = (P J) X" + assumes proj_space: "\J. finite J \ space (P J) = space (PiM J M)" + assumes proj_sets: "\J. finite J \ sets (P J) = sets (PiM J M)" + assumes proj_finite_measure: "\J. finite J \ emeasure (P J) (space (PiM J M)) \ \" + assumes prob_space: "\i. prob_space (M i)" +begin + +lemma emeasure_PiP: + assumes "J \ {}" + assumes "finite J" + assumes "J \ I" + assumes A: "\i. i\J \ A i \ sets (M i)" + shows "emeasure (PiP J M P) (Pi\<^isub>E J A) = emeasure (P J) (Pi\<^isub>E J A)" +proof - + have "Pi\<^isub>E J (restrict A J) \ (\\<^isub>E i\J. space (M i))" + proof safe + fix x j assume "x \ Pi J (restrict A J)" "j \ J" + hence "x j \ restrict A J j" by (auto simp: Pi_def) + also have "\ \ space (M j)" using sets_into_space A `j \ J` by auto + finally show "x j \ space (M j)" . + qed + hence "emeasure (PiP J M P) (Pi\<^isub>E J A) = + emeasure (PiP J M P) (prod_emb J M J (Pi\<^isub>E J A))" + using assms(1-3) sets_into_space by (auto simp add: prod_emb_id Pi_def) + also have "\ = emeasure (P J) (Pi\<^isub>E J A)" + proof (rule emeasure_extend_measure[OF PiP_def, where i="(J, A)", simplified, + of J M "P J" P]) + show "positive (sets (PiM J M)) (P J)" unfolding positive_def by auto + show "countably_additive (sets (PiM J M)) (P J)" unfolding countably_additive_def + by (auto simp: suminf_emeasure proj_sets[OF `finite J`]) + show "(\(Ja, X). prod_emb J M Ja (Pi\<^isub>E Ja X)) ` {(Ja, X). (Ja = {} \ J = {}) \ + finite Ja \ Ja \ J \ X \ (\ j\Ja. sets (M j))} \ Pow (\ i\J. space (M i)) \ + (\(Ja, X). prod_emb J M Ja (Pi\<^isub>E Ja X)) ` + {(Ja, X). (Ja = {} \ J = {}) \ finite Ja \ Ja \ J \ X \ (\ j\Ja. sets (M j))} \ + Pow (extensional J)" by (auto simp: prod_emb_def) + show "(J = {} \ J = {}) \ finite J \ J \ J \ A \ (\ j\J. sets (M j))" + using assms by auto + fix i + assume + "case i of (Ja, X) \ (Ja = {} \ J = {}) \ finite Ja \ Ja \ J \ X \ (\ j\Ja. sets (M j))" + thus "emeasure (P J) (case i of (Ja, X) \ prod_emb J M Ja (Pi\<^isub>E Ja X)) = + (case i of (J, X) \ emeasure (P J) (Pi\<^isub>E J X))" using assms + by (cases i) (auto simp add: intro!: projective sets_PiM_I_finite) + qed + finally show ?thesis . +qed + +lemma PiP_finite: + assumes "J \ {}" + assumes "finite J" + assumes "J \ I" + shows "PiP J M P = P J" (is "?P = _") +proof (rule measure_eqI_generator_eq) + let ?J = "{Pi\<^isub>E J E | E. \i\J. E i \ sets (M i)}" + let ?F = "\i. \\<^isub>E k\J. space (M k)" + let ?\ = "(\\<^isub>E k\J. space (M k))" + show "Int_stable ?J" + by (rule Int_stable_PiE) + interpret finite_measure "P J" using proj_finite_measure `finite J` + by (intro finite_measureI) (simp add: proj_space) + show "emeasure ?P (?F _) \ \" using assms `finite J` by (auto simp: emeasure_PiP) + show "?J \ Pow ?\" by (auto simp: Pi_iff dest: sets_into_space) + show "sets (PiP J M P) = sigma_sets ?\ ?J" "sets (P J) = sigma_sets ?\ ?J" + using `finite J` proj_sets by (simp_all add: sets_PiM prod_algebra_eq_finite Pi_iff) + fix X assume "X \ ?J" + then obtain E where X: "X = Pi\<^isub>E J E" and E: "\i\J. E i \ sets (M i)" by auto + with `finite J` have "X \ sets (PiP J M P)" by simp + have emb_self: "prod_emb J M J (Pi\<^isub>E J E) = Pi\<^isub>E J E" + using E sets_into_space + by (auto intro!: prod_emb_PiE_same_index) + show "emeasure (PiP J M P) X = emeasure (P J) X" + unfolding X using E + by (intro emeasure_PiP assms) simp +qed (insert `finite J`, auto intro!: prod_algebraI_finite) + +lemma emeasure_fun_emb[simp]: + assumes L: "J \ {}" "J \ L" "finite L" "L \ I" and X: "X \ sets (PiM J M)" + shows "emeasure (PiP L M P) (prod_emb L M J X) = emeasure (PiP J M P) X" + using assms + by (subst PiP_finite) (auto simp: PiP_finite finite_subset projective) + +end + +sublocale projective_family \ M: prob_space "M i" for i + by (rule prob_space) + +end