@@ -8,11 +8,17 @@ import measure_theory.l1_space
8
8
import analysis.mean_inequalities
9
9
10
10
/-!
11
- # ℒp space
11
+ # ℒp space and Lp space
12
12
13
13
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.
16
22
17
23
## Main definitions
18
24
@@ -24,14 +30,16 @@ defined for `p:ennreal` as `0` if `p=0`, `(∫ ∥f a∥^p ∂μ) ^ (1/p)` for `
24
30
25
31
* `mem_ℒp f p μ` : property that the function `f` is almost everywhere measurable and has finite
26
32
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`.
27
35
28
36
-/
29
37
30
- open measure_theory
31
-
32
38
noncomputable theory
33
39
34
- namespace ℒp_space
40
+ namespace measure_theory
41
+
42
+ section ℒp
35
43
36
44
variables {α E F : Type *} [measurable_space α] {μ : measure α}
37
45
[measurable_space E] [normed_group E]
@@ -632,4 +640,147 @@ end
632
640
633
641
end normed_space
634
642
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