# HG changeset patch # User immler@in.tum.de # Date 1352467886 -3600 # Node ID 6fe18351e9ddfe83f19cf19653cc605363655f52 # Parent afe886a04198f69d0719e28d2bd866312c196028 moved lemmas into projective_family; added header for theory Projective_Family diff -r afe886a04198 -r 6fe18351e9dd src/HOL/Probability/Finite_Product_Measure.thy --- a/src/HOL/Probability/Finite_Product_Measure.thy Fri Nov 09 14:14:45 2012 +0100 +++ b/src/HOL/Probability/Finite_Product_Measure.thy Fri Nov 09 14:31:26 2012 +0100 @@ -94,6 +94,33 @@ "J \ I = {} \ restrict (merge I J (x, y)) J = restrict y J" by (auto simp: restrict_def) +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)" + unfolding merge_def by auto + +lemma extensional_merge_sub: "I \ J \ K \ merge I J (x, y) \ extensional K" + unfolding merge_def extensional_def by auto + +lemma injective_vimage_restrict: + assumes J: "J \ I" + and sets: "A \ (\\<^isub>E i\J. S i)" "B \ (\\<^isub>E i\J. S i)" and ne: "(\\<^isub>E i\I. S i) \ {}" + and eq: "(\x. restrict x J) -` A \ (\\<^isub>E i\I. S i) = (\x. restrict x J) -` B \ (\\<^isub>E i\I. S i)" + shows "A = B" +proof (intro set_eqI) + fix x + from ne obtain y where y: "\i. i \ I \ y i \ S i" by auto + have "J \ (I - J) = {}" by auto + show "x \ A \ x \ B" + proof cases + assume x: "x \ (\\<^isub>E i\J. S i)" + have "x \ A \ merge J (I - J) (x,y) \ (\x. restrict x J) -` A \ (\\<^isub>E i\I. S i)" + using y x `J \ I` by (auto simp add: Pi_iff extensional_restrict extensional_merge_sub split: split_merge) + then show "x \ A \ x \ B" + using y x `J \ I` by (auto simp add: Pi_iff extensional_restrict extensional_merge_sub eq split: split_merge) + next + assume "x \ (\\<^isub>E i\J. S i)" with sets show "x \ A \ x \ B" by auto + qed +qed + lemma extensional_insert_undefined[intro, simp]: assumes "a \ extensional (insert i I)" shows "a(i := undefined) \ extensional I" diff -r afe886a04198 -r 6fe18351e9dd src/HOL/Probability/Infinite_Product_Measure.thy --- a/src/HOL/Probability/Infinite_Product_Measure.thy Fri Nov 09 14:14:45 2012 +0100 +++ b/src/HOL/Probability/Infinite_Product_Measure.thy Fri Nov 09 14:31:26 2012 +0100 @@ -8,33 +8,6 @@ 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)" - unfolding merge_def by auto - -lemma extensional_merge_sub: "I \ J \ K \ merge I J (x, y) \ extensional K" - unfolding merge_def extensional_def by auto - -lemma injective_vimage_restrict: - assumes J: "J \ I" - and sets: "A \ (\\<^isub>E i\J. S i)" "B \ (\\<^isub>E i\J. S i)" and ne: "(\\<^isub>E i\I. S i) \ {}" - and eq: "(\x. restrict x J) -` A \ (\\<^isub>E i\I. S i) = (\x. restrict x J) -` B \ (\\<^isub>E i\I. S i)" - shows "A = B" -proof (intro set_eqI) - fix x - from ne obtain y where y: "\i. i \ I \ y i \ S i" by auto - have "J \ (I - J) = {}" by auto - show "x \ A \ x \ B" - proof cases - assume x: "x \ (\\<^isub>E i\J. S i)" - have "x \ A \ merge J (I - J) (x,y) \ (\x. restrict x J) -` A \ (\\<^isub>E i\I. S i)" - using y x `J \ I` by (auto simp add: Pi_iff extensional_restrict extensional_merge_sub split: split_merge) - then show "x \ A \ x \ B" - using y x `J \ I` by (auto simp add: Pi_iff extensional_restrict extensional_merge_sub eq split: split_merge) - next - assume "x \ (\\<^isub>E i\J. S i)" with sets show "x \ A \ x \ B" by auto - qed -qed - lemma (in product_prob_space) distr_restrict: assumes "J \ {}" "J \ K" "finite K" shows "(\\<^isub>M i\J. M i) = distr (\\<^isub>M i\K. M i) (\\<^isub>M i\J. M i) (\f. restrict f J)" (is "?P = ?D") @@ -94,195 +67,6 @@ show "emeasure (Pi\<^isub>M J M) (space (Pi\<^isub>M J M)) = 1" by (rule f.emeasure_space_1) 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" -proof (rule injective_vimage_restrict) - show "X \ (\\<^isub>E i\J. space (M i))" "Y \ (\\<^isub>E i\J. space (M i))" - using sets[THEN sets_into_space] by (auto simp: space_PiM) - have "\i\L. \x. x \ space (M i)" - proof - fix i assume "i \ L" - interpret prob_space "P {i}" using prob_space by simp - from not_empty show "\x. x \ space (M i)" by (auto simp add: proj_space space_PiM) - qed - from bchoice[OF this] - show "(\\<^isub>E i\L. space (M i)) \ {}" by auto - show "(\x. restrict x J) -` X \ (\\<^isub>E i\L. space (M i)) = (\x. restrict x J) -` Y \ (\\<^isub>E i\L. space (M i))" - using `prod_emb L M J X = prod_emb L M J Y` by (simp add: prod_emb_def) -qed fact - -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 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 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) - let ?G = generator - show "?G \ Pow ?\" - by (auto simp: generator_def prod_emb_def) - from `I \ {}` obtain i where "i \ I" by auto - then show "{} \ ?G" - by (auto intro!: exI[of _ "{i}"] image_eqI[where x="\i. {}"] - simp: sigma_sets.Empty generator_def prod_emb_def) - from `i \ I` show "?\ \ ?G" - by (auto intro!: exI[of _ "{i}"] image_eqI[where x="Pi\<^isub>E {i} (\i. space (M i))"] - simp: generator_def prod_emb_def) - fix A assume "A \ ?G" - then obtain JA XA where XA: "JA \ {}" "finite JA" "JA \ I" "XA \ sets (Pi\<^isub>M JA M)" and A: "A = emb I JA XA" - by (auto simp: generator_def) - fix B assume "B \ ?G" - then obtain JB XB where XB: "JB \ {}" "finite JB" "JB \ I" "XB \ sets (Pi\<^isub>M JB M)" and B: "B = emb I JB XB" - by (auto simp: generator_def) - let ?RA = "emb (JA \ JB) JA XA" - let ?RB = "emb (JA \ JB) JB XB" - have *: "A - B = emb I (JA \ JB) (?RA - ?RB)" "A \ B = emb I (JA \ JB) (?RA \ ?RB)" - using XA A XB B by auto - show "A - B \ ?G" "A \ B \ ?G" - unfolding * using XA XB by (safe intro!: generatorI') auto -qed - -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 - unfolding generator_def - by (auto simp: sets_PiM_empty sigma_sets_empty_eq cong: conj_cong) -next - assume "I \ {}" - show ?thesis - proof - show "sets (Pi\<^isub>M I M) \ sigma_sets (\\<^isub>E i\I. space (M i)) generator" - unfolding sets_PiM - proof (safe intro!: sigma_sets_subseteq) - fix A assume "A \ prod_algebra I M" with `I \ {}` show "A \ generator" - by (auto intro!: generatorI' sets_PiM_I_finite elim!: prod_algebraE) - qed - qed (auto simp: generator_def space_PiM[symmetric] intro!: sigma_sets_subset) -qed - -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 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 (PiP J M P) X))" - -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 (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 (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 (PiP (K \ J) M P) (emb (K \ J) J X) = emeasure (PiP J M P) X" - using K J by simp - finally show "emeasure (PiP J M P) X = emeasure (PiP K M P) Y" .. -qed (insert J, force) - -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 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 (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 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 (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 (PiP J M P) X" by auto - then show thesis by (intro that) auto -qed - -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 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))" -proof - - have [simp]: "\x J K L. merge J K (y, restrict x L) = merge J (K \ L) (y, x)" - by (auto simp: restrict_def merge_def) - have [simp]: "\x J K L. restrict (merge J K (y, x)) L = merge (J \ L) (K \ L) (y, x)" - by (auto simp: restrict_def merge_def) - have [simp]: "(I - J) \ K = K - J" using `K \ I` `J \ I` by auto - have [simp]: "(K - J) \ (K \ J) = K - J" by auto - have [simp]: "(K - J) \ K = K - J" by auto - from y `K \ I` `J \ I` show ?thesis - by (simp split: split_merge add: prod_emb_def Pi_iff extensional_merge_sub set_eq_iff space_PiM) - auto -qed - -lemma (in projective_family) positive_\G: - assumes "I \ {}" - shows "positive generator \G" -proof - - interpret G!: algebra "\\<^isub>E i\I. space (M i)" generator by (rule algebra_generator) fact - show ?thesis - proof (intro positive_def[THEN iffD2] conjI ballI) - from generatorE[OF G.empty_sets] guess J X . note this[simp] - have "X = {}" - by (rule prod_emb_injective[of J I]) simp_all - then show "\G {} = 0" by simp - next - fix A assume "A \ generator" - from generatorE[OF this] guess J X . note this[simp] - show "0 \ \G A" by (simp add: emeasure_nonneg) - qed -qed - -lemma (in projective_family) additive_\G: - assumes "I \ {}" - shows "additive generator \G" -proof - - interpret G!: algebra "\\<^isub>E i\I. space (M i)" generator by (rule algebra_generator) fact - show ?thesis - proof (intro additive_def[THEN iffD2] ballI impI) - fix A assume "A \ generator" with generatorE guess J X . note J = this - fix B assume "B \ generator" with generatorE guess K Y . note K = this - assume "A \ B = {}" - have JK: "J \ K \ {}" "J \ K \ I" "finite (J \ K)" - using J K by auto - have JK_disj: "emb (J \ K) J X \ emb (J \ K) K Y = {}" - apply (rule prod_emb_injective[of "J \ K" I]) - apply (insert `A \ B = {}` JK J K) - apply (simp_all add: Int prod_emb_Int) - done - have AB: "A = emb I (J \ K) (emb (J \ K) J X)" "B = emb I (J \ K) (emb (J \ K) K Y)" - 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 (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]) - finally show "\G (A \ B) = \G A + \G B" . - 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) diff -r afe886a04198 -r 6fe18351e9dd src/HOL/Probability/Projective_Family.thy --- a/src/HOL/Probability/Projective_Family.thy Fri Nov 09 14:14:45 2012 +0100 +++ b/src/HOL/Probability/Projective_Family.thy Fri Nov 09 14:31:26 2012 +0100 @@ -1,3 +1,10 @@ +(* Title: HOL/Probability/Projective_Family.thy + Author: Fabian Immler, TU München + Author: Johannes Hölzl, TU München +*) + +header {*Projective Family*} + theory Projective_Family imports Finite_Product_Measure Probability_Measure begin @@ -99,6 +106,195 @@ using assms by (subst PiP_finite) (auto simp: PiP_finite finite_subset projective) +lemma 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" +proof (rule injective_vimage_restrict) + show "X \ (\\<^isub>E i\J. space (M i))" "Y \ (\\<^isub>E i\J. space (M i))" + using sets[THEN sets_into_space] by (auto simp: space_PiM) + have "\i\L. \x. x \ space (M i)" + proof + fix i assume "i \ L" + interpret prob_space "P {i}" using prob_space by simp + from not_empty show "\x. x \ space (M i)" by (auto simp add: proj_space space_PiM) + qed + from bchoice[OF this] + show "(\\<^isub>E i\L. space (M i)) \ {}" by auto + show "(\x. restrict x J) -` X \ (\\<^isub>E i\L. space (M i)) = (\x. restrict x J) -` Y \ (\\<^isub>E i\L. space (M i))" + using `prod_emb L M J X = prod_emb L M J Y` by (simp add: prod_emb_def) +qed fact + +abbreviation + "emb L K X \ prod_emb L M K X" + +definition generator :: "('i \ 'a) set set" where + "generator = (\J\{J. J \ {} \ finite J \ J \ I}. emb I J ` sets (Pi\<^isub>M J M))" + +lemma generatorI': + "J \ {} \ finite J \ J \ I \ X \ sets (Pi\<^isub>M J M) \ emb I J X \ generator" + unfolding generator_def by auto + +lemma 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) + let ?G = generator + show "?G \ Pow ?\" + by (auto simp: generator_def prod_emb_def) + from `I \ {}` obtain i where "i \ I" by auto + then show "{} \ ?G" + by (auto intro!: exI[of _ "{i}"] image_eqI[where x="\i. {}"] + simp: sigma_sets.Empty generator_def prod_emb_def) + from `i \ I` show "?\ \ ?G" + by (auto intro!: exI[of _ "{i}"] image_eqI[where x="Pi\<^isub>E {i} (\i. space (M i))"] + simp: generator_def prod_emb_def) + fix A assume "A \ ?G" + then obtain JA XA where XA: "JA \ {}" "finite JA" "JA \ I" "XA \ sets (Pi\<^isub>M JA M)" and A: "A = emb I JA XA" + by (auto simp: generator_def) + fix B assume "B \ ?G" + then obtain JB XB where XB: "JB \ {}" "finite JB" "JB \ I" "XB \ sets (Pi\<^isub>M JB M)" and B: "B = emb I JB XB" + by (auto simp: generator_def) + let ?RA = "emb (JA \ JB) JA XA" + let ?RB = "emb (JA \ JB) JB XB" + have *: "A - B = emb I (JA \ JB) (?RA - ?RB)" "A \ B = emb I (JA \ JB) (?RA \ ?RB)" + using XA A XB B by auto + show "A - B \ ?G" "A \ B \ ?G" + unfolding * using XA XB by (safe intro!: generatorI') auto +qed + +lemma sets_PiM_generator: + "sets (PiM I M) = sigma_sets (\\<^isub>E i\I. space (M i)) generator" +proof cases + assume "I = {}" then show ?thesis + unfolding generator_def + by (auto simp: sets_PiM_empty sigma_sets_empty_eq cong: conj_cong) +next + assume "I \ {}" + show ?thesis + proof + show "sets (Pi\<^isub>M I M) \ sigma_sets (\\<^isub>E i\I. space (M i)) generator" + unfolding sets_PiM + proof (safe intro!: sigma_sets_subseteq) + fix A assume "A \ prod_algebra I M" with `I \ {}` show "A \ generator" + by (auto intro!: generatorI' sets_PiM_I_finite elim!: prod_algebraE) + qed + qed (auto simp: generator_def space_PiM[symmetric] intro!: sigma_sets_subset) +qed + +lemma 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 + "\G A = + (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 \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 (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 (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 (PiP (K \ J) M P) (emb (K \ J) J X) = emeasure (PiP J M P) X" + using K J by simp + finally show "emeasure (PiP J M P) X = emeasure (PiP K M P) Y" .. +qed (insert J, force) + +lemma \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 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 (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 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 (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 (PiP J M P) X" by auto + then show thesis by (intro that) auto +qed + +lemma 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 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))" +proof - + have [simp]: "\x J K L. merge J K (y, restrict x L) = merge J (K \ L) (y, x)" + by (auto simp: restrict_def merge_def) + have [simp]: "\x J K L. restrict (merge J K (y, x)) L = merge (J \ L) (K \ L) (y, x)" + by (auto simp: restrict_def merge_def) + have [simp]: "(I - J) \ K = K - J" using `K \ I` `J \ I` by auto + have [simp]: "(K - J) \ (K \ J) = K - J" by auto + have [simp]: "(K - J) \ K = K - J" by auto + from y `K \ I` `J \ I` show ?thesis + by (simp split: split_merge add: prod_emb_def Pi_iff extensional_merge_sub set_eq_iff space_PiM) + auto +qed + +lemma positive_\G: + assumes "I \ {}" + shows "positive generator \G" +proof - + interpret G!: algebra "\\<^isub>E i\I. space (M i)" generator by (rule algebra_generator) fact + show ?thesis + proof (intro positive_def[THEN iffD2] conjI ballI) + from generatorE[OF G.empty_sets] guess J X . note this[simp] + have "X = {}" + by (rule prod_emb_injective[of J I]) simp_all + then show "\G {} = 0" by simp + next + fix A assume "A \ generator" + from generatorE[OF this] guess J X . note this[simp] + show "0 \ \G A" by (simp add: emeasure_nonneg) + qed +qed + +lemma additive_\G: + assumes "I \ {}" + shows "additive generator \G" +proof - + interpret G!: algebra "\\<^isub>E i\I. space (M i)" generator by (rule algebra_generator) fact + show ?thesis + proof (intro additive_def[THEN iffD2] ballI impI) + fix A assume "A \ generator" with generatorE guess J X . note J = this + fix B assume "B \ generator" with generatorE guess K Y . note K = this + assume "A \ B = {}" + have JK: "J \ K \ {}" "J \ K \ I" "finite (J \ K)" + using J K by auto + have JK_disj: "emb (J \ K) J X \ emb (J \ K) K Y = {}" + apply (rule prod_emb_injective[of "J \ K" I]) + apply (insert `A \ B = {}` JK J K) + apply (simp_all add: Int prod_emb_Int) + done + have AB: "A = emb I (J \ K) (emb (J \ K) J X)" "B = emb I (J \ K) (emb (J \ K) K Y)" + 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 (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]) + finally show "\G (A \ B) = \G A + \G B" . + qed +qed + end end