Skip to content

Commit e383f9d

Browse files
committed
Resolve Conflict
1 parent f85c91c commit e383f9d

3 files changed

Lines changed: 81 additions & 102 deletions

File tree

Mathlib/MeasureTheory/Integral/RieszMarkovKakutani/Real.lean

Lines changed: 64 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ open scoped ENNReal
4343
open 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+
4653
namespace RealRMK
4754

4855
variable {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, ℝ)`,
411392
then 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
424405
linear functional on C_c(X, ℝ). -/
406+
@[simps!]
425407
noncomputable 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, ℝ)`,
443416
then they are equal. -/
444417
theorem 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.-/
454423
instance 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
458427
positive linear functional on `C_c(X, ℝ)`. -/
459428
theorem 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

468432
end RealRMK

Mathlib/Topology/ContinuousMap/CompactlySupported.lean

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,22 @@ lemma eq_toNNRealLinear_toRealPositiveLinear (Λ : C_c(α, ℝ≥0) →ₗ[ℝ
853853
ext f
854854
simp
855855

856+
@[deprecated (since := "2025-08-08")]
857+
alias toRealLinear := toRealPositiveLinear
858+
859+
@[deprecated (since := "2025-08-08")]
860+
alias toRealLinear_apply := toRealPositiveLinear_apply
861+
862+
@[deprecated map_nonneg (since := "2025-08-08")]
863+
lemma toRealLinear_nonneg (Λ : C_c(α, ℝ≥0) →ₗ[ℝ≥0] ℝ≥0) (g : C_c(α, ℝ)) (hg : 0 ≤ g) :
864+
0 ≤ toRealPositiveLinear Λ g := map_nonneg _ hg
865+
866+
@[deprecated (since := "2025-08-08")]
867+
alias eq_toRealLinear_toReal := eq_toRealPositiveLinear_toReal
868+
869+
@[deprecated (since := "2025-08-08")]
870+
alias eq_toNNRealLinear_toRealLinear := eq_toNNRealLinear_toRealPositiveLinear
871+
856872
end toRealPositiveLinear
857873

858874
end CompactlySupportedContinuousMap

Mathlib/Topology/UrysohnsLemma.lean

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ Authors: Yury Kudryashov
55
-/
66
import Mathlib.Algebra.Order.Group.Indicator
77
import Mathlib.Analysis.Normed.Affine.AddTorsor
8-
import Mathlib.Analysis.Normed.Order.Lattice
9-
import Mathlib.Analysis.NormedSpace.FunctionSeries
8+
import Mathlib.Analysis.Normed.Group.FunctionSeries
109
import Mathlib.Analysis.SpecificLimits.Basic
1110
import Mathlib.LinearAlgebra.AffineSpace.Ordered
1211
import Mathlib.Topology.ContinuousMap.Algebra

0 commit comments

Comments
 (0)