Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 49c53d4

Browse files
RemyDegennesgouezel
andcommitted
feat(measure_theory/lp_space): define Lp, subtype of ae_eq_fun with finite norm (#5853)
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr>
1 parent aa744db commit 49c53d4

File tree

2 files changed

+159
-8
lines changed

2 files changed

+159
-8
lines changed

docs/undergrad.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ Measures and integral Calculus:
507507
finite dimensional vector-valued integrable functions: 'measure_theory.integrable'
508508
continuity of integrals with respect to parameters:
509509
differentiability of integrals with respect to parameters:
510-
$\mathrm{L}^p$ spaces where $1 ≤ p ≤ ∞$:
510+
$\mathrm{L}^p$ spaces where $1 ≤ p ≤ ∞$: 'measure_theory.Lp'
511511
Completeness of $\mathrm{L}^p$ spaces:
512512
Holder's inequality: 'nnreal.lintegral_mul_le_Lp_mul_Lq'
513513
Fubini's theorem: 'measure_theory.integral_prod'

src/measure_theory/lp_space.lean

Lines changed: 158 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,17 @@ import measure_theory.l1_space
88
import analysis.mean_inequalities
99

1010
/-!
11-
# ℒp space
11+
# ℒp space and Lp space
1212
1313
This file describes properties of almost everywhere measurable functions with finite seminorm,
14-
defined for `p:ennreal` as `0` if `p=0`, `(∫ ∥f a∥^p ∂μ) ^ (1/p)` for `0 < p < ∞` and
15-
`ess_sup ∥f∥ μ` for `p=∞`.
14+
denoted by `snorm f p μ` and defined for `p:ennreal` as `0` if `p=0`, `(∫ ∥f a∥^p ∂μ) ^ (1/p)` for
15+
`0 < p < ∞` and `ess_sup ∥f∥ μ` for `p=∞`.
16+
17+
The Prop-valued `mem_ℒp f p μ` states that a function `f : α → E` has finite seminorm.
18+
The space `Lp α E p μ` is the subtype of elements of `α →ₘ[μ] E` (see ae_eq_fun) such that
19+
`snorm f p μ` is finite. For `1 ≤ p`, `snorm` defines a norm and Lp is a metric space.
20+
21+
TODO: prove that Lp is complete.
1622
1723
## Main definitions
1824
@@ -24,14 +30,16 @@ defined for `p:ennreal` as `0` if `p=0`, `(∫ ∥f a∥^p ∂μ) ^ (1/p)` for `
2430
2531
* `mem_ℒp f p μ` : property that the function `f` is almost everywhere measurable and has finite
2632
p-seminorm for measure `μ` (`snorm f p μ < ∞`)
33+
* `Lp E p μ` : elements of `α →ₘ[μ] E` (see ae_eq_fun) such that `snorm f p μ` is finite. Defined
34+
as an `add_subgroup` of `α →ₘ[μ] E`.
2735
2836
-/
2937

30-
open measure_theory
31-
3238
noncomputable theory
3339

34-
namespace ℒp_space
40+
namespace measure_theory
41+
42+
section ℒp
3543

3644
variables {α E F : Type*} [measurable_space α] {μ : measure α}
3745
[measurable_space E] [normed_group E]
@@ -632,4 +640,147 @@ end
632640

633641
end normed_space
634642

635-
end ℒp_space
643+
end ℒp
644+
645+
/-! ### Lp space
646+
647+
The space of equivalence classes of measurable functions for which `snorm f p μ < ⊤`.
648+
-/
649+
650+
@[simp] lemma snorm_ae_eq_fun {α E : Type*} [measurable_space α] {μ : measure α}
651+
[measurable_space E] [normed_group E] {p : ennreal} {f : α → E} (hf : ae_measurable f μ) :
652+
snorm (ae_eq_fun.mk f hf) p μ = snorm f p μ :=
653+
snorm_congr_ae (ae_eq_fun.coe_fn_mk _ _)
654+
655+
lemma mem_ℒp.snorm_mk_lt_top {α E : Type*} [measurable_space α] {μ : measure α}
656+
[measurable_space E] [normed_group E] {p : ennreal} {f : α → E} (hfp : mem_ℒp f p μ) :
657+
snorm (ae_eq_fun.mk f hfp.1) p μ < ⊤ :=
658+
by simp [hfp.2]
659+
660+
/-- Lp space -/
661+
def Lp {α} (E : Type*) [measurable_space α] [measurable_space E] [normed_group E]
662+
[borel_space E] [topological_space.second_countable_topology E]
663+
(p : ennreal) (μ : measure α) : add_subgroup (α →ₘ[μ] E) :=
664+
{ carrier := {f | snorm f p μ < ⊤},
665+
zero_mem' := by simp [snorm_congr_ae ae_eq_fun.coe_fn_zero, snorm_zero],
666+
add_mem' := λ f g hf hg, by simp [snorm_congr_ae (ae_eq_fun.coe_fn_add _ _),
667+
snorm_add_lt_top ⟨f.ae_measurable, hf⟩ ⟨g.ae_measurable, hg⟩],
668+
neg_mem' := λ f hf,
669+
by rwa [set.mem_set_of_eq, snorm_congr_ae (ae_eq_fun.coe_fn_neg _), snorm_neg] }
670+
671+
/-- make an element of Lp from a function verifying `mem_ℒp` -/
672+
def mem_ℒp.to_Lp {α E} [measurable_space α] [measurable_space E] [normed_group E]
673+
[borel_space E] [topological_space.second_countable_topology E]
674+
(f : α → E) {p : ennreal} {μ : measure α} (h_mem_ℒp : mem_ℒp f p μ) : Lp E p μ :=
675+
⟨ae_eq_fun.mk f h_mem_ℒp.1, h_mem_ℒp.snorm_mk_lt_top⟩
676+
677+
lemma mem_ℒp.coe_fn_to_Lp {α E} [measurable_space α] [measurable_space E] [normed_group E]
678+
[borel_space E] [topological_space.second_countable_topology E] {μ : measure α} {p : ennreal}
679+
{f : α → E} (hf : mem_ℒp f p μ) : hf.to_Lp f =ᵐ[μ] f :=
680+
ae_eq_fun.coe_fn_mk _ _
681+
682+
namespace Lp
683+
684+
variables {α E F : Type*} [measurable_space α] {μ : measure α} [measurable_space E] [normed_group E]
685+
[borel_space E] [topological_space.second_countable_topology E] {p : ennreal}
686+
687+
lemma mem_Lp_iff_snorm_lt_top {f : α →ₘ[μ] E} : f ∈ Lp E p μ ↔ snorm f p μ < ⊤ := iff.refl _
688+
689+
lemma antimono [finite_measure μ] {p q : ennreal} (hpq : p ≤ q) : Lp E q μ ≤ Lp E p μ :=
690+
λ f hf, (mem_ℒp.mem_ℒp_of_exponent_le ⟨f.ae_measurable, hf⟩ hpq).2
691+
692+
lemma coe_fn_mk {f : α →ₘ[μ] E} (hf : snorm f p μ < ⊤) : ⇑(⟨f, hf⟩ : Lp E p μ) =ᵐ[μ] f :=
693+
by simp only [coe_fn_coe_base, subtype.coe_mk]
694+
695+
lemma snorm_lt_top (f : Lp E p μ) : snorm f p μ < ⊤ := f.prop
696+
697+
lemma snorm_ne_top (f : Lp E p μ) : snorm f p μ ≠ ⊤ := (snorm_lt_top f).ne
698+
699+
lemma measurable (f : Lp E p μ) : measurable f := f.val.measurable
700+
701+
lemma ae_measurable (f : Lp E p μ) : ae_measurable f μ := f.val.ae_measurable
702+
703+
lemma mem_ℒp (f : Lp E p μ) : mem_ℒp f p μ := ⟨ae_measurable f, f.prop⟩
704+
705+
lemma coe_fn_zero : ⇑(0 : Lp E p μ) =ᵐ[μ] 0 := ae_eq_fun.coe_fn_zero
706+
707+
lemma coe_fn_neg {f : Lp E p μ} : ⇑(-f) =ᵐ[μ] -f := ae_eq_fun.coe_fn_neg _
708+
709+
lemma coe_fn_add {f g : Lp E p μ} : ⇑(f + g) =ᵐ[μ] f + g := ae_eq_fun.coe_fn_add _ _
710+
711+
lemma coe_fn_sub {f g : Lp E p μ} : ⇑(f - g) =ᵐ[μ] f - g := ae_eq_fun.coe_fn_sub _ _
712+
713+
lemma mem_Lp_const (α) [measurable_space α] (μ : measure α) (c : E) [finite_measure μ] :
714+
@ae_eq_fun.const α _ _ μ _ c ∈ Lp E p μ :=
715+
(mem_ℒp_const c).snorm_mk_lt_top
716+
717+
instance : has_norm (Lp E p μ) := { norm := λ f, ennreal.to_real (snorm f p μ) }
718+
719+
lemma norm_def (f : Lp E p μ) : ∥f∥ = ennreal.to_real (snorm f p μ) := rfl
720+
721+
@[simp] lemma norm_zero : ∥(0 : Lp E p μ)∥ = 0 :=
722+
by simp [norm, snorm_congr_ae ae_eq_fun.coe_fn_zero, snorm_zero]
723+
724+
lemma norm_eq_zero_iff {f : Lp E p μ} (hp : 0 < p) : ∥f∥ = 0 ↔ f = 0 :=
725+
begin
726+
refine ⟨λ hf, _, λ hf, by simp [hf]⟩,
727+
rw [norm_def, ennreal.to_real_eq_zero_iff] at hf,
728+
cases hf,
729+
{ rw snorm_eq_zero_iff (ae_measurable f) hp.ne.symm at hf,
730+
exact subtype.eq (ae_eq_fun.ext (hf.trans ae_eq_fun.coe_fn_zero.symm)), },
731+
{ exact absurd hf (snorm_ne_top f), },
732+
end
733+
734+
@[simp] lemma norm_neg {f : Lp E p μ} : ∥-f∥ = ∥f∥ :=
735+
by rw [norm_def, norm_def, snorm_congr_ae coe_fn_neg, snorm_neg]
736+
737+
instance [hp : fact (1 ≤ p)] : normed_group (Lp E p μ) :=
738+
normed_group.of_core _
739+
{ norm_eq_zero_iff := λ f, norm_eq_zero_iff (ennreal.zero_lt_one.trans_le hp),
740+
triangle := begin
741+
assume f g,
742+
simp only [norm_def],
743+
rw ← ennreal.to_real_add (snorm_ne_top f) (snorm_ne_top g),
744+
suffices h_snorm : snorm ⇑(f + g) p μ ≤ snorm ⇑f p μ + snorm ⇑g p μ,
745+
{ rwa ennreal.to_real_le_to_real (snorm_ne_top (f + g)),
746+
exact ennreal.add_ne_top.mpr ⟨snorm_ne_top f, snorm_ne_top g⟩, },
747+
rw [snorm_congr_ae coe_fn_add],
748+
exact snorm_add_le (ae_measurable f) (ae_measurable g) hp,
749+
end,
750+
norm_neg := by simp }
751+
752+
section normed_space
753+
754+
variables {𝕜 : Type*} [normed_field 𝕜] [normed_space 𝕜 E]
755+
756+
lemma mem_Lp_const_smul (c : 𝕜) (f : Lp E p μ) : c • ↑f ∈ Lp E p μ :=
757+
begin
758+
rw [mem_Lp_iff_snorm_lt_top, snorm_congr_ae (ae_eq_fun.coe_fn_smul _ _), snorm_const_smul,
759+
ennreal.mul_lt_top_iff],
760+
exact or.inl ⟨ennreal.coe_lt_top, f.prop⟩,
761+
end
762+
763+
instance : has_scalar 𝕜 (Lp E p μ) := { smul := λ c f, ⟨c • ↑f, mem_Lp_const_smul c f⟩ }
764+
765+
lemma coe_fn_smul {f : Lp E p μ} {c : 𝕜} : ⇑(c • f) =ᵐ[μ] c • f := ae_eq_fun.coe_fn_smul _ _
766+
767+
instance : semimodule 𝕜 (Lp E p μ) :=
768+
{ one_smul := λ _, subtype.eq (one_smul 𝕜 _),
769+
mul_smul := λ _ _ _, subtype.eq (mul_smul _ _ _),
770+
smul_add := λ _ _ _, subtype.eq (smul_add _ _ _),
771+
smul_zero := λ _, subtype.eq (smul_zero _),
772+
add_smul := λ _ _ _, subtype.eq (add_smul _ _ _),
773+
zero_smul := λ _, subtype.eq (zero_smul _ _) }
774+
775+
lemma norm_const_smul (c : 𝕜) (f : Lp E p μ) : ∥c • f∥ = ∥c∥ * ∥f∥ :=
776+
by rw [norm_def, snorm_congr_ae coe_fn_smul, snorm_const_smul c,
777+
ennreal.to_real_mul, ennreal.coe_to_real, coe_nnnorm, norm_def]
778+
779+
instance [fact (1 ≤ p)] : normed_space 𝕜 (Lp E p μ) :=
780+
{ norm_smul_le := λ _ _, by simp [norm_const_smul] }
781+
782+
end normed_space
783+
784+
end Lp
785+
786+
end measure_theory

0 commit comments

Comments
 (0)