diff -r f164526d8727 -r 158ab2239496 src/HOL/Probability/Binary_Product_Measure.thy --- a/src/HOL/Probability/Binary_Product_Measure.thy Wed Jun 15 22:19:03 2016 +0200 +++ b/src/HOL/Probability/Binary_Product_Measure.thy Thu Jun 16 23:03:27 2016 +0200 @@ -37,12 +37,6 @@ unfolding pair_measure_def using pair_measure_closed[of A B] by (rule sets_measure_of) -lemma sets_pair_in_sets: - assumes N: "space A \ space B = space N" - assumes "\a b. a \ sets A \ b \ sets B \ a \ b \ sets N" - shows "sets (A \\<^sub>M B) \ sets N" - using assms by (auto intro!: sets.sigma_sets_subset simp: sets_pair_measure N) - lemma sets_pair_measure_cong[measurable_cong, cong]: "sets M1 = sets M1' \ sets M2 = sets M2' \ sets (M1 \\<^sub>M M2) = sets (M1' \\<^sub>M M2')" unfolding sets_pair_measure by (simp cong: sets_eq_imp_space_eq) @@ -122,23 +116,45 @@ and measurable_snd'': "(\x. f (snd x)) \ measurable (P \\<^sub>M M) N" by simp_all +lemma sets_pair_in_sets: + assumes "\a b. a \ sets A \ b \ sets B \ a \ b \ sets N" + shows "sets (A \\<^sub>M B) \ sets N" + unfolding sets_pair_measure + by (intro sets.sigma_sets_subset') (auto intro!: assms) + lemma sets_pair_eq_sets_fst_snd: - "sets (A \\<^sub>M B) = sets (Sup_sigma {vimage_algebra (space A \ space B) fst A, vimage_algebra (space A \ space B) snd B})" - (is "?P = sets (Sup_sigma {?fst, ?snd})") + "sets (A \\<^sub>M B) = sets (Sup {vimage_algebra (space A \ space B) fst A, vimage_algebra (space A \ space B) snd B})" + (is "?P = sets (Sup {?fst, ?snd})") proof - { fix a b assume ab: "a \ sets A" "b \ sets B" then have "a \ b = (fst -` a \ (space A \ space B)) \ (snd -` b \ (space A \ space B))" by (auto dest: sets.sets_into_space) - also have "\ \ sets (Sup_sigma {?fst, ?snd})" - using ab by (auto intro: in_Sup_sigma in_vimage_algebra) - finally have "a \ b \ sets (Sup_sigma {?fst, ?snd})" . } + also have "\ \ sets (Sup {?fst, ?snd})" + apply (rule sets.Int) + apply (rule in_sets_Sup) + apply auto [] + apply (rule insertI1) + apply (auto intro: ab in_vimage_algebra) [] + apply (rule in_sets_Sup) + apply auto [] + apply (rule insertI2) + apply (auto intro: ab in_vimage_algebra) + done + finally have "a \ b \ sets (Sup {?fst, ?snd})" . } moreover have "sets ?fst \ sets (A \\<^sub>M B)" by (rule sets_image_in_sets) (auto simp: space_pair_measure[symmetric]) moreover have "sets ?snd \ sets (A \\<^sub>M B)" by (rule sets_image_in_sets) (auto simp: space_pair_measure) ultimately show ?thesis - by (intro antisym[of "sets A" for A] sets_Sup_in_sets sets_pair_in_sets ) - (auto simp add: space_Sup_sigma space_pair_measure) + apply (intro antisym[of "sets A" for A] sets_Sup_in_sets sets_pair_in_sets) + apply simp + apply simp + apply simp + apply (elim disjE) + apply (simp add: space_pair_measure) + apply (simp add: space_pair_measure) + apply (auto simp add: space_pair_measure) + done qed lemma measurable_pair_iff: @@ -597,11 +613,10 @@ have [simp]: "snd \ X \ Y \ Y" "fst \ X \ Y \ X" by auto let ?XY = "{{fst -` a \ X \ Y | a. a \ A}, {snd -` b \ X \ Y | b. b \ B}}" - have "sets ?P = - sets (\\<^sub>\ xy\?XY. sigma (X \ Y) xy)" + have "sets ?P = sets (SUP xy:?XY. sigma (X \ Y) xy)" by (simp add: vimage_algebra_sigma sets_pair_eq_sets_fst_snd A B) also have "\ = sets (sigma (X \ Y) (\?XY))" - by (intro Sup_sigma_sigma arg_cong[where f=sets]) auto + by (intro Sup_sigma arg_cong[where f=sets]) auto also have "\ = sets ?S" proof (intro arg_cong[where f=sets] sigma_eqI sigma_sets_eqI) show "\?XY \ Pow (X \ Y)" "{a \ b |a b. a \ A \ b \ B} \ Pow (X \ Y)"