src/HOL/Probability/Independent_Family.thy
changeset 69313 b021008c5397
parent 69064 5840724b1d71
child 69325 4b6ddc5989fc
equal deleted inserted replaced
69312:e0f68a507683 69313:b021008c5397
   540       next
   540       next
   541         assume "K j \<noteq> {}" with J have "J \<noteq> {}"
   541         assume "K j \<noteq> {}" with J have "J \<noteq> {}"
   542           by auto
   542           by auto
   543         { interpret sigma_algebra "space M" "?UN j"
   543         { interpret sigma_algebra "space M" "?UN j"
   544             by (rule sigma_algebra_sigma_sets) auto
   544             by (rule sigma_algebra_sigma_sets) auto
   545           have "\<And>A. (\<And>i. i \<in> J \<Longrightarrow> A i \<in> ?UN j) \<Longrightarrow> INTER J A \<in> ?UN j"
   545           have "\<And>A. (\<And>i. i \<in> J \<Longrightarrow> A i \<in> ?UN j) \<Longrightarrow> \<Inter>(A ` J) \<in> ?UN j"
   546             using \<open>finite J\<close> \<open>J \<noteq> {}\<close> by (rule finite_INT) blast }
   546             using \<open>finite J\<close> \<open>J \<noteq> {}\<close> by (rule finite_INT) blast }
   547         note INT = this
   547         note INT = this
   548 
   548 
   549         from \<open>J \<noteq> {}\<close> J K E[rule_format, THEN sets.sets_into_space] j
   549         from \<open>J \<noteq> {}\<close> J K E[rule_format, THEN sets.sets_into_space] j
   550         have "(\<lambda>\<omega>. \<lambda>i\<in>K j. X i \<omega>) -` prod_emb (K j) M' J (Pi\<^sub>E J E) \<inter> space M
   550         have "(\<lambda>\<omega>. \<lambda>i\<in>K j. X i \<omega>) -` prod_emb (K j) M' J (Pi\<^sub>E J E) \<inter> space M
   618   shows "tail_events A \<subseteq> events"
   618   shows "tail_events A \<subseteq> events"
   619 proof
   619 proof
   620   fix X assume X: "X \<in> tail_events A"
   620   fix X assume X: "X \<in> tail_events A"
   621   let ?A = "(\<Inter>n. sigma_sets (space M) (UNION {n..} A))"
   621   let ?A = "(\<Inter>n. sigma_sets (space M) (UNION {n..} A))"
   622   from X have "\<And>n::nat. X \<in> sigma_sets (space M) (UNION {n..} A)" by (auto simp: tail_events_def)
   622   from X have "\<And>n::nat. X \<in> sigma_sets (space M) (UNION {n..} A)" by (auto simp: tail_events_def)
   623   from this[of 0] have "X \<in> sigma_sets (space M) (UNION UNIV A)" by simp
   623   from this[of 0] have "X \<in> sigma_sets (space M) (\<Union>(A ` UNIV))" by simp
   624   then show "X \<in> events"
   624   then show "X \<in> events"
   625     by induct (insert A, auto)
   625     by induct (insert A, auto)
   626 qed
   626 qed
   627 
   627 
   628 lemma (in prob_space) sigma_algebra_tail_events:
   628 lemma (in prob_space) sigma_algebra_tail_events:
   632 proof (simp add: sigma_algebra_iff2, safe)
   632 proof (simp add: sigma_algebra_iff2, safe)
   633   let ?A = "(\<Inter>n. sigma_sets (space M) (UNION {n..} A))"
   633   let ?A = "(\<Inter>n. sigma_sets (space M) (UNION {n..} A))"
   634   interpret A: sigma_algebra "space M" "A i" for i by fact
   634   interpret A: sigma_algebra "space M" "A i" for i by fact
   635   { fix X x assume "X \<in> ?A" "x \<in> X"
   635   { fix X x assume "X \<in> ?A" "x \<in> X"
   636     then have "\<And>n. X \<in> sigma_sets (space M) (UNION {n..} A)" by auto
   636     then have "\<And>n. X \<in> sigma_sets (space M) (UNION {n..} A)" by auto
   637     from this[of 0] have "X \<in> sigma_sets (space M) (UNION UNIV A)" by simp
   637     from this[of 0] have "X \<in> sigma_sets (space M) (\<Union>(A ` UNIV))" by simp
   638     then have "X \<subseteq> space M"
   638     then have "X \<subseteq> space M"
   639       by induct (insert A.sets_into_space, auto)
   639       by induct (insert A.sets_into_space, auto)
   640     with \<open>x \<in> X\<close> show "x \<in> space M" by auto }
   640     with \<open>x \<in> X\<close> show "x \<in> space M" by auto }
   641   { fix F :: "nat \<Rightarrow> 'a set" and n assume "range F \<subseteq> ?A"
   641   { fix F :: "nat \<Rightarrow> 'a set" and n assume "range F \<subseteq> ?A"
   642     then show "(UNION UNIV F) \<in> sigma_sets (space M) (UNION {n..} A)"
   642     then show "(\<Union>(F ` UNIV)) \<in> sigma_sets (space M) (UNION {n..} A)"
   643       by (intro sigma_sets.Union) auto }
   643       by (intro sigma_sets.Union) auto }
   644 qed (auto intro!: sigma_sets.Compl sigma_sets.Empty)
   644 qed (auto intro!: sigma_sets.Compl sigma_sets.Empty)
   645 
   645 
   646 lemma (in prob_space) kolmogorov_0_1_law:
   646 lemma (in prob_space) kolmogorov_0_1_law:
   647   fixes A :: "nat \<Rightarrow> 'a set set"
   647   fixes A :: "nat \<Rightarrow> 'a set set"
   904     have "{X i -` A \<inter> space M |A. A \<in> E i} \<subseteq> events"
   904     have "{X i -` A \<inter> space M |A. A \<in> E i} \<subseteq> events"
   905       "space M \<in> {X i -` A \<inter> space M |A. A \<in> E i}"
   905       "space M \<in> {X i -` A \<inter> space M |A. A \<in> E i}"
   906       by (auto intro!: exI[of _ "space (M' i)"]) }
   906       by (auto intro!: exI[of _ "space (M' i)"]) }
   907   note indep_sets_finite_X = indep_sets_finite[OF I this]
   907   note indep_sets_finite_X = indep_sets_finite[OF I this]
   908 
   908 
   909   have "(\<forall>A\<in>\<Pi> i\<in>I. {X i -` A \<inter> space M |A. A \<in> E i}. prob (INTER I A) = (\<Prod>j\<in>I. prob (A j))) =
   909   have "(\<forall>A\<in>\<Pi> i\<in>I. {X i -` A \<inter> space M |A. A \<in> E i}. prob (\<Inter>(A ` I)) = (\<Prod>j\<in>I. prob (A j))) =
   910     (\<forall>A\<in>\<Pi> i\<in>I. E i. prob ((\<Inter>j\<in>I. X j -` A j) \<inter> space M) = (\<Prod>x\<in>I. prob (X x -` A x \<inter> space M)))"
   910     (\<forall>A\<in>\<Pi> i\<in>I. E i. prob ((\<Inter>j\<in>I. X j -` A j) \<inter> space M) = (\<Prod>x\<in>I. prob (X x -` A x \<inter> space M)))"
   911     (is "?L = ?R")
   911     (is "?L = ?R")
   912   proof safe
   912   proof safe
   913     fix A assume ?L and A: "A \<in> (\<Pi> i\<in>I. E i)"
   913     fix A assume ?L and A: "A \<in> (\<Pi> i\<in>I. E i)"
   914     from \<open>?L\<close>[THEN bspec, of "\<lambda>i. X i -` A i \<inter> space M"] A \<open>I \<noteq> {}\<close>
   914     from \<open>?L\<close>[THEN bspec, of "\<lambda>i. X i -` A i \<inter> space M"] A \<open>I \<noteq> {}\<close>
   918     fix A assume ?R and A: "A \<in> (\<Pi> i\<in>I. {X i -` A \<inter> space M |A. A \<in> E i})"
   918     fix A assume ?R and A: "A \<in> (\<Pi> i\<in>I. {X i -` A \<inter> space M |A. A \<in> E i})"
   919     from A have "\<forall>i\<in>I. \<exists>B. A i = X i -` B \<inter> space M \<and> B \<in> E i" by auto
   919     from A have "\<forall>i\<in>I. \<exists>B. A i = X i -` B \<inter> space M \<and> B \<in> E i" by auto
   920     from bchoice[OF this] obtain B where B: "\<forall>i\<in>I. A i = X i -` B i \<inter> space M"
   920     from bchoice[OF this] obtain B where B: "\<forall>i\<in>I. A i = X i -` B i \<inter> space M"
   921       "B \<in> (\<Pi> i\<in>I. E i)" by auto
   921       "B \<in> (\<Pi> i\<in>I. E i)" by auto
   922     from \<open>?R\<close>[THEN bspec, OF B(2)] B(1) \<open>I \<noteq> {}\<close>
   922     from \<open>?R\<close>[THEN bspec, OF B(2)] B(1) \<open>I \<noteq> {}\<close>
   923     show "prob (INTER I A) = (\<Prod>j\<in>I. prob (A j))"
   923     show "prob (\<Inter>(A ` I)) = (\<Prod>j\<in>I. prob (A j))"
   924       by simp
   924       by simp
   925   qed
   925   qed
   926   then show ?thesis using \<open>I \<noteq> {}\<close>
   926   then show ?thesis using \<open>I \<noteq> {}\<close>
   927     by (simp add: rv indep_vars_def indep_sets_X sigma_sets_X indep_sets_finite_X cong: indep_sets_cong)
   927     by (simp add: rv indep_vars_def indep_sets_X sigma_sets_X indep_sets_finite_X cong: indep_sets_cong)
   928 qed
   928 qed