58 fixes f :: "_ \<Rightarrow> _::real_normed_vector" |
58 fixes f :: "_ \<Rightarrow> _::real_normed_vector" |
59 assumes "set_borel_measurable M X f" "B \<in> sets borel" "X \<in> sets M" |
59 assumes "set_borel_measurable M X f" "B \<in> sets borel" "X \<in> sets M" |
60 shows "f -` B \<inter> X \<in> sets M" |
60 shows "f -` B \<inter> X \<in> sets M" |
61 proof - |
61 proof - |
62 have "f \<in> borel_measurable (restrict_space M X)" |
62 have "f \<in> borel_measurable (restrict_space M X)" |
63 using assms by (subst borel_measurable_restrict_space_iff) auto |
63 using assms unfolding set_borel_measurable_def by (subst borel_measurable_restrict_space_iff) auto |
64 then have "f -` B \<inter> space (restrict_space M X) \<in> sets (restrict_space M X)" |
64 then have "f -` B \<inter> space (restrict_space M X) \<in> sets (restrict_space M X)" |
65 by (rule measurable_sets) fact |
65 by (rule measurable_sets) fact |
66 with \<open>X \<in> sets M\<close> show ?thesis |
66 with \<open>X \<in> sets M\<close> show ?thesis |
67 by (subst (asm) sets_restrict_space_iff) (auto simp: space_restrict_space) |
67 by (subst (asm) sets_restrict_space_iff) (auto simp: space_restrict_space) |
68 qed |
68 qed |
69 |
69 |
70 lemma set_lebesgue_integral_cong: |
70 lemma set_lebesgue_integral_cong: |
71 assumes "A \<in> sets M" and "\<forall>x. x \<in> A \<longrightarrow> f x = g x" |
71 assumes "A \<in> sets M" and "\<forall>x. x \<in> A \<longrightarrow> f x = g x" |
72 shows "(LINT x:A|M. f x) = (LINT x:A|M. g x)" |
72 shows "(LINT x:A|M. f x) = (LINT x:A|M. g x)" |
73 using assms by (auto intro!: Bochner_Integration.integral_cong split: split_indicator simp add: sets.sets_into_space) |
73 unfolding set_lebesgue_integral_def |
|
74 using assms |
|
75 by (metis indicator_simps(2) real_vector.scale_zero_left) |
74 |
76 |
75 lemma set_lebesgue_integral_cong_AE: |
77 lemma set_lebesgue_integral_cong_AE: |
76 assumes [measurable]: "A \<in> sets M" "f \<in> borel_measurable M" "g \<in> borel_measurable M" |
78 assumes [measurable]: "A \<in> sets M" "f \<in> borel_measurable M" "g \<in> borel_measurable M" |
77 assumes "AE x \<in> A in M. f x = g x" |
79 assumes "AE x \<in> A in M. f x = g x" |
78 shows "LINT x:A|M. f x = LINT x:A|M. g x" |
80 shows "LINT x:A|M. f x = LINT x:A|M. g x" |
79 proof- |
81 proof- |
80 have "AE x in M. indicator A x *\<^sub>R f x = indicator A x *\<^sub>R g x" |
82 have "AE x in M. indicator A x *\<^sub>R f x = indicator A x *\<^sub>R g x" |
81 using assms by auto |
83 using assms by auto |
82 thus ?thesis by (intro integral_cong_AE) auto |
84 thus ?thesis |
|
85 unfolding set_lebesgue_integral_def by (intro integral_cong_AE) auto |
83 qed |
86 qed |
84 |
87 |
85 lemma set_integrable_cong_AE: |
88 lemma set_integrable_cong_AE: |
86 "f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow> |
89 "f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow> |
87 AE x \<in> A in M. f x = g x \<Longrightarrow> A \<in> sets M \<Longrightarrow> |
90 AE x \<in> A in M. f x = g x \<Longrightarrow> A \<in> sets M \<Longrightarrow> |
88 set_integrable M A f = set_integrable M A g" |
91 set_integrable M A f = set_integrable M A g" |
|
92 unfolding set_integrable_def |
89 by (rule integrable_cong_AE) auto |
93 by (rule integrable_cong_AE) auto |
90 |
94 |
91 lemma set_integrable_subset: |
95 lemma set_integrable_subset: |
92 fixes M A B and f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
96 fixes M A B and f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
93 assumes "set_integrable M A f" "B \<in> sets M" "B \<subseteq> A" |
97 assumes "set_integrable M A f" "B \<in> sets M" "B \<subseteq> A" |
94 shows "set_integrable M B f" |
98 shows "set_integrable M B f" |
95 proof - |
99 proof - |
96 have "set_integrable M B (\<lambda>x. indicator A x *\<^sub>R f x)" |
100 have "set_integrable M B (\<lambda>x. indicator A x *\<^sub>R f x)" |
97 by (rule integrable_mult_indicator) fact+ |
101 using assms integrable_mult_indicator set_integrable_def by blast |
98 with \<open>B \<subseteq> A\<close> show ?thesis |
102 with \<open>B \<subseteq> A\<close> show ?thesis |
|
103 unfolding set_integrable_def |
99 by (simp add: indicator_inter_arith[symmetric] Int_absorb2) |
104 by (simp add: indicator_inter_arith[symmetric] Int_absorb2) |
100 qed |
105 qed |
101 |
106 |
102 lemma set_integrable_restrict_space: |
107 lemma set_integrable_restrict_space: |
103 fixes f :: "'a \<Rightarrow> 'b::{banach, second_countable_topology}" |
108 fixes f :: "'a \<Rightarrow> 'b::{banach, second_countable_topology}" |
104 assumes f: "set_integrable M S f" and T: "T \<in> sets (restrict_space M S)" |
109 assumes f: "set_integrable M S f" and T: "T \<in> sets (restrict_space M S)" |
105 shows "set_integrable M T f" |
110 shows "set_integrable M T f" |
106 proof - |
111 proof - |
107 obtain T' where T_eq: "T = S \<inter> T'" and "T' \<in> sets M" using T by (auto simp: sets_restrict_space) |
112 obtain T' where T_eq: "T = S \<inter> T'" and "T' \<in> sets M" |
108 |
113 using T by (auto simp: sets_restrict_space) |
109 have \<open>integrable M (\<lambda>x. indicator T' x *\<^sub>R (indicator S x *\<^sub>R f x))\<close> |
114 have \<open>integrable M (\<lambda>x. indicator T' x *\<^sub>R (indicator S x *\<^sub>R f x))\<close> |
110 by (rule integrable_mult_indicator; fact) |
115 using \<open>T' \<in> sets M\<close> f integrable_mult_indicator set_integrable_def by blast |
111 then show ?thesis |
116 then show ?thesis |
|
117 unfolding set_integrable_def |
112 unfolding T_eq indicator_inter_arith by (simp add: ac_simps) |
118 unfolding T_eq indicator_inter_arith by (simp add: ac_simps) |
113 qed |
119 qed |
114 |
120 |
115 (* TODO: integral_cmul_indicator should be named set_integral_const *) |
121 (* TODO: integral_cmul_indicator should be named set_integral_const *) |
116 (* TODO: borel_integrable_atLeastAtMost should be named something like set_integrable_Icc_isCont *) |
122 (* TODO: borel_integrable_atLeastAtMost should be named something like set_integrable_Icc_isCont *) |
117 |
123 |
118 lemma set_integral_scaleR_right [simp]: "LINT t:A|M. a *\<^sub>R f t = a *\<^sub>R (LINT t:A|M. f t)" |
124 lemma set_integral_scaleR_right [simp]: "LINT t:A|M. a *\<^sub>R f t = a *\<^sub>R (LINT t:A|M. f t)" |
|
125 unfolding set_lebesgue_integral_def |
119 by (subst integral_scaleR_right[symmetric]) (auto intro!: Bochner_Integration.integral_cong) |
126 by (subst integral_scaleR_right[symmetric]) (auto intro!: Bochner_Integration.integral_cong) |
120 |
127 |
121 lemma set_integral_mult_right [simp]: |
128 lemma set_integral_mult_right [simp]: |
122 fixes a :: "'a::{real_normed_field, second_countable_topology}" |
129 fixes a :: "'a::{real_normed_field, second_countable_topology}" |
123 shows "LINT t:A|M. a * f t = a * (LINT t:A|M. f t)" |
130 shows "LINT t:A|M. a * f t = a * (LINT t:A|M. f t)" |
|
131 unfolding set_lebesgue_integral_def |
124 by (subst integral_mult_right_zero[symmetric]) auto |
132 by (subst integral_mult_right_zero[symmetric]) auto |
125 |
133 |
126 lemma set_integral_mult_left [simp]: |
134 lemma set_integral_mult_left [simp]: |
127 fixes a :: "'a::{real_normed_field, second_countable_topology}" |
135 fixes a :: "'a::{real_normed_field, second_countable_topology}" |
128 shows "LINT t:A|M. f t * a = (LINT t:A|M. f t) * a" |
136 shows "LINT t:A|M. f t * a = (LINT t:A|M. f t) * a" |
|
137 unfolding set_lebesgue_integral_def |
129 by (subst integral_mult_left_zero[symmetric]) auto |
138 by (subst integral_mult_left_zero[symmetric]) auto |
130 |
139 |
131 lemma set_integral_divide_zero [simp]: |
140 lemma set_integral_divide_zero [simp]: |
132 fixes a :: "'a::{real_normed_field, field, second_countable_topology}" |
141 fixes a :: "'a::{real_normed_field, field, second_countable_topology}" |
133 shows "LINT t:A|M. f t / a = (LINT t:A|M. f t) / a" |
142 shows "LINT t:A|M. f t / a = (LINT t:A|M. f t) / a" |
|
143 unfolding set_lebesgue_integral_def |
134 by (subst integral_divide_zero[symmetric], intro Bochner_Integration.integral_cong) |
144 by (subst integral_divide_zero[symmetric], intro Bochner_Integration.integral_cong) |
135 (auto split: split_indicator) |
145 (auto split: split_indicator) |
136 |
146 |
137 lemma set_integrable_scaleR_right [simp, intro]: |
147 lemma set_integrable_scaleR_right [simp, intro]: |
138 shows "(a \<noteq> 0 \<Longrightarrow> set_integrable M A f) \<Longrightarrow> set_integrable M A (\<lambda>t. a *\<^sub>R f t)" |
148 shows "(a \<noteq> 0 \<Longrightarrow> set_integrable M A f) \<Longrightarrow> set_integrable M A (\<lambda>t. a *\<^sub>R f t)" |
|
149 unfolding set_integrable_def |
139 unfolding scaleR_left_commute by (rule integrable_scaleR_right) |
150 unfolding scaleR_left_commute by (rule integrable_scaleR_right) |
140 |
151 |
141 lemma set_integrable_scaleR_left [simp, intro]: |
152 lemma set_integrable_scaleR_left [simp, intro]: |
142 fixes a :: "_ :: {banach, second_countable_topology}" |
153 fixes a :: "_ :: {banach, second_countable_topology}" |
143 shows "(a \<noteq> 0 \<Longrightarrow> set_integrable M A f) \<Longrightarrow> set_integrable M A (\<lambda>t. f t *\<^sub>R a)" |
154 shows "(a \<noteq> 0 \<Longrightarrow> set_integrable M A f) \<Longrightarrow> set_integrable M A (\<lambda>t. f t *\<^sub>R a)" |
|
155 unfolding set_integrable_def |
144 using integrable_scaleR_left[of a M "\<lambda>x. indicator A x *\<^sub>R f x"] by simp |
156 using integrable_scaleR_left[of a M "\<lambda>x. indicator A x *\<^sub>R f x"] by simp |
145 |
157 |
146 lemma set_integrable_mult_right [simp, intro]: |
158 lemma set_integrable_mult_right [simp, intro]: |
147 fixes a :: "'a::{real_normed_field, second_countable_topology}" |
159 fixes a :: "'a::{real_normed_field, second_countable_topology}" |
148 shows "(a \<noteq> 0 \<Longrightarrow> set_integrable M A f) \<Longrightarrow> set_integrable M A (\<lambda>t. a * f t)" |
160 shows "(a \<noteq> 0 \<Longrightarrow> set_integrable M A f) \<Longrightarrow> set_integrable M A (\<lambda>t. a * f t)" |
|
161 unfolding set_integrable_def |
149 using integrable_mult_right[of a M "\<lambda>x. indicator A x *\<^sub>R f x"] by simp |
162 using integrable_mult_right[of a M "\<lambda>x. indicator A x *\<^sub>R f x"] by simp |
150 |
163 |
151 lemma set_integrable_mult_left [simp, intro]: |
164 lemma set_integrable_mult_left [simp, intro]: |
152 fixes a :: "'a::{real_normed_field, second_countable_topology}" |
165 fixes a :: "'a::{real_normed_field, second_countable_topology}" |
153 shows "(a \<noteq> 0 \<Longrightarrow> set_integrable M A f) \<Longrightarrow> set_integrable M A (\<lambda>t. f t * a)" |
166 shows "(a \<noteq> 0 \<Longrightarrow> set_integrable M A f) \<Longrightarrow> set_integrable M A (\<lambda>t. f t * a)" |
|
167 unfolding set_integrable_def |
154 using integrable_mult_left[of a M "\<lambda>x. indicator A x *\<^sub>R f x"] by simp |
168 using integrable_mult_left[of a M "\<lambda>x. indicator A x *\<^sub>R f x"] by simp |
155 |
169 |
156 lemma set_integrable_divide [simp, intro]: |
170 lemma set_integrable_divide [simp, intro]: |
157 fixes a :: "'a::{real_normed_field, field, second_countable_topology}" |
171 fixes a :: "'a::{real_normed_field, field, second_countable_topology}" |
158 assumes "a \<noteq> 0 \<Longrightarrow> set_integrable M A f" |
172 assumes "a \<noteq> 0 \<Longrightarrow> set_integrable M A f" |
159 shows "set_integrable M A (\<lambda>t. f t / a)" |
173 shows "set_integrable M A (\<lambda>t. f t / a)" |
160 proof - |
174 proof - |
161 have "integrable M (\<lambda>x. indicator A x *\<^sub>R f x / a)" |
175 have "integrable M (\<lambda>x. indicator A x *\<^sub>R f x / a)" |
162 using assms by (rule integrable_divide_zero) |
176 using assms unfolding set_integrable_def by (rule integrable_divide_zero) |
163 also have "(\<lambda>x. indicator A x *\<^sub>R f x / a) = (\<lambda>x. indicator A x *\<^sub>R (f x / a))" |
177 also have "(\<lambda>x. indicator A x *\<^sub>R f x / a) = (\<lambda>x. indicator A x *\<^sub>R (f x / a))" |
164 by (auto split: split_indicator) |
178 by (auto split: split_indicator) |
165 finally show ?thesis . |
179 finally show ?thesis |
|
180 unfolding set_integrable_def . |
166 qed |
181 qed |
167 |
182 |
168 lemma set_integral_add [simp, intro]: |
183 lemma set_integral_add [simp, intro]: |
169 fixes f g :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
184 fixes f g :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
170 assumes "set_integrable M A f" "set_integrable M A g" |
185 assumes "set_integrable M A f" "set_integrable M A g" |
171 shows "set_integrable M A (\<lambda>x. f x + g x)" |
186 shows "set_integrable M A (\<lambda>x. f x + g x)" |
172 and "LINT x:A|M. f x + g x = (LINT x:A|M. f x) + (LINT x:A|M. g x)" |
187 and "LINT x:A|M. f x + g x = (LINT x:A|M. f x) + (LINT x:A|M. g x)" |
173 using assms by (simp_all add: scaleR_add_right) |
188 using assms unfolding set_integrable_def set_lebesgue_integral_def by (simp_all add: scaleR_add_right) |
174 |
189 |
175 lemma set_integral_diff [simp, intro]: |
190 lemma set_integral_diff [simp, intro]: |
176 assumes "set_integrable M A f" "set_integrable M A g" |
191 assumes "set_integrable M A f" "set_integrable M A g" |
177 shows "set_integrable M A (\<lambda>x. f x - g x)" and "LINT x:A|M. f x - g x = |
192 shows "set_integrable M A (\<lambda>x. f x - g x)" and "LINT x:A|M. f x - g x = |
178 (LINT x:A|M. f x) - (LINT x:A|M. g x)" |
193 (LINT x:A|M. f x) - (LINT x:A|M. g x)" |
179 using assms by (simp_all add: scaleR_diff_right) |
194 using assms unfolding set_integrable_def set_lebesgue_integral_def by (simp_all add: scaleR_diff_right) |
180 |
195 |
181 (* question: why do we have this for negation, but multiplication by a constant |
196 (* question: why do we have this for negation, but multiplication by a constant |
182 requires an integrability assumption? *) |
197 requires an integrability assumption? *) |
183 lemma set_integral_uminus: "set_integrable M A f \<Longrightarrow> LINT x:A|M. - f x = - (LINT x:A|M. f x)" |
198 lemma set_integral_uminus: "set_integrable M A f \<Longrightarrow> LINT x:A|M. - f x = - (LINT x:A|M. f x)" |
|
199 unfolding set_integrable_def set_lebesgue_integral_def |
184 by (subst integral_minus[symmetric]) simp_all |
200 by (subst integral_minus[symmetric]) simp_all |
185 |
201 |
186 lemma set_integral_complex_of_real: |
202 lemma set_integral_complex_of_real: |
187 "LINT x:A|M. complex_of_real (f x) = of_real (LINT x:A|M. f x)" |
203 "LINT x:A|M. complex_of_real (f x) = of_real (LINT x:A|M. f x)" |
|
204 unfolding set_lebesgue_integral_def |
188 by (subst integral_complex_of_real[symmetric]) |
205 by (subst integral_complex_of_real[symmetric]) |
189 (auto intro!: Bochner_Integration.integral_cong split: split_indicator) |
206 (auto intro!: Bochner_Integration.integral_cong split: split_indicator) |
190 |
207 |
191 lemma set_integral_mono: |
208 lemma set_integral_mono: |
192 fixes f g :: "_ \<Rightarrow> real" |
209 fixes f g :: "_ \<Rightarrow> real" |
193 assumes "set_integrable M A f" "set_integrable M A g" |
210 assumes "set_integrable M A f" "set_integrable M A g" |
194 "\<And>x. x \<in> A \<Longrightarrow> f x \<le> g x" |
211 "\<And>x. x \<in> A \<Longrightarrow> f x \<le> g x" |
195 shows "(LINT x:A|M. f x) \<le> (LINT x:A|M. g x)" |
212 shows "(LINT x:A|M. f x) \<le> (LINT x:A|M. g x)" |
196 using assms by (auto intro: integral_mono split: split_indicator) |
213 using assms unfolding set_integrable_def set_lebesgue_integral_def |
|
214 by (auto intro: integral_mono split: split_indicator) |
197 |
215 |
198 lemma set_integral_mono_AE: |
216 lemma set_integral_mono_AE: |
199 fixes f g :: "_ \<Rightarrow> real" |
217 fixes f g :: "_ \<Rightarrow> real" |
200 assumes "set_integrable M A f" "set_integrable M A g" |
218 assumes "set_integrable M A f" "set_integrable M A g" |
201 "AE x \<in> A in M. f x \<le> g x" |
219 "AE x \<in> A in M. f x \<le> g x" |
202 shows "(LINT x:A|M. f x) \<le> (LINT x:A|M. g x)" |
220 shows "(LINT x:A|M. f x) \<le> (LINT x:A|M. g x)" |
203 using assms by (auto intro: integral_mono_AE split: split_indicator) |
221 using assms unfolding set_integrable_def set_lebesgue_integral_def |
|
222 by (auto intro: integral_mono_AE split: split_indicator) |
204 |
223 |
205 lemma set_integrable_abs: "set_integrable M A f \<Longrightarrow> set_integrable M A (\<lambda>x. \<bar>f x\<bar> :: real)" |
224 lemma set_integrable_abs: "set_integrable M A f \<Longrightarrow> set_integrable M A (\<lambda>x. \<bar>f x\<bar> :: real)" |
206 using integrable_abs[of M "\<lambda>x. f x * indicator A x"] by (simp add: abs_mult ac_simps) |
225 using integrable_abs[of M "\<lambda>x. f x * indicator A x"]unfolding set_integrable_def by (simp add: abs_mult ac_simps) |
207 |
226 |
208 lemma set_integrable_abs_iff: |
227 lemma set_integrable_abs_iff: |
209 fixes f :: "_ \<Rightarrow> real" |
228 fixes f :: "_ \<Rightarrow> real" |
210 shows "set_borel_measurable M A f \<Longrightarrow> set_integrable M A (\<lambda>x. \<bar>f x\<bar>) = set_integrable M A f" |
229 shows "set_borel_measurable M A f \<Longrightarrow> set_integrable M A (\<lambda>x. \<bar>f x\<bar>) = set_integrable M A f" |
|
230 unfolding set_integrable_def set_borel_measurable_def |
211 by (subst (2) integrable_abs_iff[symmetric]) (simp_all add: abs_mult ac_simps) |
231 by (subst (2) integrable_abs_iff[symmetric]) (simp_all add: abs_mult ac_simps) |
212 |
232 |
213 lemma set_integrable_abs_iff': |
233 lemma set_integrable_abs_iff': |
214 fixes f :: "_ \<Rightarrow> real" |
234 fixes f :: "_ \<Rightarrow> real" |
215 shows "f \<in> borel_measurable M \<Longrightarrow> A \<in> sets M \<Longrightarrow> |
235 shows "f \<in> borel_measurable M \<Longrightarrow> A \<in> sets M \<Longrightarrow> |
216 set_integrable M A (\<lambda>x. \<bar>f x\<bar>) = set_integrable M A f" |
236 set_integrable M A (\<lambda>x. \<bar>f x\<bar>) = set_integrable M A f" |
217 by (intro set_integrable_abs_iff) auto |
237 by (simp add: set_borel_measurable_def set_integrable_abs_iff) |
218 |
238 |
219 lemma set_integrable_discrete_difference: |
239 lemma set_integrable_discrete_difference: |
220 fixes f :: "'a \<Rightarrow> 'b::{banach, second_countable_topology}" |
240 fixes f :: "'a \<Rightarrow> 'b::{banach, second_countable_topology}" |
221 assumes "countable X" |
241 assumes "countable X" |
222 assumes diff: "(A - B) \<union> (B - A) \<subseteq> X" |
242 assumes diff: "(A - B) \<union> (B - A) \<subseteq> X" |
223 assumes "\<And>x. x \<in> X \<Longrightarrow> emeasure M {x} = 0" "\<And>x. x \<in> X \<Longrightarrow> {x} \<in> sets M" |
243 assumes "\<And>x. x \<in> X \<Longrightarrow> emeasure M {x} = 0" "\<And>x. x \<in> X \<Longrightarrow> {x} \<in> sets M" |
224 shows "set_integrable M A f \<longleftrightarrow> set_integrable M B f" |
244 shows "set_integrable M A f \<longleftrightarrow> set_integrable M B f" |
|
245 unfolding set_integrable_def |
225 proof (rule integrable_discrete_difference[where X=X]) |
246 proof (rule integrable_discrete_difference[where X=X]) |
226 show "\<And>x. x \<in> space M \<Longrightarrow> x \<notin> X \<Longrightarrow> indicator A x *\<^sub>R f x = indicator B x *\<^sub>R f x" |
247 show "\<And>x. x \<in> space M \<Longrightarrow> x \<notin> X \<Longrightarrow> indicator A x *\<^sub>R f x = indicator B x *\<^sub>R f x" |
227 using diff by (auto split: split_indicator) |
248 using diff by (auto split: split_indicator) |
228 qed fact+ |
249 qed fact+ |
229 |
250 |
244 and [measurable]: "A \<in> sets M" "B \<in> sets M" |
266 and [measurable]: "A \<in> sets M" "B \<in> sets M" |
245 shows "set_integrable M (A \<union> B) f" |
267 shows "set_integrable M (A \<union> B) f" |
246 proof - |
268 proof - |
247 have "set_integrable M (A - B) f" |
269 have "set_integrable M (A - B) f" |
248 using f_A by (rule set_integrable_subset) auto |
270 using f_A by (rule set_integrable_subset) auto |
249 from Bochner_Integration.integrable_add[OF this f_B] show ?thesis |
271 with f_B have "integrable M (\<lambda>x. indicator (A - B) x *\<^sub>R f x + indicator B x *\<^sub>R f x)" |
|
272 unfolding set_integrable_def using integrable_add by blast |
|
273 then show ?thesis |
|
274 unfolding set_integrable_def |
250 by (rule integrable_cong[THEN iffD1, rotated 2]) (auto split: split_indicator) |
275 by (rule integrable_cong[THEN iffD1, rotated 2]) (auto split: split_indicator) |
251 qed |
276 qed |
|
277 |
|
278 lemma set_integrable_empty [simp]: "set_integrable M {} f" |
|
279 by (auto simp: set_integrable_def) |
252 |
280 |
253 lemma set_integrable_UN: |
281 lemma set_integrable_UN: |
254 fixes f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
282 fixes f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
255 assumes "finite I" "\<And>i. i\<in>I \<Longrightarrow> set_integrable M (A i) f" |
283 assumes "finite I" "\<And>i. i\<in>I \<Longrightarrow> set_integrable M (A i) f" |
256 "\<And>i. i\<in>I \<Longrightarrow> A i \<in> sets M" |
284 "\<And>i. i\<in>I \<Longrightarrow> A i \<in> sets M" |
257 shows "set_integrable M (\<Union>i\<in>I. A i) f" |
285 shows "set_integrable M (\<Union>i\<in>I. A i) f" |
258 using assms by (induct I) (auto intro!: set_integrable_Un) |
286 using assms |
|
287 by (induct I) (auto simp: set_integrable_Un sets.finite_UN) |
259 |
288 |
260 lemma set_integral_Un: |
289 lemma set_integral_Un: |
261 fixes f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
290 fixes f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
262 assumes "A \<inter> B = {}" |
291 assumes "A \<inter> B = {}" |
263 and "set_integrable M A f" |
292 and "set_integrable M A f" |
264 and "set_integrable M B f" |
293 and "set_integrable M B f" |
265 shows "LINT x:A\<union>B|M. f x = (LINT x:A|M. f x) + (LINT x:B|M. f x)" |
294 shows "LINT x:A\<union>B|M. f x = (LINT x:A|M. f x) + (LINT x:B|M. f x)" |
266 by (auto simp add: indicator_union_arith indicator_inter_arith[symmetric] |
295 using assms |
267 scaleR_add_left assms) |
296 unfolding set_integrable_def set_lebesgue_integral_def |
|
297 by (auto simp add: indicator_union_arith indicator_inter_arith[symmetric] scaleR_add_left) |
268 |
298 |
269 lemma set_integral_cong_set: |
299 lemma set_integral_cong_set: |
270 fixes f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
300 fixes f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
271 assumes [measurable]: "set_borel_measurable M A f" "set_borel_measurable M B f" |
301 assumes "set_borel_measurable M A f" "set_borel_measurable M B f" |
272 and ae: "AE x in M. x \<in> A \<longleftrightarrow> x \<in> B" |
302 and ae: "AE x in M. x \<in> A \<longleftrightarrow> x \<in> B" |
273 shows "LINT x:B|M. f x = LINT x:A|M. f x" |
303 shows "LINT x:B|M. f x = LINT x:A|M. f x" |
|
304 unfolding set_lebesgue_integral_def |
274 proof (rule integral_cong_AE) |
305 proof (rule integral_cong_AE) |
275 show "AE x in M. indicator B x *\<^sub>R f x = indicator A x *\<^sub>R f x" |
306 show "AE x in M. indicator B x *\<^sub>R f x = indicator A x *\<^sub>R f x" |
276 using ae by (auto simp: subset_eq split: split_indicator) |
307 using ae by (auto simp: subset_eq split: split_indicator) |
277 qed fact+ |
308 qed (use assms in \<open>auto simp: set_borel_measurable_def\<close>) |
278 |
309 |
279 lemma set_borel_measurable_subset: |
310 lemma set_borel_measurable_subset: |
280 fixes f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
311 fixes f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
281 assumes [measurable]: "set_borel_measurable M A f" "B \<in> sets M" and "B \<subseteq> A" |
312 assumes [measurable]: "set_borel_measurable M A f" "B \<in> sets M" and "B \<subseteq> A" |
282 shows "set_borel_measurable M B f" |
313 shows "set_borel_measurable M B f" |
283 proof - |
314 proof - |
284 have "set_borel_measurable M B (\<lambda>x. indicator A x *\<^sub>R f x)" |
315 have "set_borel_measurable M B (\<lambda>x. indicator A x *\<^sub>R f x)" |
285 by measurable |
316 using assms unfolding set_borel_measurable_def |
286 also have "(\<lambda>x. indicator B x *\<^sub>R indicator A x *\<^sub>R f x) = (\<lambda>x. indicator B x *\<^sub>R f x)" |
317 using borel_measurable_indicator borel_measurable_scaleR by blast |
|
318 moreover have "(\<lambda>x. indicator B x *\<^sub>R indicator A x *\<^sub>R f x) = (\<lambda>x. indicator B x *\<^sub>R f x)" |
287 using \<open>B \<subseteq> A\<close> by (auto simp: fun_eq_iff split: split_indicator) |
319 using \<open>B \<subseteq> A\<close> by (auto simp: fun_eq_iff split: split_indicator) |
288 finally show ?thesis . |
320 ultimately show ?thesis |
|
321 unfolding set_borel_measurable_def by simp |
289 qed |
322 qed |
290 |
323 |
291 lemma set_integral_Un_AE: |
324 lemma set_integral_Un_AE: |
292 fixes f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
325 fixes f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}" |
293 assumes ae: "AE x in M. \<not> (x \<in> A \<and> x \<in> B)" and [measurable]: "A \<in> sets M" "B \<in> sets M" |
326 assumes ae: "AE x in M. \<not> (x \<in> A \<and> x \<in> B)" and [measurable]: "A \<in> sets M" "B \<in> sets M" |
354 done |
392 done |
355 qed auto } |
393 qed auto } |
356 then show "(\<lambda>x. indicator (\<Union>i. A i) x *\<^sub>R f x) \<in> borel_measurable M" |
394 then show "(\<lambda>x. indicator (\<Union>i. A i) x *\<^sub>R f x) \<in> borel_measurable M" |
357 apply (rule borel_measurable_LIMSEQ_real) |
395 apply (rule borel_measurable_LIMSEQ_real) |
358 apply assumption |
396 apply assumption |
359 apply (intro borel_measurable_integrable intgbl) |
397 using intgbl set_integrable_def by blast |
360 done |
|
361 qed |
398 qed |
362 |
399 |
363 (* Proof from Royden Real Analysis, p. 91. *) |
400 (* Proof from Royden Real Analysis, p. 91. *) |
364 lemma lebesgue_integral_countable_add: |
401 lemma lebesgue_integral_countable_add: |
365 fixes f :: "_ \<Rightarrow> 'a :: {banach, second_countable_topology}" |
402 fixes f :: "_ \<Rightarrow> 'a :: {banach, second_countable_topology}" |
366 assumes meas[intro]: "\<And>i::nat. A i \<in> sets M" |
403 assumes meas[intro]: "\<And>i::nat. A i \<in> sets M" |
367 and disj: "\<And>i j. i \<noteq> j \<Longrightarrow> A i \<inter> A j = {}" |
404 and disj: "\<And>i j. i \<noteq> j \<Longrightarrow> A i \<inter> A j = {}" |
368 and intgbl: "set_integrable M (\<Union>i. A i) f" |
405 and intgbl: "set_integrable M (\<Union>i. A i) f" |
369 shows "LINT x:(\<Union>i. A i)|M. f x = (\<Sum>i. (LINT x:(A i)|M. f x))" |
406 shows "LINT x:(\<Union>i. A i)|M. f x = (\<Sum>i. (LINT x:(A i)|M. f x))" |
|
407 unfolding set_lebesgue_integral_def |
370 proof (subst integral_suminf[symmetric]) |
408 proof (subst integral_suminf[symmetric]) |
371 show int_A: "\<And>i. set_integrable M (A i) f" |
409 show int_A: "integrable M (\<lambda>x. indicat_real (A i) x *\<^sub>R f x)" for i |
372 using intgbl by (rule set_integrable_subset) auto |
410 using intgbl unfolding set_integrable_def [symmetric] |
|
411 by (rule set_integrable_subset) auto |
373 { fix x assume "x \<in> space M" |
412 { fix x assume "x \<in> space M" |
374 have "(\<lambda>i. indicator (A i) x *\<^sub>R f x) sums (indicator (\<Union>i. A i) x *\<^sub>R f x)" |
413 have "(\<lambda>i. indicator (A i) x *\<^sub>R f x) sums (indicator (\<Union>i. A i) x *\<^sub>R f x)" |
375 by (intro sums_scaleR_left indicator_sums) fact } |
414 by (intro sums_scaleR_left indicator_sums) fact } |
376 note sums = this |
415 note sums = this |
377 |
416 |
378 have norm_f: "\<And>i. set_integrable M (A i) (\<lambda>x. norm (f x))" |
417 have norm_f: "\<And>i. set_integrable M (A i) (\<lambda>x. norm (f x))" |
379 using int_A[THEN integrable_norm] by auto |
418 using int_A[THEN integrable_norm] unfolding set_integrable_def by auto |
380 |
419 |
381 show "AE x in M. summable (\<lambda>i. norm (indicator (A i) x *\<^sub>R f x))" |
420 show "AE x in M. summable (\<lambda>i. norm (indicator (A i) x *\<^sub>R f x))" |
382 using disj by (intro AE_I2) (auto intro!: summable_mult2 sums_summable[OF indicator_sums]) |
421 using disj by (intro AE_I2) (auto intro!: summable_mult2 sums_summable[OF indicator_sums]) |
383 |
422 |
384 show "summable (\<lambda>i. LINT x|M. norm (indicator (A i) x *\<^sub>R f x))" |
423 show "summable (\<lambda>i. LINT x|M. norm (indicator (A i) x *\<^sub>R f x))" |
385 proof (rule summableI_nonneg_bounded) |
424 proof (rule summableI_nonneg_bounded) |
386 fix n |
425 fix n |
387 show "0 \<le> LINT x|M. norm (indicator (A n) x *\<^sub>R f x)" |
426 show "0 \<le> LINT x|M. norm (indicator (A n) x *\<^sub>R f x)" |
388 using norm_f by (auto intro!: integral_nonneg_AE) |
427 using norm_f by (auto intro!: integral_nonneg_AE) |
389 |
428 |
390 have "(\<Sum>i<n. LINT x|M. norm (indicator (A i) x *\<^sub>R f x)) = |
429 have "(\<Sum>i<n. LINT x|M. norm (indicator (A i) x *\<^sub>R f x)) = (\<Sum>i<n. LINT x:A i|M. norm (f x))" |
391 (\<Sum>i<n. set_lebesgue_integral M (A i) (\<lambda>x. norm (f x)))" |
430 by (simp add: abs_mult set_lebesgue_integral_def) |
392 by (simp add: abs_mult) |
|
393 also have "\<dots> = set_lebesgue_integral M (\<Union>i<n. A i) (\<lambda>x. norm (f x))" |
431 also have "\<dots> = set_lebesgue_integral M (\<Union>i<n. A i) (\<lambda>x. norm (f x))" |
394 using norm_f |
432 using norm_f |
395 by (subst set_integral_finite_Union) (auto simp: disjoint_family_on_def disj) |
433 by (subst set_integral_finite_Union) (auto simp: disjoint_family_on_def disj) |
396 also have "\<dots> \<le> set_lebesgue_integral M (\<Union>i. A i) (\<lambda>x. norm (f x))" |
434 also have "\<dots> \<le> set_lebesgue_integral M (\<Union>i. A i) (\<lambda>x. norm (f x))" |
397 using intgbl[THEN integrable_norm] |
435 using intgbl[unfolded set_integrable_def, THEN integrable_norm] norm_f |
398 by (intro integral_mono set_integrable_UN[of "{..<n}"] norm_f) |
436 unfolding set_lebesgue_integral_def set_integrable_def |
399 (auto split: split_indicator) |
437 apply (intro integral_mono set_integrable_UN[of "{..<n}", unfolded set_integrable_def]) |
|
438 apply (auto split: split_indicator) |
|
439 done |
400 finally show "(\<Sum>i<n. LINT x|M. norm (indicator (A i) x *\<^sub>R f x)) \<le> |
440 finally show "(\<Sum>i<n. LINT x|M. norm (indicator (A i) x *\<^sub>R f x)) \<le> |
401 set_lebesgue_integral M (\<Union>i. A i) (\<lambda>x. norm (f x))" |
441 set_lebesgue_integral M (\<Union>i. A i) (\<lambda>x. norm (f x))" |
402 by simp |
442 by simp |
403 qed |
443 qed |
404 show "set_lebesgue_integral M (UNION UNIV A) f = LINT x|M. (\<Sum>i. indicator (A i) x *\<^sub>R f x)" |
444 show "LINT x|M. indicator (UNION UNIV A) x *\<^sub>R f x = LINT x|M. (\<Sum>i. indicator (A i) x *\<^sub>R f x)" |
405 apply (rule Bochner_Integration.integral_cong[OF refl]) |
445 apply (rule Bochner_Integration.integral_cong[OF refl]) |
406 apply (subst suminf_scaleR_left[OF sums_summable[OF indicator_sums, OF disj], symmetric]) |
446 apply (subst suminf_scaleR_left[OF sums_summable[OF indicator_sums, OF disj], symmetric]) |
407 using sums_unique[OF indicator_sums[OF disj]] |
447 using sums_unique[OF indicator_sums[OF disj]] |
408 apply auto |
448 apply auto |
409 done |
449 done |