# HG changeset patch # User hoelzl # Date 1295455493 -3600 # Node ID a5d1b2df5e9760bee5e0975f0f3b8b70f302154c # Parent 32fe42892983ade191dc8d1b95bca12bf6243811 tuned proof diff -r 32fe42892983 -r a5d1b2df5e97 src/HOL/Probability/Product_Measure.thy --- a/src/HOL/Probability/Product_Measure.thy Tue Jan 18 21:37:23 2011 +0100 +++ b/src/HOL/Probability/Product_Measure.thy Wed Jan 19 17:44:53 2011 +0100 @@ -656,29 +656,14 @@ show "range F \ sets E" "F \ space E" "\i. pair_measure (F i) \ \" using F by auto show "measure_space P pair_measure" by default - next - show "measure_space P ?\" - proof - show "?\ {} = 0" by auto - show "countably_additive P ?\" - unfolding countably_additive_def - proof (intro allI impI) - fix F :: "nat \ ('a \ 'b) set" - assume F: "range F \ sets P" "disjoint_family F" - from F have *: "\i. F i \ sets P" "(\i. F i) \ sets P" by auto - moreover from F have "\i. (\y. \1 ((\x. (x, y)) -` F i)) \ borel_measurable M2" - by (intro measure_cut_measurable_snd) auto - moreover have "\y. disjoint_family (\i. (\x. (x, y)) -` F i)" - by (intro disjoint_family_on_bisimulation[OF F(2)]) auto - moreover have "\y. y \ space M2 \ range (\i. (\x. (x, y)) -` F i) \ sets M1" - using F by (auto intro!: measurable_cut_snd) - ultimately show "(\\<^isub>\n. ?\ (F n)) = ?\ (\i. F i)" - by (simp add: vimage_UN M2.positive_integral_psuminf[symmetric] - M1.measure_countably_additive - cong: M2.positive_integral_cong) - qed - qed - next + interpret Q: pair_sigma_finite M2 \2 M1 \1 by default + have space_P: "space P = space M1 \ space M2" unfolding pair_algebra_def by simp + have "measure_space (Q.vimage_algebra (space P) (\(x,y). (y,x))) (\A. Q.pair_measure ((\(x,y). (y,x)) ` A))" + by (rule Q.measure_space_isomorphic) (auto simp add: pair_algebra_def bij_betw_def intro!: inj_onI) + then show "measure_space P ?\" unfolding space_P Q.pair_sigma_algebra_swap[symmetric] + by (rule measure_space.measure_space_cong) + (auto intro!: M2.positive_integral_cong arg_cong[where f=\1] + simp: Q.pair_measure_alt inj_vimage_image_eq sets_pair_sigma_algebra_swap) fix X assume "X \ sets E" then obtain A B where X: "X = A \ B" and AB: "A \ sets M1" "B \ sets M2" unfolding pair_algebra_def by auto