author  hoelzl 
Mon, 19 May 2014 14:26:58 +0200  
changeset 56996  891e992e510f 
parent 56994  8d5e5ec1cac3 
child 57447  87429bdecad5 
permissions  rwrr 
42067  1 
(* Title: HOL/Probability/Radon_Nikodym.thy 
2 
Author: Johannes Hölzl, TU München 

3 
*) 

4 

5 
header {*RadonNikod{\'y}m derivative*} 

6 

38656  7 
theory Radon_Nikodym 
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

8 
imports Bochner_Integration 
38656  9 
begin 
10 

47694  11 
definition "diff_measure M N = 
12 
measure_of (space M) (sets M) (\<lambda>A. emeasure M A  emeasure N A)" 

13 

14 
lemma 

15 
shows space_diff_measure[simp]: "space (diff_measure M N) = space M" 

16 
and sets_diff_measure[simp]: "sets (diff_measure M N) = sets M" 

17 
by (auto simp: diff_measure_def) 

18 

19 
lemma emeasure_diff_measure: 

20 
assumes fin: "finite_measure M" "finite_measure N" and sets_eq: "sets M = sets N" 

21 
assumes pos: "\<And>A. A \<in> sets M \<Longrightarrow> emeasure N A \<le> emeasure M A" and A: "A \<in> sets M" 

22 
shows "emeasure (diff_measure M N) A = emeasure M A  emeasure N A" (is "_ = ?\<mu> A") 

23 
unfolding diff_measure_def 

24 
proof (rule emeasure_measure_of_sigma) 

25 
show "sigma_algebra (space M) (sets M)" .. 

26 
show "positive (sets M) ?\<mu>" 

27 
using pos by (simp add: positive_def ereal_diff_positive) 

28 
show "countably_additive (sets M) ?\<mu>" 

29 
proof (rule countably_additiveI) 

30 
fix A :: "nat \<Rightarrow> _" assume A: "range A \<subseteq> sets M" and "disjoint_family A" 

31 
then have suminf: 

32 
"(\<Sum>i. emeasure M (A i)) = emeasure M (\<Union>i. A i)" 

33 
"(\<Sum>i. emeasure N (A i)) = emeasure N (\<Union>i. A i)" 

34 
by (simp_all add: suminf_emeasure sets_eq) 

35 
with A have "(\<Sum>i. emeasure M (A i)  emeasure N (A i)) = 

36 
(\<Sum>i. emeasure M (A i))  (\<Sum>i. emeasure N (A i))" 

37 
using fin 

38 
by (intro suminf_ereal_minus pos emeasure_nonneg) 

39 
(auto simp: sets_eq finite_measure.emeasure_eq_measure suminf_emeasure) 

40 
then show "(\<Sum>i. emeasure M (A i)  emeasure N (A i)) = 

41 
emeasure M (\<Union>i. A i)  emeasure N (\<Union>i. A i) " 

42 
by (simp add: suminf) 

43 
qed 

44 
qed fact 

45 

38656  46 
lemma (in sigma_finite_measure) Ex_finite_integrable_function: 
56996  47 
shows "\<exists>h\<in>borel_measurable M. integral\<^sup>N M h \<noteq> \<infinity> \<and> (\<forall>x\<in>space M. 0 < h x \<and> h x < \<infinity>) \<and> (\<forall>x. 0 \<le> h x)" 
38656  48 
proof  
49 
obtain A :: "nat \<Rightarrow> 'a set" where 

50003  50 
range[measurable]: "range A \<subseteq> sets M" and 
38656  51 
space: "(\<Union>i. A i) = space M" and 
47694  52 
measure: "\<And>i. emeasure M (A i) \<noteq> \<infinity>" and 
38656  53 
disjoint: "disjoint_family A" 
47694  54 
using sigma_finite_disjoint by auto 
55 
let ?B = "\<lambda>i. 2^Suc i * emeasure M (A i)" 

38656  56 
have "\<forall>i. \<exists>x. 0 < x \<and> x < inverse (?B i)" 
57 
proof 

47694  58 
fix i show "\<exists>x. 0 < x \<and> x < inverse (?B i)" 
59 
using measure[of i] emeasure_nonneg[of M "A i"] 

51329
4a3c453f99a1
split dense into inner_dense_order and no_top/no_bot
hoelzl
parents:
50244
diff
changeset

60 
by (auto intro!: dense simp: ereal_0_gt_inverse ereal_zero_le_0_iff) 
38656  61 
qed 
62 
from choice[OF this] obtain n where n: "\<And>i. 0 < n i" 

47694  63 
"\<And>i. n i < inverse (2^Suc i * emeasure M (A i))" by auto 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

64 
{ fix i have "0 \<le> n i" using n(1)[of i] by auto } note pos = this 
46731  65 
let ?h = "\<lambda>x. \<Sum>i. n i * indicator (A i) x" 
38656  66 
show ?thesis 
67 
proof (safe intro!: bexI[of _ ?h] del: notI) 

39092  68 
have "\<And>i. A i \<in> sets M" 
44890
22f665a2e91c
new fastforce replacing fastsimp  less confusing name
nipkow
parents:
44568
diff
changeset

69 
using range by fastforce+ 
56996  70 
then have "integral\<^sup>N M ?h = (\<Sum>i. n i * emeasure M (A i))" using pos 
71 
by (simp add: nn_integral_suminf nn_integral_cmult_indicator) 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

72 
also have "\<dots> \<le> (\<Sum>i. (1 / 2)^Suc i)" 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

73 
proof (rule suminf_le_pos) 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

74 
fix N 
47694  75 
have "n N * emeasure M (A N) \<le> inverse (2^Suc N * emeasure M (A N)) * emeasure M (A N)" 
76 
using n[of N] 

43920  77 
by (intro ereal_mult_right_mono) auto 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

78 
also have "\<dots> \<le> (1 / 2) ^ Suc N" 
38656  79 
using measure[of N] n[of N] 
47694  80 
by (cases rule: ereal2_cases[of "n N" "emeasure M (A N)"]) 
43920  81 
(simp_all add: inverse_eq_divide power_divide one_ereal_def ereal_power_divide) 
47694  82 
finally show "n N * emeasure M (A N) \<le> (1 / 2) ^ Suc N" . 
83 
show "0 \<le> n N * emeasure M (A N)" using n[of N] `A N \<in> sets M` by (simp add: emeasure_nonneg) 

38656  84 
qed 
56996  85 
finally show "integral\<^sup>N M ?h \<noteq> \<infinity>" unfolding suminf_half_series_ereal by auto 
38656  86 
next 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

87 
{ fix x assume "x \<in> space M" 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

88 
then obtain i where "x \<in> A i" using space[symmetric] by auto 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

89 
with disjoint n have "?h x = n i" 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

90 
by (auto intro!: suminf_cmult_indicator intro: less_imp_le) 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

91 
then show "0 < ?h x" and "?h x < \<infinity>" using n[of i] by auto } 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

92 
note pos = this 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

93 
fix x show "0 \<le> ?h x" 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

94 
proof cases 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

95 
assume "x \<in> space M" then show "0 \<le> ?h x" using pos by (auto intro: less_imp_le) 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

96 
next 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

97 
assume "x \<notin> space M" then have "\<And>i. x \<notin> A i" using space by auto 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

98 
then show "0 \<le> ?h x" by auto 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

99 
qed 
50003  100 
qed measurable 
38656  101 
qed 
102 

40871  103 
subsection "Absolutely continuous" 
104 

47694  105 
definition absolutely_continuous :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> bool" where 
106 
"absolutely_continuous M N \<longleftrightarrow> null_sets M \<subseteq> null_sets N" 

107 

108 
lemma absolutely_continuousI_count_space: "absolutely_continuous (count_space A) M" 

109 
unfolding absolutely_continuous_def by (auto simp: null_sets_count_space) 

38656  110 

47694  111 
lemma absolutely_continuousI_density: 
112 
"f \<in> borel_measurable M \<Longrightarrow> absolutely_continuous M (density M f)" 

113 
by (force simp add: absolutely_continuous_def null_sets_density_iff dest: AE_not_in) 

114 

115 
lemma absolutely_continuousI_point_measure_finite: 

116 
"(\<And>x. \<lbrakk> x \<in> A ; f x \<le> 0 \<rbrakk> \<Longrightarrow> g x \<le> 0) \<Longrightarrow> absolutely_continuous (point_measure A f) (point_measure A g)" 

117 
unfolding absolutely_continuous_def by (force simp: null_sets_point_measure_iff) 

118 

119 
lemma absolutely_continuous_AE: 

120 
assumes sets_eq: "sets M' = sets M" 

121 
and "absolutely_continuous M M'" "AE x in M. P x" 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

122 
shows "AE x in M'. P x" 
40859  123 
proof  
47694  124 
from `AE x in M. P x` obtain N where N: "N \<in> null_sets M" "{x\<in>space M. \<not> P x} \<subseteq> N" 
125 
unfolding eventually_ae_filter by auto 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

126 
show "AE x in M'. P x" 
47694  127 
proof (rule AE_I') 
128 
show "{x\<in>space M'. \<not> P x} \<subseteq> N" using sets_eq_imp_space_eq[OF sets_eq] N(2) by simp 

129 
from `absolutely_continuous M M'` show "N \<in> null_sets M'" 

130 
using N unfolding absolutely_continuous_def sets_eq null_sets_def by auto 

40859  131 
qed 
132 
qed 

133 

40871  134 
subsection "Existence of the RadonNikodym derivative" 
135 

38656  136 
lemma (in finite_measure) Radon_Nikodym_aux_epsilon: 
137 
fixes e :: real assumes "0 < e" 

47694  138 
assumes "finite_measure N" and sets_eq: "sets N = sets M" 
139 
shows "\<exists>A\<in>sets M. measure M (space M)  measure N (space M) \<le> measure M A  measure N A \<and> 

140 
(\<forall>B\<in>sets M. B \<subseteq> A \<longrightarrow>  e < measure M B  measure N B)" 

38656  141 
proof  
47694  142 
interpret M': finite_measure N by fact 
143 
let ?d = "\<lambda>A. measure M A  measure N A" 

46731  144 
let ?A = "\<lambda>A. if (\<forall>B\<in>sets M. B \<subseteq> space M  A \<longrightarrow> e < ?d B) 
38656  145 
then {} 
146 
else (SOME B. B \<in> sets M \<and> B \<subseteq> space M  A \<and> ?d B \<le> e)" 

147 
def A \<equiv> "\<lambda>n. ((\<lambda>B. B \<union> ?A B) ^^ n) {}" 

148 
have A_simps[simp]: 

149 
"A 0 = {}" 

150 
"\<And>n. A (Suc n) = (A n \<union> ?A (A n))" unfolding A_def by simp_all 

151 
{ fix A assume "A \<in> sets M" 

152 
have "?A A \<in> sets M" 

153 
by (auto intro!: someI2[of _ _ "\<lambda>A. A \<in> sets M"] simp: not_less) } 

154 
note A'_in_sets = this 

155 
{ fix n have "A n \<in> sets M" 

156 
proof (induct n) 

157 
case (Suc n) thus "A (Suc n) \<in> sets M" 

158 
using A'_in_sets[of "A n"] by (auto split: split_if_asm) 

159 
qed (simp add: A_def) } 

160 
note A_in_sets = this 

161 
hence "range A \<subseteq> sets M" by auto 

162 
{ fix n B 

163 
assume Ex: "\<exists>B. B \<in> sets M \<and> B \<subseteq> space M  A n \<and> ?d B \<le> e" 

164 
hence False: "\<not> (\<forall>B\<in>sets M. B \<subseteq> space M  A n \<longrightarrow> e < ?d B)" by (auto simp: not_less) 

165 
have "?d (A (Suc n)) \<le> ?d (A n)  e" unfolding A_simps if_not_P[OF False] 

166 
proof (rule someI2_ex[OF Ex]) 

167 
fix B assume "B \<in> sets M \<and> B \<subseteq> space M  A n \<and> ?d B \<le>  e" 

168 
hence "A n \<inter> B = {}" "B \<in> sets M" and dB: "?d B \<le> e" by auto 

169 
hence "?d (A n \<union> B) = ?d (A n) + ?d B" 

47694  170 
using `A n \<in> sets M` finite_measure_Union M'.finite_measure_Union by (simp add: sets_eq) 
38656  171 
also have "\<dots> \<le> ?d (A n)  e" using dB by simp 
172 
finally show "?d (A n \<union> B) \<le> ?d (A n)  e" . 

173 
qed } 

174 
note dA_epsilon = this 

175 
{ fix n have "?d (A (Suc n)) \<le> ?d (A n)" 

176 
proof (cases "\<exists>B. B\<in>sets M \<and> B \<subseteq> space M  A n \<and> ?d B \<le>  e") 

177 
case True from dA_epsilon[OF this] show ?thesis using `0 < e` by simp 

178 
next 

179 
case False 

180 
hence "\<forall>B\<in>sets M. B \<subseteq> space M  A n \<longrightarrow> e < ?d B" by (auto simp: not_le) 

181 
thus ?thesis by simp 

182 
qed } 

183 
note dA_mono = this 

184 
show ?thesis 

185 
proof (cases "\<exists>n. \<forall>B\<in>sets M. B \<subseteq> space M  A n \<longrightarrow> e < ?d B") 

186 
case True then obtain n where B: "\<And>B. \<lbrakk> B \<in> sets M; B \<subseteq> space M  A n\<rbrakk> \<Longrightarrow> e < ?d B" by blast 

187 
show ?thesis 

188 
proof (safe intro!: bexI[of _ "space M  A n"]) 

189 
fix B assume "B \<in> sets M" "B \<subseteq> space M  A n" 

190 
from B[OF this] show "e < ?d B" . 

191 
next 

50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

192 
show "space M  A n \<in> sets M" by (rule sets.compl_sets) fact 
38656  193 
next 
194 
show "?d (space M) \<le> ?d (space M  A n)" 

195 
proof (induct n) 

196 
fix n assume "?d (space M) \<le> ?d (space M  A n)" 

197 
also have "\<dots> \<le> ?d (space M  A (Suc n))" 

50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

198 
using A_in_sets sets.sets_into_space dA_mono[of n] finite_measure_compl M'.finite_measure_compl 
47694  199 
by (simp del: A_simps add: sets_eq sets_eq_imp_space_eq[OF sets_eq]) 
38656  200 
finally show "?d (space M) \<le> ?d (space M  A (Suc n))" . 
201 
qed simp 

202 
qed 

203 
next 

204 
case False hence B: "\<And>n. \<exists>B. B\<in>sets M \<and> B \<subseteq> space M  A n \<and> ?d B \<le>  e" 

205 
by (auto simp add: not_less) 

206 
{ fix n have "?d (A n) \<le>  real n * e" 

207 
proof (induct n) 

208 
case (Suc n) with dA_epsilon[of n, OF B] show ?case by (simp del: A_simps add: real_of_nat_Suc field_simps) 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

209 
next 
47694  210 
case 0 with measure_empty show ?case by (simp add: zero_ereal_def) 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

211 
qed } note dA_less = this 
38656  212 
have decseq: "decseq (\<lambda>n. ?d (A n))" unfolding decseq_eq_incseq 
213 
proof (rule incseq_SucI) 

214 
fix n show " ?d (A n) \<le>  ?d (A (Suc n))" using dA_mono[of n] by auto 

215 
qed 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

216 
have A: "incseq A" by (auto intro!: incseq_SucI) 
47694  217 
from finite_Lim_measure_incseq[OF _ A] `range A \<subseteq> sets M` 
218 
M'.finite_Lim_measure_incseq[OF _ A] 

38656  219 
have convergent: "(\<lambda>i. ?d (A i)) > ?d (\<Union>i. A i)" 
47694  220 
by (auto intro!: tendsto_diff simp: sets_eq) 
38656  221 
obtain n :: nat where " ?d (\<Union>i. A i) / e < real n" using reals_Archimedean2 by auto 
222 
moreover from order_trans[OF decseq_le[OF decseq convergent] dA_less] 

223 
have "real n \<le>  ?d (\<Union>i. A i) / e" using `0<e` by (simp add: field_simps) 

224 
ultimately show ?thesis by auto 

225 
qed 

226 
qed 

227 

47694  228 
lemma (in finite_measure) Radon_Nikodym_aux: 
229 
assumes "finite_measure N" and sets_eq: "sets N = sets M" 

230 
shows "\<exists>A\<in>sets M. measure M (space M)  measure N (space M) \<le> 

231 
measure M A  measure N A \<and> 

232 
(\<forall>B\<in>sets M. B \<subseteq> A \<longrightarrow> 0 \<le> measure M B  measure N B)" 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

233 
proof  
47694  234 
interpret N: finite_measure N by fact 
235 
let ?d = "\<lambda>A. measure M A  measure N A" 

46731  236 
let ?P = "\<lambda>A B n. A \<in> sets M \<and> A \<subseteq> B \<and> ?d B \<le> ?d A \<and> (\<forall>C\<in>sets M. C \<subseteq> A \<longrightarrow>  1 / real (Suc n) < ?d C)" 
237 
let ?r = "\<lambda>S. restricted_space S" 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

238 
{ fix S n assume S: "S \<in> sets M" 
47694  239 
then have "finite_measure (density M (indicator S))" "0 < 1 / real (Suc n)" 
240 
"finite_measure (density N (indicator S))" "sets (density N (indicator S)) = sets (density M (indicator S))" 

241 
by (auto simp: finite_measure_restricted N.finite_measure_restricted sets_eq) 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

242 
from finite_measure.Radon_Nikodym_aux_epsilon[OF this] guess X .. note X = this 
47694  243 
with S have "?P (S \<inter> X) S n" 
56479
91958d4b30f7
revert c1bbd3e22226, a14831ac3023, and 36489d77c484: divide_minus_left/right are again simp rules
hoelzl
parents:
56409
diff
changeset

244 
by (simp add: measure_restricted sets_eq sets.Int) (metis inf_absorb2) 
47694  245 
hence "\<exists>A. ?P A S n" .. } 
38656  246 
note Ex_P = this 
55415  247 
def A \<equiv> "rec_nat (space M) (\<lambda>n A. SOME B. ?P B A n)" 
38656  248 
have A_Suc: "\<And>n. A (Suc n) = (SOME B. ?P B (A n) n)" by (simp add: A_def) 
249 
have A_0[simp]: "A 0 = space M" unfolding A_def by simp 

250 
{ fix i have "A i \<in> sets M" unfolding A_def 

251 
proof (induct i) 

252 
case (Suc i) 

55642
63beb38e9258
adapted to renaming of datatype 'cases' and 'recs' to 'case' and 'rec'
blanchet
parents:
55417
diff
changeset

253 
from Ex_P[OF this, of i] show ?case unfolding nat.rec(2) 
38656  254 
by (rule someI2_ex) simp 
255 
qed simp } 

256 
note A_in_sets = this 

257 
{ fix n have "?P (A (Suc n)) (A n) n" 

258 
using Ex_P[OF A_in_sets] unfolding A_Suc 

259 
by (rule someI2_ex) simp } 

260 
note P_A = this 

261 
have "range A \<subseteq> sets M" using A_in_sets by auto 

262 
have A_mono: "\<And>i. A (Suc i) \<subseteq> A i" using P_A by simp 

263 
have mono_dA: "mono (\<lambda>i. ?d (A i))" using P_A by (simp add: mono_iff_le_Suc) 

264 
have epsilon: "\<And>C i. \<lbrakk> C \<in> sets M; C \<subseteq> A (Suc i) \<rbrakk> \<Longrightarrow>  1 / real (Suc i) < ?d C" 

265 
using P_A by auto 

266 
show ?thesis 

267 
proof (safe intro!: bexI[of _ "\<Inter>i. A i"]) 

268 
show "(\<Inter>i. A i) \<in> sets M" using A_in_sets by auto 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

269 
have A: "decseq A" using A_mono by (auto intro!: decseq_SucI) 
47694  270 
from `range A \<subseteq> sets M` 
271 
finite_Lim_measure_decseq[OF _ A] N.finite_Lim_measure_decseq[OF _ A] 

272 
have "(\<lambda>i. ?d (A i)) > ?d (\<Inter>i. A i)" by (auto intro!: tendsto_diff simp: sets_eq) 

38656  273 
thus "?d (space M) \<le> ?d (\<Inter>i. A i)" using mono_dA[THEN monoD, of 0 _] 
47694  274 
by (rule_tac LIMSEQ_le_const) auto 
38656  275 
next 
276 
fix B assume B: "B \<in> sets M" "B \<subseteq> (\<Inter>i. A i)" 

277 
show "0 \<le> ?d B" 

278 
proof (rule ccontr) 

279 
assume "\<not> 0 \<le> ?d B" 

280 
hence "0 <  ?d B" by auto 

281 
from ex_inverse_of_nat_Suc_less[OF this] 

282 
obtain n where *: "?d B <  1 / real (Suc n)" 

56479
91958d4b30f7
revert c1bbd3e22226, a14831ac3023, and 36489d77c484: divide_minus_left/right are again simp rules
hoelzl
parents:
56409
diff
changeset

283 
by (auto simp: real_eq_of_nat inverse_eq_divide field_simps) 
55642
63beb38e9258
adapted to renaming of datatype 'cases' and 'recs' to 'case' and 'rec'
blanchet
parents:
55417
diff
changeset

284 
have "B \<subseteq> A (Suc n)" using B by (auto simp del: nat.rec(2)) 
38656  285 
from epsilon[OF B(1) this] * 
286 
show False by auto 

287 
qed 

288 
qed 

289 
qed 

290 

291 
lemma (in finite_measure) Radon_Nikodym_finite_measure: 

47694  292 
assumes "finite_measure N" and sets_eq: "sets N = sets M" 
293 
assumes "absolutely_continuous M N" 

294 
shows "\<exists>f \<in> borel_measurable M. (\<forall>x. 0 \<le> f x) \<and> density M f = N" 

38656  295 
proof  
47694  296 
interpret N: finite_measure N by fact 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

297 
def G \<equiv> "{g \<in> borel_measurable M. (\<forall>x. 0 \<le> g x) \<and> (\<forall>A\<in>sets M. (\<integral>\<^sup>+x. g x * indicator A x \<partial>M) \<le> N A)}" 
50003  298 
{ fix f have "f \<in> G \<Longrightarrow> f \<in> borel_measurable M" by (auto simp: G_def) } 
299 
note this[measurable_dest] 

38656  300 
have "(\<lambda>x. 0) \<in> G" unfolding G_def by auto 
301 
hence "G \<noteq> {}" by auto 

302 
{ fix f g assume f: "f \<in> G" and g: "g \<in> G" 

303 
have "(\<lambda>x. max (g x) (f x)) \<in> G" (is "?max \<in> G") unfolding G_def 

304 
proof safe 

305 
show "?max \<in> borel_measurable M" using f g unfolding G_def by auto 

306 
let ?A = "{x \<in> space M. f x \<le> g x}" 

307 
have "?A \<in> sets M" using f g unfolding G_def by auto 

308 
fix A assume "A \<in> sets M" 

309 
hence sets: "?A \<inter> A \<in> sets M" "(space M  ?A) \<inter> A \<in> sets M" using `?A \<in> sets M` by auto 

47694  310 
hence sets': "?A \<inter> A \<in> sets N" "(space M  ?A) \<inter> A \<in> sets N" by (auto simp: sets_eq) 
38656  311 
have union: "((?A \<inter> A) \<union> ((space M  ?A) \<inter> A)) = A" 
50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

312 
using sets.sets_into_space[OF `A \<in> sets M`] by auto 
38656  313 
have "\<And>x. x \<in> space M \<Longrightarrow> max (g x) (f x) * indicator A x = 
314 
g x * indicator (?A \<inter> A) x + f x * indicator ((space M  ?A) \<inter> A) x" 

315 
by (auto simp: indicator_def max_def) 

53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

316 
hence "(\<integral>\<^sup>+x. max (g x) (f x) * indicator A x \<partial>M) = 
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

317 
(\<integral>\<^sup>+x. g x * indicator (?A \<inter> A) x \<partial>M) + 
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

318 
(\<integral>\<^sup>+x. f x * indicator ((space M  ?A) \<inter> A) x \<partial>M)" 
38656  319 
using f g sets unfolding G_def 
56996  320 
by (auto cong: nn_integral_cong intro!: nn_integral_add) 
47694  321 
also have "\<dots> \<le> N (?A \<inter> A) + N ((space M  ?A) \<inter> A)" 
38656  322 
using f g sets unfolding G_def by (auto intro!: add_mono) 
47694  323 
also have "\<dots> = N A" 
324 
using plus_emeasure[OF sets'] union by auto 

53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

325 
finally show "(\<integral>\<^sup>+x. max (g x) (f x) * indicator A x \<partial>M) \<le> N A" . 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

326 
next 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

327 
fix x show "0 \<le> max (g x) (f x)" using f g by (auto simp: G_def split: split_max) 
38656  328 
qed } 
329 
note max_in_G = this 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

330 
{ fix f assume "incseq f" and f: "\<And>i. f i \<in> G" 
50003  331 
then have [measurable]: "\<And>i. f i \<in> borel_measurable M" by (auto simp: G_def) 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

332 
have "(\<lambda>x. SUP i. f i x) \<in> G" unfolding G_def 
38656  333 
proof safe 
50003  334 
show "(\<lambda>x. SUP i. f i x) \<in> borel_measurable M" by measurable 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

335 
{ fix x show "0 \<le> (SUP i. f i x)" 
44928
7ef6505bde7f
renamed Complete_Lattices lemmas, removed legacy names
hoelzl
parents:
44918
diff
changeset

336 
using f by (auto simp: G_def intro: SUP_upper2) } 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

337 
next 
38656  338 
fix A assume "A \<in> sets M" 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

339 
have "(\<integral>\<^sup>+x. (SUP i. f i x) * indicator A x \<partial>M) = 
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

340 
(\<integral>\<^sup>+x. (SUP i. f i x * indicator A x) \<partial>M)" 
56996  341 
by (intro nn_integral_cong) (simp split: split_indicator) 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

342 
also have "\<dots> = (SUP i. (\<integral>\<^sup>+x. f i x * indicator A x \<partial>M))" 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

343 
using `incseq f` f `A \<in> sets M` 
56996  344 
by (intro nn_integral_monotone_convergence_SUP) 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

345 
(auto simp: G_def incseq_Suc_iff le_fun_def split: split_indicator) 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

346 
finally show "(\<integral>\<^sup>+x. (SUP i. f i x) * indicator A x \<partial>M) \<le> N A" 
44928
7ef6505bde7f
renamed Complete_Lattices lemmas, removed legacy names
hoelzl
parents:
44918
diff
changeset

347 
using f `A \<in> sets M` by (auto intro!: SUP_least simp: G_def) 
38656  348 
qed } 
349 
note SUP_in_G = this 

56996  350 
let ?y = "SUP g : G. integral\<^sup>N M g" 
47694  351 
have y_le: "?y \<le> N (space M)" unfolding G_def 
44928
7ef6505bde7f
renamed Complete_Lattices lemmas, removed legacy names
hoelzl
parents:
44918
diff
changeset

352 
proof (safe intro!: SUP_least) 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

353 
fix g assume "\<forall>A\<in>sets M. (\<integral>\<^sup>+x. g x * indicator A x \<partial>M) \<le> N A" 
56996  354 
from this[THEN bspec, OF sets.top] show "integral\<^sup>N M g \<le> N (space M)" 
355 
by (simp cong: nn_integral_cong) 

38656  356 
qed 
56996  357 
from SUP_countable_SUP [OF `G \<noteq> {}`, of "integral\<^sup>N M"] guess ys .. note ys = this 
358 
then have "\<forall>n. \<exists>g. g\<in>G \<and> integral\<^sup>N M g = ys n" 

38656  359 
proof safe 
56996  360 
fix n assume "range ys \<subseteq> integral\<^sup>N M ` G" 
361 
hence "ys n \<in> integral\<^sup>N M ` G" by auto 

362 
thus "\<exists>g. g\<in>G \<and> integral\<^sup>N M g = ys n" by auto 

38656  363 
qed 
56996  364 
from choice[OF this] obtain gs where "\<And>i. gs i \<in> G" "\<And>n. integral\<^sup>N M (gs n) = ys n" by auto 
365 
hence y_eq: "?y = (SUP i. integral\<^sup>N M (gs i))" using ys by auto 

46731  366 
let ?g = "\<lambda>i x. Max ((\<lambda>n. gs n x) ` {..i})" 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

367 
def f \<equiv> "\<lambda>x. SUP i. ?g i x" 
46731  368 
let ?F = "\<lambda>A x. f x * indicator A x" 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

369 
have gs_not_empty: "\<And>i x. (\<lambda>n. gs n x) ` {..i} \<noteq> {}" by auto 
38656  370 
{ fix i have "?g i \<in> G" 
371 
proof (induct i) 

372 
case 0 thus ?case by simp fact 

373 
next 

374 
case (Suc i) 

375 
with Suc gs_not_empty `gs (Suc i) \<in> G` show ?case 

376 
by (auto simp add: atMost_Suc intro!: max_in_G) 

377 
qed } 

378 
note g_in_G = this 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

379 
have "incseq ?g" using gs_not_empty 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

380 
by (auto intro!: incseq_SucI le_funI simp add: atMost_Suc) 
50003  381 
from SUP_in_G[OF this g_in_G] have [measurable]: "f \<in> G" unfolding f_def . 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

382 
then have [simp, intro]: "f \<in> borel_measurable M" unfolding G_def by auto 
56996  383 
have "integral\<^sup>N M f = (SUP i. integral\<^sup>N M (?g i))" unfolding f_def 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

384 
using g_in_G `incseq ?g` 
56996  385 
by (auto intro!: nn_integral_monotone_convergence_SUP simp: G_def) 
38656  386 
also have "\<dots> = ?y" 
387 
proof (rule antisym) 

56996  388 
show "(SUP i. integral\<^sup>N M (?g i)) \<le> ?y" 
56166  389 
using g_in_G by (auto intro: SUP_mono) 
56996  390 
show "?y \<le> (SUP i. integral\<^sup>N M (?g i))" unfolding y_eq 
391 
by (auto intro!: SUP_mono nn_integral_mono Max_ge) 

38656  392 
qed 
56996  393 
finally have int_f_eq_y: "integral\<^sup>N M f = ?y" . 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

394 
have "\<And>x. 0 \<le> f x" 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

395 
unfolding f_def using `\<And>i. gs i \<in> G` 
44928
7ef6505bde7f
renamed Complete_Lattices lemmas, removed legacy names
hoelzl
parents:
44918
diff
changeset

396 
by (auto intro!: SUP_upper2 Max_ge_iff[THEN iffD2] simp: G_def) 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

397 
let ?t = "\<lambda>A. N A  (\<integral>\<^sup>+x. ?F A x \<partial>M)" 
47694  398 
let ?M = "diff_measure N (density M f)" 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

399 
have f_le_N: "\<And>A. A \<in> sets M \<Longrightarrow> (\<integral>\<^sup>+x. ?F A x \<partial>M) \<le> N A" 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

400 
using `f \<in> G` unfolding G_def by auto 
47694  401 
have emeasure_M: "\<And>A. A \<in> sets M \<Longrightarrow> emeasure ?M A = ?t A" 
402 
proof (subst emeasure_diff_measure) 

403 
from f_le_N[of "space M"] show "finite_measure N" "finite_measure (density M f)" 

56996  404 
by (auto intro!: finite_measureI simp: emeasure_density cong: nn_integral_cong) 
47694  405 
next 
406 
fix B assume "B \<in> sets N" with f_le_N[of B] show "emeasure (density M f) B \<le> emeasure N B" 

56996  407 
by (auto simp: sets_eq emeasure_density cong: nn_integral_cong) 
47694  408 
qed (auto simp: sets_eq emeasure_density) 
56996  409 
from emeasure_M[of "space M"] N.finite_emeasure_space nn_integral_nonneg[of M "?F (space M)"] 
47694  410 
interpret M': finite_measure ?M 
411 
by (auto intro!: finite_measureI simp: sets_eq_imp_space_eq[OF sets_eq] N.emeasure_eq_measure ereal_minus_eq_PInfty_iff) 

412 

413 
have ac: "absolutely_continuous M ?M" unfolding absolutely_continuous_def 

45777
c36637603821
remove unnecessary sublocale instantiations in HOLProbability (for clarity and speedup); remove Infinite_Product_Measure.product_prob_space which was a duplicate of Probability_Measure.product_prob_space
hoelzl
parents:
45769
diff
changeset

414 
proof 
53374
a14d2a854c02
tuned proofs  clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset

415 
fix A assume A_M: "A \<in> null_sets M" 
a14d2a854c02
tuned proofs  clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset

416 
with `absolutely_continuous M N` have A_N: "A \<in> null_sets N" 
47694  417 
unfolding absolutely_continuous_def by auto 
53374
a14d2a854c02
tuned proofs  clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset

418 
moreover from A_M A_N have "(\<integral>\<^sup>+ x. ?F A x \<partial>M) \<le> N A" using `f \<in> G` by (auto simp: G_def) 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

419 
ultimately have "N A  (\<integral>\<^sup>+ x. ?F A x \<partial>M) = 0" 
56996  420 
using nn_integral_nonneg[of M] by (auto intro!: antisym) 
47694  421 
then show "A \<in> null_sets ?M" 
53374
a14d2a854c02
tuned proofs  clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset

422 
using A_M by (simp add: emeasure_M null_sets_def sets_eq) 
38656  423 
qed 
47694  424 
have upper_bound: "\<forall>A\<in>sets M. ?M A \<le> 0" 
38656  425 
proof (rule ccontr) 
426 
assume "\<not> ?thesis" 

47694  427 
then obtain A where A: "A \<in> sets M" and pos: "0 < ?M A" 
38656  428 
by (auto simp: not_le) 
429 
note pos 

47694  430 
also have "?M A \<le> ?M (space M)" 
431 
using emeasure_space[of ?M A] by (simp add: sets_eq[THEN sets_eq_imp_space_eq]) 

432 
finally have pos_t: "0 < ?M (space M)" by simp 

38656  433 
moreover 
53374
a14d2a854c02
tuned proofs  clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset

434 
from pos_t have "emeasure M (space M) \<noteq> 0" 
47694  435 
using ac unfolding absolutely_continuous_def by (auto simp: null_sets_def) 
436 
then have pos_M: "0 < emeasure M (space M)" 

437 
using emeasure_nonneg[of M "space M"] by (simp add: le_less) 

38656  438 
moreover 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

439 
have "(\<integral>\<^sup>+x. f x * indicator (space M) x \<partial>M) \<le> N (space M)" 
38656  440 
using `f \<in> G` unfolding G_def by auto 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

441 
hence "(\<integral>\<^sup>+x. f x * indicator (space M) x \<partial>M) \<noteq> \<infinity>" 
47694  442 
using M'.finite_emeasure_space by auto 
38656  443 
moreover 
47694  444 
def b \<equiv> "?M (space M) / emeasure M (space M) / 2" 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

445 
ultimately have b: "b \<noteq> 0 \<and> 0 \<le> b \<and> b \<noteq> \<infinity>" 
47694  446 
by (auto simp: ereal_divide_eq) 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

447 
then have b: "b \<noteq> 0" "0 \<le> b" "0 < b" "b \<noteq> \<infinity>" by auto 
47694  448 
let ?Mb = "density M (\<lambda>_. b)" 
449 
have Mb: "finite_measure ?Mb" "sets ?Mb = sets ?M" 

450 
using b by (auto simp: emeasure_density_const sets_eq intro!: finite_measureI) 

451 
from M'.Radon_Nikodym_aux[OF this] guess A0 .. 

452 
then have "A0 \<in> sets M" 

453 
and space_less_A0: "measure ?M (space M)  real b * measure M (space M) \<le> measure ?M A0  real b * measure M A0" 

454 
and *: "\<And>B. B \<in> sets M \<Longrightarrow> B \<subseteq> A0 \<Longrightarrow> 0 \<le> measure ?M B  real b * measure M B" 

455 
using b by (simp_all add: measure_density_const sets_eq_imp_space_eq[OF sets_eq] sets_eq) 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

456 
{ fix B assume B: "B \<in> sets M" "B \<subseteq> A0" 
47694  457 
with *[OF this] have "b * emeasure M B \<le> ?M B" 
458 
using b unfolding M'.emeasure_eq_measure emeasure_eq_measure by (cases b) auto } 

38656  459 
note bM_le_t = this 
46731  460 
let ?f0 = "\<lambda>x. f x + b * indicator A0 x" 
38656  461 
{ fix A assume A: "A \<in> sets M" 
462 
hence "A \<inter> A0 \<in> sets M" using `A0 \<in> sets M` by auto 

53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

463 
have "(\<integral>\<^sup>+x. ?f0 x * indicator A x \<partial>M) = 
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

464 
(\<integral>\<^sup>+x. f x * indicator A x + b * indicator (A \<inter> A0) x \<partial>M)" 
56996  465 
by (auto intro!: nn_integral_cong split: split_indicator) 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

466 
hence "(\<integral>\<^sup>+x. ?f0 x * indicator A x \<partial>M) = 
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

467 
(\<integral>\<^sup>+x. f x * indicator A x \<partial>M) + b * emeasure M (A \<inter> A0)" 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

468 
using `A0 \<in> sets M` `A \<inter> A0 \<in> sets M` A b `f \<in> G` 
56996  469 
by (simp add: nn_integral_add nn_integral_cmult_indicator G_def) } 
38656  470 
note f0_eq = this 
471 
{ fix A assume A: "A \<in> sets M" 

472 
hence "A \<inter> A0 \<in> sets M" using `A0 \<in> sets M` by auto 

53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

473 
have f_le_v: "(\<integral>\<^sup>+x. ?F A x \<partial>M) \<le> N A" using `f \<in> G` A unfolding G_def by auto 
38656  474 
note f0_eq[OF A] 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

475 
also have "(\<integral>\<^sup>+x. ?F A x \<partial>M) + b * emeasure M (A \<inter> A0) \<le> (\<integral>\<^sup>+x. ?F A x \<partial>M) + ?M (A \<inter> A0)" 
38656  476 
using bM_le_t[OF `A \<inter> A0 \<in> sets M`] `A \<in> sets M` `A0 \<in> sets M` 
477 
by (auto intro!: add_left_mono) 

53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

478 
also have "\<dots> \<le> (\<integral>\<^sup>+x. f x * indicator A x \<partial>M) + ?M A" 
47694  479 
using emeasure_mono[of "A \<inter> A0" A ?M] `A \<in> sets M` `A0 \<in> sets M` 
480 
by (auto intro!: add_left_mono simp: sets_eq) 

481 
also have "\<dots> \<le> N A" 

482 
unfolding emeasure_M[OF `A \<in> sets M`] 

56996  483 
using f_le_v N.emeasure_eq_measure[of A] nn_integral_nonneg[of M "?F A"] 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

484 
by (cases "\<integral>\<^sup>+x. ?F A x \<partial>M", cases "N A") auto 
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

485 
finally have "(\<integral>\<^sup>+x. ?f0 x * indicator A x \<partial>M) \<le> N A" . } 
56537  486 
hence "?f0 \<in> G" using `A0 \<in> sets M` b `f \<in> G` by (auto simp: G_def) 
56996  487 
have int_f_finite: "integral\<^sup>N M f \<noteq> \<infinity>" 
47694  488 
by (metis N.emeasure_finite ereal_infty_less_eq2(1) int_f_eq_y y_le) 
489 
have "0 < ?M (space M)  emeasure ?Mb (space M)" 

490 
using pos_t 

491 
by (simp add: b emeasure_density_const) 

492 
(simp add: M'.emeasure_eq_measure emeasure_eq_measure pos_M b_def) 

493 
also have "\<dots> \<le> ?M A0  b * emeasure M A0" 

494 
using space_less_A0 `A0 \<in> sets M` b 

495 
by (cases b) (auto simp add: b emeasure_density_const sets_eq M'.emeasure_eq_measure emeasure_eq_measure) 

496 
finally have 1: "b * emeasure M A0 < ?M A0" 

497 
by (metis M'.emeasure_real `A0 \<in> sets M` bM_le_t diff_self ereal_less(1) ereal_minus(1) 

498 
less_eq_ereal_def mult_zero_left not_square_less_zero subset_refl zero_ereal_def) 

499 
with b have "0 < ?M A0" 

500 
by (metis M'.emeasure_real MInfty_neq_PInfty(1) emeasure_real ereal_less_eq(5) ereal_zero_times 

501 
ereal_mult_eq_MInfty ereal_mult_eq_PInfty ereal_zero_less_0_iff less_eq_ereal_def) 

502 
then have "emeasure M A0 \<noteq> 0" using ac `A0 \<in> sets M` 

503 
by (auto simp: absolutely_continuous_def null_sets_def) 

504 
then have "0 < emeasure M A0" using emeasure_nonneg[of M A0] by auto 

505 
hence "0 < b * emeasure M A0" using b by (auto simp: ereal_zero_less_0_iff) 

56996  506 
with int_f_finite have "?y + 0 < integral\<^sup>N M f + b * emeasure M A0" unfolding int_f_eq_y 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

507 
using `f \<in> G` 
56996  508 
by (intro ereal_add_strict_mono) (auto intro!: SUP_upper2 nn_integral_nonneg) 
509 
also have "\<dots> = integral\<^sup>N M ?f0" using f0_eq[OF sets.top] `A0 \<in> sets M` sets.sets_into_space 

510 
by (simp cong: nn_integral_cong) 

511 
finally have "?y < integral\<^sup>N M ?f0" by simp 

512 
moreover from `?f0 \<in> G` have "integral\<^sup>N M ?f0 \<le> ?y" by (auto intro!: SUP_upper) 

38656  513 
ultimately show False by auto 
514 
qed 

47694  515 
let ?f = "\<lambda>x. max 0 (f x)" 
38656  516 
show ?thesis 
47694  517 
proof (intro bexI[of _ ?f] measure_eqI conjI) 
518 
show "sets (density M ?f) = sets N" 

519 
by (simp add: sets_eq) 

520 
fix A assume A: "A\<in>sets (density M ?f)" 

521 
then show "emeasure (density M ?f) A = emeasure N A" 

522 
using `f \<in> G` A upper_bound[THEN bspec, of A] N.emeasure_eq_measure[of A] 

56996  523 
by (cases "integral\<^sup>N M (?F A)") 
47694  524 
(auto intro!: antisym simp add: emeasure_density G_def emeasure_M density_max_0[symmetric]) 
525 
qed auto 

38656  526 
qed 
527 

40859  528 
lemma (in finite_measure) split_space_into_finite_sets_and_rest: 
47694  529 
assumes ac: "absolutely_continuous M N" and sets_eq: "sets N = sets M" 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

530 
shows "\<exists>A0\<in>sets M. \<exists>B::nat\<Rightarrow>'a set. disjoint_family B \<and> range B \<subseteq> sets M \<and> A0 = space M  (\<Union>i. B i) \<and> 
47694  531 
(\<forall>A\<in>sets M. A \<subseteq> A0 \<longrightarrow> (emeasure M A = 0 \<and> N A = 0) \<or> (emeasure M A > 0 \<and> N A = \<infinity>)) \<and> 
532 
(\<forall>i. N (B i) \<noteq> \<infinity>)" 

38656  533 
proof  
47694  534 
let ?Q = "{Q\<in>sets M. N Q \<noteq> \<infinity>}" 
535 
let ?a = "SUP Q:?Q. emeasure M Q" 

536 
have "{} \<in> ?Q" by auto 

38656  537 
then have Q_not_empty: "?Q \<noteq> {}" by blast 
50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

538 
have "?a \<le> emeasure M (space M)" using sets.sets_into_space 
47694  539 
by (auto intro!: SUP_least emeasure_mono) 
540 
then have "?a \<noteq> \<infinity>" using finite_emeasure_space 

38656  541 
by auto 
56212
3253aaf73a01
consolidated theorem names containing INFI and SUPR: have INF and SUP instead uniformly
haftmann
parents:
56166
diff
changeset

542 
from SUP_countable_SUP [OF Q_not_empty, of "emeasure M"] 
47694  543 
obtain Q'' where "range Q'' \<subseteq> emeasure M ` ?Q" and a: "?a = (SUP i::nat. Q'' i)" 
38656  544 
by auto 
47694  545 
then have "\<forall>i. \<exists>Q'. Q'' i = emeasure M Q' \<and> Q' \<in> ?Q" by auto 
546 
from choice[OF this] obtain Q' where Q': "\<And>i. Q'' i = emeasure M (Q' i)" "\<And>i. Q' i \<in> ?Q" 

38656  547 
by auto 
47694  548 
then have a_Lim: "?a = (SUP i::nat. emeasure M (Q' i))" using a by simp 
46731  549 
let ?O = "\<lambda>n. \<Union>i\<le>n. Q' i" 
47694  550 
have Union: "(SUP i. emeasure M (?O i)) = emeasure M (\<Union>i. ?O i)" 
551 
proof (rule SUP_emeasure_incseq[of ?O]) 

552 
show "range ?O \<subseteq> sets M" using Q' by auto 

44890
22f665a2e91c
new fastforce replacing fastsimp  less confusing name
nipkow
parents:
44568
diff
changeset

553 
show "incseq ?O" by (fastforce intro!: incseq_SucI) 
38656  554 
qed 
555 
have Q'_sets: "\<And>i. Q' i \<in> sets M" using Q' by auto 

47694  556 
have O_sets: "\<And>i. ?O i \<in> sets M" using Q' by auto 
38656  557 
then have O_in_G: "\<And>i. ?O i \<in> ?Q" 
558 
proof (safe del: notI) 

47694  559 
fix i have "Q' ` {..i} \<subseteq> sets M" using Q' by auto 
560 
then have "N (?O i) \<le> (\<Sum>i\<le>i. N (Q' i))" 

561 
by (simp add: sets_eq emeasure_subadditive_finite) 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

562 
also have "\<dots> < \<infinity>" using Q' by (simp add: setsum_Pinfty) 
47694  563 
finally show "N (?O i) \<noteq> \<infinity>" by simp 
38656  564 
qed auto 
44890
22f665a2e91c
new fastforce replacing fastsimp  less confusing name
nipkow
parents:
44568
diff
changeset

565 
have O_mono: "\<And>n. ?O n \<subseteq> ?O (Suc n)" by fastforce 
47694  566 
have a_eq: "?a = emeasure M (\<Union>i. ?O i)" unfolding Union[symmetric] 
38656  567 
proof (rule antisym) 
47694  568 
show "?a \<le> (SUP i. emeasure M (?O i))" unfolding a_Lim 
569 
using Q' by (auto intro!: SUP_mono emeasure_mono) 

570 
show "(SUP i. emeasure M (?O i)) \<le> ?a" unfolding SUP_def 

38656  571 
proof (safe intro!: Sup_mono, unfold bex_simps) 
572 
fix i 

52141
eff000cab70f
weaker precendence of syntax for big intersection and union on sets
haftmann
parents:
51329
diff
changeset

573 
have *: "(\<Union>(Q' ` {..i})) = ?O i" by auto 
47694  574 
then show "\<exists>x. (x \<in> sets M \<and> N x \<noteq> \<infinity>) \<and> 
52141
eff000cab70f
weaker precendence of syntax for big intersection and union on sets
haftmann
parents:
51329
diff
changeset

575 
emeasure M (\<Union>(Q' ` {..i})) \<le> emeasure M x" 
38656  576 
using O_in_G[of i] by (auto intro!: exI[of _ "?O i"]) 
577 
qed 

578 
qed 

46731  579 
let ?O_0 = "(\<Union>i. ?O i)" 
38656  580 
have "?O_0 \<in> sets M" using Q' by auto 
40859  581 
def Q \<equiv> "\<lambda>i. case i of 0 \<Rightarrow> Q' 0  Suc n \<Rightarrow> ?O (Suc n)  ?O n" 
38656  582 
{ fix i have "Q i \<in> sets M" unfolding Q_def using Q'[of 0] by (cases i) (auto intro: O_sets) } 
583 
note Q_sets = this 

40859  584 
show ?thesis 
585 
proof (intro bexI exI conjI ballI impI allI) 

586 
show "disjoint_family Q" 

44890
22f665a2e91c
new fastforce replacing fastsimp  less confusing name
nipkow
parents:
44568
diff
changeset

587 
by (fastforce simp: disjoint_family_on_def Q_def 
40859  588 
split: nat.split_asm) 
589 
show "range Q \<subseteq> sets M" 

590 
using Q_sets by auto 

591 
{ fix A assume A: "A \<in> sets M" "A \<subseteq> space M  ?O_0" 

47694  592 
show "emeasure M A = 0 \<and> N A = 0 \<or> 0 < emeasure M A \<and> N A = \<infinity>" 
40859  593 
proof (rule disjCI, simp) 
47694  594 
assume *: "0 < emeasure M A \<longrightarrow> N A \<noteq> \<infinity>" 
595 
show "emeasure M A = 0 \<and> N A = 0" 

53374
a14d2a854c02
tuned proofs  clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset

596 
proof (cases "emeasure M A = 0") 
a14d2a854c02
tuned proofs  clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset

597 
case True 
a14d2a854c02
tuned proofs  clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset

598 
with ac A have "N A = 0" 
40859  599 
unfolding absolutely_continuous_def by auto 
53374
a14d2a854c02
tuned proofs  clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset

600 
with True show ?thesis by simp 
40859  601 
next 
53374
a14d2a854c02
tuned proofs  clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset

602 
case False 
a14d2a854c02
tuned proofs  clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset

603 
with * have "N A \<noteq> \<infinity>" using emeasure_nonneg[of M A] by auto 
47694  604 
with A have "emeasure M ?O_0 + emeasure M A = emeasure M (?O_0 \<union> A)" 
50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

605 
using Q' by (auto intro!: plus_emeasure sets.countable_UN) 
47694  606 
also have "\<dots> = (SUP i. emeasure M (?O i \<union> A))" 
607 
proof (rule SUP_emeasure_incseq[of "\<lambda>i. ?O i \<union> A", symmetric, simplified]) 

40859  608 
show "range (\<lambda>i. ?O i \<union> A) \<subseteq> sets M" 
47694  609 
using `N A \<noteq> \<infinity>` O_sets A by auto 
44890
22f665a2e91c
new fastforce replacing fastsimp  less confusing name
nipkow
parents:
44568
diff
changeset

610 
qed (fastforce intro!: incseq_SucI) 
40859  611 
also have "\<dots> \<le> ?a" 
44928
7ef6505bde7f
renamed Complete_Lattices lemmas, removed legacy names
hoelzl
parents:
44918
diff
changeset

612 
proof (safe intro!: SUP_least) 
40859  613 
fix i have "?O i \<union> A \<in> ?Q" 
614 
proof (safe del: notI) 

615 
show "?O i \<union> A \<in> sets M" using O_sets A by auto 

47694  616 
from O_in_G[of i] have "N (?O i \<union> A) \<le> N (?O i) + N A" 
617 
using emeasure_subadditive[of "?O i" N A] A O_sets by (auto simp: sets_eq) 

618 
with O_in_G[of i] show "N (?O i \<union> A) \<noteq> \<infinity>" 

619 
using `N A \<noteq> \<infinity>` by auto 

40859  620 
qed 
47694  621 
then show "emeasure M (?O i \<union> A) \<le> ?a" by (rule SUP_upper) 
40859  622 
qed 
47694  623 
finally have "emeasure M A = 0" 
624 
unfolding a_eq using measure_nonneg[of M A] by (simp add: emeasure_eq_measure) 

625 
with `emeasure M A \<noteq> 0` show ?thesis by auto 

40859  626 
qed 
627 
qed } 

47694  628 
{ fix i show "N (Q i) \<noteq> \<infinity>" 
40859  629 
proof (cases i) 
630 
case 0 then show ?thesis 

631 
unfolding Q_def using Q'[of 0] by simp 

632 
next 

633 
case (Suc n) 

47694  634 
with `?O n \<in> ?Q` `?O (Suc n) \<in> ?Q` 
635 
emeasure_Diff[OF _ _ _ O_mono, of N n] emeasure_nonneg[of N "(\<Union> x\<le>n. Q' x)"] 

636 
show ?thesis 

637 
by (auto simp: sets_eq ereal_minus_eq_PInfty_iff Q_def) 

40859  638 
qed } 
639 
show "space M  ?O_0 \<in> sets M" using Q'_sets by auto 

640 
{ fix j have "(\<Union>i\<le>j. ?O i) = (\<Union>i\<le>j. Q i)" 

641 
proof (induct j) 

642 
case 0 then show ?case by (simp add: Q_def) 

643 
next 

644 
case (Suc j) 

44890
22f665a2e91c
new fastforce replacing fastsimp  less confusing name
nipkow
parents:
44568
diff
changeset

645 
have eq: "\<And>j. (\<Union>i\<le>j. ?O i) = (\<Union>i\<le>j. Q' i)" by fastforce 
40859  646 
have "{..j} \<union> {..Suc j} = {..Suc j}" by auto 
647 
then have "(\<Union>i\<le>Suc j. Q' i) = (\<Union>i\<le>j. Q' i) \<union> Q (Suc j)" 

648 
by (simp add: UN_Un[symmetric] Q_def del: UN_Un) 

649 
then show ?case using Suc by (auto simp add: eq atMost_Suc) 

650 
qed } 

651 
then have "(\<Union>j. (\<Union>i\<le>j. ?O i)) = (\<Union>j. (\<Union>i\<le>j. Q i))" by simp 

44890
22f665a2e91c
new fastforce replacing fastsimp  less confusing name
nipkow
parents:
44568
diff
changeset

652 
then show "space M  ?O_0 = space M  (\<Union>i. Q i)" by fastforce 
40859  653 
qed 
654 
qed 

655 

656 
lemma (in finite_measure) Radon_Nikodym_finite_measure_infinite: 

47694  657 
assumes "absolutely_continuous M N" and sets_eq: "sets N = sets M" 
658 
shows "\<exists>f\<in>borel_measurable M. (\<forall>x. 0 \<le> f x) \<and> density M f = N" 

40859  659 
proof  
660 
from split_space_into_finite_sets_and_rest[OF assms] 

661 
obtain Q0 and Q :: "nat \<Rightarrow> 'a set" 

662 
where Q: "disjoint_family Q" "range Q \<subseteq> sets M" 

663 
and Q0: "Q0 \<in> sets M" "Q0 = space M  (\<Union>i. Q i)" 

47694  664 
and in_Q0: "\<And>A. A \<in> sets M \<Longrightarrow> A \<subseteq> Q0 \<Longrightarrow> emeasure M A = 0 \<and> N A = 0 \<or> 0 < emeasure M A \<and> N A = \<infinity>" 
665 
and Q_fin: "\<And>i. N (Q i) \<noteq> \<infinity>" by force 

40859  666 
from Q have Q_sets: "\<And>i. Q i \<in> sets M" by auto 
47694  667 
let ?N = "\<lambda>i. density N (indicator (Q i))" and ?M = "\<lambda>i. density M (indicator (Q i))" 
668 
have "\<forall>i. \<exists>f\<in>borel_measurable (?M i). (\<forall>x. 0 \<le> f x) \<and> density (?M i) f = ?N i" 

669 
proof (intro allI finite_measure.Radon_Nikodym_finite_measure) 

38656  670 
fix i 
47694  671 
from Q show "finite_measure (?M i)" 
56996  672 
by (auto intro!: finite_measureI cong: nn_integral_cong 
47694  673 
simp add: emeasure_density subset_eq sets_eq) 
674 
from Q have "emeasure (?N i) (space N) = emeasure N (Q i)" 

56996  675 
by (simp add: sets_eq[symmetric] emeasure_density subset_eq cong: nn_integral_cong) 
47694  676 
with Q_fin show "finite_measure (?N i)" 
677 
by (auto intro!: finite_measureI) 

678 
show "sets (?N i) = sets (?M i)" by (simp add: sets_eq) 

50003  679 
have [measurable]: "\<And>A. A \<in> sets M \<Longrightarrow> A \<in> sets N" by (simp add: sets_eq) 
47694  680 
show "absolutely_continuous (?M i) (?N i)" 
681 
using `absolutely_continuous M N` `Q i \<in> sets M` 

682 
by (auto simp: absolutely_continuous_def null_sets_density_iff sets_eq 

683 
intro!: absolutely_continuous_AE[OF sets_eq]) 

38656  684 
qed 
47694  685 
from choice[OF this[unfolded Bex_def]] 
686 
obtain f where borel: "\<And>i. f i \<in> borel_measurable M" "\<And>i x. 0 \<le> f i x" 

687 
and f_density: "\<And>i. density (?M i) (f i) = ?N i" 

54776
db890d9fc5c2
ordered_euclidean_space compatible with more standard pointwise ordering on products; conditionally complete lattice with product order
immler
parents:
53374
diff
changeset

688 
by force 
47694  689 
{ fix A i assume A: "A \<in> sets M" 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

690 
with Q borel have "(\<integral>\<^sup>+x. f i x * indicator (Q i \<inter> A) x \<partial>M) = emeasure (density (?M i) (f i)) A" 
56996  691 
by (auto simp add: emeasure_density nn_integral_density subset_eq 
692 
intro!: nn_integral_cong split: split_indicator) 

47694  693 
also have "\<dots> = emeasure N (Q i \<inter> A)" 
694 
using A Q by (simp add: f_density emeasure_restricted subset_eq sets_eq) 

53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

695 
finally have "emeasure N (Q i \<inter> A) = (\<integral>\<^sup>+x. f i x * indicator (Q i \<inter> A) x \<partial>M)" .. } 
47694  696 
note integral_eq = this 
46731  697 
let ?f = "\<lambda>x. (\<Sum>i. f i x * indicator (Q i) x) + \<infinity> * indicator Q0 x" 
38656  698 
show ?thesis 
699 
proof (safe intro!: bexI[of _ ?f]) 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

700 
show "?f \<in> borel_measurable M" using Q0 borel Q_sets 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

701 
by (auto intro!: measurable_If) 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

702 
show "\<And>x. 0 \<le> ?f x" using borel by (auto intro!: suminf_0_le simp: indicator_def) 
47694  703 
show "density M ?f = N" 
704 
proof (rule measure_eqI) 

705 
fix A assume "A \<in> sets (density M ?f)" 

706 
then have "A \<in> sets M" by simp 

707 
have Qi: "\<And>i. Q i \<in> sets M" using Q by auto 

708 
have [intro,simp]: "\<And>i. (\<lambda>x. f i x * indicator (Q i \<inter> A) x) \<in> borel_measurable M" 

709 
"\<And>i. AE x in M. 0 \<le> f i x * indicator (Q i \<inter> A) x" 

710 
using borel Qi Q0(1) `A \<in> sets M` by (auto intro!: borel_measurable_ereal_times) 

53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

711 
have "(\<integral>\<^sup>+x. ?f x * indicator A x \<partial>M) = (\<integral>\<^sup>+x. (\<Sum>i. f i x * indicator (Q i \<inter> A) x) + \<infinity> * indicator (Q0 \<inter> A) x \<partial>M)" 
56996  712 
using borel by (intro nn_integral_cong) (auto simp: indicator_def) 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

713 
also have "\<dots> = (\<integral>\<^sup>+x. (\<Sum>i. f i x * indicator (Q i \<inter> A) x) \<partial>M) + \<infinity> * emeasure M (Q0 \<inter> A)" 
47694  714 
using borel Qi Q0(1) `A \<in> sets M` 
56996  715 
by (subst nn_integral_add) (auto simp del: ereal_infty_mult 
716 
simp add: nn_integral_cmult_indicator sets.Int intro!: suminf_0_le) 

47694  717 
also have "\<dots> = (\<Sum>i. N (Q i \<inter> A)) + \<infinity> * emeasure M (Q0 \<inter> A)" 
56996  718 
by (subst integral_eq[OF `A \<in> sets M`], subst nn_integral_suminf) auto 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

719 
finally have "(\<integral>\<^sup>+x. ?f x * indicator A x \<partial>M) = (\<Sum>i. N (Q i \<inter> A)) + \<infinity> * emeasure M (Q0 \<inter> A)" . 
47694  720 
moreover have "(\<Sum>i. N (Q i \<inter> A)) = N ((\<Union>i. Q i) \<inter> A)" 
721 
using Q Q_sets `A \<in> sets M` 

722 
by (subst suminf_emeasure) (auto simp: disjoint_family_on_def sets_eq) 

723 
moreover have "\<infinity> * emeasure M (Q0 \<inter> A) = N (Q0 \<inter> A)" 

724 
proof  

725 
have "Q0 \<inter> A \<in> sets M" using Q0(1) `A \<in> sets M` by blast 

726 
from in_Q0[OF this] show ?thesis by auto 

727 
qed 

728 
moreover have "Q0 \<inter> A \<in> sets M" "((\<Union>i. Q i) \<inter> A) \<in> sets M" 

729 
using Q_sets `A \<in> sets M` Q0(1) by auto 

730 
moreover have "((\<Union>i. Q i) \<inter> A) \<union> (Q0 \<inter> A) = A" "((\<Union>i. Q i) \<inter> A) \<inter> (Q0 \<inter> A) = {}" 

50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

731 
using `A \<in> sets M` sets.sets_into_space Q0 by auto 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

732 
ultimately have "N A = (\<integral>\<^sup>+x. ?f x * indicator A x \<partial>M)" 
47694  733 
using plus_emeasure[of "(\<Union>i. Q i) \<inter> A" N "Q0 \<inter> A"] by (simp add: sets_eq) 
734 
with `A \<in> sets M` borel Q Q0(1) show "emeasure (density M ?f) A = N A" 

50003  735 
by (auto simp: subset_eq emeasure_density) 
47694  736 
qed (simp add: sets_eq) 
38656  737 
qed 
738 
qed 

739 

740 
lemma (in sigma_finite_measure) Radon_Nikodym: 

47694  741 
assumes ac: "absolutely_continuous M N" assumes sets_eq: "sets N = sets M" 
742 
shows "\<exists>f \<in> borel_measurable M. (\<forall>x. 0 \<le> f x) \<and> density M f = N" 

38656  743 
proof  
744 
from Ex_finite_integrable_function 

56996  745 
obtain h where finite: "integral\<^sup>N M h \<noteq> \<infinity>" and 
38656  746 
borel: "h \<in> borel_measurable M" and 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

747 
nn: "\<And>x. 0 \<le> h x" and 
38656  748 
pos: "\<And>x. x \<in> space M \<Longrightarrow> 0 < h x" and 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

749 
"\<And>x. x \<in> space M \<Longrightarrow> h x < \<infinity>" by auto 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

750 
let ?T = "\<lambda>A. (\<integral>\<^sup>+x. h x * indicator A x \<partial>M)" 
47694  751 
let ?MT = "density M h" 
752 
from borel finite nn interpret T: finite_measure ?MT 

56996  753 
by (auto intro!: finite_measureI cong: nn_integral_cong simp: emeasure_density) 
47694  754 
have "absolutely_continuous ?MT N" "sets N = sets ?MT" 
755 
proof (unfold absolutely_continuous_def, safe) 

756 
fix A assume "A \<in> null_sets ?MT" 

757 
with borel have "A \<in> sets M" "AE x in M. x \<in> A \<longrightarrow> h x \<le> 0" 

758 
by (auto simp add: null_sets_density_iff) 

50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

759 
with pos sets.sets_into_space have "AE x in M. x \<notin> A" 
47694  760 
by (elim eventually_elim1) (auto simp: not_le[symmetric]) 
761 
then have "A \<in> null_sets M" 

762 
using `A \<in> sets M` by (simp add: AE_iff_null_sets) 

763 
with ac show "A \<in> null_sets N" 

764 
by (auto simp: absolutely_continuous_def) 

765 
qed (auto simp add: sets_eq) 

766 
from T.Radon_Nikodym_finite_measure_infinite[OF this] 

767 
obtain f where f_borel: "f \<in> borel_measurable M" "\<And>x. 0 \<le> f x" "density ?MT f = N" by auto 

768 
with nn borel show ?thesis 

769 
by (auto intro!: bexI[of _ "\<lambda>x. h x * f x"] simp: density_density_eq) 

38656  770 
qed 
771 

56994  772 
subsection {* Uniqueness of densities *} 
40859  773 

47694  774 
lemma finite_density_unique: 
40859  775 
assumes borel: "f \<in> borel_measurable M" "g \<in> borel_measurable M" 
47694  776 
assumes pos: "AE x in M. 0 \<le> f x" "AE x in M. 0 \<le> g x" 
56996  777 
and fin: "integral\<^sup>N M f \<noteq> \<infinity>" 
49785  778 
shows "density M f = density M g \<longleftrightarrow> (AE x in M. f x = g x)" 
40859  779 
proof (intro iffI ballI) 
47694  780 
fix A assume eq: "AE x in M. f x = g x" 
49785  781 
with borel show "density M f = density M g" 
782 
by (auto intro: density_cong) 

40859  783 
next 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

784 
let ?P = "\<lambda>f A. \<integral>\<^sup>+ x. f x * indicator A x \<partial>M" 
49785  785 
assume "density M f = density M g" 
786 
with borel have eq: "\<forall>A\<in>sets M. ?P f A = ?P g A" 

787 
by (simp add: emeasure_density[symmetric]) 

50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

788 
from this[THEN bspec, OF sets.top] fin 
56996  789 
have g_fin: "integral\<^sup>N M g \<noteq> \<infinity>" by (simp cong: nn_integral_cong) 
40859  790 
{ fix f g assume borel: "f \<in> borel_measurable M" "g \<in> borel_measurable M" 
47694  791 
and pos: "AE x in M. 0 \<le> f x" "AE x in M. 0 \<le> g x" 
56996  792 
and g_fin: "integral\<^sup>N M g \<noteq> \<infinity>" and eq: "\<forall>A\<in>sets M. ?P f A = ?P g A" 
40859  793 
let ?N = "{x\<in>space M. g x < f x}" 
794 
have N: "?N \<in> sets M" using borel by simp 

56996  795 
have "?P g ?N \<le> integral\<^sup>N M g" using pos 
796 
by (intro nn_integral_mono_AE) (auto split: split_indicator) 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

797 
then have Pg_fin: "?P g ?N \<noteq> \<infinity>" using g_fin by auto 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

798 
have "?P (\<lambda>x. (f x  g x)) ?N = (\<integral>\<^sup>+x. f x * indicator ?N x  g x * indicator ?N x \<partial>M)" 
56996  799 
by (auto intro!: nn_integral_cong simp: indicator_def) 
40859  800 
also have "\<dots> = ?P f ?N  ?P g ?N" 
56996  801 
proof (rule nn_integral_diff) 
40859  802 
show "(\<lambda>x. f x * indicator ?N x) \<in> borel_measurable M" "(\<lambda>x. g x * indicator ?N x) \<in> borel_measurable M" 
803 
using borel N by auto 

47694  804 
show "AE x in M. g x * indicator ?N x \<le> f x * indicator ?N x" 
805 
"AE x in M. 0 \<le> g x * indicator ?N x" 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

806 
using pos by (auto split: split_indicator) 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

807 
qed fact 
40859  808 
also have "\<dots> = 0" 
56996  809 
unfolding eq[THEN bspec, OF N] using nn_integral_nonneg[of M] Pg_fin by auto 
47694  810 
finally have "AE x in M. f x \<le> g x" 
56996  811 
using pos borel nn_integral_PInf_AE[OF borel(2) g_fin] 
812 
by (subst (asm) nn_integral_0_iff_AE) 

43920  813 
(auto split: split_indicator simp: not_less ereal_minus_le_iff) } 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

814 
from this[OF borel pos g_fin eq] this[OF borel(2,1) pos(2,1) fin] eq 
47694  815 
show "AE x in M. f x = g x" by auto 
40859  816 
qed 
817 

818 
lemma (in finite_measure) density_unique_finite_measure: 

819 
assumes borel: "f \<in> borel_measurable M" "f' \<in> borel_measurable M" 

47694  820 
assumes pos: "AE x in M. 0 \<le> f x" "AE x in M. 0 \<le> f' x" 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

821 
assumes f: "\<And>A. A \<in> sets M \<Longrightarrow> (\<integral>\<^sup>+x. f x * indicator A x \<partial>M) = (\<integral>\<^sup>+x. f' x * indicator A x \<partial>M)" 
40859  822 
(is "\<And>A. A \<in> sets M \<Longrightarrow> ?P f A = ?P f' A") 
47694  823 
shows "AE x in M. f x = f' x" 
40859  824 
proof  
47694  825 
let ?D = "\<lambda>f. density M f" 
826 
let ?N = "\<lambda>A. ?P f A" and ?N' = "\<lambda>A. ?P f' A" 

46731  827 
let ?f = "\<lambda>A x. f x * indicator A x" and ?f' = "\<lambda>A x. f' x * indicator A x" 
47694  828 

829 
have ac: "absolutely_continuous M (density M f)" "sets (density M f) = sets M" 

830 
using borel by (auto intro!: absolutely_continuousI_density) 

831 
from split_space_into_finite_sets_and_rest[OF this] 

40859  832 
obtain Q0 and Q :: "nat \<Rightarrow> 'a set" 
833 
where Q: "disjoint_family Q" "range Q \<subseteq> sets M" 

834 
and Q0: "Q0 \<in> sets M" "Q0 = space M  (\<Union>i. Q i)" 

47694  835 
and in_Q0: "\<And>A. A \<in> sets M \<Longrightarrow> A \<subseteq> Q0 \<Longrightarrow> emeasure M A = 0 \<and> ?D f A = 0 \<or> 0 < emeasure M A \<and> ?D f A = \<infinity>" 
836 
and Q_fin: "\<And>i. ?D f (Q i) \<noteq> \<infinity>" by force 

837 
with borel pos have in_Q0: "\<And>A. A \<in> sets M \<Longrightarrow> A \<subseteq> Q0 \<Longrightarrow> emeasure M A = 0 \<and> ?N A = 0 \<or> 0 < emeasure M A \<and> ?N A = \<infinity>" 

838 
and Q_fin: "\<And>i. ?N (Q i) \<noteq> \<infinity>" by (auto simp: emeasure_density subset_eq) 

839 

40859  840 
from Q have Q_sets: "\<And>i. Q i \<in> sets M" by auto 
47694  841 
let ?D = "{x\<in>space M. f x \<noteq> f' x}" 
842 
have "?D \<in> sets M" using borel by auto 

43920  843 
have *: "\<And>i x A. \<And>y::ereal. y * indicator (Q i) x * indicator A x = y * indicator (Q i \<inter> A) x" 
40859  844 
unfolding indicator_def by auto 
47694  845 
have "\<forall>i. AE x in M. ?f (Q i) x = ?f' (Q i) x" using borel Q_fin Q pos 
40859  846 
by (intro finite_density_unique[THEN iffD1] allI) 
50003  847 
(auto intro!: f measure_eqI simp: emeasure_density * subset_eq) 
47694  848 
moreover have "AE x in M. ?f Q0 x = ?f' Q0 x" 
40859  849 
proof (rule AE_I') 
43920  850 
{ fix f :: "'a \<Rightarrow> ereal" assume borel: "f \<in> borel_measurable M" 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

851 
and eq: "\<And>A. A \<in> sets M \<Longrightarrow> ?N A = (\<integral>\<^sup>+x. f x * indicator A x \<partial>M)" 
46731  852 
let ?A = "\<lambda>i. Q0 \<inter> {x \<in> space M. f x < (i::nat)}" 
47694  853 
have "(\<Union>i. ?A i) \<in> null_sets M" 
40859  854 
proof (rule null_sets_UN) 
43923  855 
fix i ::nat have "?A i \<in> sets M" 
40859  856 
using borel Q0(1) by auto 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

857 
have "?N (?A i) \<le> (\<integral>\<^sup>+x. (i::ereal) * indicator (?A i) x \<partial>M)" 
40859  858 
unfolding eq[OF `?A i \<in> sets M`] 
56996  859 
by (auto intro!: nn_integral_mono simp: indicator_def) 
47694  860 
also have "\<dots> = i * emeasure M (?A i)" 
56996  861 
using `?A i \<in> sets M` by (auto intro!: nn_integral_cmult_indicator) 
47694  862 
also have "\<dots> < \<infinity>" using emeasure_real[of "?A i"] by simp 
863 
finally have "?N (?A i) \<noteq> \<infinity>" by simp 

864 
then show "?A i \<in> null_sets M" using in_Q0[OF `?A i \<in> sets M`] `?A i \<in> sets M` by auto 

40859  865 
qed 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

866 
also have "(\<Union>i. ?A i) = Q0 \<inter> {x\<in>space M. f x \<noteq> \<infinity>}" 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

867 
by (auto simp: less_PInf_Ex_of_nat real_eq_of_nat) 
47694  868 
finally have "Q0 \<inter> {x\<in>space M. f x \<noteq> \<infinity>} \<in> null_sets M" by simp } 
40859  869 
from this[OF borel(1) refl] this[OF borel(2) f] 
47694  870 
have "Q0 \<inter> {x\<in>space M. f x \<noteq> \<infinity>} \<in> null_sets M" "Q0 \<inter> {x\<in>space M. f' x \<noteq> \<infinity>} \<in> null_sets M" by simp_all 
871 
then show "(Q0 \<inter> {x\<in>space M. f x \<noteq> \<infinity>}) \<union> (Q0 \<inter> {x\<in>space M. f' x \<noteq> \<infinity>}) \<in> null_sets M" by (rule null_sets.Un) 

40859  872 
show "{x \<in> space M. ?f Q0 x \<noteq> ?f' Q0 x} \<subseteq> 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

873 
(Q0 \<inter> {x\<in>space M. f x \<noteq> \<infinity>}) \<union> (Q0 \<inter> {x\<in>space M. f' x \<noteq> \<infinity>})" by (auto simp: indicator_def) 
40859  874 
qed 
47694  875 
moreover have "AE x in M. (?f Q0 x = ?f' Q0 x) \<longrightarrow> (\<forall>i. ?f (Q i) x = ?f' (Q i) x) \<longrightarrow> 
40859  876 
?f (space M) x = ?f' (space M) x" 
877 
by (auto simp: indicator_def Q0) 

47694  878 
ultimately have "AE x in M. ?f (space M) x = ?f' (space M) x" 
879 
unfolding AE_all_countable[symmetric] 

880 
by eventually_elim (auto intro!: AE_I2 split: split_if_asm simp: indicator_def) 

881 
then show "AE x in M. f x = f' x" by auto 

40859  882 
qed 
883 

884 
lemma (in sigma_finite_measure) density_unique: 

47694  885 
assumes f: "f \<in> borel_measurable M" "AE x in M. 0 \<le> f x" 
886 
assumes f': "f' \<in> borel_measurable M" "AE x in M. 0 \<le> f' x" 

887 
assumes density_eq: "density M f = density M f'" 

888 
shows "AE x in M. f x = f' x" 

40859  889 
proof  
890 
obtain h where h_borel: "h \<in> borel_measurable M" 

56996  891 
and fin: "integral\<^sup>N M h \<noteq> \<infinity>" and pos: "\<And>x. x \<in> space M \<Longrightarrow> 0 < h x \<and> h x < \<infinity>" "\<And>x. 0 \<le> h x" 
40859  892 
using Ex_finite_integrable_function by auto 
47694  893 
then have h_nn: "AE x in M. 0 \<le> h x" by auto 
894 
let ?H = "density M h" 

895 
interpret h: finite_measure ?H 

896 
using fin h_borel pos 

56996  897 
by (intro finite_measureI) (simp cong: nn_integral_cong emeasure_density add: fin) 
47694  898 
let ?fM = "density M f" 
899 
let ?f'M = "density M f'" 

40859  900 
{ fix A assume "A \<in> sets M" 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

901 
then have "{x \<in> space M. h x * indicator A x \<noteq> 0} = A" 
50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

902 
using pos(1) sets.sets_into_space by (force simp: indicator_def) 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

903 
then have "(\<integral>\<^sup>+x. h x * indicator A x \<partial>M) = 0 \<longleftrightarrow> A \<in> null_sets M" 
56996  904 
using h_borel `A \<in> sets M` h_nn by (subst nn_integral_0_iff) auto } 
40859  905 
note h_null_sets = this 
906 
{ fix A assume "A \<in> sets M" 

53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

907 
have "(\<integral>\<^sup>+x. f x * (h x * indicator A x) \<partial>M) = (\<integral>\<^sup>+x. h x * indicator A x \<partial>?fM)" 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

908 
using `A \<in> sets M` h_borel h_nn f f' 
56996  909 
by (intro nn_integral_density[symmetric]) auto 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

910 
also have "\<dots> = (\<integral>\<^sup>+x. h x * indicator A x \<partial>?f'M)" 
47694  911 
by (simp_all add: density_eq) 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

912 
also have "\<dots> = (\<integral>\<^sup>+x. f' x * (h x * indicator A x) \<partial>M)" 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

913 
using `A \<in> sets M` h_borel h_nn f f' 
56996  914 
by (intro nn_integral_density) auto 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

915 
finally have "(\<integral>\<^sup>+x. h x * (f x * indicator A x) \<partial>M) = (\<integral>\<^sup>+x. h x * (f' x * indicator A x) \<partial>M)" 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

916 
by (simp add: ac_simps) 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

917 
then have "(\<integral>\<^sup>+x. (f x * indicator A x) \<partial>?H) = (\<integral>\<^sup>+x. (f' x * indicator A x) \<partial>?H)" 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

918 
using `A \<in> sets M` h_borel h_nn f f' 
56996  919 
by (subst (asm) (1 2) nn_integral_density[symmetric]) auto } 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

920 
then have "AE x in ?H. f x = f' x" using h_borel h_nn f f' 
47694  921 
by (intro h.density_unique_finite_measure absolutely_continuous_AE[of M]) 
922 
(auto simp add: AE_density) 

923 
then show "AE x in M. f x = f' x" 

924 
unfolding eventually_ae_filter using h_borel pos 

925 
by (auto simp add: h_null_sets null_sets_density_iff not_less[symmetric] 

50021
d96a3f468203
add support for function application to measurability prover
hoelzl
parents:
50003
diff
changeset

926 
AE_iff_null_sets[symmetric]) blast 
40859  927 
qed 
928 

47694  929 
lemma (in sigma_finite_measure) density_unique_iff: 
930 
assumes f: "f \<in> borel_measurable M" and "AE x in M. 0 \<le> f x" 

931 
assumes f': "f' \<in> borel_measurable M" and "AE x in M. 0 \<le> f' x" 

932 
shows "density M f = density M f' \<longleftrightarrow> (AE x in M. f x = f' x)" 

933 
using density_unique[OF assms] density_cong[OF f f'] by auto 

934 

49785  935 
lemma sigma_finite_density_unique: 
936 
assumes borel: "f \<in> borel_measurable M" "g \<in> borel_measurable M" 

937 
assumes pos: "AE x in M. 0 \<le> f x" "AE x in M. 0 \<le> g x" 

938 
and fin: "sigma_finite_measure (density M f)" 

939 
shows "density M f = density M g \<longleftrightarrow> (AE x in M. f x = g x)" 

940 
proof 

941 
assume "AE x in M. f x = g x" with borel show "density M f = density M g" 

942 
by (auto intro: density_cong) 

943 
next 

944 
assume eq: "density M f = density M g" 

945 
interpret f!: sigma_finite_measure "density M f" by fact 

946 
from f.sigma_finite_incseq guess A . note cover = this 

947 

948 
have "AE x in M. \<forall>i. x \<in> A i \<longrightarrow> f x = g x" 

949 
unfolding AE_all_countable 

950 
proof 

951 
fix i 

952 
have "density (density M f) (indicator (A i)) = density (density M g) (indicator (A i))" 

953 
unfolding eq .. 

53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

954 
moreover have "(\<integral>\<^sup>+x. f x * indicator (A i) x \<partial>M) \<noteq> \<infinity>" 
49785  955 
using cover(1) cover(3)[of i] borel by (auto simp: emeasure_density subset_eq) 
956 
ultimately have "AE x in M. f x * indicator (A i) x = g x * indicator (A i) x" 

957 
using borel pos cover(1) pos 

958 
by (intro finite_density_unique[THEN iffD1]) 

959 
(auto simp: density_density_eq subset_eq) 

960 
then show "AE x in M. x \<in> A i \<longrightarrow> f x = g x" 

961 
by auto 

962 
qed 

963 
with AE_space show "AE x in M. f x = g x" 

964 
apply eventually_elim 

965 
using cover(2)[symmetric] 

966 
apply auto 

967 
done 

968 
qed 

969 

49778
bbbc0f492780
sigma_finite_iff_density_finite does not require a positive density function
hoelzl
parents:
47694
diff
changeset

970 
lemma (in sigma_finite_measure) sigma_finite_iff_density_finite': 
47694  971 
assumes f: "f \<in> borel_measurable M" "AE x in M. 0 \<le> f x" 
972 
shows "sigma_finite_measure (density M f) \<longleftrightarrow> (AE x in M. f x \<noteq> \<infinity>)" 

973 
(is "sigma_finite_measure ?N \<longleftrightarrow> _") 

40859  974 
proof 
41689
3e39b0e730d6
the measure valuation is again part of the measure_space type, instead of an explicit parameter to the locale;
hoelzl
parents:
41661
diff
changeset

975 
assume "sigma_finite_measure ?N" 
47694  976 
then interpret N: sigma_finite_measure ?N . 
977 
from N.Ex_finite_integrable_function obtain h where 

56996  978 
h: "h \<in> borel_measurable M" "integral\<^sup>N ?N h \<noteq> \<infinity>" and 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

979 
h_nn: "\<And>x. 0 \<le> h x" and 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

980 
fin: "\<forall>x\<in>space M. 0 < h x \<and> h x < \<infinity>" by auto 
47694  981 
have "AE x in M. f x * h x \<noteq> \<infinity>" 
40859  982 
proof (rule AE_I') 
56996  983 
have "integral\<^sup>N ?N h = (\<integral>\<^sup>+x. f x * h x \<partial>M)" using f h h_nn 
984 
by (auto intro!: nn_integral_density) 

53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

985 
then have "(\<integral>\<^sup>+x. f x * h x \<partial>M) \<noteq> \<infinity>" 
40859  986 
using h(2) by simp 
47694  987 
then show "(\<lambda>x. f x * h x) ` {\<infinity>} \<inter> space M \<in> null_sets M" 
56996  988 
using f h(1) by (auto intro!: nn_integral_PInf borel_measurable_vimage) 
40859  989 
qed auto 
47694  990 
then show "AE x in M. f x \<noteq> \<infinity>" 
41705  991 
using fin by (auto elim!: AE_Ball_mp) 
40859  992 
next 
47694  993 
assume AE: "AE x in M. f x \<noteq> \<infinity>" 
40859  994 
from sigma_finite guess Q .. note Q = this 
43923  995 
def A \<equiv> "\<lambda>i. f ` (case i of 0 \<Rightarrow> {\<infinity>}  Suc n \<Rightarrow> {.. ereal(of_nat (Suc n))}) \<inter> space M" 
40859  996 
{ fix i j have "A i \<inter> Q j \<in> sets M" 
997 
unfolding A_def using f Q 

50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

998 
apply (rule_tac sets.Int) 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

999 
by (cases i) (auto intro: measurable_sets[OF f(1)]) } 
40859  1000 
note A_in_sets = this 
46731  1001 
let ?A = "\<lambda>n. case prod_decode n of (i,j) \<Rightarrow> A i \<inter> Q j" 
41689
3e39b0e730d6
the measure valuation is again part of the measure_space type, instead of an explicit parameter to the locale;
hoelzl
parents:
41661
diff
changeset

1002 
show "sigma_finite_measure ?N" 
40859  1003 
proof (default, intro exI conjI subsetI allI) 
1004 
fix x assume "x \<in> range ?A" 

1005 
then obtain n where n: "x = ?A n" by auto 

41689
3e39b0e730d6
the measure valuation is again part of the measure_space type, instead of an explicit parameter to the locale;
hoelzl
parents:
41661
diff
changeset

1006 
then show "x \<in> sets ?N" using A_in_sets by (cases "prod_decode n") auto 
40859  1007 
next 
1008 
have "(\<Union>i. ?A i) = (\<Union>i j. A i \<inter> Q j)" 

1009 
proof safe 

1010 
fix x i j assume "x \<in> A i" "x \<in> Q j" 

1011 
then show "x \<in> (\<Union>i. case prod_decode i of (i, j) \<Rightarrow> A i \<inter> Q j)" 

1012 
by (intro UN_I[of "prod_encode (i,j)"]) auto 

1013 
qed auto 

1014 
also have "\<dots> = (\<Union>i. A i) \<inter> space M" using Q by auto 

1015 
also have "(\<Union>i. A i) = space M" 

1016 
proof safe 

1017 
fix x assume x: "x \<in> space M" 

1018 
show "x \<in> (\<Union>i. A i)" 

1019 
proof (cases "f x") 

41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

1020 
case PInf with x show ?thesis unfolding A_def by (auto intro: exI[of _ 0]) 
40859  1021 
next 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

1022 
case (real r) 
43923  1023 
with less_PInf_Ex_of_nat[of "f x"] obtain n :: nat where "f x < n" by (auto simp: real_eq_of_nat) 
45769
2d5b1af2426a
real is better supported than real_of_nat, use it in the nat => ereal coercion
hoelzl
parents:
44941
diff
changeset

1024 
then show ?thesis using x real unfolding A_def by (auto intro!: exI[of _ "Suc n"] simp: real_eq_of_nat) 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

1025 
next 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

1026 
case MInf with x show ?thesis 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

1027 
unfolding A_def by (auto intro!: exI[of _ "Suc 0"]) 
40859  1028 
qed 
1029 
qed (auto simp: A_def) 

41689
3e39b0e730d6
the measure valuation is again part of the measure_space type, instead of an explicit parameter to the locale;
hoelzl
parents:
41661
diff
changeset

1030 
finally show "(\<Union>i. ?A i) = space ?N" by simp 
40859  1031 
next 
1032 
fix n obtain i j where 

1033 
[simp]: "prod_decode n = (i, j)" by (cases "prod_decode n") auto 

53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

1034 
have "(\<integral>\<^sup>+x. f x * indicator (A i \<inter> Q j) x \<partial>M) \<noteq> \<infinity>" 
40859  1035 
proof (cases i) 
1036 
case 0 

47694  1037 
have "AE x in M. f x * indicator (A i \<inter> Q j) x = 0" 
41705  1038 
using AE by (auto simp: A_def `i = 0`) 
56996  1039 
from nn_integral_cong_AE[OF this] show ?thesis by simp 
40859  1040 
next 
1041 
case (Suc n) 

53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

1042 
then have "(\<integral>\<^sup>+x. f x * indicator (A i \<inter> Q j) x \<partial>M) \<le> 
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

1043 
(\<integral>\<^sup>+x. (Suc n :: ereal) * indicator (Q j) x \<partial>M)" 
56996  1044 
by (auto intro!: nn_integral_mono simp: indicator_def A_def real_eq_of_nat) 
47694  1045 
also have "\<dots> = Suc n * emeasure M (Q j)" 
56996  1046 
using Q by (auto intro!: nn_integral_cmult_indicator) 
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

1047 
also have "\<dots> < \<infinity>" 
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41832
diff
changeset

1048 
using Q by (auto simp: real_eq_of_nat[symmetric]) 
40859  1049 
finally show ?thesis by simp 
1050 
qed 

47694  1051 
then show "emeasure ?N (?A n) \<noteq> \<infinity>" 
1052 
using A_in_sets Q f by (auto simp: emeasure_density) 

40859  1053 
qed 
1054 
qed 

1055 

49778
bbbc0f492780
sigma_finite_iff_density_finite does not require a positive density function
hoelzl
parents:
47694
diff
changeset

1056 
lemma (in sigma_finite_measure) sigma_finite_iff_density_finite: 
bbbc0f492780
sigma_finite_iff_density_finite does not require a positive density function
hoelzl
parents:
47694
diff
changeset

1057 
"f \<in> borel_measurable M \<Longrightarrow> sigma_finite_measure (density M f) \<longleftrightarrow> (AE x in M. f x \<noteq> \<infinity>)" 
bbbc0f492780
sigma_finite_iff_density_finite does not require a positive density function
hoelzl
parents:
47694
diff
changeset

1058 
apply (subst density_max_0) 
bbbc0f492780
sigma_finite_iff_density_finite does not require a positive density function
hoelzl
parents:
47694
diff
changeset

1059 
apply (subst sigma_finite_iff_density_finite') 
bbbc0f492780
sigma_finite_iff_density_finite does not require a positive density function
hoelzl
parents:
47694
diff
changeset

1060 
apply (auto simp: max_def intro!: measurable_If) 
bbbc0f492780
sigma_finite_iff_density_finite does not require a positive density function
hoelzl
parents:
47694
diff
changeset

1061 
done 
bbbc0f492780
sigma_finite_iff_density_finite does not require a positive density function
hoelzl
parents:
47694
diff
changeset

1062 

56994  1063 
subsection {* RadonNikodym derivative *} 
38656  1064 

56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1065 
definition RN_deriv :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> 'a \<Rightarrow> ereal" where 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1066 
"RN_deriv M N = 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1067 
(if \<exists>f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1068 
then SOME f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1069 
else (\<lambda>_. 0))" 
38656  1070 

56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1071 
lemma RN_derivI: 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1072 
assumes "f \<in> borel_measurable M" "\<And>x. 0 \<le> f x" "density M f = N" 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1073 
shows "density M (RN_deriv M N) = N" 
40859  1074 
proof  
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1075 
have "\<exists>f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N" 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1076 
using assms by auto 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1077 
moreover then have "density M (SOME f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N) = N" 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1078 
by (rule someI2_ex) auto 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1079 
ultimately show ?thesis 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1080 
by (auto simp: RN_deriv_def) 
40859  1081 
qed 
1082 

56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1083 
lemma 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1084 
shows borel_measurable_RN_deriv[measurable]: "RN_deriv M N \<in> borel_measurable M" (is ?m) 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1085 
and RN_deriv_nonneg: "0 \<le> RN_deriv M N x" (is ?nn) 
38656  1086 
proof  
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1087 
{ assume ex: "\<exists>f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N" 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1088 
have 1: "(SOME f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N) \<in> borel_measurable M" 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1089 
using ex by (rule someI2_ex) auto 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1090 
moreover 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1091 
have 2: "0 \<le> (SOME f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N) x" 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1092 
using ex by (rule someI2_ex) auto 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1093 
note 1 2 } 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1094 
from this show ?m ?nn 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1095 
by (auto simp: RN_deriv_def) 
38656  1096 
qed 
1097 

56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1098 
lemma density_RN_deriv_density: 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1099 
assumes f: "f \<in> borel_measurable M" "AE x in M. 0 \<le> f x" 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1100 
shows "density M (RN_deriv M (density M f)) = density M f" 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1101 
proof (rule RN_derivI) 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1102 
show "(\<lambda>x. max 0 (f x)) \<in> borel_measurable M" "\<And>x. 0 \<le> max 0 (f x)" 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1103 
using f by auto 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1104 
show "density M (\<lambda>x. max 0 (f x)) = density M f" 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1105 
using f by (intro density_cong) (auto simp: max_def) 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1106 
qed 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1107 

e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1108 
lemma (in sigma_finite_measure) density_RN_deriv: 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1109 
"absolutely_continuous M N \<Longrightarrow> sets N = sets M \<Longrightarrow> density M (RN_deriv M N) = N" 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1110 
by (metis RN_derivI Radon_Nikodym) 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1111 

56996  1112 
lemma (in sigma_finite_measure) RN_deriv_nn_integral: 
47694  1113 
assumes N: "absolutely_continuous M N" "sets N = sets M" 
40859  1114 
and f: "f \<in> borel_measurable M" 
56996  1115 
shows "integral\<^sup>N N f = (\<integral>\<^sup>+x. RN_deriv M N x * f x \<partial>M)" 
40859  1116 
proof  
56996  1117 
have "integral\<^sup>N N f = integral\<^sup>N (density M (RN_deriv M N)) f" 
47694  1118 
using N by (simp add: density_RN_deriv) 
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
52141
diff
changeset

1119 
also have "\<dots> = (\<integral>\<^sup>+x. RN_deriv M N x * f x \<partial>M)" 
56996  1120 
using f by (simp add: nn_integral_density RN_deriv_nonneg) 
47694  1121 
finally show ?thesis by simp 
40859  1122 
qed 
1123 

47694  1124 
lemma null_setsD_AE: "N \<in> null_sets M \<Longrightarrow> AE x in M. x \<notin> N" 
1125 
using AE_iff_null_sets[of N M] by auto 

1126 

1127 
lemma (in sigma_finite_measure) RN_deriv_unique: 

1128 
assumes f: "f \<in> borel_measurable M" "AE x in M. 0 \<le> f x" 

1129 
and eq: "density M f = N" 

1130 
shows "AE x in M. f x = RN_deriv M N x" 

49785  1131 
unfolding eq[symmetric] 
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1132 
by (intro density_unique_iff[THEN iffD1] f borel_measurable_RN_deriv 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1133 
RN_deriv_nonneg[THEN AE_I2] density_RN_deriv_density[symmetric]) 
49785  1134 

1135 
lemma RN_deriv_unique_sigma_finite: 

1136 
assumes f: "f \<in> borel_measurable M" "AE x in M. 0 \<le> f x" 

1137 
and eq: "density M f = N" and fin: "sigma_finite_measure N" 

1138 
shows "AE x in M. f x = RN_deriv M N x" 

1139 
using fin unfolding eq[symmetric] 

56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1140 
by (intro sigma_finite_density_unique[THEN iffD1] f borel_measurable_RN_deriv 
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1141 
RN_deriv_nonneg[THEN AE_I2] density_RN_deriv_density[symmetric]) 
47694  1142 

1143 
lemma (in sigma_finite_measure) RN_deriv_distr: 

1144 
fixes T :: "'a \<Rightarrow> 'b" 

1145 
assumes T: "T \<in> measurable M M'" and T': "T' \<in> measurable M' M" 

1146 
and inv: "\<forall>x\<in>space M. T' (T x) = x" 

50021
d96a3f468203
add support for function application to measurability prover
hoelzl
parents:
50003
diff
changeset

1147 
and ac[simp]: "absolutely_continuous (distr M M' T) (distr N M' T)" 
47694  1148 
and N: "sets N = sets M" 
1149 
shows "AE x in M. RN_deriv (distr M M' T) (distr N M' T) (T x) = RN_deriv M N x" 

41832  1150 
proof (rule RN_deriv_unique) 
47694  1151 
have [simp]: "sets N = sets M" by fact 
1152 
note sets_eq_imp_space_eq[OF N, simp] 

1153 
have measurable_N[simp]: "\<And>M'. measurable N M' = measurable M M'" by (auto simp: measurable_def) 

1154 
{ fix A assume "A \<in> sets M" 

50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

1155 
with inv T T' sets.sets_into_space[OF this] 
47694  1156 
have "T ` T' ` A \<inter> T ` space M' \<inter> space M = A" 
1157 
by (auto simp: measurable_def) } 

1158 
note eq = this[simp] 

1159 
{ fix A assume "A \<in> sets M" 

50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

1160 
with inv T T' sets.sets_into_space[OF this] 
47694  1161 
have "(T' \<circ> T) ` A \<inter> space M = A" 
1162 
by (auto simp: measurable_def) } 

1163 
note eq2 = this[simp] 

1164 
let ?M' = "distr M M' T" and ?N' = "distr N M' T" 

1165 
interpret M': sigma_finite_measure ?M' 

41832  1166 
proof 
1167 
from sigma_finite guess F .. note F = this 

47694  1168 
show "\<exists>A::nat \<Rightarrow> 'b set. range A \<subseteq> sets ?M' \<and> (\<Union>i. A i) = space ?M' \<and> (\<forall>i. emeasure ?M' (A i) \<noteq> \<infinity>)" 
41832  1169 
proof (intro exI conjI allI) 
47694  1170 
show *: "range (\<lambda>i. T' ` F i \<inter> space ?M') \<subseteq> sets ?M'" 
1171 
using F T' by (auto simp: measurable_def) 

1172 
show "(\<Union>i. T' ` F i \<inter> space ?M') = space ?M'" 

1173 
using F T' by (force simp: measurable_def) 

41832  1174 
fix i 
1175 
have "T' ` F i \<inter> space M' \<in> sets M'" using * by auto 

1176 
moreover 

1177 
have Fi: "F i \<in> sets M" using F by auto 

47694  1178 
ultimately show "emeasure ?M' (T' ` F i \<inter> space ?M') \<noteq> \<infinity>" 
1179 
using F T T' by (simp add: emeasure_distr) 

41832  1180 
qed 
1181 
qed 

47694  1182 
have "(RN_deriv ?M' ?N') \<circ> T \<in> borel_measurable M" 
50021
d96a3f468203
add support for function application to measurability prover
hoelzl
parents:
50003
diff
changeset

1183 
using T ac by measurable 
47694  1184 
then show "(\<lambda>x. RN_deriv ?M' ?N' (T x)) \<in> borel_measurable M" 
41832  1185 
by (simp add: comp_def) 
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from realvalued function to functions on realnormed vector spaces
hoelzl
parents:
56537
diff
changeset

1186 
show "AE x in M. 0 \<le> RN_deriv ?M' ?N' (T x)" by (auto intro: RN_deriv_nonneg) 
47694  1187 

1188 
have "N = distr N M (T' \<circ> T)" 

1189 
by (subst measure_of_of_measure[of N, symmetric]) 

50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50021
diff
changeset

1190 
(auto simp add: distr_def sets.sigma_sets_eq intro!: measure_of_eq sets.space_closed) 
47694  1191 
also have "\<dots> = distr (distr N M' T) M T'" 
1192 
using T T' by (simp add: distr_distr) 

1193 
also have "\<dots> = distr (density (distr M M' T) (RN_d 