# HG changeset patch # User hoelzl # Date 1282910716 -7200 # Node ID ca17017c10e600e6ef83df4c7039c3fe3d4f9bd6 # Parent 96984bf6fa5be4b34f815927c1cffa8c2a81d2f5 Measurable on product space is equiv. to measurable components diff -r 96984bf6fa5b -r ca17017c10e6 src/HOL/Probability/Product_Measure.thy --- a/src/HOL/Probability/Product_Measure.thy Fri Aug 27 14:05:03 2010 +0200 +++ b/src/HOL/Probability/Product_Measure.thy Fri Aug 27 14:05:16 2010 +0200 @@ -202,10 +202,64 @@ "prod_sets A B = {z. \x \ A. \y \ B. z = x \ y}" definition - "prod_measure M \ N \ = (\A. measure_space.positive_integral M \ (\s0. \ ((\s1. (s0, s1)) -` A)))" + "prod_measure_space M1 M2 = sigma (space M1 \ space M2) (prod_sets (sets M1) (sets M2))" + +lemma + fixes M1 :: "'a algebra" and M2 :: "'b algebra" + assumes "algebra M1" "algebra M2" + shows measureable_fst[intro!, simp]: + "fst \ measurable (prod_measure_space M1 M2) M1" (is ?fst) + and measureable_snd[intro!, simp]: + "snd \ measurable (prod_measure_space M1 M2) M2" (is ?snd) +proof - + interpret M1: algebra M1 by fact + interpret M2: algebra M2 by fact + + { fix X assume "X \ sets M1" + then have "\X1\sets M1. \X2\sets M2. fst -` X \ space M1 \ space M2 = X1 \ X2" + apply - apply (rule bexI[of _ X]) apply (rule bexI[of _ "space M2"]) + using M1.sets_into_space by force+ } + moreover + { fix X assume "X \ sets M2" + then have "\X1\sets M1. \X2\sets M2. snd -` X \ space M1 \ space M2 = X1 \ X2" + apply - apply (rule bexI[of _ "space M1"]) apply (rule bexI[of _ X]) + using M2.sets_into_space by force+ } + ultimately show ?fst ?snd + by (force intro!: sigma_sets.Basic + simp: measurable_def prod_measure_space_def prod_sets_def sets_sigma)+ +qed + +lemma (in sigma_algebra) measureable_prod: + fixes M1 :: "'a algebra" and M2 :: "'b algebra" + assumes "algebra M1" "algebra M2" + shows "f \ measurable M (prod_measure_space M1 M2) \ + (fst \ f) \ measurable M M1 \ (snd \ f) \ measurable M M2" +using assms proof (safe intro!: measurable_comp[where b="prod_measure_space M1 M2"]) + interpret M1: algebra M1 by fact + interpret M2: algebra M2 by fact + assume f: "(fst \ f) \ measurable M M1" and s: "(snd \ f) \ measurable M M2" + + show "f \ measurable M (prod_measure_space M1 M2)" unfolding prod_measure_space_def + proof (rule measurable_sigma) + show "prod_sets (sets M1) (sets M2) \ Pow (space M1 \ space M2)" + unfolding prod_sets_def using M1.sets_into_space M2.sets_into_space by auto + show "f \ space M \ space M1 \ space M2" + using f s by (auto simp: mem_Times_iff measurable_def comp_def) + fix A assume "A \ prod_sets (sets M1) (sets M2)" + then obtain B C where "B \ sets M1" "C \ sets M2" "A = B \ C" + unfolding prod_sets_def by auto + moreover have "(fst \ f) -` B \ space M \ sets M" + using f `B \ sets M1` unfolding measurable_def by auto + moreover have "(snd \ f) -` C \ space M \ sets M" + using s `C \ sets M2` unfolding measurable_def by auto + moreover have "f -` A \ space M = ((fst \ f) -` B \ space M) \ ((snd \ f) -` C \ space M)" + unfolding `A = B \ C` by (auto simp: vimage_Times) + ultimately show "f -` A \ space M \ sets M" by auto + qed +qed definition - "prod_measure_space M1 M2 = sigma (space M1 \ space M2) (prod_sets (sets M1) (sets M2))" + "prod_measure M \ N \ = (\A. measure_space.positive_integral M \ (\s0. \ ((\s1. (s0, s1)) -` A)))" lemma prod_setsI: "x \ A \ y \ B \ (x \ y) \ prod_sets A B" by (auto simp add: prod_sets_def)