src/HOL/Probability/Independent_Family.thy
changeset 42988 d8f3fc934ff6
parent 42987 73e2d802ea41
child 42989 40adeda9a8d2
equal deleted inserted replaced
42987:73e2d802ea41 42988:d8f3fc934ff6
   117 lemma (in prob_space)
   117 lemma (in prob_space)
   118   assumes indep: "indep_set A B"
   118   assumes indep: "indep_set A B"
   119   shows indep_setD_ev1: "A \<subseteq> events"
   119   shows indep_setD_ev1: "A \<subseteq> events"
   120     and indep_setD_ev2: "B \<subseteq> events"
   120     and indep_setD_ev2: "B \<subseteq> events"
   121   using indep unfolding indep_set_def indep_sets_def UNIV_bool by auto
   121   using indep unfolding indep_set_def indep_sets_def UNIV_bool by auto
   122 
       
   123 lemma dynkin_systemI':
       
   124   assumes 1: "\<And> A. A \<in> sets M \<Longrightarrow> A \<subseteq> space M"
       
   125   assumes empty: "{} \<in> sets M"
       
   126   assumes Diff: "\<And> A. A \<in> sets M \<Longrightarrow> space M - A \<in> sets M"
       
   127   assumes 2: "\<And> A. disjoint_family A \<Longrightarrow> range A \<subseteq> sets M
       
   128           \<Longrightarrow> (\<Union>i::nat. A i) \<in> sets M"
       
   129   shows "dynkin_system M"
       
   130 proof -
       
   131   from Diff[OF empty] have "space M \<in> sets M" by auto
       
   132   from 1 this Diff 2 show ?thesis
       
   133     by (intro dynkin_systemI) auto
       
   134 qed
       
   135 
   122 
   136 lemma (in prob_space) indep_sets_dynkin:
   123 lemma (in prob_space) indep_sets_dynkin:
   137   assumes indep: "indep_sets F I"
   124   assumes indep: "indep_sets F I"
   138   shows "indep_sets (\<lambda>i. sets (dynkin \<lparr> space = space M, sets = F i \<rparr>)) I"
   125   shows "indep_sets (\<lambda>i. sets (dynkin \<lparr> space = space M, sets = F i \<rparr>)) I"
   139     (is "indep_sets ?F I")
   126     (is "indep_sets ?F I")
   712   assumes I: "I \<noteq> {}" "finite I"
   699   assumes I: "I \<noteq> {}" "finite I"
   713     and rv: "\<And>i. i \<in> I \<Longrightarrow> random_variable (sigma (M' i)) (X i)"
   700     and rv: "\<And>i. i \<in> I \<Longrightarrow> random_variable (sigma (M' i)) (X i)"
   714     and Int_stable: "\<And>i. i \<in> I \<Longrightarrow> Int_stable (M' i)"
   701     and Int_stable: "\<And>i. i \<in> I \<Longrightarrow> Int_stable (M' i)"
   715     and space: "\<And>i. i \<in> I \<Longrightarrow> space (M' i) \<in> sets (M' i)"
   702     and space: "\<And>i. i \<in> I \<Longrightarrow> space (M' i) \<in> sets (M' i)"
   716   shows "indep_rv (\<lambda>i. sigma (M' i)) X I \<longleftrightarrow>
   703   shows "indep_rv (\<lambda>i. sigma (M' i)) X I \<longleftrightarrow>
   717     (\<forall>A\<in>(\<Pi> i\<in>I. sets (M' i)). prob (\<Inter>j\<in>I. X j -` A j \<inter> space M) = (\<Prod>j\<in>I. distribution (X j) (A j)))"
   704     (\<forall>A\<in>(\<Pi> i\<in>I. sets (M' i)). prob (\<Inter>j\<in>I. X j -` A j \<inter> space M) = (\<Prod>j\<in>I. prob (X j -` A j \<inter> space M)))"
   718 proof -
   705 proof -
   719   from rv have X: "\<And>i. i \<in> I \<Longrightarrow> X i \<in> space M \<rightarrow> space (M' i)"
   706   from rv have X: "\<And>i. i \<in> I \<Longrightarrow> X i \<in> space M \<rightarrow> space (M' i)"
   720     unfolding measurable_def by simp
   707     unfolding measurable_def by simp
   721 
   708 
   722   { fix i assume "i\<in>I"
   709   { fix i assume "i\<in>I"
   772     from `?R`[THEN bspec, OF B(2)] B(1) `I \<noteq> {}`
   759     from `?R`[THEN bspec, OF B(2)] B(1) `I \<noteq> {}`
   773     show "prob (INTER I A) = (\<Prod>j\<in>I. prob (A j))"
   760     show "prob (INTER I A) = (\<Prod>j\<in>I. prob (A j))"
   774       by simp
   761       by simp
   775   qed
   762   qed
   776   then show ?thesis using `I \<noteq> {}`
   763   then show ?thesis using `I \<noteq> {}`
   777     by (simp add: rv distribution_def indep_rv_def)
   764     by (simp add: rv indep_rv_def)
       
   765 qed
       
   766 
       
   767 lemma (in prob_space) indep_rv_compose:
       
   768   assumes "indep_rv M' X I"
       
   769   assumes rv:
       
   770     "\<And>i. i \<in> I \<Longrightarrow> sigma_algebra (N i)"
       
   771     "\<And>i. i \<in> I \<Longrightarrow> Y i \<in> measurable (M' i) (N i)"
       
   772   shows "indep_rv N (\<lambda>i. Y i \<circ> X i) I"
       
   773   unfolding indep_rv_def
       
   774 proof
       
   775   from rv `indep_rv M' X I`
       
   776   show "\<forall>i\<in>I. random_variable (N i) (Y i \<circ> X i)"
       
   777     by (auto intro!: measurable_comp simp: indep_rv_def)
       
   778 
       
   779   have "indep_sets (\<lambda>i. sigma_sets (space M) {X i -` A \<inter> space M |A. A \<in> sets (M' i)}) I"
       
   780     using `indep_rv M' X I` by (simp add: indep_rv_def)
       
   781   then show "indep_sets (\<lambda>i. sigma_sets (space M) {(Y i \<circ> X i) -` A \<inter> space M |A. A \<in> sets (N i)}) I"
       
   782   proof (rule indep_sets_mono_sets)
       
   783     fix i assume "i \<in> I"
       
   784     with `indep_rv M' X I` have X: "X i \<in> space M \<rightarrow> space (M' i)"
       
   785       unfolding indep_rv_def measurable_def by auto
       
   786     { fix A assume "A \<in> sets (N i)"
       
   787       then have "\<exists>B. (Y i \<circ> X i) -` A \<inter> space M = X i -` B \<inter> space M \<and> B \<in> sets (M' i)"
       
   788         by (intro exI[of _ "Y i -` A \<inter> space (M' i)"])
       
   789            (auto simp: vimage_compose intro!: measurable_sets rv `i \<in> I` funcset_mem[OF X]) }
       
   790     then show "sigma_sets (space M) {(Y i \<circ> X i) -` A \<inter> space M |A. A \<in> sets (N i)} \<subseteq>
       
   791       sigma_sets (space M) {X i -` A \<inter> space M |A. A \<in> sets (M' i)}"
       
   792       by (intro sigma_sets_subseteq) (auto simp: vimage_compose)
       
   793   qed
       
   794 qed
       
   795 
       
   796 lemma (in prob_space) indep_rvD:
       
   797   assumes X: "indep_rv M' X I"
       
   798   assumes I: "I \<noteq> {}" "finite I" "\<And>i. i \<in> I \<Longrightarrow> A i \<in> sets (M' i)"
       
   799   shows "prob (\<Inter>i\<in>I. X i -` A i \<inter> space M) = (\<Prod>i\<in>I. prob (X i -` A i \<inter> space M))"
       
   800 proof (rule indep_setsD)
       
   801   show "indep_sets (\<lambda>i. sigma_sets (space M) {X i -` A \<inter> space M |A. A \<in> sets (M' i)}) I"
       
   802     using X by (auto simp: indep_rv_def)
       
   803   show "I \<subseteq> I" "I \<noteq> {}" "finite I" using I by auto
       
   804   show "\<forall>i\<in>I. X i -` A i \<inter> space M \<in> sigma_sets (space M) {X i -` A \<inter> space M |A. A \<in> sets (M' i)}"
       
   805     using I by (auto intro: sigma_sets.Basic)
       
   806 qed
       
   807 
       
   808 lemma (in prob_space) indep_distribution_eq_measure:
       
   809   assumes I: "I \<noteq> {}" "finite I"
       
   810   assumes rv: "\<And>i. random_variable (M' i) (X i)"
       
   811   shows "indep_rv M' X I \<longleftrightarrow>
       
   812     (\<forall>A\<in>sets (\<Pi>\<^isub>M i\<in>I. (M' i \<lparr> measure := extreal\<circ>distribution (X i) \<rparr>)).
       
   813       distribution (\<lambda>x. \<lambda>i\<in>I. X i x) A =
       
   814       finite_measure.\<mu>' (\<Pi>\<^isub>M i\<in>I. (M' i \<lparr> measure := extreal\<circ>distribution (X i) \<rparr>)) A)"
       
   815     (is "_ \<longleftrightarrow> (\<forall>X\<in>_. distribution ?D X = finite_measure.\<mu>' (Pi\<^isub>M I ?M) X)")
       
   816 proof -
       
   817   interpret M': prob_space "?M i" for i
       
   818     using rv by (rule distribution_prob_space)
       
   819   interpret P: finite_product_prob_space ?M I
       
   820     proof qed fact
       
   821 
       
   822   let ?D' = "(Pi\<^isub>M I ?M) \<lparr> measure := extreal \<circ> distribution ?D \<rparr>"
       
   823   have "random_variable P.P ?D"
       
   824     using `finite I` rv by (intro random_variable_restrict) auto
       
   825   then interpret D: prob_space ?D'
       
   826     by (rule distribution_prob_space)
       
   827 
       
   828   show ?thesis
       
   829   proof (intro iffI ballI)
       
   830     assume "indep_rv M' X I"
       
   831     fix A assume "A \<in> sets P.P"
       
   832     moreover
       
   833     have "D.prob A = P.prob A"
       
   834     proof (rule prob_space_unique_Int_stable)
       
   835       show "prob_space ?D'" by default
       
   836       show "prob_space (Pi\<^isub>M I ?M)" by default
       
   837       show "Int_stable P.G" using M'.Int
       
   838         by (intro Int_stable_product_algebra_generator) (simp add: Int_stable_def)
       
   839       show "space P.G \<in> sets P.G"
       
   840         using M'.top by (simp add: product_algebra_generator_def)
       
   841       show "space ?D' = space P.G"  "sets ?D' = sets (sigma P.G)"
       
   842         by (simp_all add: product_algebra_def product_algebra_generator_def sets_sigma)
       
   843       show "space P.P = space P.G" "sets P.P = sets (sigma P.G)"
       
   844         by (simp_all add: product_algebra_def)
       
   845       show "A \<in> sets (sigma P.G)"
       
   846         using `A \<in> sets P.P` by (simp add: product_algebra_def)
       
   847     
       
   848       fix E assume E: "E \<in> sets P.G"
       
   849       then have "E \<in> sets P.P"
       
   850         by (simp add: sets_sigma sigma_sets.Basic product_algebra_def)
       
   851       then have "D.prob E = distribution ?D E"
       
   852         unfolding D.\<mu>'_def by simp
       
   853       also
       
   854       from E obtain F where "E = Pi\<^isub>E I F" and F: "\<And>i. i \<in> I \<Longrightarrow> F i \<in> sets (M' i)"
       
   855         by (auto simp: product_algebra_generator_def)
       
   856       with `I \<noteq> {}` have "distribution ?D E = prob (\<Inter>i\<in>I. X i -` F i \<inter> space M)"
       
   857         using `I \<noteq> {}` by (auto intro!: arg_cong[where f=prob] simp: Pi_iff distribution_def)
       
   858       also have "\<dots> = (\<Prod>i\<in>I. prob (X i -` F i \<inter> space M))"
       
   859         using `indep_rv M' X I` I F by (rule indep_rvD)
       
   860       also have "\<dots> = P.prob E"
       
   861         using F by (simp add: `E = Pi\<^isub>E I F` P.prob_times M'.\<mu>'_def distribution_def)
       
   862       finally show "D.prob E = P.prob E" .
       
   863     qed
       
   864     ultimately show "distribution ?D A = P.prob A"
       
   865       by (simp add: D.\<mu>'_def)
       
   866   next
       
   867     assume eq: "\<forall>A\<in>sets P.P. distribution ?D A = P.prob A"
       
   868     have [simp]: "\<And>i. sigma (M' i) = M' i"
       
   869       using rv by (intro sigma_algebra.sigma_eq) simp
       
   870     have "indep_rv (\<lambda>i. sigma (M' i)) X I"
       
   871     proof (subst indep_rv_finite[OF I])
       
   872       fix i assume [simp]: "i \<in> I"
       
   873       show "random_variable (sigma (M' i)) (X i)"
       
   874         using rv[of i] by simp
       
   875       show "Int_stable (M' i)" "space (M' i) \<in> sets (M' i)"
       
   876         using M'.Int[of _ i] M'.top by (auto simp: Int_stable_def)
       
   877     next
       
   878       show "\<forall>A\<in>\<Pi> i\<in>I. sets (M' i). prob (\<Inter>j\<in>I. X j -` A j \<inter> space M) = (\<Prod>j\<in>I. prob (X j -` A j \<inter> space M))"
       
   879       proof
       
   880         fix A assume A: "A \<in> (\<Pi> i\<in>I. sets (M' i))"
       
   881         then have A_in_P: "(Pi\<^isub>E I A) \<in> sets P.P"
       
   882           by (auto intro!: product_algebraI)
       
   883         have "prob (\<Inter>j\<in>I. X j -` A j \<inter> space M) = distribution ?D (Pi\<^isub>E I A)"
       
   884           using `I \<noteq> {}`by (auto intro!: arg_cong[where f=prob] simp: Pi_iff distribution_def)
       
   885         also have "\<dots> = P.prob (Pi\<^isub>E I A)" using A_in_P eq by simp
       
   886         also have "\<dots> = (\<Prod>i\<in>I. M'.prob i (A i))"
       
   887           using A by (intro P.prob_times) auto
       
   888         also have "\<dots> = (\<Prod>i\<in>I. prob (X i -` A i \<inter> space M))"
       
   889           using A by (auto intro!: setprod_cong simp: M'.\<mu>'_def Pi_iff distribution_def)
       
   890         finally show "prob (\<Inter>j\<in>I. X j -` A j \<inter> space M) = (\<Prod>j\<in>I. prob (X j -` A j \<inter> space M))" .
       
   891       qed
       
   892     qed
       
   893     then show "indep_rv M' X I"
       
   894       by simp
       
   895   qed
   778 qed
   896 qed
   779 
   897 
   780 end
   898 end