6 |
6 |
7 header {* Measure spaces and their properties *} |
7 header {* Measure spaces and their properties *} |
8 |
8 |
9 theory Measure_Space |
9 theory Measure_Space |
10 imports |
10 imports |
11 Measurable |
11 Measurable Multivariate_Analysis |
12 "~~/src/HOL/Multivariate_Analysis/Extended_Real_Limits" |
|
13 begin |
12 begin |
14 |
13 |
15 lemma sums_def2: |
|
16 "f sums x \<longleftrightarrow> (\<lambda>n. (\<Sum>i\<le>n. f i)) ----> x" |
|
17 unfolding sums_def |
|
18 apply (subst LIMSEQ_Suc_iff[symmetric]) |
|
19 unfolding lessThan_Suc_atMost .. |
|
20 |
|
21 subsection "Relate extended reals and the indicator function" |
14 subsection "Relate extended reals and the indicator function" |
22 |
|
23 lemma ereal_indicator: "ereal (indicator A x) = indicator A x" |
|
24 by (auto simp: indicator_def one_ereal_def) |
|
25 |
|
26 lemma ereal_mult_indicator: "ereal (x * indicator A y) = ereal x * indicator A y" |
|
27 by (simp split: split_indicator) |
|
28 |
|
29 lemma ereal_indicator_pos[simp,intro]: "0 \<le> (indicator A x ::ereal)" |
|
30 unfolding indicator_def by auto |
|
31 |
|
32 lemma LIMSEQ_indicator_UN: |
|
33 "(\<lambda>k. indicator (\<Union> i<k. A i) x) ----> (indicator (\<Union>i. A i) x :: real)" |
|
34 proof cases |
|
35 assume "\<exists>i. x \<in> A i" then guess i .. note i = this |
|
36 then have *: "\<And>n. (indicator (\<Union> i<n + Suc i. A i) x :: real) = 1" |
|
37 "(indicator (\<Union> i. A i) x :: real) = 1" by (auto simp: indicator_def) |
|
38 show ?thesis |
|
39 apply (rule LIMSEQ_offset[of _ "Suc i"]) unfolding * by auto |
|
40 qed (auto simp: indicator_def) |
|
41 |
|
42 lemma indicator_add: |
|
43 "A \<inter> B = {} \<Longrightarrow> (indicator A x::_::monoid_add) + indicator B x = indicator (A \<union> B) x" |
|
44 unfolding indicator_def by auto |
|
45 |
15 |
46 lemma suminf_cmult_indicator: |
16 lemma suminf_cmult_indicator: |
47 fixes f :: "nat \<Rightarrow> ereal" |
17 fixes f :: "nat \<Rightarrow> ereal" |
48 assumes "disjoint_family A" "x \<in> A i" "\<And>i. 0 \<le> f i" |
18 assumes "disjoint_family A" "x \<in> A i" "\<And>i. 0 \<le> f i" |
49 shows "(\<Sum>n. f n * indicator (A n) x) = f i" |
19 shows "(\<Sum>n. f n * indicator (A n) x) = f i" |
317 using disjointed_additive[OF f A(1,2)] . |
287 using disjointed_additive[OF f A(1,2)] . |
318 ultimately show "(\<lambda>i. f (A i)) ----> f (\<Union>i. A i)" by simp |
288 ultimately show "(\<lambda>i. f (A i)) ----> f (\<Union>i. A i)" by simp |
319 next |
289 next |
320 assume cont: "\<forall>A. range A \<subseteq> M \<longrightarrow> incseq A \<longrightarrow> (\<Union>i. A i) \<in> M \<longrightarrow> (\<lambda>i. f (A i)) ----> f (\<Union>i. A i)" |
290 assume cont: "\<forall>A. range A \<subseteq> M \<longrightarrow> incseq A \<longrightarrow> (\<Union>i. A i) \<in> M \<longrightarrow> (\<lambda>i. f (A i)) ----> f (\<Union>i. A i)" |
321 fix A :: "nat \<Rightarrow> 'a set" assume A: "range A \<subseteq> M" "disjoint_family A" "(\<Union>i. A i) \<in> M" |
291 fix A :: "nat \<Rightarrow> 'a set" assume A: "range A \<subseteq> M" "disjoint_family A" "(\<Union>i. A i) \<in> M" |
322 have *: "(\<Union>n. (\<Union>i\<le>n. A i)) = (\<Union>i. A i)" by auto |
292 have *: "(\<Union>n. (\<Union>i<n. A i)) = (\<Union>i. A i)" by auto |
323 have "(\<lambda>n. f (\<Union>i\<le>n. A i)) ----> f (\<Union>i. A i)" |
293 have "(\<lambda>n. f (\<Union>i<n. A i)) ----> f (\<Union>i. A i)" |
324 proof (unfold *[symmetric], intro cont[rule_format]) |
294 proof (unfold *[symmetric], intro cont[rule_format]) |
325 show "range (\<lambda>i. \<Union> i\<le>i. A i) \<subseteq> M" "(\<Union>i. \<Union> i\<le>i. A i) \<in> M" |
295 show "range (\<lambda>i. \<Union> i<i. A i) \<subseteq> M" "(\<Union>i. \<Union> i<i. A i) \<in> M" |
326 using A * by auto |
296 using A * by auto |
327 qed (force intro!: incseq_SucI) |
297 qed (force intro!: incseq_SucI) |
328 moreover have "\<And>n. f (\<Union>i\<le>n. A i) = (\<Sum>i\<le>n. f (A i))" |
298 moreover have "\<And>n. f (\<Union>i<n. A i) = (\<Sum>i<n. f (A i))" |
329 using A |
299 using A |
330 by (intro additive_sum[OF f, of _ A, symmetric]) |
300 by (intro additive_sum[OF f, of _ A, symmetric]) |
331 (auto intro: disjoint_family_on_mono[where B=UNIV]) |
301 (auto intro: disjoint_family_on_mono[where B=UNIV]) |
332 ultimately |
302 ultimately |
333 have "(\<lambda>i. f (A i)) sums f (\<Union>i. A i)" |
303 have "(\<lambda>i. f (A i)) sums f (\<Union>i. A i)" |
334 unfolding sums_def2 by simp |
304 unfolding sums_def by simp |
335 from sums_unique[OF this] |
305 from sums_unique[OF this] |
336 show "(\<Sum>i. f (A i)) = f (\<Union>i. A i)" by simp |
306 show "(\<Sum>i. f (A i)) = f (\<Union>i. A i)" by simp |
337 qed |
307 qed |
338 |
308 |
339 lemma (in ring_of_sets) continuous_from_above_iff_empty_continuous: |
309 lemma (in ring_of_sets) continuous_from_above_iff_empty_continuous: |