@@ -43,6 +43,13 @@ open scoped ENNReal
4343open CompactlySupported CompactlySupportedContinuousMap Filter Function Set Topology
4444 TopologicalSpace MeasureTheory
4545
46+ /-- Compactly supported continuous functions are integrable. -/
47+ lemma CompactlySupportedContinuousMap.integrable {X E : Type *} [MeasurableSpace X]
48+ [TopologicalSpace X] [NormedAddCommGroup E] (f : C_c(X, E))
49+ {μ : Measure X} [OpensMeasurableSpace X] [IsFiniteMeasureOnCompacts μ] :
50+ Integrable f μ :=
51+ f.1 .2 .integrable_of_hasCompactSupport f.2
52+
4653namespace RealRMK
4754
4855variable {X : Type *} [TopologicalSpace X] [T2Space X] [LocallyCompactSpace X] [MeasurableSpace X]
@@ -62,7 +69,7 @@ lemma le_rieszMeasure_tsupport_subset {f : C_c(X, ℝ)} (hf : ∀ (x : X), 0 ≤
6269 have := Content.measure_eq_content_of_regular (rieszContent (toNNRealLinear Λ))
6370 (contentRegular_rieszContent (toNNRealLinear Λ)) (⟨tsupport f, f.hasCompactSupport⟩)
6471 rw [← Compacts.coe_mk (tsupport f) f.hasCompactSupport, rieszMeasure, this, rieszContent,
65- ENNReal.ofReal_eq_coe_nnreal (map_nonneg Λ fun x ↦ (hf x).1 ), Content.mk_apply,
72+ ENNReal.ofReal_eq_coe_nnreal (Λ.map_nonneg fun x ↦ (hf x).1 ), Content.mk_apply,
6673 ENNReal.coe_le_coe]
6774 apply le_iff_forall_pos_le_add.mpr
6875 intro _ hε
@@ -83,7 +90,7 @@ lemma rieszMeasure_le_of_eq_one {f : C_c(X, ℝ)} (hf : ∀ x, 0 ≤ f x) {K : S
8390 apply ENNReal.coe_le_iff.mpr
8491 intro p hp
8592 rw [← ENNReal.ofReal_coe_nnreal,
86- ENNReal.ofReal_eq_ofReal_iff (map_nonneg Λ hf) NNReal.zero_le_coe] at hp
93+ ENNReal.ofReal_eq_ofReal_iff (Λ.map_nonneg hf) NNReal.zero_le_coe] at hp
8794 apply csInf_le'
8895 rw [Set.mem_image]
8996 use f.nnrealPart
@@ -279,7 +286,7 @@ private lemma integral_riesz_aux (f : C_c(X, ℝ)) : Λ f ≤ ∫ x, f x ∂(rie
279286 rw [← map_sum Λ g _]
280287 have h x : 0 ≤ (∑ n, g n) x := by simpa using Fintype.sum_nonneg fun n ↦ (hg.2 .2 .1 n x).1
281288 apply ENNReal.toReal_le_of_le_ofReal
282- · exact map_nonneg Λ (fun x ↦ h x)
289+ · exact Λ.map_nonneg (fun x ↦ h x)
283290 · have h' x (hx : x ∈ K) : (∑ n, g n) x = 1 := by simp [hg.2 .1 hx]
284291 refine rieszMeasure_le_of_eq_one Λ h f.2 h'
285292 · -- Rearrange the sums
@@ -335,77 +342,51 @@ theorem integral_rieszMeasure (f : C_c(X, ℝ)) : ∫ x, f x ∂(rieszMeasure Λ
335342 · calc
336343 _ = - ∫ x, (-f) x ∂(rieszMeasure Λ) := by simpa using integral_neg' (-f)
337344 _ ≤ - Λ (-f) := neg_le_neg (integral_riesz_aux Λ (-f))
338- _ = Λ (- -f) := Eq.symm (LinearMap.map_neg Λ.toLinearMap (- f))
339- _ = _ := by rw [neg_neg]
345+ _ = _ := by simp
340346 -- prove the inequality for `f`
341347 · exact integral_riesz_aux Λ f
342348
343- lemma compare_measure_of_compact_sets {μ ν : Measure X} [Measure.OuterRegular ν]
344- [MeasureTheory.IsFiniteMeasureOnCompacts ν] [MeasureTheory.IsFiniteMeasureOnCompacts μ]
345- (hμν : ∀ (f : C_c(X, ℝ)), ∫ (x : X), f x ∂μ = ∫ (x : X), f x ∂ν) :
346- ∀ K, IsCompact K → μ K ≤ ν K := by
347- intro K hK
348- apply ENNReal.le_of_forall_pos_le_add
349- intro ε hε hν
350- have lem1 : μ K ≠ ⊤ := by
351- rw [← lt_top_iff_ne_top]
352- exact MeasureTheory.IsFiniteMeasureOnCompacts.lt_top_of_isCompact hK
353- have lem2 : ν K ≠ ⊤ := by rw [← lt_top_iff_ne_top]; exact hν
354- rw [← ENNReal.coe_toNNReal lem1, ← ENNReal.coe_toNNReal lem2,
355- ← ENNReal.coe_add, ENNReal.coe_le_coe, ← NNReal.coe_le_coe,
356- NNReal.coe_add, ← ENNReal.toReal, ← ENNReal.toReal]
357- have hV : ∃ V ⊇ K, IsOpen V ∧ ν V ≤ ν K + ε := by
349+ -- Note: the assumption `IsFiniteMeasureOnCompacts μ` cannot be removed. For example, if
350+ -- `μ` is infinite on any nonempty set and `ν = 0`, then the hypothese are satisfied.
351+ lemma compare_measure_of_compact_sets {μ ν : Measure X} [ν.OuterRegular]
352+ [IsFiniteMeasureOnCompacts ν] [IsFiniteMeasureOnCompacts μ]
353+ (hμν : ∀ (f : C_c(X, ℝ)), ∫ (x : X), f x ∂μ ≤ ∫ (x : X), f x ∂ν)
354+ ⦃K : Set X⦄ (hK : IsCompact K) : μ K ≤ ν K := by
355+ refine ENNReal.le_of_forall_pos_le_add fun ε hε hν ↦ ?_
356+ have hνK : ν K ≠ ⊤ := hν.ne
357+ have hμK : μ K ≠ ⊤ := hK.measure_lt_top.ne
358+ obtain ⟨V, pV1, pV2, pV3⟩ : ∃ V ⊇ K, IsOpen V ∧ ν V ≤ ν K + ε := by
358359 exact Set.exists_isOpen_le_add K ν (ne_of_gt (ENNReal.coe_lt_coe.mpr hε))
359- rcases hV with ⟨V, pV1, pV2, pV3⟩
360- have VltTop : ν V < ⊤ := by
361- apply lt_of_le_of_lt
362- · exact pV3
363- · rw [WithTop.add_lt_top]; constructor
364- · exact hν
365- · exact ENNReal.coe_lt_top
366- have hf : ∃ f : C_c(X, ℝ), Set.EqOn (⇑f) 1 K ∧ tsupport ⇑f ⊆ V
367- ∧ ∀ (x : X), f x ∈ Set.Icc 0 1 := by
368- rcases exists_continuous_one_of_compact_subset_open hK pV2 pV1 with ⟨f, hf1, hf2, hf3⟩
369- use ⟨f, hasCompactSupport_def.mpr hf2⟩
370- exact ⟨hf1, hf3⟩
371- rcases hf with ⟨f, pf1, pf2, pf3⟩
360+ suffices (μ K).toReal ≤ (ν K).toReal + ε by
361+ rw [← ENNReal.toReal_le_toReal, ENNReal.toReal_add, ENNReal.coe_toReal]
362+ all_goals finiteness
363+ have VltTop : ν V < ⊤ := pV3.trans_lt <| by finiteness
364+ obtain ⟨f, pf1, pf2, pf3⟩ :
365+ ∃ f : C_c(X, ℝ), Set.EqOn (⇑f) 1 K ∧ tsupport ⇑f ⊆ V ∧ ∀ (x : X), f x ∈ Set.Icc 0 1 := by
366+ obtain ⟨f, hf1, hf2, hf3⟩ := exists_continuous_one_of_compact_subset_open hK pV2 pV1
367+ exact ⟨⟨f, hasCompactSupport_def.mpr hf2⟩, hf1, hf3⟩
368+ have hfV (x : X) : f x ≤ V.indicator 1 x := by
369+ by_cases hx : x ∈ tsupport f
370+ · simp [(pf2 hx), (pf3 x).2 ]
371+ · simp [image_eq_zero_of_notMem_tsupport hx, Set.indicator_nonneg]
372+ have hfK (x : X) : K.indicator 1 x ≤ f x := by
373+ by_cases hx : x ∈ K
374+ · simp [hx, pf1 hx]
375+ · simp [hx, (pf3 x).1 ]
372376 calc
373- (μ K).toReal
374- = μ.real K := by rw [measureReal_def]
375- _ = ∫ (x : X), K.indicator 1 x ∂μ :=
376- (integral_indicator_one (μ := μ) (IsCompact.measurableSet hK)).symm
377- _ ≤ ∫ (x : X), (f x : ℝ) ∂μ := by
378- apply integral_mono
379- · apply IntegrableOn.integrable_indicator
380- · apply ContinuousOn.integrableOn_compact hK continuousOn_const
381- · exact IsCompact.measurableSet hK
382- · exact Continuous.integrable_of_hasCompactSupport f.1 .2 f.2
383- · intro x
384- classical
385- obtain (hA | hB) := @or_not (x ∈ K)
386- · simp [hA, pf1 hA]
387- · simp [hB, (pf3 x).1 ]
388- _ = ∫ (x : X), (f x : ℝ) ∂ν := by exact hμν f
389- _ ≤ ∫ (x : X), V.indicator 1 x ∂ν := by
390- apply integral_mono
391- · exact Continuous.integrable_of_hasCompactSupport f.1 .2 f.2
392- · apply IntegrableOn.integrable_indicator
393- · apply (integrableOn_const_iff (by finiteness)).mpr
394- exact Or.inr VltTop
395- · exact IsOpen.measurableSet pV2
396- · intro x
397- classical
398- obtain (hA | hB) := @or_not (x ∈ V)
399- · simp [hA, (pf3 x).2 ]
400- · simp only [hB, not_false_eq_true, Set.indicator_of_notMem]
401- exact le_of_eq (image_eq_zero_of_notMem_tsupport (Set.notMem_subset pf2 hB))
402- _ = ν.real V := integral_indicator_one (IsOpen.measurableSet pV2)
403- _ = (ν V).toReal := by rw [measureReal_def]
404- _ ≤ (ν K).toReal + ↑ε := by
405- rw [ENNReal.toReal, ENNReal.toReal, ← NNReal.coe_add,
406- NNReal.coe_le_coe, ← ENNReal.coe_le_coe, ENNReal.coe_add,
407- ENNReal.coe_toNNReal lem2, ENNReal.coe_toNNReal (ne_of_lt VltTop)]
408- exact pV3
377+ (μ K).toReal = ∫ (x : X), K.indicator 1 x ∂μ := by
378+ rw [integral_indicator_one hK.measurableSet, measureReal_def]
379+ _ ≤ ∫ (x : X), (f x : ℝ) ∂μ := by
380+ refine integral_mono ?_ f.integrable hfK
381+ exact (continuousOn_const.integrableOn_compact hK).integrable_indicator hK.measurableSet
382+ _ ≤ ∫ (x : X), (f x : ℝ) ∂ν := hμν f
383+ _ ≤ ∫ (x : X), V.indicator 1 x ∂ν := by
384+ refine integral_mono f.integrable ?_ hfV
385+ exact IntegrableOn.integrable_indicator integrableOn_const pV2.measurableSet
386+ _ ≤ (ν K).toReal + ↑ε := by
387+ rwa [integral_indicator_one pV2.measurableSet, measureReal_def,
388+ ← ENNReal.coe_toReal, ← ENNReal.toReal_add, ENNReal.toReal_le_toReal]
389+ all_goals finiteness
409390
410391/-- If two regular measures give the same integral for every function in `C_c(X, ℝ)`,
411392then they are equal. -/
@@ -417,52 +398,35 @@ theorem eq_of_integral_eq_on_Cc {μ ν : Measure X} [Measure.Regular μ] [Measur
417398 · exact Measure.Regular.innerRegular
418399 · intro K hK
419400 apply le_antisymm
420- · exact compare_measure_of_compact_sets hμν K hK
421- · exact compare_measure_of_compact_sets (fun f ↦ (hμν f).symm) K hK
401+ · exact compare_measure_of_compact_sets ( fun f ↦ le_of_eq ( hμν f)) hK
402+ · exact compare_measure_of_compact_sets (fun f ↦ ge_of_eq (hμν f)) hK
422403
423404/-- Let μ be a measure that is finite on compact sets. Then μ induces a positive
424405linear functional on C_c(X, ℝ). -/
406+ @[simps!]
425407noncomputable def integralPositiveLinearMap (μ : Measure X) [OpensMeasurableSpace X]
426- [MeasureTheory.IsFiniteMeasureOnCompacts μ] : C_c(X, ℝ) →ₚ[ℝ] ℝ := by
427- refine PositiveLinearMap.mk₀ ?_ ?_
428- · refine ⟨⟨fun f ↦ ∫ (x : X), f x ∂μ, ?_⟩, ?_⟩
429- · intro f g
430- simp only [CompactlySupportedContinuousMap.coe_add, Pi.add_apply]
431- refine integral_add' ?_ ?_
432- · exact Continuous.integrable_of_hasCompactSupport f.1 .2 f.2
433- · exact Continuous.integrable_of_hasCompactSupport g.1 .2 g.2
434- · intro c f
435- simp only [RingHom.id_apply]
436- apply integral_const_mul_of_integrable
437- exact Continuous.integrable_of_hasCompactSupport f.1 .2 f.2
438- · intro f hf
439- simp only [LinearMap.coe_mk, AddHom.coe_mk]
440- exact integral_nonneg hf
408+ [MeasureTheory.IsFiniteMeasureOnCompacts μ] : C_c(X, ℝ) →ₚ[ℝ] ℝ :=
409+ PositiveLinearMap.mk₀
410+ { toFun f := ∫ (x : X), f x ∂μ,
411+ map_add' f g := integral_add' f.integrable g.integrable
412+ map_smul' c f := integral_smul c f }
413+ fun _ ↦ integral_nonneg
441414
442415/-- If two regular measures induce the same positive linear functional on `C_c(X, ℝ)`,
443416then they are equal. -/
444417theorem eq_of_eq_integralPositiveLinearMap {μ ν : Measure X}
445418 [Measure.Regular μ] [Measure.Regular ν]
446- (hμν : integralPositiveLinearMap μ = integralPositiveLinearMap ν) : μ = ν := by
447- apply eq_of_integral_eq_on_Cc
448- intro f
449- simp only [integralPositiveLinearMap, PositiveLinearMap.mk₀, PositiveLinearMap.mk.injEq,
450- LinearMap.mk.injEq, AddHom.mk.injEq] at hμν
451- exact congr_fun hμν f
419+ (hμν : integralPositiveLinearMap μ = integralPositiveLinearMap ν) : μ = ν :=
420+ eq_of_integral_eq_on_Cc fun f ↦ congr($hμν f)
452421
453422/-The Riesz measure induced by a positive linear functional on `C_c(X, ℝ)` is regular.-/
454423instance rieszMeasure_regular (Λ : C_c(X, ℝ) →ₚ[ℝ] ℝ) : (rieszMeasure Λ).Regular :=
455- Content.regular ( rieszContent (CompactlySupportedContinuousMap.toNNRealLinear Λ))
424+ rieszContent (CompactlySupportedContinuousMap.toNNRealLinear Λ) |>.regular
456425
457426/-- RealRMK.rieszMeasure is a surjective function. That is, every regular measure is induced by a
458427positive linear functional on `C_c(X, ℝ)`. -/
459428theorem rieszMeasure_surjective {μ : Measure X} [Measure.Regular μ] :
460- μ = rieszMeasure (integralPositiveLinearMap μ) := by
461- apply eq_of_integral_eq_on_Cc
462- intro f
463- trans (integralPositiveLinearMap μ) f
464- · simp [integralPositiveLinearMap]
465- rfl
466- · exact (integral_rieszMeasure (integralPositiveLinearMap μ) f).symm
429+ μ = rieszMeasure (integralPositiveLinearMap μ) :=
430+ eq_of_integral_eq_on_Cc fun f ↦ (integral_rieszMeasure (integralPositiveLinearMap μ) f).symm
467431
468432end RealRMK
0 commit comments