src/HOL/Probability/Independent_Family.thy
changeset 63040 eb4ddd18d635
parent 62975 1d066f6ab25d
child 63626 44ce6b524ff3
equal deleted inserted replaced
63039:1a20fd9cf281 63040:eb4ddd18d635
   130     let ?G = "\<lambda>S i. if i \<in> S then ?F i else F i"
   130     let ?G = "\<lambda>S i. if i \<in> S then ?F i else F i"
   131     assume "finite J" "J \<subseteq> K"
   131     assume "finite J" "J \<subseteq> K"
   132     then have "indep_sets (?G J) K"
   132     then have "indep_sets (?G J) K"
   133     proof induct
   133     proof induct
   134       case (insert j J)
   134       case (insert j J)
   135       moreover def G \<equiv> "?G J"
   135       moreover define G where "G = ?G J"
   136       ultimately have G: "indep_sets G K" "\<And>i. i \<in> K \<Longrightarrow> G i \<subseteq> events" and "j \<in> K"
   136       ultimately have G: "indep_sets G K" "\<And>i. i \<in> K \<Longrightarrow> G i \<subseteq> events" and "j \<in> K"
   137         by (auto simp: indep_sets_def)
   137         by (auto simp: indep_sets_def)
   138       let ?D = "{E\<in>events. indep_sets (G(j := {E})) K }"
   138       let ?D = "{E\<in>events. indep_sets (G(j := {E})) K }"
   139       { fix X assume X: "X \<in> events"
   139       { fix X assume X: "X \<in> events"
   140         assume indep: "\<And>J A. J \<noteq> {} \<Longrightarrow> J \<subseteq> K \<Longrightarrow> finite J \<Longrightarrow> j \<notin> J \<Longrightarrow> (\<forall>i\<in>J. A i \<in> G i)
   140         assume indep: "\<And>J A. J \<noteq> {} \<Longrightarrow> J \<subseteq> K \<Longrightarrow> finite J \<Longrightarrow> j \<notin> J \<Longrightarrow> (\<forall>i\<in>J. A i \<in> G i)
   462           with L(2,3)[OF \<open>j \<in> K\<close>] L(2,3)[OF \<open>k \<in> K\<close>]
   462           with L(2,3)[OF \<open>j \<in> K\<close>] L(2,3)[OF \<open>k \<in> K\<close>]
   463           show False using \<open>l \<in> L k\<close> \<open>l \<in> L j\<close> by auto
   463           show False using \<open>l \<in> L k\<close> \<open>l \<in> L j\<close> by auto
   464         qed }
   464         qed }
   465       note L_inj = this
   465       note L_inj = this
   466 
   466 
   467       def k \<equiv> "\<lambda>l. (SOME k. k \<in> K \<and> l \<in> L k)"
   467       define k where "k l = (SOME k. k \<in> K \<and> l \<in> L k)" for l
   468       { fix x j l assume *: "j \<in> K" "l \<in> L j"
   468       { fix x j l assume *: "j \<in> K" "l \<in> L j"
   469         have "k l = j" unfolding k_def
   469         have "k l = j" unfolding k_def
   470         proof (rule some_equality)
   470         proof (rule some_equality)
   471           fix k assume "k \<in> K \<and> l \<in> L k"
   471           fix k assume "k \<in> K \<and> l \<in> L k"
   472           with * L_inj show "k = j" by auto
   472           with * L_inj show "k = j" by auto
  1263 lemma (in prob_space) indep_vars_nn_integral:
  1263 lemma (in prob_space) indep_vars_nn_integral:
  1264   assumes I: "finite I" "indep_vars (\<lambda>_. borel) X I" "\<And>i \<omega>. i \<in> I \<Longrightarrow> 0 \<le> X i \<omega>"
  1264   assumes I: "finite I" "indep_vars (\<lambda>_. borel) X I" "\<And>i \<omega>. i \<in> I \<Longrightarrow> 0 \<le> X i \<omega>"
  1265   shows "(\<integral>\<^sup>+\<omega>. (\<Prod>i\<in>I. X i \<omega>) \<partial>M) = (\<Prod>i\<in>I. \<integral>\<^sup>+\<omega>. X i \<omega> \<partial>M)"
  1265   shows "(\<integral>\<^sup>+\<omega>. (\<Prod>i\<in>I. X i \<omega>) \<partial>M) = (\<Prod>i\<in>I. \<integral>\<^sup>+\<omega>. X i \<omega> \<partial>M)"
  1266 proof cases
  1266 proof cases
  1267   assume "I \<noteq> {}"
  1267   assume "I \<noteq> {}"
  1268   def Y \<equiv> "\<lambda>i \<omega>. if i \<in> I then X i \<omega> else 0"
  1268   define Y where [abs_def]: "Y i \<omega> = (if i \<in> I then X i \<omega> else 0)" for i \<omega>
  1269   { fix i have "i \<in> I \<Longrightarrow> random_variable borel (X i)"
  1269   { fix i have "i \<in> I \<Longrightarrow> random_variable borel (X i)"
  1270     using I(2) by (cases "i\<in>I") (auto simp: indep_vars_def) }
  1270     using I(2) by (cases "i\<in>I") (auto simp: indep_vars_def) }
  1271   note rv_X = this
  1271   note rv_X = this
  1272 
  1272 
  1273   { fix i have "random_variable borel (Y i)"
  1273   { fix i have "random_variable borel (Y i)"
  1300   assumes I: "finite I" "indep_vars (\<lambda>_. borel) X I" "\<And>i. i \<in> I \<Longrightarrow> integrable M (X i)"
  1300   assumes I: "finite I" "indep_vars (\<lambda>_. borel) X I" "\<And>i. i \<in> I \<Longrightarrow> integrable M (X i)"
  1301   shows indep_vars_lebesgue_integral: "(\<integral>\<omega>. (\<Prod>i\<in>I. X i \<omega>) \<partial>M) = (\<Prod>i\<in>I. \<integral>\<omega>. X i \<omega> \<partial>M)" (is ?eq)
  1301   shows indep_vars_lebesgue_integral: "(\<integral>\<omega>. (\<Prod>i\<in>I. X i \<omega>) \<partial>M) = (\<Prod>i\<in>I. \<integral>\<omega>. X i \<omega> \<partial>M)" (is ?eq)
  1302     and indep_vars_integrable: "integrable M (\<lambda>\<omega>. (\<Prod>i\<in>I. X i \<omega>))" (is ?int)
  1302     and indep_vars_integrable: "integrable M (\<lambda>\<omega>. (\<Prod>i\<in>I. X i \<omega>))" (is ?int)
  1303 proof (induct rule: case_split)
  1303 proof (induct rule: case_split)
  1304   assume "I \<noteq> {}"
  1304   assume "I \<noteq> {}"
  1305   def Y \<equiv> "\<lambda>i \<omega>. if i \<in> I then X i \<omega> else 0"
  1305   define Y where [abs_def]: "Y i \<omega> = (if i \<in> I then X i \<omega> else 0)" for i \<omega>
  1306   { fix i have "i \<in> I \<Longrightarrow> random_variable borel (X i)"
  1306   { fix i have "i \<in> I \<Longrightarrow> random_variable borel (X i)"
  1307     using I(2) by (cases "i\<in>I") (auto simp: indep_vars_def) }
  1307     using I(2) by (cases "i\<in>I") (auto simp: indep_vars_def) }
  1308   note rv_X = this[measurable]
  1308   note rv_X = this[measurable]
  1309 
  1309 
  1310   { fix i have "random_variable borel (Y i)"
  1310   { fix i have "random_variable borel (Y i)"