| author | wenzelm | 
| Fri, 12 Jul 2013 16:19:05 +0200 | |
| changeset 52622 | e0ff1625e96d | 
| parent 51351 | dd1dd470690b | 
| child 52681 | 8cc7f76b827a | 
| permissions | -rw-r--r-- | 
| 50091 | 1 | (* Title: HOL/Probability/Projective_Limit.thy | 
| 50088 | 2 | Author: Fabian Immler, TU München | 
| 3 | *) | |
| 4 | ||
| 5 | header {* Projective Limit *}
 | |
| 6 | ||
| 7 | theory Projective_Limit | |
| 8 | imports | |
| 9 | Caratheodory | |
| 10 | Fin_Map | |
| 11 | Regularity | |
| 12 | Projective_Family | |
| 13 | Infinite_Product_Measure | |
| 50971 | 14 | "~~/src/HOL/Library/Diagonal_Subsequence" | 
| 50088 | 15 | begin | 
| 16 | ||
| 17 | subsection {* Sequences of Finite Maps in Compact Sets *}
 | |
| 18 | ||
| 19 | locale finmap_seqs_into_compact = | |
| 20 | fixes K::"nat \<Rightarrow> (nat \<Rightarrow>\<^isub>F 'a::metric_space) set" and f::"nat \<Rightarrow> (nat \<Rightarrow>\<^isub>F 'a)" and M | |
| 21 | assumes compact: "\<And>n. compact (K n)" | |
| 22 |   assumes f_in_K: "\<And>n. K n \<noteq> {}"
 | |
| 23 | assumes domain_K: "\<And>n. k \<in> K n \<Longrightarrow> domain k = domain (f n)" | |
| 24 | assumes proj_in_K: | |
| 25 | "\<And>t n m. m \<ge> n \<Longrightarrow> t \<in> domain (f n) \<Longrightarrow> (f m)\<^isub>F t \<in> (\<lambda>k. (k)\<^isub>F t) ` K n" | |
| 26 | begin | |
| 27 | ||
| 28 | lemma proj_in_K': "(\<exists>n. \<forall>m \<ge> n. (f m)\<^isub>F t \<in> (\<lambda>k. (k)\<^isub>F t) ` K n)" | |
| 29 | using proj_in_K f_in_K | |
| 30 | proof cases | |
| 31 | obtain k where "k \<in> K (Suc 0)" using f_in_K by auto | |
| 32 | assume "\<forall>n. t \<notin> domain (f n)" | |
| 33 | thus ?thesis | |
| 34 | by (auto intro!: exI[where x=1] image_eqI[OF _ `k \<in> K (Suc 0)`] | |
| 35 | simp: domain_K[OF `k \<in> K (Suc 0)`]) | |
| 36 | qed blast | |
| 37 | ||
| 38 | lemma proj_in_KE: | |
| 39 | obtains n where "\<And>m. m \<ge> n \<Longrightarrow> (f m)\<^isub>F t \<in> (\<lambda>k. (k)\<^isub>F t) ` K n" | |
| 40 | using proj_in_K' by blast | |
| 41 | ||
| 42 | lemma compact_projset: | |
| 43 | shows "compact ((\<lambda>k. (k)\<^isub>F i) ` K n)" | |
| 44 | using continuous_proj compact by (rule compact_continuous_image) | |
| 45 | ||
| 46 | end | |
| 47 | ||
| 48 | lemma compactE': | |
| 50884 
2b21b4e2d7cb
differentiate (cover) compactness and sequential compactness
 hoelzl parents: 
50252diff
changeset | 49 | fixes S :: "'a :: metric_space set" | 
| 50088 | 50 | assumes "compact S" "\<forall>n\<ge>m. f n \<in> S" | 
| 51 | obtains l r where "l \<in> S" "subseq r" "((f \<circ> r) ---> l) sequentially" | |
| 52 | proof atomize_elim | |
| 53 | have "subseq (op + m)" by (simp add: subseq_def) | |
| 54 | have "\<forall>n. (f o (\<lambda>i. m + i)) n \<in> S" using assms by auto | |
| 50884 
2b21b4e2d7cb
differentiate (cover) compactness and sequential compactness
 hoelzl parents: 
50252diff
changeset | 55 | from seq_compactE[OF `compact S`[unfolded compact_eq_seq_compact_metric] this] guess l r . | 
| 50088 | 56 | hence "l \<in> S" "subseq ((\<lambda>i. m + i) o r) \<and> (f \<circ> ((\<lambda>i. m + i) o r)) ----> l" | 
| 57 | using subseq_o[OF `subseq (op + m)` `subseq r`] by (auto simp: o_def) | |
| 58 | thus "\<exists>l r. l \<in> S \<and> subseq r \<and> (f \<circ> r) ----> l" by blast | |
| 59 | qed | |
| 60 | ||
| 61 | sublocale finmap_seqs_into_compact \<subseteq> subseqs "\<lambda>n s. (\<exists>l. (\<lambda>i. ((f o s) i)\<^isub>F n) ----> l)" | |
| 62 | proof | |
| 63 | fix n s | |
| 64 | assume "subseq s" | |
| 65 | from proj_in_KE[of n] guess n0 . note n0 = this | |
| 66 | have "\<forall>i \<ge> n0. ((f \<circ> s) i)\<^isub>F n \<in> (\<lambda>k. (k)\<^isub>F n) ` K n0" | |
| 67 | proof safe | |
| 68 | fix i assume "n0 \<le> i" | |
| 69 | also have "\<dots> \<le> s i" by (rule seq_suble) fact | |
| 70 | finally have "n0 \<le> s i" . | |
| 71 | with n0 show "((f \<circ> s) i)\<^isub>F n \<in> (\<lambda>k. (k)\<^isub>F n) ` K n0 " | |
| 72 | by auto | |
| 73 | qed | |
| 74 | from compactE'[OF compact_projset this] guess ls rs . | |
| 75 | thus "\<exists>r'. subseq r' \<and> (\<exists>l. (\<lambda>i. ((f \<circ> (s \<circ> r')) i)\<^isub>F n) ----> l)" by (auto simp: o_def) | |
| 76 | qed | |
| 77 | ||
| 50125 
4319691be975
tuned: use induction rule sigma_sets_induct_disjoint
 hoelzl parents: 
50124diff
changeset | 78 | lemma (in finmap_seqs_into_compact) diagonal_tendsto: "\<exists>l. (\<lambda>i. (f (diagseq i))\<^isub>F n) ----> l" | 
| 50088 | 79 | proof - | 
| 80 | have "\<And>i n0. (f o seqseq i) i = f (diagseq i)" unfolding diagseq_def by simp | |
| 81 | from reducer_reduces obtain l where l: "(\<lambda>i. ((f \<circ> seqseq (Suc n)) i)\<^isub>F n) ----> l" | |
| 82 | unfolding seqseq_reducer | |
| 83 | by auto | |
| 84 | have "(\<lambda>i. (f (diagseq (i + Suc n)))\<^isub>F n) = | |
| 85 | (\<lambda>i. ((f o (diagseq o (op + (Suc n)))) i)\<^isub>F n)" by (simp add: add_commute) | |
| 86 | also have "\<dots> = | |
| 87 | (\<lambda>i. ((f o ((seqseq (Suc n) o (\<lambda>x. fold_reduce (Suc n) x (Suc n + x))))) i)\<^isub>F n)" | |
| 88 | unfolding diagseq_seqseq by simp | |
| 89 | also have "\<dots> = (\<lambda>i. ((f o ((seqseq (Suc n)))) i)\<^isub>F n) o (\<lambda>x. fold_reduce (Suc n) x (Suc n + x))" | |
| 90 | by (simp add: o_def) | |
| 91 | also have "\<dots> ----> l" | |
| 92 | proof (rule LIMSEQ_subseq_LIMSEQ[OF _ subseq_diagonal_rest], rule tendstoI) | |
| 93 | fix e::real assume "0 < e" | |
| 94 | from tendstoD[OF l `0 < e`] | |
| 95 | show "eventually (\<lambda>x. dist (((f \<circ> seqseq (Suc n)) x)\<^isub>F n) l < e) | |
| 96 | sequentially" . | |
| 97 | qed | |
| 98 | finally show ?thesis by (intro exI) (rule LIMSEQ_offset) | |
| 99 | qed | |
| 100 | ||
| 101 | subsection {* Daniell-Kolmogorov Theorem *}
 | |
| 102 | ||
| 103 | text {* Existence of Projective Limit *}
 | |
| 104 | ||
| 105 | locale polish_projective = projective_family I P "\<lambda>_. borel::'a::polish_space measure" | |
| 106 | for I::"'i set" and P | |
| 107 | begin | |
| 108 | ||
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 109 | abbreviation "lim\<^isub>B \<equiv> (\<lambda>J P. limP J (\<lambda>_. borel) P)" | 
| 50088 | 110 | |
| 50125 
4319691be975
tuned: use induction rule sigma_sets_induct_disjoint
 hoelzl parents: 
50124diff
changeset | 111 | lemma emeasure_limB_emb_not_empty: | 
| 50088 | 112 |   assumes "I \<noteq> {}"
 | 
| 113 |   assumes X: "J \<noteq> {}" "J \<subseteq> I" "finite J" "\<forall>i\<in>J. B i \<in> sets borel"
 | |
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 114 | shows "emeasure (lim\<^isub>B I P) (emb I J (Pi\<^isub>E J B)) = emeasure (lim\<^isub>B J P) (Pi\<^isub>E J B)" | 
| 50088 | 115 | proof - | 
| 116 | let ?\<Omega> = "\<Pi>\<^isub>E i\<in>I. space borel" | |
| 117 | let ?G = generator | |
| 118 | interpret G!: algebra ?\<Omega> generator by (intro algebra_generator) fact | |
| 50252 | 119 | note mu_G_mono = | 
| 120 |     G.additive_increasing[OF positive_mu_G[OF `I \<noteq> {}`] additive_mu_G[OF `I \<noteq> {}`],
 | |
| 121 | THEN increasingD] | |
| 122 |   write mu_G  ("\<mu>G")
 | |
| 123 | ||
| 50088 | 124 | have "\<exists>\<mu>. (\<forall>s\<in>?G. \<mu> s = \<mu>G s) \<and> measure_space ?\<Omega> (sigma_sets ?\<Omega> ?G) \<mu>" | 
| 50252 | 125 | proof (rule G.caratheodory_empty_continuous[OF positive_mu_G additive_mu_G, | 
| 50088 | 126 |       OF `I \<noteq> {}`, OF `I \<noteq> {}`])
 | 
| 127 | fix A assume "A \<in> ?G" | |
| 128 | with generatorE guess J X . note JX = this | |
| 50101 
a3bede207a04
renamed prob_space to proj_prob_space as it clashed with Probability_Measure.prob_space
 hoelzl parents: 
50095diff
changeset | 129 | interpret prob_space "P J" using proj_prob_space[OF `finite J`] . | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 130 | show "\<mu>G A \<noteq> \<infinity>" using JX by (simp add: limP_finite) | 
| 50088 | 131 | next | 
| 132 |     fix Z assume Z: "range Z \<subseteq> ?G" "decseq Z" "(\<Inter>i. Z i) = {}"
 | |
| 133 | then have "decseq (\<lambda>i. \<mu>G (Z i))" | |
| 50252 | 134 | by (auto intro!: mu_G_mono simp: decseq_def) | 
| 50088 | 135 | moreover | 
| 136 | have "(INF i. \<mu>G (Z i)) = 0" | |
| 137 | proof (rule ccontr) | |
| 138 | assume "(INF i. \<mu>G (Z i)) \<noteq> 0" (is "?a \<noteq> 0") | |
| 139 | moreover have "0 \<le> ?a" | |
| 50252 | 140 |         using Z positive_mu_G[OF `I \<noteq> {}`] by (auto intro!: INF_greatest simp: positive_def)
 | 
| 50088 | 141 | ultimately have "0 < ?a" by auto | 
| 142 | hence "?a \<noteq> -\<infinity>" by auto | |
| 143 |       have "\<forall>n. \<exists>J B. J \<noteq> {} \<and> finite J \<and> J \<subseteq> I \<and> B \<in> sets (Pi\<^isub>M J (\<lambda>_. borel)) \<and>
 | |
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 144 | Z n = emb I J B \<and> \<mu>G (Z n) = emeasure (lim\<^isub>B J P) B" | 
| 50088 | 145 | using Z by (intro allI generator_Ex) auto | 
| 146 |       then obtain J' B' where J': "\<And>n. J' n \<noteq> {}" "\<And>n. finite (J' n)" "\<And>n. J' n \<subseteq> I"
 | |
| 147 | "\<And>n. B' n \<in> sets (\<Pi>\<^isub>M i\<in>J' n. borel)" | |
| 148 | and Z_emb: "\<And>n. Z n = emb I (J' n) (B' n)" | |
| 149 | unfolding choice_iff by blast | |
| 150 | moreover def J \<equiv> "\<lambda>n. (\<Union>i\<le>n. J' i)" | |
| 151 | moreover def B \<equiv> "\<lambda>n. emb (J n) (J' n) (B' n)" | |
| 152 |       ultimately have J: "\<And>n. J n \<noteq> {}" "\<And>n. finite (J n)" "\<And>n. J n \<subseteq> I"
 | |
| 153 | "\<And>n. B n \<in> sets (\<Pi>\<^isub>M i\<in>J n. borel)" | |
| 154 | by auto | |
| 155 | have J_mono: "\<And>n m. n \<le> m \<Longrightarrow> J n \<subseteq> J m" | |
| 156 | unfolding J_def by force | |
| 157 | have "\<forall>n. \<exists>j. j \<in> J n" using J by blast | |
| 158 | then obtain j where j: "\<And>n. j n \<in> J n" | |
| 159 | unfolding choice_iff by blast | |
| 160 | note [simp] = `\<And>n. finite (J n)` | |
| 161 | from J Z_emb have Z_eq: "\<And>n. Z n = emb I (J n) (B n)" "\<And>n. Z n \<in> ?G" | |
| 162 | unfolding J_def B_def by (subst prod_emb_trans) (insert Z, auto) | |
| 50101 
a3bede207a04
renamed prob_space to proj_prob_space as it clashed with Probability_Measure.prob_space
 hoelzl parents: 
50095diff
changeset | 163 | interpret prob_space "P (J i)" for i using proj_prob_space by simp | 
| 50088 | 164 | have "?a \<le> \<mu>G (Z 0)" by (auto intro: INF_lower) | 
| 50252 | 165 | also have "\<dots> < \<infinity>" using J by (auto simp: Z_eq mu_G_eq limP_finite proj_sets) | 
| 50088 | 166 | finally have "?a \<noteq> \<infinity>" by simp | 
| 167 | have "\<And>n. \<bar>\<mu>G (Z n)\<bar> \<noteq> \<infinity>" unfolding Z_eq using J J_mono | |
| 50252 | 168 | by (subst mu_G_eq) (auto simp: limP_finite proj_sets mu_G_eq) | 
| 50088 | 169 | |
| 50243 | 170 | have countable_UN_J: "countable (\<Union>n. J n)" by (simp add: countable_finite) | 
| 171 | def Utn \<equiv> "to_nat_on (\<Union>n. J n)" | |
| 172 | interpret function_to_finmap "J n" Utn "from_nat_into (\<Union>n. J n)" for n | |
| 173 | by unfold_locales (auto simp: Utn_def intro: from_nat_into_to_nat_on[OF countable_UN_J]) | |
| 174 | have inj_on_Utn: "inj_on Utn (\<Union>n. J n)" | |
| 175 | unfolding Utn_def using countable_UN_J by (rule inj_on_to_nat_on) | |
| 176 | hence inj_on_Utn_J: "\<And>n. inj_on Utn (J n)" by (rule subset_inj_on) auto | |
| 50088 | 177 | def P' \<equiv> "\<lambda>n. mapmeasure n (P (J n)) (\<lambda>_. borel)" | 
| 178 |       let ?SUP = "\<lambda>n. SUP K : {K. K \<subseteq> fm n ` (B n) \<and> compact K}. emeasure (P' n) K"
 | |
| 179 |       {
 | |
| 180 | fix n | |
| 181 | interpret finite_measure "P (J n)" by unfold_locales | |
| 182 | have "emeasure (P (J n)) (B n) = emeasure (P' n) (fm n ` (B n))" | |
| 183 | using J by (auto simp: P'_def mapmeasure_PiM proj_space proj_sets) | |
| 184 | also | |
| 185 | have "\<dots> = ?SUP n" | |
| 186 | proof (rule inner_regular) | |
| 187 | show "emeasure (P' n) (space (P' n)) \<noteq> \<infinity>" | |
| 188 | unfolding P'_def | |
| 189 | by (auto simp: P'_def mapmeasure_PiF fm_measurable proj_space proj_sets) | |
| 190 | show "sets (P' n) = sets borel" by (simp add: borel_eq_PiF_borel P'_def) | |
| 191 | next | |
| 192 | show "fm n ` B n \<in> sets borel" | |
| 193 | unfolding borel_eq_PiF_borel | |
| 194 | by (auto simp del: J(2) simp: P'_def fm_image_measurable_finite proj_sets J) | |
| 195 | qed | |
| 196 | finally | |
| 197 | have "emeasure (P (J n)) (B n) = ?SUP n" "?SUP n \<noteq> \<infinity>" "?SUP n \<noteq> - \<infinity>" by auto | |
| 198 | } note R = this | |
| 199 | have "\<forall>n. \<exists>K. emeasure (P (J n)) (B n) - emeasure (P' n) K \<le> 2 powr (-n) * ?a | |
| 200 | \<and> compact K \<and> K \<subseteq> fm n ` B n" | |
| 201 | proof | |
| 202 | fix n | |
| 203 | have "emeasure (P' n) (space (P' n)) \<noteq> \<infinity>" | |
| 204 | by (simp add: mapmeasure_PiF P'_def proj_space proj_sets) | |
| 205 | then interpret finite_measure "P' n" .. | |
| 206 | show "\<exists>K. emeasure (P (J n)) (B n) - emeasure (P' n) K \<le> ereal (2 powr - real n) * ?a \<and> | |
| 207 | compact K \<and> K \<subseteq> fm n ` B n" | |
| 208 | unfolding R | |
| 209 | proof (rule ccontr) | |
| 210 | assume H: "\<not> (\<exists>K'. ?SUP n - emeasure (P' n) K' \<le> ereal (2 powr - real n) * ?a \<and> | |
| 211 | compact K' \<and> K' \<subseteq> fm n ` B n)" | |
| 212 | have "?SUP n \<le> ?SUP n - 2 powr (-n) * ?a" | |
| 213 | proof (intro SUP_least) | |
| 214 | fix K | |
| 215 |             assume "K \<in> {K. K \<subseteq> fm n ` B n \<and> compact K}"
 | |
| 216 | with H have "\<not> ?SUP n - emeasure (P' n) K \<le> 2 powr (-n) * ?a" | |
| 217 | by auto | |
| 218 | hence "?SUP n - emeasure (P' n) K > 2 powr (-n) * ?a" | |
| 219 | unfolding not_less[symmetric] by simp | |
| 220 | hence "?SUP n - 2 powr (-n) * ?a > emeasure (P' n) K" | |
| 221 | using `0 < ?a` by (auto simp add: ereal_less_minus_iff ac_simps) | |
| 222 | thus "?SUP n - 2 powr (-n) * ?a \<ge> emeasure (P' n) K" by simp | |
| 223 | qed | |
| 224 | hence "?SUP n + 0 \<le> ?SUP n - (2 powr (-n) * ?a)" using `0 < ?a` by simp | |
| 225 | hence "?SUP n + 0 \<le> ?SUP n + - (2 powr (-n) * ?a)" unfolding minus_ereal_def . | |
| 226 | hence "0 \<le> - (2 powr (-n) * ?a)" | |
| 227 | using `?SUP _ \<noteq> \<infinity>` `?SUP _ \<noteq> - \<infinity>` | |
| 228 | by (subst (asm) ereal_add_le_add_iff) (auto simp:) | |
| 229 | moreover have "ereal (2 powr - real n) * ?a > 0" using `0 < ?a` | |
| 230 | by (auto simp: ereal_zero_less_0_iff) | |
| 231 | ultimately show False by simp | |
| 232 | qed | |
| 233 | qed | |
| 234 | then obtain K' where K': | |
| 235 | "\<And>n. emeasure (P (J n)) (B n) - emeasure (P' n) (K' n) \<le> ereal (2 powr - real n) * ?a" | |
| 236 | "\<And>n. compact (K' n)" "\<And>n. K' n \<subseteq> fm n ` B n" | |
| 237 | unfolding choice_iff by blast | |
| 238 | def K \<equiv> "\<lambda>n. fm n -` K' n \<inter> space (Pi\<^isub>M (J n) (\<lambda>_. borel))" | |
| 239 | have K_sets: "\<And>n. K n \<in> sets (Pi\<^isub>M (J n) (\<lambda>_. borel))" | |
| 240 | unfolding K_def | |
| 241 | using compact_imp_closed[OF `compact (K' _)`] | |
| 242 | by (intro measurable_sets[OF fm_measurable, of _ "Collect finite"]) | |
| 243 | (auto simp: borel_eq_PiF_borel[symmetric]) | |
| 244 | have K_B: "\<And>n. K n \<subseteq> B n" | |
| 245 | proof | |
| 246 | fix x n | |
| 247 | assume "x \<in> K n" hence fm_in: "fm n x \<in> fm n ` B n" | |
| 248 | using K' by (force simp: K_def) | |
| 249 | show "x \<in> B n" | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50243diff
changeset | 250 | using `x \<in> K n` K_sets sets.sets_into_space J[of n] | 
| 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50243diff
changeset | 251 | by (intro inj_on_image_mem_iff[OF inj_on_fm _ fm_in, of "\<lambda>_. borel"]) auto | 
| 50088 | 252 | qed | 
| 253 | def Z' \<equiv> "\<lambda>n. emb I (J n) (K n)" | |
| 254 | have Z': "\<And>n. Z' n \<subseteq> Z n" | |
| 255 | unfolding Z_eq unfolding Z'_def | |
| 256 | proof (rule prod_emb_mono, safe) | |
| 257 | fix n x assume "x \<in> K n" | |
| 258 | hence "fm n x \<in> K' n" "x \<in> space (Pi\<^isub>M (J n) (\<lambda>_. borel))" | |
| 259 | by (simp_all add: K_def proj_space) | |
| 260 | note this(1) | |
| 261 | also have "K' n \<subseteq> fm n ` B n" by (simp add: K') | |
| 262 | finally have "fm n x \<in> fm n ` B n" . | |
| 263 | thus "x \<in> B n" | |
| 264 | proof safe | |
| 265 | fix y assume "y \<in> B n" | |
| 266 | moreover | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50243diff
changeset | 267 | hence "y \<in> space (Pi\<^isub>M (J n) (\<lambda>_. borel))" using J sets.sets_into_space[of "B n" "P (J n)"] | 
| 50088 | 268 | by (auto simp add: proj_space proj_sets) | 
| 269 | assume "fm n x = fm n y" | |
| 270 | note inj_onD[OF inj_on_fm[OF space_borel], | |
| 271 | OF `fm n x = fm n y` `x \<in> space _` `y \<in> space _`] | |
| 272 | ultimately show "x \<in> B n" by simp | |
| 273 | qed | |
| 274 | qed | |
| 275 |       { fix n
 | |
| 276 | have "Z' n \<in> ?G" using K' unfolding Z'_def | |
| 277 | apply (intro generatorI'[OF J(1-3)]) | |
| 278 | unfolding K_def proj_space | |
| 279 | apply (rule measurable_sets[OF fm_measurable[of _ "Collect finite"]]) | |
| 280 | apply (auto simp add: P'_def borel_eq_PiF_borel[symmetric] compact_imp_closed) | |
| 281 | done | |
| 282 | } | |
| 283 |       def Y \<equiv> "\<lambda>n. \<Inter>i\<in>{1..n}. Z' i"
 | |
| 284 | hence "\<And>n k. Y (n + k) \<subseteq> Y n" by (induct_tac k) (auto simp: Y_def) | |
| 285 | hence Y_mono: "\<And>n m. n \<le> m \<Longrightarrow> Y m \<subseteq> Y n" by (auto simp: le_iff_add) | |
| 286 | have Y_Z': "\<And>n. n \<ge> 1 \<Longrightarrow> Y n \<subseteq> Z' n" by (auto simp: Y_def) | |
| 287 | hence Y_Z: "\<And>n. n \<ge> 1 \<Longrightarrow> Y n \<subseteq> Z n" using Z' by auto | |
| 288 |       have Y_notempty: "\<And>n. n \<ge> 1 \<Longrightarrow> (Y n) \<noteq> {}"
 | |
| 289 | proof - | |
| 290 | fix n::nat assume "n \<ge> 1" hence "Y n \<subseteq> Z n" by fact | |
| 291 |         have "Y n = (\<Inter> i\<in>{1..n}. emb I (J n) (emb (J n) (J i) (K i)))" using J J_mono
 | |
| 292 | by (auto simp: Y_def Z'_def) | |
| 293 |         also have "\<dots> = prod_emb I (\<lambda>_. borel) (J n) (\<Inter> i\<in>{1..n}. emb (J n) (J i) (K i))"
 | |
| 294 | using `n \<ge> 1` | |
| 295 | by (subst prod_emb_INT) auto | |
| 296 | finally | |
| 297 | have Y_emb: | |
| 298 | "Y n = prod_emb I (\<lambda>_. borel) (J n) | |
| 299 |             (\<Inter> i\<in>{1..n}. prod_emb (J n) (\<lambda>_. borel) (J i) (K i))" .
 | |
| 300 | hence "Y n \<in> ?G" using J J_mono K_sets `n \<ge> 1` by (intro generatorI[OF _ _ _ _ Y_emb]) auto | |
| 301 | hence "\<bar>\<mu>G (Y n)\<bar> \<noteq> \<infinity>" unfolding Y_emb using J J_mono K_sets `n \<ge> 1` | |
| 50252 | 302 | by (subst mu_G_eq) (auto simp: limP_finite proj_sets mu_G_eq) | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 303 | interpret finite_measure "(limP (J n) (\<lambda>_. borel) P)" | 
| 50088 | 304 | proof | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 305 | have "emeasure (limP (J n) (\<lambda>_. borel) P) (J n \<rightarrow>\<^isub>E space borel) \<noteq> \<infinity>" | 
| 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 306 | using J by (subst emeasure_limP) auto | 
| 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 307 | thus "emeasure (limP (J n) (\<lambda>_. borel) P) (space (limP (J n) (\<lambda>_. borel) P)) \<noteq> \<infinity>" | 
| 50088 | 308 | by (simp add: space_PiM) | 
| 309 | qed | |
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 310 | have "\<mu>G (Z n) = limP (J n) (\<lambda>_. borel) P (B n)" | 
| 50252 | 311 | unfolding Z_eq using J by (auto simp: mu_G_eq) | 
| 50088 | 312 | moreover have "\<mu>G (Y n) = | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 313 |           limP (J n) (\<lambda>_. borel) P (\<Inter>i\<in>{Suc 0..n}. prod_emb (J n) (\<lambda>_. borel) (J i) (K i))"
 | 
| 50252 | 314 | unfolding Y_emb using J J_mono K_sets `n \<ge> 1` by (subst mu_G_eq) auto | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 315 | moreover have "\<mu>G (Z n - Y n) = limP (J n) (\<lambda>_. borel) P | 
| 50088 | 316 |           (B n - (\<Inter>i\<in>{Suc 0..n}. prod_emb (J n) (\<lambda>_. borel) (J i) (K i)))"
 | 
| 317 | unfolding Z_eq Y_emb prod_emb_Diff[symmetric] using J J_mono K_sets `n \<ge> 1` | |
| 50252 | 318 | by (subst mu_G_eq) (auto intro!: sets.Diff) | 
| 50088 | 319 | ultimately | 
| 320 | have "\<mu>G (Z n) - \<mu>G (Y n) = \<mu>G (Z n - Y n)" | |
| 321 | using J J_mono K_sets `n \<ge> 1` | |
| 322 | by (simp only: emeasure_eq_measure) | |
| 323 | (auto dest!: bspec[where x=n] | |
| 324 | simp: extensional_restrict emeasure_eq_measure prod_emb_iff | |
| 325 | intro!: measure_Diff[symmetric] set_mp[OF K_B]) | |
| 326 |         also have subs: "Z n - Y n \<subseteq> (\<Union> i\<in>{1..n}. (Z i - Z' i))" using Z' Z `n \<ge> 1`
 | |
| 327 | unfolding Y_def by (force simp: decseq_def) | |
| 328 |         have "Z n - Y n \<in> ?G" "(\<Union> i\<in>{1..n}. (Z i - Z' i)) \<in> ?G"
 | |
| 329 | using `Z' _ \<in> ?G` `Z _ \<in> ?G` `Y _ \<in> ?G` by auto | |
| 330 |         hence "\<mu>G (Z n - Y n) \<le> \<mu>G (\<Union> i\<in>{1..n}. (Z i - Z' i))"
 | |
| 50252 | 331 |           using subs G.additive_increasing[OF positive_mu_G[OF `I \<noteq> {}`] additive_mu_G[OF `I \<noteq> {}`]]
 | 
| 50088 | 332 | unfolding increasing_def by auto | 
| 333 |         also have "\<dots> \<le> (\<Sum> i\<in>{1..n}. \<mu>G (Z i - Z' i))" using `Z _ \<in> ?G` `Z' _ \<in> ?G`
 | |
| 50252 | 334 |           by (intro G.subadditive[OF positive_mu_G additive_mu_G, OF `I \<noteq> {}` `I \<noteq> {}`]) auto
 | 
| 50088 | 335 |         also have "\<dots> \<le> (\<Sum> i\<in>{1..n}. 2 powr -real i * ?a)"
 | 
| 336 | proof (rule setsum_mono) | |
| 337 |           fix i assume "i \<in> {1..n}" hence "i \<le> n" by simp
 | |
| 338 | have "\<mu>G (Z i - Z' i) = \<mu>G (prod_emb I (\<lambda>_. borel) (J i) (B i - K i))" | |
| 339 | unfolding Z'_def Z_eq by simp | |
| 340 | also have "\<dots> = P (J i) (B i - K i)" | |
| 50252 | 341 | apply (subst mu_G_eq) using J K_sets apply auto | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 342 | apply (subst limP_finite) apply auto | 
| 50088 | 343 | done | 
| 344 | also have "\<dots> = P (J i) (B i) - P (J i) (K i)" | |
| 345 | apply (subst emeasure_Diff) using K_sets J `K _ \<subseteq> B _` apply (auto simp: proj_sets) | |
| 346 | done | |
| 347 | also have "\<dots> = P (J i) (B i) - P' i (K' i)" | |
| 348 | unfolding K_def P'_def | |
| 349 | by (auto simp: mapmeasure_PiF proj_space proj_sets borel_eq_PiF_borel[symmetric] | |
| 50123 
69b35a75caf3
merge extensional dependent function space from FuncSet with the one in Finite_Product_Measure
 hoelzl parents: 
50101diff
changeset | 350 | compact_imp_closed[OF `compact (K' _)`] space_PiM PiE_def) | 
| 50088 | 351 | also have "\<dots> \<le> ereal (2 powr - real i) * ?a" using K'(1)[of i] . | 
| 352 | finally show "\<mu>G (Z i - Z' i) \<le> (2 powr - real i) * ?a" . | |
| 353 | qed | |
| 354 |         also have "\<dots> = (\<Sum> i\<in>{1..n}. ereal (2 powr -real i) * ereal(real ?a))"
 | |
| 355 | using `?a \<noteq> \<infinity>` `?a \<noteq> - \<infinity>` by (subst ereal_real') auto | |
| 356 |         also have "\<dots> = ereal (\<Sum> i\<in>{1..n}. (2 powr -real i) * (real ?a))" by simp
 | |
| 357 |         also have "\<dots> = ereal ((\<Sum> i\<in>{1..n}. (2 powr -real i)) * real ?a)"
 | |
| 358 | by (simp add: setsum_left_distrib) | |
| 359 | also have "\<dots> < ereal (1 * real ?a)" unfolding less_ereal.simps | |
| 360 | proof (rule mult_strict_right_mono) | |
| 361 |           have "(\<Sum>i\<in>{1..n}. 2 powr - real i) = (\<Sum>i\<in>{1..<Suc n}. (1/2) ^ i)"
 | |
| 362 | by (rule setsum_cong) | |
| 363 | (auto simp: powr_realpow[symmetric] powr_minus powr_divide inverse_eq_divide) | |
| 364 |           also have "{1..<Suc n} = {0..<Suc n} - {0}" by auto
 | |
| 365 |           also have "setsum (op ^ (1 / 2::real)) ({0..<Suc n} - {0}) =
 | |
| 366 |             setsum (op ^ (1 / 2)) ({0..<Suc n}) - 1" by (auto simp: setsum_diff1)
 | |
| 367 | also have "\<dots> < 1" by (subst sumr_geometric) auto | |
| 368 | finally show "(\<Sum>i = 1..n. 2 powr - real i) < 1" . | |
| 369 | qed (auto simp: | |
| 370 | `0 < ?a` `?a \<noteq> \<infinity>` `?a \<noteq> - \<infinity>` ereal_less_real_iff zero_ereal_def[symmetric]) | |
| 371 | also have "\<dots> = ?a" using `0 < ?a` `?a \<noteq> \<infinity>` by (auto simp: ereal_real') | |
| 372 | also have "\<dots> \<le> \<mu>G (Z n)" by (auto intro: INF_lower) | |
| 373 | finally have "\<mu>G (Z n) - \<mu>G (Y n) < \<mu>G (Z n)" . | |
| 374 | hence R: "\<mu>G (Z n) < \<mu>G (Z n) + \<mu>G (Y n)" | |
| 375 | using `\<bar>\<mu>G (Y n)\<bar> \<noteq> \<infinity>` by (simp add: ereal_minus_less) | |
| 376 | have "0 \<le> (- \<mu>G (Z n)) + \<mu>G (Z n)" using `\<bar>\<mu>G (Z n)\<bar> \<noteq> \<infinity>` by auto | |
| 377 | also have "\<dots> < (- \<mu>G (Z n)) + (\<mu>G (Z n) + \<mu>G (Y n))" | |
| 378 | apply (rule ereal_less_add[OF _ R]) using `\<bar>\<mu>G (Z n)\<bar> \<noteq> \<infinity>` by auto | |
| 379 | finally have "\<mu>G (Y n) > 0" | |
| 380 | using `\<bar>\<mu>G (Z n)\<bar> \<noteq> \<infinity>` by (auto simp: ac_simps zero_ereal_def[symmetric]) | |
| 50252 | 381 |         thus "Y n \<noteq> {}" using positive_mu_G `I \<noteq> {}` by (auto simp add: positive_def)
 | 
| 50088 | 382 | qed | 
| 383 |       hence "\<forall>n\<in>{1..}. \<exists>y. y \<in> Y n" by auto
 | |
| 384 | then obtain y where y: "\<And>n. n \<ge> 1 \<Longrightarrow> y n \<in> Y n" unfolding bchoice_iff by force | |
| 385 |       {
 | |
| 386 | fix t and n m::nat | |
| 387 | assume "1 \<le> n" "n \<le> m" hence "1 \<le> m" by simp | |
| 388 | from Y_mono[OF `m \<ge> n`] y[OF `1 \<le> m`] have "y m \<in> Y n" by auto | |
| 389 | also have "\<dots> \<subseteq> Z' n" using Y_Z'[OF `1 \<le> n`] . | |
| 390 | finally | |
| 391 | have "fm n (restrict (y m) (J n)) \<in> K' n" | |
| 392 | unfolding Z'_def K_def prod_emb_iff by (simp add: Z'_def K_def prod_emb_iff) | |
| 393 | moreover have "finmap_of (J n) (restrict (y m) (J n)) = finmap_of (J n) (y m)" | |
| 394 | using J by (simp add: fm_def) | |
| 395 | ultimately have "fm n (y m) \<in> K' n" by simp | |
| 396 | } note fm_in_K' = this | |
| 397 | interpret finmap_seqs_into_compact "\<lambda>n. K' (Suc n)" "\<lambda>k. fm (Suc k) (y (Suc k))" borel | |
| 398 | proof | |
| 399 | fix n show "compact (K' n)" by fact | |
| 400 | next | |
| 401 | fix n | |
| 402 | from Y_mono[of n "Suc n"] y[of "Suc n"] have "y (Suc n) \<in> Y (Suc n)" by auto | |
| 403 | also have "\<dots> \<subseteq> Z' (Suc n)" using Y_Z' by auto | |
| 404 | finally | |
| 405 | have "fm (Suc n) (restrict (y (Suc n)) (J (Suc n))) \<in> K' (Suc n)" | |
| 406 | unfolding Z'_def K_def prod_emb_iff by (simp add: Z'_def K_def prod_emb_iff) | |
| 407 |         thus "K' (Suc n) \<noteq> {}" by auto
 | |
| 408 | fix k | |
| 409 | assume "k \<in> K' (Suc n)" | |
| 50244 
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
 immler parents: 
50243diff
changeset | 410 | with K'[of "Suc n"] sets.sets_into_space have "k \<in> fm (Suc n) ` B (Suc n)" by auto | 
| 50088 | 411 | then obtain b where "k = fm (Suc n) b" by auto | 
| 412 | thus "domain k = domain (fm (Suc n) (y (Suc n)))" | |
| 413 | by (simp_all add: fm_def) | |
| 414 | next | |
| 415 | fix t and n m::nat | |
| 416 | assume "n \<le> m" hence "Suc n \<le> Suc m" by simp | |
| 417 | assume "t \<in> domain (fm (Suc n) (y (Suc n)))" | |
| 418 | then obtain j where j: "t = Utn j" "j \<in> J (Suc n)" by auto | |
| 419 | hence "j \<in> J (Suc m)" using J_mono[OF `Suc n \<le> Suc m`] by auto | |
| 420 | have img: "fm (Suc n) (y (Suc m)) \<in> K' (Suc n)" using `n \<le> m` | |
| 421 | by (intro fm_in_K') simp_all | |
| 422 | show "(fm (Suc m) (y (Suc m)))\<^isub>F t \<in> (\<lambda>k. (k)\<^isub>F t) ` K' (Suc n)" | |
| 423 | apply (rule image_eqI[OF _ img]) | |
| 424 | using `j \<in> J (Suc n)` `j \<in> J (Suc m)` | |
| 425 | unfolding j by (subst proj_fm, auto)+ | |
| 426 | qed | |
| 427 | have "\<forall>t. \<exists>z. (\<lambda>i. (fm (Suc (diagseq i)) (y (Suc (diagseq i))))\<^isub>F t) ----> z" | |
| 428 | using diagonal_tendsto .. | |
| 429 | then obtain z where z: | |
| 430 | "\<And>t. (\<lambda>i. (fm (Suc (diagseq i)) (y (Suc (diagseq i))))\<^isub>F t) ----> z t" | |
| 431 | unfolding choice_iff by blast | |
| 432 |       {
 | |
| 433 | fix n :: nat assume "n \<ge> 1" | |
| 434 | have "\<And>i. domain (fm n (y (Suc (diagseq i)))) = domain (finmap_of (Utn ` J n) z)" | |
| 435 | by simp | |
| 436 | moreover | |
| 437 |         {
 | |
| 438 | fix t | |
| 439 | assume t: "t \<in> domain (finmap_of (Utn ` J n) z)" | |
| 440 | hence "t \<in> Utn ` J n" by simp | |
| 441 | then obtain j where j: "t = Utn j" "j \<in> J n" by auto | |
| 442 | have "(\<lambda>i. (fm n (y (Suc (diagseq i))))\<^isub>F t) ----> z t" | |
| 443 | apply (subst (2) tendsto_iff, subst eventually_sequentially) | |
| 444 | proof safe | |
| 445 | fix e :: real assume "0 < e" | |
| 446 |             { fix i x assume "i \<ge> n" "t \<in> domain (fm n x)"
 | |
| 447 | moreover | |
| 448 | hence "t \<in> domain (fm i x)" using J_mono[OF `i \<ge> n`] by auto | |
| 449 | ultimately have "(fm i x)\<^isub>F t = (fm n x)\<^isub>F t" | |
| 50243 | 450 | using j by (auto simp: proj_fm dest!: inj_onD[OF inj_on_Utn]) | 
| 50088 | 451 | } note index_shift = this | 
| 452 | have I: "\<And>i. i \<ge> n \<Longrightarrow> Suc (diagseq i) \<ge> n" | |
| 453 | apply (rule le_SucI) | |
| 454 | apply (rule order_trans) apply simp | |
| 455 | apply (rule seq_suble[OF subseq_diagseq]) | |
| 456 | done | |
| 457 | from z | |
| 458 | have "\<exists>N. \<forall>i\<ge>N. dist ((fm (Suc (diagseq i)) (y (Suc (diagseq i))))\<^isub>F t) (z t) < e" | |
| 459 | unfolding tendsto_iff eventually_sequentially using `0 < e` by auto | |
| 460 | then obtain N where N: "\<And>i. i \<ge> N \<Longrightarrow> | |
| 461 | dist ((fm (Suc (diagseq i)) (y (Suc (diagseq i))))\<^isub>F t) (z t) < e" by auto | |
| 462 | show "\<exists>N. \<forall>na\<ge>N. dist ((fm n (y (Suc (diagseq na))))\<^isub>F t) (z t) < e " | |
| 463 | proof (rule exI[where x="max N n"], safe) | |
| 464 | fix na assume "max N n \<le> na" | |
| 465 | hence "dist ((fm n (y (Suc (diagseq na))))\<^isub>F t) (z t) = | |
| 466 | dist ((fm (Suc (diagseq na)) (y (Suc (diagseq na))))\<^isub>F t) (z t)" using t | |
| 467 | by (subst index_shift[OF I]) auto | |
| 468 | also have "\<dots> < e" using `max N n \<le> na` by (intro N) simp | |
| 469 | finally show "dist ((fm n (y (Suc (diagseq na))))\<^isub>F t) (z t) < e" . | |
| 470 | qed | |
| 471 | qed | |
| 472 | hence "(\<lambda>i. (fm n (y (Suc (diagseq i))))\<^isub>F t) ----> (finmap_of (Utn ` J n) z)\<^isub>F t" | |
| 473 | by (simp add: tendsto_intros) | |
| 474 | } ultimately | |
| 475 | have "(\<lambda>i. fm n (y (Suc (diagseq i)))) ----> finmap_of (Utn ` J n) z" | |
| 476 | by (rule tendsto_finmap) | |
| 477 | hence "((\<lambda>i. fm n (y (Suc (diagseq i)))) o (\<lambda>i. i + n)) ----> finmap_of (Utn ` J n) z" | |
| 478 | by (intro lim_subseq) (simp add: subseq_def) | |
| 479 | moreover | |
| 480 | have "(\<forall>i. ((\<lambda>i. fm n (y (Suc (diagseq i)))) o (\<lambda>i. i + n)) i \<in> K' n)" | |
| 481 | apply (auto simp add: o_def intro!: fm_in_K' `1 \<le> n` le_SucI) | |
| 482 | apply (rule le_trans) | |
| 483 | apply (rule le_add2) | |
| 484 | using seq_suble[OF subseq_diagseq] | |
| 485 | apply auto | |
| 486 | done | |
| 487 | moreover | |
| 488 | from `compact (K' n)` have "closed (K' n)" by (rule compact_imp_closed) | |
| 489 | ultimately | |
| 490 | have "finmap_of (Utn ` J n) z \<in> K' n" | |
| 491 | unfolding closed_sequential_limits by blast | |
| 492 | also have "finmap_of (Utn ` J n) z = fm n (\<lambda>i. z (Utn i))" | |
| 50243 | 493 | unfolding finmap_eq_iff | 
| 494 | proof clarsimp | |
| 495 | fix i assume "i \<in> J n" | |
| 496 | moreover hence "from_nat_into (\<Union>n. J n) (Utn i) = i" | |
| 497 | unfolding Utn_def | |
| 498 | by (subst from_nat_into_to_nat_on[OF countable_UN_J]) auto | |
| 499 | ultimately show "z (Utn i) = (fm n (\<lambda>i. z (Utn i)))\<^isub>F (Utn i)" | |
| 500 | by (simp add: finmap_eq_iff fm_def compose_def) | |
| 501 | qed | |
| 50088 | 502 | finally have "fm n (\<lambda>i. z (Utn i)) \<in> K' n" . | 
| 503 | moreover | |
| 504 | let ?J = "\<Union>n. J n" | |
| 505 | have "(?J \<inter> J n) = J n" by auto | |
| 506 | ultimately have "restrict (\<lambda>i. z (Utn i)) (?J \<inter> J n) \<in> K n" | |
| 507 | unfolding K_def by (auto simp: proj_space space_PiM) | |
| 508 | hence "restrict (\<lambda>i. z (Utn i)) ?J \<in> Z' n" unfolding Z'_def | |
| 50123 
69b35a75caf3
merge extensional dependent function space from FuncSet with the one in Finite_Product_Measure
 hoelzl parents: 
50101diff
changeset | 509 | using J by (auto simp: prod_emb_def PiE_def extensional_def) | 
| 50088 | 510 | also have "\<dots> \<subseteq> Z n" using Z' by simp | 
| 511 | finally have "restrict (\<lambda>i. z (Utn i)) ?J \<in> Z n" . | |
| 512 | } note in_Z = this | |
| 513 |       hence "(\<Inter>i\<in>{1..}. Z i) \<noteq> {}" by auto
 | |
| 514 |       hence "(\<Inter>i. Z i) \<noteq> {}" using Z INT_decseq_offset[OF `decseq Z`] by simp
 | |
| 515 | thus False using Z by simp | |
| 516 | qed | |
| 517 | ultimately show "(\<lambda>i. \<mu>G (Z i)) ----> 0" | |
| 51351 | 518 | using LIMSEQ_INF[of "\<lambda>i. \<mu>G (Z i)"] by simp | 
| 50088 | 519 | qed | 
| 520 | then guess \<mu> .. note \<mu> = this | |
| 521 | def f \<equiv> "finmap_of J B" | |
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 522 | show "emeasure (lim\<^isub>B I P) (emb I J (Pi\<^isub>E J B)) = emeasure (lim\<^isub>B J P) (Pi\<^isub>E J B)" | 
| 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 523 | proof (subst emeasure_extend_measure_Pair[OF limP_def, of I "\<lambda>_. borel" \<mu>]) | 
| 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 524 | show "positive (sets (lim\<^isub>B I P)) \<mu>" "countably_additive (sets (lim\<^isub>B I P)) \<mu>" | 
| 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 525 | using \<mu> unfolding sets_limP sets_PiM_generator by (auto simp: measure_space_def) | 
| 50088 | 526 | next | 
| 527 |     show "(J \<noteq> {} \<or> I = {}) \<and> finite J \<and> J \<subseteq> I \<and> B \<in> J \<rightarrow> sets borel"
 | |
| 528 | using assms by (auto simp: f_def) | |
| 529 | next | |
| 530 | fix J and X::"'i \<Rightarrow> 'a set" | |
| 50123 
69b35a75caf3
merge extensional dependent function space from FuncSet with the one in Finite_Product_Measure
 hoelzl parents: 
50101diff
changeset | 531 | show "prod_emb I (\<lambda>_. borel) J (Pi\<^isub>E J X) \<in> Pow (I \<rightarrow>\<^isub>E space borel)" | 
| 50088 | 532 | by (auto simp: prod_emb_def) | 
| 533 |     assume JX: "(J \<noteq> {} \<or> I = {}) \<and> finite J \<and> J \<subseteq> I \<and> X \<in> J \<rightarrow> sets borel"
 | |
| 534 | hence "emb I J (Pi\<^isub>E J X) \<in> generator" using assms | |
| 535 | by (intro generatorI[where J=J and X="Pi\<^isub>E J X"]) (auto intro: sets_PiM_I_finite) | |
| 536 | hence "\<mu> (emb I J (Pi\<^isub>E J X)) = \<mu>G (emb I J (Pi\<^isub>E J X))" using \<mu> by simp | |
| 537 | also have "\<dots> = emeasure (P J) (Pi\<^isub>E J X)" | |
| 538 | using JX assms proj_sets | |
| 50252 | 539 | by (subst mu_G_eq) (auto simp: mu_G_eq limP_finite intro: sets_PiM_I_finite) | 
| 50088 | 540 | finally show "\<mu> (emb I J (Pi\<^isub>E J X)) = emeasure (P J) (Pi\<^isub>E J X)" . | 
| 541 | next | |
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 542 | show "emeasure (P J) (Pi\<^isub>E J B) = emeasure (limP J (\<lambda>_. borel) P) (Pi\<^isub>E J B)" | 
| 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 543 | using assms by (simp add: f_def limP_finite Pi_def) | 
| 50088 | 544 | qed | 
| 545 | qed | |
| 546 | ||
| 547 | end | |
| 548 | ||
| 50090 | 549 | hide_const (open) PiF | 
| 550 | hide_const (open) Pi\<^isub>F | |
| 551 | hide_const (open) Pi' | |
| 552 | hide_const (open) Abs_finmap | |
| 553 | hide_const (open) Rep_finmap | |
| 554 | hide_const (open) finmap_of | |
| 555 | hide_const (open) proj | |
| 556 | hide_const (open) domain | |
| 50245 
dea9363887a6
based countable topological basis on Countable_Set
 immler parents: 
50244diff
changeset | 557 | hide_const (open) basis_finmap | 
| 50090 | 558 | |
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 559 | sublocale polish_projective \<subseteq> P!: prob_space "(lim\<^isub>B I P)" | 
| 50088 | 560 | proof | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 561 | show "emeasure (lim\<^isub>B I P) (space (lim\<^isub>B I P)) = 1" | 
| 50088 | 562 | proof cases | 
| 563 |     assume "I = {}"
 | |
| 50101 
a3bede207a04
renamed prob_space to proj_prob_space as it clashed with Probability_Measure.prob_space
 hoelzl parents: 
50095diff
changeset | 564 |     interpret prob_space "P {}" using proj_prob_space by simp
 | 
| 50088 | 565 | show ?thesis | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 566 |       by (simp add: space_PiM_empty limP_finite emeasure_space_1 `I = {}`)
 | 
| 50088 | 567 | next | 
| 568 |     assume "I \<noteq> {}"
 | |
| 569 | then obtain i where "i \<in> I" by auto | |
| 50101 
a3bede207a04
renamed prob_space to proj_prob_space as it clashed with Probability_Measure.prob_space
 hoelzl parents: 
50095diff
changeset | 570 |     interpret prob_space "P {i}" using proj_prob_space by simp
 | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 571 |     have R: "(space (lim\<^isub>B I P)) = (emb I {i} (Pi\<^isub>E {i} (\<lambda>_. space borel)))"
 | 
| 50088 | 572 | by (auto simp: prod_emb_def space_PiM) | 
| 50123 
69b35a75caf3
merge extensional dependent function space from FuncSet with the one in Finite_Product_Measure
 hoelzl parents: 
50101diff
changeset | 573 |     moreover have "extensional {i} = space (P {i})" by (simp add: proj_space space_PiM PiE_def)
 | 
| 50088 | 574 | ultimately show ?thesis using `i \<in> I` | 
| 575 | apply (subst R) | |
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 576 | apply (subst emeasure_limB_emb_not_empty) | 
| 50123 
69b35a75caf3
merge extensional dependent function space from FuncSet with the one in Finite_Product_Measure
 hoelzl parents: 
50101diff
changeset | 577 | apply (auto simp: limP_finite emeasure_space_1 PiE_def) | 
| 50088 | 578 | done | 
| 579 | qed | |
| 580 | qed | |
| 581 | ||
| 582 | context polish_projective begin | |
| 583 | ||
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 584 | lemma emeasure_limB_emb: | 
| 50088 | 585 | assumes X: "J \<subseteq> I" "finite J" "\<forall>i\<in>J. B i \<in> sets borel" | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 586 | shows "emeasure (lim\<^isub>B I P) (emb I J (Pi\<^isub>E J B)) = emeasure (P J) (Pi\<^isub>E J B)" | 
| 50088 | 587 | proof cases | 
| 50101 
a3bede207a04
renamed prob_space to proj_prob_space as it clashed with Probability_Measure.prob_space
 hoelzl parents: 
50095diff
changeset | 588 |   interpret prob_space "P {}" using proj_prob_space by simp
 | 
| 50088 | 589 |   assume "J = {}"
 | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 590 |   moreover have "emb I {} {\<lambda>x. undefined} = space (lim\<^isub>B I P)"
 | 
| 50088 | 591 | by (auto simp: space_PiM prod_emb_def) | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 592 |   moreover have "{\<lambda>x. undefined} = space (lim\<^isub>B {} P)"
 | 
| 50088 | 593 | by (auto simp: space_PiM prod_emb_def) | 
| 594 | ultimately show ?thesis | |
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 595 | by (simp add: P.emeasure_space_1 limP_finite emeasure_space_1 del: space_limP) | 
| 50088 | 596 | next | 
| 597 |   assume "J \<noteq> {}" with X show ?thesis
 | |
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 598 | by (subst emeasure_limB_emb_not_empty) (auto simp: limP_finite) | 
| 50088 | 599 | qed | 
| 600 | ||
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 601 | lemma measure_limB_emb: | 
| 50088 | 602 | assumes "J \<subseteq> I" "finite J" "\<forall>i\<in>J. B i \<in> sets borel" | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 603 | shows "measure (lim\<^isub>B I P) (emb I J (Pi\<^isub>E J B)) = measure (P J) (Pi\<^isub>E J B)" | 
| 50088 | 604 | proof - | 
| 50101 
a3bede207a04
renamed prob_space to proj_prob_space as it clashed with Probability_Measure.prob_space
 hoelzl parents: 
50095diff
changeset | 605 | interpret prob_space "P J" using proj_prob_space assms by simp | 
| 50088 | 606 | show ?thesis | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 607 | using emeasure_limB_emb[OF assms] | 
| 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 608 | unfolding emeasure_eq_measure limP_finite[OF `finite J` `J \<subseteq> I`] P.emeasure_eq_measure | 
| 50088 | 609 | by simp | 
| 610 | qed | |
| 611 | ||
| 612 | end | |
| 613 | ||
| 614 | locale polish_product_prob_space = | |
| 615 |   product_prob_space "\<lambda>_. borel::('a::polish_space) measure" I for I::"'i set"
 | |
| 616 | ||
| 617 | sublocale polish_product_prob_space \<subseteq> P: polish_projective I "\<lambda>J. PiM J (\<lambda>_. borel::('a) measure)"
 | |
| 618 | proof qed | |
| 619 | ||
| 50125 
4319691be975
tuned: use induction rule sigma_sets_induct_disjoint
 hoelzl parents: 
50124diff
changeset | 620 | lemma (in polish_product_prob_space) limP_eq_PiM: | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 621 |   "I \<noteq> {} \<Longrightarrow> lim\<^isub>P I (\<lambda>_. borel) (\<lambda>J. PiM J (\<lambda>_. borel::('a) measure)) =
 | 
| 50088 | 622 | PiM I (\<lambda>_. borel)" | 
| 50095 
94d7dfa9f404
renamed to more appropriate lim_P for projective limit
 immler parents: 
50091diff
changeset | 623 | by (rule PiM_eq) (auto simp: emeasure_PiM emeasure_limB_emb) | 
| 50088 | 624 | |
| 625 | end |