src/HOL/Probability/Sigma_Algebra.thy
changeset 41543 646a1399e792
parent 41413 64cd30d6b0b8
child 41689 3e39b0e730d6
equal deleted inserted replaced
41541:1fa4725c4656 41543:646a1399e792
   220   | Empty: "{} \<in> sigma_sets sp A"
   220   | Empty: "{} \<in> sigma_sets sp A"
   221   | Compl: "a \<in> sigma_sets sp A \<Longrightarrow> sp - a \<in> sigma_sets sp A"
   221   | Compl: "a \<in> sigma_sets sp A \<Longrightarrow> sp - a \<in> sigma_sets sp A"
   222   | Union: "(\<And>i::nat. a i \<in> sigma_sets sp A) \<Longrightarrow> (\<Union>i. a i) \<in> sigma_sets sp A"
   222   | Union: "(\<And>i::nat. a i \<in> sigma_sets sp A) \<Longrightarrow> (\<Union>i. a i) \<in> sigma_sets sp A"
   223 
   223 
   224 definition
   224 definition
   225   "sigma M = (| space = space M, sets = sigma_sets (space M) (sets M) |)"
   225   "sigma M = \<lparr> space = space M, sets = sigma_sets (space M) (sets M) \<rparr>"
       
   226 
       
   227 lemma (in sigma_algebra) sigma_sets_subset:
       
   228   assumes a: "a \<subseteq> sets M"
       
   229   shows "sigma_sets (space M) a \<subseteq> sets M"
       
   230 proof
       
   231   fix x
       
   232   assume "x \<in> sigma_sets (space M) a"
       
   233   from this show "x \<in> sets M"
       
   234     by (induct rule: sigma_sets.induct, auto) (metis a subsetD)
       
   235 qed
       
   236 
       
   237 lemma sigma_sets_into_sp: "A \<subseteq> Pow sp \<Longrightarrow> x \<in> sigma_sets sp A \<Longrightarrow> x \<subseteq> sp"
       
   238   by (erule sigma_sets.induct, auto)
       
   239 
       
   240 lemma sigma_algebra_sigma_sets:
       
   241      "a \<subseteq> Pow (space M) \<Longrightarrow> sets M = sigma_sets (space M) a \<Longrightarrow> sigma_algebra M"
       
   242   by (auto simp add: sigma_algebra_iff2 dest: sigma_sets_into_sp
       
   243            intro!: sigma_sets.Union sigma_sets.Empty sigma_sets.Compl)
       
   244 
       
   245 lemma sigma_sets_least_sigma_algebra:
       
   246   assumes "A \<subseteq> Pow S"
       
   247   shows "sigma_sets S A = \<Inter>{B. A \<subseteq> B \<and> sigma_algebra \<lparr>space = S, sets = B\<rparr>}"
       
   248 proof safe
       
   249   fix B X assume "A \<subseteq> B" and sa: "sigma_algebra \<lparr> space = S, sets = B \<rparr>"
       
   250     and X: "X \<in> sigma_sets S A"
       
   251   from sigma_algebra.sigma_sets_subset[OF sa, simplified, OF `A \<subseteq> B`] X
       
   252   show "X \<in> B" by auto
       
   253 next
       
   254   fix X assume "X \<in> \<Inter>{B. A \<subseteq> B \<and> sigma_algebra \<lparr>space = S, sets = B\<rparr>}"
       
   255   then have [intro!]: "\<And>B. A \<subseteq> B \<Longrightarrow> sigma_algebra \<lparr>space = S, sets = B\<rparr> \<Longrightarrow> X \<in> B"
       
   256      by simp
       
   257   have "A \<subseteq> sigma_sets S A" using assms
       
   258     by (auto intro!: sigma_sets.Basic)
       
   259   moreover have "sigma_algebra \<lparr>space = S, sets = sigma_sets S A\<rparr>"
       
   260     using assms by (intro sigma_algebra_sigma_sets[of A]) auto
       
   261   ultimately show "X \<in> sigma_sets S A" by auto
       
   262 qed
   226 
   263 
   227 lemma sets_sigma: "sets (sigma M) = sigma_sets (space M) (sets M)"
   264 lemma sets_sigma: "sets (sigma M) = sigma_sets (space M) (sets M)"
   228   unfolding sigma_def by simp
   265   unfolding sigma_def by simp
   229 
   266 
   230 lemma space_sigma [simp]: "space (sigma M) = space M"
   267 lemma space_sigma [simp]: "space (sigma M) = space M"
   231   by (simp add: sigma_def)
   268   by (simp add: sigma_def)
   232 
   269 
   233 lemma sigma_sets_top: "sp \<in> sigma_sets sp A"
   270 lemma sigma_sets_top: "sp \<in> sigma_sets sp A"
   234   by (metis Diff_empty sigma_sets.Compl sigma_sets.Empty)
   271   by (metis Diff_empty sigma_sets.Compl sigma_sets.Empty)
   235 
       
   236 lemma sigma_sets_into_sp: "A \<subseteq> Pow sp \<Longrightarrow> x \<in> sigma_sets sp A \<Longrightarrow> x \<subseteq> sp"
       
   237   by (erule sigma_sets.induct, auto)
       
   238 
   272 
   239 lemma sigma_sets_Un:
   273 lemma sigma_sets_Un:
   240   "a \<in> sigma_sets sp A \<Longrightarrow> b \<in> sigma_sets sp A \<Longrightarrow> a \<union> b \<in> sigma_sets sp A"
   274   "a \<in> sigma_sets sp A \<Longrightarrow> b \<in> sigma_sets sp A \<Longrightarrow> a \<union> b \<in> sigma_sets sp A"
   241 apply (simp add: Un_range_binary range_binary_eq)
   275 apply (simp add: Un_range_binary range_binary_eq)
   242 apply (rule Union, simp add: binary_def)
   276 apply (rule Union, simp add: binary_def)
   272   also have "(\<Inter>i. (if i\<in>S then a i else sp)) = (\<Inter>i\<in>S. a i)"
   306   also have "(\<Inter>i. (if i\<in>S then a i else sp)) = (\<Inter>i\<in>S. a i)"
   273     by auto (metis ai non sigma_sets_into_sp subset_empty subset_iff Asb)+
   307     by auto (metis ai non sigma_sets_into_sp subset_empty subset_iff Asb)+
   274   finally show ?thesis .
   308   finally show ?thesis .
   275 qed
   309 qed
   276 
   310 
   277 lemma (in sigma_algebra) sigma_sets_subset:
       
   278   assumes a: "a \<subseteq> sets M"
       
   279   shows "sigma_sets (space M) a \<subseteq> sets M"
       
   280 proof
       
   281   fix x
       
   282   assume "x \<in> sigma_sets (space M) a"
       
   283   from this show "x \<in> sets M"
       
   284     by (induct rule: sigma_sets.induct, auto) (metis a subsetD)
       
   285 qed
       
   286 
       
   287 lemma (in sigma_algebra) sigma_sets_eq:
   311 lemma (in sigma_algebra) sigma_sets_eq:
   288      "sigma_sets (space M) (sets M) = sets M"
   312      "sigma_sets (space M) (sets M) = sets M"
   289 proof
   313 proof
   290   show "sets M \<subseteq> sigma_sets (space M) (sets M)"
   314   show "sets M \<subseteq> sigma_sets (space M) (sets M)"
   291     by (metis Set.subsetI sigma_sets.Basic)
   315     by (metis Set.subsetI sigma_sets.Basic)
   292   next
   316   next
   293   show "sigma_sets (space M) (sets M) \<subseteq> sets M"
   317   show "sigma_sets (space M) (sets M) \<subseteq> sets M"
   294     by (metis sigma_sets_subset subset_refl)
   318     by (metis sigma_sets_subset subset_refl)
   295 qed
   319 qed
   296 
   320 
   297 lemma sigma_algebra_sigma_sets:
       
   298      "a \<subseteq> Pow (space M) \<Longrightarrow> sets M = sigma_sets (space M) a \<Longrightarrow> sigma_algebra M"
       
   299   apply (auto simp add: sigma_algebra_def sigma_algebra_axioms_def
       
   300       algebra_def sigma_sets.Empty sigma_sets.Compl sigma_sets_Un)
       
   301   apply (blast dest: sigma_sets_into_sp)
       
   302   apply (rule sigma_sets.Union, fast)
       
   303   done
       
   304 
       
   305 lemma sigma_algebra_sigma:
   321 lemma sigma_algebra_sigma:
   306     "sets M \<subseteq> Pow (space M) \<Longrightarrow> sigma_algebra (sigma M)"
   322     "sets M \<subseteq> Pow (space M) \<Longrightarrow> sigma_algebra (sigma M)"
   307   apply (rule sigma_algebra_sigma_sets)
   323   apply (rule sigma_algebra_sigma_sets)
   308   apply (auto simp add: sigma_def)
   324   apply (auto simp add: sigma_def)
   309   done
   325   done
   310 
   326 
   311 lemma (in sigma_algebra) sigma_subset:
   327 lemma (in sigma_algebra) sigma_subset:
   312     "sets N \<subseteq> sets M \<Longrightarrow> space N = space M \<Longrightarrow> sets (sigma N) \<subseteq> (sets M)"
   328     "sets N \<subseteq> sets M \<Longrightarrow> space N = space M \<Longrightarrow> sets (sigma N) \<subseteq> (sets M)"
   313   by (simp add: sigma_def sigma_sets_subset)
   329   by (simp add: sigma_def sigma_sets_subset)
   314 
       
   315 lemma sigma_sets_least_sigma_algebra:
       
   316   assumes "A \<subseteq> Pow S"
       
   317   shows "sigma_sets S A = \<Inter>{B. A \<subseteq> B \<and> sigma_algebra \<lparr>space = S, sets = B\<rparr>}"
       
   318 proof safe
       
   319   fix B X assume "A \<subseteq> B" and sa: "sigma_algebra \<lparr> space = S, sets = B \<rparr>"
       
   320     and X: "X \<in> sigma_sets S A"
       
   321   from sigma_algebra.sigma_sets_subset[OF sa, simplified, OF `A \<subseteq> B`] X
       
   322   show "X \<in> B" by auto
       
   323 next
       
   324   fix X assume "X \<in> \<Inter>{B. A \<subseteq> B \<and> sigma_algebra \<lparr>space = S, sets = B\<rparr>}"
       
   325   then have [intro!]: "\<And>B. A \<subseteq> B \<Longrightarrow> sigma_algebra \<lparr>space = S, sets = B\<rparr> \<Longrightarrow> X \<in> B"
       
   326      by simp
       
   327   have "A \<subseteq> sigma_sets S A" using assms
       
   328     by (auto intro!: sigma_sets.Basic)
       
   329   moreover have "sigma_algebra \<lparr>space = S, sets = sigma_sets S A\<rparr>"
       
   330     using assms by (intro sigma_algebra_sigma_sets[of A]) auto
       
   331   ultimately show "X \<in> sigma_sets S A" by auto
       
   332 qed
       
   333 
   330 
   334 lemma (in sigma_algebra) restriction_in_sets:
   331 lemma (in sigma_algebra) restriction_in_sets:
   335   fixes A :: "nat \<Rightarrow> 'a set"
   332   fixes A :: "nat \<Rightarrow> 'a set"
   336   assumes "S \<in> sets M"
   333   assumes "S \<in> sets M"
   337   and *: "range A \<subseteq> (\<lambda>A. S \<inter> A) ` sets M" (is "_ \<subseteq> ?r")
   334   and *: "range A \<subseteq> (\<lambda>A. S \<inter> A) ` sets M" (is "_ \<subseteq> ?r")