# HG changeset patch # User hoelzl # Date 1306411917 -7200 # Node ID fe7f5a26e4c63e2e21f0221b07bec7a40d715394 # Parent 859fe9cc08386e3b75efeb375b1d21a16ce676db add lemma indep_sets_collect_sigma diff -r 859fe9cc0838 -r fe7f5a26e4c6 src/HOL/Probability/Independent_Family.thy --- a/src/HOL/Probability/Independent_Family.thy Thu May 26 09:42:04 2011 +0200 +++ b/src/HOL/Probability/Independent_Family.thy Thu May 26 14:11:57 2011 +0200 @@ -9,20 +9,32 @@ begin definition (in prob_space) - "indep_events A I \ (\J\I. J \ {} \ finite J \ prob (\j\J. A j) = (\j\J. prob (A j)))" + "indep_events A I \ (A`I \ sets M) \ + (\J\I. J \ {} \ finite J \ prob (\j\J. A j) = (\j\J. prob (A j)))" definition (in prob_space) - "indep_sets F I \ (\i\I. F i \ events) \ (\J\I. J \ {} \ finite J \ - (\A\(\ j\J. F j). prob (\j\J. A j) = (\j\J. prob (A j))))" + "indep_event A B \ indep_events (bool_case A B) UNIV" definition (in prob_space) - "indep_sets2 A B \ indep_sets (bool_case A B) UNIV" + "indep_sets F I \ (\i\I. F i \ sets M) \ + (\J\I. J \ {} \ finite J \ (\A\Pi J F. prob (\j\J. A j) = (\j\J. prob (A j))))" + +definition (in prob_space) + "indep_set A B \ indep_sets (bool_case A B) UNIV" definition (in prob_space) "indep_rv M' X I \ (\i\I. random_variable (M' i) (X i)) \ indep_sets (\i. sigma_sets (space M) { X i -` A \ space M | A. A \ sets (M' i)}) I" +lemma (in prob_space) indep_sets_cong: + "I = J \ (\i. i \ I \ F i = G i) \ indep_sets F I \ indep_sets G J" + by (simp add: indep_sets_def, intro conj_cong all_cong imp_cong ball_cong) blast+ + +lemma (in prob_space) indep_events_finite_index_events: + "indep_events F I \ (\J\I. J \ {} \ finite J \ indep_events F J)" + by (auto simp: indep_events_def) + lemma (in prob_space) indep_sets_finite_index_sets: "indep_sets F I \ (\J\I. J \ {} \ finite J \ indep_sets F J)" proof (intro iffI allI impI) @@ -266,8 +278,8 @@ using indep_sets_sigma[OF assms] by (simp add: sets_sigma) lemma (in prob_space) indep_sets2_eq: - "indep_sets2 A B \ A \ events \ B \ events \ (\a\A. \b\B. prob (a \ b) = prob a * prob b)" - unfolding indep_sets2_def + "indep_set A B \ A \ events \ B \ events \ (\a\A. \b\B. prob (a \ b) = prob a * prob b)" + unfolding indep_set_def proof (intro iffI ballI conjI) assume indep: "indep_sets (bool_case A B) UNIV" { fix a b assume "a \ A" "b \ B" @@ -291,22 +303,122 @@ qed qed -lemma (in prob_space) indep_sets2_sigma_sets: - assumes "indep_sets2 A B" +lemma (in prob_space) indep_set_sigma_sets: + assumes "indep_set A B" assumes A: "Int_stable \ space = space M, sets = A \" assumes B: "Int_stable \ space = space M, sets = B \" - shows "indep_sets2 (sigma_sets (space M) A) (sigma_sets (space M) B)" + shows "indep_set (sigma_sets (space M) A) (sigma_sets (space M) B)" proof - have "indep_sets (\i. sigma_sets (space M) (case i of True \ A | False \ B)) UNIV" proof (rule indep_sets_sigma_sets) show "indep_sets (bool_case A B) UNIV" - by (rule `indep_sets2 A B`[unfolded indep_sets2_def]) + by (rule `indep_set A B`[unfolded indep_set_def]) fix i show "Int_stable \space = space M, sets = case i of True \ A | False \ B\" using A B by (cases i) auto qed then show ?thesis - unfolding indep_sets2_def + unfolding indep_set_def by (rule indep_sets_mono_sets) (auto split: bool.split) qed +lemma (in prob_space) indep_sets_collect_sigma: + fixes I :: "'j \ 'i set" and J :: "'j set" and E :: "'i \ 'a set set" + assumes indep: "indep_sets E (\j\J. I j)" + assumes Int_stable: "\i j. j \ J \ i \ I j \ Int_stable \space = space M, sets = E i\" + assumes disjoint: "disjoint_family_on I J" + shows "indep_sets (\j. sigma_sets (space M) (\i\I j. E i)) J" +proof - + let "?E j" = "{\k\K. E' k| E' K. finite K \ K \ {} \ K \ I j \ (\k\K. E' k \ E k) }" + + from indep have E: "\j i. j \ J \ i \ I j \ E i \ sets M" + unfolding indep_sets_def by auto + { fix j + let ?S = "sigma \ space = space M, sets = (\i\I j. E i) \" + assume "j \ J" + from E[OF this] interpret S: sigma_algebra ?S + using sets_into_space by (intro sigma_algebra_sigma) auto + + have "sigma_sets (space M) (\i\I j. E i) = sigma_sets (space M) (?E j)" + proof (rule sigma_sets_eqI) + fix A assume "A \ (\i\I j. E i)" + then guess i .. + then show "A \ sigma_sets (space M) (?E j)" + by (auto intro!: sigma_sets.intros exI[of _ "{i}"] exI[of _ "\i. A"]) + next + fix A assume "A \ ?E j" + then obtain E' K where "finite K" "K \ {}" "K \ I j" "\k. k \ K \ E' k \ E k" + and A: "A = (\k\K. E' k)" + by auto + then have "A \ sets ?S" unfolding A + by (safe intro!: S.finite_INT) + (auto simp: sets_sigma intro!: sigma_sets.Basic) + then show "A \ sigma_sets (space M) (\i\I j. E i)" + by (simp add: sets_sigma) + qed } + moreover have "indep_sets (\j. sigma_sets (space M) (?E j)) J" + proof (rule indep_sets_sigma_sets) + show "indep_sets ?E J" + proof (intro indep_setsI) + fix j assume "j \ J" with E show "?E j \ events" by (force intro!: finite_INT) + next + fix K A assume K: "K \ {}" "K \ J" "finite K" + and "\j\K. A j \ ?E j" + then have "\j\K. \E' L. A j = (\l\L. E' l) \ finite L \ L \ {} \ L \ I j \ (\l\L. E' l \ E l)" + by simp + from bchoice[OF this] guess E' .. + from bchoice[OF this] obtain L + where A: "\j. j\K \ A j = (\l\L j. E' j l)" + and L: "\j. j\K \ finite (L j)" "\j. j\K \ L j \ {}" "\j. j\K \ L j \ I j" + and E': "\j l. j\K \ l \ L j \ E' j l \ E l" + by auto + + { fix k l j assume "k \ K" "j \ K" "l \ L j" "l \ L k" + have "k = j" + proof (rule ccontr) + assume "k \ j" + with disjoint `K \ J` `k \ K` `j \ K` have "I k \ I j = {}" + unfolding disjoint_family_on_def by auto + with L(2,3)[OF `j \ K`] L(2,3)[OF `k \ K`] + show False using `l \ L k` `l \ L j` by auto + qed } + note L_inj = this + + def k \ "\l. (SOME k. k \ K \ l \ L k)" + { fix x j l assume *: "j \ K" "l \ L j" + have "k l = j" unfolding k_def + proof (rule some_equality) + fix k assume "k \ K \ l \ L k" + with * L_inj show "k = j" by auto + qed (insert *, simp) } + note k_simp[simp] = this + let "?E' l" = "E' (k l) l" + have "prob (\j\K. A j) = prob (\l\(\k\K. L k). ?E' l)" + by (auto simp: A intro!: arg_cong[where f=prob]) + also have "\ = (\l\(\k\K. L k). prob (?E' l))" + using L K E' by (intro indep_setsD[OF indep]) (simp_all add: UN_mono) + also have "\ = (\j\K. \l\L j. prob (E' j l))" + using K L L_inj by (subst setprod_UN_disjoint) auto + also have "\ = (\j\K. prob (A j))" + using K L E' by (auto simp add: A intro!: setprod_cong indep_setsD[OF indep, symmetric]) blast + finally show "prob (\j\K. A j) = (\j\K. prob (A j))" . + qed + next + fix j assume "j \ J" + show "Int_stable \ space = space M, sets = ?E j \" + proof (rule Int_stableI) + fix a assume "a \ ?E j" then obtain Ka Ea + where a: "a = (\k\Ka. Ea k)" "finite Ka" "Ka \ {}" "Ka \ I j" "\k. k\Ka \ Ea k \ E k" by auto + fix b assume "b \ ?E j" then obtain Kb Eb + where b: "b = (\k\Kb. Eb k)" "finite Kb" "Kb \ {}" "Kb \ I j" "\k. k\Kb \ Eb k \ E k" by auto + let ?A = "\k. (if k \ Ka \ Kb then Ea k \ Eb k else if k \ Kb then Eb k else if k \ Ka then Ea k else {})" + have "a \ b = INTER (Ka \ Kb) ?A" + by (simp add: a b set_eq_iff) auto + with a b `j \ J` Int_stableD[OF Int_stable] show "a \ b \ ?E j" + by (intro CollectI exI[of _ "Ka \ Kb"] exI[of _ ?A]) auto + qed + qed + ultimately show ?thesis + by (simp cong: indep_sets_cong) +qed + end diff -r 859fe9cc0838 -r fe7f5a26e4c6 src/HOL/Probability/Probability_Measure.thy --- a/src/HOL/Probability/Probability_Measure.thy Thu May 26 09:42:04 2011 +0200 +++ b/src/HOL/Probability/Probability_Measure.thy Thu May 26 14:11:57 2011 +0200 @@ -23,12 +23,6 @@ abbreviation (in prob_space) "expectation \ integral\<^isup>L M" definition (in prob_space) - "indep A B \ A \ events \ B \ events \ prob (A \ B) = prob A * prob B" - -definition (in prob_space) - "indep_families F G \ (\ A \ F. \ B \ G. indep A B)" - -definition (in prob_space) "distribution X A = \' (X -` A \ space M)" abbreviation (in prob_space) @@ -80,9 +74,6 @@ shows "prob (space M - A) = 1 - prob A" using finite_measure_compl[OF A] by (simp add: prob_space) -lemma (in prob_space) indep_space: "s \ events \ indep (space M) s" - by (simp add: indep_def prob_space) - lemma (in prob_space) prob_space_increasing: "increasing M prob" by (auto intro!: finite_measure_mono simp: increasing_def) @@ -141,15 +132,6 @@ by (simp add: assms(2) suminf_zero summable_zero) qed simp -lemma (in prob_space) indep_sym: - "indep a b \ indep b a" -unfolding indep_def using Int_commute[of a b] by auto - -lemma (in prob_space) indep_refl: - assumes "a \ events" - shows "indep a a = (prob a = 0) \ (prob a = 1)" -using assms unfolding indep_def by auto - lemma (in prob_space) prob_equiprobable_finite_unions: assumes "s \ events" assumes s_finite: "finite s" "\x. x \ s \ {x} \ events" diff -r 859fe9cc0838 -r fe7f5a26e4c6 src/HOL/Probability/Sigma_Algebra.thy --- a/src/HOL/Probability/Sigma_Algebra.thy Thu May 26 09:42:04 2011 +0200 +++ b/src/HOL/Probability/Sigma_Algebra.thy Thu May 26 14:11:57 2011 +0200 @@ -417,6 +417,20 @@ by (metis sigma_sets_subset subset_refl) qed +lemma sigma_sets_eqI: + assumes A: "\a. a \ A \ a \ sigma_sets M B" + assumes B: "\b. b \ B \ b \ sigma_sets M A" + shows "sigma_sets M A = sigma_sets M B" +proof (intro set_eqI iffI) + fix a assume "a \ sigma_sets M A" + from this A show "a \ sigma_sets M B" + by induct (auto intro!: sigma_sets.intros del: sigma_sets.Basic) +next + fix b assume "b \ sigma_sets M B" + from this B show "b \ sigma_sets M A" + by induct (auto intro!: sigma_sets.intros del: sigma_sets.Basic) +qed + lemma sigma_algebra_sigma: "sets M \ Pow (space M) \ sigma_algebra (sigma M)" apply (rule sigma_algebra_sigma_sets) @@ -1297,6 +1311,14 @@ lemma (in algebra) Int_stable: "Int_stable M" unfolding Int_stable_def by auto +lemma Int_stableI: + "(\a b. a \ A \ b \ A \ a \ b \ A) \ Int_stable \ space = \, sets = A \" + unfolding Int_stable_def by auto + +lemma Int_stableD: + "Int_stable M \ a \ sets M \ b \ sets M \ a \ b \ sets M" + unfolding Int_stable_def by auto + lemma (in dynkin_system) sigma_algebra_eq_Int_stable: "sigma_algebra M \ Int_stable M" proof