diff -r 111756225292 -r 943c7b348524 src/HOL/Probability/Product_Measure.thy --- a/src/HOL/Probability/Product_Measure.thy Thu Sep 02 17:28:00 2010 +0200 +++ b/src/HOL/Probability/Product_Measure.thy Thu Sep 02 19:51:53 2010 +0200 @@ -315,7 +315,7 @@ from subst[OF this, of "\ M. A \ sets M", OF A] show ?thesis by auto qed - +(* lemma assumes sfin: "range A \ sets M" "(\i. A i) = space M" "\ i :: nat. \ (A i) < \" assumes A: "\ i. \ (A i) = \ (A i)" "\ i. A i \ A (Suc i)" @@ -345,7 +345,7 @@ apply (auto simp add:image_def) (* TODO *) sorry show ?thesis sorry qed - +*) definition prod_sets where "prod_sets A B = {z. \x \ A. \y \ B. z = x \ y}" @@ -512,36 +512,25 @@ qed lemma (in finite_measure_space) finite_measure_space_finite_prod_measure: - assumes "finite_measure_space N \" + fixes N :: "('c, 'd) algebra_scheme" + assumes N: "finite_measure_space N \" shows "finite_measure_space (prod_measure_space M N) (prod_measure M \ N \)" unfolding finite_prod_measure_space[OF assms] -proof (rule finite_measure_spaceI) +proof (rule finite_measure_spaceI, simp_all) interpret N: finite_measure_space N \ by fact - - let ?P = "\space = space M \ space N, sets = Pow (space M \ space N)\" - show "measure_space ?P (prod_measure M \ N \)" - proof (rule sigma_algebra.finite_additivity_sufficient) - show "sigma_algebra ?P" by (rule sigma_algebra_Pow) - show "finite (space ?P)" using finite_space N.finite_space by auto - from finite_prod_measure_times[OF assms, of "{}" "{}"] - show "positive (prod_measure M \ N \)" - unfolding positive_def by simp + show "finite (space M \ space N)" using finite_space N.finite_space by auto + show "prod_measure M \ N \ (space M \ space N) \ \" + using finite_prod_measure_times[OF N top N.top] by simp + show "prod_measure M \ N \ {} = 0" + using finite_prod_measure_times[OF N empty_sets N.empty_sets] by simp - show "additive ?P (prod_measure M \ N \)" - unfolding additive_def - apply (auto simp add: sets_eq_Pow prod_measure_def positive_integral_add[symmetric] - intro!: positive_integral_cong) - apply (subst N.measure_additive[symmetric]) - by (auto simp: N.sets_eq_Pow sets_eq_Pow) - qed - show "finite (space ?P)" using finite_space N.finite_space by auto - show "sets ?P = Pow (space ?P)" by simp - - fix x assume "x \ space ?P" - with finite_prod_measure_times[OF assms, of "{fst x}" "{snd x}"] - finite_measure[of "{fst x}"] N.finite_measure[of "{snd x}"] - show "prod_measure M \ N \ {x} \ \" - by (auto simp add: sets_eq_Pow N.sets_eq_Pow elim!: SigmaE) + fix A B :: "('a * 'c) set" assume "A \ B = {}" "A \ space M \ space N" "B \ space M \ space N" + then show "prod_measure M \ N \ (A \ B) = prod_measure M \ N \ A + prod_measure M \ N \ B" + apply (auto simp add: sets_eq_Pow prod_measure_def positive_integral_add[symmetric] + intro!: positive_integral_cong) + apply (subst N.measure_additive) + apply (auto intro!: arg_cong[where f=\] simp: N.sets_eq_Pow sets_eq_Pow) + done qed lemma (in finite_measure_space) finite_measure_space_finite_prod_measure_alterantive: @@ -551,4 +540,18 @@ unfolding finite_prod_measure_space[OF N, symmetric] using finite_measure_space_finite_prod_measure[OF N] . +lemma prod_measure_times_finite: + assumes fms: "finite_measure_space M \" "finite_measure_space N \" and a: "a \ space M \ space N" + shows "prod_measure M \ N \ {a} = \ {fst a} * \ {snd a}" +proof (cases a) + case (Pair b c) + hence a_eq: "{a} = {b} \ {c}" by simp + + interpret M: finite_measure_space M \ by fact + interpret N: finite_measure_space N \ by fact + + from finite_measure_space.finite_prod_measure_times[OF fms, of "{b}" "{c}"] M.sets_eq_Pow N.sets_eq_Pow a Pair + show ?thesis unfolding a_eq by simp +qed + end