# HG changeset patch # User hoelzl # Date 1295011286 -3600 # Node ID 646a1399e7924f4e3f919116dac79b78135abbf9 # Parent 1fa4725c4656bce67605cc05e02819616c21249e tuned theorem order diff -r 1fa4725c4656 -r 646a1399e792 src/HOL/Probability/Sigma_Algebra.thy --- a/src/HOL/Probability/Sigma_Algebra.thy Thu Jan 13 23:50:16 2011 +0100 +++ b/src/HOL/Probability/Sigma_Algebra.thy Fri Jan 14 14:21:26 2011 +0100 @@ -222,7 +222,44 @@ | Union: "(\i::nat. a i \ sigma_sets sp A) \ (\i. a i) \ sigma_sets sp A" definition - "sigma M = (| space = space M, sets = sigma_sets (space M) (sets M) |)" + "sigma M = \ space = space M, sets = sigma_sets (space M) (sets M) \" + +lemma (in sigma_algebra) sigma_sets_subset: + assumes a: "a \ sets M" + shows "sigma_sets (space M) a \ sets M" +proof + fix x + assume "x \ sigma_sets (space M) a" + from this show "x \ sets M" + by (induct rule: sigma_sets.induct, auto) (metis a subsetD) +qed + +lemma sigma_sets_into_sp: "A \ Pow sp \ x \ sigma_sets sp A \ x \ sp" + by (erule sigma_sets.induct, auto) + +lemma sigma_algebra_sigma_sets: + "a \ Pow (space M) \ sets M = sigma_sets (space M) a \ sigma_algebra M" + by (auto simp add: sigma_algebra_iff2 dest: sigma_sets_into_sp + intro!: sigma_sets.Union sigma_sets.Empty sigma_sets.Compl) + +lemma sigma_sets_least_sigma_algebra: + assumes "A \ Pow S" + shows "sigma_sets S A = \{B. A \ B \ sigma_algebra \space = S, sets = B\}" +proof safe + fix B X assume "A \ B" and sa: "sigma_algebra \ space = S, sets = B \" + and X: "X \ sigma_sets S A" + from sigma_algebra.sigma_sets_subset[OF sa, simplified, OF `A \ B`] X + show "X \ B" by auto +next + fix X assume "X \ \{B. A \ B \ sigma_algebra \space = S, sets = B\}" + then have [intro!]: "\B. A \ B \ sigma_algebra \space = S, sets = B\ \ X \ B" + by simp + have "A \ sigma_sets S A" using assms + by (auto intro!: sigma_sets.Basic) + moreover have "sigma_algebra \space = S, sets = sigma_sets S A\" + using assms by (intro sigma_algebra_sigma_sets[of A]) auto + ultimately show "X \ sigma_sets S A" by auto +qed lemma sets_sigma: "sets (sigma M) = sigma_sets (space M) (sets M)" unfolding sigma_def by simp @@ -233,9 +270,6 @@ lemma sigma_sets_top: "sp \ sigma_sets sp A" by (metis Diff_empty sigma_sets.Compl sigma_sets.Empty) -lemma sigma_sets_into_sp: "A \ Pow sp \ x \ sigma_sets sp A \ x \ sp" - by (erule sigma_sets.induct, auto) - lemma sigma_sets_Un: "a \ sigma_sets sp A \ b \ sigma_sets sp A \ a \ b \ sigma_sets sp A" apply (simp add: Un_range_binary range_binary_eq) @@ -274,16 +308,6 @@ finally show ?thesis . qed -lemma (in sigma_algebra) sigma_sets_subset: - assumes a: "a \ sets M" - shows "sigma_sets (space M) a \ sets M" -proof - fix x - assume "x \ sigma_sets (space M) a" - from this show "x \ sets M" - by (induct rule: sigma_sets.induct, auto) (metis a subsetD) -qed - lemma (in sigma_algebra) sigma_sets_eq: "sigma_sets (space M) (sets M) = sets M" proof @@ -294,14 +318,6 @@ by (metis sigma_sets_subset subset_refl) qed -lemma sigma_algebra_sigma_sets: - "a \ Pow (space M) \ sets M = sigma_sets (space M) a \ sigma_algebra M" - apply (auto simp add: sigma_algebra_def sigma_algebra_axioms_def - algebra_def sigma_sets.Empty sigma_sets.Compl sigma_sets_Un) - apply (blast dest: sigma_sets_into_sp) - apply (rule sigma_sets.Union, fast) - done - lemma sigma_algebra_sigma: "sets M \ Pow (space M) \ sigma_algebra (sigma M)" apply (rule sigma_algebra_sigma_sets) @@ -312,25 +328,6 @@ "sets N \ sets M \ space N = space M \ sets (sigma N) \ (sets M)" by (simp add: sigma_def sigma_sets_subset) -lemma sigma_sets_least_sigma_algebra: - assumes "A \ Pow S" - shows "sigma_sets S A = \{B. A \ B \ sigma_algebra \space = S, sets = B\}" -proof safe - fix B X assume "A \ B" and sa: "sigma_algebra \ space = S, sets = B \" - and X: "X \ sigma_sets S A" - from sigma_algebra.sigma_sets_subset[OF sa, simplified, OF `A \ B`] X - show "X \ B" by auto -next - fix X assume "X \ \{B. A \ B \ sigma_algebra \space = S, sets = B\}" - then have [intro!]: "\B. A \ B \ sigma_algebra \space = S, sets = B\ \ X \ B" - by simp - have "A \ sigma_sets S A" using assms - by (auto intro!: sigma_sets.Basic) - moreover have "sigma_algebra \space = S, sets = sigma_sets S A\" - using assms by (intro sigma_algebra_sigma_sets[of A]) auto - ultimately show "X \ sigma_sets S A" by auto -qed - lemma (in sigma_algebra) restriction_in_sets: fixes A :: "nat \ 'a set" assumes "S \ sets M"