Skip to content

Commit 1c5e160

Browse files
committed
chore(MeasureTheory/Function/LpSpace.lean): split out material on (bounded) continuous functions (#21783)
and move `LpSpace.lean` to `LpSpace/Basic.lean`. Barely addresses a long file warning.
1 parent 256efff commit 1c5e160

10 files changed

Lines changed: 212 additions & 209 deletions

File tree

Mathlib.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3855,8 +3855,9 @@ import Mathlib.MeasureTheory.Function.LpSeminorm.ChebyshevMarkov
38553855
import Mathlib.MeasureTheory.Function.LpSeminorm.CompareExp
38563856
import Mathlib.MeasureTheory.Function.LpSeminorm.TriangleInequality
38573857
import Mathlib.MeasureTheory.Function.LpSeminorm.Trim
3858-
import Mathlib.MeasureTheory.Function.LpSpace
3858+
import Mathlib.MeasureTheory.Function.LpSpace.Basic
38593859
import Mathlib.MeasureTheory.Function.LpSpace.ContinuousCompMeasurePreserving
3860+
import Mathlib.MeasureTheory.Function.LpSpace.ContinuousFunctions
38603861
import Mathlib.MeasureTheory.Function.LpSpace.DomAct.Basic
38613862
import Mathlib.MeasureTheory.Function.LpSpace.DomAct.Continuous
38623863
import Mathlib.MeasureTheory.Function.SimpleFunc

Mathlib/MeasureTheory/Function/ContinuousMapDense.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Authors: Heather Macbeth
66
import Mathlib.MeasureTheory.Measure.Regular
77
import Mathlib.MeasureTheory.Function.SimpleFuncDenseLp
88
import Mathlib.Topology.UrysohnsLemma
9+
import Mathlib.MeasureTheory.Function.LpSpace.ContinuousFunctions
910
import Mathlib.MeasureTheory.Integral.Bochner
1011

1112
/-!

Mathlib/MeasureTheory/Function/ConvergenceInMeasure.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Authors: Rémy Degenne, Kexing Ying
66
import Mathlib.Analysis.SpecialFunctions.Pow.Real
77
import Mathlib.Topology.MetricSpace.Pseudo.Defs
88
import Mathlib.MeasureTheory.Function.Egorov
9-
import Mathlib.MeasureTheory.Function.LpSpace
9+
import Mathlib.MeasureTheory.Function.LpSpace.Basic
1010

1111
/-!
1212
# Convergence in measure

Mathlib/MeasureTheory/Function/L2Space.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Rémy Degenne
55
-/
66
import Mathlib.Analysis.InnerProductSpace.LinearMap
7+
import Mathlib.MeasureTheory.Function.LpSpace.ContinuousFunctions
78
import Mathlib.MeasureTheory.Function.StronglyMeasurable.Inner
89
import Mathlib.MeasureTheory.Integral.SetIntegral
910

Mathlib/MeasureTheory/Function/LpOrder.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Rémy Degenne
55
-/
66
import Mathlib.Analysis.Normed.Order.Lattice
7-
import Mathlib.MeasureTheory.Function.LpSpace
7+
import Mathlib.MeasureTheory.Function.LpSpace.Basic
88

99
/-!
1010
# Order related properties of Lp spaces

Mathlib/MeasureTheory/Function/LpSpace.lean renamed to Mathlib/MeasureTheory/Function/LpSpace/Basic.lean

Lines changed: 2 additions & 205 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,11 @@ Authors: Rémy Degenne, Sébastien Gouëzel
55
-/
66
import Mathlib.Analysis.Normed.Group.Hom
77
import Mathlib.Analysis.NormedSpace.IndicatorFunction
8+
import Mathlib.Analysis.NormedSpace.OperatorNorm.NNNorm
89
import Mathlib.Analysis.SpecialFunctions.Pow.Continuity
9-
import Mathlib.Data.Set.Image
1010
import Mathlib.MeasureTheory.Function.LpSeminorm.ChebyshevMarkov
1111
import Mathlib.MeasureTheory.Function.LpSeminorm.CompareExp
1212
import Mathlib.MeasureTheory.Function.LpSeminorm.TriangleInequality
13-
import Mathlib.MeasureTheory.Measure.OpenPos
14-
import Mathlib.MeasureTheory.Measure.Typeclasses
15-
import Mathlib.Analysis.NormedSpace.OperatorNorm.NormedSpace
16-
import Mathlib.Topology.ContinuousMap.Compact
1713
import Mathlib.Order.Filter.IndicatorFunction
1814

1915
/-!
@@ -34,10 +30,6 @@ that it is continuous. In particular,
3430
* `Lp.posPart` is the positive part of an `Lp` function.
3531
* `Lp.negPart` is the negative part of an `Lp` function.
3632
37-
When `α` is a topological space equipped with a finite Borel measure, there is a bounded linear map
38-
from the normed space of bounded continuous functions (`α →ᵇ E`) to `Lp E p μ`. We construct this
39-
as `BoundedContinuousFunction.toLp`.
40-
4133
## Notations
4234
4335
* `α →₁[μ] E` : the type `Lp E 1 μ`.
@@ -68,7 +60,7 @@ function coercion from the coercion to almost everywhere defined functions.
6860
noncomputable section
6961

7062
open TopologicalSpace MeasureTheory Filter
71-
open scoped NNReal ENNReal Topology MeasureTheory Uniformity symmDiff
63+
open scoped NNReal ENNReal Topology symmDiff
7264

7365
variable {α 𝕜 𝕜' E F G : Type*} {m m0 : MeasurableSpace α} {p : ℝ≥0∞} {q : ℝ} {μ ν : Measure α}
7466
[NormedAddCommGroup E] [NormedAddCommGroup F] [NormedAddCommGroup G]
@@ -81,7 +73,6 @@ namespace MeasureTheory
8173
The space of equivalence classes of measurable functions for which `eLpNorm f p μ < ∞`.
8274
-/
8375

84-
8576
@[simp]
8677
theorem eLpNorm_aeeqFun {α E : Type*} [MeasurableSpace α] {μ : Measure α} [NormedAddCommGroup E]
8778
{p : ℝ≥0∞} {f : α → E} (hf : AEStronglyMeasurable f μ) :
@@ -1469,198 +1460,6 @@ end MeasureTheory
14691460

14701461
end CompleteSpace
14711462

1472-
/-! ### Continuous functions in `Lp` -/
1473-
1474-
1475-
open scoped BoundedContinuousFunction
1476-
1477-
open BoundedContinuousFunction
1478-
1479-
section
1480-
1481-
variable [TopologicalSpace α] [BorelSpace α] [SecondCountableTopologyEither α E]
1482-
variable (E p μ)
1483-
1484-
/-- An additive subgroup of `Lp E p μ`, consisting of the equivalence classes which contain a
1485-
bounded continuous representative. -/
1486-
def MeasureTheory.Lp.boundedContinuousFunction : AddSubgroup (Lp E p μ) :=
1487-
AddSubgroup.addSubgroupOf
1488-
((ContinuousMap.toAEEqFunAddHom μ).comp (toContinuousMapAddHom α E)).range (Lp E p μ)
1489-
1490-
variable {E p μ}
1491-
1492-
/-- By definition, the elements of `Lp.boundedContinuousFunction E p μ` are the elements of
1493-
`Lp E p μ` which contain a bounded continuous representative. -/
1494-
theorem MeasureTheory.Lp.mem_boundedContinuousFunction_iff {f : Lp E p μ} :
1495-
f ∈ MeasureTheory.Lp.boundedContinuousFunction E p μ ↔
1496-
∃ f₀ : α →ᵇ E, f₀.toContinuousMap.toAEEqFun μ = (f : α →ₘ[μ] E) :=
1497-
AddSubgroup.mem_addSubgroupOf
1498-
1499-
namespace BoundedContinuousFunction
1500-
1501-
variable [IsFiniteMeasure μ]
1502-
1503-
/-- A bounded continuous function on a finite-measure space is in `Lp`. -/
1504-
theorem mem_Lp (f : α →ᵇ E) : f.toContinuousMap.toAEEqFun μ ∈ Lp E p μ := by
1505-
refine Lp.mem_Lp_of_ae_bound ‖f‖ ?_
1506-
filter_upwards [f.toContinuousMap.coeFn_toAEEqFun μ] with x _
1507-
convert f.norm_coe_le_norm x using 2
1508-
1509-
/-- The `Lp`-norm of a bounded continuous function is at most a constant (depending on the measure
1510-
of the whole space) times its sup-norm. -/
1511-
theorem Lp_nnnorm_le (f : α →ᵇ E) :
1512-
‖(⟨f.toContinuousMap.toAEEqFun μ, mem_Lp f⟩ : Lp E p μ)‖₊ ≤
1513-
measureUnivNNReal μ ^ p.toReal⁻¹ * ‖f‖₊ := by
1514-
apply Lp.nnnorm_le_of_ae_bound
1515-
refine (f.toContinuousMap.coeFn_toAEEqFun μ).mono ?_
1516-
intro x hx
1517-
rw [← NNReal.coe_le_coe, coe_nnnorm, coe_nnnorm]
1518-
convert f.norm_coe_le_norm x using 2
1519-
1520-
/-- The `Lp`-norm of a bounded continuous function is at most a constant (depending on the measure
1521-
of the whole space) times its sup-norm. -/
1522-
theorem Lp_norm_le (f : α →ᵇ E) :
1523-
‖(⟨f.toContinuousMap.toAEEqFun μ, mem_Lp f⟩ : Lp E p μ)‖ ≤
1524-
measureUnivNNReal μ ^ p.toReal⁻¹ * ‖f‖ :=
1525-
Lp_nnnorm_le f
1526-
1527-
variable (p μ)
1528-
1529-
/-- The normed group homomorphism of considering a bounded continuous function on a finite-measure
1530-
space as an element of `Lp`. -/
1531-
def toLpHom [Fact (1 ≤ p)] : NormedAddGroupHom (α →ᵇ E) (Lp E p μ) :=
1532-
{ AddMonoidHom.codRestrict ((ContinuousMap.toAEEqFunAddHom μ).comp (toContinuousMapAddHom α E))
1533-
(Lp E p μ) mem_Lp with
1534-
bound' := ⟨_, Lp_norm_le⟩ }
1535-
1536-
theorem range_toLpHom [Fact (1 ≤ p)] :
1537-
((toLpHom p μ).range : AddSubgroup (Lp E p μ)) =
1538-
MeasureTheory.Lp.boundedContinuousFunction E p μ := by
1539-
symm
1540-
exact AddMonoidHom.addSubgroupOf_range_eq_of_le
1541-
((ContinuousMap.toAEEqFunAddHom μ).comp (toContinuousMapAddHom α E))
1542-
(by rintro - ⟨f, rfl⟩; exact mem_Lp f : _ ≤ Lp E p μ)
1543-
1544-
variable (𝕜 : Type*) [Fact (1 ≤ p)]
1545-
1546-
/-- The bounded linear map of considering a bounded continuous function on a finite-measure space
1547-
as an element of `Lp`. -/
1548-
def toLp [NormedField 𝕜] [NormedSpace 𝕜 E] : (α →ᵇ E) →L[𝕜] Lp E p μ :=
1549-
LinearMap.mkContinuous
1550-
(LinearMap.codRestrict (Lp.LpSubmodule 𝕜 E p μ)
1551-
((ContinuousMap.toAEEqFunLinearMap μ).comp (toContinuousMapLinearMap α E 𝕜)) mem_Lp)
1552-
_ Lp_norm_le
1553-
1554-
theorem coeFn_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : α →ᵇ E) :
1555-
toLp (E := E) p μ 𝕜 f =ᵐ[μ] f :=
1556-
AEEqFun.coeFn_mk f _
1557-
1558-
variable {𝕜}
1559-
1560-
theorem range_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] :
1561-
(LinearMap.range (toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)).toAddSubgroup =
1562-
MeasureTheory.Lp.boundedContinuousFunction E p μ :=
1563-
range_toLpHom p μ
1564-
1565-
variable {p}
1566-
1567-
theorem toLp_norm_le [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] :
1568-
‖(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ :=
1569-
LinearMap.mkContinuous_norm_le _ (measureUnivNNReal μ ^ p.toReal⁻¹).coe_nonneg _
1570-
1571-
theorem toLp_inj {f g : α →ᵇ E} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
1572-
toLp (E := E) p μ 𝕜 f = toLp (E := E) p μ 𝕜 g ↔ f = g := by
1573-
refine ⟨fun h => ?_, by tauto⟩
1574-
rw [← DFunLike.coe_fn_eq, ← (map_continuous f).ae_eq_iff_eq μ (map_continuous g)]
1575-
refine (coeFn_toLp p μ 𝕜 f).symm.trans (EventuallyEq.trans ?_ <| coeFn_toLp p μ 𝕜 g)
1576-
rw [h]
1577-
1578-
theorem toLp_injective [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
1579-
Function.Injective (⇑(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)) :=
1580-
fun _f _g hfg => (toLp_inj μ).mp hfg
1581-
1582-
end BoundedContinuousFunction
1583-
1584-
namespace ContinuousMap
1585-
1586-
variable [CompactSpace α] [IsFiniteMeasure μ]
1587-
variable (𝕜 : Type*) (p μ) [Fact (1 ≤ p)]
1588-
1589-
/-- The bounded linear map of considering a continuous function on a compact finite-measure
1590-
space `α` as an element of `Lp`. By definition, the norm on `C(α, E)` is the sup-norm, transferred
1591-
from the space `α →ᵇ E` of bounded continuous functions, so this construction is just a matter of
1592-
transferring the structure from `BoundedContinuousFunction.toLp` along the isometry. -/
1593-
def toLp [NormedField 𝕜] [NormedSpace 𝕜 E] : C(α, E) →L[𝕜] Lp E p μ :=
1594-
(BoundedContinuousFunction.toLp p μ 𝕜).comp
1595-
(linearIsometryBoundedOfCompact α E 𝕜).toLinearIsometry.toContinuousLinearMap
1596-
1597-
variable {𝕜}
1598-
1599-
theorem range_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] :
1600-
(LinearMap.range (toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)).toAddSubgroup =
1601-
MeasureTheory.Lp.boundedContinuousFunction E p μ := by
1602-
refine SetLike.ext' ?_
1603-
have := (linearIsometryBoundedOfCompact α E 𝕜).surjective
1604-
convert Function.Surjective.range_comp this (BoundedContinuousFunction.toLp (E := E) p μ 𝕜)
1605-
rw [← BoundedContinuousFunction.range_toLp p μ (𝕜 := 𝕜), Submodule.coe_toAddSubgroup,
1606-
LinearMap.range_coe]
1607-
1608-
variable {p}
1609-
1610-
theorem coeFn_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) :
1611-
toLp (E := E) p μ 𝕜 f =ᵐ[μ] f :=
1612-
AEEqFun.coeFn_mk f _
1613-
1614-
theorem toLp_def [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) :
1615-
toLp (E := E) p μ 𝕜 f =
1616-
BoundedContinuousFunction.toLp (E := E) p μ 𝕜 (linearIsometryBoundedOfCompact α E 𝕜 f) :=
1617-
rfl
1618-
1619-
@[simp]
1620-
theorem toLp_comp_toContinuousMap [NormedField 𝕜] [NormedSpace 𝕜 E] (f : α →ᵇ E) :
1621-
toLp (E := E) p μ 𝕜 f.toContinuousMap = BoundedContinuousFunction.toLp (E := E) p μ 𝕜 f :=
1622-
rfl
1623-
1624-
@[simp]
1625-
theorem coe_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) :
1626-
(toLp (E := E) p μ 𝕜 f : α →ₘ[μ] E) = f.toAEEqFun μ :=
1627-
rfl
1628-
1629-
theorem toLp_injective [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
1630-
Function.Injective (⇑(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)) :=
1631-
(BoundedContinuousFunction.toLp_injective _).comp (linearIsometryBoundedOfCompact α E 𝕜).injective
1632-
1633-
theorem toLp_inj {f g : C(α, E)} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
1634-
toLp (E := E) p μ 𝕜 f = toLp (E := E) p μ 𝕜 g ↔ f = g :=
1635-
(toLp_injective μ).eq_iff
1636-
1637-
variable {μ}
1638-
1639-
/-- If a sum of continuous functions `g n` is convergent, and the same sum converges in `Lᵖ` to `h`,
1640-
then in fact `g n` converges uniformly to `h`. -/
1641-
theorem hasSum_of_hasSum_Lp {β : Type*} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E]
1642-
{g : β → C(α, E)} {f : C(α, E)} (hg : Summable g)
1643-
(hg2 : HasSum (toLp (E := E) p μ 𝕜 ∘ g) (toLp (E := E) p μ 𝕜 f)) : HasSum g f := by
1644-
convert Summable.hasSum hg
1645-
exact toLp_injective μ (hg2.unique ((toLp p μ 𝕜).hasSum <| Summable.hasSum hg))
1646-
1647-
variable (μ) [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E]
1648-
1649-
theorem toLp_norm_eq_toLp_norm_coe :
1650-
‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)‖ =
1651-
‖(BoundedContinuousFunction.toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)‖ :=
1652-
ContinuousLinearMap.opNorm_comp_linearIsometryEquiv _ _
1653-
1654-
/-- Bound for the operator norm of `ContinuousMap.toLp`. -/
1655-
theorem toLp_norm_le :
1656-
‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ := by
1657-
rw [toLp_norm_eq_toLp_norm_coe]
1658-
exact BoundedContinuousFunction.toLp_norm_le μ
1659-
1660-
end ContinuousMap
1661-
1662-
end
1663-
16641463
namespace MeasureTheory
16651464

16661465
namespace Lp
@@ -1697,5 +1496,3 @@ theorem meas_ge_le_mul_pow_enorm (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_t
16971496
end Lp
16981497

16991498
end MeasureTheory
1700-
1701-
set_option linter.style.longFile 1800

0 commit comments

Comments
 (0)