Skip to content

Commit ee8e9d8

Browse files
committed
First
1 parent f60ef0d commit ee8e9d8

4 files changed

Lines changed: 238 additions & 4 deletions

File tree

Mathlib/MeasureTheory/Integral/RieszMarkovKakutani/NNReal.lean

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,61 @@ theorem lintegral_rieszMeasure (f : C_c(X, ℝ≥0)) : ∫⁻ (x : X), f x ∂(r
5555
exact Continuous.integrable_of_hasCompactSupport (by fun_prop)
5656
(HasCompactSupport.comp_left f.hasCompactSupport rfl)
5757

58+
/-If two regular measures give the same integral for every function in `C_c(X, ℝ≥0)`, then they
59+
are equal.-/
60+
theorem eq_of_integral_eq_on_Cc {μ ν : Measure X} [Measure.Regular μ] [Measure.Regular ν]
61+
(hμν : ∀ (f : C_c(X, ℝ≥0)), ∫ (x : X), (f x : ℝ) ∂μ = ∫ (x : X), (f x : ℝ) ∂ν) : μ = ν := by
62+
apply RealRMK.eq_of_integral_eq_on_Cc
63+
intro f
64+
calc
65+
∫ (x : X), f x ∂μ
66+
= ∫ (x : X), ↑(f x).toNNReal ∂μ - ∫ (x : X), ↑(-f x).toNNReal ∂μ := by
67+
apply integral_eq_integral_pos_part_sub_integral_neg_part
68+
exact Continuous.integrable_of_hasCompactSupport f.1.2 f.2
69+
_ = ∫ (x : X), ↑(f x).toNNReal ∂ν - ∫ (x : X), ↑(-f x).toNNReal ∂ν:= by
70+
have h1 : ∫ (x : X), ((f x).toNNReal : ℝ) ∂μ = ∫ (x : X), ((f x).toNNReal : ℝ) ∂ν := by
71+
refine hμν ⟨⟨Real.toNNReal ∘ f, ?_⟩, ?_⟩
72+
· exact continuous_real_toNNReal.comp f.1.2
73+
· exact HasCompactSupport.comp_left (g := Real.toNNReal) f.2 Real.toNNReal_zero
74+
have h2 : ∫ (x : X), ((-f x).toNNReal : ℝ) ∂μ = ∫ (x : X), ((-f x).toNNReal : ℝ) ∂ν := by
75+
refine hμν ⟨⟨Real.toNNReal ∘ (-f), ?_⟩, ?_⟩
76+
· exact continuous_real_toNNReal.comp (-f).1.2
77+
· exact HasCompactSupport.comp_left (g := Real.toNNReal) (-f).2 Real.toNNReal_zero
78+
rw [h1, h2]
79+
_ = ∫ (x : X), f x ∂ν := by
80+
symm
81+
apply integral_eq_integral_pos_part_sub_integral_neg_part
82+
exact Continuous.integrable_of_hasCompactSupport f.1.2 f.2
83+
84+
/-Let μ be a measure that is finite on compact sets. Then μ induces a linear functional on
85+
`C_c(X, ℝ≥0)`.-/
86+
noncomputable def integralLinearMap (μ : Measure X) [OpensMeasurableSpace X]
87+
[MeasureTheory.IsFiniteMeasureOnCompacts μ] :
88+
C_c(X, ℝ≥0) →ₗ[ℝ≥0] ℝ≥0 :=
89+
CompactlySupportedContinuousMap.toNNRealLinear (RealRMK.integralPositiveLinearMap μ)
90+
91+
/-If two regular measures induce the same linear functional on `C_c(X, ℝ≥0)`, then they are equal.-/
92+
theorem eq_of_eq_integralLinearMap {μ ν : Measure X} [Measure.Regular μ]
93+
[Measure.Regular ν] (hμν : integralLinearMap μ = integralLinearMap ν) : μ = ν := by
94+
apply eq_of_integral_eq_on_Cc
95+
intro f
96+
simp only [integralLinearMap, RealRMK.integralPositiveLinearMap, PositiveLinearMap.mk₀,
97+
toNNRealLinear_inj, PositiveLinearMap.mk.injEq, LinearMap.mk.injEq, AddHom.mk.injEq] at hμν
98+
simpa using congr_fun hμν (CompactlySupportedContinuousMap.toReal f)
99+
100+
/-The Riesz measure induced by a linear functional on `C_c(X, ℝ≥0)` is regular.-/
101+
instance rieszMeasure_regular (Λ : C_c(X, ℝ≥0) →ₗ[ℝ≥0] ℝ≥0) : (rieszMeasure Λ).Regular :=
102+
Content.regular (rieszContent Λ)
103+
104+
/-- NNRealRMK.rieszMeasure is a surjective function. That is, every regular measure is induced by a
105+
positive linear functional on `C_c(X, ℝ≥0)`. -/
106+
theorem rieszMeasure_surjective {μ : Measure X} [Measure.Regular μ] :
107+
μ = rieszMeasure (integralLinearMap μ) := by
108+
apply eq_of_integral_eq_on_Cc
109+
intro f
110+
trans ((integralLinearMap μ) f : ℝ)
111+
· simp [← toReal_apply]
112+
rfl
113+
· exact (integral_rieszMeasure (integralLinearMap μ) f).symm
114+
58115
end NNRealRMK

Mathlib/MeasureTheory/Integral/RieszMarkovKakutani/Real.lean

Lines changed: 126 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ Copyright (c) 2024 Yoh Tanimoto. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Yoh Tanimoto, Oliver Butterley
55
-/
6+
import Mathlib.MeasureTheory.Integral.Bochner.ContinuousLinearMap
67
import Mathlib.MeasureTheory.Integral.RieszMarkovKakutani.Basic
7-
import Mathlib.MeasureTheory.Integral.Bochner.Set
88
import Mathlib.Order.Interval.Set.Union
9-
import Mathlib.Algebra.Order.Module.PositiveLinearMap
109

1110
/-!
1211
# Riesz–Markov–Kakutani representation theorem for real-linear functionals
@@ -23,6 +22,8 @@ continuous functions have compact support.
2322
* `RealRMK.rieszMeasure`: the measure induced by a real linear positive functional.
2423
* `RealRMK.integral_rieszMeasure`: the Riesz–Markov–Kakutani representation theorem for a real
2524
linear positive functional.
25+
* `RealRMK.eq_of_integral_eq_on_Cc`: the uniqueness of the representing measure in the
26+
Riesz–Markov–Kakutani representation theorem.
2627
2728
## Implementation notes
2829
@@ -339,4 +340,127 @@ theorem integral_rieszMeasure (f : C_c(X, ℝ)) : ∫ x, f x ∂(rieszMeasure Λ
339340
-- prove the inequality for `f`
340341
· exact integral_riesz_aux Λ f
341342

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
358+
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+
exact exists_continuous_one_of_compact_subset_open hK pV2 pV1
369+
rcases hf with ⟨f, pf1, pf2, pf3⟩
370+
calc
371+
(μ K).toReal
372+
= μ.real K := by rw [measureReal_def]
373+
_ = ∫ (x : X), K.indicator 1 x ∂μ :=
374+
(integral_indicator_one (μ := μ) (IsCompact.measurableSet hK)).symm
375+
_ ≤ ∫ (x : X), (f x : ℝ) ∂μ := by
376+
apply integral_mono
377+
· apply IntegrableOn.integrable_indicator
378+
· apply ContinuousOn.integrableOn_compact hK continuousOn_const
379+
· exact IsCompact.measurableSet hK
380+
· exact Continuous.integrable_of_hasCompactSupport f.1.2 f.2
381+
· intro x
382+
classical
383+
obtain (hA | hB) := @or_not (x ∈ K)
384+
· simp [hA, pf1 hA]
385+
· simp [hB, (pf3 x).1]
386+
_ = ∫ (x : X), (f x : ℝ) ∂ν := by exact hμν f
387+
_ ≤ ∫ (x : X), V.indicator 1 x ∂ν := by
388+
apply integral_mono
389+
· exact Continuous.integrable_of_hasCompactSupport f.1.2 f.2
390+
· apply IntegrableOn.integrable_indicator
391+
· apply (integrableOn_const_iff (by finiteness)).mpr
392+
exact Or.inr VltTop
393+
· exact IsOpen.measurableSet pV2
394+
· intro x
395+
classical
396+
obtain (hA | hB) := @or_not (x ∈ V)
397+
· simp [hA, (pf3 x).2]
398+
· simp only [hB, not_false_eq_true, Set.indicator_of_notMem]
399+
exact le_of_eq (image_eq_zero_of_notMem_tsupport (Set.notMem_subset pf2 hB))
400+
_ = ν.real V := integral_indicator_one (IsOpen.measurableSet pV2)
401+
_ = (ν V).toReal := by rw [measureReal_def]
402+
_ ≤ (ν K).toReal + ↑ε := by
403+
rw [ENNReal.toReal, ENNReal.toReal, ← NNReal.coe_add,
404+
NNReal.coe_le_coe, ← ENNReal.coe_le_coe, ENNReal.coe_add,
405+
ENNReal.coe_toNNReal lem2, ENNReal.coe_toNNReal (ne_of_lt VltTop)]
406+
exact pV3
407+
408+
/-- If two regular measures give the same integral for every function in `C_c(X, ℝ)`,
409+
then they are equal. -/
410+
theorem eq_of_integral_eq_on_Cc {μ ν : Measure X} [Measure.Regular μ] [Measure.Regular ν]
411+
(hμν : ∀ (f : C_c(X, ℝ)), ∫ (x : X), f x ∂μ = ∫ (x : X), f x ∂ν) : μ = ν := by
412+
apply Measure.OuterRegular.eq_of_eq_on_isOpen
413+
apply Measure.InnerRegularWRT.eq_on_q_of_eq_on_p
414+
· exact Measure.Regular.innerRegular
415+
· exact Measure.Regular.innerRegular
416+
· intro K hK
417+
apply le_antisymm
418+
· exact compare_measure_of_compact_sets hμν K hK
419+
· exact compare_measure_of_compact_sets (fun f ↦ (hμν f).symm) K hK
420+
421+
/-- Let μ be a measure that is finite on compact sets. Then μ induces a positive
422+
linear functional on C_c(X, ℝ). -/
423+
noncomputable def integralPositiveLinearMap (μ : Measure X) [OpensMeasurableSpace X]
424+
[MeasureTheory.IsFiniteMeasureOnCompacts μ] : C_c(X, ℝ) →ₚ[ℝ] ℝ := by
425+
refine PositiveLinearMap.mk₀ ?_ ?_
426+
· refine ⟨⟨fun f ↦ ∫ (x : X), f x ∂μ, ?_⟩, ?_⟩
427+
· intro f g
428+
simp only [CompactlySupportedContinuousMap.coe_add, Pi.add_apply]
429+
refine integral_add' ?_ ?_
430+
· exact Continuous.integrable_of_hasCompactSupport f.1.2 f.2
431+
· exact Continuous.integrable_of_hasCompactSupport g.1.2 g.2
432+
· intro c f
433+
simp only [RingHom.id_apply]
434+
apply integral_const_mul_of_integrable
435+
exact Continuous.integrable_of_hasCompactSupport f.1.2 f.2
436+
· intro f hf
437+
simp only [LinearMap.coe_mk, AddHom.coe_mk]
438+
exact integral_nonneg hf
439+
440+
/-- If two regular measures induce the same positive linear functional on `C_c(X, ℝ)`,
441+
then they are equal. -/
442+
theorem eq_of_eq_integralPositiveLinearMap {μ ν : Measure X}
443+
[Measure.Regular μ] [Measure.Regular ν]
444+
(hμν : integralPositiveLinearMap μ = integralPositiveLinearMap ν) : μ = ν := by
445+
apply eq_of_integral_eq_on_Cc
446+
intro f
447+
simp only [integralPositiveLinearMap, PositiveLinearMap.mk₀, PositiveLinearMap.mk.injEq,
448+
LinearMap.mk.injEq, AddHom.mk.injEq] at hμν
449+
exact congr_fun hμν f
450+
451+
/-The Riesz measure induced by a positive linear functional on `C_c(X, ℝ)` is regular.-/
452+
instance rieszMeasure_regular (Λ : C_c(X, ℝ) →ₚ[ℝ] ℝ) : (rieszMeasure Λ).Regular :=
453+
Content.regular (rieszContent (CompactlySupportedContinuousMap.toNNRealLinear Λ))
454+
455+
/-- RealRMK.rieszMeasure is a surjective function. That is, every regular measure is induced by a
456+
positive linear functional on `C_c(X, ℝ)`. -/
457+
theorem rieszMeasure_surjective {μ : Measure X} [Measure.Regular μ] :
458+
μ = rieszMeasure (integralPositiveLinearMap μ) := by
459+
apply eq_of_integral_eq_on_Cc
460+
intro f
461+
trans (integralPositiveLinearMap μ) f
462+
· simp [integralPositiveLinearMap]
463+
rfl
464+
· exact (integral_rieszMeasure (integralPositiveLinearMap μ) f).symm
465+
342466
end RealRMK

Mathlib/MeasureTheory/Measure/Regular.lean

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,18 @@ theorem measure_eq_iSup (H : InnerRegularWRT μ p q) (hU : q U) :
216216
le_antisymm (le_of_forall_lt fun r hr => ?_) (iSup₂_le fun K hK => iSup_le fun _ => μ.mono hK)
217217
simpa only [lt_iSup_iff, exists_prop] using H hU r hr
218218

219+
theorem eq_on_q_of_eq_on_p {ν : Measure α} (hμ : μ.InnerRegularWRT p q) (hν : ν.InnerRegularWRT p q)
220+
(hμν : ∀ U, p U → μ U = ν U) : ∀ U, q U → μ U = ν U := by
221+
intro U hU
222+
rw [Measure.InnerRegularWRT.measure_eq_iSup hμ hU, Measure.InnerRegularWRT.measure_eq_iSup hν hU]
223+
apply iSup_congr
224+
intro t
225+
apply iSup_congr
226+
intro ht1
227+
apply iSup_congr
228+
intro ht2
229+
exact hμν t ht2
230+
219231
theorem exists_subset_lt_add (H : InnerRegularWRT μ p q) (h0 : p ∅) (hU : q U) (hμU : μ U ≠ ∞)
220232
(hε : ε ≠ 0) : ∃ K, K ⊆ U ∧ p K ∧ μ U < μ K + ε := by
221233
rcases eq_or_ne (μ U) 0 with h₀ | h₀
@@ -461,6 +473,19 @@ lemma measure_closure_eq_of_isCompact [R1Space α] [OuterRegular μ]
461473
intro u ku u_open
462474
exact measure_mono (hk.closure_subset_of_isOpen u_open ku)
463475

476+
/-- Outer regular measures are determined by values on open sets. -/
477+
theorem eq_of_eq_on_isOpen {ν : Measure α} [OuterRegular μ] [OuterRegular ν]
478+
(hμν : ∀ U, IsOpen U → μ U = ν U) : μ = ν := by
479+
ext s ms
480+
rw [Set.measure_eq_iInf_isOpen, Set.measure_eq_iInf_isOpen]
481+
apply iInf_congr
482+
intro t
483+
apply iInf_congr
484+
intro ht1
485+
apply iInf_congr
486+
intro ht2
487+
exact hμν t ht2
488+
464489
end OuterRegular
465490

466491
/-- If a measure `μ` admits finite spanning open sets such that the restriction of `μ` to each set

Mathlib/Topology/UrysohnsLemma.lean

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ Copyright (c) 2021 Yury Kudryashov. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Yury Kudryashov
55
-/
6-
import Mathlib.Algebra.Order.Group.Indicator
76
import Mathlib.Analysis.Normed.Affine.AddTorsor
87
import Mathlib.Analysis.NormedSpace.FunctionSeries
98
import Mathlib.Analysis.SpecificLimits.Basic
109
import Mathlib.LinearAlgebra.AffineSpace.Ordered
1110
import Mathlib.Topology.ContinuousMap.Algebra
11+
import Mathlib.Topology.ContinuousMap.CompactlySupported
1212
import Mathlib.Topology.GDelta.Basic
1313

1414
/-!
@@ -82,7 +82,7 @@ Urysohn's lemma, normal topological space, locally compact topological space
8282

8383
variable {X : Type*} [TopologicalSpace X]
8484

85-
open Set Filter TopologicalSpace Topology Filter
85+
open Set Filter TopologicalSpace Topology Filter CompactlySupported
8686
open scoped Pointwise
8787

8888
namespace Urysohns
@@ -522,6 +522,34 @@ lemma exists_tsupport_one_of_isOpen_isClosed [T2Space X] {s t : Set X}
522522
apply Urysohns.CU.lim_of_notMem_U
523523
exact notMem_compl_iff.mpr hx
524524

525+
/-- A variation of Urysohn's lemma. In a Hausdorff locally compact space, for a compact set `K`
526+
contained in an open set `V`, there exists a compactly supported continuous function `f` such that
527+
`0 ≤ f ≤ 1`, `f = 1` on K and the support of `f` is contained in `V`. -/
528+
lemma exists_continuous_one_of_compact_subset_open [T2Space X] [LocallyCompactSpace X]
529+
{K V : Set X} (hK : IsCompact K) (hV : IsOpen V) (hKV : K ⊆ V) :
530+
∃ (f : C_c(X, ℝ)), Set.EqOn (⇑f) 1 K ∧ tsupport ⇑f ⊆ V ∧ ∀ (x : X), f x ∈ Set.Icc 0 1 := by
531+
rcases exists_open_between_and_isCompact_closure hK hV hKV with ⟨U, hU1, hU2, hU3, hU4⟩
532+
rcases exists_tsupport_one_of_isOpen_isClosed hU1 hU4 (IsCompact.isClosed hK) hU2
533+
with ⟨f, hf1, hf2, hf3⟩
534+
have : IsCompact (tsupport ⇑f) := by
535+
refine IsCompact.of_isClosed_subset hU4 ?_ ?_
536+
· apply isClosed_closure
537+
· trans U
538+
· exact hf1
539+
· apply subset_closure
540+
use ⟨f, by apply hasCompactSupport_def.mpr this⟩
541+
simp only [CompactlySupportedContinuousMap.coe_mk, Set.mem_Icc]
542+
constructor <;> try constructor
543+
· intro x hx
544+
simp only [Pi.one_apply]
545+
exact hf2 hx
546+
· trans U
547+
· exact hf1
548+
· trans closure U
549+
· apply subset_closure
550+
· exact hU3
551+
· simp only [Set.mem_Icc] at hf3; intro x; exact hf3 x
552+
525553
theorem exists_continuous_nonneg_pos [RegularSpace X] [LocallyCompactSpace X] (x : X) :
526554
∃ f : C(X, ℝ), HasCompactSupport f ∧ 0 ≤ (f : X → ℝ) ∧ f x ≠ 0 := by
527555
rcases exists_compact_mem_nhds x with ⟨k, hk, k_mem⟩

0 commit comments

Comments
 (0)