Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit d0ed2a4

Browse files
committed
chore(measure_theory/set_integral): put the definition of integrable_on into a new file (#7842)
The file `measure_theory.set_integral` is split into two: the `integrable_on` predicate is put into its own file, which does not import `measure_theory.bochner_integration` (this puts the definition of that integrability property before the definition of the actual integral). The file `measure_theory.set_integral` retains all facts about `set_integral`.
1 parent 764e878 commit d0ed2a4

File tree

2 files changed

+392
-343
lines changed

2 files changed

+392
-343
lines changed
Lines changed: 386 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,386 @@
1+
/-
2+
Copyright (c) 2021 Rémy Degenne. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Zhouhang Zhou, Yury Kudryashov
5+
-/
6+
7+
import measure_theory.l1_space
8+
import analysis.normed_space.indicator_function
9+
10+
/-! # Functions integrable on a set and at a filter
11+
12+
We define `integrable_on f s μ := integrable f (μ.restrict s)` and prove theorems like
13+
`integrable_on_union : integrable_on f (s ∪ t) μ ↔ integrable_on f s μ ∧ integrable_on f t μ`.
14+
15+
Next we define a predicate `integrable_at_filter (f : α → E) (l : filter α) (μ : measure α)`
16+
saying that `f` is integrable at some set `s ∈ l` and prove that a measurable function is integrable
17+
at `l` with respect to `μ` provided that `f` is bounded above at `l ⊓ μ.ae` and `μ` is finite
18+
at `l`.
19+
20+
-/
21+
22+
noncomputable theory
23+
open set filter topological_space measure_theory function
24+
open_locale classical topological_space interval big_operators filter ennreal measure_theory
25+
26+
variables {α β E F : Type*} [measurable_space α]
27+
28+
section piecewise
29+
30+
variables {μ : measure α} {s : set α} {f g : α → β}
31+
32+
lemma piecewise_ae_eq_restrict (hs : measurable_set s) : piecewise s f g =ᵐ[μ.restrict s] f :=
33+
begin
34+
rw [ae_restrict_eq hs],
35+
exact (piecewise_eq_on s f g).eventually_eq.filter_mono inf_le_right
36+
end
37+
38+
lemma piecewise_ae_eq_restrict_compl (hs : measurable_set s) :
39+
piecewise s f g =ᵐ[μ.restrict sᶜ] g :=
40+
begin
41+
rw [ae_restrict_eq hs.compl],
42+
exact (piecewise_eq_on_compl s f g).eventually_eq.filter_mono inf_le_right
43+
end
44+
45+
end piecewise
46+
47+
section indicator_function
48+
49+
variables [has_zero β] {μ : measure α} {s : set α} {f : α → β}
50+
51+
lemma indicator_ae_eq_restrict (hs : measurable_set s) : indicator s f =ᵐ[μ.restrict s] f :=
52+
piecewise_ae_eq_restrict hs
53+
54+
lemma indicator_ae_eq_restrict_compl (hs : measurable_set s) : indicator s f =ᵐ[μ.restrict sᶜ] 0 :=
55+
piecewise_ae_eq_restrict_compl hs
56+
57+
end indicator_function
58+
59+
section
60+
61+
variables [measurable_space β] {l l' : filter α} {f g : α → β} {μ ν : measure α}
62+
63+
/-- A function `f` is measurable at filter `l` w.r.t. a measure `μ` if it is ae-measurable
64+
w.r.t. `μ.restrict s` for some `s ∈ l`. -/
65+
def measurable_at_filter (f : α → β) (l : filter α) (μ : measure α . volume_tac) :=
66+
∃ s ∈ l, ae_measurable f (μ.restrict s)
67+
68+
@[simp] lemma measurable_at_bot {f : α → β} : measurable_at_filter f ⊥ μ :=
69+
⟨∅, mem_bot_sets, by simp⟩
70+
71+
protected lemma measurable_at_filter.eventually (h : measurable_at_filter f l μ) :
72+
∀ᶠ s in l.lift' powerset, ae_measurable f (μ.restrict s) :=
73+
(eventually_lift'_powerset' $ λ s t, ae_measurable.mono_set).2 h
74+
75+
protected lemma measurable_at_filter.filter_mono (h : measurable_at_filter f l μ) (h' : l' ≤ l) :
76+
measurable_at_filter f l' μ :=
77+
let ⟨s, hsl, hs⟩ := h in ⟨s, h' hsl, hs⟩
78+
79+
protected lemma ae_measurable.measurable_at_filter (h : ae_measurable f μ) :
80+
measurable_at_filter f l μ :=
81+
⟨univ, univ_mem_sets, by rwa measure.restrict_univ⟩
82+
83+
lemma ae_measurable.measurable_at_filter_of_mem {s} (h : ae_measurable f (μ.restrict s))
84+
(hl : s ∈ l):
85+
measurable_at_filter f l μ :=
86+
⟨s, hl, h⟩
87+
88+
protected lemma measurable.measurable_at_filter (h : measurable f) :
89+
measurable_at_filter f l μ :=
90+
h.ae_measurable.measurable_at_filter
91+
92+
end
93+
94+
namespace measure_theory
95+
96+
section normed_group
97+
98+
lemma has_finite_integral_restrict_of_bounded [normed_group E] {f : α → E} {s : set α}
99+
{μ : measure α} {C} (hs : μ s < ∞) (hf : ∀ᵐ x ∂(μ.restrict s), ∥f x∥ ≤ C) :
100+
has_finite_integral f (μ.restrict s) :=
101+
by haveI : finite_measure (μ.restrict s) := ⟨by rwa [measure.restrict_apply_univ]⟩;
102+
exact has_finite_integral_of_bounded hf
103+
104+
variables [normed_group E] [measurable_space E] {f g : α → E} {s t : set α} {μ ν : measure α}
105+
106+
/-- A function is `integrable_on` a set `s` if it is a measurable function and if the integral of
107+
its pointwise norm over `s` is less than infinity. -/
108+
def integrable_on (f : α → E) (s : set α) (μ : measure α . volume_tac) : Prop :=
109+
integrable f (μ.restrict s)
110+
111+
lemma integrable_on.integrable (h : integrable_on f s μ) :
112+
integrable f (μ.restrict s) :=
113+
h
114+
115+
@[simp] lemma integrable_on_empty : integrable_on f ∅ μ :=
116+
by simp [integrable_on, integrable_zero_measure]
117+
118+
@[simp] lemma integrable_on_univ : integrable_on f univ μ ↔ integrable f μ :=
119+
by rw [integrable_on, measure.restrict_univ]
120+
121+
lemma integrable_on_zero : integrable_on (λ _, (0:E)) s μ := integrable_zero _ _ _
122+
123+
lemma integrable_on_const {C : E} : integrable_on (λ _, C) s μ ↔ C = 0 ∨ μ s < ∞ :=
124+
integrable_const_iff.trans $ by rw [measure.restrict_apply_univ]
125+
126+
lemma integrable_on.mono (h : integrable_on f t ν) (hs : s ⊆ t) (hμ : μ ≤ ν) :
127+
integrable_on f s μ :=
128+
h.mono_measure $ measure.restrict_mono hs hμ
129+
130+
lemma integrable_on.mono_set (h : integrable_on f t μ) (hst : s ⊆ t) :
131+
integrable_on f s μ :=
132+
h.mono hst (le_refl _)
133+
134+
lemma integrable_on.mono_measure (h : integrable_on f s ν) (hμ : μ ≤ ν) :
135+
integrable_on f s μ :=
136+
h.mono (subset.refl _) hμ
137+
138+
lemma integrable_on.mono_set_ae (h : integrable_on f t μ) (hst : s ≤ᵐ[μ] t) :
139+
integrable_on f s μ :=
140+
h.integrable.mono_measure $ restrict_mono_ae hst
141+
142+
lemma integrable.integrable_on (h : integrable f μ) : integrable_on f s μ :=
143+
h.mono_measure $ measure.restrict_le_self
144+
145+
lemma integrable.integrable_on' (h : integrable f (μ.restrict s)) : integrable_on f s μ :=
146+
h
147+
148+
lemma integrable_on.restrict (h : integrable_on f s μ) (hs : measurable_set s) :
149+
integrable_on f s (μ.restrict t) :=
150+
by { rw [integrable_on, measure.restrict_restrict hs], exact h.mono_set (inter_subset_left _ _) }
151+
152+
lemma integrable_on.left_of_union (h : integrable_on f (s ∪ t) μ) : integrable_on f s μ :=
153+
h.mono_set $ subset_union_left _ _
154+
155+
lemma integrable_on.right_of_union (h : integrable_on f (s ∪ t) μ) : integrable_on f t μ :=
156+
h.mono_set $ subset_union_right _ _
157+
158+
lemma integrable_on.union (hs : integrable_on f s μ) (ht : integrable_on f t μ) :
159+
integrable_on f (s ∪ t) μ :=
160+
(hs.add_measure ht).mono_measure $ measure.restrict_union_le _ _
161+
162+
@[simp] lemma integrable_on_union :
163+
integrable_on f (s ∪ t) μ ↔ integrable_on f s μ ∧ integrable_on f t μ :=
164+
⟨λ h, ⟨h.left_of_union, h.right_of_union⟩, λ h, h.1.union h.2
165+
166+
@[simp] lemma integrable_on_finite_union {s : set β} (hs : finite s)
167+
{t : β → set α} : integrable_on f (⋃ i ∈ s, t i) μ ↔ ∀ i ∈ s, integrable_on f (t i) μ :=
168+
begin
169+
apply hs.induction_on,
170+
{ simp },
171+
{ intros a s ha hs hf, simp [hf, or_imp_distrib, forall_and_distrib] }
172+
end
173+
174+
@[simp] lemma integrable_on_finset_union {s : finset β} {t : β → set α} :
175+
integrable_on f (⋃ i ∈ s, t i) μ ↔ ∀ i ∈ s, integrable_on f (t i) μ :=
176+
integrable_on_finite_union s.finite_to_set
177+
178+
lemma integrable_on.add_measure (hμ : integrable_on f s μ) (hν : integrable_on f s ν) :
179+
integrable_on f s (μ + ν) :=
180+
by { delta integrable_on, rw measure.restrict_add, exact hμ.integrable.add_measure hν }
181+
182+
@[simp] lemma integrable_on_add_measure :
183+
integrable_on f s (μ + ν) ↔ integrable_on f s μ ∧ integrable_on f s ν :=
184+
⟨λ h, ⟨h.mono_measure (measure.le_add_right (le_refl _)),
185+
h.mono_measure (measure.le_add_left (le_refl _))⟩,
186+
λ h, h.1.add_measure h.2
187+
188+
lemma ae_measurable_indicator_iff (hs : measurable_set s) :
189+
ae_measurable f (μ.restrict s) ↔ ae_measurable (indicator s f) μ :=
190+
begin
191+
split,
192+
{ assume h,
193+
refine ⟨indicator s (h.mk f), h.measurable_mk.indicator hs, _⟩,
194+
have A : s.indicator f =ᵐ[μ.restrict s] s.indicator (ae_measurable.mk f h) :=
195+
(indicator_ae_eq_restrict hs).trans (h.ae_eq_mk.trans $ (indicator_ae_eq_restrict hs).symm),
196+
have B : s.indicator f =ᵐ[μ.restrict sᶜ] s.indicator (ae_measurable.mk f h) :=
197+
(indicator_ae_eq_restrict_compl hs).trans (indicator_ae_eq_restrict_compl hs).symm,
198+
have : s.indicator f =ᵐ[μ.restrict s + μ.restrict sᶜ] s.indicator (ae_measurable.mk f h) :=
199+
ae_add_measure_iff.2 ⟨A, B⟩,
200+
simpa only [hs, measure.restrict_add_restrict_compl] using this },
201+
{ assume h,
202+
exact (h.mono_measure measure.restrict_le_self).congr (indicator_ae_eq_restrict hs) }
203+
end
204+
205+
lemma integrable_indicator_iff (hs : measurable_set s) :
206+
integrable (indicator s f) μ ↔ integrable_on f s μ :=
207+
by simp [integrable_on, integrable, has_finite_integral, nnnorm_indicator_eq_indicator_nnnorm,
208+
ennreal.coe_indicator, lintegral_indicator _ hs, ae_measurable_indicator_iff hs]
209+
210+
lemma integrable_on.indicator (h : integrable_on f s μ) (hs : measurable_set s) :
211+
integrable (indicator s f) μ :=
212+
(integrable_indicator_iff hs).2 h
213+
214+
lemma integrable.indicator (h : integrable f μ) (hs : measurable_set s) :
215+
integrable (indicator s f) μ :=
216+
h.integrable_on.indicator hs
217+
218+
/-- We say that a function `f` is *integrable at filter* `l` if it is integrable on some
219+
set `s ∈ l`. Equivalently, it is eventually integrable on `s` in `l.lift' powerset`. -/
220+
def integrable_at_filter (f : α → E) (l : filter α) (μ : measure α . volume_tac) :=
221+
∃ s ∈ l, integrable_on f s μ
222+
223+
variables {l l' : filter α}
224+
225+
protected lemma integrable_at_filter.eventually (h : integrable_at_filter f l μ) :
226+
∀ᶠ s in l.lift' powerset, integrable_on f s μ :=
227+
by { refine (eventually_lift'_powerset' $ λ s t hst ht, _).2 h, exact ht.mono_set hst }
228+
229+
lemma integrable_at_filter.filter_mono (hl : l ≤ l') (hl' : integrable_at_filter f l' μ) :
230+
integrable_at_filter f l μ :=
231+
let ⟨s, hs, hsf⟩ := hl' in ⟨s, hl hs, hsf⟩
232+
233+
lemma integrable_at_filter.inf_of_left (hl : integrable_at_filter f l μ) :
234+
integrable_at_filter f (l ⊓ l') μ :=
235+
hl.filter_mono inf_le_left
236+
237+
lemma integrable_at_filter.inf_of_right (hl : integrable_at_filter f l μ) :
238+
integrable_at_filter f (l' ⊓ l) μ :=
239+
hl.filter_mono inf_le_right
240+
241+
@[simp] lemma integrable_at_filter.inf_ae_iff {l : filter α} :
242+
integrable_at_filter f (l ⊓ μ.ae) μ ↔ integrable_at_filter f l μ :=
243+
begin
244+
refine ⟨_, λ h, h.filter_mono inf_le_left⟩,
245+
rintros ⟨s, ⟨t, ht, u, hu, hs⟩, hf⟩,
246+
refine ⟨t, ht, _⟩,
247+
refine hf.integrable.mono_measure (λ v hv, _),
248+
simp only [measure.restrict_apply hv],
249+
refine measure_mono_ae (mem_sets_of_superset hu $ λ x hx, _),
250+
exact λ ⟨hv, ht⟩, ⟨hv, hs ⟨ht, hx⟩⟩
251+
end
252+
253+
alias integrable_at_filter.inf_ae_iff ↔ measure_theory.integrable_at_filter.of_inf_ae _
254+
255+
/-- If `μ` is a measure finite at filter `l` and `f` is a function such that its norm is bounded
256+
above at `l`, then `f` is integrable at `l`. -/
257+
lemma measure.finite_at_filter.integrable_at_filter {l : filter α} [is_measurably_generated l]
258+
(hfm : measurable_at_filter f l μ) (hμ : μ.finite_at_filter l)
259+
(hf : l.is_bounded_under (≤) (norm ∘ f)) :
260+
integrable_at_filter f l μ :=
261+
begin
262+
obtain ⟨C, hC⟩ : ∃ C, ∀ᶠ s in (l.lift' powerset), ∀ x ∈ s, ∥f x∥ ≤ C,
263+
from hf.imp (λ C hC, eventually_lift'_powerset.2 ⟨_, hC, λ t, id⟩),
264+
rcases (hfm.eventually.and (hμ.eventually.and hC)).exists_measurable_mem_of_lift'
265+
with ⟨s, hsl, hsm, hfm, hμ, hC⟩,
266+
refine ⟨s, hsl, ⟨hfm, has_finite_integral_restrict_of_bounded hμ _⟩⟩,
267+
exact C,
268+
rw [ae_restrict_eq hsm, eventually_inf_principal],
269+
exact eventually_of_forall hC
270+
end
271+
272+
lemma measure.finite_at_filter.integrable_at_filter_of_tendsto_ae
273+
{l : filter α} [is_measurably_generated l] (hfm : measurable_at_filter f l μ)
274+
(hμ : μ.finite_at_filter l) {b} (hf : tendsto f (l ⊓ μ.ae) (𝓝 b)) :
275+
integrable_at_filter f l μ :=
276+
(hμ.inf_of_left.integrable_at_filter (hfm.filter_mono inf_le_left)
277+
hf.norm.is_bounded_under_le).of_inf_ae
278+
279+
alias measure.finite_at_filter.integrable_at_filter_of_tendsto_ae ←
280+
filter.tendsto.integrable_at_filter_ae
281+
282+
lemma measure.finite_at_filter.integrable_at_filter_of_tendsto {l : filter α}
283+
[is_measurably_generated l] (hfm : measurable_at_filter f l μ) (hμ : μ.finite_at_filter l)
284+
{b} (hf : tendsto f l (𝓝 b)) :
285+
integrable_at_filter f l μ :=
286+
hμ.integrable_at_filter hfm hf.norm.is_bounded_under_le
287+
288+
alias measure.finite_at_filter.integrable_at_filter_of_tendsto ← filter.tendsto.integrable_at_filter
289+
290+
variables [borel_space E] [second_countable_topology E]
291+
292+
lemma integrable_add [opens_measurable_space E] {f g : α → E}
293+
(h : disjoint (support f) (support g)) (hf : measurable f) (hg : measurable g) :
294+
integrable (f + g) μ ↔ integrable f μ ∧ integrable g μ :=
295+
begin
296+
refine ⟨λ hfg, ⟨_, _⟩, λ h, h.1.add h.2⟩,
297+
{ rw ← indicator_add_eq_left h, exact hfg.indicator (measurable_set_support hf) },
298+
{ rw ← indicator_add_eq_right h, exact hfg.indicator (measurable_set_support hg) }
299+
end
300+
301+
end normed_group
302+
303+
end measure_theory
304+
305+
open measure_theory asymptotics metric
306+
307+
variables [measurable_space E] [normed_group E]
308+
309+
/-- If a function is integrable at `𝓝[s] x` for each point `x` of a compact set `s`, then it is
310+
integrable on `s`. -/
311+
lemma is_compact.integrable_on_of_nhds_within [topological_space α] {μ : measure α} {s : set α}
312+
(hs : is_compact s) {f : α → E} (hf : ∀ x ∈ s, integrable_at_filter f (𝓝[s] x) μ) :
313+
integrable_on f s μ :=
314+
is_compact.induction_on hs integrable_on_empty (λ s t hst ht, ht.mono_set hst)
315+
(λ s t hs ht, hs.union ht) hf
316+
317+
/-- A function which is continuous on a set `s` is almost everywhere measurable with respect to
318+
`μ.restrict s`. -/
319+
lemma continuous_on.ae_measurable [topological_space α] [opens_measurable_space α] [borel_space E]
320+
{f : α → E} {s : set α} {μ : measure α} (hf : continuous_on f s) (hs : measurable_set s) :
321+
ae_measurable f (μ.restrict s) :=
322+
begin
323+
refine ⟨indicator s f, _, (indicator_ae_eq_restrict hs).symm⟩,
324+
apply measurable_of_is_open,
325+
assume t ht,
326+
obtain ⟨u, u_open, hu⟩ : ∃ (u : set α), is_open u ∧ f ⁻¹' t ∩ s = u ∩ s :=
327+
_root_.continuous_on_iff'.1 hf t ht,
328+
rw [indicator_preimage, set.ite, hu],
329+
exact (u_open.measurable_set.inter hs).union ((measurable_zero ht.measurable_set).diff hs)
330+
end
331+
332+
lemma continuous_on.integrable_at_nhds_within
333+
[topological_space α] [opens_measurable_space α] [borel_space E]
334+
{μ : measure α} [locally_finite_measure μ] {a : α} {t : set α} {f : α → E}
335+
(hft : continuous_on f t) (ht : measurable_set t) (ha : a ∈ t) :
336+
integrable_at_filter f (𝓝[t] a) μ :=
337+
by haveI : (𝓝[t] a).is_measurably_generated := ht.nhds_within_is_measurably_generated _;
338+
exact (hft a ha).integrable_at_filter ⟨_, self_mem_nhds_within, hft.ae_measurable ht⟩
339+
(μ.finite_at_nhds_within _ _)
340+
341+
/-- A function `f` continuous on a compact set `s` is integrable on this set with respect to any
342+
locally finite measure. -/
343+
lemma continuous_on.integrable_on_compact
344+
[topological_space α] [opens_measurable_space α] [borel_space E]
345+
[t2_space α] {μ : measure α} [locally_finite_measure μ]
346+
{s : set α} (hs : is_compact s) {f : α → E} (hf : continuous_on f s) :
347+
integrable_on f s μ :=
348+
hs.integrable_on_of_nhds_within $ λ x hx, hf.integrable_at_nhds_within hs.measurable_set hx
349+
350+
/-- A continuous function `f` is integrable on any compact set with respect to any locally finite
351+
measure. -/
352+
lemma continuous.integrable_on_compact
353+
[topological_space α] [opens_measurable_space α] [t2_space α]
354+
[borel_space E] {μ : measure α} [locally_finite_measure μ] {s : set α}
355+
(hs : is_compact s) {f : α → E} (hf : continuous f) :
356+
integrable_on f s μ :=
357+
hf.continuous_on.integrable_on_compact hs
358+
359+
/-- A continuous function with compact closure of the support is integrable on the whole space. -/
360+
lemma continuous.integrable_of_compact_closure_support
361+
[topological_space α] [opens_measurable_space α] [t2_space α] [borel_space E]
362+
{μ : measure α} [locally_finite_measure μ] {f : α → E} (hf : continuous f)
363+
(hfc : is_compact (closure $ support f)) :
364+
integrable f μ :=
365+
begin
366+
rw [← indicator_eq_self.2 (@subset_closure _ _ (support f)),
367+
integrable_indicator_iff is_closed_closure.measurable_set],
368+
{ exact hf.integrable_on_compact hfc },
369+
{ apply_instance }
370+
end
371+
372+
section
373+
374+
variables {μ : measure α} {𝕜 : Type*} [is_R_or_C 𝕜] [normed_space 𝕜 E]
375+
[normed_group F] [normed_space 𝕜 F] [measurable_space F] [borel_space F]
376+
377+
namespace continuous_linear_map
378+
379+
lemma integrable_comp [opens_measurable_space E] {φ : α → E} (L : E →L[𝕜] F)
380+
(φ_int : integrable φ μ) : integrable (λ (a : α), L (φ a)) μ :=
381+
((integrable.norm φ_int).const_mul ∥L∥).mono' (L.measurable.comp_ae_measurable φ_int.ae_measurable)
382+
(eventually_of_forall $ λ a, L.le_op_norm (φ a))
383+
384+
end continuous_linear_map
385+
386+
end

0 commit comments

Comments
 (0)