@@ -5,6 +5,8 @@ Authors: Oliver Butterley, Yoh Tanimoto
55-/
66module
77
8+ public import Mathlib.Analysis.Normed.Module.Basic
9+ public import Mathlib.MeasureTheory.Measure.Dirac
810public import Mathlib.MeasureTheory.VectorMeasure.Variation.Defs
911
1012/-!
@@ -30,7 +32,7 @@ such vector-valued measures.
3032
3133public section
3234
33- open Finset
35+ open Finset Set
3436open scoped ENNReal
3537
3638namespace MeasureTheory.VectorMeasure
@@ -39,9 +41,9 @@ variable {X V : Type*} {mX : MeasurableSpace X}
3941
4042section Basic
4143
42- variable [TopologicalSpace V] [ENormedAddCommMonoid V] [T2Space V] {μ ν : VectorMeasure X V}
44+ variable [TopologicalSpace V] [ENormedAddCommMonoid V] [T2Space V]
45+ {μ ν : VectorMeasure X V} {s : Set X}
4346
44- @[simp]
4547lemma variation_apply (μ : VectorMeasure X V) (s : Set X) :
4648 μ.variation s = preVariation (‖μ ·‖ₑ) (isSigmaSubadditiveSetFun_enorm μ) (by simp) s := rfl
4749
@@ -96,14 +98,15 @@ lemma absolutelyContinuous (μ : VectorMeasure X V) : μ ≪ᵥ μ.ennrealVariat
9698 grw [enorm_measure_le_variation, ← ennrealVariation_apply _ hsm, hs]
9799 · exact μ.not_measurable' hsm
98100
99- lemma variation_le_of_forall_enorm_le {m : Measure X} (h : ∀ E, MeasurableSet E → ‖μ E‖ₑ ≤ m E) :
100- μ.variation ≤ m := by
101- refine Measure.le_intro fun s hs _ => ?_
101+ lemma variation_apply_le_of_forall_enorm_le {m : Measure X} (hs : MeasurableSet s)
102+ (h : ∀ E, MeasurableSet E → E ⊆ s → ‖μ E‖ₑ ≤ m E) :
103+ μ.variation s ≤ m s := by
102104 simp only [variation_apply, preVariation, ennrealToMeasure_apply hs, ennrealPreVariation_apply,
103105 preVariationFun, hs, dite_true, iSup_le_iff]
104106 intro i
105107 calc
106- ∑ x ∈ i.parts, ‖μ x‖ₑ ≤ ∑ x ∈ i.parts, m x := Finset.sum_le_sum (fun s hs => h s s.property)
108+ ∑ x ∈ i.parts, ‖μ x‖ₑ ≤ ∑ x ∈ i.parts, m x := Finset.sum_le_sum
109+ (fun s hs => h s s.property (i.le hs))
107110 _ = m (i.parts.sup Subtype.val) := by
108111 rw [sup_set_eq_biUnion]
109112 refine (MeasureTheory.measure_biUnion_finset ?_ fun b _ => b.property).symm
@@ -113,6 +116,10 @@ lemma variation_le_of_forall_enorm_le {m : Measure X} (h : ∀ E, MeasurableSet
113116 rw [sup_set_eq_biUnion]
114117 exact measure_mono <| Set.iUnion₂_subset fun _ hp => Subtype.coe_le_coe.mpr (i.le hp)
115118
119+ lemma variation_le_of_forall_enorm_le {m : Measure X} (h : ∀ E, MeasurableSet E → ‖μ E‖ₑ ≤ m E) :
120+ μ.variation ≤ m :=
121+ Measure.le_intro fun _ hs _ => variation_apply_le_of_forall_enorm_le hs (fun E hE _ ↦ h E hE)
122+
116123lemma variation_add_le [ContinuousAdd V] : variation (μ + ν) ≤ variation μ + variation ν := by
117124 refine variation_le_of_forall_enorm_le fun E _ => ?_
118125 calc
@@ -129,6 +136,90 @@ lemma variation_finsetSum_le [ContinuousAdd V] {ι} (s : Finset ι) (μ : ι →
129136 simpa [Finset.sum_insert his] using
130137 variation_add_le.trans (add_le_add_right ih ((μ i).variation))
131138
139+ lemma variation_apply_eq_zero (hs : MeasurableSet s) :
140+ μ.variation s = 0 ↔ ∀ t, t ⊆ s → MeasurableSet t → μ t = 0 := by
141+ refine ⟨fun h t hts ht ↦ ?_, fun h ↦ ?_⟩
142+ · rw [← enorm_eq_zero, ← le_zero_iff, ← h]
143+ apply (enorm_measure_le_variation _ _).trans (measure_mono hts)
144+ · suffices μ.variation s ≤ (0 : Measure X) s by simpa
145+ apply variation_apply_le_of_forall_enorm_le hs (fun t ht hts ↦ ?_)
146+ simp [h t hts ht]
147+
148+ @[simp] lemma variation_eq_zero :
149+ μ.variation = 0 ↔ μ = 0 where
150+ mp h := by
151+ ext s hs
152+ apply enorm_eq_zero.1
153+ apply le_antisymm ?_ (by simp)
154+ grw [enorm_measure_le_variation]
155+ simp [h]
156+ mpr h := by simp [h]
157+
158+ lemma variation_restrict (hs : MeasurableSet s) :
159+ (μ.restrict s).variation = μ.variation.restrict s := by
160+ apply le_antisymm
161+ · apply variation_le_of_forall_enorm_le (fun t ht ↦ ?_)
162+ simp only [ht, Measure.restrict_apply, VectorMeasure.restrict_apply, hs]
163+ apply enorm_measure_le_variation
164+ · apply Measure.le_iff.2 (fun t ht ↦ ?_)
165+ simp only [ht, Measure.restrict_apply]
166+ calc μ.variation (t ∩ s)
167+ _ ≤ (μ.restrict s).variation (t ∩ s) := by
168+ apply variation_apply_le_of_forall_enorm_le (ht.inter hs) (fun u u_meas hu ↦ ?_)
169+ have : μ u = μ.restrict s u :=
170+ (VectorMeasure.restrict_eq_self _ hs u_meas (hu.trans inter_subset_right)).symm
171+ rw [this]
172+ apply enorm_measure_le_variation
173+ _ ≤ (μ.restrict s).variation t := by
174+ gcongr
175+ exact Set.inter_subset_left
176+
177+ lemma variation_restrict_le : (μ.restrict s).variation ≤ μ.variation.restrict s := by
178+ by_cases hs : MeasurableSet s
179+ · simp [variation_restrict hs]
180+ · simp [restrict_not_measurable _ hs, Measure.zero_le]
181+
182+ instance [IsFiniteMeasure μ.variation] : IsFiniteMeasure (μ.restrict s).variation :=
183+ isFiniteMeasure_of_le _ variation_restrict_le
184+
185+ variable {Y : Type *} [MeasurableSpace Y] {φ : X → Y}
186+
187+ lemma variation_map_le : (μ.map φ).variation ≤ μ.variation.map φ := by
188+ by_cases hφ : Measurable φ; swap
189+ · simp [VectorMeasure.map, hφ, Measure.zero_le]
190+ apply variation_le_of_forall_enorm_le (fun s hs ↦ ?_)
191+ simp [VectorMeasure.map_apply _ hφ hs, Measure.map_apply hφ hs, enorm_measure_le_variation]
192+
193+ instance [IsFiniteMeasure μ.variation] : IsFiniteMeasure (μ.map φ).variation :=
194+ isFiniteMeasure_of_le _ variation_map_le
195+
196+ theorem _root_.MeasurableEmbedding.variation_map (hφ : MeasurableEmbedding φ) :
197+ (μ.map φ).variation = μ.variation.map φ := by
198+ apply le_antisymm variation_map_le ?_
199+ apply Measure.le_iff.2 (fun s hs ↦ ?_)
200+ simp only [hφ.measurable, hs, Measure.map_apply]
201+ have : (μ.map φ).variation s = (μ.map φ).variation (s ∩ range φ) := by
202+ nth_rw 1 [← inter_union_diff s (range φ)]
203+ have : (μ.map φ).variation (s \ range φ) = 0 := by
204+ apply (variation_apply_eq_zero (hs.diff hφ.measurableSet_range)).2 (fun t ht t_meas ↦ ?_)
205+ have : φ ⁻¹' t = ∅ := by grind
206+ simp [map_apply, t_meas, hφ.measurable, this]
207+ rw [measure_union (by grind) (hs.diff hφ.measurableSet_range), this, add_zero]
208+ rw [this, ← hφ.comap_preimage]
209+ apply variation_le_of_forall_enorm_le (fun t ht ↦ ?_)
210+ simp only [hφ.comap_apply]
211+ apply le_trans ?_ (enorm_measure_le_variation _ _)
212+ rw [map_apply _ hφ.measurable (hφ.measurableSet_image.2 ht), preimage_image_eq _ hφ.injective]
213+
214+ @[simp] lemma variation_dirac {x : X} {v : V} :
215+ (VectorMeasure.dirac x v).variation = ‖v‖ₑ • Measure.dirac x := by
216+ apply le_antisymm
217+ · apply variation_le_of_forall_enorm_le (fun s hs ↦ ?_)
218+ by_cases hx : x ∈ s <;> simp [hs, hx]
219+ · apply Measure.le_iff.2 (fun s hs ↦ ?_)
220+ apply le_trans ?_ (enorm_measure_le_variation _ _)
221+ by_cases hx : x ∈ s <;> simp [hs, hx]
222+
132223end Basic
133224
134225section NormedAddCommGroup
@@ -147,6 +238,42 @@ lemma variation_neg : (-μ).variation = μ.variation := by simp [variation]
147238lemma variation_sub_le : (μ - ν).variation ≤ μ.variation + ν.variation := by
148239 grw [sub_eq_add_neg, variation_add_le, variation_neg]
149240
241+ private lemma variation_smul_le {𝕜 : Type *} [NormedField 𝕜] [NormedSpace 𝕜 V] {c : 𝕜} :
242+ (c • μ).variation ≤ ‖c‖₊ • μ.variation := by
243+ apply variation_le_of_forall_enorm_le (fun s hs ↦ ?_)
244+ simp only [coe_smul, Pi.smul_apply, enorm_smul, Measure.smul_apply, Measure.nnreal_smul_coe_apply]
245+ grw [enorm_measure_le_variation, enorm_eq_nnnorm]
246+
247+ lemma variation_smul {𝕜 : Type *} [NormedField 𝕜] [NormedSpace 𝕜 V] {c : 𝕜} :
248+ (c • μ).variation = ‖c‖₊ • μ.variation := by
249+ apply le_antisymm variation_smul_le ?_
250+ rcases eq_or_ne c 0 with rfl | hc
251+ · simp
252+ calc ‖c‖₊ • μ.variation
253+ _ = ‖c‖₊ • (c⁻¹ • (c • μ)).variation := by simp [smul_smul, inv_mul_cancel₀ hc]
254+ _ ≤ ‖c‖₊ • ‖c⁻¹‖₊ • (c • μ).variation := by
255+ gcongr
256+ exact variation_smul_le
257+ _ = (c • μ).variation := by
258+ simp [smul_smul, mul_inv_cancel₀ (nnnorm_ne_zero_iff.mpr hc)]
259+
260+ instance {𝕜 : Type*} [NormedField 𝕜] [NormedSpace 𝕜 V] {c : 𝕜} [IsFiniteMeasure μ.variation] :
261+ IsFiniteMeasure (c • μ).variation := by
262+ simp only [variation_smul]
263+ infer_instance
264+
265+ instance [Finite X] : IsFiniteMeasure μ.variation where
266+ measure_univ_lt_top := by
267+ classical
268+ let : Fintype X := Fintype.ofFinite X
269+ simp only [variation_apply, preVariation_apply, MeasurableSet.univ, ennrealToMeasure_apply,
270+ ennrealPreVariation_apply, preVariationFun, ↓reduceDIte, ← sup_univ_eq_ciSup]
271+ exact (Finset.sup_lt_iff (by simp)).2 (fun b hb ↦ by simp [ENNReal.sum_lt_top, enorm_lt_top])
272+
273+ instance {x : X} {v : V} : IsFiniteMeasure (VectorMeasure.dirac x v).variation := by
274+ simp only [variation_dirac, enorm_eq_nnnorm, Measure.coe_nnreal_smul]
275+ infer_instance
276+
150277end NormedAddCommGroup
151278
152279end MeasureTheory.VectorMeasure
0 commit comments