src/HOL/Probability/Independent_Family.thy
changeset 69325 4b6ddc5989fc
parent 69313 b021008c5397
child 69555 b07ccc6fb13f
equal deleted inserted replaced
69324:39ba40eb2150 69325:4b6ddc5989fc
   609 lemma (in prob_space) indep_vars_cong:
   609 lemma (in prob_space) indep_vars_cong:
   610   "I = J \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> X i = Y i) \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> M' i = N' i) \<Longrightarrow> indep_vars M' X I \<longleftrightarrow> indep_vars N' Y J"
   610   "I = J \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> X i = Y i) \<Longrightarrow> (\<And>i. i \<in> I \<Longrightarrow> M' i = N' i) \<Longrightarrow> indep_vars M' X I \<longleftrightarrow> indep_vars N' Y J"
   611   unfolding indep_vars_def2 by (intro conj_cong indep_sets_cong) auto
   611   unfolding indep_vars_def2 by (intro conj_cong indep_sets_cong) auto
   612 
   612 
   613 definition (in prob_space) tail_events where
   613 definition (in prob_space) tail_events where
   614   "tail_events A = (\<Inter>n. sigma_sets (space M) (UNION {n..} A))"
   614   "tail_events A = (\<Inter>n. sigma_sets (space M) (\<Union> (A ` {n..})))"
   615 
   615 
   616 lemma (in prob_space) tail_events_sets:
   616 lemma (in prob_space) tail_events_sets:
   617   assumes A: "\<And>i::nat. A i \<subseteq> events"
   617   assumes A: "\<And>i::nat. A i \<subseteq> events"
   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> (A ` {n..})))"
   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> (A ` {n..}))" by (auto simp: tail_events_def)
   623   from this[of 0] have "X \<in> sigma_sets (space M) (\<Union>(A ` UNIV))" 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:
   629   assumes "\<And>i::nat. sigma_algebra (space M) (A i)"
   629   assumes "\<And>i::nat. sigma_algebra (space M) (A i)"
   630   shows "sigma_algebra (space M) (tail_events A)"
   630   shows "sigma_algebra (space M) (tail_events A)"
   631   unfolding tail_events_def
   631   unfolding tail_events_def
   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> (A ` {n..})))"
   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> (A ` {n..}))" by auto
   637     from this[of 0] have "X \<in> sigma_sets (space M) (\<Union>(A ` UNIV))" 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>(F ` UNIV)) \<in> sigma_sets (space M) (UNION {n..} A)"
   642     then show "(\<Union>(F ` UNIV)) \<in> sigma_sets (space M) (\<Union> (A ` {n..}))"
   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"