author | paulson <lp15@cam.ac.uk> |
Mon, 01 Apr 2019 17:02:43 +0100 | |
changeset 70019 | 095dce9892e8 |
parent 69861 | 62e47f06d22c |
child 70097 | 4005298550a6 |
permissions | -rw-r--r-- |
63627 | 1 |
(* Title: HOL/Analysis/Nonnegative_Lebesgue_Integration.thy |
42067 | 2 |
Author: Johannes Hölzl, TU München |
3 |
Author: Armin Heller, TU München |
|
4 |
*) |
|
38656 | 5 |
|
61808 | 6 |
section \<open>Lebesgue Integration for Nonnegative Functions\<close> |
35582 | 7 |
|
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
8 |
theory Nonnegative_Lebesgue_Integration |
47694 | 9 |
imports Measure_Space Borel_Space |
35582 | 10 |
begin |
11 |
||
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
12 |
subsection%unimportant \<open>Approximating functions\<close> |
64283
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
13 |
|
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
14 |
lemma AE_upper_bound_inf_ennreal: |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
15 |
fixes F G::"'a \<Rightarrow> ennreal" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
16 |
assumes "\<And>e. (e::real) > 0 \<Longrightarrow> AE x in M. F x \<le> G x + e" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
17 |
shows "AE x in M. F x \<le> G x" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
18 |
proof - |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
19 |
have "AE x in M. \<forall>n::nat. F x \<le> G x + ennreal (1 / Suc n)" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
20 |
using assms by (auto simp: AE_all_countable) |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
21 |
then show ?thesis |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
22 |
proof (eventually_elim) |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
23 |
fix x assume x: "\<forall>n::nat. F x \<le> G x + ennreal (1 / Suc n)" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
24 |
show "F x \<le> G x" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
25 |
proof (rule ennreal_le_epsilon) |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
26 |
fix e :: real assume "0 < e" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
27 |
then obtain n where n: "1 / Suc n < e" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
28 |
by (blast elim: nat_approx_posE) |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
29 |
have "F x \<le> G x + 1 / Suc n" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
30 |
using x by simp |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
31 |
also have "\<dots> \<le> G x + e" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
32 |
using n by (intro add_mono ennreal_leI) auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
33 |
finally show "F x \<le> G x + ennreal e" . |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
34 |
qed |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
35 |
qed |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
36 |
qed |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
37 |
|
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
38 |
lemma AE_upper_bound_inf: |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
39 |
fixes F G::"'a \<Rightarrow> real" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
40 |
assumes "\<And>e. e > 0 \<Longrightarrow> AE x in M. F x \<le> G x + e" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
41 |
shows "AE x in M. F x \<le> G x" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
42 |
proof - |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
43 |
have "AE x in M. F x \<le> G x + 1/real (n+1)" for n::nat |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
44 |
by (rule assms, auto) |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
45 |
then have "AE x in M. \<forall>n::nat \<in> UNIV. F x \<le> G x + 1/real (n+1)" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
46 |
by (rule AE_ball_countable', auto) |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
47 |
moreover |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
48 |
{ |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
49 |
fix x assume i: "\<forall>n::nat \<in> UNIV. F x \<le> G x + 1/real (n+1)" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
50 |
have "(\<lambda>n. G x + 1/real (n+1)) \<longlonglongrightarrow> G x + 0" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
51 |
by (rule tendsto_add, simp, rule LIMSEQ_ignore_initial_segment[OF lim_1_over_n, of 1]) |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
52 |
then have "F x \<le> G x" using i LIMSEQ_le_const by fastforce |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
53 |
} |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
54 |
ultimately show ?thesis by auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
55 |
qed |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
56 |
|
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
57 |
lemma not_AE_zero_ennreal_E: |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
58 |
fixes f::"'a \<Rightarrow> ennreal" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
59 |
assumes "\<not> (AE x in M. f x = 0)" and [measurable]: "f \<in> borel_measurable M" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
60 |
shows "\<exists>A\<in>sets M. \<exists>e::real>0. emeasure M A > 0 \<and> (\<forall>x \<in> A. f x \<ge> e)" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
61 |
proof - |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
62 |
{ assume "\<not> (\<exists>e::real>0. {x \<in> space M. f x \<ge> e} \<notin> null_sets M)" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
63 |
then have "0 < e \<Longrightarrow> AE x in M. f x \<le> e" for e :: real |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
64 |
by (auto simp: not_le less_imp_le dest!: AE_not_in) |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
65 |
then have "AE x in M. f x \<le> 0" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
66 |
by (intro AE_upper_bound_inf_ennreal[where G="\<lambda>_. 0"]) simp |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
67 |
then have False |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
68 |
using assms by auto } |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
69 |
then obtain e::real where e: "e > 0" "{x \<in> space M. f x \<ge> e} \<notin> null_sets M" by auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
70 |
define A where "A = {x \<in> space M. f x \<ge> e}" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
71 |
have 1 [measurable]: "A \<in> sets M" unfolding A_def by auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
72 |
have 2: "emeasure M A > 0" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
73 |
using e(2) A_def \<open>A \<in> sets M\<close> by auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
74 |
have 3: "\<And>x. x \<in> A \<Longrightarrow> f x \<ge> e" unfolding A_def by auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
75 |
show ?thesis using e(1) 1 2 3 by blast |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
76 |
qed |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
77 |
|
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
78 |
lemma not_AE_zero_E: |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
79 |
fixes f::"'a \<Rightarrow> real" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
80 |
assumes "AE x in M. f x \<ge> 0" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
81 |
"\<not>(AE x in M. f x = 0)" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
82 |
and [measurable]: "f \<in> borel_measurable M" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
83 |
shows "\<exists>A e. A \<in> sets M \<and> e>0 \<and> emeasure M A > 0 \<and> (\<forall>x \<in> A. f x \<ge> e)" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
84 |
proof - |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
85 |
have "\<exists>e. e > 0 \<and> {x \<in> space M. f x \<ge> e} \<notin> null_sets M" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
86 |
proof (rule ccontr) |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
87 |
assume *: "\<not>(\<exists>e. e > 0 \<and> {x \<in> space M. f x \<ge> e} \<notin> null_sets M)" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
88 |
{ |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
89 |
fix e::real assume "e > 0" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
90 |
then have "{x \<in> space M. f x \<ge> e} \<in> null_sets M" using * by blast |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
91 |
then have "AE x in M. x \<notin> {x \<in> space M. f x \<ge> e}" using AE_not_in by blast |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
92 |
then have "AE x in M. f x \<le> e" by auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
93 |
} |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
94 |
then have "AE x in M. f x \<le> 0" by (rule AE_upper_bound_inf, auto) |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
95 |
then have "AE x in M. f x = 0" using assms(1) by auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
96 |
then show False using assms(2) by auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
97 |
qed |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
98 |
then obtain e where e: "e>0" "{x \<in> space M. f x \<ge> e} \<notin> null_sets M" by auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
99 |
define A where "A = {x \<in> space M. f x \<ge> e}" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
100 |
have 1 [measurable]: "A \<in> sets M" unfolding A_def by auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
101 |
have 2: "emeasure M A > 0" |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
102 |
using e(2) A_def \<open>A \<in> sets M\<close> by auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
103 |
have 3: "\<And>x. x \<in> A \<Longrightarrow> f x \<ge> e" unfolding A_def by auto |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
104 |
show ?thesis |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
105 |
using e(1) 1 2 3 by blast |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
106 |
qed |
979cdfdf7a79
HOL-Probability: move conditional expectation from AFP/Ergodic_Theory
hoelzl
parents:
64267
diff
changeset
|
107 |
|
56994 | 108 |
subsection "Simple function" |
35582 | 109 |
|
61808 | 110 |
text \<open> |
38656 | 111 |
|
56996 | 112 |
Our simple functions are not restricted to nonnegative real numbers. Instead |
38656 | 113 |
they are just functions with a finite range and are measurable when singleton |
114 |
sets are measurable. |
|
35582 | 115 |
|
61808 | 116 |
\<close> |
38656 | 117 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
118 |
definition%important "simple_function M g \<longleftrightarrow> |
38656 | 119 |
finite (g ` space M) \<and> |
120 |
(\<forall>x \<in> g ` space M. g -` {x} \<inter> space M \<in> sets M)" |
|
36624 | 121 |
|
47694 | 122 |
lemma simple_functionD: |
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
|
123 |
assumes "simple_function M g" |
40875 | 124 |
shows "finite (g ` space M)" and "g -` X \<inter> space M \<in> sets M" |
40871 | 125 |
proof - |
126 |
show "finite (g ` space M)" |
|
127 |
using assms unfolding simple_function_def by auto |
|
40875 | 128 |
have "g -` X \<inter> space M = g -` (X \<inter> g`space M) \<inter> space M" by auto |
129 |
also have "\<dots> = (\<Union>x\<in>X \<inter> g`space M. g-`{x} \<inter> space M)" by auto |
|
130 |
finally show "g -` X \<inter> space M \<in> sets M" using assms |
|
50002
ce0d316b5b44
add measurability prover; add support for Borel sets
hoelzl
parents:
50001
diff
changeset
|
131 |
by (auto simp del: UN_simps simp: simple_function_def) |
40871 | 132 |
qed |
36624 | 133 |
|
56949 | 134 |
lemma measurable_simple_function[measurable_dest]: |
135 |
"simple_function M f \<Longrightarrow> f \<in> measurable M (count_space UNIV)" |
|
136 |
unfolding simple_function_def measurable_def |
|
137 |
proof safe |
|
138 |
fix A assume "finite (f ` space M)" "\<forall>x\<in>f ` space M. f -` {x} \<inter> space M \<in> sets M" |
|
139 |
then have "(\<Union>x\<in>f ` space M. if x \<in> A then f -` {x} \<inter> space M else {}) \<in> sets M" |
|
140 |
by (intro sets.finite_UN) auto |
|
141 |
also have "(\<Union>x\<in>f ` space M. if x \<in> A then f -` {x} \<inter> space M else {}) = f -` A \<inter> space M" |
|
62390 | 142 |
by (auto split: if_split_asm) |
56949 | 143 |
finally show "f -` A \<inter> space M \<in> sets M" . |
144 |
qed simp |
|
145 |
||
146 |
lemma borel_measurable_simple_function: |
|
147 |
"simple_function M f \<Longrightarrow> f \<in> borel_measurable M" |
|
148 |
by (auto dest!: measurable_simple_function simp: measurable_def) |
|
149 |
||
47694 | 150 |
lemma simple_function_measurable2[intro]: |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
151 |
assumes "simple_function M f" "simple_function M g" |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
152 |
shows "f -` A \<inter> g -` B \<inter> space M \<in> sets M" |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
153 |
proof - |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
154 |
have "f -` A \<inter> g -` B \<inter> space M = (f -` A \<inter> space M) \<inter> (g -` B \<inter> space M)" |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
155 |
by auto |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
156 |
then show ?thesis using assms[THEN simple_functionD(2)] by auto |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
157 |
qed |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
158 |
|
47694 | 159 |
lemma simple_function_indicator_representation: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
160 |
fixes f ::"'a \<Rightarrow> ennreal" |
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
|
161 |
assumes f: "simple_function M f" and x: "x \<in> space M" |
38656 | 162 |
shows "f x = (\<Sum>y \<in> f ` space M. y * indicator (f -` {y} \<inter> space M) x)" |
163 |
(is "?l = ?r") |
|
164 |
proof - |
|
38705 | 165 |
have "?r = (\<Sum>y \<in> f ` space M. |
38656 | 166 |
(if y = f x then y * indicator (f -` {y} \<inter> space M) x else 0))" |
64267 | 167 |
by (auto intro!: sum.cong) |
38656 | 168 |
also have "... = f x * indicator (f -` {f x} \<inter> space M) x" |
64267 | 169 |
using assms by (auto dest: simple_functionD simp: sum.delta) |
38656 | 170 |
also have "... = f x" using x by (auto simp: indicator_def) |
171 |
finally show ?thesis by auto |
|
172 |
qed |
|
36624 | 173 |
|
47694 | 174 |
lemma simple_function_notspace: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
175 |
"simple_function M (\<lambda>x. h x * indicator (- space M) x::ennreal)" (is "simple_function M ?h") |
35692 | 176 |
proof - |
38656 | 177 |
have "?h ` space M \<subseteq> {0}" unfolding indicator_def by auto |
178 |
hence [simp, intro]: "finite (?h ` space M)" by (auto intro: finite_subset) |
|
179 |
have "?h -` {0} \<inter> space M = space M" by auto |
|
69661 | 180 |
thus ?thesis unfolding simple_function_def by (auto simp add: image_constant_conv) |
38656 | 181 |
qed |
182 |
||
47694 | 183 |
lemma simple_function_cong: |
38656 | 184 |
assumes "\<And>t. t \<in> space M \<Longrightarrow> f t = g t" |
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
|
185 |
shows "simple_function M f \<longleftrightarrow> simple_function M g" |
38656 | 186 |
proof - |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
187 |
have "\<And>x. f -` {x} \<inter> space M = g -` {x} \<inter> space M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
188 |
using assms by auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
189 |
with assms show ?thesis |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
190 |
by (simp add: simple_function_def cong: image_cong) |
38656 | 191 |
qed |
192 |
||
47694 | 193 |
lemma simple_function_cong_algebra: |
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
|
194 |
assumes "sets N = sets M" "space N = space M" |
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
|
195 |
shows "simple_function M f \<longleftrightarrow> simple_function N f" |
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
|
196 |
unfolding simple_function_def assms .. |
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
|
197 |
|
47694 | 198 |
lemma simple_function_borel_measurable: |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
199 |
fixes f :: "'a \<Rightarrow> 'x::{t2_space}" |
38656 | 200 |
assumes "f \<in> borel_measurable M" and "finite (f ` space M)" |
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
|
201 |
shows "simple_function M f" |
38656 | 202 |
using assms unfolding simple_function_def |
203 |
by (auto intro: borel_measurable_vimage) |
|
204 |
||
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
205 |
lemma simple_function_iff_borel_measurable: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
206 |
fixes f :: "'a \<Rightarrow> 'x::{t2_space}" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
207 |
shows "simple_function M f \<longleftrightarrow> finite (f ` space M) \<and> f \<in> borel_measurable M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
208 |
by (metis borel_measurable_simple_function simple_functionD(1) simple_function_borel_measurable) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
209 |
|
56949 | 210 |
lemma simple_function_eq_measurable: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
211 |
"simple_function M f \<longleftrightarrow> finite (f`space M) \<and> f \<in> measurable M (count_space UNIV)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
212 |
using measurable_simple_function[of M f] by (fastforce simp: simple_function_def) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
213 |
|
47694 | 214 |
lemma simple_function_const[intro, simp]: |
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
|
215 |
"simple_function M (\<lambda>x. c)" |
38656 | 216 |
by (auto intro: finite_subset simp: simple_function_def) |
47694 | 217 |
lemma simple_function_compose[intro, simp]: |
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
|
218 |
assumes "simple_function M f" |
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
|
219 |
shows "simple_function M (g \<circ> f)" |
38656 | 220 |
unfolding simple_function_def |
221 |
proof safe |
|
222 |
show "finite ((g \<circ> f) ` space M)" |
|
69661 | 223 |
using assms unfolding simple_function_def image_comp [symmetric] by auto |
38656 | 224 |
next |
225 |
fix x assume "x \<in> space M" |
|
226 |
let ?G = "g -` {g (f x)} \<inter> (f`space M)" |
|
227 |
have *: "(g \<circ> f) -` {(g \<circ> f) x} \<inter> space M = |
|
228 |
(\<Union>x\<in>?G. f -` {x} \<inter> space M)" by auto |
|
229 |
show "(g \<circ> f) -` {(g \<circ> f) x} \<inter> space M \<in> sets M" |
|
230 |
using assms unfolding simple_function_def * |
|
50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50104
diff
changeset
|
231 |
by (rule_tac sets.finite_UN) auto |
38656 | 232 |
qed |
233 |
||
47694 | 234 |
lemma simple_function_indicator[intro, simp]: |
38656 | 235 |
assumes "A \<in> sets M" |
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
|
236 |
shows "simple_function M (indicator A)" |
35692 | 237 |
proof - |
38656 | 238 |
have "indicator A ` space M \<subseteq> {0, 1}" (is "?S \<subseteq> _") |
239 |
by (auto simp: indicator_def) |
|
240 |
hence "finite ?S" by (rule finite_subset) simp |
|
241 |
moreover have "- A \<inter> space M = space M - A" by auto |
|
242 |
ultimately show ?thesis unfolding simple_function_def |
|
46905 | 243 |
using assms by (auto simp: indicator_def [abs_def]) |
35692 | 244 |
qed |
245 |
||
47694 | 246 |
lemma simple_function_Pair[intro, simp]: |
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
|
247 |
assumes "simple_function M f" |
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
|
248 |
assumes "simple_function M g" |
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
|
249 |
shows "simple_function M (\<lambda>x. (f x, g x))" (is "simple_function M ?p") |
38656 | 250 |
unfolding simple_function_def |
251 |
proof safe |
|
252 |
show "finite (?p ` space M)" |
|
253 |
using assms unfolding simple_function_def |
|
254 |
by (rule_tac finite_subset[of _ "f`space M \<times> g`space M"]) auto |
|
255 |
next |
|
256 |
fix x assume "x \<in> space M" |
|
257 |
have "(\<lambda>x. (f x, g x)) -` {(f x, g x)} \<inter> space M = |
|
258 |
(f -` {f x} \<inter> space M) \<inter> (g -` {g x} \<inter> space M)" |
|
259 |
by auto |
|
61808 | 260 |
with \<open>x \<in> space M\<close> show "(\<lambda>x. (f x, g x)) -` {(f x, g x)} \<inter> space M \<in> sets M" |
38656 | 261 |
using assms unfolding simple_function_def by auto |
262 |
qed |
|
35692 | 263 |
|
47694 | 264 |
lemma simple_function_compose1: |
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
|
265 |
assumes "simple_function M f" |
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
|
266 |
shows "simple_function M (\<lambda>x. g (f x))" |
38656 | 267 |
using simple_function_compose[OF assms, of g] |
268 |
by (simp add: comp_def) |
|
35582 | 269 |
|
47694 | 270 |
lemma simple_function_compose2: |
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
|
271 |
assumes "simple_function M f" and "simple_function M g" |
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
|
272 |
shows "simple_function M (\<lambda>x. h (f x) (g x))" |
38656 | 273 |
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
|
274 |
have "simple_function M ((\<lambda>(x, y). h x y) \<circ> (\<lambda>x. (f x, g x)))" |
38656 | 275 |
using assms by auto |
276 |
thus ?thesis by (simp_all add: comp_def) |
|
277 |
qed |
|
35582 | 278 |
|
67399 | 279 |
lemmas simple_function_add[intro, simp] = simple_function_compose2[where h="(+)"] |
280 |
and simple_function_diff[intro, simp] = simple_function_compose2[where h="(-)"] |
|
38656 | 281 |
and simple_function_uminus[intro, simp] = simple_function_compose[where g="uminus"] |
69064
5840724b1d71
Prefix form of infix with * on either side no longer needs special treatment
nipkow
parents:
67399
diff
changeset
|
282 |
and simple_function_mult[intro, simp] = simple_function_compose2[where h="(*)"] |
67399 | 283 |
and simple_function_div[intro, simp] = simple_function_compose2[where h="(/)"] |
38656 | 284 |
and simple_function_inverse[intro, simp] = simple_function_compose[where g="inverse"] |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
285 |
and simple_function_max[intro, simp] = simple_function_compose2[where h=max] |
38656 | 286 |
|
64267 | 287 |
lemma simple_function_sum[intro, simp]: |
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
|
288 |
assumes "\<And>i. i \<in> P \<Longrightarrow> simple_function M (f i)" |
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
|
289 |
shows "simple_function M (\<lambda>x. \<Sum>i\<in>P. f i x)" |
38656 | 290 |
proof cases |
291 |
assume "finite P" from this assms show ?thesis by induct auto |
|
292 |
qed auto |
|
35582 | 293 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
294 |
lemma simple_function_ennreal[intro, simp]: |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
295 |
fixes f g :: "'a \<Rightarrow> real" assumes sf: "simple_function M f" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
296 |
shows "simple_function M (\<lambda>x. ennreal (f x))" |
59587
8ea7b22525cb
Removed the obsolete functions "natfloor" and "natceiling"
nipkow
parents:
59452
diff
changeset
|
297 |
by (rule simple_function_compose1[OF sf]) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
298 |
|
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
299 |
lemma simple_function_real_of_nat[intro, simp]: |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
300 |
fixes f g :: "'a \<Rightarrow> nat" assumes sf: "simple_function M f" |
56949 | 301 |
shows "simple_function M (\<lambda>x. real (f x))" |
59587
8ea7b22525cb
Removed the obsolete functions "natfloor" and "natceiling"
nipkow
parents:
59452
diff
changeset
|
302 |
by (rule simple_function_compose1[OF sf]) |
35582 | 303 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
304 |
lemma%important borel_measurable_implies_simple_function_sequence: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
305 |
fixes u :: "'a \<Rightarrow> ennreal" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
306 |
assumes u[measurable]: "u \<in> borel_measurable M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
307 |
shows "\<exists>f. incseq f \<and> (\<forall>i. (\<forall>x. f i x < top) \<and> simple_function M (f i)) \<and> u = (SUP i. f i)" |
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
308 |
proof%unimportant - |
63040 | 309 |
define f where [abs_def]: |
310 |
"f i x = real_of_int (floor (enn2real (min i (u x)) * 2^i)) / 2^i" for i x |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
311 |
|
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
312 |
have [simp]: "0 \<le> f i x" for i x |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
313 |
by (auto simp: f_def intro!: divide_nonneg_nonneg mult_nonneg_nonneg enn2real_nonneg) |
35582 | 314 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
315 |
have *: "2^n * real_of_int x = real_of_int (2^n * x)" for n x |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
316 |
by simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
317 |
|
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
318 |
have "real_of_int \<lfloor>real i * 2 ^ i\<rfloor> = real_of_int \<lfloor>i * 2 ^ i\<rfloor>" for i |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
319 |
by (intro arg_cong[where f=real_of_int]) simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
320 |
then have [simp]: "real_of_int \<lfloor>real i * 2 ^ i\<rfloor> = i * 2 ^ i" for i |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
321 |
unfolding floor_of_nat by simp |
35582 | 322 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
323 |
have "incseq f" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
324 |
proof (intro monoI le_funI) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
325 |
fix m n :: nat and x assume "m \<le> n" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
326 |
moreover |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
327 |
{ fix d :: nat |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
328 |
have "\<lfloor>2^d::real\<rfloor> * \<lfloor>2^m * enn2real (min (of_nat m) (u x))\<rfloor> \<le> |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
329 |
\<lfloor>2^d * (2^m * enn2real (min (of_nat m) (u x)))\<rfloor>" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
330 |
by (rule le_mult_floor) (auto simp: enn2real_nonneg) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
331 |
also have "\<dots> \<le> \<lfloor>2^d * (2^m * enn2real (min (of_nat d + of_nat m) (u x)))\<rfloor>" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
332 |
by (intro floor_mono mult_mono enn2real_mono min.mono) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
333 |
(auto simp: enn2real_nonneg min_less_iff_disj of_nat_less_top) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
334 |
finally have "f m x \<le> f (m + d) x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
335 |
unfolding f_def |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
336 |
by (auto simp: field_simps power_add * simp del: of_int_mult) } |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
337 |
ultimately show "f m x \<le> f n x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
338 |
by (auto simp add: le_iff_add) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
339 |
qed |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
340 |
then have inc_f: "incseq (\<lambda>i. ennreal (f i x))" for x |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
341 |
by (auto simp: incseq_def le_fun_def) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
342 |
then have "incseq (\<lambda>i x. ennreal (f i x))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
343 |
by (auto simp: incseq_def le_fun_def) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
344 |
moreover |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
345 |
have "simple_function M (f i)" for i |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
346 |
proof (rule simple_function_borel_measurable) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
347 |
have "\<lfloor>enn2real (min (of_nat i) (u x)) * 2 ^ i\<rfloor> \<le> \<lfloor>int i * 2 ^ i\<rfloor>" for x |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
348 |
by (cases "u x" rule: ennreal_cases) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
349 |
(auto split: split_min intro!: floor_mono) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
350 |
then have "f i ` space M \<subseteq> (\<lambda>n. real_of_int n / 2^i) ` {0 .. of_nat i * 2^i}" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
351 |
unfolding floor_of_int by (auto simp: f_def enn2real_nonneg intro!: imageI) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
352 |
then show "finite (f i ` space M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
353 |
by (rule finite_subset) auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
354 |
show "f i \<in> borel_measurable M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
355 |
unfolding f_def enn2real_def by measurable |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
356 |
qed |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
357 |
moreover |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
358 |
{ fix x |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
359 |
have "(SUP i. ennreal (f i x)) = u x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
360 |
proof (cases "u x" rule: ennreal_cases) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
361 |
case top then show ?thesis |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
362 |
by (simp add: f_def inf_min[symmetric] ennreal_of_nat_eq_real_of_nat[symmetric] |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
363 |
ennreal_SUP_of_nat_eq_top) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
364 |
next |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
365 |
case (real r) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
366 |
obtain n where "r \<le> of_nat n" using real_arch_simple by auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
367 |
then have min_eq_r: "\<forall>\<^sub>F x in sequentially. min (real x) r = r" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
368 |
by (auto simp: eventually_sequentially intro!: exI[of _ n] split: split_min) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
369 |
|
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
370 |
have "(\<lambda>i. real_of_int \<lfloor>min (real i) r * 2^i\<rfloor> / 2^i) \<longlonglongrightarrow> r" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
371 |
proof (rule tendsto_sandwich) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
372 |
show "(\<lambda>n. r - (1/2)^n) \<longlonglongrightarrow> r" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
373 |
by (auto intro!: tendsto_eq_intros LIMSEQ_power_zero) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
374 |
show "\<forall>\<^sub>F n in sequentially. real_of_int \<lfloor>min (real n) r * 2 ^ n\<rfloor> / 2 ^ n \<le> r" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
375 |
using min_eq_r by eventually_elim (auto simp: field_simps) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
376 |
have *: "r * (2 ^ n * 2 ^ n) \<le> 2^n + 2^n * real_of_int \<lfloor>r * 2 ^ n\<rfloor>" for n |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
377 |
using real_of_int_floor_ge_diff_one[of "r * 2^n", THEN mult_left_mono, of "2^n"] |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
378 |
by (auto simp: field_simps) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
379 |
show "\<forall>\<^sub>F n in sequentially. r - (1/2)^n \<le> real_of_int \<lfloor>min (real n) r * 2 ^ n\<rfloor> / 2 ^ n" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
380 |
using min_eq_r by eventually_elim (insert *, auto simp: field_simps) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
381 |
qed auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
382 |
then have "(\<lambda>i. ennreal (f i x)) \<longlonglongrightarrow> ennreal r" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
383 |
by (simp add: real f_def ennreal_of_nat_eq_real_of_nat min_ennreal) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
384 |
from LIMSEQ_unique[OF LIMSEQ_SUP[OF inc_f] this] |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
385 |
show ?thesis |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
386 |
by (simp add: real) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
387 |
qed } |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
388 |
ultimately show ?thesis |
69861
62e47f06d22c
avoid context-sensitive simp rules whose context-free form (image_comp) is not simp by default
haftmann
parents:
69661
diff
changeset
|
389 |
by (intro exI [of _ "\<lambda>i x. ennreal (f i x)"]) (auto simp add: image_comp) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
390 |
qed |
35582 | 391 |
|
47694 | 392 |
lemma borel_measurable_implies_simple_function_sequence': |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
393 |
fixes u :: "'a \<Rightarrow> ennreal" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
394 |
assumes u: "u \<in> borel_measurable M" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
395 |
obtains f where |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
396 |
"\<And>i. simple_function M (f i)" "incseq f" "\<And>i x. f i x < top" "\<And>x. (SUP i. f i x) = u x" |
69861
62e47f06d22c
avoid context-sensitive simp rules whose context-free form (image_comp) is not simp by default
haftmann
parents:
69661
diff
changeset
|
397 |
using borel_measurable_implies_simple_function_sequence [OF u] |
62e47f06d22c
avoid context-sensitive simp rules whose context-free form (image_comp) is not simp by default
haftmann
parents:
69661
diff
changeset
|
398 |
by (metis SUP_apply) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
399 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
400 |
lemma%important simple_function_induct |
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
401 |
[consumes 1, case_names cong set mult add, induct set: simple_function]: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
402 |
fixes u :: "'a \<Rightarrow> ennreal" |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
403 |
assumes u: "simple_function M u" |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
404 |
assumes cong: "\<And>f g. simple_function M f \<Longrightarrow> simple_function M g \<Longrightarrow> (AE x in M. f x = g x) \<Longrightarrow> P f \<Longrightarrow> P g" |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
405 |
assumes set: "\<And>A. A \<in> sets M \<Longrightarrow> P (indicator A)" |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
406 |
assumes mult: "\<And>u c. P u \<Longrightarrow> P (\<lambda>x. c * u x)" |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
407 |
assumes add: "\<And>u v. P u \<Longrightarrow> P v \<Longrightarrow> P (\<lambda>x. v x + u x)" |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
408 |
shows "P u" |
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
409 |
proof%unimportant (rule cong) |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
410 |
from AE_space show "AE x in M. (\<Sum>y\<in>u ` space M. y * indicator (u -` {y} \<inter> space M) x) = u x" |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
411 |
proof eventually_elim |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
412 |
fix x assume x: "x \<in> space M" |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
413 |
from simple_function_indicator_representation[OF u x] |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
414 |
show "(\<Sum>y\<in>u ` space M. y * indicator (u -` {y} \<inter> space M) x) = u x" .. |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
415 |
qed |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
416 |
next |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
417 |
from u have "finite (u ` space M)" |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
418 |
unfolding simple_function_def by auto |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
419 |
then show "P (\<lambda>x. \<Sum>y\<in>u ` space M. y * indicator (u -` {y} \<inter> space M) x)" |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
420 |
proof induct |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
421 |
case empty show ?case |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
422 |
using set[of "{}"] by (simp add: indicator_def[abs_def]) |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
423 |
qed (auto intro!: add mult set simple_functionD u) |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
424 |
next |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
425 |
show "simple_function M (\<lambda>x. (\<Sum>y\<in>u ` space M. y * indicator (u -` {y} \<inter> space M) x))" |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
426 |
apply (subst simple_function_cong) |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
427 |
apply (rule simple_function_indicator_representation[symmetric]) |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
428 |
apply (auto intro: u) |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
429 |
done |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
430 |
qed fact |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
431 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
432 |
lemma simple_function_induct_nn[consumes 1, case_names cong set mult add]: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
433 |
fixes u :: "'a \<Rightarrow> ennreal" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
434 |
assumes u: "simple_function M u" |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
435 |
assumes cong: "\<And>f g. simple_function M f \<Longrightarrow> simple_function M g \<Longrightarrow> (\<And>x. x \<in> space M \<Longrightarrow> f x = g x) \<Longrightarrow> P f \<Longrightarrow> P g" |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
436 |
assumes set: "\<And>A. A \<in> sets M \<Longrightarrow> P (indicator A)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
437 |
assumes mult: "\<And>u c. simple_function M u \<Longrightarrow> P u \<Longrightarrow> P (\<lambda>x. c * u x)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
438 |
assumes add: "\<And>u v. simple_function M u \<Longrightarrow> P u \<Longrightarrow> simple_function M v \<Longrightarrow> (\<And>x. x \<in> space M \<Longrightarrow> u x = 0 \<or> v x = 0) \<Longrightarrow> P v \<Longrightarrow> P (\<lambda>x. v x + u x)" |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
439 |
shows "P u" |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
440 |
proof - |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
441 |
show ?thesis |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
442 |
proof (rule cong) |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
443 |
fix x assume x: "x \<in> space M" |
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
444 |
from simple_function_indicator_representation[OF u x] |
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
445 |
show "(\<Sum>y\<in>u ` space M. y * indicator (u -` {y} \<inter> space M) x) = u x" .. |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
446 |
next |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
447 |
show "simple_function M (\<lambda>x. (\<Sum>y\<in>u ` space M. y * indicator (u -` {y} \<inter> space M) x))" |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
448 |
apply (subst simple_function_cong) |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
449 |
apply (rule simple_function_indicator_representation[symmetric]) |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
450 |
apply (auto intro: u) |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
451 |
done |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
452 |
next |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
453 |
from u have "finite (u ` space M)" |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
454 |
unfolding simple_function_def by auto |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
455 |
then show "P (\<lambda>x. \<Sum>y\<in>u ` space M. y * indicator (u -` {y} \<inter> space M) x)" |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
456 |
proof induct |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
457 |
case empty show ?case |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
458 |
using set[of "{}"] by (simp add: indicator_def[abs_def]) |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
459 |
next |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
460 |
case (insert x S) |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
461 |
{ fix z have "(\<Sum>y\<in>S. y * indicator (u -` {y} \<inter> space M) z) = 0 \<or> |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
462 |
x * indicator (u -` {x} \<inter> space M) z = 0" |
64267 | 463 |
using insert by (subst sum_eq_0_iff) (auto simp: indicator_def) } |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
464 |
note disj = this |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
465 |
from insert show ?case |
64267 | 466 |
by (auto intro!: add mult set simple_functionD u simple_function_sum disj) |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
467 |
qed |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
468 |
qed fact |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
469 |
qed |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
470 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
471 |
lemma%important borel_measurable_induct |
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
472 |
[consumes 1, case_names cong set mult add seq, induct set: borel_measurable]: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
473 |
fixes u :: "'a \<Rightarrow> ennreal" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
474 |
assumes u: "u \<in> borel_measurable M" |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
475 |
assumes cong: "\<And>f g. f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow> (\<And>x. x \<in> space M \<Longrightarrow> f x = g x) \<Longrightarrow> P g \<Longrightarrow> P f" |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
476 |
assumes set: "\<And>A. A \<in> sets M \<Longrightarrow> P (indicator A)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
477 |
assumes mult': "\<And>u c. c < top \<Longrightarrow> u \<in> borel_measurable M \<Longrightarrow> (\<And>x. x \<in> space M \<Longrightarrow> u x < top) \<Longrightarrow> P u \<Longrightarrow> P (\<lambda>x. c * u x)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
478 |
assumes add: "\<And>u v. u \<in> borel_measurable M\<Longrightarrow> (\<And>x. x \<in> space M \<Longrightarrow> u x < top) \<Longrightarrow> P u \<Longrightarrow> v \<in> borel_measurable M \<Longrightarrow> (\<And>x. x \<in> space M \<Longrightarrow> v x < top) \<Longrightarrow> (\<And>x. x \<in> space M \<Longrightarrow> u x = 0 \<or> v x = 0) \<Longrightarrow> P v \<Longrightarrow> P (\<lambda>x. v x + u x)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
479 |
assumes seq: "\<And>U. (\<And>i. U i \<in> borel_measurable M) \<Longrightarrow> (\<And>i x. x \<in> space M \<Longrightarrow> U i x < top) \<Longrightarrow> (\<And>i. P (U i)) \<Longrightarrow> incseq U \<Longrightarrow> u = (SUP i. U i) \<Longrightarrow> P (SUP i. U i)" |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
480 |
shows "P u" |
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
481 |
using%unimportant u |
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
482 |
proof%unimportant (induct rule: borel_measurable_implies_simple_function_sequence') |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
483 |
fix U assume U: "\<And>i. simple_function M (U i)" "incseq U" "\<And>i x. U i x < top" and sup: "\<And>x. (SUP i. U i x) = u x" |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
484 |
have u_eq: "u = (SUP i. U i)" |
69861
62e47f06d22c
avoid context-sensitive simp rules whose context-free form (image_comp) is not simp by default
haftmann
parents:
69661
diff
changeset
|
485 |
using u by (auto simp add: image_comp sup) |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
486 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
487 |
have not_inf: "\<And>x i. x \<in> space M \<Longrightarrow> U i x < top" |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
488 |
using U by (auto simp: image_iff eq_commute) |
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
489 |
|
49797
28066863284c
add induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49796
diff
changeset
|
490 |
from U have "\<And>i. U i \<in> borel_measurable M" |
28066863284c
add induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49796
diff
changeset
|
491 |
by (simp add: borel_measurable_simple_function) |
28066863284c
add induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49796
diff
changeset
|
492 |
|
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
493 |
show "P u" |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
494 |
unfolding u_eq |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
495 |
proof (rule seq) |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
496 |
fix i show "P (U i)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
497 |
using \<open>simple_function M (U i)\<close> not_inf[of _ i] |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
498 |
proof (induct rule: simple_function_induct_nn) |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
499 |
case (mult u c) |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
500 |
show ?case |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
501 |
proof cases |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
502 |
assume "c = 0 \<or> space M = {} \<or> (\<forall>x\<in>space M. u x = 0)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
503 |
with mult(1) show ?thesis |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
504 |
by (intro cong[of "\<lambda>x. c * u x" "indicator {}"] set) |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
505 |
(auto dest!: borel_measurable_simple_function) |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
506 |
next |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
507 |
assume "\<not> (c = 0 \<or> space M = {} \<or> (\<forall>x\<in>space M. u x = 0))" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
508 |
then obtain x where "space M \<noteq> {}" and x: "x \<in> space M" "u x \<noteq> 0" "c \<noteq> 0" |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
509 |
by auto |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
510 |
with mult(3)[of x] have "c < top" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
511 |
by (auto simp: ennreal_mult_less_top) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
512 |
then have u_fin: "x' \<in> space M \<Longrightarrow> u x' < top" for x' |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
513 |
using mult(3)[of x'] \<open>c \<noteq> 0\<close> by (auto simp: ennreal_mult_less_top) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
514 |
then have "P u" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
515 |
by (rule mult) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
516 |
with u_fin \<open>c < top\<close> mult(1) show ?thesis |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
517 |
by (intro mult') (auto dest!: borel_measurable_simple_function) |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
518 |
qed |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
519 |
qed (auto intro: cong intro!: set add dest!: borel_measurable_simple_function) |
49797
28066863284c
add induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49796
diff
changeset
|
520 |
qed fact+ |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
521 |
qed |
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
522 |
|
47694 | 523 |
lemma simple_function_If_set: |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
524 |
assumes sf: "simple_function M f" "simple_function M g" and A: "A \<inter> space M \<in> sets M" |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
525 |
shows "simple_function M (\<lambda>x. if x \<in> A then f x else g x)" (is "simple_function M ?IF") |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
526 |
proof - |
63040 | 527 |
define F where "F x = f -` {x} \<inter> space M" for x |
528 |
define G where "G x = g -` {x} \<inter> space M" for x |
|
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
529 |
show ?thesis unfolding simple_function_def |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
530 |
proof safe |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
531 |
have "?IF ` space M \<subseteq> f ` space M \<union> g ` space M" by auto |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
532 |
from finite_subset[OF this] assms |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
533 |
show "finite (?IF ` space M)" unfolding simple_function_def by auto |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
534 |
next |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
535 |
fix x assume "x \<in> space M" |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
536 |
then have *: "?IF -` {?IF x} \<inter> space M = (if x \<in> A |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
537 |
then ((F (f x) \<inter> (A \<inter> space M)) \<union> (G (f x) - (G (f x) \<inter> (A \<inter> space M)))) |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
538 |
else ((F (g x) \<inter> (A \<inter> space M)) \<union> (G (g x) - (G (g x) \<inter> (A \<inter> space M)))))" |
62390 | 539 |
using sets.sets_into_space[OF A] by (auto split: if_split_asm simp: G_def F_def) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
540 |
have [intro]: "\<And>x. F x \<in> sets M" "\<And>x. G x \<in> sets M" |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
541 |
unfolding F_def G_def using sf[THEN simple_functionD(2)] by auto |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
542 |
show "?IF -` {?IF x} \<inter> space M \<in> sets M" unfolding * using A by auto |
35582 | 543 |
qed |
544 |
qed |
|
545 |
||
47694 | 546 |
lemma simple_function_If: |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
547 |
assumes sf: "simple_function M f" "simple_function M g" and P: "{x\<in>space M. P x} \<in> sets M" |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
548 |
shows "simple_function M (\<lambda>x. if P x then f x else g x)" |
35582 | 549 |
proof - |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
550 |
have "{x\<in>space M. P x} = {x. P x} \<inter> space M" by auto |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
551 |
with simple_function_If_set[OF sf, of "{x. P x}"] P show ?thesis by simp |
38656 | 552 |
qed |
553 |
||
47694 | 554 |
lemma simple_function_subalgebra: |
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
|
555 |
assumes "simple_function N f" |
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
|
556 |
and N_subalgebra: "sets N \<subseteq> sets M" "space N = space M" |
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
|
557 |
shows "simple_function M f" |
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
|
558 |
using assms unfolding simple_function_def by auto |
39092 | 559 |
|
47694 | 560 |
lemma simple_function_comp: |
561 |
assumes T: "T \<in> measurable M M'" |
|
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
|
562 |
and f: "simple_function M' f" |
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
|
563 |
shows "simple_function M (\<lambda>x. f (T x))" |
41661 | 564 |
proof (intro simple_function_def[THEN iffD2] conjI ballI) |
565 |
have "(\<lambda>x. f (T x)) ` space M \<subseteq> f ` space M'" |
|
566 |
using T unfolding measurable_def by auto |
|
567 |
then show "finite ((\<lambda>x. f (T x)) ` space M)" |
|
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
|
568 |
using f unfolding simple_function_def by (auto intro: finite_subset) |
41661 | 569 |
fix i assume i: "i \<in> (\<lambda>x. f (T x)) ` space M" |
570 |
then have "i \<in> f ` space M'" |
|
571 |
using T unfolding measurable_def by auto |
|
572 |
then have "f -` {i} \<inter> space M' \<in> sets M'" |
|
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
|
573 |
using f unfolding simple_function_def by auto |
41661 | 574 |
then have "T -` (f -` {i} \<inter> space M') \<inter> space M \<in> sets M" |
575 |
using T unfolding measurable_def by auto |
|
576 |
also have "T -` (f -` {i} \<inter> space M') \<inter> space M = (\<lambda>x. f (T x)) -` {i} \<inter> space M" |
|
577 |
using T unfolding measurable_def by auto |
|
578 |
finally show "(\<lambda>x. f (T x)) -` {i} \<inter> space M \<in> sets M" . |
|
40859 | 579 |
qed |
580 |
||
56994 | 581 |
subsection "Simple integral" |
38656 | 582 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
583 |
definition%important simple_integral :: "'a measure \<Rightarrow> ('a \<Rightarrow> ennreal) \<Rightarrow> ennreal" ("integral\<^sup>S") where |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
584 |
"integral\<^sup>S M f = (\<Sum>x \<in> f ` space M. x * emeasure M (f -` {x} \<inter> space M))" |
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
|
585 |
|
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
|
586 |
syntax |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
587 |
"_simple_integral" :: "pttrn \<Rightarrow> ennreal \<Rightarrow> 'a measure \<Rightarrow> ennreal" ("\<integral>\<^sup>S _. _ \<partial>_" [60,61] 110) |
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
|
588 |
|
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
|
589 |
translations |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
590 |
"\<integral>\<^sup>S x. f \<partial>M" == "CONST simple_integral M (%x. f)" |
35582 | 591 |
|
47694 | 592 |
lemma simple_integral_cong: |
38656 | 593 |
assumes "\<And>t. t \<in> space M \<Longrightarrow> f t = g t" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
594 |
shows "integral\<^sup>S M f = integral\<^sup>S M g" |
38656 | 595 |
proof - |
596 |
have "f ` space M = g ` space M" |
|
597 |
"\<And>x. f -` {x} \<inter> space M = g -` {x} \<inter> space M" |
|
598 |
using assms by (auto intro!: image_eqI) |
|
599 |
thus ?thesis unfolding simple_integral_def by simp |
|
600 |
qed |
|
601 |
||
47694 | 602 |
lemma simple_integral_const[simp]: |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
603 |
"(\<integral>\<^sup>Sx. c \<partial>M) = c * (emeasure M) (space M)" |
38656 | 604 |
proof (cases "space M = {}") |
605 |
case True thus ?thesis unfolding simple_integral_def by simp |
|
606 |
next |
|
607 |
case False hence "(\<lambda>x. c) ` space M = {c}" by auto |
|
608 |
thus ?thesis unfolding simple_integral_def by simp |
|
35582 | 609 |
qed |
610 |
||
47694 | 611 |
lemma simple_function_partition: |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
612 |
assumes f: "simple_function M f" and g: "simple_function M g" |
56949 | 613 |
assumes sub: "\<And>x y. x \<in> space M \<Longrightarrow> y \<in> space M \<Longrightarrow> g x = g y \<Longrightarrow> f x = f y" |
614 |
assumes v: "\<And>x. x \<in> space M \<Longrightarrow> f x = v (g x)" |
|
615 |
shows "integral\<^sup>S M f = (\<Sum>y\<in>g ` space M. v y * emeasure M {x\<in>space M. g x = y})" |
|
616 |
(is "_ = ?r") |
|
617 |
proof - |
|
618 |
from f g have [simp]: "finite (f`space M)" "finite (g`space M)" |
|
619 |
by (auto simp: simple_function_def) |
|
620 |
from f g have [measurable]: "f \<in> measurable M (count_space UNIV)" "g \<in> measurable M (count_space UNIV)" |
|
621 |
by (auto intro: measurable_simple_function) |
|
35582 | 622 |
|
56949 | 623 |
{ fix y assume "y \<in> space M" |
624 |
then have "f ` space M \<inter> {i. \<exists>x\<in>space M. i = f x \<and> g y = g x} = {v (g y)}" |
|
625 |
by (auto cong: sub simp: v[symmetric]) } |
|
626 |
note eq = this |
|
35582 | 627 |
|
56949 | 628 |
have "integral\<^sup>S M f = |
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
629 |
(\<Sum>y\<in>f`space M. y * (\<Sum>z\<in>g`space M. |
56949 | 630 |
if \<exists>x\<in>space M. y = f x \<and> z = g x then emeasure M {x\<in>space M. g x = z} else 0))" |
631 |
unfolding simple_integral_def |
|
64267 | 632 |
proof (safe intro!: sum.cong ennreal_mult_left_cong) |
56949 | 633 |
fix y assume y: "y \<in> space M" "f y \<noteq> 0" |
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
634 |
have [simp]: "g ` space M \<inter> {z. \<exists>x\<in>space M. f y = f x \<and> z = g x} = |
56949 | 635 |
{z. \<exists>x\<in>space M. f y = f x \<and> z = g x}" |
636 |
by auto |
|
637 |
have eq:"(\<Union>i\<in>{z. \<exists>x\<in>space M. f y = f x \<and> z = g x}. {x \<in> space M. g x = i}) = |
|
638 |
f -` {f y} \<inter> space M" |
|
639 |
by (auto simp: eq_commute cong: sub rev_conj_cong) |
|
640 |
have "finite (g`space M)" by simp |
|
641 |
then have "finite {z. \<exists>x\<in>space M. f y = f x \<and> z = g x}" |
|
642 |
by (rule rev_finite_subset) auto |
|
643 |
then show "emeasure M (f -` {f y} \<inter> space M) = |
|
644 |
(\<Sum>z\<in>g ` space M. if \<exists>x\<in>space M. f y = f x \<and> z = g x then emeasure M {x \<in> space M. g x = z} else 0)" |
|
64267 | 645 |
apply (simp add: sum.If_cases) |
646 |
apply (subst sum_emeasure) |
|
56949 | 647 |
apply (auto simp: disjoint_family_on_def eq) |
648 |
done |
|
38656 | 649 |
qed |
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
650 |
also have "\<dots> = (\<Sum>y\<in>f`space M. (\<Sum>z\<in>g`space M. |
56949 | 651 |
if \<exists>x\<in>space M. y = f x \<and> z = g x then y * emeasure M {x\<in>space M. g x = z} else 0))" |
64267 | 652 |
by (auto intro!: sum.cong simp: sum_distrib_left) |
56949 | 653 |
also have "\<dots> = ?r" |
66804
3f9bb52082c4
avoid name clashes on interpretation of abstract locales
haftmann
parents:
65680
diff
changeset
|
654 |
by (subst sum.swap) |
64267 | 655 |
(auto intro!: sum.cong simp: sum.If_cases scaleR_sum_right[symmetric] eq) |
56949 | 656 |
finally show "integral\<^sup>S M f = ?r" . |
35582 | 657 |
qed |
658 |
||
47694 | 659 |
lemma simple_integral_add[simp]: |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
660 |
assumes f: "simple_function M f" and "\<And>x. 0 \<le> f x" and g: "simple_function M g" and "\<And>x. 0 \<le> g x" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
661 |
shows "(\<integral>\<^sup>Sx. f x + g x \<partial>M) = integral\<^sup>S M f + integral\<^sup>S M g" |
35582 | 662 |
proof - |
56949 | 663 |
have "(\<integral>\<^sup>Sx. f x + g x \<partial>M) = |
664 |
(\<Sum>y\<in>(\<lambda>x. (f x, g x))`space M. (fst y + snd y) * emeasure M {x\<in>space M. (f x, g x) = y})" |
|
665 |
by (intro simple_function_partition) (auto intro: f g) |
|
666 |
also have "\<dots> = (\<Sum>y\<in>(\<lambda>x. (f x, g x))`space M. fst y * emeasure M {x\<in>space M. (f x, g x) = y}) + |
|
667 |
(\<Sum>y\<in>(\<lambda>x. (f x, g x))`space M. snd y * emeasure M {x\<in>space M. (f x, g x) = y})" |
|
64267 | 668 |
using assms(2,4) by (auto intro!: sum.cong distrib_right simp: sum.distrib[symmetric]) |
56949 | 669 |
also have "(\<Sum>y\<in>(\<lambda>x. (f x, g x))`space M. fst y * emeasure M {x\<in>space M. (f x, g x) = y}) = (\<integral>\<^sup>Sx. f x \<partial>M)" |
670 |
by (intro simple_function_partition[symmetric]) (auto intro: f g) |
|
671 |
also have "(\<Sum>y\<in>(\<lambda>x. (f x, g x))`space M. snd y * emeasure M {x\<in>space M. (f x, g x) = y}) = (\<integral>\<^sup>Sx. g x \<partial>M)" |
|
672 |
by (intro simple_function_partition[symmetric]) (auto intro: f g) |
|
673 |
finally show ?thesis . |
|
35582 | 674 |
qed |
675 |
||
64267 | 676 |
lemma simple_integral_sum[simp]: |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
677 |
assumes "\<And>i x. i \<in> P \<Longrightarrow> 0 \<le> f i x" |
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
|
678 |
assumes "\<And>i. i \<in> P \<Longrightarrow> simple_function M (f i)" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
679 |
shows "(\<integral>\<^sup>Sx. (\<Sum>i\<in>P. f i x) \<partial>M) = (\<Sum>i\<in>P. integral\<^sup>S M (f i))" |
38656 | 680 |
proof cases |
681 |
assume "finite P" |
|
682 |
from this assms show ?thesis |
|
64267 | 683 |
by induct (auto simp: simple_function_sum simple_integral_add sum_nonneg) |
38656 | 684 |
qed auto |
685 |
||
47694 | 686 |
lemma simple_integral_mult[simp]: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
687 |
assumes f: "simple_function M f" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
688 |
shows "(\<integral>\<^sup>Sx. c * f x \<partial>M) = c * integral\<^sup>S M f" |
38656 | 689 |
proof - |
56949 | 690 |
have "(\<integral>\<^sup>Sx. c * f x \<partial>M) = (\<Sum>y\<in>f ` space M. (c * y) * emeasure M {x\<in>space M. f x = y})" |
691 |
using f by (intro simple_function_partition) auto |
|
692 |
also have "\<dots> = c * integral\<^sup>S M f" |
|
693 |
using f unfolding simple_integral_def |
|
64267 | 694 |
by (subst sum_distrib_left) (auto simp: mult.assoc Int_def conj_commute) |
56949 | 695 |
finally show ?thesis . |
40871 | 696 |
qed |
697 |
||
47694 | 698 |
lemma simple_integral_mono_AE: |
56949 | 699 |
assumes f[measurable]: "simple_function M f" and g[measurable]: "simple_function M g" |
47694 | 700 |
and mono: "AE x in M. f x \<le> g x" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
701 |
shows "integral\<^sup>S M f \<le> integral\<^sup>S M g" |
40859 | 702 |
proof - |
56949 | 703 |
let ?\<mu> = "\<lambda>P. emeasure M {x\<in>space M. P x}" |
704 |
have "integral\<^sup>S M f = (\<Sum>y\<in>(\<lambda>x. (f x, g x))`space M. fst y * ?\<mu> (\<lambda>x. (f x, g x) = y))" |
|
705 |
using f g by (intro simple_function_partition) auto |
|
706 |
also have "\<dots> \<le> (\<Sum>y\<in>(\<lambda>x. (f x, g x))`space M. snd y * ?\<mu> (\<lambda>x. (f x, g x) = y))" |
|
64267 | 707 |
proof (clarsimp intro!: sum_mono) |
40859 | 708 |
fix x assume "x \<in> space M" |
56949 | 709 |
let ?M = "?\<mu> (\<lambda>y. f y = f x \<and> g y = g x)" |
710 |
show "f x * ?M \<le> g x * ?M" |
|
711 |
proof cases |
|
712 |
assume "?M \<noteq> 0" |
|
713 |
then have "0 < ?M" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
714 |
by (simp add: less_le) |
56949 | 715 |
also have "\<dots> \<le> ?\<mu> (\<lambda>y. f x \<le> g x)" |
716 |
using mono by (intro emeasure_mono_AE) auto |
|
717 |
finally have "\<not> \<not> f x \<le> g x" |
|
718 |
by (intro notI) auto |
|
719 |
then show ?thesis |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
720 |
by (intro mult_right_mono) auto |
56949 | 721 |
qed simp |
40859 | 722 |
qed |
56949 | 723 |
also have "\<dots> = integral\<^sup>S M g" |
724 |
using f g by (intro simple_function_partition[symmetric]) auto |
|
725 |
finally show ?thesis . |
|
40859 | 726 |
qed |
727 |
||
47694 | 728 |
lemma simple_integral_mono: |
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
|
729 |
assumes "simple_function M f" and "simple_function M g" |
38656 | 730 |
and mono: "\<And> x. x \<in> space M \<Longrightarrow> f x \<le> g x" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
731 |
shows "integral\<^sup>S M f \<le> integral\<^sup>S M g" |
41705 | 732 |
using assms by (intro simple_integral_mono_AE) auto |
35582 | 733 |
|
47694 | 734 |
lemma simple_integral_cong_AE: |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
735 |
assumes "simple_function M f" and "simple_function M g" |
47694 | 736 |
and "AE x in M. f x = g x" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
737 |
shows "integral\<^sup>S M f = integral\<^sup>S M g" |
40859 | 738 |
using assms by (auto simp: eq_iff intro!: simple_integral_mono_AE) |
739 |
||
47694 | 740 |
lemma simple_integral_cong': |
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
|
741 |
assumes sf: "simple_function M f" "simple_function M g" |
47694 | 742 |
and mea: "(emeasure M) {x\<in>space M. f x \<noteq> g x} = 0" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
743 |
shows "integral\<^sup>S M f = integral\<^sup>S M g" |
40859 | 744 |
proof (intro simple_integral_cong_AE sf AE_I) |
47694 | 745 |
show "(emeasure M) {x\<in>space M. f x \<noteq> g x} = 0" by fact |
40859 | 746 |
show "{x \<in> space M. f x \<noteq> g x} \<in> sets M" |
747 |
using sf[THEN borel_measurable_simple_function] by auto |
|
748 |
qed simp |
|
749 |
||
47694 | 750 |
lemma simple_integral_indicator: |
56949 | 751 |
assumes A: "A \<in> sets M" |
49796
182fa22e7ee8
introduce induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49795
diff
changeset
|
752 |
assumes f: "simple_function M f" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
753 |
shows "(\<integral>\<^sup>Sx. f x * indicator A x \<partial>M) = |
56949 | 754 |
(\<Sum>x \<in> f ` space M. x * emeasure M (f -` {x} \<inter> space M \<inter> A))" |
755 |
proof - |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
756 |
have eq: "(\<lambda>x. (f x, indicator A x)) ` space M \<inter> {x. snd x = 1} = (\<lambda>x. (f x, 1::ennreal))`A" |
62390 | 757 |
using A[THEN sets.sets_into_space] by (auto simp: indicator_def image_iff split: if_split_asm) |
56949 | 758 |
have eq2: "\<And>x. f x \<notin> f ` A \<Longrightarrow> f -` {f x} \<inter> space M \<inter> A = {}" |
759 |
by (auto simp: image_iff) |
|
760 |
||
761 |
have "(\<integral>\<^sup>Sx. f x * indicator A x \<partial>M) = |
|
762 |
(\<Sum>y\<in>(\<lambda>x. (f x, indicator A x))`space M. (fst y * snd y) * emeasure M {x\<in>space M. (f x, indicator A x) = y})" |
|
763 |
using assms by (intro simple_function_partition) auto |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
764 |
also have "\<dots> = (\<Sum>y\<in>(\<lambda>x. (f x, indicator A x::ennreal))`space M. |
56949 | 765 |
if snd y = 1 then fst y * emeasure M (f -` {fst y} \<inter> space M \<inter> A) else 0)" |
69064
5840724b1d71
Prefix form of infix with * on either side no longer needs special treatment
nipkow
parents:
67399
diff
changeset
|
766 |
by (auto simp: indicator_def split: if_split_asm intro!: arg_cong2[where f="(*)"] arg_cong2[where f=emeasure] sum.cong) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
767 |
also have "\<dots> = (\<Sum>y\<in>(\<lambda>x. (f x, 1::ennreal))`A. fst y * emeasure M (f -` {fst y} \<inter> space M \<inter> A))" |
64267 | 768 |
using assms by (subst sum.If_cases) (auto intro!: simple_functionD(1) simp: eq) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
769 |
also have "\<dots> = (\<Sum>y\<in>fst`(\<lambda>x. (f x, 1::ennreal))`A. y * emeasure M (f -` {y} \<inter> space M \<inter> A))" |
64267 | 770 |
by (subst sum.reindex [of fst]) (auto simp: inj_on_def) |
56949 | 771 |
also have "\<dots> = (\<Sum>x \<in> f ` space M. x * emeasure M (f -` {x} \<inter> space M \<inter> A))" |
772 |
using A[THEN sets.sets_into_space] |
|
64267 | 773 |
by (intro sum.mono_neutral_cong_left simple_functionD f) (auto simp: image_comp comp_def eq2) |
56949 | 774 |
finally show ?thesis . |
38656 | 775 |
qed |
35582 | 776 |
|
47694 | 777 |
lemma simple_integral_indicator_only[simp]: |
38656 | 778 |
assumes "A \<in> sets M" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
779 |
shows "integral\<^sup>S M (indicator A) = emeasure M A" |
56949 | 780 |
using simple_integral_indicator[OF assms, of "\<lambda>x. 1"] sets.sets_into_space[OF assms] |
62390 | 781 |
by (simp_all add: image_constant_conv Int_absorb1 split: if_split_asm) |
35582 | 782 |
|
47694 | 783 |
lemma simple_integral_null_set: |
784 |
assumes "simple_function M u" "\<And>x. 0 \<le> u x" and "N \<in> null_sets M" |
|
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
785 |
shows "(\<integral>\<^sup>Sx. u x * indicator N x \<partial>M) = 0" |
38656 | 786 |
proof - |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
787 |
have "AE x in M. indicator N x = (0 :: ennreal)" |
61808 | 788 |
using \<open>N \<in> null_sets M\<close> by (auto simp: indicator_def intro!: AE_I[of _ _ N]) |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
789 |
then have "(\<integral>\<^sup>Sx. u x * indicator N x \<partial>M) = (\<integral>\<^sup>Sx. 0 \<partial>M)" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
790 |
using assms apply (intro simple_integral_cong_AE) by auto |
40859 | 791 |
then show ?thesis by simp |
38656 | 792 |
qed |
35582 | 793 |
|
47694 | 794 |
lemma simple_integral_cong_AE_mult_indicator: |
795 |
assumes sf: "simple_function M f" and eq: "AE x in M. x \<in> S" and "S \<in> sets M" |
|
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
796 |
shows "integral\<^sup>S M f = (\<integral>\<^sup>Sx. f x * indicator S x \<partial>M)" |
41705 | 797 |
using assms by (intro simple_integral_cong_AE) auto |
35582 | 798 |
|
47694 | 799 |
lemma simple_integral_cmult_indicator: |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
800 |
assumes A: "A \<in> sets M" |
56949 | 801 |
shows "(\<integral>\<^sup>Sx. c * indicator A x \<partial>M) = c * emeasure M A" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
802 |
using simple_integral_mult[OF simple_function_indicator[OF A]] |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
803 |
unfolding simple_integral_indicator_only[OF A] by simp |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
804 |
|
56996 | 805 |
lemma simple_integral_nonneg: |
47694 | 806 |
assumes f: "simple_function M f" and ae: "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:
51340
diff
changeset
|
807 |
shows "0 \<le> integral\<^sup>S M f" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
808 |
proof - |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
809 |
have "integral\<^sup>S M (\<lambda>x. 0) \<le> integral\<^sup>S M f" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
810 |
using simple_integral_mono_AE[OF _ f ae] by auto |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
811 |
then show ?thesis by simp |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
812 |
qed |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
813 |
|
61808 | 814 |
subsection \<open>Integral on nonnegative functions\<close> |
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
|
815 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
816 |
definition%important nn_integral :: "'a measure \<Rightarrow> ('a \<Rightarrow> ennreal) \<Rightarrow> ennreal" ("integral\<^sup>N") where |
69260
0a9688695a1b
removed relics of ASCII syntax for indexed big operators
haftmann
parents:
69164
diff
changeset
|
817 |
"integral\<^sup>N M f = (SUP g \<in> {g. simple_function M g \<and> g \<le> f}. integral\<^sup>S M g)" |
35692 | 818 |
|
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
|
819 |
syntax |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
820 |
"_nn_integral" :: "pttrn \<Rightarrow> ennreal \<Rightarrow> 'a measure \<Rightarrow> ennreal" ("\<integral>\<^sup>+((2 _./ _)/ \<partial>_)" [60,61] 110) |
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
|
821 |
|
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
|
822 |
translations |
56996 | 823 |
"\<integral>\<^sup>+x. f \<partial>M" == "CONST nn_integral M (\<lambda>x. f)" |
40872 | 824 |
|
56996 | 825 |
lemma nn_integral_def_finite: |
69260
0a9688695a1b
removed relics of ASCII syntax for indexed big operators
haftmann
parents:
69164
diff
changeset
|
826 |
"integral\<^sup>N M f = (SUP g \<in> {g. simple_function M g \<and> g \<le> f \<and> (\<forall>x. g x < top)}. integral\<^sup>S M g)" |
69313 | 827 |
(is "_ = Sup (?A ` ?f)") |
56996 | 828 |
unfolding nn_integral_def |
44928
7ef6505bde7f
renamed Complete_Lattices lemmas, removed legacy names
hoelzl
parents:
44890
diff
changeset
|
829 |
proof (safe intro!: antisym SUP_least) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
830 |
fix g assume g[measurable]: "simple_function M g" "g \<le> f" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
831 |
|
69313 | 832 |
show "integral\<^sup>S M g \<le> Sup (?A ` ?f)" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
833 |
proof cases |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
834 |
assume ae: "AE x in M. g x \<noteq> top" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
835 |
let ?G = "{x \<in> space M. g x \<noteq> top}" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
836 |
have "integral\<^sup>S M g = integral\<^sup>S M (\<lambda>x. g x * indicator ?G x)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
837 |
proof (rule simple_integral_cong_AE) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
838 |
show "AE x in M. g x = g x * indicator ?G x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
839 |
using ae AE_space by eventually_elim auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
840 |
qed (insert g, auto) |
69313 | 841 |
also have "\<dots> \<le> Sup (?A ` ?f)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
842 |
using g by (intro SUP_upper) (auto simp: le_fun_def less_top split: split_indicator) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
843 |
finally show ?thesis . |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
844 |
next |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
845 |
assume nAE: "\<not> (AE x in M. g x \<noteq> top)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
846 |
then have "emeasure M {x\<in>space M. g x = top} \<noteq> 0" (is "emeasure M ?G \<noteq> 0") |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
847 |
by (subst (asm) AE_iff_measurable[OF _ refl]) auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
848 |
then have "top = (SUP n. (\<integral>\<^sup>Sx. of_nat n * indicator ?G x \<partial>M))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
849 |
by (simp add: ennreal_SUP_of_nat_eq_top ennreal_top_eq_mult_iff SUP_mult_right_ennreal[symmetric]) |
69313 | 850 |
also have "\<dots> \<le> Sup (?A ` ?f)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
851 |
using g |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
852 |
by (safe intro!: SUP_least SUP_upper) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
853 |
(auto simp: le_fun_def of_nat_less_top top_unique[symmetric] split: split_indicator |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
854 |
intro: order_trans[of _ "g x" "f x" for x, OF order_trans[of _ top]]) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
855 |
finally show ?thesis |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
856 |
by (simp add: top_unique del: SUP_eq_top_iff Sup_eq_top_iff) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
857 |
qed |
44928
7ef6505bde7f
renamed Complete_Lattices lemmas, removed legacy names
hoelzl
parents:
44890
diff
changeset
|
858 |
qed (auto intro: SUP_upper) |
40873 | 859 |
|
56996 | 860 |
lemma nn_integral_mono_AE: |
861 |
assumes ae: "AE x in M. u x \<le> v x" shows "integral\<^sup>N M u \<le> integral\<^sup>N M v" |
|
862 |
unfolding nn_integral_def |
|
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
863 |
proof (safe intro!: SUP_mono) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
864 |
fix n assume n: "simple_function M n" "n \<le> u" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
865 |
from ae[THEN AE_E] guess N . note N = this |
47694 | 866 |
then have ae_N: "AE x in M. x \<notin> N" by (auto intro: AE_not_in) |
46731 | 867 |
let ?n = "\<lambda>x. n x * indicator (space M - N) x" |
47694 | 868 |
have "AE x in M. n x \<le> ?n x" "simple_function M ?n" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
869 |
using n N ae_N by auto |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
870 |
moreover |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
871 |
{ fix x have "?n x \<le> v x" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
872 |
proof cases |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
873 |
assume x: "x \<in> space M - N" |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
874 |
with N have "u x \<le> v x" by auto |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
875 |
with n(2)[THEN le_funD, of x] x show ?thesis |
62390 | 876 |
by (auto simp: max_def split: if_split_asm) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
877 |
qed simp } |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
878 |
then have "?n \<le> v" by (auto simp: le_funI) |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
879 |
moreover have "integral\<^sup>S M n \<le> integral\<^sup>S M ?n" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
880 |
using ae_N N n by (auto intro!: simple_integral_mono_AE) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
881 |
ultimately show "\<exists>m\<in>{g. simple_function M g \<and> g \<le> v}. integral\<^sup>S M n \<le> integral\<^sup>S M m" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
882 |
by force |
38656 | 883 |
qed |
884 |
||
56996 | 885 |
lemma nn_integral_mono: |
886 |
"(\<And>x. x \<in> space M \<Longrightarrow> u x \<le> v x) \<Longrightarrow> integral\<^sup>N M u \<le> integral\<^sup>N M v" |
|
887 |
by (auto intro: nn_integral_mono_AE) |
|
40859 | 888 |
|
60175 | 889 |
lemma mono_nn_integral: "mono F \<Longrightarrow> mono (\<lambda>x. integral\<^sup>N M (F x))" |
890 |
by (auto simp add: mono_def le_fun_def intro!: nn_integral_mono) |
|
891 |
||
56996 | 892 |
lemma nn_integral_cong_AE: |
893 |
"AE x in M. u x = v x \<Longrightarrow> integral\<^sup>N M u = integral\<^sup>N M v" |
|
894 |
by (auto simp: eq_iff intro!: nn_integral_mono_AE) |
|
40859 | 895 |
|
56996 | 896 |
lemma nn_integral_cong: |
897 |
"(\<And>x. x \<in> space M \<Longrightarrow> u x = v x) \<Longrightarrow> integral\<^sup>N M u = integral\<^sup>N M v" |
|
898 |
by (auto intro: nn_integral_cong_AE) |
|
40859 | 899 |
|
59426
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
900 |
lemma nn_integral_cong_simp: |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
901 |
"(\<And>x. x \<in> space M =simp=> u x = v x) \<Longrightarrow> integral\<^sup>N M u = integral\<^sup>N M v" |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
902 |
by (auto intro: nn_integral_cong simp: simp_implies_def) |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
903 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
904 |
lemma incseq_nn_integral: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
905 |
assumes "incseq f" shows "incseq (\<lambda>i. integral\<^sup>N M (f i))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
906 |
proof - |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
907 |
have "\<And>i x. f i x \<le> f (Suc i) x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
908 |
using assms by (auto dest!: incseq_SucD simp: le_fun_def) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
909 |
then show ?thesis |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
910 |
by (auto intro!: incseq_SucI nn_integral_mono) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
911 |
qed |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
912 |
|
56996 | 913 |
lemma nn_integral_eq_simple_integral: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
914 |
assumes f: "simple_function M f" shows "integral\<^sup>N M f = integral\<^sup>S M f" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
915 |
proof - |
46731 | 916 |
let ?f = "\<lambda>x. f x * indicator (space M) x" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
917 |
have f': "simple_function M ?f" using f by auto |
56996 | 918 |
have "integral\<^sup>N M ?f \<le> integral\<^sup>S M ?f" using f' |
919 |
by (force intro!: SUP_least simple_integral_mono simp: le_fun_def nn_integral_def) |
|
920 |
moreover have "integral\<^sup>S M ?f \<le> integral\<^sup>N M ?f" |
|
921 |
unfolding nn_integral_def |
|
44928
7ef6505bde7f
renamed Complete_Lattices lemmas, removed legacy names
hoelzl
parents:
44890
diff
changeset
|
922 |
using f' by (auto intro!: SUP_upper) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
923 |
ultimately show ?thesis |
56996 | 924 |
by (simp cong: nn_integral_cong simple_integral_cong) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
925 |
qed |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
926 |
|
61808 | 927 |
text \<open>Beppo-Levi monotone convergence theorem\<close> |
56996 | 928 |
lemma nn_integral_monotone_convergence_SUP: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
929 |
assumes f: "incseq f" and [measurable]: "\<And>i. f i \<in> borel_measurable M" |
56996 | 930 |
shows "(\<integral>\<^sup>+ x. (SUP i. f i x) \<partial>M) = (SUP i. integral\<^sup>N M (f i))" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
931 |
proof (rule antisym) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
932 |
show "(\<integral>\<^sup>+ x. (SUP i. f i x) \<partial>M) \<le> (SUP i. (\<integral>\<^sup>+ x. f i x \<partial>M))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
933 |
unfolding nn_integral_def_finite[of _ "\<lambda>x. SUP i. f i x"] |
44928
7ef6505bde7f
renamed Complete_Lattices lemmas, removed legacy names
hoelzl
parents:
44890
diff
changeset
|
934 |
proof (safe intro!: SUP_least) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
935 |
fix u assume sf_u[simp]: "simple_function M u" and |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
936 |
u: "u \<le> (\<lambda>x. SUP i. f i x)" and u_range: "\<forall>x. u x < top" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
937 |
note sf_u[THEN borel_measurable_simple_function, measurable] |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
938 |
show "integral\<^sup>S M u \<le> (SUP j. \<integral>\<^sup>+x. f j x \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
939 |
proof (rule ennreal_approx_unit) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
940 |
fix a :: ennreal assume "a < 1" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
941 |
let ?au = "\<lambda>x. a * u x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
942 |
|
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
943 |
let ?B = "\<lambda>c i. {x\<in>space M. ?au x = c \<and> c \<le> f i x}" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
944 |
have "integral\<^sup>S M ?au = (\<Sum>c\<in>?au`space M. c * (SUP i. emeasure M (?B c i)))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
945 |
unfolding simple_integral_def |
64267 | 946 |
proof (intro sum.cong ennreal_mult_left_cong refl) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
947 |
fix c assume "c \<in> ?au ` space M" "c \<noteq> 0" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
948 |
{ fix x' assume x': "x' \<in> space M" "?au x' = c" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
949 |
with \<open>c \<noteq> 0\<close> u_range have "?au x' < 1 * u x'" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
950 |
by (intro ennreal_mult_strict_right_mono \<open>a < 1\<close>) (auto simp: less_le) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
951 |
also have "\<dots> \<le> (SUP i. f i x')" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
952 |
using u by (auto simp: le_fun_def) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
953 |
finally have "\<exists>i. ?au x' \<le> f i x'" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
954 |
by (auto simp: less_SUP_iff intro: less_imp_le) } |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
955 |
then have *: "?au -` {c} \<inter> space M = (\<Union>i. ?B c i)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
956 |
by auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
957 |
show "emeasure M (?au -` {c} \<inter> space M) = (SUP i. emeasure M (?B c i))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
958 |
unfolding * using f |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
959 |
by (intro SUP_emeasure_incseq[symmetric]) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
960 |
(auto simp: incseq_def le_fun_def intro: order_trans) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
961 |
qed |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
962 |
also have "\<dots> = (SUP i. \<Sum>c\<in>?au`space M. c * emeasure M (?B c i))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
963 |
unfolding SUP_mult_left_ennreal using f |
64267 | 964 |
by (intro ennreal_SUP_sum[symmetric]) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
965 |
(auto intro!: mult_mono emeasure_mono simp: incseq_def le_fun_def intro: order_trans) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
966 |
also have "\<dots> \<le> (SUP i. integral\<^sup>N M (f i))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
967 |
proof (intro SUP_subset_mono order_refl) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
968 |
fix i |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
969 |
have "(\<Sum>c\<in>?au`space M. c * emeasure M (?B c i)) = |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
970 |
(\<integral>\<^sup>Sx. (a * u x) * indicator {x\<in>space M. a * u x \<le> f i x} x \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
971 |
by (subst simple_integral_indicator) |
64267 | 972 |
(auto intro!: sum.cong ennreal_mult_left_cong arg_cong2[where f=emeasure]) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
973 |
also have "\<dots> = (\<integral>\<^sup>+x. (a * u x) * indicator {x\<in>space M. a * u x \<le> f i x} x \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
974 |
by (rule nn_integral_eq_simple_integral[symmetric]) simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
975 |
also have "\<dots> \<le> (\<integral>\<^sup>+x. f i x \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
976 |
by (intro nn_integral_mono) (auto split: split_indicator) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
977 |
finally show "(\<Sum>c\<in>?au`space M. c * emeasure M (?B c i)) \<le> (\<integral>\<^sup>+x. f i x \<partial>M)" . |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
978 |
qed |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
979 |
finally show "a * integral\<^sup>S M u \<le> (SUP i. integral\<^sup>N M (f i))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
980 |
by simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
981 |
qed |
35582 | 982 |
qed |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
983 |
qed (auto intro!: SUP_least SUP_upper nn_integral_mono) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
984 |
|
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
985 |
lemma sup_continuous_nn_integral[order_continuous_intros]: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
986 |
assumes f: "\<And>y. sup_continuous (f y)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
987 |
assumes [measurable]: "\<And>x. (\<lambda>y. f y x) \<in> borel_measurable M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
988 |
shows "sup_continuous (\<lambda>x. (\<integral>\<^sup>+y. f y x \<partial>M))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
989 |
unfolding sup_continuous_def |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
990 |
proof safe |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
991 |
fix C :: "nat \<Rightarrow> 'b" assume C: "incseq C" |
69313 | 992 |
with sup_continuous_mono[OF f] show "(\<integral>\<^sup>+ y. f y (Sup (C ` UNIV)) \<partial>M) = (SUP i. \<integral>\<^sup>+ y. f y (C i) \<partial>M)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
993 |
unfolding sup_continuousD[OF f C] |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
994 |
by (subst nn_integral_monotone_convergence_SUP) (auto simp: mono_def le_fun_def) |
35582 | 995 |
qed |
996 |
||
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
997 |
theorem nn_integral_monotone_convergence_SUP_AE: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
998 |
assumes f: "\<And>i. AE x in M. f i x \<le> f (Suc i) x" "\<And>i. f i \<in> borel_measurable M" |
56996 | 999 |
shows "(\<integral>\<^sup>+ x. (SUP i. f i x) \<partial>M) = (SUP i. integral\<^sup>N M (f i))" |
40859 | 1000 |
proof - |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1001 |
from f have "AE x in M. \<forall>i. f i x \<le> f (Suc i) x" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1002 |
by (simp add: AE_all_countable) |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1003 |
from this[THEN AE_E] guess N . note N = this |
46731 | 1004 |
let ?f = "\<lambda>i x. if x \<in> space M - N then f i x else 0" |
47694 | 1005 |
have f_eq: "AE x in M. \<forall>i. ?f i x = f i x" using N by (auto intro!: AE_I[of _ _ N]) |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1006 |
then have "(\<integral>\<^sup>+ x. (SUP i. f i x) \<partial>M) = (\<integral>\<^sup>+ x. (SUP i. ?f i x) \<partial>M)" |
56996 | 1007 |
by (auto intro!: nn_integral_cong_AE) |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1008 |
also have "\<dots> = (SUP i. (\<integral>\<^sup>+ x. ?f i x \<partial>M))" |
56996 | 1009 |
proof (rule nn_integral_monotone_convergence_SUP) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1010 |
show "incseq ?f" using N(1) by (force intro!: incseq_SucI le_funI) |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1011 |
{ fix i show "(\<lambda>x. if x \<in> space M - N then f i x else 0) \<in> borel_measurable M" |
59000 | 1012 |
using f N(3) by (intro measurable_If_set) auto } |
40859 | 1013 |
qed |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1014 |
also have "\<dots> = (SUP i. (\<integral>\<^sup>+ x. f i x \<partial>M))" |
69313 | 1015 |
using f_eq by (force intro!: arg_cong[where f = "\<lambda>f. Sup (range f)"] nn_integral_cong_AE ext) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1016 |
finally show ?thesis . |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1017 |
qed |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1018 |
|
56996 | 1019 |
lemma nn_integral_monotone_convergence_simple: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1020 |
"incseq f \<Longrightarrow> (\<And>i. simple_function M (f i)) \<Longrightarrow> (SUP i. \<integral>\<^sup>S x. f i x \<partial>M) = (\<integral>\<^sup>+x. (SUP i. f i x) \<partial>M)" |
63092 | 1021 |
using nn_integral_monotone_convergence_SUP[of f M] |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1022 |
by (simp add: nn_integral_eq_simple_integral[symmetric] borel_measurable_simple_function) |
40859 | 1023 |
|
47694 | 1024 |
lemma SUP_simple_integral_sequences: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1025 |
assumes f: "incseq f" "\<And>i. simple_function M (f i)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1026 |
and g: "incseq g" "\<And>i. simple_function M (g i)" |
47694 | 1027 |
and eq: "AE x in M. (SUP i. f i x) = (SUP i. g i x)" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1028 |
shows "(SUP i. integral\<^sup>S M (f i)) = (SUP i. integral\<^sup>S M (g i))" |
69313 | 1029 |
(is "Sup (?F ` _) = Sup (?G ` _)") |
38656 | 1030 |
proof - |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1031 |
have "(SUP i. integral\<^sup>S M (f i)) = (\<integral>\<^sup>+x. (SUP i. f i x) \<partial>M)" |
56996 | 1032 |
using f by (rule nn_integral_monotone_convergence_simple) |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1033 |
also have "\<dots> = (\<integral>\<^sup>+x. (SUP i. g i x) \<partial>M)" |
56996 | 1034 |
unfolding eq[THEN nn_integral_cong_AE] .. |
38656 | 1035 |
also have "\<dots> = (SUP i. ?G i)" |
56996 | 1036 |
using g by (rule nn_integral_monotone_convergence_simple[symmetric]) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1037 |
finally show ?thesis by simp |
38656 | 1038 |
qed |
1039 |
||
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1040 |
lemma nn_integral_const[simp]: "(\<integral>\<^sup>+ x. c \<partial>M) = c * emeasure M (space M)" |
56996 | 1041 |
by (subst nn_integral_eq_simple_integral) auto |
38656 | 1042 |
|
56996 | 1043 |
lemma nn_integral_linear: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1044 |
assumes f: "f \<in> borel_measurable M" and g: "g \<in> borel_measurable M" |
56996 | 1045 |
shows "(\<integral>\<^sup>+ x. a * f x + g x \<partial>M) = a * integral\<^sup>N M f + integral\<^sup>N M g" |
1046 |
(is "integral\<^sup>N M ?L = _") |
|
35582 | 1047 |
proof - |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1048 |
from borel_measurable_implies_simple_function_sequence'[OF f(1)] guess u . |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1049 |
note u = nn_integral_monotone_convergence_simple[OF this(2,1)] this |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1050 |
from borel_measurable_implies_simple_function_sequence'[OF g(1)] guess v . |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1051 |
note v = nn_integral_monotone_convergence_simple[OF this(2,1)] this |
46731 | 1052 |
let ?L' = "\<lambda>i x. a * u i x + v i x" |
38656 | 1053 |
|
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1054 |
have "?L \<in> borel_measurable M" using assms by auto |
38656 | 1055 |
from borel_measurable_implies_simple_function_sequence'[OF this] guess l . |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1056 |
note l = nn_integral_monotone_convergence_simple[OF this(2,1)] this |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1057 |
|
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1058 |
have inc: "incseq (\<lambda>i. a * integral\<^sup>S M (u i))" "incseq (\<lambda>i. integral\<^sup>S M (v i))" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1059 |
using u v by (auto simp: incseq_Suc_iff le_fun_def intro!: add_mono mult_left_mono simple_integral_mono) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1060 |
|
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1061 |
have l': "(SUP i. integral\<^sup>S M (l i)) = (SUP i. integral\<^sup>S M (?L' i))" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1062 |
proof (rule SUP_simple_integral_sequences[OF l(3,2)]) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1063 |
show "incseq ?L'" "\<And>i. simple_function M (?L' i)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1064 |
using u v unfolding incseq_Suc_iff le_fun_def |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1065 |
by (auto intro!: add_mono mult_left_mono) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1066 |
{ fix x |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1067 |
have "(SUP i. a * u i x + v i x) = a * (SUP i. u i x) + (SUP i. v i x)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1068 |
using u(3) v(3) u(4)[of _ x] v(4)[of _ x] unfolding SUP_mult_left_ennreal |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1069 |
by (auto intro!: ennreal_SUP_add simp: incseq_Suc_iff le_fun_def add_mono mult_left_mono) } |
47694 | 1070 |
then show "AE x in M. (SUP i. l i x) = (SUP i. ?L' i x)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1071 |
unfolding l(5) using u(5) v(5) by (intro AE_I2) auto |
38656 | 1072 |
qed |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1073 |
also have "\<dots> = (SUP i. a * integral\<^sup>S M (u i) + integral\<^sup>S M (v i))" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1074 |
using u(2) v(2) by auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1075 |
finally show ?thesis |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1076 |
unfolding l(5)[symmetric] l(1)[symmetric] |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1077 |
by (simp add: ennreal_SUP_add[OF inc] v u SUP_mult_left_ennreal[symmetric]) |
38656 | 1078 |
qed |
1079 |
||
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1080 |
lemma nn_integral_cmult: "f \<in> borel_measurable M \<Longrightarrow> (\<integral>\<^sup>+ x. c * f x \<partial>M) = c * integral\<^sup>N M f" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1081 |
using nn_integral_linear[of f M "\<lambda>x. 0" c] by simp |
38656 | 1082 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1083 |
lemma nn_integral_multc: "f \<in> borel_measurable M \<Longrightarrow> (\<integral>\<^sup>+ x. f x * c \<partial>M) = integral\<^sup>N M f * c" |
63092 | 1084 |
unfolding mult.commute[of _ c] nn_integral_cmult by simp |
41096 | 1085 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1086 |
lemma nn_integral_divide: "f \<in> borel_measurable M \<Longrightarrow> (\<integral>\<^sup>+ x. f x / c \<partial>M) = (\<integral>\<^sup>+ x. f x \<partial>M) / c" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1087 |
unfolding divide_ennreal_def by (rule nn_integral_multc) |
59000 | 1088 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1089 |
lemma nn_integral_indicator[simp]: "A \<in> sets M \<Longrightarrow> (\<integral>\<^sup>+ x. indicator A x\<partial>M) = (emeasure M) A" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1090 |
by (subst nn_integral_eq_simple_integral) (auto simp: simple_integral_indicator) |
38656 | 1091 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1092 |
lemma nn_integral_cmult_indicator: "A \<in> sets M \<Longrightarrow> (\<integral>\<^sup>+ x. c * indicator A x \<partial>M) = c * emeasure M A" |
56996 | 1093 |
by (subst nn_integral_eq_simple_integral) |
41544 | 1094 |
(auto simp: simple_function_indicator simple_integral_indicator) |
38656 | 1095 |
|
56996 | 1096 |
lemma nn_integral_indicator': |
50097
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1097 |
assumes [measurable]: "A \<inter> space M \<in> sets M" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1098 |
shows "(\<integral>\<^sup>+ x. indicator A x \<partial>M) = emeasure M (A \<inter> space M)" |
50097
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1099 |
proof - |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1100 |
have "(\<integral>\<^sup>+ x. indicator A x \<partial>M) = (\<integral>\<^sup>+ x. indicator (A \<inter> space M) x \<partial>M)" |
56996 | 1101 |
by (intro nn_integral_cong) (simp split: split_indicator) |
50097
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1102 |
also have "\<dots> = emeasure M (A \<inter> space M)" |
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1103 |
by simp |
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1104 |
finally show ?thesis . |
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1105 |
qed |
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1106 |
|
62083 | 1107 |
lemma nn_integral_indicator_singleton[simp]: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1108 |
assumes [measurable]: "{y} \<in> sets M" shows "(\<integral>\<^sup>+x. f x * indicator {y} x \<partial>M) = f y * emeasure M {y}" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1109 |
proof - |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1110 |
have "(\<integral>\<^sup>+x. f x * indicator {y} x \<partial>M) = (\<integral>\<^sup>+x. f y * indicator {y} x \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1111 |
by (auto intro!: nn_integral_cong split: split_indicator) |
62083 | 1112 |
then show ?thesis |
1113 |
by (simp add: nn_integral_cmult) |
|
1114 |
qed |
|
1115 |
||
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1116 |
lemma nn_integral_set_ennreal: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1117 |
"(\<integral>\<^sup>+x. ennreal (f x) * indicator A x \<partial>M) = (\<integral>\<^sup>+x. ennreal (f x * indicator A x) \<partial>M)" |
62083 | 1118 |
by (rule nn_integral_cong) (simp split: split_indicator) |
1119 |
||
1120 |
lemma nn_integral_indicator_singleton'[simp]: |
|
1121 |
assumes [measurable]: "{y} \<in> sets M" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1122 |
shows "(\<integral>\<^sup>+x. ennreal (f x * indicator {y} x) \<partial>M) = f y * emeasure M {y}" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1123 |
by (subst nn_integral_set_ennreal[symmetric]) (simp add: nn_integral_indicator_singleton) |
62083 | 1124 |
|
56996 | 1125 |
lemma nn_integral_add: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1126 |
"f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow> (\<integral>\<^sup>+ x. f x + g x \<partial>M) = integral\<^sup>N M f + integral\<^sup>N M g" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1127 |
using nn_integral_linear[of f M g 1] by simp |
38656 | 1128 |
|
64267 | 1129 |
lemma nn_integral_sum: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1130 |
"(\<And>i. i \<in> P \<Longrightarrow> f i \<in> borel_measurable M) \<Longrightarrow> (\<integral>\<^sup>+ x. (\<Sum>i\<in>P. f i x) \<partial>M) = (\<Sum>i\<in>P. integral\<^sup>N M (f i))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1131 |
by (induction P rule: infinite_finite_induct) (auto simp: nn_integral_add) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1132 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
1133 |
theorem nn_integral_suminf: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1134 |
assumes f: "\<And>i. f i \<in> borel_measurable M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1135 |
shows "(\<integral>\<^sup>+ x. (\<Sum>i. f i x) \<partial>M) = (\<Sum>i. integral\<^sup>N M (f i))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1136 |
proof - |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1137 |
have all_pos: "AE x in M. \<forall>i. 0 \<le> f i x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1138 |
using assms by (auto simp: AE_all_countable) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1139 |
have "(\<Sum>i. integral\<^sup>N M (f i)) = (SUP n. \<Sum>i<n. integral\<^sup>N M (f i))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1140 |
by (rule suminf_eq_SUP) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1141 |
also have "\<dots> = (SUP n. \<integral>\<^sup>+x. (\<Sum>i<n. f i x) \<partial>M)" |
64267 | 1142 |
unfolding nn_integral_sum[OF f] .. |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1143 |
also have "\<dots> = \<integral>\<^sup>+x. (SUP n. \<Sum>i<n. f i x) \<partial>M" using f all_pos |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1144 |
by (intro nn_integral_monotone_convergence_SUP_AE[symmetric]) |
65680
378a2f11bec9
Simplification of some proofs. Also key lemmas using !! rather than ! in premises
paulson <lp15@cam.ac.uk>
parents:
64283
diff
changeset
|
1145 |
(elim AE_mp, auto simp: sum_nonneg simp del: sum_lessThan_Suc intro!: AE_I2 sum_mono2) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1146 |
also have "\<dots> = \<integral>\<^sup>+x. (\<Sum>i. f i x) \<partial>M" using all_pos |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1147 |
by (intro nn_integral_cong_AE) (auto simp: suminf_eq_SUP) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1148 |
finally show ?thesis by simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1149 |
qed |
38656 | 1150 |
|
57447
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1151 |
lemma nn_integral_bound_simple_function: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1152 |
assumes bnd: "\<And>x. x \<in> space M \<Longrightarrow> f x < \<infinity>" |
57447
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1153 |
assumes f[measurable]: "simple_function M f" |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1154 |
assumes supp: "emeasure M {x\<in>space M. f x \<noteq> 0} < \<infinity>" |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1155 |
shows "nn_integral M f < \<infinity>" |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1156 |
proof cases |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1157 |
assume "space M = {}" |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1158 |
then have "nn_integral M f = (\<integral>\<^sup>+x. 0 \<partial>M)" |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1159 |
by (intro nn_integral_cong) auto |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1160 |
then show ?thesis by simp |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1161 |
next |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1162 |
assume "space M \<noteq> {}" |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1163 |
with simple_functionD(1)[OF f] bnd have bnd: "0 \<le> Max (f`space M) \<and> Max (f`space M) < \<infinity>" |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1164 |
by (subst Max_less_iff) (auto simp: Max_ge_iff) |
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
1165 |
|
57447
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1166 |
have "nn_integral M f \<le> (\<integral>\<^sup>+x. Max (f`space M) * indicator {x\<in>space M. f x \<noteq> 0} x \<partial>M)" |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1167 |
proof (rule nn_integral_mono) |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1168 |
fix x assume "x \<in> space M" |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1169 |
with f show "f x \<le> Max (f ` space M) * indicator {x \<in> space M. f x \<noteq> 0} x" |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1170 |
by (auto split: split_indicator intro!: Max_ge simple_functionD) |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1171 |
qed |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1172 |
also have "\<dots> < \<infinity>" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1173 |
using bnd supp by (subst nn_integral_cmult) (auto simp: ennreal_mult_less_top) |
57447
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1174 |
finally show ?thesis . |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1175 |
qed |
87429bdecad5
import more stuff from the CLT proof; base the lborel measure on interval_measure; remove lebesgue measure
hoelzl
parents:
57418
diff
changeset
|
1176 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
1177 |
theorem nn_integral_Markov_inequality: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1178 |
assumes u: "u \<in> borel_measurable M" and "A \<in> sets M" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1179 |
shows "(emeasure M) ({x\<in>space M. 1 \<le> c * u x} \<inter> A) \<le> c * (\<integral>\<^sup>+ x. u x * indicator A x \<partial>M)" |
47694 | 1180 |
(is "(emeasure M) ?A \<le> _ * ?PI") |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1181 |
proof - |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1182 |
have "?A \<in> sets M" |
61808 | 1183 |
using \<open>A \<in> sets M\<close> u by auto |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1184 |
hence "(emeasure M) ?A = (\<integral>\<^sup>+ x. indicator ?A x \<partial>M)" |
56996 | 1185 |
using nn_integral_indicator by simp |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1186 |
also have "\<dots> \<le> (\<integral>\<^sup>+ x. c * (u x * indicator A x) \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1187 |
using u by (auto intro!: nn_integral_mono_AE simp: indicator_def) |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1188 |
also have "\<dots> = c * (\<integral>\<^sup>+ x. u x * indicator A x \<partial>M)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1189 |
using assms by (auto intro!: nn_integral_cmult) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1190 |
finally show ?thesis . |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1191 |
qed |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1192 |
|
56996 | 1193 |
lemma nn_integral_noteq_infinite: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1194 |
assumes g: "g \<in> borel_measurable M" and "integral\<^sup>N M g \<noteq> \<infinity>" |
47694 | 1195 |
shows "AE x in M. g x \<noteq> \<infinity>" |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1196 |
proof (rule ccontr) |
47694 | 1197 |
assume c: "\<not> (AE x in M. g x \<noteq> \<infinity>)" |
1198 |
have "(emeasure M) {x\<in>space M. g x = \<infinity>} \<noteq> 0" |
|
1199 |
using c g by (auto simp add: AE_iff_null) |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1200 |
then have "0 < (emeasure M) {x\<in>space M. g x = \<infinity>}" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1201 |
by (auto simp: zero_less_iff_neq_zero) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1202 |
then have "\<infinity> = \<infinity> * (emeasure M) {x\<in>space M. g x = \<infinity>}" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1203 |
by (auto simp: ennreal_top_eq_mult_iff) |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1204 |
also have "\<dots> \<le> (\<integral>\<^sup>+x. \<infinity> * indicator {x\<in>space M. g x = \<infinity>} x \<partial>M)" |
56996 | 1205 |
using g by (subst nn_integral_cmult_indicator) auto |
1206 |
also have "\<dots> \<le> integral\<^sup>N M g" |
|
1207 |
using assms by (auto intro!: nn_integral_mono_AE simp: indicator_def) |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1208 |
finally show False |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1209 |
using \<open>integral\<^sup>N M g \<noteq> \<infinity>\<close> by (auto simp: top_unique) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1210 |
qed |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1211 |
|
56996 | 1212 |
lemma nn_integral_PInf: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1213 |
assumes f: "f \<in> borel_measurable M" and not_Inf: "integral\<^sup>N M f \<noteq> \<infinity>" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1214 |
shows "emeasure M (f -` {\<infinity>} \<inter> space M) = 0" |
56949 | 1215 |
proof - |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1216 |
have "\<infinity> * emeasure M (f -` {\<infinity>} \<inter> space M) = (\<integral>\<^sup>+ x. \<infinity> * indicator (f -` {\<infinity>} \<inter> space M) x \<partial>M)" |
56996 | 1217 |
using f by (subst nn_integral_cmult_indicator) (auto simp: measurable_sets) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1218 |
also have "\<dots> \<le> integral\<^sup>N M f" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1219 |
by (auto intro!: nn_integral_mono simp: indicator_def) |
56996 | 1220 |
finally have "\<infinity> * (emeasure M) (f -` {\<infinity>} \<inter> space M) \<le> integral\<^sup>N M f" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1221 |
by simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1222 |
then show ?thesis |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1223 |
using assms by (auto simp: ennreal_top_mult top_unique split: if_split_asm) |
56949 | 1224 |
qed |
1225 |
||
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1226 |
lemma simple_integral_PInf: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1227 |
"simple_function M f \<Longrightarrow> integral\<^sup>S M f \<noteq> \<infinity> \<Longrightarrow> emeasure M (f -` {\<infinity>} \<inter> space M) = 0" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1228 |
by (rule nn_integral_PInf) (auto simp: nn_integral_eq_simple_integral borel_measurable_simple_function) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1229 |
|
56996 | 1230 |
lemma nn_integral_PInf_AE: |
1231 |
assumes "f \<in> borel_measurable M" "integral\<^sup>N M f \<noteq> \<infinity>" shows "AE x in M. f x \<noteq> \<infinity>" |
|
56949 | 1232 |
proof (rule AE_I) |
1233 |
show "(emeasure M) (f -` {\<infinity>} \<inter> space M) = 0" |
|
56996 | 1234 |
by (rule nn_integral_PInf[OF assms]) |
56949 | 1235 |
show "f -` {\<infinity>} \<inter> space M \<in> sets M" |
1236 |
using assms by (auto intro: borel_measurable_vimage) |
|
1237 |
qed auto |
|
1238 |
||
56996 | 1239 |
lemma nn_integral_diff: |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1240 |
assumes f: "f \<in> borel_measurable M" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1241 |
and g: "g \<in> borel_measurable M" |
56996 | 1242 |
and fin: "integral\<^sup>N M g \<noteq> \<infinity>" |
47694 | 1243 |
and mono: "AE x in M. g x \<le> f x" |
56996 | 1244 |
shows "(\<integral>\<^sup>+ x. f x - g x \<partial>M) = integral\<^sup>N M f - integral\<^sup>N M g" |
38656 | 1245 |
proof - |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1246 |
have diff: "(\<lambda>x. f x - g x) \<in> borel_measurable M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1247 |
using assms by auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1248 |
have "AE x in M. f x = f x - g x + g x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1249 |
using diff_add_cancel_ennreal mono nn_integral_noteq_infinite[OF g fin] assms by auto |
56996 | 1250 |
then have **: "integral\<^sup>N M f = (\<integral>\<^sup>+x. f x - g x \<partial>M) + integral\<^sup>N M g" |
1251 |
unfolding nn_integral_add[OF diff g, symmetric] |
|
1252 |
by (rule nn_integral_cong_AE) |
|
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1253 |
show ?thesis unfolding ** |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1254 |
using fin |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1255 |
by (cases rule: ennreal2_cases[of "\<integral>\<^sup>+ x. f x - g x \<partial>M" "integral\<^sup>N M g"]) auto |
38656 | 1256 |
qed |
1257 |
||
56996 | 1258 |
lemma nn_integral_mult_bounded_inf: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1259 |
assumes f: "f \<in> borel_measurable M" "(\<integral>\<^sup>+x. f x \<partial>M) < \<infinity>" and c: "c \<noteq> \<infinity>" and ae: "AE x in M. g x \<le> c * f x" |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1260 |
shows "(\<integral>\<^sup>+x. g x \<partial>M) < \<infinity>" |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1261 |
proof - |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1262 |
have "(\<integral>\<^sup>+x. g x \<partial>M) \<le> (\<integral>\<^sup>+x. c * f x \<partial>M)" |
56996 | 1263 |
by (intro nn_integral_mono_AE ae) |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1264 |
also have "(\<integral>\<^sup>+x. c * f x \<partial>M) < \<infinity>" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1265 |
using c f by (subst nn_integral_cmult) (auto simp: ennreal_mult_less_top top_unique not_less) |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1266 |
finally show ?thesis . |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1267 |
qed |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1268 |
|
61808 | 1269 |
text \<open>Fatou's lemma: convergence theorem on limes inferior\<close> |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1270 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1271 |
lemma nn_integral_monotone_convergence_INF_AE': |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1272 |
assumes f: "\<And>i. AE x in M. f (Suc i) x \<le> f i x" and [measurable]: "\<And>i. f i \<in> borel_measurable M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1273 |
and *: "(\<integral>\<^sup>+ x. f 0 x \<partial>M) < \<infinity>" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1274 |
shows "(\<integral>\<^sup>+ x. (INF i. f i x) \<partial>M) = (INF i. integral\<^sup>N M (f i))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1275 |
proof (rule ennreal_minus_cancel) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1276 |
have "integral\<^sup>N M (f 0) - (\<integral>\<^sup>+ x. (INF i. f i x) \<partial>M) = (\<integral>\<^sup>+x. f 0 x - (INF i. f i x) \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1277 |
proof (rule nn_integral_diff[symmetric]) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1278 |
have "(\<integral>\<^sup>+ x. (INF i. f i x) \<partial>M) \<le> (\<integral>\<^sup>+ x. f 0 x \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1279 |
by (intro nn_integral_mono INF_lower) simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1280 |
with * show "(\<integral>\<^sup>+ x. (INF i. f i x) \<partial>M) \<noteq> \<infinity>" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1281 |
by simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1282 |
qed (auto intro: INF_lower) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1283 |
also have "\<dots> = (\<integral>\<^sup>+x. (SUP i. f 0 x - f i x) \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1284 |
by (simp add: ennreal_INF_const_minus) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1285 |
also have "\<dots> = (SUP i. (\<integral>\<^sup>+x. f 0 x - f i x \<partial>M))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1286 |
proof (intro nn_integral_monotone_convergence_SUP_AE) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1287 |
show "AE x in M. f 0 x - f i x \<le> f 0 x - f (Suc i) x" for i |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1288 |
using f[of i] by eventually_elim (auto simp: ennreal_mono_minus) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1289 |
qed simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1290 |
also have "\<dots> = (SUP i. nn_integral M (f 0) - (\<integral>\<^sup>+x. f i x \<partial>M))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1291 |
proof (subst nn_integral_diff[symmetric]) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1292 |
fix i |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1293 |
have dec: "AE x in M. \<forall>i. f (Suc i) x \<le> f i x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1294 |
unfolding AE_all_countable using f by auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1295 |
then show "AE x in M. f i x \<le> f 0 x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1296 |
using dec by eventually_elim (auto intro: lift_Suc_antimono_le[of "\<lambda>i. f i x" 0 i for x]) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1297 |
then have "(\<integral>\<^sup>+ x. f i x \<partial>M) \<le> (\<integral>\<^sup>+ x. f 0 x \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1298 |
by (rule nn_integral_mono_AE) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1299 |
with * show "(\<integral>\<^sup>+ x. f i x \<partial>M) \<noteq> \<infinity>" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1300 |
by simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1301 |
qed (insert f, auto simp: decseq_def le_fun_def) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1302 |
finally show "integral\<^sup>N M (f 0) - (\<integral>\<^sup>+ x. (INF i. f i x) \<partial>M) = |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1303 |
integral\<^sup>N M (f 0) - (INF i. \<integral>\<^sup>+ x. f i x \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1304 |
by (simp add: ennreal_INF_const_minus) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1305 |
qed (insert *, auto intro!: nn_integral_mono intro: INF_lower) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1306 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
1307 |
theorem nn_integral_monotone_convergence_INF_AE: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1308 |
fixes f :: "nat \<Rightarrow> 'a \<Rightarrow> ennreal" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1309 |
assumes f: "\<And>i. AE x in M. f (Suc i) x \<le> f i x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1310 |
and [measurable]: "\<And>i. f i \<in> borel_measurable M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1311 |
and fin: "(\<integral>\<^sup>+ x. f i x \<partial>M) < \<infinity>" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1312 |
shows "(\<integral>\<^sup>+ x. (INF i. f i x) \<partial>M) = (INF i. integral\<^sup>N M (f i))" |
38656 | 1313 |
proof - |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1314 |
{ fix f :: "nat \<Rightarrow> ennreal" and j assume "decseq f" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1315 |
then have "(INF i. f i) = (INF i. f (i + j))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1316 |
apply (intro INF_eq) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1317 |
apply (rule_tac x="i" in bexI) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1318 |
apply (auto simp: decseq_def le_fun_def) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1319 |
done } |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1320 |
note INF_shift = this |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1321 |
have mono: "AE x in M. \<forall>i. f (Suc i) x \<le> f i x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1322 |
using f by (auto simp: AE_all_countable) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1323 |
then have "AE x in M. (INF i. f i x) = (INF n. f (n + i) x)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1324 |
by eventually_elim (auto intro!: decseq_SucI INF_shift) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1325 |
then have "(\<integral>\<^sup>+ x. (INF i. f i x) \<partial>M) = (\<integral>\<^sup>+ x. (INF n. f (n + i) x) \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1326 |
by (rule nn_integral_cong_AE) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1327 |
also have "\<dots> = (INF n. (\<integral>\<^sup>+ x. f (n + i) x \<partial>M))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1328 |
by (rule nn_integral_monotone_convergence_INF_AE') (insert assms, auto) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1329 |
also have "\<dots> = (INF n. (\<integral>\<^sup>+ x. f n x \<partial>M))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1330 |
by (intro INF_shift[symmetric] decseq_SucI nn_integral_mono_AE f) |
38656 | 1331 |
finally show ?thesis . |
35582 | 1332 |
qed |
1333 |
||
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1334 |
lemma nn_integral_monotone_convergence_INF_decseq: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1335 |
assumes f: "decseq f" and *: "\<And>i. f i \<in> borel_measurable M" "(\<integral>\<^sup>+ x. f i x \<partial>M) < \<infinity>" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1336 |
shows "(\<integral>\<^sup>+ x. (INF i. f i x) \<partial>M) = (INF i. integral\<^sup>N M (f i))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1337 |
using nn_integral_monotone_convergence_INF_AE[of f M i, OF _ *] f by (auto simp: decseq_Suc_iff le_fun_def) |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1338 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
1339 |
theorem nn_integral_liminf: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1340 |
fixes u :: "nat \<Rightarrow> 'a \<Rightarrow> ennreal" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1341 |
assumes u: "\<And>i. u i \<in> borel_measurable M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1342 |
shows "(\<integral>\<^sup>+ x. liminf (\<lambda>n. u n x) \<partial>M) \<le> liminf (\<lambda>n. integral\<^sup>N M (u n))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1343 |
proof - |
69260
0a9688695a1b
removed relics of ASCII syntax for indexed big operators
haftmann
parents:
69164
diff
changeset
|
1344 |
have "(\<integral>\<^sup>+ x. liminf (\<lambda>n. u n x) \<partial>M) = (SUP n. \<integral>\<^sup>+ x. (INF i\<in>{n..}. u i x) \<partial>M)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1345 |
unfolding liminf_SUP_INF using u |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1346 |
by (intro nn_integral_monotone_convergence_SUP_AE) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1347 |
(auto intro!: AE_I2 intro: INF_greatest INF_superset_mono) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1348 |
also have "\<dots> \<le> liminf (\<lambda>n. integral\<^sup>N M (u n))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1349 |
by (auto simp: liminf_SUP_INF intro!: SUP_mono INF_greatest nn_integral_mono INF_lower) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1350 |
finally show ?thesis . |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1351 |
qed |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1352 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
1353 |
theorem nn_integral_limsup: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1354 |
fixes u :: "nat \<Rightarrow> 'a \<Rightarrow> ennreal" |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1355 |
assumes [measurable]: "\<And>i. u i \<in> borel_measurable M" "w \<in> borel_measurable M" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1356 |
assumes bounds: "\<And>i. AE x in M. u i x \<le> w x" and w: "(\<integral>\<^sup>+x. w x \<partial>M) < \<infinity>" |
56996 | 1357 |
shows "limsup (\<lambda>n. integral\<^sup>N M (u n)) \<le> (\<integral>\<^sup>+ x. limsup (\<lambda>n. u n x) \<partial>M)" |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1358 |
proof - |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1359 |
have bnd: "AE x in M. \<forall>i. u i x \<le> w x" |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1360 |
using bounds by (auto simp: AE_all_countable) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1361 |
then have "(\<integral>\<^sup>+ x. (SUP n. u n x) \<partial>M) \<le> (\<integral>\<^sup>+ x. w x \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1362 |
by (auto intro!: nn_integral_mono_AE elim: eventually_mono intro: SUP_least) |
69260
0a9688695a1b
removed relics of ASCII syntax for indexed big operators
haftmann
parents:
69164
diff
changeset
|
1363 |
then have "(\<integral>\<^sup>+ x. limsup (\<lambda>n. u n x) \<partial>M) = (INF n. \<integral>\<^sup>+ x. (SUP i\<in>{n..}. u i x) \<partial>M)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1364 |
unfolding limsup_INF_SUP using bnd w |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1365 |
by (intro nn_integral_monotone_convergence_INF_AE') |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1366 |
(auto intro!: AE_I2 intro: SUP_least SUP_subset_mono) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1367 |
also have "\<dots> \<ge> limsup (\<lambda>n. integral\<^sup>N M (u n))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1368 |
by (auto simp: limsup_INF_SUP intro!: INF_mono SUP_least exI nn_integral_mono SUP_upper) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1369 |
finally (xtrans) show ?thesis . |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1370 |
qed |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1371 |
|
57025 | 1372 |
lemma nn_integral_LIMSEQ: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1373 |
assumes f: "incseq f" "\<And>i. f i \<in> borel_measurable M" |
61969 | 1374 |
and u: "\<And>x. (\<lambda>i. f i x) \<longlonglongrightarrow> u x" |
1375 |
shows "(\<lambda>n. integral\<^sup>N M (f n)) \<longlonglongrightarrow> integral\<^sup>N M u" |
|
57025 | 1376 |
proof - |
61969 | 1377 |
have "(\<lambda>n. integral\<^sup>N M (f n)) \<longlonglongrightarrow> (SUP n. integral\<^sup>N M (f n))" |
57025 | 1378 |
using f by (intro LIMSEQ_SUP[of "\<lambda>n. integral\<^sup>N M (f n)"] incseq_nn_integral) |
1379 |
also have "(SUP n. integral\<^sup>N M (f n)) = integral\<^sup>N M (\<lambda>x. SUP n. f n x)" |
|
1380 |
using f by (intro nn_integral_monotone_convergence_SUP[symmetric]) |
|
1381 |
also have "integral\<^sup>N M (\<lambda>x. SUP n. f n x) = integral\<^sup>N M (\<lambda>x. u x)" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1382 |
using f by (subst LIMSEQ_SUP[THEN LIMSEQ_unique, OF _ u]) (auto simp: incseq_def le_fun_def) |
57025 | 1383 |
finally show ?thesis . |
1384 |
qed |
|
1385 |
||
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
1386 |
theorem nn_integral_dominated_convergence: |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1387 |
assumes [measurable]: |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1388 |
"\<And>i. u i \<in> borel_measurable M" "u' \<in> borel_measurable M" "w \<in> borel_measurable M" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1389 |
and bound: "\<And>j. AE x in M. u j x \<le> w x" |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1390 |
and w: "(\<integral>\<^sup>+x. w x \<partial>M) < \<infinity>" |
61969 | 1391 |
and u': "AE x in M. (\<lambda>i. u i x) \<longlonglongrightarrow> u' x" |
1392 |
shows "(\<lambda>i. (\<integral>\<^sup>+x. u i x \<partial>M)) \<longlonglongrightarrow> (\<integral>\<^sup>+x. u' x \<partial>M)" |
|
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1393 |
proof - |
56996 | 1394 |
have "limsup (\<lambda>n. integral\<^sup>N M (u n)) \<le> (\<integral>\<^sup>+ x. limsup (\<lambda>n. u n x) \<partial>M)" |
1395 |
by (intro nn_integral_limsup[OF _ _ bound w]) auto |
|
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1396 |
moreover have "(\<integral>\<^sup>+ x. limsup (\<lambda>n. u n x) \<partial>M) = (\<integral>\<^sup>+ x. u' x \<partial>M)" |
56996 | 1397 |
using u' by (intro nn_integral_cong_AE, eventually_elim) (metis tendsto_iff_Liminf_eq_Limsup sequentially_bot) |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1398 |
moreover have "(\<integral>\<^sup>+ x. liminf (\<lambda>n. u n x) \<partial>M) = (\<integral>\<^sup>+ x. u' x \<partial>M)" |
56996 | 1399 |
using u' by (intro nn_integral_cong_AE, eventually_elim) (metis tendsto_iff_Liminf_eq_Limsup sequentially_bot) |
1400 |
moreover have "(\<integral>\<^sup>+x. liminf (\<lambda>n. u n x) \<partial>M) \<le> liminf (\<lambda>n. integral\<^sup>N M (u n))" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1401 |
by (intro nn_integral_liminf) auto |
56996 | 1402 |
moreover have "liminf (\<lambda>n. integral\<^sup>N M (u n)) \<le> limsup (\<lambda>n. integral\<^sup>N M (u n))" |
56993
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1403 |
by (intro Liminf_le_Limsup sequentially_bot) |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1404 |
ultimately show ?thesis |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1405 |
by (intro Liminf_eq_Limsup) auto |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1406 |
qed |
e5366291d6aa
introduce Bochner integral: generalizes Lebesgue integral from real-valued function to functions on real-normed vector spaces
hoelzl
parents:
56949
diff
changeset
|
1407 |
|
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1408 |
lemma inf_continuous_nn_integral[order_continuous_intros]: |
60175 | 1409 |
assumes f: "\<And>y. inf_continuous (f y)" |
60614
e39e6881985c
generalized inf and sup_continuous; added intro rules
hoelzl
parents:
60175
diff
changeset
|
1410 |
assumes [measurable]: "\<And>x. (\<lambda>y. f y x) \<in> borel_measurable M" |
e39e6881985c
generalized inf and sup_continuous; added intro rules
hoelzl
parents:
60175
diff
changeset
|
1411 |
assumes bnd: "\<And>x. (\<integral>\<^sup>+ y. f y x \<partial>M) \<noteq> \<infinity>" |
e39e6881985c
generalized inf and sup_continuous; added intro rules
hoelzl
parents:
60175
diff
changeset
|
1412 |
shows "inf_continuous (\<lambda>x. (\<integral>\<^sup>+y. f y x \<partial>M))" |
60175 | 1413 |
unfolding inf_continuous_def |
1414 |
proof safe |
|
60614
e39e6881985c
generalized inf and sup_continuous; added intro rules
hoelzl
parents:
60175
diff
changeset
|
1415 |
fix C :: "nat \<Rightarrow> 'b" assume C: "decseq C" |
69313 | 1416 |
then show "(\<integral>\<^sup>+ y. f y (Inf (C ` UNIV)) \<partial>M) = (INF i. \<integral>\<^sup>+ y. f y (C i) \<partial>M)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1417 |
using inf_continuous_mono[OF f] bnd |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1418 |
by (auto simp add: inf_continuousD[OF f C] fun_eq_iff antimono_def mono_def le_fun_def less_top |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1419 |
intro!: nn_integral_monotone_convergence_INF_decseq) |
60175 | 1420 |
qed |
1421 |
||
56996 | 1422 |
lemma nn_integral_null_set: |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1423 |
assumes "N \<in> null_sets M" shows "(\<integral>\<^sup>+ x. u x * indicator N x \<partial>M) = 0" |
38656 | 1424 |
proof - |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1425 |
have "(\<integral>\<^sup>+ x. u x * indicator N x \<partial>M) = (\<integral>\<^sup>+ x. 0 \<partial>M)" |
56996 | 1426 |
proof (intro nn_integral_cong_AE AE_I) |
40859 | 1427 |
show "{x \<in> space M. u x * indicator N x \<noteq> 0} \<subseteq> N" |
1428 |
by (auto simp: indicator_def) |
|
47694 | 1429 |
show "(emeasure M) N = 0" "N \<in> sets M" |
40859 | 1430 |
using assms by auto |
35582 | 1431 |
qed |
40859 | 1432 |
then show ?thesis by simp |
38656 | 1433 |
qed |
35582 | 1434 |
|
56996 | 1435 |
lemma nn_integral_0_iff: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1436 |
assumes u: "u \<in> borel_measurable M" |
56996 | 1437 |
shows "integral\<^sup>N M u = 0 \<longleftrightarrow> emeasure M {x\<in>space M. u x \<noteq> 0} = 0" |
47694 | 1438 |
(is "_ \<longleftrightarrow> (emeasure M) ?A = 0") |
35582 | 1439 |
proof - |
56996 | 1440 |
have u_eq: "(\<integral>\<^sup>+ x. u x * indicator ?A x \<partial>M) = integral\<^sup>N M u" |
1441 |
by (auto intro!: nn_integral_cong simp: indicator_def) |
|
38656 | 1442 |
show ?thesis |
1443 |
proof |
|
47694 | 1444 |
assume "(emeasure M) ?A = 0" |
56996 | 1445 |
with nn_integral_null_set[of ?A M u] u |
1446 |
show "integral\<^sup>N M u = 0" by (simp add: u_eq null_sets_def) |
|
38656 | 1447 |
next |
56996 | 1448 |
assume *: "integral\<^sup>N M u = 0" |
46731 | 1449 |
let ?M = "\<lambda>n. {x \<in> space M. 1 \<le> real (n::nat) * u x}" |
47694 | 1450 |
have "0 = (SUP n. (emeasure M) (?M n \<inter> ?A))" |
38656 | 1451 |
proof - |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1452 |
{ fix n :: nat |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1453 |
from nn_integral_Markov_inequality[OF u, of ?A "of_nat n"] u |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1454 |
have "(emeasure M) (?M n \<inter> ?A) \<le> 0" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1455 |
by (simp add: ennreal_of_nat_eq_real_of_nat u_eq *) |
47694 | 1456 |
moreover have "0 \<le> (emeasure M) (?M n \<inter> ?A)" using u by auto |
1457 |
ultimately have "(emeasure M) (?M n \<inter> ?A) = 0" by auto } |
|
38656 | 1458 |
thus ?thesis by simp |
35582 | 1459 |
qed |
47694 | 1460 |
also have "\<dots> = (emeasure M) (\<Union>n. ?M n \<inter> ?A)" |
1461 |
proof (safe intro!: SUP_emeasure_incseq) |
|
38656 | 1462 |
fix n show "?M n \<inter> ?A \<in> sets M" |
50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50104
diff
changeset
|
1463 |
using u by (auto intro!: sets.Int) |
38656 | 1464 |
next |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1465 |
show "incseq (\<lambda>n. {x \<in> space M. 1 \<le> real n * u x} \<inter> {x \<in> space M. u x \<noteq> 0})" |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1466 |
proof (safe intro!: incseq_SucI) |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1467 |
fix n :: nat and x |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1468 |
assume *: "1 \<le> real n * u x" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1469 |
also have "real n * u x \<le> real (Suc n) * u x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1470 |
by (auto intro!: mult_right_mono) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1471 |
finally show "1 \<le> real (Suc n) * u x" by auto |
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1472 |
qed |
38656 | 1473 |
qed |
47694 | 1474 |
also have "\<dots> = (emeasure M) {x\<in>space M. 0 < u x}" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1475 |
proof (safe intro!: arg_cong[where f="(emeasure M)"]) |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1476 |
fix x assume "0 < u x" and [simp, intro]: "x \<in> space M" |
38656 | 1477 |
show "x \<in> (\<Union>n. ?M n \<inter> ?A)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1478 |
proof (cases "u x" rule: ennreal_cases) |
61808 | 1479 |
case (real r) with \<open>0 < u x\<close> have "0 < r" by auto |
41981
cdf7693bbe08
reworked Probability theory: measures are not type restricted to positive extended reals
hoelzl
parents:
41831
diff
changeset
|
1480 |
obtain j :: nat where "1 / r \<le> real j" using real_arch_simple .. |
61808 | 1481 |
hence "1 / r * r \<le> real j * r" unfolding mult_le_cancel_right using \<open>0 < r\<close> by auto |
1482 |
hence "1 \<le> real j * r" using real \<open>0 < r\<close> by auto |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1483 |
thus ?thesis using \<open>0 < r\<close> real |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1484 |
by (auto simp: ennreal_of_nat_eq_real_of_nat ennreal_1[symmetric] ennreal_mult[symmetric] |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1485 |
simp del: ennreal_1) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1486 |
qed (insert \<open>0 < u x\<close>, auto simp: ennreal_mult_top) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1487 |
qed (auto simp: zero_less_iff_neq_zero) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1488 |
finally show "emeasure M ?A = 0" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1489 |
by (simp add: zero_less_iff_neq_zero) |
35582 | 1490 |
qed |
1491 |
qed |
|
1492 |
||
56996 | 1493 |
lemma nn_integral_0_iff_AE: |
41705 | 1494 |
assumes u: "u \<in> borel_measurable M" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1495 |
shows "integral\<^sup>N M u = 0 \<longleftrightarrow> (AE x in M. u x = 0)" |
41705 | 1496 |
proof - |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1497 |
have sets: "{x\<in>space M. u x \<noteq> 0} \<in> sets M" |
41705 | 1498 |
using u by auto |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1499 |
show "integral\<^sup>N M u = 0 \<longleftrightarrow> (AE x in M. u x = 0)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1500 |
using nn_integral_0_iff[of u] AE_iff_null[OF sets] u by auto |
41705 | 1501 |
qed |
1502 |
||
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
1503 |
lemma AE_iff_nn_integral: |
56996 | 1504 |
"{x\<in>space M. P x} \<in> sets M \<Longrightarrow> (AE x in M. P x) \<longleftrightarrow> integral\<^sup>N M (indicator {x. \<not> P x}) = 0" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1505 |
by (subst nn_integral_0_iff_AE) (auto simp: indicator_def[abs_def]) |
50001
382bd3173584
add syntax and a.e.-rules for (conditional) probability on predicates
hoelzl
parents:
49800
diff
changeset
|
1506 |
|
59000 | 1507 |
lemma nn_integral_less: |
1508 |
assumes [measurable]: "f \<in> borel_measurable M" "g \<in> borel_measurable M" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1509 |
assumes f: "(\<integral>\<^sup>+x. f x \<partial>M) \<noteq> \<infinity>" |
59000 | 1510 |
assumes ord: "AE x in M. f x \<le> g x" "\<not> (AE x in M. g x \<le> f x)" |
1511 |
shows "(\<integral>\<^sup>+x. f x \<partial>M) < (\<integral>\<^sup>+x. g x \<partial>M)" |
|
1512 |
proof - |
|
1513 |
have "0 < (\<integral>\<^sup>+x. g x - f x \<partial>M)" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1514 |
proof (intro order_le_neq_trans notI) |
59000 | 1515 |
assume "0 = (\<integral>\<^sup>+x. g x - f x \<partial>M)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1516 |
then have "AE x in M. g x - f x = 0" |
59000 | 1517 |
using nn_integral_0_iff_AE[of "\<lambda>x. g x - f x" M] by simp |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1518 |
with ord(1) have "AE x in M. g x \<le> f x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1519 |
by eventually_elim (auto simp: ennreal_minus_eq_0) |
59000 | 1520 |
with ord show False |
1521 |
by simp |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1522 |
qed simp |
59000 | 1523 |
also have "\<dots> = (\<integral>\<^sup>+x. g x \<partial>M) - (\<integral>\<^sup>+x. f x \<partial>M)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1524 |
using f by (subst nn_integral_diff) (auto simp: ord) |
59000 | 1525 |
finally show ?thesis |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1526 |
using f by (auto dest!: ennreal_minus_pos_iff[rotated] simp: less_top) |
59000 | 1527 |
qed |
1528 |
||
56996 | 1529 |
lemma nn_integral_subalgebra: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1530 |
assumes f: "f \<in> borel_measurable N" |
47694 | 1531 |
and N: "sets N \<subseteq> sets M" "space N = space M" "\<And>A. A \<in> sets N \<Longrightarrow> emeasure N A = emeasure M A" |
56996 | 1532 |
shows "integral\<^sup>N N f = integral\<^sup>N M f" |
39092 | 1533 |
proof - |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1534 |
have [simp]: "\<And>f :: 'a \<Rightarrow> ennreal. f \<in> borel_measurable N \<Longrightarrow> f \<in> borel_measurable M" |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
1535 |
using N by (auto simp: measurable_def) |
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
1536 |
have [simp]: "\<And>P. (AE x in N. P x) \<Longrightarrow> (AE x in M. P x)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1537 |
using N by (auto simp add: eventually_ae_filter null_sets_def subset_eq) |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
1538 |
have [simp]: "\<And>A. A \<in> sets N \<Longrightarrow> A \<in> sets M" |
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
1539 |
using N by auto |
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
1540 |
from f show ?thesis |
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
1541 |
apply induct |
69861
62e47f06d22c
avoid context-sensitive simp rules whose context-free form (image_comp) is not simp by default
haftmann
parents:
69661
diff
changeset
|
1542 |
apply (simp_all add: nn_integral_add nn_integral_cmult nn_integral_monotone_convergence_SUP N image_comp) |
56996 | 1543 |
apply (auto intro!: nn_integral_cong cong: nn_integral_cong simp: N(2)[symmetric]) |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
1544 |
done |
39092 | 1545 |
qed |
1546 |
||
56996 | 1547 |
lemma nn_integral_nat_function: |
50097
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1548 |
fixes f :: "'a \<Rightarrow> nat" |
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1549 |
assumes "f \<in> measurable M (count_space UNIV)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1550 |
shows "(\<integral>\<^sup>+x. of_nat (f x) \<partial>M) = (\<Sum>t. emeasure M {x\<in>space M. t < f x})" |
50097
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1551 |
proof - |
63040 | 1552 |
define F where "F i = {x\<in>space M. i < f x}" for i |
50097
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1553 |
with assms have [measurable]: "\<And>i. F i \<in> sets M" |
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1554 |
by auto |
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1555 |
|
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1556 |
{ fix x assume "x \<in> space M" |
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1557 |
have "(\<lambda>i. if i < f x then 1 else 0) sums (of_nat (f x)::real)" |
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1558 |
using sums_If_finite[of "\<lambda>i. i < f x" "\<lambda>_. 1::real"] by simp |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1559 |
then have "(\<lambda>i. ennreal (if i < f x then 1 else 0)) sums of_nat(f x)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1560 |
unfolding ennreal_of_nat_eq_real_of_nat |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1561 |
by (subst sums_ennreal) auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1562 |
moreover have "\<And>i. ennreal (if i < f x then 1 else 0) = indicator (F i) x" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1563 |
using \<open>x \<in> space M\<close> by (simp add: one_ennreal_def F_def) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1564 |
ultimately have "of_nat (f x) = (\<Sum>i. indicator (F i) x :: ennreal)" |
50097
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1565 |
by (simp add: sums_iff) } |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1566 |
then have "(\<integral>\<^sup>+x. of_nat (f x) \<partial>M) = (\<integral>\<^sup>+x. (\<Sum>i. indicator (F i) x) \<partial>M)" |
56996 | 1567 |
by (simp cong: nn_integral_cong) |
50097
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1568 |
also have "\<dots> = (\<Sum>i. emeasure M (F i))" |
56996 | 1569 |
by (simp add: nn_integral_suminf) |
50097
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1570 |
finally show ?thesis |
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1571 |
by (simp add: F_def) |
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1572 |
qed |
32973da2d4f7
rules for intergration: integrating nat-functions, integrals on finite measures, constant multiplication
hoelzl
parents:
50027
diff
changeset
|
1573 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
1574 |
theorem nn_integral_lfp: |
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1575 |
assumes sets[simp]: "\<And>s. sets (M s) = sets N" |
60175 | 1576 |
assumes f: "sup_continuous f" |
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1577 |
assumes g: "sup_continuous g" |
60175 | 1578 |
assumes meas: "\<And>F. F \<in> borel_measurable N \<Longrightarrow> f F \<in> borel_measurable N" |
1579 |
assumes step: "\<And>F s. F \<in> borel_measurable N \<Longrightarrow> integral\<^sup>N (M s) (f F) = g (\<lambda>s. integral\<^sup>N (M s) F) s" |
|
1580 |
shows "(\<integral>\<^sup>+\<omega>. lfp f \<omega> \<partial>M s) = lfp g s" |
|
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1581 |
proof (subst lfp_transfer_bounded[where \<alpha>="\<lambda>F s. \<integral>\<^sup>+x. F x \<partial>M s" and g=g and f=f and P="\<lambda>f. f \<in> borel_measurable N", symmetric]) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1582 |
fix C :: "nat \<Rightarrow> 'b \<Rightarrow> ennreal" assume "incseq C" "\<And>i. C i \<in> borel_measurable N" |
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1583 |
then show "(\<lambda>s. \<integral>\<^sup>+x. (SUP i. C i) x \<partial>M s) = (SUP i. (\<lambda>s. \<integral>\<^sup>+x. C i x \<partial>M s))" |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1584 |
unfolding SUP_apply[abs_def] |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1585 |
by (subst nn_integral_monotone_convergence_SUP) |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1586 |
(auto simp: mono_def fun_eq_iff intro!: arg_cong2[where f=emeasure] cong: measurable_cong_sets) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1587 |
qed (auto simp add: step le_fun_def SUP_apply[abs_def] bot_fun_def bot_ennreal intro!: meas f g) |
60175 | 1588 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
1589 |
theorem nn_integral_gfp: |
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1590 |
assumes sets[simp]: "\<And>s. sets (M s) = sets N" |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1591 |
assumes f: "inf_continuous f" and g: "inf_continuous g" |
60175 | 1592 |
assumes meas: "\<And>F. F \<in> borel_measurable N \<Longrightarrow> f F \<in> borel_measurable N" |
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1593 |
assumes bound: "\<And>F s. F \<in> borel_measurable N \<Longrightarrow> (\<integral>\<^sup>+x. f F x \<partial>M s) < \<infinity>" |
60175 | 1594 |
assumes non_zero: "\<And>s. emeasure (M s) (space (M s)) \<noteq> 0" |
1595 |
assumes step: "\<And>F s. F \<in> borel_measurable N \<Longrightarrow> integral\<^sup>N (M s) (f F) = g (\<lambda>s. integral\<^sup>N (M s) F) s" |
|
1596 |
shows "(\<integral>\<^sup>+\<omega>. gfp f \<omega> \<partial>M s) = gfp g s" |
|
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1597 |
proof (subst gfp_transfer_bounded[where \<alpha>="\<lambda>F s. \<integral>\<^sup>+x. F x \<partial>M s" and g=g and f=f |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1598 |
and P="\<lambda>F. F \<in> borel_measurable N \<and> (\<forall>s. (\<integral>\<^sup>+x. F x \<partial>M s) < \<infinity>)", symmetric]) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1599 |
fix C :: "nat \<Rightarrow> 'b \<Rightarrow> ennreal" assume "decseq C" "\<And>i. C i \<in> borel_measurable N \<and> (\<forall>s. integral\<^sup>N (M s) (C i) < \<infinity>)" |
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1600 |
then show "(\<lambda>s. \<integral>\<^sup>+x. (INF i. C i) x \<partial>M s) = (INF i. (\<lambda>s. \<integral>\<^sup>+x. C i x \<partial>M s))" |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1601 |
unfolding INF_apply[abs_def] |
61359
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
hoelzl
parents:
61169
diff
changeset
|
1602 |
by (subst nn_integral_monotone_convergence_INF_decseq) |
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1603 |
(auto simp: mono_def fun_eq_iff intro!: arg_cong2[where f=emeasure] cong: measurable_cong_sets) |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1604 |
next |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1605 |
show "\<And>x. g x \<le> (\<lambda>s. integral\<^sup>N (M s) (f top))" |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1606 |
by (subst step) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1607 |
(auto simp add: top_fun_def less_le non_zero le_fun_def ennreal_top_mult |
63566 | 1608 |
cong del: if_weak_cong intro!: monoD[OF inf_continuous_mono[OF g], THEN le_funD]) |
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1609 |
next |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1610 |
fix C assume "\<And>i::nat. C i \<in> borel_measurable N \<and> (\<forall>s. integral\<^sup>N (M s) (C i) < \<infinity>)" "decseq C" |
69313 | 1611 |
with bound show "Inf (C ` UNIV) \<in> borel_measurable N \<and> (\<forall>s. integral\<^sup>N (M s) (Inf (C ` UNIV)) < \<infinity>)" |
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1612 |
unfolding INF_apply[abs_def] |
61359
e985b52c3eb3
cleanup projective limit of probability distributions; proved Ionescu-Tulcea; used it to prove infinite prob. distribution
hoelzl
parents:
61169
diff
changeset
|
1613 |
by (subst nn_integral_monotone_convergence_INF_decseq) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1614 |
(auto simp: INF_less_iff cong: measurable_cong_sets intro!: borel_measurable_INF) |
60636
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1615 |
next |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1616 |
show "\<And>x. x \<in> borel_measurable N \<and> (\<forall>s. integral\<^sup>N (M s) x < \<infinity>) \<Longrightarrow> |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1617 |
(\<lambda>s. integral\<^sup>N (M s) (f x)) = g (\<lambda>s. integral\<^sup>N (M s) x)" |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1618 |
by (subst step) auto |
ee18efe9b246
add named theorems order_continuous_intros; lfp/gfp_funpow; bounded variant for lfp/gfp transfer
hoelzl
parents:
60614
diff
changeset
|
1619 |
qed (insert bound, auto simp add: le_fun_def INF_apply[abs_def] top_fun_def intro!: meas f g) |
60175 | 1620 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
1621 |
(* TODO: rename? *) |
61808 | 1622 |
subsection \<open>Integral under concrete measures\<close> |
56994 | 1623 |
|
63333
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1624 |
lemma nn_integral_mono_measure: |
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1625 |
assumes "sets M = sets N" "M \<le> N" shows "nn_integral M f \<le> nn_integral N f" |
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1626 |
unfolding nn_integral_def |
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1627 |
proof (intro SUP_subset_mono) |
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1628 |
note \<open>sets M = sets N\<close>[simp] \<open>sets M = sets N\<close>[THEN sets_eq_imp_space_eq, simp] |
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1629 |
show "{g. simple_function M g \<and> g \<le> f} \<subseteq> {g. simple_function N g \<and> g \<le> f}" |
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1630 |
by (simp add: simple_function_def) |
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1631 |
show "integral\<^sup>S M x \<le> integral\<^sup>S N x" for x |
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1632 |
using le_measureD3[OF \<open>M \<le> N\<close>] |
64267 | 1633 |
by (auto simp add: simple_integral_def intro!: sum_mono mult_mono) |
63333
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1634 |
qed |
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1635 |
|
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
1636 |
lemma nn_integral_empty: |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1637 |
assumes "space M = {}" |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1638 |
shows "nn_integral M f = 0" |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1639 |
proof - |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1640 |
have "(\<integral>\<^sup>+ x. f x \<partial>M) = (\<integral>\<^sup>+ x. 0 \<partial>M)" |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1641 |
by(rule nn_integral_cong)(simp add: assms) |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1642 |
thus ?thesis by simp |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1643 |
qed |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1644 |
|
63333
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1645 |
lemma nn_integral_bot[simp]: "nn_integral bot f = 0" |
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1646 |
by (simp add: nn_integral_empty) |
158ab2239496
Probability: show that measures form a complete lattice
hoelzl
parents:
63167
diff
changeset
|
1647 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
1648 |
subsubsection%unimportant \<open>Distributions\<close> |
47694 | 1649 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1650 |
lemma nn_integral_distr: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1651 |
assumes T: "T \<in> measurable M M'" and f: "f \<in> borel_measurable (distr M M' T)" |
56996 | 1652 |
shows "integral\<^sup>N (distr M M' T) f = (\<integral>\<^sup>+ x. f (T x) \<partial>M)" |
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
1653 |
using f |
49797
28066863284c
add induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49796
diff
changeset
|
1654 |
proof induct |
28066863284c
add induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49796
diff
changeset
|
1655 |
case (cong f g) |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
1656 |
with T show ?case |
56996 | 1657 |
apply (subst nn_integral_cong[of _ f g]) |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
1658 |
apply simp |
56996 | 1659 |
apply (subst nn_integral_cong[of _ "\<lambda>x. f (T x)" "\<lambda>x. g (T x)"]) |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
1660 |
apply (simp add: measurable_def Pi_iff) |
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
1661 |
apply simp |
49797
28066863284c
add induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49796
diff
changeset
|
1662 |
done |
28066863284c
add induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49796
diff
changeset
|
1663 |
next |
28066863284c
add induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49796
diff
changeset
|
1664 |
case (set A) |
28066863284c
add induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49796
diff
changeset
|
1665 |
then have eq: "\<And>x. x \<in> space M \<Longrightarrow> indicator A (T x) = indicator (T -` A \<inter> space M) x" |
28066863284c
add induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49796
diff
changeset
|
1666 |
by (auto simp: indicator_def) |
28066863284c
add induction rules for simple functions and for Borel measurable functions
hoelzl
parents:
49796
diff
changeset
|
1667 |
from set T show ?case |
56996 | 1668 |
by (subst nn_integral_cong[OF eq]) |
1669 |
(auto simp add: emeasure_distr intro!: nn_integral_indicator[symmetric] measurable_sets) |
|
1670 |
qed (simp_all add: measurable_compose[OF T] T nn_integral_cmult nn_integral_add |
|
69861
62e47f06d22c
avoid context-sensitive simp rules whose context-free form (image_comp) is not simp by default
haftmann
parents:
69661
diff
changeset
|
1671 |
nn_integral_monotone_convergence_SUP le_fun_def incseq_def image_comp) |
47694 | 1672 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
1673 |
subsubsection%unimportant \<open>Counting space\<close> |
47694 | 1674 |
|
1675 |
lemma simple_function_count_space[simp]: |
|
1676 |
"simple_function (count_space A) f \<longleftrightarrow> finite (f ` A)" |
|
1677 |
unfolding simple_function_def by simp |
|
1678 |
||
56996 | 1679 |
lemma nn_integral_count_space: |
47694 | 1680 |
assumes A: "finite {a\<in>A. 0 < f a}" |
56996 | 1681 |
shows "integral\<^sup>N (count_space A) f = (\<Sum>a|a\<in>A \<and> 0 < f a. f a)" |
35582 | 1682 |
proof - |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1683 |
have *: "(\<integral>\<^sup>+x. max 0 (f x) \<partial>count_space A) = |
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1684 |
(\<integral>\<^sup>+ x. (\<Sum>a|a\<in>A \<and> 0 < f a. f a * indicator {a} x) \<partial>count_space A)" |
56996 | 1685 |
by (auto intro!: nn_integral_cong |
64267 | 1686 |
simp add: indicator_def if_distrib sum.If_cases[OF A] max_def le_less) |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
1687 |
also have "\<dots> = (\<Sum>a|a\<in>A \<and> 0 < f a. \<integral>\<^sup>+ x. f a * indicator {a} x \<partial>count_space A)" |
64267 | 1688 |
by (subst nn_integral_sum) (simp_all add: AE_count_space less_imp_le) |
47694 | 1689 |
also have "\<dots> = (\<Sum>a|a\<in>A \<and> 0 < f a. f a)" |
64267 | 1690 |
by (auto intro!: sum.cong simp: one_ennreal_def[symmetric] max_def) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1691 |
finally show ?thesis by (simp add: max.absorb2) |
47694 | 1692 |
qed |
1693 |
||
56996 | 1694 |
lemma nn_integral_count_space_finite: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1695 |
"finite A \<Longrightarrow> (\<integral>\<^sup>+x. f x \<partial>count_space A) = (\<Sum>a\<in>A. f a)" |
64267 | 1696 |
by (auto intro!: sum.mono_neutral_left simp: nn_integral_count_space less_le) |
47694 | 1697 |
|
59000 | 1698 |
lemma nn_integral_count_space': |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1699 |
assumes "finite A" "\<And>x. x \<in> B \<Longrightarrow> x \<notin> A \<Longrightarrow> f x = 0" "A \<subseteq> B" |
59000 | 1700 |
shows "(\<integral>\<^sup>+x. f x \<partial>count_space B) = (\<Sum>x\<in>A. f x)" |
1701 |
proof - |
|
1702 |
have "(\<integral>\<^sup>+x. f x \<partial>count_space B) = (\<Sum>a | a \<in> B \<and> 0 < f a. f a)" |
|
1703 |
using assms(2,3) |
|
61808 | 1704 |
by (intro nn_integral_count_space finite_subset[OF _ \<open>finite A\<close>]) (auto simp: less_le) |
59000 | 1705 |
also have "\<dots> = (\<Sum>a\<in>A. f a)" |
64267 | 1706 |
using assms by (intro sum.mono_neutral_cong_left) (auto simp: less_le) |
59000 | 1707 |
finally show ?thesis . |
1708 |
qed |
|
1709 |
||
59011
4902a2fec434
add reindex rules for distr and nn_integral on count_space
hoelzl
parents:
59002
diff
changeset
|
1710 |
lemma nn_integral_bij_count_space: |
4902a2fec434
add reindex rules for distr and nn_integral on count_space
hoelzl
parents:
59002
diff
changeset
|
1711 |
assumes g: "bij_betw g A B" |
4902a2fec434
add reindex rules for distr and nn_integral on count_space
hoelzl
parents:
59002
diff
changeset
|
1712 |
shows "(\<integral>\<^sup>+x. f (g x) \<partial>count_space A) = (\<integral>\<^sup>+x. f x \<partial>count_space B)" |
4902a2fec434
add reindex rules for distr and nn_integral on count_space
hoelzl
parents:
59002
diff
changeset
|
1713 |
using g[THEN bij_betw_imp_funcset] |
4902a2fec434
add reindex rules for distr and nn_integral on count_space
hoelzl
parents:
59002
diff
changeset
|
1714 |
by (subst distr_bij_count_space[OF g, symmetric]) |
4902a2fec434
add reindex rules for distr and nn_integral on count_space
hoelzl
parents:
59002
diff
changeset
|
1715 |
(auto intro!: nn_integral_distr[symmetric]) |
4902a2fec434
add reindex rules for distr and nn_integral on count_space
hoelzl
parents:
59002
diff
changeset
|
1716 |
|
59000 | 1717 |
lemma nn_integral_indicator_finite: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1718 |
fixes f :: "'a \<Rightarrow> ennreal" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1719 |
assumes f: "finite A" and [measurable]: "\<And>a. a \<in> A \<Longrightarrow> {a} \<in> sets M" |
59000 | 1720 |
shows "(\<integral>\<^sup>+x. f x * indicator A x \<partial>M) = (\<Sum>x\<in>A. f x * emeasure M {x})" |
1721 |
proof - |
|
1722 |
from f have "(\<integral>\<^sup>+x. f x * indicator A x \<partial>M) = (\<integral>\<^sup>+x. (\<Sum>a\<in>A. f a * indicator {a} x) \<partial>M)" |
|
64267 | 1723 |
by (intro nn_integral_cong) (auto simp: indicator_def if_distrib[where f="\<lambda>a. x * a" for x] sum.If_cases) |
59000 | 1724 |
also have "\<dots> = (\<Sum>a\<in>A. f a * emeasure M {a})" |
64267 | 1725 |
by (subst nn_integral_sum) auto |
59000 | 1726 |
finally show ?thesis . |
1727 |
qed |
|
1728 |
||
57025 | 1729 |
lemma nn_integral_count_space_nat: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1730 |
fixes f :: "nat \<Rightarrow> ennreal" |
57025 | 1731 |
shows "(\<integral>\<^sup>+i. f i \<partial>count_space UNIV) = (\<Sum>i. f i)" |
1732 |
proof - |
|
1733 |
have "(\<integral>\<^sup>+i. f i \<partial>count_space UNIV) = |
|
1734 |
(\<integral>\<^sup>+i. (\<Sum>j. f j * indicator {j} i) \<partial>count_space UNIV)" |
|
1735 |
proof (intro nn_integral_cong) |
|
1736 |
fix i |
|
1737 |
have "f i = (\<Sum>j\<in>{i}. f j * indicator {j} i)" |
|
1738 |
by simp |
|
1739 |
also have "\<dots> = (\<Sum>j. f j * indicator {j} i)" |
|
1740 |
by (rule suminf_finite[symmetric]) auto |
|
1741 |
finally show "f i = (\<Sum>j. f j * indicator {j} i)" . |
|
1742 |
qed |
|
1743 |
also have "\<dots> = (\<Sum>j. (\<integral>\<^sup>+i. f j * indicator {j} i \<partial>count_space UNIV))" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1744 |
by (rule nn_integral_suminf) auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1745 |
finally show ?thesis |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1746 |
by simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1747 |
qed |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1748 |
|
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1749 |
lemma nn_integral_enat_function: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1750 |
assumes f: "f \<in> measurable M (count_space UNIV)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1751 |
shows "(\<integral>\<^sup>+ x. ennreal_of_enat (f x) \<partial>M) = (\<Sum>t. emeasure M {x \<in> space M. t < f x})" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1752 |
proof - |
63040 | 1753 |
define F where "F i = {x\<in>space M. i < f x}" for i :: nat |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1754 |
with assms have [measurable]: "\<And>i. F i \<in> sets M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1755 |
by auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1756 |
|
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1757 |
{ fix x assume "x \<in> space M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1758 |
have "(\<lambda>i::nat. if i < f x then 1 else 0) sums ennreal_of_enat (f x)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1759 |
using sums_If_finite[of "\<lambda>r. r < f x" "\<lambda>_. 1 :: ennreal"] |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1760 |
by (cases "f x") (simp_all add: sums_def of_nat_tendsto_top_ennreal) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1761 |
also have "(\<lambda>i. (if i < f x then 1 else 0)) = (\<lambda>i. indicator (F i) x)" |
63167 | 1762 |
using \<open>x \<in> space M\<close> by (simp add: one_ennreal_def F_def fun_eq_iff) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1763 |
finally have "ennreal_of_enat (f x) = (\<Sum>i. indicator (F i) x)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1764 |
by (simp add: sums_iff) } |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1765 |
then have "(\<integral>\<^sup>+x. ennreal_of_enat (f x) \<partial>M) = (\<integral>\<^sup>+x. (\<Sum>i. indicator (F i) x) \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1766 |
by (simp cong: nn_integral_cong) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1767 |
also have "\<dots> = (\<Sum>i. emeasure M (F i))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1768 |
by (simp add: nn_integral_suminf) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1769 |
finally show ?thesis |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1770 |
by (simp add: F_def) |
57025 | 1771 |
qed |
1772 |
||
59426
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1773 |
lemma nn_integral_count_space_nn_integral: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1774 |
fixes f :: "'i \<Rightarrow> 'a \<Rightarrow> ennreal" |
59426
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1775 |
assumes "countable I" and [measurable]: "\<And>i. i \<in> I \<Longrightarrow> f i \<in> borel_measurable M" |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1776 |
shows "(\<integral>\<^sup>+x. \<integral>\<^sup>+i. f i x \<partial>count_space I \<partial>M) = (\<integral>\<^sup>+i. \<integral>\<^sup>+x. f i x \<partial>M \<partial>count_space I)" |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1777 |
proof cases |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1778 |
assume "finite I" then show ?thesis |
64267 | 1779 |
by (simp add: nn_integral_count_space_finite nn_integral_sum) |
59426
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1780 |
next |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1781 |
assume "infinite I" |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1782 |
then have [simp]: "I \<noteq> {}" |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1783 |
by auto |
61808 | 1784 |
note * = bij_betw_from_nat_into[OF \<open>countable I\<close> \<open>infinite I\<close>] |
59426
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1785 |
have **: "\<And>f. (\<And>i. 0 \<le> f i) \<Longrightarrow> (\<integral>\<^sup>+i. f i \<partial>count_space I) = (\<Sum>n. f (from_nat_into I n))" |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1786 |
by (simp add: nn_integral_bij_count_space[symmetric, OF *] nn_integral_count_space_nat) |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1787 |
show ?thesis |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1788 |
by (simp add: ** nn_integral_suminf from_nat_into) |
59426
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1789 |
qed |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1790 |
|
64008
17a20ca86d62
HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents:
63918
diff
changeset
|
1791 |
lemma of_bool_Bex_eq_nn_integral: |
17a20ca86d62
HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents:
63918
diff
changeset
|
1792 |
assumes unique: "\<And>x y. x \<in> X \<Longrightarrow> y \<in> X \<Longrightarrow> P x \<Longrightarrow> P y \<Longrightarrow> x = y" |
17a20ca86d62
HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents:
63918
diff
changeset
|
1793 |
shows "of_bool (\<exists>y\<in>X. P y) = (\<integral>\<^sup>+y. of_bool (P y) \<partial>count_space X)" |
17a20ca86d62
HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents:
63918
diff
changeset
|
1794 |
proof cases |
17a20ca86d62
HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents:
63918
diff
changeset
|
1795 |
assume "\<exists>y\<in>X. P y" |
17a20ca86d62
HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents:
63918
diff
changeset
|
1796 |
then obtain y where "P y" "y \<in> X" by auto |
17a20ca86d62
HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents:
63918
diff
changeset
|
1797 |
then show ?thesis |
17a20ca86d62
HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents:
63918
diff
changeset
|
1798 |
by (subst nn_integral_count_space'[where A="{y}"]) (auto dest: unique) |
17a20ca86d62
HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents:
63918
diff
changeset
|
1799 |
qed (auto cong: nn_integral_cong_simp) |
17a20ca86d62
HOL-Probability: more about probability, prepare for Markov processes in the AFP
hoelzl
parents:
63918
diff
changeset
|
1800 |
|
59426
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1801 |
lemma emeasure_UN_countable: |
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
1802 |
assumes sets[measurable]: "\<And>i. i \<in> I \<Longrightarrow> X i \<in> sets M" and I[simp]: "countable I" |
59426
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1803 |
assumes disj: "disjoint_family_on X I" |
69313 | 1804 |
shows "emeasure M (\<Union>(X ` I)) = (\<integral>\<^sup>+i. emeasure M (X i) \<partial>count_space I)" |
59426
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1805 |
proof - |
69313 | 1806 |
have eq: "\<And>x. indicator (\<Union>(X ` I)) x = \<integral>\<^sup>+ i. indicator (X i) x \<partial>count_space I" |
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
1807 |
proof cases |
69313 | 1808 |
fix x assume x: "x \<in> \<Union>(X ` I)" |
59426
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1809 |
then obtain j where j: "x \<in> X j" "j \<in> I" |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1810 |
by auto |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1811 |
with disj have "\<And>i. i \<in> I \<Longrightarrow> indicator (X i) x = (indicator {j} i::ennreal)" |
59426
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1812 |
by (auto simp: disjoint_family_on_def split: split_indicator) |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1813 |
with x j show "?thesis x" |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1814 |
by (simp cong: nn_integral_cong_simp) |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1815 |
qed (auto simp: nn_integral_0_iff_AE) |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1816 |
|
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1817 |
note sets.countable_UN'[unfolded subset_eq, measurable] |
69313 | 1818 |
have "emeasure M (\<Union>(X ` I)) = (\<integral>\<^sup>+x. indicator (\<Union>(X ` I)) x \<partial>M)" |
59426
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1819 |
by simp |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1820 |
also have "\<dots> = (\<integral>\<^sup>+i. \<integral>\<^sup>+x. indicator (X i) x \<partial>M \<partial>count_space I)" |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1821 |
by (simp add: eq nn_integral_count_space_nn_integral) |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1822 |
finally show ?thesis |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1823 |
by (simp cong: nn_integral_cong_simp) |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1824 |
qed |
6fca83e88417
integral of the product of count spaces equals the integral of the count space of the product type
hoelzl
parents:
59425
diff
changeset
|
1825 |
|
57025 | 1826 |
lemma emeasure_countable_singleton: |
1827 |
assumes sets: "\<And>x. x \<in> X \<Longrightarrow> {x} \<in> sets M" and X: "countable X" |
|
1828 |
shows "emeasure M X = (\<integral>\<^sup>+x. emeasure M {x} \<partial>count_space X)" |
|
1829 |
proof - |
|
1830 |
have "emeasure M (\<Union>i\<in>X. {i}) = (\<integral>\<^sup>+x. emeasure M {x} \<partial>count_space X)" |
|
1831 |
using assms by (intro emeasure_UN_countable) (auto simp: disjoint_family_on_def) |
|
1832 |
also have "(\<Union>i\<in>X. {i}) = X" by auto |
|
1833 |
finally show ?thesis . |
|
1834 |
qed |
|
1835 |
||
1836 |
lemma measure_eqI_countable: |
|
1837 |
assumes [simp]: "sets M = Pow A" "sets N = Pow A" and A: "countable A" |
|
1838 |
assumes eq: "\<And>a. a \<in> A \<Longrightarrow> emeasure M {a} = emeasure N {a}" |
|
1839 |
shows "M = N" |
|
1840 |
proof (rule measure_eqI) |
|
1841 |
fix X assume "X \<in> sets M" |
|
1842 |
then have X: "X \<subseteq> A" by auto |
|
63540 | 1843 |
moreover from A X have "countable X" by (auto dest: countable_subset) |
57025 | 1844 |
ultimately have |
1845 |
"emeasure M X = (\<integral>\<^sup>+a. emeasure M {a} \<partial>count_space X)" |
|
1846 |
"emeasure N X = (\<integral>\<^sup>+a. emeasure N {a} \<partial>count_space X)" |
|
1847 |
by (auto intro!: emeasure_countable_singleton) |
|
1848 |
moreover have "(\<integral>\<^sup>+a. emeasure M {a} \<partial>count_space X) = (\<integral>\<^sup>+a. emeasure N {a} \<partial>count_space X)" |
|
1849 |
using X by (intro nn_integral_cong eq) auto |
|
1850 |
ultimately show "emeasure M X = emeasure N X" |
|
1851 |
by simp |
|
1852 |
qed simp |
|
1853 |
||
59000 | 1854 |
lemma measure_eqI_countable_AE: |
1855 |
assumes [simp]: "sets M = UNIV" "sets N = UNIV" |
|
1856 |
assumes ae: "AE x in M. x \<in> \<Omega>" "AE x in N. x \<in> \<Omega>" and [simp]: "countable \<Omega>" |
|
1857 |
assumes eq: "\<And>x. x \<in> \<Omega> \<Longrightarrow> emeasure M {x} = emeasure N {x}" |
|
1858 |
shows "M = N" |
|
1859 |
proof (rule measure_eqI) |
|
1860 |
fix A |
|
1861 |
have "emeasure N A = emeasure N {x\<in>\<Omega>. x \<in> A}" |
|
1862 |
using ae by (intro emeasure_eq_AE) auto |
|
1863 |
also have "\<dots> = (\<integral>\<^sup>+x. emeasure N {x} \<partial>count_space {x\<in>\<Omega>. x \<in> A})" |
|
1864 |
by (intro emeasure_countable_singleton) auto |
|
1865 |
also have "\<dots> = (\<integral>\<^sup>+x. emeasure M {x} \<partial>count_space {x\<in>\<Omega>. x \<in> A})" |
|
1866 |
by (intro nn_integral_cong eq[symmetric]) auto |
|
1867 |
also have "\<dots> = emeasure M {x\<in>\<Omega>. x \<in> A}" |
|
1868 |
by (intro emeasure_countable_singleton[symmetric]) auto |
|
1869 |
also have "\<dots> = emeasure M A" |
|
1870 |
using ae by (intro emeasure_eq_AE) auto |
|
1871 |
finally show "emeasure M A = emeasure N A" .. |
|
1872 |
qed simp |
|
1873 |
||
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1874 |
lemma nn_integral_monotone_convergence_SUP_nat: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1875 |
fixes f :: "'a \<Rightarrow> nat \<Rightarrow> ennreal" |
67399 | 1876 |
assumes chain: "Complete_Partial_Order.chain (\<le>) (f ` Y)" |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1877 |
and nonempty: "Y \<noteq> {}" |
69260
0a9688695a1b
removed relics of ASCII syntax for indexed big operators
haftmann
parents:
69164
diff
changeset
|
1878 |
shows "(\<integral>\<^sup>+ x. (SUP i\<in>Y. f i x) \<partial>count_space UNIV) = (SUP i\<in>Y. (\<integral>\<^sup>+ x. f i x \<partial>count_space UNIV))" |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1879 |
(is "?lhs = ?rhs" is "integral\<^sup>N ?M _ = _") |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1880 |
proof (rule order_class.order.antisym) |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1881 |
show "?rhs \<le> ?lhs" |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1882 |
by (auto intro!: SUP_least SUP_upper nn_integral_mono) |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1883 |
next |
69260
0a9688695a1b
removed relics of ASCII syntax for indexed big operators
haftmann
parents:
69164
diff
changeset
|
1884 |
have "\<exists>g. incseq g \<and> range g \<subseteq> (\<lambda>i. f i x) ` Y \<and> (SUP i\<in>Y. f i x) = (SUP i. g i)" for x |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1885 |
by (rule ennreal_Sup_countable_SUP) (simp add: nonempty) |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1886 |
then obtain g where incseq: "\<And>x. incseq (g x)" |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1887 |
and range: "\<And>x. range (g x) \<subseteq> (\<lambda>i. f i x) ` Y" |
69260
0a9688695a1b
removed relics of ASCII syntax for indexed big operators
haftmann
parents:
69164
diff
changeset
|
1888 |
and sup: "\<And>x. (SUP i\<in>Y. f i x) = (SUP i. g x i)" by moura |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1889 |
from incseq have incseq': "incseq (\<lambda>i x. g x i)" |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1890 |
by(blast intro: incseq_SucI le_funI dest: incseq_SucD) |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1891 |
|
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1892 |
have "?lhs = \<integral>\<^sup>+ x. (SUP i. g x i) \<partial>?M" by(simp add: sup) |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1893 |
also have "\<dots> = (SUP i. \<integral>\<^sup>+ x. g x i \<partial>?M)" using incseq' |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1894 |
by(rule nn_integral_monotone_convergence_SUP) simp |
69260
0a9688695a1b
removed relics of ASCII syntax for indexed big operators
haftmann
parents:
69164
diff
changeset
|
1895 |
also have "\<dots> \<le> (SUP i\<in>Y. \<integral>\<^sup>+ x. f i x \<partial>?M)" |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1896 |
proof(rule SUP_least) |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1897 |
fix n |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1898 |
have "\<And>x. \<exists>i. g x n = f i x \<and> i \<in> Y" using range by blast |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1899 |
then obtain I where I: "\<And>x. g x n = f (I x) x" "\<And>x. I x \<in> Y" by moura |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1900 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1901 |
have "(\<integral>\<^sup>+ x. g x n \<partial>count_space UNIV) = (\<Sum>x. g x n)" |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1902 |
by(rule nn_integral_count_space_nat) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1903 |
also have "\<dots> = (SUP m. \<Sum>x<m. g x n)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1904 |
by(rule suminf_eq_SUP) |
69260
0a9688695a1b
removed relics of ASCII syntax for indexed big operators
haftmann
parents:
69164
diff
changeset
|
1905 |
also have "\<dots> \<le> (SUP i\<in>Y. \<integral>\<^sup>+ x. f i x \<partial>?M)" |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1906 |
proof(rule SUP_mono) |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1907 |
fix m |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1908 |
show "\<exists>m'\<in>Y. (\<Sum>x<m. g x n) \<le> (\<integral>\<^sup>+ x. f m' x \<partial>?M)" |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1909 |
proof(cases "m > 0") |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1910 |
case False |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1911 |
thus ?thesis using nonempty by auto |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1912 |
next |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1913 |
case True |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1914 |
let ?Y = "I ` {..<m}" |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1915 |
have "f ` ?Y \<subseteq> f ` Y" using I by auto |
67399 | 1916 |
with chain have chain': "Complete_Partial_Order.chain (\<le>) (f ` ?Y)" by(rule chain_subset) |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1917 |
hence "Sup (f ` ?Y) \<in> f ` ?Y" |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1918 |
by(rule ccpo_class.in_chain_finite)(auto simp add: True lessThan_empty_iff) |
69260
0a9688695a1b
removed relics of ASCII syntax for indexed big operators
haftmann
parents:
69164
diff
changeset
|
1919 |
then obtain m' where "m' < m" and m': "(SUP i\<in>?Y. f i) = f (I m')" by auto |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1920 |
have "I m' \<in> Y" using I by blast |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1921 |
have "(\<Sum>x<m. g x n) \<le> (\<Sum>x<m. f (I m') x)" |
64267 | 1922 |
proof(rule sum_mono) |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1923 |
fix x |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1924 |
assume "x \<in> {..<m}" |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1925 |
hence "x < m" by simp |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1926 |
have "g x n = f (I x) x" by(simp add: I) |
69260
0a9688695a1b
removed relics of ASCII syntax for indexed big operators
haftmann
parents:
69164
diff
changeset
|
1927 |
also have "\<dots> \<le> (SUP i\<in>?Y. f i) x" unfolding Sup_fun_def image_image |
62343
24106dc44def
prefer abbreviations for compound operators INFIMUM and SUPREMUM
haftmann
parents:
62083
diff
changeset
|
1928 |
using \<open>x \<in> {..<m}\<close> by (rule Sup_upper [OF imageI]) |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1929 |
also have "\<dots> = f (I m') x" unfolding m' by simp |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1930 |
finally show "g x n \<le> f (I m') x" . |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1931 |
qed |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1932 |
also have "\<dots> \<le> (SUP m. (\<Sum>x<m. f (I m') x))" |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1933 |
by(rule SUP_upper) simp |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1934 |
also have "\<dots> = (\<Sum>x. f (I m') x)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1935 |
by(rule suminf_eq_SUP[symmetric]) |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1936 |
also have "\<dots> = (\<integral>\<^sup>+ x. f (I m') x \<partial>?M)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1937 |
by(rule nn_integral_count_space_nat[symmetric]) |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1938 |
finally show ?thesis using \<open>I m' \<in> Y\<close> by blast |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1939 |
qed |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1940 |
qed |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1941 |
finally show "(\<integral>\<^sup>+ x. g x n \<partial>count_space UNIV) \<le> \<dots>" . |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1942 |
qed |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1943 |
finally show "?lhs \<le> ?rhs" . |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1944 |
qed |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1945 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1946 |
lemma power_series_tendsto_at_left: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1947 |
assumes nonneg: "\<And>i. 0 \<le> f i" and summable: "\<And>z. 0 \<le> z \<Longrightarrow> z < 1 \<Longrightarrow> summable (\<lambda>n. f n * z^n)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1948 |
shows "((\<lambda>z. ennreal (\<Sum>n. f n * z^n)) \<longlongrightarrow> (\<Sum>n. ennreal (f n))) (at_left (1::real))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1949 |
proof (intro tendsto_at_left_sequentially) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1950 |
show "0 < (1::real)" by simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1951 |
fix S :: "nat \<Rightarrow> real" assume S: "\<And>n. S n < 1" "\<And>n. 0 < S n" "S \<longlonglongrightarrow> 1" "incseq S" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1952 |
then have S_nonneg: "\<And>i. 0 \<le> S i" by (auto intro: less_imp_le) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1953 |
|
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1954 |
have "(\<lambda>i. (\<integral>\<^sup>+n. f n * S i^n \<partial>count_space UNIV)) \<longlonglongrightarrow> (\<integral>\<^sup>+n. ennreal (f n) \<partial>count_space UNIV)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1955 |
proof (rule nn_integral_LIMSEQ) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1956 |
show "incseq (\<lambda>i n. ennreal (f n * S i^n))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1957 |
using S by (auto intro!: mult_mono power_mono nonneg ennreal_leI |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1958 |
simp: incseq_def le_fun_def less_imp_le) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1959 |
fix n have "(\<lambda>i. ennreal (f n * S i^n)) \<longlonglongrightarrow> ennreal (f n * 1^n)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1960 |
by (intro tendsto_intros tendsto_ennrealI S) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1961 |
then show "(\<lambda>i. ennreal (f n * S i^n)) \<longlonglongrightarrow> ennreal (f n)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1962 |
by simp |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1963 |
qed (auto simp: S_nonneg intro!: mult_nonneg_nonneg nonneg) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1964 |
also have "(\<lambda>i. (\<integral>\<^sup>+n. f n * S i^n \<partial>count_space UNIV)) = (\<lambda>i. \<Sum>n. f n * S i^n)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1965 |
by (subst nn_integral_count_space_nat) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1966 |
(intro ext suminf_ennreal2 mult_nonneg_nonneg nonneg S_nonneg |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1967 |
zero_le_power summable S)+ |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1968 |
also have "(\<integral>\<^sup>+n. ennreal (f n) \<partial>count_space UNIV) = (\<Sum>n. ennreal (f n))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1969 |
by (simp add: nn_integral_count_space_nat nonneg) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1970 |
finally show "(\<lambda>n. ennreal (\<Sum>na. f na * S n ^ na)) \<longlonglongrightarrow> (\<Sum>n. ennreal (f n))" . |
60064
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1971 |
qed |
63124d48a2ee
add lemma about monotone convergence for countable integrals over arbitrary sequences
Andreas Lochbihler
parents:
59779
diff
changeset
|
1972 |
|
61808 | 1973 |
subsubsection \<open>Measures with Restricted Space\<close> |
54417 | 1974 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1975 |
lemma simple_function_restrict_space_ennreal: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1976 |
fixes f :: "'a \<Rightarrow> ennreal" |
57137 | 1977 |
assumes "\<Omega> \<inter> space M \<in> sets M" |
1978 |
shows "simple_function (restrict_space M \<Omega>) f \<longleftrightarrow> simple_function M (\<lambda>x. f x * indicator \<Omega> x)" |
|
1979 |
proof - |
|
1980 |
{ assume "finite (f ` space (restrict_space M \<Omega>))" |
|
1981 |
then have "finite (f ` space (restrict_space M \<Omega>) \<union> {0})" by simp |
|
1982 |
then have "finite ((\<lambda>x. f x * indicator \<Omega> x) ` space M)" |
|
1983 |
by (rule rev_finite_subset) (auto split: split_indicator simp: space_restrict_space) } |
|
1984 |
moreover |
|
1985 |
{ assume "finite ((\<lambda>x. f x * indicator \<Omega> x) ` space M)" |
|
1986 |
then have "finite (f ` space (restrict_space M \<Omega>))" |
|
1987 |
by (rule rev_finite_subset) (auto split: split_indicator simp: space_restrict_space) } |
|
1988 |
ultimately show ?thesis |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1989 |
unfolding |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
1990 |
simple_function_iff_borel_measurable borel_measurable_restrict_space_iff_ennreal[OF assms] |
57137 | 1991 |
by auto |
1992 |
qed |
|
1993 |
||
1994 |
lemma simple_function_restrict_space: |
|
1995 |
fixes f :: "'a \<Rightarrow> 'b::real_normed_vector" |
|
1996 |
assumes "\<Omega> \<inter> space M \<in> sets M" |
|
1997 |
shows "simple_function (restrict_space M \<Omega>) f \<longleftrightarrow> simple_function M (\<lambda>x. indicator \<Omega> x *\<^sub>R f x)" |
|
1998 |
proof - |
|
1999 |
{ assume "finite (f ` space (restrict_space M \<Omega>))" |
|
2000 |
then have "finite (f ` space (restrict_space M \<Omega>) \<union> {0})" by simp |
|
2001 |
then have "finite ((\<lambda>x. indicator \<Omega> x *\<^sub>R f x) ` space M)" |
|
2002 |
by (rule rev_finite_subset) (auto split: split_indicator simp: space_restrict_space) } |
|
2003 |
moreover |
|
2004 |
{ assume "finite ((\<lambda>x. indicator \<Omega> x *\<^sub>R f x) ` space M)" |
|
2005 |
then have "finite (f ` space (restrict_space M \<Omega>))" |
|
2006 |
by (rule rev_finite_subset) (auto split: split_indicator simp: space_restrict_space) } |
|
2007 |
ultimately show ?thesis |
|
2008 |
unfolding simple_function_iff_borel_measurable |
|
2009 |
borel_measurable_restrict_space_iff[OF assms] |
|
2010 |
by auto |
|
2011 |
qed |
|
2012 |
||
2013 |
lemma simple_integral_restrict_space: |
|
2014 |
assumes \<Omega>: "\<Omega> \<inter> space M \<in> sets M" "simple_function (restrict_space M \<Omega>) f" |
|
2015 |
shows "simple_integral (restrict_space M \<Omega>) f = simple_integral M (\<lambda>x. f x * indicator \<Omega> x)" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2016 |
using simple_function_restrict_space_ennreal[THEN iffD1, OF \<Omega>, THEN simple_functionD(1)] |
57137 | 2017 |
by (auto simp add: space_restrict_space emeasure_restrict_space[OF \<Omega>(1)] le_infI2 simple_integral_def |
2018 |
split: split_indicator split_indicator_asm |
|
64267 | 2019 |
intro!: sum.mono_neutral_cong_left ennreal_mult_left_cong arg_cong2[where f=emeasure]) |
57137 | 2020 |
|
56996 | 2021 |
lemma nn_integral_restrict_space: |
57137 | 2022 |
assumes \<Omega>[simp]: "\<Omega> \<inter> space M \<in> sets M" |
2023 |
shows "nn_integral (restrict_space M \<Omega>) f = nn_integral M (\<lambda>x. f x * indicator \<Omega> x)" |
|
2024 |
proof - |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2025 |
let ?R = "restrict_space M \<Omega>" and ?X = "\<lambda>M f. {s. simple_function M s \<and> s \<le> f \<and> (\<forall>x. s x < top)}" |
57137 | 2026 |
have "integral\<^sup>S ?R ` ?X ?R f = integral\<^sup>S M ` ?X M (\<lambda>x. f x * indicator \<Omega> x)" |
2027 |
proof (safe intro!: image_eqI) |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2028 |
fix s assume s: "simple_function ?R s" "s \<le> f" "\<forall>x. s x < top" |
57137 | 2029 |
from s show "integral\<^sup>S (restrict_space M \<Omega>) s = integral\<^sup>S M (\<lambda>x. s x * indicator \<Omega> x)" |
2030 |
by (intro simple_integral_restrict_space) auto |
|
2031 |
from s show "simple_function M (\<lambda>x. s x * indicator \<Omega> x)" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2032 |
by (simp add: simple_function_restrict_space_ennreal) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2033 |
from s show "(\<lambda>x. s x * indicator \<Omega> x) \<le> (\<lambda>x. f x * indicator \<Omega> x)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2034 |
"\<And>x. s x * indicator \<Omega> x < top" |
57137 | 2035 |
by (auto split: split_indicator simp: le_fun_def image_subset_iff) |
2036 |
next |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2037 |
fix s assume s: "simple_function M s" "s \<le> (\<lambda>x. f x * indicator \<Omega> x)" "\<forall>x. s x < top" |
57137 | 2038 |
then have "simple_function M (\<lambda>x. s x * indicator (\<Omega> \<inter> space M) x)" (is ?s') |
2039 |
by (intro simple_function_mult simple_function_indicator) auto |
|
2040 |
also have "?s' \<longleftrightarrow> simple_function M (\<lambda>x. s x * indicator \<Omega> x)" |
|
2041 |
by (rule simple_function_cong) (auto split: split_indicator) |
|
2042 |
finally show sf: "simple_function (restrict_space M \<Omega>) s" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2043 |
by (simp add: simple_function_restrict_space_ennreal) |
57137 | 2044 |
|
2045 |
from s have s_eq: "s = (\<lambda>x. s x * indicator \<Omega> x)" |
|
2046 |
by (auto simp add: fun_eq_iff le_fun_def image_subset_iff |
|
2047 |
split: split_indicator split_indicator_asm |
|
2048 |
intro: antisym) |
|
2049 |
||
2050 |
show "integral\<^sup>S M s = integral\<^sup>S (restrict_space M \<Omega>) s" |
|
2051 |
by (subst s_eq) (rule simple_integral_restrict_space[symmetric, OF \<Omega> sf]) |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2052 |
show "\<And>x. s x < top" |
57137 | 2053 |
using s by (auto simp: image_subset_iff) |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2054 |
from s show "s \<le> f" |
57137 | 2055 |
by (subst s_eq) (auto simp: image_subset_iff le_fun_def split: split_indicator split_indicator_asm) |
2056 |
qed |
|
2057 |
then show ?thesis |
|
69546
27dae626822b
prefer naming convention from datatype package for strong congruence rules
haftmann
parents:
69457
diff
changeset
|
2058 |
unfolding nn_integral_def_finite by (simp cong del: SUP_cong_simp) |
54417 | 2059 |
qed |
2060 |
||
59000 | 2061 |
lemma nn_integral_count_space_indicator: |
59779 | 2062 |
assumes "NO_MATCH (UNIV::'a set) (X::'a set)" |
59000 | 2063 |
shows "(\<integral>\<^sup>+x. f x \<partial>count_space X) = (\<integral>\<^sup>+x. f x * indicator X x \<partial>count_space UNIV)" |
2064 |
by (simp add: nn_integral_restrict_space[symmetric] restrict_count_space) |
|
2065 |
||
59425 | 2066 |
lemma nn_integral_count_space_eq: |
2067 |
"(\<And>x. x \<in> A - B \<Longrightarrow> f x = 0) \<Longrightarrow> (\<And>x. x \<in> B - A \<Longrightarrow> f x = 0) \<Longrightarrow> |
|
2068 |
(\<integral>\<^sup>+x. f x \<partial>count_space A) = (\<integral>\<^sup>+x. f x \<partial>count_space B)" |
|
2069 |
by (auto simp: nn_integral_count_space_indicator intro!: nn_integral_cong split: split_indicator) |
|
2070 |
||
59023 | 2071 |
lemma nn_integral_ge_point: |
2072 |
assumes "x \<in> A" |
|
2073 |
shows "p x \<le> \<integral>\<^sup>+ x. p x \<partial>count_space A" |
|
2074 |
proof - |
|
2075 |
from assms have "p x \<le> \<integral>\<^sup>+ x. p x \<partial>count_space {x}" |
|
2076 |
by(auto simp add: nn_integral_count_space_finite max_def) |
|
2077 |
also have "\<dots> = \<integral>\<^sup>+ x'. p x' * indicator {x} x' \<partial>count_space A" |
|
2078 |
using assms by(auto simp add: nn_integral_count_space_indicator indicator_def intro!: nn_integral_cong) |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2079 |
also have "\<dots> \<le> \<integral>\<^sup>+ x. p x \<partial>count_space A" |
59023 | 2080 |
by(rule nn_integral_mono)(simp add: indicator_def) |
2081 |
finally show ?thesis . |
|
2082 |
qed |
|
2083 |
||
61808 | 2084 |
subsubsection \<open>Measure spaces with an associated density\<close> |
47694 | 2085 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
2086 |
definition%important density :: "'a measure \<Rightarrow> ('a \<Rightarrow> ennreal) \<Rightarrow> 'a measure" where |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
2087 |
"density M f = measure_of (space M) (sets M) (\<lambda>A. \<integral>\<^sup>+ x. f x * indicator A x \<partial>M)" |
35582 | 2088 |
|
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
2089 |
lemma |
59048 | 2090 |
shows sets_density[simp, measurable_cong]: "sets (density M f) = sets M" |
47694 | 2091 |
and space_density[simp]: "space (density M f) = space M" |
2092 |
by (auto simp: density_def) |
|
2093 |
||
50003 | 2094 |
(* FIXME: add conversion to simplify space, sets and measurable *) |
2095 |
lemma space_density_imp[measurable_dest]: |
|
2096 |
"\<And>x M f. x \<in> space (density M f) \<Longrightarrow> x \<in> space M" by auto |
|
2097 |
||
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
2098 |
lemma |
47694 | 2099 |
shows measurable_density_eq1[simp]: "g \<in> measurable (density Mg f) Mg' \<longleftrightarrow> g \<in> measurable Mg Mg'" |
2100 |
and measurable_density_eq2[simp]: "h \<in> measurable Mh (density Mh' f) \<longleftrightarrow> h \<in> measurable Mh Mh'" |
|
2101 |
and simple_function_density_eq[simp]: "simple_function (density Mu f) u \<longleftrightarrow> simple_function Mu u" |
|
2102 |
unfolding measurable_def simple_function_def by simp_all |
|
2103 |
||
2104 |
lemma density_cong: "f \<in> borel_measurable M \<Longrightarrow> f' \<in> borel_measurable M \<Longrightarrow> |
|
2105 |
(AE x in M. f x = f' x) \<Longrightarrow> density M f = density M f'" |
|
56996 | 2106 |
unfolding density_def by (auto intro!: measure_of_eq nn_integral_cong_AE sets.space_closed) |
47694 | 2107 |
|
2108 |
lemma emeasure_density: |
|
50002
ce0d316b5b44
add measurability prover; add support for Borel sets
hoelzl
parents:
50001
diff
changeset
|
2109 |
assumes f[measurable]: "f \<in> borel_measurable M" and A[measurable]: "A \<in> sets M" |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
2110 |
shows "emeasure (density M f) A = (\<integral>\<^sup>+ x. f x * indicator A x \<partial>M)" |
47694 | 2111 |
(is "_ = ?\<mu> A") |
2112 |
unfolding density_def |
|
2113 |
proof (rule emeasure_measure_of_sigma) |
|
2114 |
show "sigma_algebra (space M) (sets M)" .. |
|
2115 |
show "positive (sets M) ?\<mu>" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2116 |
using f by (auto simp: positive_def) |
47694 | 2117 |
show "countably_additive (sets M) ?\<mu>" |
2118 |
proof (intro countably_additiveI) |
|
2119 |
fix A :: "nat \<Rightarrow> 'a set" assume "range A \<subseteq> sets M" |
|
50002
ce0d316b5b44
add measurability prover; add support for Borel sets
hoelzl
parents:
50001
diff
changeset
|
2120 |
then have "\<And>i. A i \<in> sets M" by auto |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2121 |
then have *: "\<And>i. (\<lambda>x. f x * indicator (A i) x) \<in> borel_measurable M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2122 |
by auto |
47694 | 2123 |
assume disj: "disjoint_family A" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2124 |
then have "(\<Sum>n. ?\<mu> (A n)) = (\<integral>\<^sup>+ x. (\<Sum>n. f x * indicator (A n) x) \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2125 |
using f * by (subst nn_integral_suminf) auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2126 |
also have "(\<integral>\<^sup>+ x. (\<Sum>n. f x * indicator (A n) x) \<partial>M) = (\<integral>\<^sup>+ x. f x * (\<Sum>n. indicator (A n) x) \<partial>M)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2127 |
using f by (auto intro!: ennreal_suminf_cmult nn_integral_cong_AE) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2128 |
also have "\<dots> = (\<integral>\<^sup>+ x. f x * indicator (\<Union>n. A n) x \<partial>M)" |
47694 | 2129 |
unfolding suminf_indicator[OF disj] .. |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2130 |
finally show "(\<Sum>i. \<integral>\<^sup>+ x. f x * indicator (A i) x \<partial>M) = \<integral>\<^sup>+ x. f x * indicator (\<Union>i. A i) x \<partial>M" . |
47694 | 2131 |
qed |
2132 |
qed fact |
|
38656 | 2133 |
|
47694 | 2134 |
lemma null_sets_density_iff: |
2135 |
assumes f: "f \<in> borel_measurable M" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2136 |
shows "A \<in> null_sets (density M f) \<longleftrightarrow> A \<in> sets M \<and> (AE x in M. x \<in> A \<longrightarrow> f x = 0)" |
47694 | 2137 |
proof - |
2138 |
{ assume "A \<in> sets M" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2139 |
have "(\<integral>\<^sup>+x. f x * indicator A x \<partial>M) = 0 \<longleftrightarrow> emeasure M {x \<in> space M. f x * indicator A x \<noteq> 0} = 0" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2140 |
using f \<open>A \<in> sets M\<close> by (intro nn_integral_0_iff) auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2141 |
also have "\<dots> \<longleftrightarrow> (AE x in M. f x * indicator A x = 0)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2142 |
using f \<open>A \<in> sets M\<close> by (intro AE_iff_measurable[OF _ refl, symmetric]) auto |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2143 |
also have "(AE x in M. f x * indicator A x = 0) \<longleftrightarrow> (AE x in M. x \<in> A \<longrightarrow> f x \<le> 0)" |
62390 | 2144 |
by (auto simp add: indicator_def max_def split: if_split_asm) |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
2145 |
finally have "(\<integral>\<^sup>+x. f x * indicator A x \<partial>M) = 0 \<longleftrightarrow> (AE x in M. x \<in> A \<longrightarrow> f x \<le> 0)" . } |
47694 | 2146 |
with f show ?thesis |
2147 |
by (simp add: null_sets_def emeasure_density cong: conj_cong) |
|
2148 |
qed |
|
2149 |
||
2150 |
lemma AE_density: |
|
2151 |
assumes f: "f \<in> borel_measurable M" |
|
2152 |
shows "(AE x in density M f. P x) \<longleftrightarrow> (AE x in M. 0 < f x \<longrightarrow> P x)" |
|
2153 |
proof |
|
2154 |
assume "AE x in density M f. P x" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2155 |
with f obtain N where "{x \<in> space M. \<not> P x} \<subseteq> N" "N \<in> sets M" and ae: "AE x in M. x \<in> N \<longrightarrow> f x = 0" |
47694 | 2156 |
by (auto simp: eventually_ae_filter null_sets_density_iff) |
2157 |
then have "AE x in M. x \<notin> N \<longrightarrow> P x" by auto |
|
2158 |
with ae show "AE x in M. 0 < f x \<longrightarrow> P x" |
|
2159 |
by (rule eventually_elim2) auto |
|
2160 |
next |
|
2161 |
fix N assume ae: "AE x in M. 0 < f x \<longrightarrow> P x" |
|
2162 |
then obtain N where "{x \<in> space M. \<not> (0 < f x \<longrightarrow> P x)} \<subseteq> N" "N \<in> null_sets M" |
|
2163 |
by (auto simp: eventually_ae_filter) |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2164 |
then have *: "{x \<in> space (density M f). \<not> P x} \<subseteq> N \<union> {x\<in>space M. f x = 0}" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2165 |
"N \<union> {x\<in>space M. f x = 0} \<in> sets M" and ae2: "AE x in M. x \<notin> N" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2166 |
using f by (auto simp: subset_eq zero_less_iff_neq_zero intro!: AE_not_in) |
47694 | 2167 |
show "AE x in density M f. P x" |
2168 |
using ae2 |
|
2169 |
unfolding eventually_ae_filter[of _ "density M f"] Bex_def null_sets_density_iff[OF f] |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2170 |
by (intro exI[of _ "N \<union> {x\<in>space M. f x = 0}"] conjI *) (auto elim: eventually_elim2) |
35582 | 2171 |
qed |
2172 |
||
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
2173 |
lemma%important nn_integral_density: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2174 |
assumes f: "f \<in> borel_measurable M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2175 |
assumes g: "g \<in> borel_measurable M" |
56996 | 2176 |
shows "integral\<^sup>N (density M f) g = (\<integral>\<^sup>+ x. f x * g x \<partial>M)" |
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
2177 |
using%unimportant g proof%unimportant induct |
49798 | 2178 |
case (cong u v) |
49799
15ea98537c76
strong nonnegativ (instead of ae nn) for induction rule
hoelzl
parents:
49798
diff
changeset
|
2179 |
then show ?case |
56996 | 2180 |
apply (subst nn_integral_cong[OF cong(3)]) |
2181 |
apply (simp_all cong: nn_integral_cong) |
|
49798 | 2182 |
done |
2183 |
next |
|
2184 |
case (set A) then show ?case |
|
2185 |
by (simp add: emeasure_density f) |
|
2186 |
next |
|
2187 |
case (mult u c) |
|
2188 |
moreover have "\<And>x. f x * (c * u x) = c * (f x * u x)" by (simp add: field_simps) |
|
2189 |
ultimately show ?case |
|
56996 | 2190 |
using f by (simp add: nn_integral_cmult) |
49798 | 2191 |
next |
2192 |
case (add u v) |
|
53374
a14d2a854c02
tuned proofs -- clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset
|
2193 |
then have "\<And>x. f x * (v x + u x) = f x * v x + f x * u x" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2194 |
by (simp add: distrib_left) |
53374
a14d2a854c02
tuned proofs -- clarified flow of facts wrt. calculation;
wenzelm
parents:
53015
diff
changeset
|
2195 |
with add f show ?case |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2196 |
by (auto simp add: nn_integral_add intro!: nn_integral_add[symmetric]) |
49798 | 2197 |
next |
2198 |
case (seq U) |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2199 |
have eq: "AE x in M. f x * (SUP i. U i x) = (SUP i. f x * U i x)" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2200 |
by eventually_elim (simp add: SUP_mult_left_ennreal seq) |
49798 | 2201 |
from seq f show ?case |
69861
62e47f06d22c
avoid context-sensitive simp rules whose context-free form (image_comp) is not simp by default
haftmann
parents:
69661
diff
changeset
|
2202 |
apply (simp add: nn_integral_monotone_convergence_SUP image_comp) |
56996 | 2203 |
apply (subst nn_integral_cong_AE[OF eq]) |
2204 |
apply (subst nn_integral_monotone_convergence_SUP_AE) |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2205 |
apply (auto simp: incseq_def le_fun_def intro!: mult_left_mono) |
49798 | 2206 |
done |
47694 | 2207 |
qed |
38705 | 2208 |
|
57275
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents:
57137
diff
changeset
|
2209 |
lemma density_distr: |
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents:
57137
diff
changeset
|
2210 |
assumes [measurable]: "f \<in> borel_measurable N" "X \<in> measurable M N" |
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents:
57137
diff
changeset
|
2211 |
shows "density (distr M N X) f = distr (density M (\<lambda>x. f (X x))) N X" |
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents:
57137
diff
changeset
|
2212 |
by (intro measure_eqI) |
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents:
57137
diff
changeset
|
2213 |
(auto simp add: emeasure_density nn_integral_distr emeasure_distr |
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents:
57137
diff
changeset
|
2214 |
split: split_indicator intro!: nn_integral_cong) |
0ddb5b755cdc
moved lemmas from the proof of the Central Limit Theorem by Jeremy Avigad and Luke Serafin
hoelzl
parents:
57137
diff
changeset
|
2215 |
|
47694 | 2216 |
lemma emeasure_restricted: |
2217 |
assumes S: "S \<in> sets M" and X: "X \<in> sets M" |
|
2218 |
shows "emeasure (density M (indicator S)) X = emeasure M (S \<inter> X)" |
|
38705 | 2219 |
proof - |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
2220 |
have "emeasure (density M (indicator S)) X = (\<integral>\<^sup>+x. indicator S x * indicator X x \<partial>M)" |
47694 | 2221 |
using S X by (simp add: emeasure_density) |
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
2222 |
also have "\<dots> = (\<integral>\<^sup>+x. indicator (S \<inter> X) x \<partial>M)" |
56996 | 2223 |
by (auto intro!: nn_integral_cong simp: indicator_def) |
47694 | 2224 |
also have "\<dots> = emeasure M (S \<inter> X)" |
50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50104
diff
changeset
|
2225 |
using S X by (simp add: sets.Int) |
47694 | 2226 |
finally show ?thesis . |
2227 |
qed |
|
2228 |
||
2229 |
lemma measure_restricted: |
|
2230 |
"S \<in> sets M \<Longrightarrow> X \<in> sets M \<Longrightarrow> measure (density M (indicator S)) X = measure M (S \<inter> X)" |
|
2231 |
by (simp add: emeasure_restricted measure_def) |
|
2232 |
||
2233 |
lemma (in finite_measure) finite_measure_restricted: |
|
2234 |
"S \<in> sets M \<Longrightarrow> finite_measure (density M (indicator S))" |
|
61169 | 2235 |
by standard (simp add: emeasure_restricted) |
47694 | 2236 |
|
2237 |
lemma emeasure_density_const: |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2238 |
"A \<in> sets M \<Longrightarrow> emeasure (density M (\<lambda>_. c)) A = c * emeasure M A" |
56996 | 2239 |
by (auto simp: nn_integral_cmult_indicator emeasure_density) |
47694 | 2240 |
|
2241 |
lemma measure_density_const: |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2242 |
"A \<in> sets M \<Longrightarrow> c \<noteq> \<infinity> \<Longrightarrow> measure (density M (\<lambda>_. c)) A = enn2real c * measure M A" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2243 |
by (auto simp: emeasure_density_const measure_def enn2real_mult) |
47694 | 2244 |
|
2245 |
lemma density_density_eq: |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2246 |
"f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow> |
47694 | 2247 |
density (density M f) g = density M (\<lambda>x. f x * g x)" |
56996 | 2248 |
by (auto intro!: measure_eqI simp: emeasure_density nn_integral_density ac_simps) |
47694 | 2249 |
|
2250 |
lemma distr_density_distr: |
|
2251 |
assumes T: "T \<in> measurable M M'" and T': "T' \<in> measurable M' M" |
|
2252 |
and inv: "\<forall>x\<in>space M. T' (T x) = x" |
|
2253 |
assumes f: "f \<in> borel_measurable M'" |
|
2254 |
shows "distr (density (distr M M' T) f) M T' = density M (f \<circ> T)" (is "?R = ?L") |
|
2255 |
proof (rule measure_eqI) |
|
2256 |
fix A assume A: "A \<in> sets ?R" |
|
2257 |
{ fix x assume "x \<in> space M" |
|
50244
de72bbe42190
qualified interpretation of sigma_algebra, to avoid name clashes
immler
parents:
50104
diff
changeset
|
2258 |
with sets.sets_into_space[OF A] |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2259 |
have "indicator (T' -` A \<inter> space M') (T x) = (indicator A x :: ennreal)" |
47694 | 2260 |
using T inv by (auto simp: indicator_def measurable_space) } |
2261 |
with A T T' f show "emeasure ?R A = emeasure ?L A" |
|
2262 |
by (simp add: measurable_comp emeasure_density emeasure_distr |
|
56996 | 2263 |
nn_integral_distr measurable_sets cong: nn_integral_cong) |
47694 | 2264 |
qed simp |
2265 |
||
2266 |
lemma density_density_divide: |
|
2267 |
fixes f g :: "'a \<Rightarrow> real" |
|
2268 |
assumes f: "f \<in> borel_measurable M" "AE x in M. 0 \<le> f x" |
|
2269 |
assumes g: "g \<in> borel_measurable M" "AE x in M. 0 \<le> g x" |
|
2270 |
assumes ac: "AE x in M. f x = 0 \<longrightarrow> g x = 0" |
|
2271 |
shows "density (density M f) (\<lambda>x. g x / f x) = density M g" |
|
2272 |
proof - |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2273 |
have "density M g = density M (\<lambda>x. ennreal (f x) * ennreal (g x / f x))" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2274 |
using f g ac by (auto intro!: density_cong measurable_If simp: ennreal_mult[symmetric]) |
47694 | 2275 |
then show ?thesis |
2276 |
using f g by (subst density_density_eq) auto |
|
38705 | 2277 |
qed |
2278 |
||
59425 | 2279 |
lemma density_1: "density M (\<lambda>_. 1) = M" |
2280 |
by (intro measure_eqI) (auto simp: emeasure_density) |
|
2281 |
||
2282 |
lemma emeasure_density_add: |
|
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
2283 |
assumes X: "X \<in> sets M" |
59425 | 2284 |
assumes Mf[measurable]: "f \<in> borel_measurable M" |
2285 |
assumes Mg[measurable]: "g \<in> borel_measurable M" |
|
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
2286 |
shows "emeasure (density M f) X + emeasure (density M g) X = |
59425 | 2287 |
emeasure (density M (\<lambda>x. f x + g x)) X" |
2288 |
using assms |
|
2289 |
apply (subst (1 2 3) emeasure_density, simp_all) [] |
|
2290 |
apply (subst nn_integral_add[symmetric], simp_all) [] |
|
2291 |
apply (intro nn_integral_cong, simp split: split_indicator) |
|
2292 |
done |
|
2293 |
||
61808 | 2294 |
subsubsection \<open>Point measure\<close> |
47694 | 2295 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
2296 |
definition%important point_measure :: "'a set \<Rightarrow> ('a \<Rightarrow> ennreal) \<Rightarrow> 'a measure" where |
47694 | 2297 |
"point_measure A f = density (count_space A) f" |
2298 |
||
2299 |
lemma |
|
2300 |
shows space_point_measure: "space (point_measure A f) = A" |
|
2301 |
and sets_point_measure: "sets (point_measure A f) = Pow A" |
|
2302 |
by (auto simp: point_measure_def) |
|
2303 |
||
59048 | 2304 |
lemma sets_point_measure_count_space[measurable_cong]: "sets (point_measure A f) = sets (count_space A)" |
2305 |
by (simp add: sets_point_measure) |
|
2306 |
||
47694 | 2307 |
lemma measurable_point_measure_eq1[simp]: |
2308 |
"g \<in> measurable (point_measure A f) M \<longleftrightarrow> g \<in> A \<rightarrow> space M" |
|
2309 |
unfolding point_measure_def by simp |
|
2310 |
||
2311 |
lemma measurable_point_measure_eq2_finite[simp]: |
|
2312 |
"finite A \<Longrightarrow> |
|
2313 |
g \<in> measurable M (point_measure A f) \<longleftrightarrow> |
|
2314 |
(g \<in> space M \<rightarrow> A \<and> (\<forall>a\<in>A. g -` {a} \<inter> space M \<in> sets M))" |
|
50002
ce0d316b5b44
add measurability prover; add support for Borel sets
hoelzl
parents:
50001
diff
changeset
|
2315 |
unfolding point_measure_def by (simp add: measurable_count_space_eq2) |
47694 | 2316 |
|
2317 |
lemma simple_function_point_measure[simp]: |
|
2318 |
"simple_function (point_measure A f) g \<longleftrightarrow> finite (g ` A)" |
|
2319 |
by (simp add: point_measure_def) |
|
2320 |
||
2321 |
lemma emeasure_point_measure: |
|
2322 |
assumes A: "finite {a\<in>X. 0 < f a}" "X \<subseteq> A" |
|
2323 |
shows "emeasure (point_measure A f) X = (\<Sum>a|a\<in>X \<and> 0 < f a. f a)" |
|
35977 | 2324 |
proof - |
47694 | 2325 |
have "{a. (a \<in> X \<longrightarrow> a \<in> A \<and> 0 < f a) \<and> a \<in> X} = {a\<in>X. 0 < f a}" |
61808 | 2326 |
using \<open>X \<subseteq> A\<close> by auto |
47694 | 2327 |
with A show ?thesis |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2328 |
by (simp add: emeasure_density nn_integral_count_space point_measure_def indicator_def) |
35977 | 2329 |
qed |
2330 |
||
47694 | 2331 |
lemma emeasure_point_measure_finite: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2332 |
"finite A \<Longrightarrow> X \<subseteq> A \<Longrightarrow> emeasure (point_measure A f) X = (\<Sum>a\<in>X. f a)" |
64267 | 2333 |
by (subst emeasure_point_measure) (auto dest: finite_subset intro!: sum.mono_neutral_left simp: less_le) |
47694 | 2334 |
|
49795 | 2335 |
lemma emeasure_point_measure_finite2: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2336 |
"X \<subseteq> A \<Longrightarrow> finite X \<Longrightarrow> emeasure (point_measure A f) X = (\<Sum>a\<in>X. f a)" |
49795 | 2337 |
by (subst emeasure_point_measure) |
64267 | 2338 |
(auto dest: finite_subset intro!: sum.mono_neutral_left simp: less_le) |
49795 | 2339 |
|
47694 | 2340 |
lemma null_sets_point_measure_iff: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2341 |
"X \<in> null_sets (point_measure A f) \<longleftrightarrow> X \<subseteq> A \<and> (\<forall>x\<in>X. f x = 0)" |
47694 | 2342 |
by (auto simp: AE_count_space null_sets_density_iff point_measure_def) |
2343 |
||
2344 |
lemma AE_point_measure: |
|
2345 |
"(AE x in point_measure A f. P x) \<longleftrightarrow> (\<forall>x\<in>A. 0 < f x \<longrightarrow> P x)" |
|
2346 |
unfolding point_measure_def |
|
2347 |
by (subst AE_density) (auto simp: AE_density AE_count_space point_measure_def) |
|
2348 |
||
56996 | 2349 |
lemma nn_integral_point_measure: |
47694 | 2350 |
"finite {a\<in>A. 0 < f a \<and> 0 < g a} \<Longrightarrow> |
56996 | 2351 |
integral\<^sup>N (point_measure A f) g = (\<Sum>a|a\<in>A \<and> 0 < f a \<and> 0 < g a. f a * g a)" |
47694 | 2352 |
unfolding point_measure_def |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2353 |
by (subst nn_integral_density) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2354 |
(simp_all add: nn_integral_density nn_integral_count_space ennreal_zero_less_mult_iff) |
47694 | 2355 |
|
56996 | 2356 |
lemma nn_integral_point_measure_finite: |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2357 |
"finite A \<Longrightarrow> integral\<^sup>N (point_measure A f) g = (\<Sum>a\<in>A. f a * g a)" |
64267 | 2358 |
by (subst nn_integral_point_measure) (auto intro!: sum.mono_neutral_left simp: less_le) |
47694 | 2359 |
|
61808 | 2360 |
subsubsection \<open>Uniform measure\<close> |
47694 | 2361 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
2362 |
definition%important "uniform_measure M A = density M (\<lambda>x. indicator A x / emeasure M A)" |
47694 | 2363 |
|
2364 |
lemma |
|
59048 | 2365 |
shows sets_uniform_measure[simp, measurable_cong]: "sets (uniform_measure M A) = sets M" |
47694 | 2366 |
and space_uniform_measure[simp]: "space (uniform_measure M A) = space M" |
2367 |
by (auto simp: uniform_measure_def) |
|
2368 |
||
2369 |
lemma emeasure_uniform_measure[simp]: |
|
2370 |
assumes A: "A \<in> sets M" and B: "B \<in> sets M" |
|
2371 |
shows "emeasure (uniform_measure M A) B = emeasure M (A \<inter> B) / emeasure M A" |
|
2372 |
proof - |
|
53015
a1119cf551e8
standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents:
51340
diff
changeset
|
2373 |
from A B have "emeasure (uniform_measure M A) B = (\<integral>\<^sup>+x. (1 / emeasure M A) * indicator (A \<inter> B) x \<partial>M)" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2374 |
by (auto simp add: uniform_measure_def emeasure_density divide_ennreal_def split: split_indicator |
56996 | 2375 |
intro!: nn_integral_cong) |
47694 | 2376 |
also have "\<dots> = emeasure M (A \<inter> B) / emeasure M A" |
2377 |
using A B |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2378 |
by (subst nn_integral_cmult_indicator) (simp_all add: sets.Int divide_ennreal_def mult.commute) |
47694 | 2379 |
finally show ?thesis . |
2380 |
qed |
|
2381 |
||
2382 |
lemma measure_uniform_measure[simp]: |
|
2383 |
assumes A: "emeasure M A \<noteq> 0" "emeasure M A \<noteq> \<infinity>" and B: "B \<in> sets M" |
|
2384 |
shows "measure (uniform_measure M A) B = measure M (A \<inter> B) / measure M A" |
|
2385 |
using emeasure_uniform_measure[OF emeasure_neq_0_sets[OF A(1)] B] A |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2386 |
by (cases "emeasure M A" "emeasure M (A \<inter> B)" rule: ennreal2_cases) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2387 |
(simp_all add: measure_def divide_ennreal top_ennreal.rep_eq top_ereal_def ennreal_top_divide) |
47694 | 2388 |
|
58606 | 2389 |
lemma AE_uniform_measureI: |
2390 |
"A \<in> sets M \<Longrightarrow> (AE x in M. x \<in> A \<longrightarrow> P x) \<Longrightarrow> (AE x in uniform_measure M A. P x)" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2391 |
unfolding uniform_measure_def by (auto simp: AE_density divide_ennreal_def) |
58606 | 2392 |
|
59000 | 2393 |
lemma emeasure_uniform_measure_1: |
2394 |
"emeasure M S \<noteq> 0 \<Longrightarrow> emeasure M S \<noteq> \<infinity> \<Longrightarrow> emeasure (uniform_measure M S) S = 1" |
|
2395 |
by (subst emeasure_uniform_measure) |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2396 |
(simp_all add: emeasure_neq_0_sets emeasure_eq_ennreal_measure divide_ennreal |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2397 |
zero_less_iff_neq_zero[symmetric]) |
59000 | 2398 |
|
2399 |
lemma nn_integral_uniform_measure: |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2400 |
assumes f[measurable]: "f \<in> borel_measurable M" and S[measurable]: "S \<in> sets M" |
59000 | 2401 |
shows "(\<integral>\<^sup>+x. f x \<partial>uniform_measure M S) = (\<integral>\<^sup>+x. f x * indicator S x \<partial>M) / emeasure M S" |
2402 |
proof - |
|
2403 |
{ assume "emeasure M S = \<infinity>" |
|
2404 |
then have ?thesis |
|
2405 |
by (simp add: uniform_measure_def nn_integral_density f) } |
|
2406 |
moreover |
|
2407 |
{ assume [simp]: "emeasure M S = 0" |
|
2408 |
then have ae: "AE x in M. x \<notin> S" |
|
2409 |
using sets.sets_into_space[OF S] |
|
2410 |
by (subst AE_iff_measurable[OF _ refl]) (simp_all add: subset_eq cong: rev_conj_cong) |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2411 |
from ae have "(\<integral>\<^sup>+ x. indicator S x / 0 * f x \<partial>M) = 0" |
59000 | 2412 |
by (subst nn_integral_0_iff_AE) auto |
2413 |
moreover from ae have "(\<integral>\<^sup>+ x. f x * indicator S x \<partial>M) = 0" |
|
2414 |
by (subst nn_integral_0_iff_AE) auto |
|
2415 |
ultimately have ?thesis |
|
2416 |
by (simp add: uniform_measure_def nn_integral_density f) } |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2417 |
moreover have "emeasure M S \<noteq> 0 \<Longrightarrow> emeasure M S \<noteq> \<infinity> \<Longrightarrow> ?thesis" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2418 |
unfolding uniform_measure_def |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2419 |
by (subst nn_integral_density) |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2420 |
(auto simp: ennreal_times_divide f nn_integral_divide[symmetric] mult.commute) |
59000 | 2421 |
ultimately show ?thesis by blast |
2422 |
qed |
|
2423 |
||
2424 |
lemma AE_uniform_measure: |
|
2425 |
assumes "emeasure M A \<noteq> 0" "emeasure M A < \<infinity>" |
|
2426 |
shows "(AE x in uniform_measure M A. P x) \<longleftrightarrow> (AE x in M. x \<in> A \<longrightarrow> P x)" |
|
2427 |
proof - |
|
2428 |
have "A \<in> sets M" |
|
61808 | 2429 |
using \<open>emeasure M A \<noteq> 0\<close> by (metis emeasure_notin_sets) |
59000 | 2430 |
moreover have "\<And>x. 0 < indicator A x / emeasure M A \<longleftrightarrow> x \<in> A" |
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2431 |
using assms |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2432 |
by (cases "emeasure M A") (auto split: split_indicator simp: ennreal_zero_less_divide) |
59000 | 2433 |
ultimately show ?thesis |
2434 |
unfolding uniform_measure_def by (simp add: AE_density) |
|
2435 |
qed |
|
2436 |
||
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
2437 |
subsubsection%unimportant \<open>Null measure\<close> |
59425 | 2438 |
|
2439 |
lemma null_measure_eq_density: "null_measure M = density M (\<lambda>_. 0)" |
|
2440 |
by (intro measure_eqI) (simp_all add: emeasure_density) |
|
2441 |
||
2442 |
lemma nn_integral_null_measure[simp]: "(\<integral>\<^sup>+x. f x \<partial>null_measure M) = 0" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2443 |
by (auto simp add: nn_integral_def simple_integral_def SUP_constant bot_ennreal_def le_fun_def |
59425 | 2444 |
intro!: exI[of _ "\<lambda>x. 0"]) |
2445 |
||
2446 |
lemma density_null_measure[simp]: "density (null_measure M) f = null_measure M" |
|
2447 |
proof (intro measure_eqI) |
|
2448 |
fix A show "emeasure (density (null_measure M) f) A = emeasure (null_measure M) A" |
|
2449 |
by (simp add: density_def) (simp only: null_measure_def[symmetric] emeasure_null_measure) |
|
2450 |
qed simp |
|
2451 |
||
61808 | 2452 |
subsubsection \<open>Uniform count measure\<close> |
47694 | 2453 |
|
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
2454 |
definition%important "uniform_count_measure A = point_measure A (\<lambda>x. 1 / card A)" |
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
2455 |
|
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
2456 |
lemma |
47694 | 2457 |
shows space_uniform_count_measure: "space (uniform_count_measure A) = A" |
2458 |
and sets_uniform_count_measure: "sets (uniform_count_measure A) = Pow A" |
|
2459 |
unfolding uniform_count_measure_def by (auto simp: space_point_measure sets_point_measure) |
|
59048 | 2460 |
|
2461 |
lemma sets_uniform_count_measure_count_space[measurable_cong]: |
|
2462 |
"sets (uniform_count_measure A) = sets (count_space A)" |
|
2463 |
by (simp add: sets_uniform_count_measure) |
|
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
2464 |
|
47694 | 2465 |
lemma emeasure_uniform_count_measure: |
2466 |
"finite A \<Longrightarrow> X \<subseteq> A \<Longrightarrow> emeasure (uniform_count_measure A) X = card X / card A" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2467 |
by (simp add: emeasure_point_measure_finite uniform_count_measure_def divide_inverse ennreal_mult |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2468 |
ennreal_of_nat_eq_real_of_nat) |
61609
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
paulson <lp15@cam.ac.uk>
parents:
61359
diff
changeset
|
2469 |
|
47694 | 2470 |
lemma measure_uniform_count_measure: |
2471 |
"finite A \<Longrightarrow> X \<subseteq> A \<Longrightarrow> measure (uniform_count_measure A) X = card X / card A" |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2472 |
by (simp add: emeasure_point_measure_finite uniform_count_measure_def measure_def enn2real_mult) |
47694 | 2473 |
|
61633 | 2474 |
lemma space_uniform_count_measure_empty_iff [simp]: |
2475 |
"space (uniform_count_measure X) = {} \<longleftrightarrow> X = {}" |
|
2476 |
by(simp add: space_uniform_count_measure) |
|
2477 |
||
2478 |
lemma sets_uniform_count_measure_eq_UNIV [simp]: |
|
2479 |
"sets (uniform_count_measure UNIV) = UNIV \<longleftrightarrow> True" |
|
2480 |
"UNIV = sets (uniform_count_measure UNIV) \<longleftrightarrow> True" |
|
2481 |
by(simp_all add: sets_uniform_count_measure) |
|
2482 |
||
69457
bea49e443909
tagged more of HOL-Analysis
Manuel Eberl <eberlm@in.tum.de>
parents:
69313
diff
changeset
|
2483 |
subsubsection%unimportant \<open>Scaled measure\<close> |
61634 | 2484 |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2485 |
lemma nn_integral_scale_measure: |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2486 |
assumes f: "f \<in> borel_measurable M" |
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2487 |
shows "nn_integral (scale_measure r M) f = r * nn_integral M f" |
61634 | 2488 |
using f |
2489 |
proof induction |
|
2490 |
case (cong f g) |
|
2491 |
thus ?case |
|
2492 |
by(simp add: cong.hyps space_scale_measure cong: nn_integral_cong_simp) |
|
2493 |
next |
|
2494 |
case (mult f c) |
|
2495 |
thus ?case |
|
2496 |
by(simp add: nn_integral_cmult max_def mult.assoc mult.left_commute) |
|
2497 |
next |
|
2498 |
case (add f g) |
|
2499 |
thus ?case |
|
62975
1d066f6ab25d
Probability: move emeasure and nn_integral from ereal to ennreal
hoelzl
parents:
62390
diff
changeset
|
2500 |
by(simp add: nn_integral_add distrib_left) |
61634 | 2501 |
next |
2502 |
case (seq U) |
|
2503 |
thus ?case |
|
69861
62e47f06d22c
avoid context-sensitive simp rules whose context-free form (image_comp) is not simp by default
haftmann
parents:
69661
diff
changeset
|
2504 |
by(simp add: nn_integral_monotone_convergence_SUP SUP_mult_left_ennreal image_comp) |
61634 | 2505 |
qed simp |
2506 |
||
35748 | 2507 |
end |