Skip to content

Commit 33d2c7a

Browse files
committed
feat(MeasureTheory): weaken assumptions from SigmaFinite to SFinite (#14638)
- Weaken TC assumptions of many lemmas from `SigmaFinite` to `SFinite`. - Drop some `MeasurableSet` assumptions.
1 parent e4e6ef5 commit 33d2c7a

File tree

5 files changed

+90
-81
lines changed

5 files changed

+90
-81
lines changed

Mathlib/Analysis/Convolution.lean

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ section Group
187187
variable [AddGroup G]
188188

189189
theorem AEStronglyMeasurable.convolution_integrand' [MeasurableAdd₂ G]
190-
[MeasurableNeg G] [SigmaFinite ν] (hf : AEStronglyMeasurable f ν)
190+
[MeasurableNeg G] [SFinite ν] (hf : AEStronglyMeasurable f ν)
191191
(hg : AEStronglyMeasurable g <| map (fun p : G × G => p.1 - p.2) (μ.prod ν)) :
192192
AEStronglyMeasurable (fun p : G × G => L (f p.2) (g (p.1 - p.2))) (μ.prod ν) :=
193193
L.aestronglyMeasurable_comp₂ hf.snd <| hg.comp_measurable measurable_sub
@@ -250,7 +250,7 @@ end
250250

251251
section Left
252252

253-
variable [MeasurableAdd₂ G] [MeasurableNeg G] [SigmaFinite μ] [IsAddRightInvariant μ]
253+
variable [MeasurableAdd₂ G] [MeasurableNeg G] [SFinite μ] [IsAddRightInvariant μ]
254254

255255
theorem AEStronglyMeasurable.convolution_integrand_snd (hf : AEStronglyMeasurable f μ)
256256
(hg : AEStronglyMeasurable g μ) (x : G) :
@@ -281,8 +281,7 @@ end Left
281281

282282
section Right
283283

284-
variable [MeasurableAdd₂ G] [MeasurableNeg G] [SigmaFinite μ] [IsAddRightInvariant μ]
285-
[SigmaFinite ν]
284+
variable [MeasurableAdd₂ G] [MeasurableNeg G] [SFinite μ] [IsAddRightInvariant μ] [SFinite ν]
286285

287286
theorem AEStronglyMeasurable.convolution_integrand (hf : AEStronglyMeasurable f ν)
288287
(hg : AEStronglyMeasurable g μ) :
@@ -376,7 +375,7 @@ integrable on the support of the integrand, and that both functions are strongly
376375
377376
This is a variant of `BddAbove.convolutionExistsAt'` in an abelian group with a left-invariant
378377
measure. This allows us to state the boundedness and measurability of `g` in a more natural way. -/
379-
theorem _root_.BddAbove.convolutionExistsAt [MeasurableAdd₂ G] [SigmaFinite μ] {x₀ : G} {s : Set G}
378+
theorem _root_.BddAbove.convolutionExistsAt [MeasurableAdd₂ G] [SFinite μ] {x₀ : G} {s : Set G}
380379
(hbg : BddAbove ((fun i => ‖g i‖) '' ((fun t => x₀ - t) ⁻¹' s))) (hs : MeasurableSet s)
381380
(h2s : (support fun t => L (f t) (g (x₀ - t))) ⊆ s) (hf : IntegrableOn f s μ)
382381
(hmg : AEStronglyMeasurable g μ) : ConvolutionExistsAt f g x₀ L μ := by
@@ -536,15 +535,12 @@ theorem convolution_mono_right_of_nonneg {f g g' : G → ℝ}
536535

537536
variable (L)
538537

539-
theorem convolution_congr [MeasurableAdd₂ G] [MeasurableNeg G] [SigmaFinite μ]
538+
theorem convolution_congr [MeasurableAdd₂ G] [MeasurableNeg G] [SFinite μ]
540539
[IsAddRightInvariant μ] (h1 : f =ᵐ[μ] f') (h2 : g =ᵐ[μ] g') : f ⋆[L, μ] g = f' ⋆[L, μ] g' := by
541540
ext x
542541
apply integral_congr_ae
543-
exact
544-
(h1.prod_mk <|
545-
h2.comp_tendsto
546-
(quasiMeasurePreserving_sub_left_of_right_invariant μ x).tendsto_ae).fun_comp
547-
fun x y => L x y
542+
exact (h1.prod_mk <| h2.comp_tendsto
543+
(quasiMeasurePreserving_sub_left_of_right_invariant μ x).tendsto_ae).fun_comp ↿fun x y ↦ L x y
548544
#align convolution_congr MeasureTheory.convolution_congr
549545

550546
theorem support_convolution_subset_swap : support (f ⋆[L, μ] g) ⊆ support g + support f := by
@@ -563,7 +559,7 @@ theorem support_convolution_subset_swap : support (f ⋆[L, μ] g) ⊆ support g
563559

564560
section
565561

566-
variable [MeasurableAdd₂ G] [MeasurableNeg G] [SigmaFinite μ] [IsAddRightInvariant μ]
562+
variable [MeasurableAdd₂ G] [MeasurableNeg G] [SFinite μ] [IsAddRightInvariant μ]
567563

568564
theorem Integrable.integrable_convolution (hf : Integrable f μ)
569565
(hg : Integrable g μ) : Integrable (f ⋆[L, μ] g) μ :=
@@ -784,7 +780,7 @@ theorem convolution_eq_right' {x₀ : G} {R : ℝ} (hf : support f ⊆ ball (0 :
784780
#align convolution_eq_right' MeasureTheory.convolution_eq_right'
785781

786782
variable [BorelSpace G] [SecondCountableTopology G]
787-
variable [IsAddLeftInvariant μ] [SigmaFinite μ]
783+
variable [IsAddLeftInvariant μ] [SFinite μ]
788784

789785
/-- Approximate `(f ⋆ g) x₀` if the support of the `f` is bounded within a ball, and `g` is near
790786
`g x₀` on a ball with the same radius around `x₀`. See `dist_convolution_le` for a special case.
@@ -912,7 +908,7 @@ variable (L₂ : F →L[𝕜] E'' →L[𝕜] F')
912908
variable (L₃ : E →L[𝕜] F'' →L[𝕜] F')
913909
variable (L₄ : E' →L[𝕜] E'' →L[𝕜] F'')
914910
variable [AddGroup G]
915-
variable [SigmaFinite μ] [SigmaFinite ν] [IsAddRightInvariant μ]
911+
variable [SFinite μ] [SFinite ν] [IsAddRightInvariant μ]
916912

917913
theorem integral_convolution [MeasurableAdd₂ G] [MeasurableNeg G] [NormedSpace ℝ E]
918914
[NormedSpace ℝ E'] [CompleteSpace E] [CompleteSpace E'] (hf : Integrable f ν)
@@ -1012,7 +1008,7 @@ theorem convolution_precompR_apply {g : G → E'' →L[𝕜] E'} (hf : LocallyIn
10121008
set_option linter.uppercaseLean3 false in
10131009
#align convolution_precompR_apply MeasureTheory.convolution_precompR_apply
10141010

1015-
variable [NormedSpace 𝕜 G] [SigmaFinite μ] [IsAddLeftInvariant μ]
1011+
variable [NormedSpace 𝕜 G] [SFinite μ] [IsAddLeftInvariant μ]
10161012

10171013
/-- Compute the total derivative of `f ⋆ g` if `g` is `C^1` with compact support and `f` is locally
10181014
integrable. To write down the total derivative as a convolution, we use
@@ -1073,7 +1069,7 @@ variable {n : ℕ∞}
10731069
variable (L : E →L[𝕜] E' →L[𝕜] F)
10741070
variable [CompleteSpace F]
10751071
variable {μ : Measure 𝕜}
1076-
variable [IsAddLeftInvariant μ] [SigmaFinite μ]
1072+
variable [IsAddLeftInvariant μ] [SFinite μ]
10771073

10781074
theorem _root_.HasCompactSupport.hasDerivAt_convolution_right (hf : LocallyIntegrable f₀ μ)
10791075
(hcg : HasCompactSupport g₀) (hg : ContDiff 𝕜 1 g₀) (x₀ : 𝕜) :
@@ -1476,9 +1472,8 @@ theorem posConvolution_eq_convolution_indicator (f : ℝ → E) (g : ℝ → E')
14761472
ContinuousLinearMap.zero_apply]
14771473
#align pos_convolution_eq_convolution_indicator MeasureTheory.posConvolution_eq_convolution_indicator
14781474

1479-
theorem integrable_posConvolution {f : ℝ → E} {g : ℝ → E'} {μ ν : Measure ℝ}
1480-
[SigmaFinite μ]
1481-
[SigmaFinite ν] [IsAddRightInvariant μ] [NoAtoms ν] (hf : IntegrableOn f (Ioi 0) ν)
1475+
theorem integrable_posConvolution {f : ℝ → E} {g : ℝ → E'} {μ ν : Measure ℝ} [SFinite μ]
1476+
[SFinite ν] [IsAddRightInvariant μ] [NoAtoms ν] (hf : IntegrableOn f (Ioi 0) ν)
14821477
(hg : IntegrableOn g (Ioi 0) μ) (L : E →L[ℝ] E' →L[ℝ] F) :
14831478
Integrable (posConvolution f g L ν) μ := by
14841479
rw [← integrable_indicator_iff (measurableSet_Ioi : MeasurableSet (Ioi (0 : ℝ)))] at hf hg
@@ -1488,9 +1483,8 @@ theorem integrable_posConvolution {f : ℝ → E} {g : ℝ → E'} {μ ν : Meas
14881483

14891484
/-- The integral over `Ioi 0` of a forward convolution of two functions is equal to the product
14901485
of their integrals over this set. (Compare `integral_convolution` for the two-sided convolution.) -/
1491-
theorem integral_posConvolution [CompleteSpace E] [CompleteSpace E']
1492-
{μ ν : Measure ℝ}
1493-
[SigmaFinite μ] [SigmaFinite ν] [IsAddRightInvariant μ] [NoAtoms ν] {f : ℝ → E} {g : ℝ → E'}
1486+
theorem integral_posConvolution [CompleteSpace E] [CompleteSpace E'] {μ ν : Measure ℝ}
1487+
[SFinite μ] [SFinite ν] [IsAddRightInvariant μ] [NoAtoms ν] {f : ℝ → E} {g : ℝ → E'}
14941488
(hf : IntegrableOn f (Ioi 0) ν) (hg : IntegrableOn g (Ioi 0) μ) (L : E →L[ℝ] E' →L[ℝ] F) :
14951489
∫ x : ℝ in Ioi 0, ∫ t : ℝ in (0)..x, L (f t) (g (x - t)) ∂ν ∂μ =
14961490
L (∫ x : ℝ in Ioi 0, f x ∂ν) (∫ x : ℝ in Ioi 0, g x ∂μ) := by

Mathlib/MeasureTheory/Constructions/Prod/Integral.lean

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ along one of the variables (using either the Lebesgue or Bochner integral) is me
6161
-/
6262

6363

64-
theorem measurableSet_integrable [SigmaFinite ν] ⦃f : α → β → E⦄
64+
theorem measurableSet_integrable [SFinite ν] ⦃f : α → β → E⦄
6565
(hf : StronglyMeasurable (uncurry f)) : MeasurableSet {x | Integrable (f x) ν} := by
6666
simp_rw [Integrable, hf.of_uncurry_left.aestronglyMeasurable, true_and_iff]
6767
exact measurableSet_lt (Measurable.lintegral_prod_right hf.ennnorm) measurable_const
@@ -74,7 +74,7 @@ variable [NormedSpace ℝ E]
7474
/-- The Bochner integral is measurable. This shows that the integrand of (the right-hand-side of)
7575
Fubini's theorem is measurable.
7676
This version has `f` in curried form. -/
77-
theorem MeasureTheory.StronglyMeasurable.integral_prod_right [SigmaFinite ν] ⦃f : α → β → E⦄
77+
theorem MeasureTheory.StronglyMeasurable.integral_prod_right [SFinite ν] ⦃f : α → β → E⦄
7878
(hf : StronglyMeasurable (uncurry f)) : StronglyMeasurable fun x => ∫ y, f x y ∂ν := by
7979
by_cases hE : CompleteSpace E; swap; · simp [integral, hE, stronglyMeasurable_const]
8080
borelize E
@@ -124,22 +124,22 @@ theorem MeasureTheory.StronglyMeasurable.integral_prod_right [SigmaFinite ν]
124124

125125
/-- The Bochner integral is measurable. This shows that the integrand of (the right-hand-side of)
126126
Fubini's theorem is measurable. -/
127-
theorem MeasureTheory.StronglyMeasurable.integral_prod_right' [SigmaFinite ν] ⦃f : α × β → E⦄
127+
theorem MeasureTheory.StronglyMeasurable.integral_prod_right' [SFinite ν] ⦃f : α × β → E⦄
128128
(hf : StronglyMeasurable f) : StronglyMeasurable fun x => ∫ y, f (x, y) ∂ν := by
129129
rw [← uncurry_curry f] at hf; exact hf.integral_prod_right
130130
#align measure_theory.strongly_measurable.integral_prod_right' MeasureTheory.StronglyMeasurable.integral_prod_right'
131131

132132
/-- The Bochner integral is measurable. This shows that the integrand of (the right-hand-side of)
133133
the symmetric version of Fubini's theorem is measurable.
134134
This version has `f` in curried form. -/
135-
theorem MeasureTheory.StronglyMeasurable.integral_prod_left [SigmaFinite μ] ⦃f : α → β → E⦄
135+
theorem MeasureTheory.StronglyMeasurable.integral_prod_left [SFinite μ] ⦃f : α → β → E⦄
136136
(hf : StronglyMeasurable (uncurry f)) : StronglyMeasurable fun y => ∫ x, f x y ∂μ :=
137137
(hf.comp_measurable measurable_swap).integral_prod_right'
138138
#align measure_theory.strongly_measurable.integral_prod_left MeasureTheory.StronglyMeasurable.integral_prod_left
139139

140140
/-- The Bochner integral is measurable. This shows that the integrand of (the right-hand-side of)
141141
the symmetric version of Fubini's theorem is measurable. -/
142-
theorem MeasureTheory.StronglyMeasurable.integral_prod_left' [SigmaFinite μ] ⦃f : α × β → E⦄
142+
theorem MeasureTheory.StronglyMeasurable.integral_prod_left' [SFinite μ] ⦃f : α × β → E⦄
143143
(hf : StronglyMeasurable f) : StronglyMeasurable fun y => ∫ x, f (x, y) ∂μ :=
144144
(hf.comp_measurable measurable_swap).integral_prod_right'
145145
#align measure_theory.strongly_measurable.integral_prod_left' MeasureTheory.StronglyMeasurable.integral_prod_left'
@@ -153,7 +153,7 @@ namespace MeasureTheory
153153

154154
namespace Measure
155155

156-
variable [SigmaFinite ν]
156+
variable [SFinite ν]
157157

158158
theorem integrable_measure_prod_mk_left {s : Set (α × β)} (hs : MeasurableSet s)
159159
(h2s : (μ.prod ν) s ≠ ∞) : Integrable (fun x => (ν (Prod.mk x ⁻¹' s)).toReal) μ := by
@@ -178,32 +178,32 @@ open MeasureTheory.Measure
178178
section
179179

180180
nonrec theorem MeasureTheory.AEStronglyMeasurable.prod_swap {γ : Type*} [TopologicalSpace γ]
181-
[SigmaFinite μ] [SigmaFinite ν] {f : β × α → γ} (hf : AEStronglyMeasurable f (ν.prod μ)) :
181+
[SFinite μ] [SFinite ν] {f : β × α → γ} (hf : AEStronglyMeasurable f (ν.prod μ)) :
182182
AEStronglyMeasurable (fun z : α × β => f z.swap) (μ.prod ν) := by
183183
rw [← prod_swap] at hf
184184
exact hf.comp_measurable measurable_swap
185185
#align measure_theory.ae_strongly_measurable.prod_swap MeasureTheory.AEStronglyMeasurable.prod_swap
186186

187-
theorem MeasureTheory.AEStronglyMeasurable.fst {γ} [TopologicalSpace γ] [SigmaFinite ν] {f : α → γ}
187+
theorem MeasureTheory.AEStronglyMeasurable.fst {γ} [TopologicalSpace γ] [SFinite ν] {f : α → γ}
188188
(hf : AEStronglyMeasurable f μ) : AEStronglyMeasurable (fun z : α × β => f z.1) (μ.prod ν) :=
189189
hf.comp_quasiMeasurePreserving quasiMeasurePreserving_fst
190190
#align measure_theory.ae_strongly_measurable.fst MeasureTheory.AEStronglyMeasurable.fst
191191

192-
theorem MeasureTheory.AEStronglyMeasurable.snd {γ} [TopologicalSpace γ] [SigmaFinite ν] {f : β → γ}
192+
theorem MeasureTheory.AEStronglyMeasurable.snd {γ} [TopologicalSpace γ] [SFinite ν] {f : β → γ}
193193
(hf : AEStronglyMeasurable f ν) : AEStronglyMeasurable (fun z : α × β => f z.2) (μ.prod ν) :=
194194
hf.comp_quasiMeasurePreserving quasiMeasurePreserving_snd
195195
#align measure_theory.ae_strongly_measurable.snd MeasureTheory.AEStronglyMeasurable.snd
196196

197197
/-- The Bochner integral is a.e.-measurable.
198198
This shows that the integrand of (the right-hand-side of) Fubini's theorem is a.e.-measurable. -/
199-
theorem MeasureTheory.AEStronglyMeasurable.integral_prod_right' [SigmaFinite ν] [NormedSpace ℝ E]
199+
theorem MeasureTheory.AEStronglyMeasurable.integral_prod_right' [SFinite ν] [NormedSpace ℝ E]
200200
⦃f : α × β → E⦄ (hf : AEStronglyMeasurable f (μ.prod ν)) :
201201
AEStronglyMeasurable (fun x => ∫ y, f (x, y) ∂ν) μ :=
202202
fun x => ∫ y, hf.mk f (x, y) ∂ν, hf.stronglyMeasurable_mk.integral_prod_right', by
203203
filter_upwards [ae_ae_of_ae_prod hf.ae_eq_mk] with _ hx using integral_congr_ae hx⟩
204204
#align measure_theory.ae_strongly_measurable.integral_prod_right' MeasureTheory.AEStronglyMeasurable.integral_prod_right'
205205

206-
theorem MeasureTheory.AEStronglyMeasurable.prod_mk_left {γ : Type*} [SigmaFinite ν]
206+
theorem MeasureTheory.AEStronglyMeasurable.prod_mk_left {γ : Type*} [SFinite ν]
207207
[TopologicalSpace γ] {f : α × β → γ} (hf : AEStronglyMeasurable f (μ.prod ν)) :
208208
∀ᵐ x ∂μ, AEStronglyMeasurable (fun y => f (x, y)) ν := by
209209
filter_upwards [ae_ae_of_ae_prod hf.ae_eq_mk] with x hx
@@ -215,18 +215,18 @@ end
215215

216216
namespace MeasureTheory
217217

218-
variable [SigmaFinite ν]
218+
variable [SFinite ν]
219219

220220
/-! ### Integrability on a product -/
221221

222222
section
223223

224-
theorem integrable_swap_iff [SigmaFinite μ] {f : α × β → E} :
224+
theorem integrable_swap_iff [SFinite μ] {f : α × β → E} :
225225
Integrable (f ∘ Prod.swap) (ν.prod μ) ↔ Integrable f (μ.prod ν) :=
226226
measurePreserving_swap.integrable_comp_emb MeasurableEquiv.prodComm.measurableEmbedding
227227
#align measure_theory.integrable_swap_iff MeasureTheory.integrable_swap_iff
228228

229-
theorem Integrable.swap [SigmaFinite μ] ⦃f : α × β → E⦄ (hf : Integrable f (μ.prod ν)) :
229+
theorem Integrable.swap [SFinite μ] ⦃f : α × β → E⦄ (hf : Integrable f (μ.prod ν)) :
230230
Integrable (f ∘ Prod.swap) (ν.prod μ) :=
231231
integrable_swap_iff.2 hf
232232
#align measure_theory.integrable.swap MeasureTheory.Integrable.swap
@@ -277,20 +277,20 @@ theorem integrable_prod_iff ⦃f : α × β → E⦄ (h1f : AEStronglyMeasurable
277277

278278
/-- A binary function is integrable if the function `x ↦ f (x, y)` is integrable for almost every
279279
`y` and the function `y ↦ ∫ ‖f (x, y)‖ dx` is integrable. -/
280-
theorem integrable_prod_iff' [SigmaFinite μ] ⦃f : α × β → E⦄
280+
theorem integrable_prod_iff' [SFinite μ] ⦃f : α × β → E⦄
281281
(h1f : AEStronglyMeasurable f (μ.prod ν)) :
282282
Integrable f (μ.prod ν) ↔
283283
(∀ᵐ y ∂ν, Integrable (fun x => f (x, y)) μ) ∧ Integrable (fun y => ∫ x, ‖f (x, y)‖ ∂μ) ν := by
284284
convert integrable_prod_iff h1f.prod_swap using 1
285285
rw [funext fun _ => Function.comp_apply.symm, integrable_swap_iff]
286286
#align measure_theory.integrable_prod_iff' MeasureTheory.integrable_prod_iff'
287287

288-
theorem Integrable.prod_left_ae [SigmaFinite μ] ⦃f : α × β → E⦄ (hf : Integrable f (μ.prod ν)) :
288+
theorem Integrable.prod_left_ae [SFinite μ] ⦃f : α × β → E⦄ (hf : Integrable f (μ.prod ν)) :
289289
∀ᵐ y ∂ν, Integrable (fun x => f (x, y)) μ :=
290290
((integrable_prod_iff' hf.aestronglyMeasurable).mp hf).1
291291
#align measure_theory.integrable.prod_left_ae MeasureTheory.Integrable.prod_left_ae
292292

293-
theorem Integrable.prod_right_ae [SigmaFinite μ] ⦃f : α × β → E⦄ (hf : Integrable f (μ.prod ν)) :
293+
theorem Integrable.prod_right_ae [SFinite μ] ⦃f : α × β → E⦄ (hf : Integrable f (μ.prod ν)) :
294294
∀ᵐ x ∂μ, Integrable (fun y => f (x, y)) ν :=
295295
hf.swap.prod_left_ae
296296
#align measure_theory.integrable.prod_right_ae MeasureTheory.Integrable.prod_right_ae
@@ -300,7 +300,7 @@ theorem Integrable.integral_norm_prod_left ⦃f : α × β → E⦄ (hf : Integr
300300
((integrable_prod_iff hf.aestronglyMeasurable).mp hf).2
301301
#align measure_theory.integrable.integral_norm_prod_left MeasureTheory.Integrable.integral_norm_prod_left
302302

303-
theorem Integrable.integral_norm_prod_right [SigmaFinite μ] ⦃f : α × β → E⦄
303+
theorem Integrable.integral_norm_prod_right [SFinite μ] ⦃f : α × β → E⦄
304304
(hf : Integrable f (μ.prod ν)) : Integrable (fun y => ∫ x, ‖f (x, y)‖ ∂μ) ν :=
305305
hf.swap.integral_norm_prod_left
306306
#align measure_theory.integrable.integral_norm_prod_right MeasureTheory.Integrable.integral_norm_prod_right
@@ -332,14 +332,14 @@ theorem Integrable.integral_prod_left ⦃f : α × β → E⦄ (hf : Integrable
332332
eventually_of_forall fun y => (norm_nonneg (f (x, y)) : _)).symm
333333
#align measure_theory.integrable.integral_prod_left MeasureTheory.Integrable.integral_prod_left
334334

335-
theorem Integrable.integral_prod_right [SigmaFinite μ] ⦃f : α × β → E⦄
335+
theorem Integrable.integral_prod_right [SFinite μ] ⦃f : α × β → E⦄
336336
(hf : Integrable f (μ.prod ν)) : Integrable (fun y => ∫ x, f (x, y) ∂μ) ν :=
337337
hf.swap.integral_prod_left
338338
#align measure_theory.integrable.integral_prod_right MeasureTheory.Integrable.integral_prod_right
339339

340340
/-! ### The Bochner integral on a product -/
341341

342-
variable [SigmaFinite μ]
342+
variable [SFinite μ]
343343

344344
theorem integral_prod_swap (f : α × β → E) :
345345
∫ z, f z.swap ∂ν.prod μ = ∫ z, f z ∂μ.prod ν :=

0 commit comments

Comments
 (0)