188 from Ex_w[OF A(1,2) this J(1-3), of 0] guess w0 .. note w0 = this |
188 from Ex_w[OF A(1,2) this J(1-3), of 0] guess w0 .. note w0 = this |
189 |
189 |
190 let ?P = |
190 let ?P = |
191 "\<lambda>k wk w. w \<in> space (Pi\<^sub>M (J (Suc k)) M) \<and> restrict w (J k) = wk \<and> |
191 "\<lambda>k wk w. w \<in> space (Pi\<^sub>M (J (Suc k)) M) \<and> restrict w (J k) = wk \<and> |
192 (\<forall>n. ?a / 2 ^ (Suc k + 1) \<le> ?q (Suc k) n w)" |
192 (\<forall>n. ?a / 2 ^ (Suc k + 1) \<le> ?q (Suc k) n w)" |
193 def w \<equiv> "nat_rec w0 (\<lambda>k wk. Eps (?P k wk))" |
193 def w \<equiv> "rec_nat w0 (\<lambda>k wk. Eps (?P k wk))" |
194 |
194 |
195 { fix k have w: "w k \<in> space (Pi\<^sub>M (J k) M) \<and> |
195 { fix k have w: "w k \<in> space (Pi\<^sub>M (J k) M) \<and> |
196 (\<forall>n. ?a / 2 ^ (k + 1) \<le> ?q k n (w k)) \<and> (k \<noteq> 0 \<longrightarrow> restrict (w k) (J (k - 1)) = w (k - 1))" |
196 (\<forall>n. ?a / 2 ^ (k + 1) \<le> ?q k n (w k)) \<and> (k \<noteq> 0 \<longrightarrow> restrict (w k) (J (k - 1)) = w (k - 1))" |
197 proof (induct k) |
197 proof (induct k) |
198 case 0 with w0 show ?case |
198 case 0 with w0 show ?case |
199 unfolding w_def nat_rec_0 by auto |
199 unfolding w_def rec_nat_0 by auto |
200 next |
200 next |
201 case (Suc k) |
201 case (Suc k) |
202 then have wk: "w k \<in> space (Pi\<^sub>M (J k) M)" by auto |
202 then have wk: "w k \<in> space (Pi\<^sub>M (J k) M)" by auto |
203 have "\<exists>w'. ?P k (w k) w'" |
203 have "\<exists>w'. ?P k (w k) w'" |
204 proof cases |
204 proof cases |
239 using w' J_mono[of k "Suc k"] wk unfolding * |
239 using w' J_mono[of k "Suc k"] wk unfolding * |
240 by (intro exI[of _ ?w]) |
240 by (intro exI[of _ ?w]) |
241 (auto split: split_merge intro!: extensional_merge_sub ext simp: space_PiM PiE_iff) |
241 (auto split: split_merge intro!: extensional_merge_sub ext simp: space_PiM PiE_iff) |
242 qed |
242 qed |
243 then have "?P k (w k) (w (Suc k))" |
243 then have "?P k (w k) (w (Suc k))" |
244 unfolding w_def nat_rec_Suc unfolding w_def[symmetric] |
244 unfolding w_def rec_nat_Suc unfolding w_def[symmetric] |
245 by (rule someI_ex) |
245 by (rule someI_ex) |
246 then show ?case by auto |
246 then show ?case by auto |
247 qed |
247 qed |
248 moreover |
248 moreover |
249 from w have "w k \<in> space (Pi\<^sub>M (J k) M)" by auto |
249 from w have "w k \<in> space (Pi\<^sub>M (J k) M)" by auto |
478 using measurable_compose[OF measurable_Pair[OF f g] measurable_comb_seq] by simp |
478 using measurable_compose[OF measurable_Pair[OF f g] measurable_comb_seq] by simp |
479 |
479 |
480 lemma comb_seq_0: "comb_seq 0 \<omega> \<omega>' = \<omega>'" |
480 lemma comb_seq_0: "comb_seq 0 \<omega> \<omega>' = \<omega>'" |
481 by (auto simp add: comb_seq_def) |
481 by (auto simp add: comb_seq_def) |
482 |
482 |
483 lemma comb_seq_Suc: "comb_seq (Suc n) \<omega> \<omega>' = comb_seq n \<omega> (nat_case (\<omega> n) \<omega>')" |
483 lemma comb_seq_Suc: "comb_seq (Suc n) \<omega> \<omega>' = comb_seq n \<omega> (case_nat (\<omega> n) \<omega>')" |
484 by (auto simp add: comb_seq_def not_less less_Suc_eq le_imp_diff_is_add intro!: ext split: nat.split) |
484 by (auto simp add: comb_seq_def not_less less_Suc_eq le_imp_diff_is_add intro!: ext split: nat.split) |
485 |
485 |
486 lemma comb_seq_Suc_0[simp]: "comb_seq (Suc 0) \<omega> = nat_case (\<omega> 0)" |
486 lemma comb_seq_Suc_0[simp]: "comb_seq (Suc 0) \<omega> = case_nat (\<omega> 0)" |
487 by (intro ext) (simp add: comb_seq_Suc comb_seq_0) |
487 by (intro ext) (simp add: comb_seq_Suc comb_seq_0) |
488 |
488 |
489 lemma comb_seq_less: "i < n \<Longrightarrow> comb_seq n \<omega> \<omega>' i = \<omega> i" |
489 lemma comb_seq_less: "i < n \<Longrightarrow> comb_seq n \<omega> \<omega>' i = \<omega> i" |
490 by (auto split: split_comb_seq) |
490 by (auto split: split_comb_seq) |
491 |
491 |
492 lemma comb_seq_add: "comb_seq n \<omega> \<omega>' (i + n) = \<omega>' i" |
492 lemma comb_seq_add: "comb_seq n \<omega> \<omega>' (i + n) = \<omega>' i" |
493 by (auto split: nat.split split_comb_seq) |
493 by (auto split: nat.split split_comb_seq) |
494 |
494 |
495 lemma nat_case_comb_seq: "nat_case s' (comb_seq n \<omega> \<omega>') (i + n) = nat_case (nat_case s' \<omega> n) \<omega>' i" |
495 lemma case_nat_comb_seq: "case_nat s' (comb_seq n \<omega> \<omega>') (i + n) = case_nat (case_nat s' \<omega> n) \<omega>' i" |
496 by (auto split: nat.split split_comb_seq) |
496 by (auto split: nat.split split_comb_seq) |
497 |
497 |
498 lemma nat_case_comb_seq': |
498 lemma case_nat_comb_seq': |
499 "nat_case s (comb_seq i \<omega> \<omega>') = comb_seq (Suc i) (nat_case s \<omega>) \<omega>'" |
499 "case_nat s (comb_seq i \<omega> \<omega>') = comb_seq (Suc i) (case_nat s \<omega>) \<omega>'" |
500 by (auto split: split_comb_seq nat.split) |
500 by (auto split: split_comb_seq nat.split) |
501 |
501 |
502 locale sequence_space = product_prob_space "\<lambda>i. M" "UNIV :: nat set" for M |
502 locale sequence_space = product_prob_space "\<lambda>i. M" "UNIV :: nat set" for M |
503 begin |
503 begin |
504 |
504 |
568 by (subst mult_commute) (auto simp: J setprod_subset_diff[symmetric]) |
568 by (subst mult_commute) (auto simp: J setprod_subset_diff[symmetric]) |
569 finally show "emeasure ?D ?X = (\<Prod>j\<in>J. emeasure M (E j))" . |
569 finally show "emeasure ?D ?X = (\<Prod>j\<in>J. emeasure M (E j))" . |
570 qed simp_all |
570 qed simp_all |
571 |
571 |
572 lemma PiM_iter: |
572 lemma PiM_iter: |
573 "distr (M \<Otimes>\<^sub>M S) S (\<lambda>(s, \<omega>). nat_case s \<omega>) = S" (is "?D = _") |
573 "distr (M \<Otimes>\<^sub>M S) S (\<lambda>(s, \<omega>). case_nat s \<omega>) = S" (is "?D = _") |
574 proof (rule PiM_eq) |
574 proof (rule PiM_eq) |
575 let ?I = "UNIV::nat set" and ?M = "\<lambda>n. M" |
575 let ?I = "UNIV::nat set" and ?M = "\<lambda>n. M" |
576 let "distr _ _ ?f" = "?D" |
576 let "distr _ _ ?f" = "?D" |
577 |
577 |
578 fix J E assume J: "finite J" "J \<subseteq> ?I" "\<And>j. j \<in> J \<Longrightarrow> E j \<in> sets M" |
578 fix J E assume J: "finite J" "J \<subseteq> ?I" "\<And>j. j \<in> J \<Longrightarrow> E j \<in> sets M" |