# HG changeset patch # User immler@in.tum.de # Date 1352284407 -3600 # Node ID bfd5198cbe4055bae3aa1df6cee2d273166bc2f8 # Parent 8e32c9254535239d1f1bdbe37a8d69c2ac049d33 added projective_family; generalized generator in product_prob_space to projective_family diff -r 8e32c9254535 -r bfd5198cbe40 src/HOL/Probability/Infinite_Product_Measure.thy --- a/src/HOL/Probability/Infinite_Product_Measure.thy Tue Nov 06 11:03:28 2012 +0100 +++ b/src/HOL/Probability/Infinite_Product_Measure.thy Wed Nov 07 11:33:27 2012 +0100 @@ -5,7 +5,7 @@ header {*Infinite Product Measure*} theory Infinite_Product_Measure - imports Probability_Measure Caratheodory + imports Probability_Measure Caratheodory Projective_Family begin lemma split_merge: "P (merge I J (x,y) i) \ (i \ I \ P (x i)) \ (i \ J - I \ P (y i)) \ (i \ I \ J \ P undefined)" @@ -76,16 +76,20 @@ by (auto intro!: measurable_restrict_subset simp: space_PiM) qed -abbreviation (in product_prob_space) - "emb L K X \ prod_emb L M K X" - lemma (in product_prob_space) emeasure_prod_emb[simp]: assumes L: "J \ {}" "J \ L" "finite L" and X: "X \ sets (Pi\<^isub>M J M)" - shows "emeasure (Pi\<^isub>M L M) (emb L J X) = emeasure (Pi\<^isub>M J M) X" + shows "emeasure (Pi\<^isub>M L M) (prod_emb L M J X) = emeasure (Pi\<^isub>M J M) X" by (subst distr_restrict[OF L]) (simp add: prod_emb_def space_PiM emeasure_distr measurable_restrict_subset L X) -lemma (in product_prob_space) prod_emb_injective: +sublocale product_prob_space \ projective_family I "\J. PiM J M" M +proof + fix J::"'i set" assume "finite J" + interpret f: finite_product_prob_space M J proof qed fact + show "emeasure (Pi\<^isub>M J M) (space (Pi\<^isub>M J M)) \ \" by simp +qed simp_all + +lemma (in projective_family) prod_emb_injective: assumes "J \ {}" "J \ L" "finite J" and sets: "X \ sets (Pi\<^isub>M J M)" "Y \ sets (Pi\<^isub>M J M)" assumes "prod_emb L M J X = prod_emb L M J Y" shows "X = Y" @@ -100,14 +104,17 @@ using `prod_emb L M J X = prod_emb L M J Y` by (simp add: prod_emb_def) qed fact -definition (in product_prob_space) generator :: "('i \ 'a) set set" where +abbreviation (in projective_family) + "emb L K X \ prod_emb L M K X" + +definition (in projective_family) generator :: "('i \ 'a) set set" where "generator = (\J\{J. J \ {} \ finite J \ J \ I}. emb I J ` sets (Pi\<^isub>M J M))" -lemma (in product_prob_space) generatorI': +lemma (in projective_family) generatorI': "J \ {} \ finite J \ J \ I \ X \ sets (Pi\<^isub>M J M) \ emb I J X \ generator" unfolding generator_def by auto -lemma (in product_prob_space) algebra_generator: +lemma (in projective_family) algebra_generator: assumes "I \ {}" shows "algebra (\\<^isub>E i\I. space (M i)) generator" (is "algebra ?\ ?G") unfolding algebra_def algebra_axioms_def ring_of_sets_iff proof (intro conjI ballI) @@ -135,7 +142,7 @@ unfolding * using XA XB by (safe intro!: generatorI') auto qed -lemma (in product_prob_space) sets_PiM_generator: +lemma (in projective_family) sets_PiM_generator: "sets (PiM I M) = sigma_sets (\\<^isub>E i\I. space (M i)) generator" proof cases assume "I = {}" then show ?thesis @@ -154,57 +161,56 @@ qed (auto simp: generator_def space_PiM[symmetric] intro!: sigma_sets_subset) qed - -lemma (in product_prob_space) generatorI: +lemma (in projective_family) generatorI: "J \ {} \ finite J \ J \ I \ X \ sets (Pi\<^isub>M J M) \ A = emb I J X \ A \ generator" unfolding generator_def by auto -definition (in product_prob_space) +definition (in projective_family) "\G A = - (THE x. \J. J \ {} \ finite J \ J \ I \ (\X\sets (Pi\<^isub>M J M). A = emb I J X \ x = emeasure (Pi\<^isub>M J M) X))" + (THE x. \J. J \ {} \ finite J \ J \ I \ (\X\sets (Pi\<^isub>M J M). A = emb I J X \ x = emeasure (PiP J M P) X))" -lemma (in product_prob_space) \G_spec: +lemma (in projective_family) \G_spec: assumes J: "J \ {}" "finite J" "J \ I" "A = emb I J X" "X \ sets (Pi\<^isub>M J M)" - shows "\G A = emeasure (Pi\<^isub>M J M) X" + shows "\G A = emeasure (PiP J M P) X" unfolding \G_def proof (intro the_equality allI impI ballI) fix K Y assume K: "K \ {}" "finite K" "K \ I" "A = emb I K Y" "Y \ sets (Pi\<^isub>M K M)" - have "emeasure (Pi\<^isub>M K M) Y = emeasure (Pi\<^isub>M (K \ J) M) (emb (K \ J) K Y)" + have "emeasure (PiP K M P) Y = emeasure (PiP (K \ J) M P) (emb (K \ J) K Y)" using K J by simp also have "emb (K \ J) K Y = emb (K \ J) J X" using K J by (simp add: prod_emb_injective[of "K \ J" I]) - also have "emeasure (Pi\<^isub>M (K \ J) M) (emb (K \ J) J X) = emeasure (Pi\<^isub>M J M) X" + also have "emeasure (PiP (K \ J) M P) (emb (K \ J) J X) = emeasure (PiP J M P) X" using K J by simp - finally show "emeasure (Pi\<^isub>M J M) X = emeasure (Pi\<^isub>M K M) Y" .. + finally show "emeasure (PiP J M P) X = emeasure (PiP K M P) Y" .. qed (insert J, force) -lemma (in product_prob_space) \G_eq: - "J \ {} \ finite J \ J \ I \ X \ sets (Pi\<^isub>M J M) \ \G (emb I J X) = emeasure (Pi\<^isub>M J M) X" +lemma (in projective_family) \G_eq: + "J \ {} \ finite J \ J \ I \ X \ sets (Pi\<^isub>M J M) \ \G (emb I J X) = emeasure (PiP J M P) X" by (intro \G_spec) auto -lemma (in product_prob_space) generator_Ex: +lemma (in projective_family) generator_Ex: assumes *: "A \ generator" - shows "\J X. J \ {} \ finite J \ J \ I \ X \ sets (Pi\<^isub>M J M) \ A = emb I J X \ \G A = emeasure (Pi\<^isub>M J M) X" + shows "\J X. J \ {} \ finite J \ J \ I \ X \ sets (Pi\<^isub>M J M) \ A = emb I J X \ \G A = emeasure (PiP J M P) X" proof - from * obtain J X where J: "J \ {}" "finite J" "J \ I" "A = emb I J X" "X \ sets (Pi\<^isub>M J M)" unfolding generator_def by auto with \G_spec[OF this] show ?thesis by auto qed -lemma (in product_prob_space) generatorE: +lemma (in projective_family) generatorE: assumes A: "A \ generator" - obtains J X where "J \ {}" "finite J" "J \ I" "X \ sets (Pi\<^isub>M J M)" "emb I J X = A" "\G A = emeasure (Pi\<^isub>M J M) X" + obtains J X where "J \ {}" "finite J" "J \ I" "X \ sets (Pi\<^isub>M J M)" "emb I J X = A" "\G A = emeasure (PiP J M P) X" proof - from generator_Ex[OF A] obtain X J where "J \ {}" "finite J" "J \ I" "X \ sets (Pi\<^isub>M J M)" "emb I J X = A" - "\G A = emeasure (Pi\<^isub>M J M) X" by auto + "\G A = emeasure (PiP J M P) X" by auto then show thesis by (intro that) auto qed -lemma (in product_prob_space) merge_sets: +lemma (in projective_family) merge_sets: "J \ K = {} \ A \ sets (Pi\<^isub>M (J \ K) M) \ x \ space (Pi\<^isub>M J M) \ (\y. merge J K (x,y)) -` A \ space (Pi\<^isub>M K M) \ sets (Pi\<^isub>M K M)" by simp -lemma (in product_prob_space) merge_emb: +lemma (in projective_family) merge_emb: assumes "K \ I" "J \ I" and y: "y \ space (Pi\<^isub>M J M)" shows "((\x. merge J (I - J) (y, x)) -` emb I K X \ space (Pi\<^isub>M I M)) = emb I (K - J) ((\x. merge J (K - J) (y, x)) -` emb (J \ K) K X \ space (Pi\<^isub>M (K - J) M))" @@ -221,7 +227,7 @@ auto qed -lemma (in product_prob_space) positive_\G: +lemma (in projective_family) positive_\G: assumes "I \ {}" shows "positive generator \G" proof - @@ -241,7 +247,7 @@ qed qed -lemma (in product_prob_space) additive_\G: +lemma (in projective_family) additive_\G: assumes "I \ {}" shows "additive generator \G" proof - @@ -263,7 +269,7 @@ using J K by simp_all then have "\G (A \ B) = \G (emb I (J \ K) (emb (J \ K) J X \ emb (J \ K) K Y))" by simp - also have "\ = emeasure (Pi\<^isub>M (J \ K) M) (emb (J \ K) J X \ emb (J \ K) K Y)" + also have "\ = emeasure (PiP (J \ K) M P) (emb (J \ K) J X \ emb (J \ K) K Y)" using JK J(1, 4) K(1, 4) by (simp add: \G_eq Un del: prod_emb_Un) also have "\ = \G A + \G B" using J K JK_disj by (simp add: plus_emeasure[symmetric]) @@ -271,6 +277,10 @@ qed qed +lemma (in product_prob_space) PiP_PiM_finite[simp]: + assumes "J \ {}" "finite J" "J \ I" shows "PiP J M (\J. PiM J M) = PiM J M" + using assms by (simp add: PiP_finite) + lemma (in product_prob_space) emeasure_PiM_emb_not_empty: assumes X: "J \ {}" "J \ I" "finite J" "\i\J. X i \ sets (M i)" shows "emeasure (Pi\<^isub>M I M) (emb I J (Pi\<^isub>E J X)) = emeasure (Pi\<^isub>M J M) (Pi\<^isub>E J X)" @@ -295,7 +305,6 @@ ultimately have K: "K \ {}" "finite K" "K \ I" "X \ sets (Pi\<^isub>M K M)" "Z = emb I K X" "K - J \ {}" "K - J \ I" "\G Z = emeasure (Pi\<^isub>M K M) X" by (auto simp: subset_insertI) - let ?M = "\y. (\x. merge J (K - J) (y, x)) -` emb (J \ K) K X \ space (Pi\<^isub>M (K - J) M)" { fix y assume y: "y \ space (Pi\<^isub>M J M)" note * = merge_emb[OF `K \ I` `J \ I` y, of X] @@ -360,7 +369,7 @@ using A positive_\G[OF I_not_empty] by (auto intro!: INF_greatest simp: positive_def) ultimately have "0 < ?a" by auto - have "\n. \J X. J \ {} \ finite J \ J \ I \ X \ sets (Pi\<^isub>M J M) \ A n = emb I J X \ \G (A n) = emeasure (Pi\<^isub>M J M) X" + have "\n. \J X. J \ {} \ finite J \ J \ I \ X \ sets (Pi\<^isub>M J M) \ A n = emb I J X \ \G (A n) = emeasure (PiP J M (\J. (Pi\<^isub>M J M))) X" using A by (intro allI generator_Ex) auto then obtain J' X' where J': "\n. J' n \ {}" "\n. finite (J' n)" "\n. J' n \ I" "\n. X' n \ sets (Pi\<^isub>M (J' n) M)" and A': "\n. A n = emb I (J' n) (X' n)" 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