Skip to content

Commit 000e7e5

Browse files
CoolRmalBergschaf
authored andcommitted
feat(MeasureTheory): the integral of a vector-valued function against a vector measure is additive (leanprover-community#30230)
Add some basic lemmas about the integral of a vector measure. This PR specifically focuses on the additivity of the integral. Created with the help of Codex.
1 parent b6031b3 commit 000e7e5

5 files changed

Lines changed: 366 additions & 25 deletions

File tree

Mathlib/MeasureTheory/Integral/FinMeasAdditive.lean

Lines changed: 80 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,13 @@ def FinMeasAdditive {β} [AddMonoid β] {_ : MeasurableSpace α} (μ : Measure
5858

5959
namespace FinMeasAdditive
6060

61-
variable {β : Type*} [AddCommMonoid β] {T T' : Set α → β}
61+
variable {β : Type*} {T T' : Set α → β}
6262

63-
theorem zero : FinMeasAdditive μ (0 : Set α → β) := fun _ _ _ _ _ _ _ => by simp
63+
section AddMonoid
6464

65-
theorem add (hT : FinMeasAdditive μ T) (hT' : FinMeasAdditive μ T') :
66-
FinMeasAdditive μ (T + T') := by
67-
intro s t hs ht hμs hμt hst
68-
simp only [hT s t hs ht hμs hμt hst, hT' s t hs ht hμs hμt hst, Pi.add_apply]
69-
abel
65+
variable [AddMonoid β]
66+
67+
theorem zero : FinMeasAdditive μ (0 : Set α → β) := fun _ _ _ _ _ _ _ => by simp
7068

7169
theorem smul [DistribSMul 𝕜 β] (hT : FinMeasAdditive μ T) (c : 𝕜) :
7270
FinMeasAdditive μ fun s => c • T s := fun s t hs ht hμs hμt hst => by
@@ -76,6 +74,16 @@ theorem of_eq_top_imp_eq_top {μ' : Measure α} (h : ∀ s, MeasurableSet s →
7674
(hT : FinMeasAdditive μ T) : FinMeasAdditive μ' T := fun s t hs ht hμ's hμ't hst =>
7775
hT s t hs ht (mt (h s hs) hμ's) (mt (h t ht) hμ't) hst
7876

77+
theorem add_right_measure {ν : Measure α} (hT : FinMeasAdditive μ T) :
78+
FinMeasAdditive (μ + ν) T :=
79+
hT.of_eq_top_imp_eq_top fun s _ hμs =>
80+
top_unique <| hμs.symm.trans_le (Measure.le_add_right le_rfl s)
81+
82+
theorem add_left_measure {ν : Measure α} (hT : FinMeasAdditive μ T) :
83+
FinMeasAdditive (ν + μ) T :=
84+
hT.of_eq_top_imp_eq_top fun s _ hμs =>
85+
top_unique <| hμs.symm.trans_le (Measure.le_add_left le_rfl s)
86+
7987
theorem of_smul_measure {c : ℝ≥0∞} (hc_ne_top : c ≠ ∞) (hT : FinMeasAdditive (c • μ) T) :
8088
FinMeasAdditive μ T := by
8189
refine of_eq_top_imp_eq_top (fun s _ hμs => ?_) hT
@@ -102,6 +110,22 @@ theorem map_empty_eq_zero {β} [AddCancelMonoid β] {T : Set α → β} (hT : Fi
102110
nth_rw 1 [← add_zero (T ∅)] at hT
103111
exact (add_left_cancel hT).symm
104112

113+
end AddMonoid
114+
115+
section AddCommMonoid
116+
117+
variable [AddCommMonoid β]
118+
119+
theorem add (hT : FinMeasAdditive μ T) (hT' : FinMeasAdditive μ T') :
120+
FinMeasAdditive μ (T + T') := by
121+
intro s t hs ht hμs hμt hst
122+
simp only [hT s t hs ht hμs hμt hst, hT' s t hs ht hμs hμt hst, Pi.add_apply]
123+
abel
124+
125+
theorem add_measure {ν : Measure α} (hT : FinMeasAdditive μ T) (hT' : FinMeasAdditive ν T') :
126+
FinMeasAdditive (μ + ν) (T + T') :=
127+
hT.add_right_measure.add (hT'.add_left_measure)
128+
105129
theorem map_iUnion_fin_meas_set_eq_sum (T : Set α → β) (T_empty : T ∅ = 0)
106130
(h_add : FinMeasAdditive μ T) {ι} (S : ι → Set α) (sι : Finset ι)
107131
(hS_meas : ∀ i, MeasurableSet (S i)) (hSp : ∀ i ∈ sι, μ (S i) ≠ ∞)
@@ -130,6 +154,19 @@ theorem map_iUnion_fin_meas_set_eq_sum (T : Set α → β) (T_empty : T ∅ = 0)
130154
rw [← hai] at hi
131155
exact has hi
132156

157+
end AddCommMonoid
158+
159+
theorem neg [AddGroup β] (hT : FinMeasAdditive μ T) :
160+
FinMeasAdditive μ (-T) := by
161+
intro s t hs ht hμs hμt hst
162+
have h_comm : T s + T t = T t + T s := by
163+
rw [← hT s t hs ht hμs hμt hst, ← hT t s ht hs hμt hμs hst.symm, union_comm]
164+
simp_all [hT s t hs ht hμs hμt hst, neg_add_rev]
165+
166+
theorem sub [AddCommGroup β] (hT : FinMeasAdditive μ T) (hT' : FinMeasAdditive μ T') :
167+
FinMeasAdditive μ (T - T') :=
168+
sub_eq_add_neg T T' ▸ hT.add hT'.neg
169+
133170
end FinMeasAdditive
134171

135172
/-- A `FinMeasAdditive` set function whose norm on every set is less than the measure of the
@@ -160,12 +197,20 @@ theorem eq_zero {β : Type*} [NormedAddCommGroup β] {T : Set α → β} {C :
160197
T s = 0 :=
161198
eq_zero_of_measure_zero hT hs (by simp only [Measure.coe_zero, Pi.zero_apply])
162199

200+
theorem of_le (hT : DominatedFinMeasAdditive μ T C) (hC : C ≤ C') :
201+
DominatedFinMeasAdditive μ T C' :=
202+
⟨hT.1, fun s hs hμs => (hT.2 s hs hμs).trans <| mul_le_mul_of_nonneg_right hC measureReal_nonneg⟩
203+
163204
theorem add (hT : DominatedFinMeasAdditive μ T C) (hT' : DominatedFinMeasAdditive μ T' C') :
164205
DominatedFinMeasAdditive μ (T + T') (C + C') := by
165206
refine ⟨hT.1.add hT'.1, fun s hs hμs => ?_⟩
166207
rw [Pi.add_apply, add_mul]
167208
exact (norm_add_le _ _).trans (add_le_add (hT.2 s hs hμs) (hT'.2 s hs hμs))
168209

210+
theorem neg (hT : DominatedFinMeasAdditive μ T C) :
211+
DominatedFinMeasAdditive μ (-T) C :=
212+
⟨hT.1.neg, fun s hs hμs => by simpa using hT.2 s hs hμs⟩
213+
169214
theorem smul [SeminormedAddGroup 𝕜] [DistribSMul 𝕜 β] [IsBoundedSMul 𝕜 β]
170215
(hT : DominatedFinMeasAdditive μ T C) (c : 𝕜) :
171216
DominatedFinMeasAdditive μ (fun s => c • T s) (‖c‖ * C) := by
@@ -185,6 +230,26 @@ theorem of_measure_le {μ' : Measure α} (h : μ ≤ μ') (hT : DominatedFinMeas
185230
gcongr
186231
exact hμ's.ne
187232

233+
theorem add_measure {C' : ℝ} (μ ν : Measure α)
234+
(hT : DominatedFinMeasAdditive μ T C) (hT' : DominatedFinMeasAdditive ν T' C') :
235+
DominatedFinMeasAdditive (μ + ν) (T + T') (max C C') := by
236+
refine ⟨hT.1.add_measure hT'.1, fun s hs hsf ↦ ?_⟩
237+
have hμs : μ s < ∞ := (Measure.le_add_right le_rfl s).trans_lt hsf
238+
have hνs : ν s < ∞ := (Measure.le_add_left le_rfl s).trans_lt hsf
239+
rw [Pi.add_apply, measureReal_add_apply hμs.ne hνs.ne, mul_add]
240+
calc
241+
‖T s + T' s‖ ≤ ‖T s‖ + ‖T' s‖ := norm_add_le _ _
242+
_ ≤ C * μ.real s + C' * ν.real s := add_le_add (hT.2 s hs hμs) (hT'.2 s hs hνs)
243+
_ ≤ max C C' * μ.real s + max C C' * ν.real s := by
244+
gcongr
245+
· exact le_max_left C C'
246+
· exact le_max_right C C'
247+
248+
theorem sub_measure {C' : ℝ} (μ ν : Measure α)
249+
(hT : DominatedFinMeasAdditive μ T C) (hT' : DominatedFinMeasAdditive ν T' C') :
250+
DominatedFinMeasAdditive (μ + ν) (T - T') (max C C') :=
251+
sub_eq_add_neg T T' ▸ hT.add_measure μ ν hT'.neg
252+
188253
theorem add_measure_right {_ : MeasurableSpace α} (μ ν : Measure α)
189254
(hT : DominatedFinMeasAdditive μ T C) (hC : 0 ≤ C) : DominatedFinMeasAdditive (μ + ν) T C :=
190255
of_measure_le (Measure.le_add_right le_rfl) hT hC
@@ -193,6 +258,14 @@ theorem add_measure_left {_ : MeasurableSpace α} (μ ν : Measure α)
193258
(hT : DominatedFinMeasAdditive ν T C) (hC : 0 ≤ C) : DominatedFinMeasAdditive (μ + ν) T C :=
194259
of_measure_le (Measure.le_add_left le_rfl) hT hC
195260

261+
theorem finsetSum_measure {ι} {s : Finset ι} (hs : s.Nonempty) (μ : ι → Measure α)
262+
(T : ι → Set α → β) (C : ι → ℝ) (hT : ∀ i, DominatedFinMeasAdditive (μ i) (T i) (C i)) :
263+
DominatedFinMeasAdditive (∑ i ∈ s, μ i) (∑ i ∈ s, T i) (s.sup' hs C) := by
264+
induction hs using Finset.Nonempty.cons_induction with
265+
| singleton i => simp_all
266+
| @cons i s his hs' ih =>
267+
simpa [his, Finset.sup'_cons hs' C] using (hT i).add_measure (μ i) (∑ j ∈ s, μ j) ih
268+
196269
theorem of_smul_measure {c : ℝ≥0∞} (hc_ne_top : c ≠ ∞) (hT : DominatedFinMeasAdditive (c • μ) T C) :
197270
DominatedFinMeasAdditive μ T (c.toReal * C) := by
198271
have h : ∀ s, MeasurableSet s → c • μ s = ∞ → μ s = ∞ := by

Mathlib/MeasureTheory/Integral/SetToL1.lean

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -776,6 +776,10 @@ theorem setToFun_neg (hT : DominatedFinMeasAdditive μ T C) (f : α → E) :
776776
· rw [setToFun_undef hT hf, setToFun_undef hT, neg_zero]
777777
rwa [← integrable_neg_iff] at hf
778778

779+
theorem setToFun_neg' (hT : DominatedFinMeasAdditive μ T C) (f : α → E) :
780+
setToFun μ (-T) hT.neg f = -setToFun μ T hT f := by
781+
simpa using setToFun_smul_left' hT hT.neg (-1) (by simp) f
782+
779783
theorem setToFun_sub (hT : DominatedFinMeasAdditive μ T C) (hf : Integrable f μ)
780784
(hg : Integrable g μ) : setToFun μ T hT (f - g) = setToFun μ T hT f - setToFun μ T hT g := by
781785
rw [sub_eq_add_neg, sub_eq_add_neg, setToFun_add hT hf hg.neg, setToFun_neg hT g]
@@ -1090,6 +1094,43 @@ theorem setToFun_congr_measure_of_add_left {μ' : Measure α}
10901094
rw [one_smul]
10911095
exact Measure.le_add_left le_rfl
10921096

1097+
theorem setToFun_add_measure {ν : Measure α} (hTμ : DominatedFinMeasAdditive μ T C)
1098+
(hTν : DominatedFinMeasAdditive ν T' C') (hμ : Integrable f μ) (hν : Integrable f ν) :
1099+
setToFun (μ + ν) (T + T') (hTμ.add_measure μ ν hTν) f =
1100+
setToFun μ T hTμ f + setToFun ν T' hTν f :=
1101+
have hTμ_add : DominatedFinMeasAdditive (μ + ν) T (max C 0) :=
1102+
(hTμ.of_le (le_max_left C 0)).add_measure_right μ ν (le_max_right C 0)
1103+
have hTν_add : DominatedFinMeasAdditive (μ + ν) T' (max C' 0) :=
1104+
(hTν.of_le (le_max_left C' 0)).add_measure_left μ ν (le_max_right C' 0)
1105+
calc
1106+
setToFun (μ + ν) (T + T') (hTμ.add_measure μ ν hTν) f =
1107+
setToFun (μ + ν) T hTμ_add f + setToFun (μ + ν) T' hTν_add f :=
1108+
setToFun_add_left hTμ_add hTν_add f
1109+
_ = setToFun μ T hTμ f + setToFun ν T' hTν f := by
1110+
rw [setToFun_congr_measure_of_add_right hTμ_add hTμ f (hμ.add_measure hν),
1111+
setToFun_congr_measure_of_add_left hTν_add hTν f (hμ.add_measure hν)]
1112+
1113+
theorem setToFun_sub_measure {ν : Measure α} (hTμ : DominatedFinMeasAdditive μ T C)
1114+
(hTν : DominatedFinMeasAdditive ν T' C') (hμ : Integrable f μ) (hν : Integrable f ν) :
1115+
setToFun (μ + ν) (T - T') (hTμ.sub_measure μ ν hTν) f =
1116+
setToFun μ T hTμ f - setToFun ν T' hTν f := by
1117+
simp [sub_eq_add_neg, setToFun_add_measure hTμ hTν.neg hμ hν, setToFun_neg' hTν]
1118+
1119+
theorem setToFun_finsetSum_measure {ι} {s : Finset ι} (hs : s.Nonempty)
1120+
{μ : ι → Measure α} {T : ι → Set α → E →L[ℝ] F} {C : ι → ℝ}
1121+
(hTs : ∀ i, DominatedFinMeasAdditive (μ i) (T i) (C i))
1122+
(hf : ∀ i ∈ s, Integrable f (μ i)) :
1123+
setToFun (∑ i ∈ s, μ i) (∑ i ∈ s, T i)
1124+
(DominatedFinMeasAdditive.finsetSum_measure hs μ T C hTs) f =
1125+
∑ i ∈ s, setToFun (μ i) (T i) (hTs i) f := by
1126+
induction hs using Finset.Nonempty.cons_induction with
1127+
| singleton i => simp
1128+
| @cons i s his hs' ih =>
1129+
simpa [his, ih fun j hj => hf j (Finset.mem_cons_of_mem hj)] using
1130+
setToFun_add_measure (hTs i) (DominatedFinMeasAdditive.finsetSum_measure hs' μ T C hTs)
1131+
(hf i (Finset.mem_cons_self i s))
1132+
(integrable_finsetSum_measure.2 fun j hj => hf j (Finset.mem_cons_of_mem hj))
1133+
10931134
theorem setToFun_top_smul_measure (hT : DominatedFinMeasAdditive (∞ • μ) T C) (f : α → E) :
10941135
setToFun (∞ • μ) T hT f = 0 := by
10951136
refine setToFun_measure_zero' hT fun s _ hμs => ?_

Mathlib/MeasureTheory/Measure/MeasureSpace.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,7 @@ lemma apply_eq_zero_of_isEmpty [IsEmpty α] {_ : MeasurableSpace α} (μ : Measu
853853
instance instSubsingleton [IsEmpty α] {m : MeasurableSpace α} : Subsingleton (Measure α) :=
854854
fun μ ν => by ext1 s _; rw [apply_eq_zero_of_isEmpty, apply_eq_zero_of_isEmpty]⟩
855855

856+
@[nontriviality]
856857
theorem eq_zero_of_isEmpty [IsEmpty α] {_m : MeasurableSpace α} (μ : Measure α) : μ = 0 :=
857858
Subsingleton.elim μ 0
858859

Mathlib/MeasureTheory/VectorMeasure/Basic.lean

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,18 @@ instance instZero : Zero (VectorMeasure α M) :=
282282
instance instInhabited : Inhabited (VectorMeasure α M) :=
283283
0
284284

285+
@[nontriviality]
286+
lemma apply_eq_zero_of_isEmpty [IsEmpty α] (μ : VectorMeasure α M) (s : Set α) :
287+
μ s = 0 := by
288+
simp [eq_empty_of_isEmpty s]
289+
290+
instance [IsEmpty α] : Subsingleton (VectorMeasure α M) :=
291+
fun μ ν => by ext; rw [apply_eq_zero_of_isEmpty, apply_eq_zero_of_isEmpty]⟩
292+
293+
@[nontriviality]
294+
theorem eq_zero_of_isEmpty [IsEmpty α] (μ : VectorMeasure α M) : μ = 0 :=
295+
Subsingleton.elim μ 0
296+
285297
@[simp]
286298
theorem coe_zero : ⇑(0 : VectorMeasure α M) = 0 := rfl
287299

@@ -314,6 +326,10 @@ def coeFnAddMonoidHom : VectorMeasure α M →+ Set α → M where
314326
map_zero' := coe_zero
315327
map_add' := coe_add
316328

329+
@[simp]
330+
theorem coe_finsetSum {ι} (I : Finset ι) (v : ι → VectorMeasure α M) :
331+
⇑(∑ i ∈ I, v i) = ∑ i ∈ I, ⇑(v i) := map_sum coeFnAddMonoidHom v I
332+
317333
end AddCommMonoid
318334

319335
section AddCommGroup

0 commit comments

Comments
 (0)