measure_theory.function.lp_space
⟷
Mathlib.MeasureTheory.Function.LpSpace
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
-/
import Analysis.Normed.Group.Hom
-import MeasureTheory.Function.LpSeminorm
+import MeasureTheory.Function.LpSeminorm.Basic
import Topology.ContinuousFunction.Compact
#align_import measure_theory.function.lp_space from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
@@ -1179,31 +1179,31 @@ theorem comp_memℒp' (L : E →L[𝕜] F) {f : α → E} (hf : Memℒp f p μ)
#align continuous_linear_map.comp_mem_ℒp' ContinuousLinearMap.comp_memℒp'
-/
-section IsROrC
+section RCLike
-variable {K : Type _} [IsROrC K]
+variable {K : Type _} [RCLike K]
#print MeasureTheory.Memℒp.ofReal /-
theorem MeasureTheory.Memℒp.ofReal {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => (f x : K)) p μ :=
- (@IsROrC.ofRealCLM K _).comp_memℒp' hf
+ (@RCLike.ofRealCLM K _).comp_memℒp' hf
#align measure_theory.mem_ℒp.of_real MeasureTheory.Memℒp.ofReal
-/
#print MeasureTheory.memℒp_re_im_iff /-
theorem MeasureTheory.memℒp_re_im_iff {f : α → K} :
- Memℒp (fun x => IsROrC.re (f x)) p μ ∧ Memℒp (fun x => IsROrC.im (f x)) p μ ↔ Memℒp f p μ :=
+ Memℒp (fun x => RCLike.re (f x)) p μ ∧ Memℒp (fun x => RCLike.im (f x)) p μ ↔ Memℒp f p μ :=
by
refine' ⟨_, fun hf => ⟨hf.re, hf.im⟩⟩
rintro ⟨hre, him⟩
- convert hre.of_real.add (him.of_real.const_mul IsROrC.i)
+ convert hre.of_real.add (him.of_real.const_mul RCLike.i)
· ext1 x
- rw [Pi.add_apply, mul_comm, IsROrC.re_add_im]
+ rw [Pi.add_apply, mul_comm, RCLike.re_add_im]
all_goals infer_instance
#align measure_theory.mem_ℒp_re_im_iff MeasureTheory.memℒp_re_im_iff
-/
-end IsROrC
+end RCLike
#print ContinuousLinearMap.add_compLp /-
theorem add_compLp (L L' : E →L[𝕜] F) (f : Lp E p μ) :
@@ -1258,7 +1258,7 @@ def compLpₗ (L : E →L[𝕜] F) : Lp E p μ →ₗ[𝕜] Lp F p μ
ext1
filter_upwards [Lp.coe_fn_smul c f, coe_fn_comp_Lp L (c • f), Lp.coe_fn_smul c (L.comp_Lp f),
coe_fn_comp_Lp L f] with _ ha1 ha2 ha3 ha4
- simp only [ha1, ha2, ha3, ha4, SMulHomClass.map_smul, Pi.smul_apply]
+ simp only [ha1, ha2, ha3, ha4, MulActionSemiHomClass.map_smul, Pi.smul_apply]
#align continuous_linear_map.comp_Lpₗ ContinuousLinearMap.compLpₗ
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -396,9 +396,9 @@ theorem norm_zero : ‖(0 : Lp E p μ)‖ = 0 :=
theorem nnnorm_eq_zero_iff {f : Lp E p μ} (hp : 0 < p) : ‖f‖₊ = 0 ↔ f = 0 :=
by
refine' ⟨fun hf => _, fun hf => by simp [hf]⟩
- rw [nnnorm_def, ENNReal.toNNReal_eq_zero_iff] at hf
+ rw [nnnorm_def, ENNReal.toNNReal_eq_zero_iff] at hf
cases hf
- · rw [snorm_eq_zero_iff (Lp.ae_strongly_measurable f) hp.ne.symm] at hf
+ · rw [snorm_eq_zero_iff (Lp.ae_strongly_measurable f) hp.ne.symm] at hf
exact Subtype.eq (ae_eq_fun.ext (hf.trans ae_eq_fun.coe_fn_zero.symm))
· exact absurd hf (snorm_ne_top f)
#align measure_theory.Lp.nnnorm_eq_zero_iff MeasureTheory.Lp.nnnorm_eq_zero_iff
@@ -446,7 +446,7 @@ theorem nnnorm_le_mul_nnnorm_of_ae_le_mul {c : ℝ≥0} {f : Lp E p μ} {g : Lp
simp only [nnnorm_def]
have := snorm_le_nnreal_smul_snorm_of_ae_le_mul h p
rwa [← ENNReal.toNNReal_le_toNNReal, ENNReal.smul_def, smul_eq_mul, ENNReal.toNNReal_mul,
- ENNReal.toNNReal_coe] at this
+ ENNReal.toNNReal_coe] at this
· exact (Lp.mem_ℒp _).snorm_ne_top
· exact ENNReal.mul_ne_top ENNReal.coe_ne_top (Lp.mem_ℒp _).snorm_ne_top
#align measure_theory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul MeasureTheory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul
@@ -537,7 +537,7 @@ theorem norm_le_of_ae_bound [IsFiniteMeasure μ] {f : Lp E p μ} {C : ℝ} (hC :
by
lift C to ℝ≥0 using hC
have := nnnorm_le_of_ae_bound hfC
- rwa [← NNReal.coe_le_coe, NNReal.coe_mul, NNReal.coe_rpow] at this
+ rwa [← NNReal.coe_le_coe, NNReal.coe_mul, NNReal.coe_rpow] at this
#align measure_theory.Lp.norm_le_of_ae_bound MeasureTheory.Lp.norm_le_of_ae_bound
-/
@@ -697,7 +697,7 @@ theorem snormEssSup_indicator_const_eq (s : Set α) (c : G) (hμs : μ s ≠ 0)
refine' le_antisymm (snorm_ess_sup_indicator_const_le s c) _
by_contra! h
have h' := ae_iff.mp (ae_lt_of_essSup_lt h)
- push_neg at h'
+ push_neg at h'
refine' hμs (measure_mono_null (fun x hx_mem => _) h')
rw [Set.mem_setOf_eq, Set.indicator_of_mem hx_mem]
exact le_rfl
@@ -1317,7 +1317,7 @@ theorem indicatorConstLp_eq_toSpanSingleton_compLp {s : Set α} [NormedSpace ℝ
refine' indicator_const_Lp_coe_fn.trans _
have h_comp_Lp :=
(ContinuousLinearMap.toSpanSingleton ℝ x).coeFn_compLp (indicator_const_Lp 2 hs hμs (1 : ℝ))
- rw [← eventually_eq] at h_comp_Lp
+ rw [← eventually_eq] at h_comp_Lp
refine' eventually_eq.trans _ h_comp_Lp.symm
refine' (@indicator_const_Lp_coe_fn _ _ _ 2 μ _ s hs hμs (1 : ℝ)).mono fun y hy => _
dsimp only
@@ -1503,7 +1503,7 @@ theorem snorm_lim_le_liminf_snorm {E} [NormedAddCommGroup E] {f : ℕ → α →
by
by_cases hp0 : p = 0
· simp [hp0]
- rw [← Ne.def] at hp0
+ rw [← Ne.def] at hp0
by_cases hp_top : p = ∞
· simp_rw [hp_top]
exact snorm_exponent_top_lim_le_liminf_snorm_exponent_top h_lim
@@ -1606,12 +1606,12 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
rw [← hB.tsum_eq]
exact (ENNReal.ofReal_tsum_of_nonneg (fun n => le_of_lt (hB_pos n)) hB.summable).symm
have h_sum := (@ENNReal.summable _ B1).HasSum
- rwa [h_tsum_B1] at h_sum
+ rwa [h_tsum_B1] at h_sum
have hB1 : ∑' i, B1 i < ∞ := by rw [hB1_has.tsum_eq]; exact ENNReal.ofReal_lt_top
let f1 : ℕ → α → E := fun n => f n
refine' H f1 (fun n => Lp.mem_ℒp (f n)) B1 hB1 fun N n m hn hm => _
specialize hf N n m hn hm
- rw [dist_def] at hf
+ rw [dist_def] at hf
simp_rw [f1, B1]
rwa [ENNReal.lt_ofReal_iff_toReal_lt]
rw [snorm_congr_ae (Lp.coe_fn_sub _ _).symm]
@@ -1647,7 +1647,7 @@ private theorem lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum {f : ℕ → α
have hp_pos : 0 < p := zero_lt_one.trans_le hp1
rw [← one_div_one_div p, @ENNReal.le_rpow_one_div_iff _ _ (1 / p) (by simp [hp_pos]),
one_div_one_div p]
- simp_rw [snorm'] at hn
+ simp_rw [snorm'] at hn
have h_nnnorm_nonneg :
(fun a => (‖∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖‖₊ : ℝ≥0∞) ^ p) = fun a =>
(∑ i in Finset.range (n + 1), (‖f (i + 1) a - f i a‖₊ : ℝ≥0∞)) ^ p :=
@@ -1662,8 +1662,8 @@ private theorem lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum {f : ℕ → α
change
(∫⁻ a, (fun x => ↑‖∑ i in Finset.range (n + 1), ‖f (i + 1) x - f i x‖‖₊ ^ p) a ∂μ) ^ (1 / p) ≤
∑' i, B i at
- hn
- rwa [h_nnnorm_nonneg] at hn
+ hn
+ rwa [h_nnnorm_nonneg] at hn
/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic filter.is_bounded_default -/
private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E}
@@ -1712,14 +1712,14 @@ private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, AE
by
have h_tsum_lt_top : (∑' i, B i) ^ p < ∞ := ENNReal.rpow_lt_top_of_nonneg hp_pos.le hB
refine' lt_of_le_of_lt _ h_tsum_lt_top
- rwa [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div] at h
+ rwa [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div] at h
have rpow_ae_lt_top : ∀ᵐ x ∂μ, (∑' i, ‖f (i + 1) x - f i x‖₊ : ℝ≥0∞) ^ p < ∞ :=
by
refine' ae_lt_top' (AEMeasurable.pow_const _ _) h_integral.ne
exact AEMeasurable.ennreal_tsum fun n => ((hf (n + 1)).sub (hf n)).ennnorm
refine' rpow_ae_lt_top.mono fun x hx => _
rwa [← ENNReal.lt_rpow_one_div_iff hp_pos,
- ENNReal.top_rpow_of_pos (by simp [hp_pos] : 0 < 1 / p)] at hx
+ ENNReal.top_rpow_of_pos (by simp [hp_pos] : 0 < 1 / p)] at hx
#print MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm' /-
theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p : ℝ}
@@ -1760,7 +1760,7 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
change
∑ i : ℕ in Finset.range n, ((fun m => f m x) (i + 1) - (fun m => f m x) i) = f n x - f 0 x
rw [Finset.sum_range_sub]
- rw [h_rw_sum] at hx
+ rw [h_rw_sum] at hx
have hf_rw : (fun n => f n x) = fun n => f n x - f 0 x + f 0 x := by ext1 n; abel
rw [hf_rw]
exact ⟨l + f 0 x, tendsto.add_const _ hx⟩
@@ -1779,14 +1779,14 @@ theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
by
simp_rw [ae_all_iff]
exact fun N n m hnN hmN => ae_lt_of_essSup_lt (h_cau N n m hnN hmN)
- simp_rw [snorm_exponent_top, snorm_ess_sup] at h_cau
+ simp_rw [snorm_exponent_top, snorm_ess_sup] at h_cau
refine' h_cau_ae.mono fun x hx => cauchySeq_tendsto_of_complete _
refine' cauchySeq_of_le_tendsto_0 (fun n => (B n).toReal) _ _
· intro n m N hnN hmN
specialize hx N n m hnN hmN
rw [dist_eq_norm, ← ENNReal.toReal_ofReal (norm_nonneg _),
ENNReal.toReal_le_toReal ENNReal.ofReal_ne_top (ENNReal.ne_top_of_tsum_ne_top hB N)]
- rw [← ofReal_norm_eq_coe_nnnorm] at hx
+ rw [← ofReal_norm_eq_coe_nnnorm] at hx
exact hx.le
· rw [← ENNReal.zero_toReal]
exact
@@ -1800,7 +1800,7 @@ theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
by
intro N n m hn hm
specialize h_cau N n m hn hm
- rwa [snorm_eq_snorm' (zero_lt_one.trans_le hp).Ne.symm hp_top] at h_cau
+ rwa [snorm_eq_snorm' (zero_lt_one.trans_le hp).Ne.symm hp_top] at h_cau
exact ae_tendsto_of_cauchy_snorm' hf hp1 hB h_cau'
#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm
-/
@@ -1840,7 +1840,7 @@ theorem memℒp_of_cauchy_tendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf :
(h_tendsto : atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)) : Memℒp f_lim p μ :=
by
refine' ⟨h_lim_meas, _⟩
- rw [ENNReal.tendsto_atTop_zero] at h_tendsto
+ rw [ENNReal.tendsto_atTop_zero] at h_tendsto
cases' h_tendsto 1 zero_lt_one with N h_tendsto_1
specialize h_tendsto_1 N (le_refl N)
have h_add : f_lim = f_lim - f N + f N := by abel
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -2142,7 +2142,7 @@ variable (μ) [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E]
theorem toLp_norm_eq_toLp_norm_coe :
‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)‖ =
‖(BoundedContinuousFunction.toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)‖ :=
- ContinuousLinearMap.op_norm_comp_linearIsometryEquiv _ _
+ ContinuousLinearMap.opNorm_comp_linearIsometryEquiv _ _
#align continuous_map.to_Lp_norm_eq_to_Lp_norm_coe ContinuousMap.toLp_norm_eq_toLp_norm_coe
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -1186,7 +1186,7 @@ variable {K : Type _} [IsROrC K]
#print MeasureTheory.Memℒp.ofReal /-
theorem MeasureTheory.Memℒp.ofReal {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => (f x : K)) p μ :=
- (@IsROrC.ofRealClm K _).comp_memℒp' hf
+ (@IsROrC.ofRealCLM K _).comp_memℒp' hf
#align measure_theory.mem_ℒp.of_real MeasureTheory.Memℒp.ofReal
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -2031,7 +2031,7 @@ theorem toLp_inj {f g : α →ᵇ E} [μ.IsOpenPosMeasure] [NormedField 𝕜] [N
toLp p μ 𝕜 f = toLp p μ 𝕜 g ↔ f = g :=
by
refine' ⟨fun h => _, by tauto⟩
- rw [← FunLike.coe_fn_eq, ← (map_continuous f).ae_eq_iff_eq μ (map_continuous g)]
+ rw [← DFunLike.coe_fn_eq, ← (map_continuous f).ae_eq_iff_eq μ (map_continuous g)]
refine' (coe_fn_to_Lp p μ 𝕜 f).symm.trans (eventually_eq.trans _ <| coe_fn_to_Lp p μ 𝕜 g)
rw [h]
#align bounded_continuous_function.to_Lp_inj BoundedContinuousFunction.toLp_inj
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -695,7 +695,7 @@ theorem snormEssSup_indicator_const_eq (s : Set α) (c : G) (hμs : μ s ≠ 0)
snormEssSup (s.indicator fun x : α => c) μ = ‖c‖₊ :=
by
refine' le_antisymm (snorm_ess_sup_indicator_const_le s c) _
- by_contra' h
+ by_contra! h
have h' := ae_iff.mp (ae_lt_of_essSup_lt h)
push_neg at h'
refine' hμs (measure_mono_null (fun x hx_mem => _) h')
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -1743,8 +1743,7 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
tsum_nnnorm_sub_ae_lt_top hf hp1 hB h3
exact
h4.mono fun x hx =>
- summable_of_summable_nnnorm
- (ennreal.tsum_coe_ne_top_iff_summable.mp (lt_top_iff_ne_top.mp hx))
+ Summable.of_nnnorm (ennreal.tsum_coe_ne_top_iff_summable.mp (lt_top_iff_ne_top.mp hx))
have h :
∀ᵐ x ∂μ,
∃ l : E, at_top.tendsto (fun n => ∑ i in Finset.range n, (f (i + 1) x - f i x)) (𝓝 l) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2020 Rémy Degenne. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
-/
-import Mathbin.Analysis.Normed.Group.Hom
-import Mathbin.MeasureTheory.Function.LpSeminorm
-import Mathbin.Topology.ContinuousFunction.Compact
+import Analysis.Normed.Group.Hom
+import MeasureTheory.Function.LpSeminorm
+import Topology.ContinuousFunction.Compact
#align_import measure_theory.function.lp_space from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -933,14 +933,14 @@ theorem norm_indicatorConstLp' (hp_pos : p ≠ 0) (hμs_pos : μ s ≠ 0) :
#align measure_theory.norm_indicator_const_Lp' MeasureTheory.norm_indicatorConstLp'
-/
-#print MeasureTheory.indicatorConst_empty /-
+#print MeasureTheory.indicatorConstLp_empty /-
@[simp]
-theorem indicatorConst_empty : indicatorConstLp p MeasurableSet.empty (by simp : μ ∅ ≠ ∞) c = 0 :=
+theorem indicatorConstLp_empty : indicatorConstLp p MeasurableSet.empty (by simp : μ ∅ ≠ ∞) c = 0 :=
by
rw [Lp.eq_zero_iff_ae_eq_zero]
convert indicator_const_Lp_coe_fn
simp [Set.indicator_empty']
-#align measure_theory.indicator_const_empty MeasureTheory.indicatorConst_empty
+#align measure_theory.indicator_const_empty MeasureTheory.indicatorConstLp_empty
-/
#print MeasureTheory.memℒp_add_of_disjoint /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -294,11 +294,11 @@ theorem coeFn_sub (f g : Lp E p μ) : ⇑(f - g) =ᵐ[μ] f - g :=
#align measure_theory.Lp.coe_fn_sub MeasureTheory.Lp.coeFn_sub
-/
-#print MeasureTheory.Lp.mem_lp_const /-
-theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [IsFiniteMeasure μ] :
+#print MeasureTheory.Lp.const_mem_Lp /-
+theorem const_mem_Lp (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [IsFiniteMeasure μ] :
@AEEqFun.const α _ _ μ _ c ∈ Lp E p μ :=
(memℒp_const c).snorm_mk_lt_top
-#align measure_theory.Lp.mem_Lp_const MeasureTheory.Lp.mem_lp_const
+#align measure_theory.Lp.mem_Lp_const MeasureTheory.Lp.const_mem_Lp
-/
instance : Norm (Lp E p μ) where norm f := ENNReal.toReal (snorm f p μ)
@@ -578,14 +578,14 @@ variable [NormedRing 𝕜] [NormedRing 𝕜'] [Module 𝕜 E] [Module 𝕜' E]
variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜' E]
-#print MeasureTheory.Lp.mem_Lp_const_smul /-
-theorem mem_Lp_const_smul (c : 𝕜) (f : Lp E p μ) : c • ↑f ∈ Lp E p μ :=
+#print MeasureTheory.Lp.const_smul_mem_Lp /-
+theorem const_smul_mem_Lp (c : 𝕜) (f : Lp E p μ) : c • ↑f ∈ Lp E p μ :=
by
rw [mem_Lp_iff_snorm_lt_top, snorm_congr_ae (ae_eq_fun.coe_fn_smul _ _)]
refine' (snorm_const_smul_le _ _).trans_lt _
rw [ENNReal.smul_def, smul_eq_mul, ENNReal.mul_lt_top_iff]
exact Or.inl ⟨ENNReal.coe_lt_top, f.prop⟩
-#align measure_theory.Lp.mem_Lp_const_smul MeasureTheory.Lp.mem_Lp_const_smul
+#align measure_theory.Lp.mem_Lp_const_smul MeasureTheory.Lp.const_smul_mem_Lp
-/
variable (E p μ 𝕜)
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2020 Rémy Degenne. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
-
-! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit f60c6087a7275b72d5db3c5a1d0e19e35a429c0a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Analysis.Normed.Group.Hom
import Mathbin.MeasureTheory.Function.LpSeminorm
import Mathbin.Topology.ContinuousFunction.Compact
+#align_import measure_theory.function.lp_space from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
+
/-!
# Lp space
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -85,17 +85,21 @@ The space of equivalence classes of measurable functions for which `snorm f p μ
-/
+#print MeasureTheory.snorm_aeeqFun /-
@[simp]
theorem snorm_aeeqFun {α E : Type _} [MeasurableSpace α] {μ : Measure α} [NormedAddCommGroup E]
{p : ℝ≥0∞} {f : α → E} (hf : AEStronglyMeasurable f μ) :
snorm (AEEqFun.mk f hf) p μ = snorm f p μ :=
snorm_congr_ae (AEEqFun.coeFn_mk _ _)
#align measure_theory.snorm_ae_eq_fun MeasureTheory.snorm_aeeqFun
+-/
+#print MeasureTheory.Memℒp.snorm_mk_lt_top /-
theorem Memℒp.snorm_mk_lt_top {α E : Type _} [MeasurableSpace α] {μ : Measure α}
[NormedAddCommGroup E] {p : ℝ≥0∞} {f : α → E} (hfp : Memℒp f p μ) :
snorm (AEEqFun.mk f hfp.1) p μ < ∞ := by simp [hfp.2]
#align measure_theory.mem_ℒp.snorm_mk_lt_top MeasureTheory.Memℒp.snorm_mk_lt_top
+-/
#print MeasureTheory.Lp /-
/-- Lp space -/
@@ -111,18 +115,18 @@ def Lp {α} (E : Type _) {m : MeasurableSpace α} [NormedAddCommGroup E] (p :
#align measure_theory.Lp MeasureTheory.Lp
-/
--- mathport name: measure_theory.L1
scoped notation:25 α " →₁[" μ "] " E => MeasureTheory.Lp E 1 μ
--- mathport name: measure_theory.L2
scoped notation:25 α " →₂[" μ "] " E => MeasureTheory.Lp E 2 μ
namespace Memℒp
+#print MeasureTheory.Memℒp.toLp /-
/-- make an element of Lp from a function verifying `mem_ℒp` -/
def toLp (f : α → E) (h_mem_ℒp : Memℒp f p μ) : Lp E p μ :=
⟨AEEqFun.mk f h_mem_ℒp.1, h_mem_ℒp.snorm_mk_lt_top⟩
#align measure_theory.mem_ℒp.to_Lp MeasureTheory.Memℒp.toLp
+-/
#print MeasureTheory.Memℒp.coeFn_toLp /-
theorem coeFn_toLp {f : α → E} (hf : Memℒp f p μ) : hf.toLp f =ᵐ[μ] f :=
@@ -130,33 +134,45 @@ theorem coeFn_toLp {f : α → E} (hf : Memℒp f p μ) : hf.toLp f =ᵐ[μ] f :
#align measure_theory.mem_ℒp.coe_fn_to_Lp MeasureTheory.Memℒp.coeFn_toLp
-/
+#print MeasureTheory.Memℒp.toLp_congr /-
theorem toLp_congr {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) (hfg : f =ᵐ[μ] g) :
hf.toLp f = hg.toLp g := by simp [to_Lp, hfg]
#align measure_theory.mem_ℒp.to_Lp_congr MeasureTheory.Memℒp.toLp_congr
+-/
+#print MeasureTheory.Memℒp.toLp_eq_toLp_iff /-
@[simp]
theorem toLp_eq_toLp_iff {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) :
hf.toLp f = hg.toLp g ↔ f =ᵐ[μ] g := by simp [to_Lp]
#align measure_theory.mem_ℒp.to_Lp_eq_to_Lp_iff MeasureTheory.Memℒp.toLp_eq_toLp_iff
+-/
+#print MeasureTheory.Memℒp.toLp_zero /-
@[simp]
theorem toLp_zero (h : Memℒp (0 : α → E) p μ) : h.toLp 0 = 0 :=
rfl
#align measure_theory.mem_ℒp.to_Lp_zero MeasureTheory.Memℒp.toLp_zero
+-/
+#print MeasureTheory.Memℒp.toLp_add /-
theorem toLp_add {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) :
(hf.add hg).toLp (f + g) = hf.toLp f + hg.toLp g :=
rfl
#align measure_theory.mem_ℒp.to_Lp_add MeasureTheory.Memℒp.toLp_add
+-/
+#print MeasureTheory.Memℒp.toLp_neg /-
theorem toLp_neg {f : α → E} (hf : Memℒp f p μ) : hf.neg.toLp (-f) = -hf.toLp f :=
rfl
#align measure_theory.mem_ℒp.to_Lp_neg MeasureTheory.Memℒp.toLp_neg
+-/
+#print MeasureTheory.Memℒp.toLp_sub /-
theorem toLp_sub {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) :
(hf.sub hg).toLp (f - g) = hf.toLp f - hg.toLp g :=
rfl
#align measure_theory.mem_ℒp.to_Lp_sub MeasureTheory.Memℒp.toLp_sub
+-/
end Memℒp
@@ -165,6 +181,7 @@ namespace Lp
instance : CoeFun (Lp E p μ) fun _ => α → E :=
⟨fun f => ((f : α →ₘ[μ] E) : α → E)⟩
+#print MeasureTheory.Lp.ext /-
@[ext]
theorem ext {f g : Lp E p μ} (h : f =ᵐ[μ] g) : f = g :=
by
@@ -173,84 +190,119 @@ theorem ext {f g : Lp E p μ} (h : f =ᵐ[μ] g) : f = g :=
simp only [Subtype.mk_eq_mk]
exact ae_eq_fun.ext h
#align measure_theory.Lp.ext MeasureTheory.Lp.ext
+-/
+#print MeasureTheory.Lp.ext_iff /-
theorem ext_iff {f g : Lp E p μ} : f = g ↔ f =ᵐ[μ] g :=
⟨fun h => by rw [h], fun h => ext h⟩
#align measure_theory.Lp.ext_iff MeasureTheory.Lp.ext_iff
+-/
+#print MeasureTheory.Lp.mem_Lp_iff_snorm_lt_top /-
theorem mem_Lp_iff_snorm_lt_top {f : α →ₘ[μ] E} : f ∈ Lp E p μ ↔ snorm f p μ < ∞ :=
Iff.refl _
#align measure_theory.Lp.mem_Lp_iff_snorm_lt_top MeasureTheory.Lp.mem_Lp_iff_snorm_lt_top
+-/
+#print MeasureTheory.Lp.mem_Lp_iff_memℒp /-
theorem mem_Lp_iff_memℒp {f : α →ₘ[μ] E} : f ∈ Lp E p μ ↔ Memℒp f p μ := by
simp [mem_Lp_iff_snorm_lt_top, mem_ℒp, f.strongly_measurable.ae_strongly_measurable]
#align measure_theory.Lp.mem_Lp_iff_mem_ℒp MeasureTheory.Lp.mem_Lp_iff_memℒp
+-/
+#print MeasureTheory.Lp.antitone /-
protected theorem antitone [IsFiniteMeasure μ] {p q : ℝ≥0∞} (hpq : p ≤ q) : Lp E q μ ≤ Lp E p μ :=
fun f hf => (Memℒp.memℒp_of_exponent_le ⟨f.AEStronglyMeasurable, hf⟩ hpq).2
#align measure_theory.Lp.antitone MeasureTheory.Lp.antitone
+-/
+#print MeasureTheory.Lp.coeFn_mk /-
@[simp]
theorem coeFn_mk {f : α →ₘ[μ] E} (hf : snorm f p μ < ∞) : ((⟨f, hf⟩ : Lp E p μ) : α → E) = f :=
rfl
#align measure_theory.Lp.coe_fn_mk MeasureTheory.Lp.coeFn_mk
+-/
+#print MeasureTheory.Lp.coe_mk /-
@[simp]
theorem coe_mk {f : α →ₘ[μ] E} (hf : snorm f p μ < ∞) : ((⟨f, hf⟩ : Lp E p μ) : α →ₘ[μ] E) = f :=
rfl
#align measure_theory.Lp.coe_mk MeasureTheory.Lp.coe_mk
+-/
+#print MeasureTheory.Lp.toLp_coeFn /-
@[simp]
theorem toLp_coeFn (f : Lp E p μ) (hf : Memℒp f p μ) : hf.toLp f = f := by cases f;
simp [mem_ℒp.to_Lp]
#align measure_theory.Lp.to_Lp_coe_fn MeasureTheory.Lp.toLp_coeFn
+-/
+#print MeasureTheory.Lp.snorm_lt_top /-
theorem snorm_lt_top (f : Lp E p μ) : snorm f p μ < ∞ :=
f.Prop
#align measure_theory.Lp.snorm_lt_top MeasureTheory.Lp.snorm_lt_top
+-/
+#print MeasureTheory.Lp.snorm_ne_top /-
theorem snorm_ne_top (f : Lp E p μ) : snorm f p μ ≠ ∞ :=
(snorm_lt_top f).Ne
#align measure_theory.Lp.snorm_ne_top MeasureTheory.Lp.snorm_ne_top
+-/
+#print MeasureTheory.Lp.stronglyMeasurable /-
@[measurability]
protected theorem stronglyMeasurable (f : Lp E p μ) : StronglyMeasurable f :=
f.val.StronglyMeasurable
#align measure_theory.Lp.strongly_measurable MeasureTheory.Lp.stronglyMeasurable
+-/
+#print MeasureTheory.Lp.aestronglyMeasurable /-
@[measurability]
protected theorem aestronglyMeasurable (f : Lp E p μ) : AEStronglyMeasurable f μ :=
f.val.AEStronglyMeasurable
#align measure_theory.Lp.ae_strongly_measurable MeasureTheory.Lp.aestronglyMeasurable
+-/
+#print MeasureTheory.Lp.memℒp /-
protected theorem memℒp (f : Lp E p μ) : Memℒp f p μ :=
⟨Lp.aestronglyMeasurable f, f.Prop⟩
#align measure_theory.Lp.mem_ℒp MeasureTheory.Lp.memℒp
+-/
variable (E p μ)
+#print MeasureTheory.Lp.coeFn_zero /-
theorem coeFn_zero : ⇑(0 : Lp E p μ) =ᵐ[μ] 0 :=
AEEqFun.coeFn_zero
#align measure_theory.Lp.coe_fn_zero MeasureTheory.Lp.coeFn_zero
+-/
variable {E p μ}
+#print MeasureTheory.Lp.coeFn_neg /-
theorem coeFn_neg (f : Lp E p μ) : ⇑(-f) =ᵐ[μ] -f :=
AEEqFun.coeFn_neg _
#align measure_theory.Lp.coe_fn_neg MeasureTheory.Lp.coeFn_neg
+-/
+#print MeasureTheory.Lp.coeFn_add /-
theorem coeFn_add (f g : Lp E p μ) : ⇑(f + g) =ᵐ[μ] f + g :=
AEEqFun.coeFn_add _ _
#align measure_theory.Lp.coe_fn_add MeasureTheory.Lp.coeFn_add
+-/
+#print MeasureTheory.Lp.coeFn_sub /-
theorem coeFn_sub (f g : Lp E p μ) : ⇑(f - g) =ᵐ[μ] f - g :=
AEEqFun.coeFn_sub _ _
#align measure_theory.Lp.coe_fn_sub MeasureTheory.Lp.coeFn_sub
+-/
+#print MeasureTheory.Lp.mem_lp_const /-
theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [IsFiniteMeasure μ] :
@AEEqFun.const α _ _ μ _ c ∈ Lp E p μ :=
(memℒp_const c).snorm_mk_lt_top
#align measure_theory.Lp.mem_Lp_const MeasureTheory.Lp.mem_lp_const
+-/
instance : Norm (Lp E p μ) where norm f := ENNReal.toReal (snorm f p μ)
@@ -262,18 +314,24 @@ instance : Dist (Lp E p μ) where dist f g := ‖f - g‖
instance : EDist (Lp E p μ) where edist f g := snorm (f - g) p μ
+#print MeasureTheory.Lp.norm_def /-
theorem norm_def (f : Lp E p μ) : ‖f‖ = ENNReal.toReal (snorm f p μ) :=
rfl
#align measure_theory.Lp.norm_def MeasureTheory.Lp.norm_def
+-/
+#print MeasureTheory.Lp.nnnorm_def /-
theorem nnnorm_def (f : Lp E p μ) : ‖f‖₊ = ENNReal.toNNReal (snorm f p μ) :=
Subtype.eta _ _
#align measure_theory.Lp.nnnorm_def MeasureTheory.Lp.nnnorm_def
+-/
+#print MeasureTheory.Lp.coe_nnnorm /-
@[simp, norm_cast]
protected theorem coe_nnnorm (f : Lp E p μ) : (‖f‖₊ : ℝ) = ‖f‖ :=
rfl
#align measure_theory.Lp.coe_nnnorm MeasureTheory.Lp.coe_nnnorm
+-/
#print MeasureTheory.Lp.norm_toLp /-
@[simp]
@@ -290,16 +348,20 @@ theorem nnnorm_toLp (f : α → E) (hf : Memℒp f p μ) :
#align measure_theory.Lp.nnnorm_to_Lp MeasureTheory.Lp.nnnorm_toLp
-/
+#print MeasureTheory.Lp.dist_def /-
theorem dist_def (f g : Lp E p μ) : dist f g = (snorm (f - g) p μ).toReal :=
by
simp_rw [dist, norm_def]
congr 1
apply snorm_congr_ae (coe_fn_sub _ _)
#align measure_theory.Lp.dist_def MeasureTheory.Lp.dist_def
+-/
+#print MeasureTheory.Lp.edist_def /-
theorem edist_def (f g : Lp E p μ) : edist f g = snorm (f - g) p μ :=
rfl
#align measure_theory.Lp.edist_def MeasureTheory.Lp.edist_def
+-/
#print MeasureTheory.Lp.edist_toLp_toLp /-
@[simp]
@@ -316,6 +378,7 @@ theorem edist_toLp_zero (f : α → E) (hf : Memℒp f p μ) : edist (hf.toLp f)
#align measure_theory.Lp.edist_to_Lp_zero MeasureTheory.Lp.edist_toLp_zero
-/
+#print MeasureTheory.Lp.nnnorm_zero /-
@[simp]
theorem nnnorm_zero : ‖(0 : Lp E p μ)‖₊ = 0 :=
by
@@ -323,12 +386,16 @@ theorem nnnorm_zero : ‖(0 : Lp E p μ)‖₊ = 0 :=
change (snorm (⇑(0 : α →ₘ[μ] E)) p μ).toNNReal = 0
simp [snorm_congr_ae ae_eq_fun.coe_fn_zero, snorm_zero]
#align measure_theory.Lp.nnnorm_zero MeasureTheory.Lp.nnnorm_zero
+-/
+#print MeasureTheory.Lp.norm_zero /-
@[simp]
theorem norm_zero : ‖(0 : Lp E p μ)‖ = 0 :=
congr_arg coe nnnorm_zero
#align measure_theory.Lp.norm_zero MeasureTheory.Lp.norm_zero
+-/
+#print MeasureTheory.Lp.nnnorm_eq_zero_iff /-
theorem nnnorm_eq_zero_iff {f : Lp E p μ} (hp : 0 < p) : ‖f‖₊ = 0 ↔ f = 0 :=
by
refine' ⟨fun hf => _, fun hf => by simp [hf]⟩
@@ -338,11 +405,15 @@ theorem nnnorm_eq_zero_iff {f : Lp E p μ} (hp : 0 < p) : ‖f‖₊ = 0 ↔ f =
exact Subtype.eq (ae_eq_fun.ext (hf.trans ae_eq_fun.coe_fn_zero.symm))
· exact absurd hf (snorm_ne_top f)
#align measure_theory.Lp.nnnorm_eq_zero_iff MeasureTheory.Lp.nnnorm_eq_zero_iff
+-/
+#print MeasureTheory.Lp.norm_eq_zero_iff /-
theorem norm_eq_zero_iff {f : Lp E p μ} (hp : 0 < p) : ‖f‖ = 0 ↔ f = 0 :=
Iff.symm <| (nnnorm_eq_zero_iff hp).symm.trans <| (NNReal.coe_eq_zero _).symm
#align measure_theory.Lp.norm_eq_zero_iff MeasureTheory.Lp.norm_eq_zero_iff
+-/
+#print MeasureTheory.Lp.eq_zero_iff_ae_eq_zero /-
theorem eq_zero_iff_ae_eq_zero {f : Lp E p μ} : f = 0 ↔ f =ᵐ[μ] 0 :=
by
constructor
@@ -355,17 +426,23 @@ theorem eq_zero_iff_ae_eq_zero {f : Lp E p μ} : f = 0 ↔ f =ᵐ[μ] 0 :=
rw [ha]
exact h'a.symm
#align measure_theory.Lp.eq_zero_iff_ae_eq_zero MeasureTheory.Lp.eq_zero_iff_ae_eq_zero
+-/
+#print MeasureTheory.Lp.nnnorm_neg /-
@[simp]
theorem nnnorm_neg (f : Lp E p μ) : ‖-f‖₊ = ‖f‖₊ := by
rw [nnnorm_def, nnnorm_def, snorm_congr_ae (coe_fn_neg _), snorm_neg]
#align measure_theory.Lp.nnnorm_neg MeasureTheory.Lp.nnnorm_neg
+-/
+#print MeasureTheory.Lp.norm_neg /-
@[simp]
theorem norm_neg (f : Lp E p μ) : ‖-f‖ = ‖f‖ :=
(congr_arg (coe : ℝ≥0 → ℝ) (nnnorm_neg f) : _)
#align measure_theory.Lp.norm_neg MeasureTheory.Lp.norm_neg
+-/
+#print MeasureTheory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul /-
theorem nnnorm_le_mul_nnnorm_of_ae_le_mul {c : ℝ≥0} {f : Lp E p μ} {g : Lp F p μ}
(h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) : ‖f‖₊ ≤ c * ‖g‖₊ :=
by
@@ -376,7 +453,9 @@ theorem nnnorm_le_mul_nnnorm_of_ae_le_mul {c : ℝ≥0} {f : Lp E p μ} {g : Lp
· exact (Lp.mem_ℒp _).snorm_ne_top
· exact ENNReal.mul_ne_top ENNReal.coe_ne_top (Lp.mem_ℒp _).snorm_ne_top
#align measure_theory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul MeasureTheory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul
+-/
+#print MeasureTheory.Lp.norm_le_mul_norm_of_ae_le_mul /-
theorem norm_le_mul_norm_of_ae_le_mul {c : ℝ} {f : Lp E p μ} {g : Lp F p μ}
(h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : ‖f‖ ≤ c * ‖g‖ :=
by
@@ -387,44 +466,60 @@ theorem norm_le_mul_norm_of_ae_le_mul {c : ℝ} {f : Lp E p μ} {g : Lp F p μ}
have := snorm_eq_zero_and_zero_of_ae_le_mul_neg h hc p
simp [this]
#align measure_theory.Lp.norm_le_mul_norm_of_ae_le_mul MeasureTheory.Lp.norm_le_mul_norm_of_ae_le_mul
+-/
+#print MeasureTheory.Lp.norm_le_norm_of_ae_le /-
theorem norm_le_norm_of_ae_le {f : Lp E p μ} {g : Lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
‖f‖ ≤ ‖g‖ :=
by
rw [norm_def, norm_def, ENNReal.toReal_le_toReal (snorm_ne_top _) (snorm_ne_top _)]
exact snorm_mono_ae h
#align measure_theory.Lp.norm_le_norm_of_ae_le MeasureTheory.Lp.norm_le_norm_of_ae_le
+-/
+#print MeasureTheory.Lp.mem_Lp_of_nnnorm_ae_le_mul /-
theorem mem_Lp_of_nnnorm_ae_le_mul {c : ℝ≥0} {f : α →ₘ[μ] E} {g : Lp F p μ}
(h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) : f ∈ Lp E p μ :=
mem_Lp_iff_memℒp.2 <| Memℒp.of_nnnorm_le_mul (Lp.memℒp g) f.AEStronglyMeasurable h
#align measure_theory.Lp.mem_Lp_of_nnnorm_ae_le_mul MeasureTheory.Lp.mem_Lp_of_nnnorm_ae_le_mul
+-/
+#print MeasureTheory.Lp.mem_Lp_of_ae_le_mul /-
theorem mem_Lp_of_ae_le_mul {c : ℝ} {f : α →ₘ[μ] E} {g : Lp F p μ}
(h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : f ∈ Lp E p μ :=
mem_Lp_iff_memℒp.2 <| Memℒp.of_le_mul (Lp.memℒp g) f.AEStronglyMeasurable h
#align measure_theory.Lp.mem_Lp_of_ae_le_mul MeasureTheory.Lp.mem_Lp_of_ae_le_mul
+-/
+#print MeasureTheory.Lp.mem_Lp_of_nnnorm_ae_le /-
theorem mem_Lp_of_nnnorm_ae_le {f : α →ₘ[μ] E} {g : Lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ ‖g x‖₊) :
f ∈ Lp E p μ :=
mem_Lp_iff_memℒp.2 <| Memℒp.of_le (Lp.memℒp g) f.AEStronglyMeasurable h
#align measure_theory.Lp.mem_Lp_of_nnnorm_ae_le MeasureTheory.Lp.mem_Lp_of_nnnorm_ae_le
+-/
+#print MeasureTheory.Lp.mem_Lp_of_ae_le /-
theorem mem_Lp_of_ae_le {f : α →ₘ[μ] E} {g : Lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
f ∈ Lp E p μ :=
mem_Lp_of_nnnorm_ae_le h
#align measure_theory.Lp.mem_Lp_of_ae_le MeasureTheory.Lp.mem_Lp_of_ae_le
+-/
+#print MeasureTheory.Lp.mem_Lp_of_ae_nnnorm_bound /-
theorem mem_Lp_of_ae_nnnorm_bound [IsFiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ≥0)
(hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) : f ∈ Lp E p μ :=
mem_Lp_iff_memℒp.2 <| Memℒp.of_bound f.AEStronglyMeasurable _ hfC
#align measure_theory.Lp.mem_Lp_of_ae_nnnorm_bound MeasureTheory.Lp.mem_Lp_of_ae_nnnorm_bound
+-/
+#print MeasureTheory.Lp.mem_Lp_of_ae_bound /-
theorem mem_Lp_of_ae_bound [IsFiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ) (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
f ∈ Lp E p μ :=
mem_Lp_iff_memℒp.2 <| Memℒp.of_bound f.AEStronglyMeasurable _ hfC
#align measure_theory.Lp.mem_Lp_of_ae_bound MeasureTheory.Lp.mem_Lp_of_ae_bound
+-/
+#print MeasureTheory.Lp.nnnorm_le_of_ae_bound /-
theorem nnnorm_le_of_ae_bound [IsFiniteMeasure μ] {f : Lp E p μ} {C : ℝ≥0}
(hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) : ‖f‖₊ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ * C :=
by
@@ -437,7 +532,9 @@ theorem nnnorm_le_of_ae_bound [IsFiniteMeasure μ] {f : Lp E p μ} {C : ℝ≥0}
rw [← coe_measure_univ_nnreal μ, ENNReal.coe_rpow_of_ne_zero (measure_univ_nnreal_pos hμ).ne',
ENNReal.coe_mul, mul_comm, ENNReal.smul_def, smul_eq_mul]
#align measure_theory.Lp.nnnorm_le_of_ae_bound MeasureTheory.Lp.nnnorm_le_of_ae_bound
+-/
+#print MeasureTheory.Lp.norm_le_of_ae_bound /-
theorem norm_le_of_ae_bound [IsFiniteMeasure μ] {f : Lp E p μ} {C : ℝ} (hC : 0 ≤ C)
(hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : ‖f‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ * C :=
by
@@ -445,6 +542,7 @@ theorem norm_le_of_ae_bound [IsFiniteMeasure μ] {f : Lp E p μ} {C : ℝ} (hC :
have := nnnorm_le_of_ae_bound hfC
rwa [← NNReal.coe_le_coe, NNReal.coe_mul, NNReal.coe_rpow] at this
#align measure_theory.Lp.norm_le_of_ae_bound MeasureTheory.Lp.norm_le_of_ae_bound
+-/
instance [hp : Fact (1 ≤ p)] : NormedAddCommGroup (Lp E p μ) :=
{
@@ -483,6 +581,7 @@ variable [NormedRing 𝕜] [NormedRing 𝕜'] [Module 𝕜 E] [Module 𝕜' E]
variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜' E]
+#print MeasureTheory.Lp.mem_Lp_const_smul /-
theorem mem_Lp_const_smul (c : 𝕜) (f : Lp E p μ) : c • ↑f ∈ Lp E p μ :=
by
rw [mem_Lp_iff_snorm_lt_top, snorm_congr_ae (ae_eq_fun.coe_fn_smul _ _)]
@@ -490,27 +589,34 @@ theorem mem_Lp_const_smul (c : 𝕜) (f : Lp E p μ) : c • ↑f ∈ Lp E p μ
rw [ENNReal.smul_def, smul_eq_mul, ENNReal.mul_lt_top_iff]
exact Or.inl ⟨ENNReal.coe_lt_top, f.prop⟩
#align measure_theory.Lp.mem_Lp_const_smul MeasureTheory.Lp.mem_Lp_const_smul
+-/
variable (E p μ 𝕜)
+#print MeasureTheory.Lp.LpSubmodule /-
/-- The `𝕜`-submodule of elements of `α →ₘ[μ] E` whose `Lp` norm is finite. This is `Lp E p μ`,
with extra structure. -/
def LpSubmodule : Submodule 𝕜 (α →ₘ[μ] E) :=
{ Lp E p μ with smul_mem' := fun c f hf => by simpa using mem_Lp_const_smul c ⟨f, hf⟩ }
#align measure_theory.Lp.Lp_submodule MeasureTheory.Lp.LpSubmodule
+-/
variable {E p μ 𝕜}
+#print MeasureTheory.Lp.coe_LpSubmodule /-
theorem coe_LpSubmodule : (LpSubmodule E p μ 𝕜).toAddSubgroup = Lp E p μ :=
rfl
#align measure_theory.Lp.coe_Lp_submodule MeasureTheory.Lp.coe_LpSubmodule
+-/
instance : Module 𝕜 (Lp E p μ) :=
{ (LpSubmodule E p μ 𝕜).Module with }
+#print MeasureTheory.Lp.coeFn_smul /-
theorem coeFn_smul (c : 𝕜) (f : Lp E p μ) : ⇑(c • f) =ᵐ[μ] c • f :=
AEEqFun.coeFn_smul _ _
#align measure_theory.Lp.coe_fn_smul MeasureTheory.Lp.coeFn_smul
+-/
instance [Module 𝕜ᵐᵒᵖ E] [BoundedSMul 𝕜ᵐᵒᵖ E] [IsCentralScalar 𝕜 E] : IsCentralScalar 𝕜 (Lp E p μ)
where op_smul_eq_smul k f := Subtype.ext <| op_smul_eq_smul k (f : α →ₘ[μ] E)
@@ -546,10 +652,12 @@ namespace Memℒp
variable {𝕜 : Type _} [NormedRing 𝕜] [Module 𝕜 E] [BoundedSMul 𝕜 E]
+#print MeasureTheory.Memℒp.toLp_const_smul /-
theorem toLp_const_smul {f : α → E} (c : 𝕜) (hf : Memℒp f p μ) :
(hf.const_smul c).toLp (c • f) = c • hf.toLp f :=
rfl
#align measure_theory.mem_ℒp.to_Lp_const_smul MeasureTheory.Memℒp.toLp_const_smul
+-/
end Memℒp
@@ -564,6 +672,7 @@ section Indicator
variable {s : Set α} {hs : MeasurableSet s} {c : E} {f : α → E} {hf : AEStronglyMeasurable f μ}
+#print MeasureTheory.snormEssSup_indicator_le /-
theorem snormEssSup_indicator_le (s : Set α) (f : α → G) :
snormEssSup (s.indicator f) μ ≤ snormEssSup f μ :=
by
@@ -571,7 +680,9 @@ theorem snormEssSup_indicator_le (s : Set α) (f : α → G) :
rw [ENNReal.coe_le_coe, nnnorm_indicator_eq_indicator_nnnorm]
exact Set.indicator_le_self s _ x
#align measure_theory.snorm_ess_sup_indicator_le MeasureTheory.snormEssSup_indicator_le
+-/
+#print MeasureTheory.snormEssSup_indicator_const_le /-
theorem snormEssSup_indicator_const_le (s : Set α) (c : G) :
snormEssSup (s.indicator fun x : α => c) μ ≤ ‖c‖₊ :=
by
@@ -580,7 +691,9 @@ theorem snormEssSup_indicator_const_le (s : Set α) (c : G) :
exact zero_le _
· exact (snorm_ess_sup_indicator_le s fun x => c).trans (snorm_ess_sup_const c hμ0).le
#align measure_theory.snorm_ess_sup_indicator_const_le MeasureTheory.snormEssSup_indicator_const_le
+-/
+#print MeasureTheory.snormEssSup_indicator_const_eq /-
theorem snormEssSup_indicator_const_eq (s : Set α) (c : G) (hμs : μ s ≠ 0) :
snormEssSup (s.indicator fun x : α => c) μ = ‖c‖₊ :=
by
@@ -592,9 +705,11 @@ theorem snormEssSup_indicator_const_eq (s : Set α) (c : G) (hμs : μ s ≠ 0)
rw [Set.mem_setOf_eq, Set.indicator_of_mem hx_mem]
exact le_rfl
#align measure_theory.snorm_ess_sup_indicator_const_eq MeasureTheory.snormEssSup_indicator_const_eq
+-/
variable (hs)
+#print MeasureTheory.snorm_indicator_le /-
theorem snorm_indicator_le {E : Type _} [NormedAddCommGroup E] (f : α → E) :
snorm (s.indicator f) p μ ≤ snorm f p μ :=
by
@@ -603,9 +718,11 @@ theorem snorm_indicator_le {E : Type _} [NormedAddCommGroup E] (f : α → E) :
rw [nnnorm_indicator_eq_indicator_nnnorm]
exact s.indicator_le_self _ x
#align measure_theory.snorm_indicator_le MeasureTheory.snorm_indicator_le
+-/
variable {hs}
+#print MeasureTheory.snorm_indicator_const /-
theorem snorm_indicator_const {c : G} (hs : MeasurableSet s) (hp : p ≠ 0) (hp_top : p ≠ ∞) :
snorm (s.indicator fun x => c) p μ = ‖c‖₊ * μ s ^ (1 / p.toReal) :=
by
@@ -622,7 +739,9 @@ theorem snorm_indicator_const {c : G} (hs : MeasurableSet s) (hp : p ≠ 0) (hp_
· rw [← ENNReal.rpow_mul, mul_one_div_cancel hp_pos.ne.symm, ENNReal.rpow_one]
· simp [hp_pos.le]
#align measure_theory.snorm_indicator_const MeasureTheory.snorm_indicator_const
+-/
+#print MeasureTheory.snorm_indicator_const' /-
theorem snorm_indicator_const' {c : G} (hs : MeasurableSet s) (hμs : μ s ≠ 0) (hp : p ≠ 0) :
snorm (s.indicator fun _ => c) p μ = ‖c‖₊ * μ s ^ (1 / p.toReal) :=
by
@@ -630,7 +749,9 @@ theorem snorm_indicator_const' {c : G} (hs : MeasurableSet s) (hμs : μ s ≠ 0
· simp [hp_top, snorm_ess_sup_indicator_const_eq s c hμs]
· exact snorm_indicator_const hs hp hp_top
#align measure_theory.snorm_indicator_const' MeasureTheory.snorm_indicator_const'
+-/
+#print MeasureTheory.snorm_indicator_const_le /-
theorem snorm_indicator_const_le (c : G) (p : ℝ≥0∞) :
snorm (s.indicator fun x => c) p μ ≤ ‖c‖₊ * μ s ^ (1 / p.toReal) :=
by
@@ -647,11 +768,15 @@ theorem snorm_indicator_const_le (c : G) (p : ℝ≥0∞) :
(snorm_indicator_const (measurable_set_to_measurable _ _) hp h'p)
_ = ‖c‖₊ * μ s ^ (1 / p.to_real) := by rw [measure_to_measurable]
#align measure_theory.snorm_indicator_const_le MeasureTheory.snorm_indicator_const_le
+-/
+#print MeasureTheory.Memℒp.indicator /-
theorem Memℒp.indicator (hs : MeasurableSet s) (hf : Memℒp f p μ) : Memℒp (s.indicator f) p μ :=
⟨hf.AEStronglyMeasurable.indicator hs, lt_of_le_of_lt (snorm_indicator_le f) hf.snorm_lt_top⟩
#align measure_theory.mem_ℒp.indicator MeasureTheory.Memℒp.indicator
+-/
+#print MeasureTheory.snormEssSup_indicator_eq_snormEssSup_restrict /-
theorem snormEssSup_indicator_eq_snormEssSup_restrict {f : α → F} (hs : MeasurableSet s) :
snormEssSup (s.indicator f) μ = snormEssSup f (μ.restrict s) :=
by
@@ -667,7 +792,9 @@ theorem snormEssSup_indicator_eq_snormEssSup_restrict {f : α → F} (hs : Measu
rw [Pi.zero_apply]
exact zero_le _
#align measure_theory.snorm_ess_sup_indicator_eq_snorm_ess_sup_restrict MeasureTheory.snormEssSup_indicator_eq_snormEssSup_restrict
+-/
+#print MeasureTheory.snorm_indicator_eq_snorm_restrict /-
theorem snorm_indicator_eq_snorm_restrict {f : α → F} (hs : MeasurableSet s) :
snorm (s.indicator f) p μ = snorm f p (μ.restrict s) :=
by
@@ -685,12 +812,16 @@ theorem snorm_indicator_eq_snorm_restrict {f : α → F} (hs : MeasurableSet s)
simp [ENNReal.toReal_pos hp_zero hp_top]
exact (Set.indicator_comp_of_zero h_zero).symm
#align measure_theory.snorm_indicator_eq_snorm_restrict MeasureTheory.snorm_indicator_eq_snorm_restrict
+-/
+#print MeasureTheory.memℒp_indicator_iff_restrict /-
theorem memℒp_indicator_iff_restrict (hs : MeasurableSet s) :
Memℒp (s.indicator f) p μ ↔ Memℒp f p (μ.restrict s) := by
simp [mem_ℒp, aestronglyMeasurable_indicator_iff hs, snorm_indicator_eq_snorm_restrict hs]
#align measure_theory.mem_ℒp_indicator_iff_restrict MeasureTheory.memℒp_indicator_iff_restrict
+-/
+#print MeasureTheory.memℒp_indicator_const /-
theorem memℒp_indicator_const (p : ℝ≥0∞) (hs : MeasurableSet s) (c : E) (hμsc : c = 0 ∨ μ s ≠ ∞) :
Memℒp (s.indicator fun _ => c) p μ :=
by
@@ -706,7 +837,9 @@ theorem memℒp_indicator_const (p : ℝ≥0∞) (hs : MeasurableSet s) (c : E)
· exact Or.inl hμsc
· exact Or.inr hμsc.lt_top
#align measure_theory.mem_ℒp_indicator_const MeasureTheory.memℒp_indicator_const
+-/
+#print MeasureTheory.exists_snorm_indicator_le /-
/-- The `ℒ^p` norm of the indicator of a set is uniformly small if the set itself has small measure,
for any `p < ∞`. Given here as an existential `∀ ε > 0, ∃ η > 0, ...` to avoid later
management of `ℝ≥0∞`-arithmetic. -/
@@ -739,6 +872,7 @@ theorem exists_snorm_indicator_le (hp : p ≠ ∞) (c : E) {ε : ℝ≥0∞} (h
refine' (snorm_indicator_const_le _ _).trans (le_trans _ hη_le)
exact mul_le_mul_left' (ENNReal.rpow_le_rpow hs hp₀') _
#align measure_theory.exists_snorm_indicator_le MeasureTheory.exists_snorm_indicator_le
+-/
end Indicator
@@ -748,37 +882,50 @@ open Set Function
variable {s : Set α} {hs : MeasurableSet s} {hμs : μ s ≠ ∞} {c : E}
+#print MeasureTheory.indicatorConstLp /-
/-- Indicator of a set as an element of `Lp`. -/
def indicatorConstLp (p : ℝ≥0∞) (hs : MeasurableSet s) (hμs : μ s ≠ ∞) (c : E) : Lp E p μ :=
Memℒp.toLp (s.indicator fun _ => c) (memℒp_indicator_const p hs c (Or.inr hμs))
#align measure_theory.indicator_const_Lp MeasureTheory.indicatorConstLp
+-/
+#print MeasureTheory.indicatorConstLp_coeFn /-
theorem indicatorConstLp_coeFn : ⇑(indicatorConstLp p hs hμs c) =ᵐ[μ] s.indicator fun _ => c :=
Memℒp.coeFn_toLp (memℒp_indicator_const p hs c (Or.inr hμs))
#align measure_theory.indicator_const_Lp_coe_fn MeasureTheory.indicatorConstLp_coeFn
+-/
+#print MeasureTheory.indicatorConstLp_coeFn_mem /-
theorem indicatorConstLp_coeFn_mem : ∀ᵐ x : α ∂μ, x ∈ s → indicatorConstLp p hs hμs c x = c :=
indicatorConstLp_coeFn.mono fun x hx hxs => hx.trans (Set.indicator_of_mem hxs _)
#align measure_theory.indicator_const_Lp_coe_fn_mem MeasureTheory.indicatorConstLp_coeFn_mem
+-/
+#print MeasureTheory.indicatorConstLp_coeFn_nmem /-
theorem indicatorConstLp_coeFn_nmem : ∀ᵐ x : α ∂μ, x ∉ s → indicatorConstLp p hs hμs c x = 0 :=
indicatorConstLp_coeFn.mono fun x hx hxs => hx.trans (Set.indicator_of_not_mem hxs _)
#align measure_theory.indicator_const_Lp_coe_fn_nmem MeasureTheory.indicatorConstLp_coeFn_nmem
+-/
+#print MeasureTheory.norm_indicatorConstLp /-
theorem norm_indicatorConstLp (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) :
‖indicatorConstLp p hs hμs c‖ = ‖c‖ * (μ s).toReal ^ (1 / p.toReal) := by
rw [Lp.norm_def, snorm_congr_ae indicator_const_Lp_coe_fn,
snorm_indicator_const hs hp_ne_zero hp_ne_top, ENNReal.toReal_mul, ENNReal.toReal_rpow,
ENNReal.coe_toReal, coe_nnnorm]
#align measure_theory.norm_indicator_const_Lp MeasureTheory.norm_indicatorConstLp
+-/
+#print MeasureTheory.norm_indicatorConstLp_top /-
theorem norm_indicatorConstLp_top (hμs_ne_zero : μ s ≠ 0) : ‖indicatorConstLp ∞ hs hμs c‖ = ‖c‖ :=
by
rw [Lp.norm_def, snorm_congr_ae indicator_const_Lp_coe_fn,
snorm_indicator_const' hs hμs_ne_zero ENNReal.top_ne_zero, ENNReal.top_toReal, div_zero,
ENNReal.rpow_zero, mul_one, ENNReal.coe_toReal, coe_nnnorm]
#align measure_theory.norm_indicator_const_Lp_top MeasureTheory.norm_indicatorConstLp_top
+-/
+#print MeasureTheory.norm_indicatorConstLp' /-
theorem norm_indicatorConstLp' (hp_pos : p ≠ 0) (hμs_pos : μ s ≠ 0) :
‖indicatorConstLp p hs hμs c‖ = ‖c‖ * (μ s).toReal ^ (1 / p.toReal) :=
by
@@ -787,7 +934,9 @@ theorem norm_indicatorConstLp' (hp_pos : p ≠ 0) (hμs_pos : μ s ≠ 0) :
exact norm_indicator_const_Lp_top hμs_pos
· exact norm_indicator_const_Lp hp_pos hp_top
#align measure_theory.norm_indicator_const_Lp' MeasureTheory.norm_indicatorConstLp'
+-/
+#print MeasureTheory.indicatorConst_empty /-
@[simp]
theorem indicatorConst_empty : indicatorConstLp p MeasurableSet.empty (by simp : μ ∅ ≠ ∞) c = 0 :=
by
@@ -795,7 +944,9 @@ theorem indicatorConst_empty : indicatorConstLp p MeasurableSet.empty (by simp :
convert indicator_const_Lp_coe_fn
simp [Set.indicator_empty']
#align measure_theory.indicator_const_empty MeasureTheory.indicatorConst_empty
+-/
+#print MeasureTheory.memℒp_add_of_disjoint /-
theorem memℒp_add_of_disjoint {f g : α → E} (h : Disjoint (support f) (support g))
(hf : StronglyMeasurable f) (hg : StronglyMeasurable g) :
Memℒp (f + g) p μ ↔ Memℒp f p μ ∧ Memℒp g p μ :=
@@ -805,7 +956,9 @@ theorem memℒp_add_of_disjoint {f g : α → E} (h : Disjoint (support f) (supp
· rw [← indicator_add_eq_left h]; exact hfg.indicator (measurableSet_support hf.measurable)
· rw [← indicator_add_eq_right h]; exact hfg.indicator (measurableSet_support hg.measurable)
#align measure_theory.mem_ℒp_add_of_disjoint MeasureTheory.memℒp_add_of_disjoint
+-/
+#print MeasureTheory.indicatorConstLp_disjoint_union /-
/-- The indicator of a disjoint union of two sets is the sum of the indicators of the sets. -/
theorem indicatorConstLp_disjoint_union {s t : Set α} (hs : MeasurableSet s) (ht : MeasurableSet t)
(hμs : μ s ≠ ∞) (hμt : μ t ≠ ∞) (hst : s ∩ t = ∅) (c : E) :
@@ -822,9 +975,11 @@ theorem indicatorConstLp_disjoint_union {s t : Set α} (hs : MeasurableSet s) (h
(eventually_eq.add indicator_const_Lp_coe_fn.symm indicator_const_Lp_coe_fn.symm)
rw [Set.indicator_union_of_disjoint (set.disjoint_iff_inter_eq_empty.mpr hst) _]
#align measure_theory.indicator_const_Lp_disjoint_union MeasureTheory.indicatorConstLp_disjoint_union
+-/
end IndicatorConstLp
+#print MeasureTheory.Memℒp.norm_rpow_div /-
theorem Memℒp.norm_rpow_div {f : α → E} (hf : Memℒp f p μ) (q : ℝ≥0∞) :
Memℒp (fun x : α => ‖f x‖ ^ q.toReal) (p / q) μ :=
by
@@ -841,7 +996,9 @@ theorem Memℒp.norm_rpow_div {f : α → E} (hf : Memℒp f p μ) (q : ℝ≥0
mul_one]
exact hf.2.Ne
#align measure_theory.mem_ℒp.norm_rpow_div MeasureTheory.Memℒp.norm_rpow_div
+-/
+#print MeasureTheory.memℒp_norm_rpow_iff /-
theorem memℒp_norm_rpow_iff {q : ℝ≥0∞} {f : α → E} (hf : AEStronglyMeasurable f μ) (q_zero : q ≠ 0)
(q_top : q ≠ ∞) : Memℒp (fun x : α => ‖f x‖ ^ q.toReal) (p / q) μ ↔ Memℒp f p μ :=
by
@@ -856,13 +1013,16 @@ theorem memℒp_norm_rpow_iff {q : ℝ≥0∞} {f : α → E} (hf : AEStronglyMe
rw [div_eq_mul_inv, inv_inv, div_eq_mul_inv, mul_assoc, ENNReal.inv_mul_cancel q_zero q_top,
mul_one]
#align measure_theory.mem_ℒp_norm_rpow_iff MeasureTheory.memℒp_norm_rpow_iff
+-/
+#print MeasureTheory.Memℒp.norm_rpow /-
theorem Memℒp.norm_rpow {f : α → E} (hf : Memℒp f p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) :
Memℒp (fun x : α => ‖f x‖ ^ p.toReal) 1 μ :=
by
convert hf.norm_rpow_div p
rw [div_eq_mul_inv, ENNReal.mul_inv_cancel hp_ne_zero hp_ne_top]
#align measure_theory.mem_ℒp.norm_rpow MeasureTheory.Memℒp.norm_rpow
+-/
end MeasureTheory
@@ -881,6 +1041,7 @@ section Composition
variable {g : E → F} {c : ℝ≥0}
+#print LipschitzWith.comp_memℒp /-
theorem LipschitzWith.comp_memℒp {α E F} {K} [MeasurableSpace α] {μ : Measure α}
[NormedAddCommGroup E] [NormedAddCommGroup F] {f : α → E} {g : E → F} (hg : LipschitzWith K g)
(g0 : g 0 = 0) (hL : Memℒp f p μ) : Memℒp (g ∘ f) p μ :=
@@ -890,7 +1051,9 @@ theorem LipschitzWith.comp_memℒp {α E F} {K} [MeasurableSpace α] {μ : Measu
simpa [g0] using hg.norm_sub_le (f a) 0
hL.of_le_mul (hg.continuous.comp_ae_strongly_measurable hL.1) (eventually_of_forall this)
#align lipschitz_with.comp_mem_ℒp LipschitzWith.comp_memℒp
+-/
+#print MeasureTheory.Memℒp.of_comp_antilipschitzWith /-
theorem MeasureTheory.Memℒp.of_comp_antilipschitzWith {α E F} {K'} [MeasurableSpace α]
{μ : Measure α} [NormedAddCommGroup E] [NormedAddCommGroup F] {f : α → E} {g : E → F}
(hL : Memℒp (g ∘ f) p μ) (hg : UniformContinuous g) (hg' : AntilipschitzWith K' g)
@@ -905,15 +1068,19 @@ theorem MeasureTheory.Memℒp.of_comp_antilipschitzWith {α E F} {K'} [Measurabl
(hg'.uniform_embedding hg).Embedding.aestronglyMeasurable_comp_iff.1 hL.1
exact hL.of_le_mul B (Filter.eventually_of_forall A)
#align measure_theory.mem_ℒp.of_comp_antilipschitz_with MeasureTheory.Memℒp.of_comp_antilipschitzWith
+-/
namespace LipschitzWith
+#print LipschitzWith.memℒp_comp_iff_of_antilipschitz /-
theorem memℒp_comp_iff_of_antilipschitz {α E F} {K K'} [MeasurableSpace α] {μ : Measure α}
[NormedAddCommGroup E] [NormedAddCommGroup F] {f : α → E} {g : E → F} (hg : LipschitzWith K g)
(hg' : AntilipschitzWith K' g) (g0 : g 0 = 0) : Memℒp (g ∘ f) p μ ↔ Memℒp f p μ :=
⟨fun h => h.of_comp_antilipschitzWith hg.UniformContinuous hg' g0, fun h => hg.comp_memℒp g0 h⟩
#align lipschitz_with.mem_ℒp_comp_iff_of_antilipschitz LipschitzWith.memℒp_comp_iff_of_antilipschitz
+-/
+#print LipschitzWith.compLp /-
/-- When `g` is a Lipschitz function sending `0` to `0` and `f` is in `Lp`, then `g ∘ f` is well
defined as an element of `Lp`. -/
def compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : Lp E p μ) : Lp F p μ :=
@@ -926,12 +1093,16 @@ def compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : Lp E p μ) : Lp F p μ :
rw [← dist_zero_right, ← dist_zero_right, ← g0]
exact hg.dist_le_mul (f a) 0⟩
#align lipschitz_with.comp_Lp LipschitzWith.compLp
+-/
+#print LipschitzWith.coeFn_compLp /-
theorem coeFn_compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : Lp E p μ) :
hg.compLp g0 f =ᵐ[μ] g ∘ f :=
AEEqFun.coeFn_comp _ _ _
#align lipschitz_with.coe_fn_comp_Lp LipschitzWith.coeFn_compLp
+-/
+#print LipschitzWith.compLp_zero /-
@[simp]
theorem compLp_zero (hg : LipschitzWith c g) (g0 : g 0 = 0) : hg.compLp g0 (0 : Lp E p μ) = 0 :=
by
@@ -940,7 +1111,9 @@ theorem compLp_zero (hg : LipschitzWith c g) (g0 : g 0 = 0) : hg.compLp g0 (0 :
filter_upwards [Lp.coe_fn_zero E p μ] with _ ha
simp [ha, g0]
#align lipschitz_with.comp_Lp_zero LipschitzWith.compLp_zero
+-/
+#print LipschitzWith.norm_compLp_sub_le /-
theorem norm_compLp_sub_le (hg : LipschitzWith c g) (g0 : g 0 = 0) (f f' : Lp E p μ) :
‖hg.compLp g0 f - hg.compLp g0 f'‖ ≤ c * ‖f - f'‖ :=
by
@@ -950,20 +1123,27 @@ theorem norm_compLp_sub_le (hg : LipschitzWith c g) (g0 : g 0 = 0) (f f' : Lp E
simp [ha1, ha2, ha3, ha4, ← dist_eq_norm]
exact hg.dist_le_mul (f a) (f' a)
#align lipschitz_with.norm_comp_Lp_sub_le LipschitzWith.norm_compLp_sub_le
+-/
+#print LipschitzWith.norm_compLp_le /-
theorem norm_compLp_le (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : Lp E p μ) :
‖hg.compLp g0 f‖ ≤ c * ‖f‖ := by simpa using hg.norm_comp_Lp_sub_le g0 f 0
#align lipschitz_with.norm_comp_Lp_le LipschitzWith.norm_compLp_le
+-/
+#print LipschitzWith.lipschitzWith_compLp /-
theorem lipschitzWith_compLp [Fact (1 ≤ p)] (hg : LipschitzWith c g) (g0 : g 0 = 0) :
LipschitzWith c (hg.compLp g0 : Lp E p μ → Lp F p μ) :=
LipschitzWith.of_dist_le_mul fun f g => by simp [dist_eq_norm, norm_comp_Lp_sub_le]
#align lipschitz_with.lipschitz_with_comp_Lp LipschitzWith.lipschitzWith_compLp
+-/
+#print LipschitzWith.continuous_compLp /-
theorem continuous_compLp [Fact (1 ≤ p)] (hg : LipschitzWith c g) (g0 : g 0 = 0) :
Continuous (hg.compLp g0 : Lp E p μ → Lp F p μ) :=
(lipschitzWith_compLp hg g0).Continuous
#align lipschitz_with.continuous_comp_Lp LipschitzWith.continuous_compLp
+-/
end LipschitzWith
@@ -971,36 +1151,49 @@ namespace ContinuousLinearMap
variable {𝕜 : Type _} [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] [NormedSpace 𝕜 F]
+#print ContinuousLinearMap.compLp /-
/-- Composing `f : Lp ` with `L : E →L[𝕜] F`. -/
def compLp (L : E →L[𝕜] F) (f : Lp E p μ) : Lp F p μ :=
L.lipschitz.compLp (map_zero L) f
#align continuous_linear_map.comp_Lp ContinuousLinearMap.compLp
+-/
+#print ContinuousLinearMap.coeFn_compLp /-
theorem coeFn_compLp (L : E →L[𝕜] F) (f : Lp E p μ) : ∀ᵐ a ∂μ, (L.compLp f) a = L (f a) :=
LipschitzWith.coeFn_compLp _ _ _
#align continuous_linear_map.coe_fn_comp_Lp ContinuousLinearMap.coeFn_compLp
+-/
+#print ContinuousLinearMap.coeFn_compLp' /-
theorem coeFn_compLp' (L : E →L[𝕜] F) (f : Lp E p μ) : L.compLp f =ᵐ[μ] fun a => L (f a) :=
L.coeFn_compLp f
#align continuous_linear_map.coe_fn_comp_Lp' ContinuousLinearMap.coeFn_compLp'
+-/
+#print ContinuousLinearMap.comp_memℒp /-
theorem comp_memℒp (L : E →L[𝕜] F) (f : Lp E p μ) : Memℒp (L ∘ f) p μ :=
(Lp.memℒp (L.compLp f)).ae_eq (L.coeFn_compLp' f)
#align continuous_linear_map.comp_mem_ℒp ContinuousLinearMap.comp_memℒp
+-/
+#print ContinuousLinearMap.comp_memℒp' /-
theorem comp_memℒp' (L : E →L[𝕜] F) {f : α → E} (hf : Memℒp f p μ) : Memℒp (L ∘ f) p μ :=
(L.comp_memℒp (hf.toLp f)).ae_eq (EventuallyEq.fun_comp hf.coeFn_toLp _)
#align continuous_linear_map.comp_mem_ℒp' ContinuousLinearMap.comp_memℒp'
+-/
section IsROrC
variable {K : Type _} [IsROrC K]
+#print MeasureTheory.Memℒp.ofReal /-
theorem MeasureTheory.Memℒp.ofReal {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => (f x : K)) p μ :=
(@IsROrC.ofRealClm K _).comp_memℒp' hf
#align measure_theory.mem_ℒp.of_real MeasureTheory.Memℒp.ofReal
+-/
+#print MeasureTheory.memℒp_re_im_iff /-
theorem MeasureTheory.memℒp_re_im_iff {f : α → K} :
Memℒp (fun x => IsROrC.re (f x)) p μ ∧ Memℒp (fun x => IsROrC.im (f x)) p μ ↔ Memℒp f p μ :=
by
@@ -1011,9 +1204,11 @@ theorem MeasureTheory.memℒp_re_im_iff {f : α → K} :
rw [Pi.add_apply, mul_comm, IsROrC.re_add_im]
all_goals infer_instance
#align measure_theory.mem_ℒp_re_im_iff MeasureTheory.memℒp_re_im_iff
+-/
end IsROrC
+#print ContinuousLinearMap.add_compLp /-
theorem add_compLp (L L' : E →L[𝕜] F) (f : Lp E p μ) :
(L + L').compLp f = L.compLp f + L'.compLp f :=
by
@@ -1025,7 +1220,9 @@ theorem add_compLp (L L' : E →L[𝕜] F) (f : Lp E p μ) :
refine' eventually_of_forall fun x => _
rfl
#align continuous_linear_map.add_comp_Lp ContinuousLinearMap.add_compLp
+-/
+#print ContinuousLinearMap.smul_compLp /-
theorem smul_compLp {𝕜'} [NormedRing 𝕜'] [Module 𝕜' F] [BoundedSMul 𝕜' F] [SMulCommClass 𝕜 𝕜' F]
(c : 𝕜') (L : E →L[𝕜] F) (f : Lp E p μ) : (c • L).compLp f = c • L.compLp f :=
by
@@ -1036,13 +1233,17 @@ theorem smul_compLp {𝕜'} [NormedRing 𝕜'] [Module 𝕜' F] [BoundedSMul
rw [Pi.smul_apply, hx]
rfl
#align continuous_linear_map.smul_comp_Lp ContinuousLinearMap.smul_compLp
+-/
+#print ContinuousLinearMap.norm_compLp_le /-
theorem norm_compLp_le (L : E →L[𝕜] F) (f : Lp E p μ) : ‖L.compLp f‖ ≤ ‖L‖ * ‖f‖ :=
LipschitzWith.norm_compLp_le _ _ _
#align continuous_linear_map.norm_comp_Lp_le ContinuousLinearMap.norm_compLp_le
+-/
variable (μ p)
+#print ContinuousLinearMap.compLpₗ /-
/-- Composing `f : Lp E p μ` with `L : E →L[𝕜] F`, seen as a `𝕜`-linear map on `Lp E p μ`. -/
def compLpₗ (L : E →L[𝕜] F) : Lp E p μ →ₗ[𝕜] Lp F p μ
where
@@ -1062,7 +1263,9 @@ def compLpₗ (L : E →L[𝕜] F) : Lp E p μ →ₗ[𝕜] Lp F p μ
coe_fn_comp_Lp L f] with _ ha1 ha2 ha3 ha4
simp only [ha1, ha2, ha3, ha4, SMulHomClass.map_smul, Pi.smul_apply]
#align continuous_linear_map.comp_Lpₗ ContinuousLinearMap.compLpₗ
+-/
+#print ContinuousLinearMap.compLpL /-
/-- Composing `f : Lp E p μ` with `L : E →L[𝕜] F`, seen as a continuous `𝕜`-linear map on
`Lp E p μ`. See also the similar
* `linear_map.comp_left` for functions,
@@ -1073,31 +1276,41 @@ def compLpₗ (L : E →L[𝕜] F) : Lp E p μ →ₗ[𝕜] Lp F p μ
def compLpL [Fact (1 ≤ p)] (L : E →L[𝕜] F) : Lp E p μ →L[𝕜] Lp F p μ :=
LinearMap.mkContinuous (L.compLpₗ p μ) ‖L‖ L.norm_compLp_le
#align continuous_linear_map.comp_LpL ContinuousLinearMap.compLpL
+-/
variable {μ p}
+#print ContinuousLinearMap.coeFn_compLpL /-
theorem coeFn_compLpL [Fact (1 ≤ p)] (L : E →L[𝕜] F) (f : Lp E p μ) :
L.compLpL p μ f =ᵐ[μ] fun a => L (f a) :=
L.coeFn_compLp f
#align continuous_linear_map.coe_fn_comp_LpL ContinuousLinearMap.coeFn_compLpL
+-/
+#print ContinuousLinearMap.add_compLpL /-
theorem add_compLpL [Fact (1 ≤ p)] (L L' : E →L[𝕜] F) :
(L + L').compLpL p μ = L.compLpL p μ + L'.compLpL p μ := by ext1 f; exact add_comp_Lp L L' f
#align continuous_linear_map.add_comp_LpL ContinuousLinearMap.add_compLpL
+-/
+#print ContinuousLinearMap.smul_compLpL /-
theorem smul_compLpL [Fact (1 ≤ p)] {𝕜'} [NormedRing 𝕜'] [Module 𝕜' F] [BoundedSMul 𝕜' F]
[SMulCommClass 𝕜 𝕜' F] (c : 𝕜') (L : E →L[𝕜] F) : (c • L).compLpL p μ = c • L.compLpL p μ := by
ext1 f; exact smul_comp_Lp c L f
#align continuous_linear_map.smul_comp_LpL ContinuousLinearMap.smul_compLpL
+-/
+#print ContinuousLinearMap.norm_compLpL_le /-
theorem norm_compLpL_le [Fact (1 ≤ p)] (L : E →L[𝕜] F) : ‖L.compLpL p μ‖ ≤ ‖L‖ :=
LinearMap.mkContinuous_norm_le _ (norm_nonneg _) _
#align continuous_linear_map.norm_compLpL_le ContinuousLinearMap.norm_compLpL_le
+-/
end ContinuousLinearMap
namespace MeasureTheory
+#print MeasureTheory.indicatorConstLp_eq_toSpanSingleton_compLp /-
theorem indicatorConstLp_eq_toSpanSingleton_compLp {s : Set α} [NormedSpace ℝ F]
(hs : MeasurableSet s) (hμs : μ s ≠ ∞) (x : F) :
indicatorConstLp 2 hs hμs x =
@@ -1115,65 +1328,88 @@ theorem indicatorConstLp_eq_toSpanSingleton_compLp {s : Set α} [NormedSpace ℝ
simp_rw [ContinuousLinearMap.toSpanSingleton_apply]
by_cases hy_mem : y ∈ s <;> simp [hy_mem, ContinuousLinearMap.lsmul_apply]
#align measure_theory.indicator_const_Lp_eq_to_span_singleton_comp_Lp MeasureTheory.indicatorConstLp_eq_toSpanSingleton_compLp
+-/
namespace Lp
section PosPart
+#print MeasureTheory.Lp.lipschitzWith_pos_part /-
theorem lipschitzWith_pos_part : LipschitzWith 1 fun x : ℝ => max x 0 :=
LipschitzWith.of_dist_le_mul fun x y => by simp [Real.dist_eq, abs_max_sub_max_le_abs]
#align measure_theory.Lp.lipschitz_with_pos_part MeasureTheory.Lp.lipschitzWith_pos_part
+-/
+#print MeasureTheory.Memℒp.pos_part /-
theorem MeasureTheory.Memℒp.pos_part {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => max (f x) 0) p μ :=
lipschitzWith_pos_part.comp_memℒp (max_eq_right le_rfl) hf
#align measure_theory.mem_ℒp.pos_part MeasureTheory.Memℒp.pos_part
+-/
+#print MeasureTheory.Memℒp.neg_part /-
theorem MeasureTheory.Memℒp.neg_part {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => max (-f x) 0) p μ :=
lipschitzWith_pos_part.comp_memℒp (max_eq_right le_rfl) hf.neg
#align measure_theory.mem_ℒp.neg_part MeasureTheory.Memℒp.neg_part
+-/
+#print MeasureTheory.Lp.posPart /-
/-- Positive part of a function in `L^p`. -/
def posPart (f : Lp ℝ p μ) : Lp ℝ p μ :=
lipschitzWith_pos_part.compLp (max_eq_right le_rfl) f
#align measure_theory.Lp.pos_part MeasureTheory.Lp.posPart
+-/
+#print MeasureTheory.Lp.negPart /-
/-- Negative part of a function in `L^p`. -/
def negPart (f : Lp ℝ p μ) : Lp ℝ p μ :=
posPart (-f)
#align measure_theory.Lp.neg_part MeasureTheory.Lp.negPart
+-/
+#print MeasureTheory.Lp.coe_posPart /-
@[norm_cast]
theorem coe_posPart (f : Lp ℝ p μ) : (posPart f : α →ₘ[μ] ℝ) = (f : α →ₘ[μ] ℝ).posPart :=
rfl
#align measure_theory.Lp.coe_pos_part MeasureTheory.Lp.coe_posPart
+-/
+#print MeasureTheory.Lp.coeFn_posPart /-
theorem coeFn_posPart (f : Lp ℝ p μ) : ⇑(posPart f) =ᵐ[μ] fun a => max (f a) 0 :=
AEEqFun.coeFn_posPart _
#align measure_theory.Lp.coe_fn_pos_part MeasureTheory.Lp.coeFn_posPart
+-/
+#print MeasureTheory.Lp.coeFn_negPart_eq_max /-
theorem coeFn_negPart_eq_max (f : Lp ℝ p μ) : ∀ᵐ a ∂μ, negPart f a = max (-f a) 0 :=
by
rw [neg_part]
filter_upwards [coe_fn_pos_part (-f), coe_fn_neg f] with _ h₁ h₂
rw [h₁, h₂, Pi.neg_apply]
#align measure_theory.Lp.coe_fn_neg_part_eq_max MeasureTheory.Lp.coeFn_negPart_eq_max
+-/
+#print MeasureTheory.Lp.coeFn_negPart /-
theorem coeFn_negPart (f : Lp ℝ p μ) : ∀ᵐ a ∂μ, negPart f a = -min (f a) 0 :=
(coeFn_negPart_eq_max f).mono fun a h => by rw [h, ← max_neg_neg, neg_zero]
#align measure_theory.Lp.coe_fn_neg_part MeasureTheory.Lp.coeFn_negPart
+-/
+#print MeasureTheory.Lp.continuous_posPart /-
theorem continuous_posPart [Fact (1 ≤ p)] : Continuous fun f : Lp ℝ p μ => posPart f :=
LipschitzWith.continuous_compLp _ _
#align measure_theory.Lp.continuous_pos_part MeasureTheory.Lp.continuous_posPart
+-/
+#print MeasureTheory.Lp.continuous_negPart /-
theorem continuous_negPart [Fact (1 ≤ p)] : Continuous fun f : Lp ℝ p μ => negPart f :=
by
have eq : (fun f : Lp ℝ p μ => negPart f) = fun f : Lp ℝ p μ => posPart (-f) := rfl
rw [Eq]
exact continuous_pos_part.comp continuous_neg
#align measure_theory.Lp.continuous_neg_part MeasureTheory.Lp.continuous_negPart
+-/
end PosPart
@@ -1196,6 +1432,7 @@ namespace MeasureTheory
namespace Lp
+#print MeasureTheory.Lp.snorm'_lim_eq_lintegral_liminf /-
theorem snorm'_lim_eq_lintegral_liminf {ι} [Nonempty ι] [LinearOrder ι] {f : ι → α → G} {p : ℝ}
(hp_nonneg : 0 ≤ p) {f_lim : α → G}
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
@@ -1210,8 +1447,10 @@ theorem snorm'_lim_eq_lintegral_liminf {ι} [Nonempty ι] [LinearOrder ι] {f :
refine' ((NNReal.continuous_rpow_const hp_nonneg).Tendsto ‖f_lim a‖₊).comp _
exact (continuous_nnnorm.tendsto (f_lim a)).comp ha
#align measure_theory.Lp.snorm'_lim_eq_lintegral_liminf MeasureTheory.Lp.snorm'_lim_eq_lintegral_liminf
+-/
/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic filter.is_bounded_default -/
+#print MeasureTheory.Lp.snorm'_lim_le_liminf_snorm' /-
theorem snorm'_lim_le_liminf_snorm' {E} [NormedAddCommGroup E] {f : ℕ → α → E} {p : ℝ}
(hp_pos : 0 < p) (hf : ∀ n, AEStronglyMeasurable (f n) μ) {f_lim : α → E}
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
@@ -1232,7 +1471,9 @@ theorem snorm'_lim_le_liminf_snorm' {E} [NormedAddCommGroup E] {f : ℕ → α
rw [h_pow_liminf]
simp_rw [snorm', ← ENNReal.rpow_mul, one_div, inv_mul_cancel hp_pos.ne.symm, ENNReal.rpow_one]
#align measure_theory.Lp.snorm'_lim_le_liminf_snorm' MeasureTheory.Lp.snorm'_lim_le_liminf_snorm'
+-/
+#print MeasureTheory.Lp.snorm_exponent_top_lim_eq_essSup_liminf /-
theorem snorm_exponent_top_lim_eq_essSup_liminf {ι} [Nonempty ι] [LinearOrder ι] {f : ι → α → G}
{f_lim : α → G} (h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
snorm f_lim ∞ μ = essSup (fun x => atTop.liminf fun m => (‖f m x‖₊ : ℝ≥0∞)) μ :=
@@ -1243,7 +1484,9 @@ theorem snorm_exponent_top_lim_eq_essSup_liminf {ι} [Nonempty ι] [LinearOrder
rw [ENNReal.tendsto_coe]
exact (continuous_nnnorm.tendsto (f_lim x)).comp hx
#align measure_theory.Lp.snorm_exponent_top_lim_eq_ess_sup_liminf MeasureTheory.Lp.snorm_exponent_top_lim_eq_essSup_liminf
+-/
+#print MeasureTheory.Lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top /-
theorem snorm_exponent_top_lim_le_liminf_snorm_exponent_top {ι} [Nonempty ι] [Countable ι]
[LinearOrder ι] {f : ι → α → F} {f_lim : α → F}
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
@@ -1253,7 +1496,9 @@ theorem snorm_exponent_top_lim_le_liminf_snorm_exponent_top {ι} [Nonempty ι] [
simp_rw [snorm_exponent_top, snorm_ess_sup]
exact ENNReal.essSup_liminf_le fun n => fun x => (‖f n x‖₊ : ℝ≥0∞)
#align measure_theory.Lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top MeasureTheory.Lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top
+-/
+#print MeasureTheory.Lp.snorm_lim_le_liminf_snorm /-
theorem snorm_lim_le_liminf_snorm {E} [NormedAddCommGroup E] {f : ℕ → α → E}
(hf : ∀ n, AEStronglyMeasurable (f n) μ) (f_lim : α → E)
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
@@ -1269,10 +1514,12 @@ theorem snorm_lim_le_liminf_snorm {E} [NormedAddCommGroup E] {f : ℕ → α →
have hp_pos : 0 < p.to_real := ENNReal.toReal_pos hp0 hp_top
exact snorm'_lim_le_liminf_snorm' hp_pos hf h_lim
#align measure_theory.Lp.snorm_lim_le_liminf_snorm MeasureTheory.Lp.snorm_lim_le_liminf_snorm
+-/
/-! ### `Lp` is complete iff Cauchy sequences of `ℒp` have limits in `ℒp` -/
+#print MeasureTheory.Lp.tendsto_Lp_iff_tendsto_ℒp' /-
theorem tendsto_Lp_iff_tendsto_ℒp' {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f : ι → Lp E p μ)
(f_lim : Lp E p μ) :
fi.Tendsto f (𝓝 f_lim) ↔ fi.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) :=
@@ -1283,7 +1530,9 @@ theorem tendsto_Lp_iff_tendsto_ℒp' {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f :
rw [snorm_congr_ae (Lp.coe_fn_sub _ _).symm]
exact Lp.snorm_ne_top _
#align measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp' MeasureTheory.Lp.tendsto_Lp_iff_tendsto_ℒp'
+-/
+#print MeasureTheory.Lp.tendsto_Lp_iff_tendsto_ℒp /-
theorem tendsto_Lp_iff_tendsto_ℒp {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f : ι → Lp E p μ)
(f_lim : α → E) (f_lim_ℒp : Memℒp f_lim p μ) :
fi.Tendsto f (𝓝 (f_lim_ℒp.toLp f_lim)) ↔ fi.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) :=
@@ -1294,7 +1543,9 @@ theorem tendsto_Lp_iff_tendsto_ℒp {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f :
· rw [h_eq]
exact funext fun n => snorm_congr_ae (eventually_eq.rfl.sub (mem_ℒp.coe_fn_to_Lp f_lim_ℒp))
#align measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp MeasureTheory.Lp.tendsto_Lp_iff_tendsto_ℒp
+-/
+#print MeasureTheory.Lp.tendsto_Lp_iff_tendsto_ℒp'' /-
theorem tendsto_Lp_iff_tendsto_ℒp'' {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f : ι → α → E)
(f_ℒp : ∀ n, Memℒp (f n) p μ) (f_lim : α → E) (f_lim_ℒp : Memℒp f_lim p μ) :
fi.Tendsto (fun n => (f_ℒp n).toLp (f n)) (𝓝 (f_lim_ℒp.toLp f_lim)) ↔
@@ -1308,14 +1559,18 @@ theorem tendsto_Lp_iff_tendsto_ℒp'' {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f
rw [← hx₂]
exact hx₁.symm
#align measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp'' MeasureTheory.Lp.tendsto_Lp_iff_tendsto_ℒp''
+-/
+#print MeasureTheory.Lp.tendsto_Lp_of_tendsto_ℒp /-
theorem tendsto_Lp_of_tendsto_ℒp {ι} {fi : Filter ι} [hp : Fact (1 ≤ p)] {f : ι → Lp E p μ}
(f_lim : α → E) (f_lim_ℒp : Memℒp f_lim p μ)
(h_tendsto : fi.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)) :
fi.Tendsto f (𝓝 (f_lim_ℒp.toLp f_lim)) :=
(tendsto_Lp_iff_tendsto_ℒp f f_lim f_lim_ℒp).mpr h_tendsto
#align measure_theory.Lp.tendsto_Lp_of_tendsto_ℒp MeasureTheory.Lp.tendsto_Lp_of_tendsto_ℒp
+-/
+#print MeasureTheory.Lp.cauchySeq_Lp_iff_cauchySeq_ℒp /-
theorem cauchySeq_Lp_iff_cauchySeq_ℒp {ι} [Nonempty ι] [SemilatticeSup ι] [hp : Fact (1 ≤ p)]
(f : ι → Lp E p μ) :
CauchySeq f ↔ Tendsto (fun n : ι × ι => snorm (f n.fst - f n.snd) p μ) atTop (𝓝 0) :=
@@ -1325,7 +1580,9 @@ theorem cauchySeq_Lp_iff_cauchySeq_ℒp {ι} [Nonempty ι] [SemilatticeSup ι] [
rw [snorm_congr_ae (Lp.coe_fn_sub _ _).symm]
exact snorm_ne_top _
#align measure_theory.Lp.cauchy_seq_Lp_iff_cauchy_seq_ℒp MeasureTheory.Lp.cauchySeq_Lp_iff_cauchySeq_ℒp
+-/
+#print MeasureTheory.Lp.completeSpace_lp_of_cauchy_complete_ℒp /-
theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
(H :
∀ (f : ℕ → α → E) (hf : ∀ n, Memℒp (f n) p μ) (B : ℕ → ℝ≥0∞) (hB : ∑' i, B i < ∞)
@@ -1363,6 +1620,7 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
rw [snorm_congr_ae (Lp.coe_fn_sub _ _).symm]
exact Lp.snorm_ne_top _
#align measure_theory.Lp.complete_space_Lp_of_cauchy_complete_ℒp MeasureTheory.Lp.completeSpace_lp_of_cauchy_complete_ℒp
+-/
/-! ### Prove that controlled Cauchy sequences of `ℒp` have limits in `ℒp` -/
@@ -1466,6 +1724,7 @@ private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, AE
rwa [← ENNReal.lt_rpow_one_div_iff hp_pos,
ENNReal.top_rpow_of_pos (by simp [hp_pos] : 0 < 1 / p)] at hx
+#print MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm' /-
theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p : ℝ}
(hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm' (f n - f m) p μ < B N) :
@@ -1510,7 +1769,9 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
rw [hf_rw]
exact ⟨l + f 0 x, tendsto.add_const _ hx⟩
#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm' MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm'
+-/
+#print MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm /-
theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
(hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N) :
@@ -1546,7 +1807,9 @@ theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
rwa [snorm_eq_snorm' (zero_lt_one.trans_le hp).Ne.symm hp_top] at h_cau
exact ae_tendsto_of_cauchy_snorm' hf hp1 hB h_cau'
#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm
+-/
+#print MeasureTheory.Lp.cauchy_tendsto_of_tendsto /-
theorem cauchy_tendsto_of_tendsto {f : ℕ → α → E} (hf : ∀ n, AEStronglyMeasurable (f n) μ)
(f_lim : α → E) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N)
@@ -1573,7 +1836,9 @@ theorem cauchy_tendsto_of_tendsto {f : ℕ → α → E} (hf : ∀ n, AEStrongly
refine' fun N1 => ⟨max N N1, le_max_right _ _, _⟩
exact (h_cau N n (max N N1) hn (le_max_left _ _)).le.trans h_B
#align measure_theory.Lp.cauchy_tendsto_of_tendsto MeasureTheory.Lp.cauchy_tendsto_of_tendsto
+-/
+#print MeasureTheory.Lp.memℒp_of_cauchy_tendsto /-
theorem memℒp_of_cauchy_tendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf : ∀ n, Memℒp (f n) p μ)
(f_lim : α → E) (h_lim_meas : AEStronglyMeasurable f_lim μ)
(h_tendsto : atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)) : Memℒp f_lim p μ :=
@@ -1592,7 +1857,9 @@ theorem memℒp_of_cauchy_tendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf :
rwa [h_neg, snorm_neg]
· exact (hf N).2
#align measure_theory.Lp.mem_ℒp_of_cauchy_tendsto MeasureTheory.Lp.memℒp_of_cauchy_tendsto
+-/
+#print MeasureTheory.Lp.cauchy_complete_ℒp /-
theorem cauchy_complete_ℒp [CompleteSpace E] (hp : 1 ≤ p) {f : ℕ → α → E}
(hf : ∀ n, Memℒp (f n) p μ) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N) :
@@ -1611,6 +1878,7 @@ theorem cauchy_complete_ℒp [CompleteSpace E] (hp : 1 ≤ p) {f : ℕ → α
mem_ℒp_of_cauchy_tendsto hp hf f_lim h_f_lim_meas.ae_strongly_measurable h_tendsto'
exact ⟨f_lim, h_ℒp_lim, h_tendsto'⟩
#align measure_theory.Lp.cauchy_complete_ℒp MeasureTheory.Lp.cauchy_complete_ℒp
+-/
/-! ### `Lp` is complete for `1 ≤ p` -/
@@ -1638,15 +1906,18 @@ variable [TopologicalSpace α] [BorelSpace α] [SecondCountableTopologyEither α
variable (E p μ)
+#print MeasureTheory.Lp.boundedContinuousFunction /-
/-- An additive subgroup of `Lp E p μ`, consisting of the equivalence classes which contain a
bounded continuous representative. -/
def MeasureTheory.Lp.boundedContinuousFunction : AddSubgroup (Lp E p μ) :=
AddSubgroup.addSubgroupOf
((ContinuousMap.toAEEqFunAddHom μ).comp (toContinuousMapAddHom α E)).range (Lp E p μ)
#align measure_theory.Lp.bounded_continuous_function MeasureTheory.Lp.boundedContinuousFunction
+-/
variable {E p μ}
+#print MeasureTheory.Lp.mem_boundedContinuousFunction_iff /-
/-- By definition, the elements of `Lp.bounded_continuous_function E p μ` are the elements of
`Lp E p μ` which contain a bounded continuous representative. -/
theorem MeasureTheory.Lp.mem_boundedContinuousFunction_iff {f : Lp E p μ} :
@@ -1654,11 +1925,13 @@ theorem MeasureTheory.Lp.mem_boundedContinuousFunction_iff {f : Lp E p μ} :
∃ f₀ : α →ᵇ E, f₀.toContinuousMap.toAEEqFun μ = (f : α →ₘ[μ] E) :=
AddSubgroup.mem_addSubgroupOf
#align measure_theory.Lp.mem_bounded_continuous_function_iff MeasureTheory.Lp.mem_boundedContinuousFunction_iff
+-/
namespace BoundedContinuousFunction
variable [IsFiniteMeasure μ]
+#print BoundedContinuousFunction.mem_Lp /-
/-- A bounded continuous function on a finite-measure space is in `Lp`. -/
theorem mem_Lp (f : α →ᵇ E) : f.toContinuousMap.toAEEqFun μ ∈ Lp E p μ :=
by
@@ -1666,7 +1939,9 @@ theorem mem_Lp (f : α →ᵇ E) : f.toContinuousMap.toAEEqFun μ ∈ Lp E p μ
filter_upwards [f.to_continuous_map.coe_fn_to_ae_eq_fun μ] with x _
convert f.norm_coe_le_norm x
#align bounded_continuous_function.mem_Lp BoundedContinuousFunction.mem_Lp
+-/
+#print BoundedContinuousFunction.Lp_nnnorm_le /-
/-- The `Lp`-norm of a bounded continuous function is at most a constant (depending on the measure
of the whole space) times its sup-norm. -/
theorem Lp_nnnorm_le (f : α →ᵇ E) :
@@ -1679,7 +1954,9 @@ theorem Lp_nnnorm_le (f : α →ᵇ E) :
rw [← NNReal.coe_le_coe, coe_nnnorm, coe_nnnorm]
convert f.norm_coe_le_norm x
#align bounded_continuous_function.Lp_nnnorm_le BoundedContinuousFunction.Lp_nnnorm_le
+-/
+#print BoundedContinuousFunction.Lp_norm_le /-
/-- The `Lp`-norm of a bounded continuous function is at most a constant (depending on the measure
of the whole space) times its sup-norm. -/
theorem Lp_norm_le (f : α →ᵇ E) :
@@ -1687,9 +1964,11 @@ theorem Lp_norm_le (f : α →ᵇ E) :
measureUnivNNReal μ ^ p.toReal⁻¹ * ‖f‖ :=
Lp_nnnorm_le f
#align bounded_continuous_function.Lp_norm_le BoundedContinuousFunction.Lp_norm_le
+-/
variable (p μ)
+#print BoundedContinuousFunction.toLpHom /-
/-- The normed group homomorphism of considering a bounded continuous function on a finite-measure
space as an element of `Lp`. -/
def toLpHom [Fact (1 ≤ p)] : NormedAddGroupHom (α →ᵇ E) (Lp E p μ) :=
@@ -1698,7 +1977,9 @@ def toLpHom [Fact (1 ≤ p)] : NormedAddGroupHom (α →ᵇ E) (Lp E p μ) :=
(Lp E p μ) mem_Lp with
bound' := ⟨_, Lp_norm_le⟩ }
#align bounded_continuous_function.to_Lp_hom BoundedContinuousFunction.toLpHom
+-/
+#print BoundedContinuousFunction.range_toLpHom /-
theorem range_toLpHom [Fact (1 ≤ p)] :
((toLpHom p μ).range : AddSubgroup (Lp E p μ)) =
MeasureTheory.Lp.boundedContinuousFunction E p μ :=
@@ -1709,9 +1990,11 @@ theorem range_toLpHom [Fact (1 ≤ p)] :
((ContinuousMap.toAEEqFunAddHom μ).comp (to_continuous_map_add_hom α E))
(by rintro - ⟨f, rfl⟩; exact mem_Lp f : _ ≤ Lp E p μ)
#align bounded_continuous_function.range_to_Lp_hom BoundedContinuousFunction.range_toLpHom
+-/
variable (𝕜 : Type _) [Fact (1 ≤ p)]
+#print BoundedContinuousFunction.toLp /-
/-- The bounded linear map of considering a bounded continuous function on a finite-measure space
as an element of `Lp`. -/
def toLp [NormedField 𝕜] [NormedSpace 𝕜 E] : (α →ᵇ E) →L[𝕜] Lp E p μ :=
@@ -1720,26 +2003,34 @@ def toLp [NormedField 𝕜] [NormedSpace 𝕜 E] : (α →ᵇ E) →L[𝕜] Lp E
((ContinuousMap.toAEEqFunLinearMap μ).comp (toContinuousMapLinearMap α E 𝕜)) mem_Lp)
_ Lp_norm_le
#align bounded_continuous_function.to_Lp BoundedContinuousFunction.toLp
+-/
+#print BoundedContinuousFunction.coeFn_toLp /-
theorem coeFn_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : α →ᵇ E) : toLp p μ 𝕜 f =ᵐ[μ] f :=
AEEqFun.coeFn_mk f _
#align bounded_continuous_function.coe_fn_to_Lp BoundedContinuousFunction.coeFn_toLp
+-/
variable {𝕜}
+#print BoundedContinuousFunction.range_toLp /-
theorem range_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] :
(LinearMap.range (toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)).toAddSubgroup =
MeasureTheory.Lp.boundedContinuousFunction E p μ :=
range_toLpHom p μ
#align bounded_continuous_function.range_to_Lp BoundedContinuousFunction.range_toLp
+-/
variable {p}
+#print BoundedContinuousFunction.toLp_norm_le /-
theorem toLp_norm_le [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] :
‖(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ :=
LinearMap.mkContinuous_norm_le _ (measureUnivNNReal μ ^ p.toReal⁻¹).coe_nonneg _
#align bounded_continuous_function.to_Lp_norm_le BoundedContinuousFunction.toLp_norm_le
+-/
+#print BoundedContinuousFunction.toLp_inj /-
theorem toLp_inj {f g : α →ᵇ E} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
toLp p μ 𝕜 f = toLp p μ 𝕜 g ↔ f = g :=
by
@@ -1748,10 +2039,13 @@ theorem toLp_inj {f g : α →ᵇ E} [μ.IsOpenPosMeasure] [NormedField 𝕜] [N
refine' (coe_fn_to_Lp p μ 𝕜 f).symm.trans (eventually_eq.trans _ <| coe_fn_to_Lp p μ 𝕜 g)
rw [h]
#align bounded_continuous_function.to_Lp_inj BoundedContinuousFunction.toLp_inj
+-/
+#print BoundedContinuousFunction.toLp_injective /-
theorem toLp_injective [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
Function.Injective ⇑(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ) := fun f g hfg => (toLp_inj μ).mp hfg
#align bounded_continuous_function.to_Lp_injective BoundedContinuousFunction.toLp_injective
+-/
end BoundedContinuousFunction
@@ -1761,6 +2055,7 @@ variable [CompactSpace α] [IsFiniteMeasure μ]
variable (𝕜 : Type _) (p μ) [Fact (1 ≤ p)]
+#print ContinuousMap.toLp /-
/-- The bounded linear map of considering a continuous function on a compact finite-measure
space `α` as an element of `Lp`. By definition, the norm on `C(α, E)` is the sup-norm, transferred
from the space `α →ᵇ E` of bounded continuous functions, so this construction is just a matter of
@@ -1769,9 +2064,11 @@ def toLp [NormedField 𝕜] [NormedSpace 𝕜 E] : C(α, E) →L[𝕜] Lp E p μ
(BoundedContinuousFunction.toLp p μ 𝕜).comp
(linearIsometryBoundedOfCompact α E 𝕜).toLinearIsometry.toContinuousLinearMap
#align continuous_map.to_Lp ContinuousMap.toLp
+-/
variable {𝕜}
+#print ContinuousMap.range_toLp /-
theorem range_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] :
(LinearMap.range (toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)).toAddSubgroup =
MeasureTheory.Lp.boundedContinuousFunction E p μ :=
@@ -1782,42 +2079,56 @@ theorem range_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] :
rw [← BoundedContinuousFunction.range_toLp p μ]
rfl
#align continuous_map.range_to_Lp ContinuousMap.range_toLp
+-/
variable {p}
+#print ContinuousMap.coeFn_toLp /-
theorem coeFn_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) : toLp p μ 𝕜 f =ᵐ[μ] f :=
AEEqFun.coeFn_mk f _
#align continuous_map.coe_fn_to_Lp ContinuousMap.coeFn_toLp
+-/
+#print ContinuousMap.toLp_def /-
theorem toLp_def [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) :
toLp p μ 𝕜 f = BoundedContinuousFunction.toLp p μ 𝕜 (linearIsometryBoundedOfCompact α E 𝕜 f) :=
rfl
#align continuous_map.to_Lp_def ContinuousMap.toLp_def
+-/
+#print ContinuousMap.toLp_comp_toContinuousMap /-
@[simp]
theorem toLp_comp_toContinuousMap [NormedField 𝕜] [NormedSpace 𝕜 E] (f : α →ᵇ E) :
toLp p μ 𝕜 f.toContinuousMap = BoundedContinuousFunction.toLp p μ 𝕜 f :=
rfl
#align continuous_map.to_Lp_comp_to_continuous_map ContinuousMap.toLp_comp_toContinuousMap
+-/
+#print ContinuousMap.coe_toLp /-
@[simp]
theorem coe_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) :
(toLp p μ 𝕜 f : α →ₘ[μ] E) = f.toAEEqFun μ :=
rfl
#align continuous_map.coe_to_Lp ContinuousMap.coe_toLp
+-/
+#print ContinuousMap.toLp_injective /-
theorem toLp_injective [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
Function.Injective ⇑(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ) :=
(BoundedContinuousFunction.toLp_injective _).comp (linearIsometryBoundedOfCompact α E 𝕜).Injective
#align continuous_map.to_Lp_injective ContinuousMap.toLp_injective
+-/
+#print ContinuousMap.toLp_inj /-
theorem toLp_inj {f g : C(α, E)} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
toLp p μ 𝕜 f = toLp p μ 𝕜 g ↔ f = g :=
(toLp_injective μ).eq_iff
#align continuous_map.to_Lp_inj ContinuousMap.toLp_inj
+-/
variable {μ}
+#print ContinuousMap.hasSum_of_hasSum_Lp /-
/-- If a sum of continuous functions `g n` is convergent, and the same sum converges in `Lᵖ` to `h`,
then in fact `g n` converges uniformly to `h`. -/
theorem hasSum_of_hasSum_Lp {β : Type _} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E]
@@ -1827,19 +2138,24 @@ theorem hasSum_of_hasSum_Lp {β : Type _} [μ.IsOpenPosMeasure] [NormedField
convert Summable.hasSum hg
exact to_Lp_injective μ (hg2.unique ((to_Lp p μ 𝕜).HasSum <| Summable.hasSum hg))
#align continuous_map.has_sum_of_has_sum_Lp ContinuousMap.hasSum_of_hasSum_Lp
+-/
variable (μ) [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E]
+#print ContinuousMap.toLp_norm_eq_toLp_norm_coe /-
theorem toLp_norm_eq_toLp_norm_coe :
‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)‖ =
‖(BoundedContinuousFunction.toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)‖ :=
ContinuousLinearMap.op_norm_comp_linearIsometryEquiv _ _
#align continuous_map.to_Lp_norm_eq_to_Lp_norm_coe ContinuousMap.toLp_norm_eq_toLp_norm_coe
+-/
+#print ContinuousMap.toLp_norm_le /-
/-- Bound for the operator norm of `continuous_map.to_Lp`. -/
theorem toLp_norm_le : ‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ :=
by rw [to_Lp_norm_eq_to_Lp_norm_coe]; exact BoundedContinuousFunction.toLp_norm_le μ
#align continuous_map.to_Lp_norm_le ContinuousMap.toLp_norm_le
+-/
end ContinuousMap
@@ -1849,30 +2165,38 @@ namespace MeasureTheory
namespace Lp
+#print MeasureTheory.Lp.pow_mul_meas_ge_le_norm /-
theorem pow_mul_meas_ge_le_norm (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) (ε : ℝ≥0∞) :
(ε * μ {x | ε ≤ ‖f x‖₊ ^ p.toReal}) ^ (1 / p.toReal) ≤ ENNReal.ofReal ‖f‖ :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
pow_mul_meas_ge_le_snorm μ hp_ne_zero hp_ne_top (Lp.aestronglyMeasurable f) ε
#align measure_theory.Lp.pow_mul_meas_ge_le_norm MeasureTheory.Lp.pow_mul_meas_ge_le_norm
+-/
+#print MeasureTheory.Lp.mul_meas_ge_le_pow_norm /-
theorem mul_meas_ge_le_pow_norm (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) (ε : ℝ≥0∞) :
ε * μ {x | ε ≤ ‖f x‖₊ ^ p.toReal} ≤ ENNReal.ofReal ‖f‖ ^ p.toReal :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
mul_meas_ge_le_pow_snorm μ hp_ne_zero hp_ne_top (Lp.aestronglyMeasurable f) ε
#align measure_theory.Lp.mul_meas_ge_le_pow_norm MeasureTheory.Lp.mul_meas_ge_le_pow_norm
+-/
+#print MeasureTheory.Lp.mul_meas_ge_le_pow_norm' /-
/-- A version of Markov's inequality with elements of Lp. -/
theorem mul_meas_ge_le_pow_norm' (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
(ε : ℝ≥0∞) : ε ^ p.toReal * μ {x | ε ≤ ‖f x‖₊} ≤ ENNReal.ofReal ‖f‖ ^ p.toReal :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
mul_meas_ge_le_pow_snorm' μ hp_ne_zero hp_ne_top (Lp.aestronglyMeasurable f) ε
#align measure_theory.Lp.mul_meas_ge_le_pow_norm' MeasureTheory.Lp.mul_meas_ge_le_pow_norm'
+-/
+#print MeasureTheory.Lp.meas_ge_le_mul_pow_norm /-
theorem meas_ge_le_mul_pow_norm (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) {ε : ℝ≥0∞}
(hε : ε ≠ 0) : μ {x | ε ≤ ‖f x‖₊} ≤ ε⁻¹ ^ p.toReal * ENNReal.ofReal ‖f‖ ^ p.toReal :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
meas_ge_le_mul_pow_snorm μ hp_ne_zero hp_ne_top (Lp.aestronglyMeasurable f) hε
#align measure_theory.Lp.meas_ge_le_mul_pow_norm MeasureTheory.Lp.meas_ge_le_mul_pow_norm
+-/
end Lp
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -677,7 +677,7 @@ theorem snorm_indicator_eq_snorm_restrict {f : α → F} (hs : MeasurableSet s)
· simp_rw [hp_top, snorm_exponent_top]
exact snorm_ess_sup_indicator_eq_snorm_ess_sup_restrict hs
simp_rw [snorm_eq_lintegral_rpow_nnnorm hp_zero hp_top]
- suffices (∫⁻ x, ‖s.indicator f x‖₊ ^ p.to_real ∂μ) = ∫⁻ x in s, ‖f x‖₊ ^ p.to_real ∂μ by rw [this]
+ suffices ∫⁻ x, ‖s.indicator f x‖₊ ^ p.to_real ∂μ = ∫⁻ x in s, ‖f x‖₊ ^ p.to_real ∂μ by rw [this]
rw [← lintegral_indicator _ hs]
congr
simp_rw [nnnorm_indicator_eq_indicator_nnnorm, ENNReal.coe_indicator]
@@ -1202,7 +1202,7 @@ theorem snorm'_lim_eq_lintegral_liminf {ι} [Nonempty ι] [LinearOrder ι] {f :
snorm' f_lim p μ = (∫⁻ a, atTop.liminf fun m => (‖f m a‖₊ : ℝ≥0∞) ^ p ∂μ) ^ (1 / p) :=
by
suffices h_no_pow :
- (∫⁻ a, ‖f_lim a‖₊ ^ p ∂μ) = ∫⁻ a, at_top.liminf fun m => (‖f m a‖₊ : ℝ≥0∞) ^ p ∂μ
+ ∫⁻ a, ‖f_lim a‖₊ ^ p ∂μ = ∫⁻ a, at_top.liminf fun m => (‖f m a‖₊ : ℝ≥0∞) ^ p ∂μ
· rw [snorm', h_no_pow]
refine' lintegral_congr_ae (h_lim.mono fun a ha => _)
rw [tendsto.liminf_eq]
@@ -1328,7 +1328,7 @@ theorem cauchySeq_Lp_iff_cauchySeq_ℒp {ι} [Nonempty ι] [SemilatticeSup ι] [
theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
(H :
- ∀ (f : ℕ → α → E) (hf : ∀ n, Memℒp (f n) p μ) (B : ℕ → ℝ≥0∞) (hB : (∑' i, B i) < ∞)
+ ∀ (f : ℕ → α → E) (hf : ∀ n, Memℒp (f n) p μ) (B : ℕ → ℝ≥0∞) (hB : ∑' i, B i < ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N),
∃ (f_lim : α → E) (hf_lim_meas : Memℒp f_lim p μ),
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)) :
@@ -1346,14 +1346,14 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
let B1 n := ENNReal.ofReal (B n)
have hB1_has : HasSum B1 (ENNReal.ofReal M) :=
by
- have h_tsum_B1 : (∑' i, B1 i) = ENNReal.ofReal M :=
+ have h_tsum_B1 : ∑' i, B1 i = ENNReal.ofReal M :=
by
- change (∑' n : ℕ, ENNReal.ofReal (B n)) = ENNReal.ofReal M
+ change ∑' n : ℕ, ENNReal.ofReal (B n) = ENNReal.ofReal M
rw [← hB.tsum_eq]
exact (ENNReal.ofReal_tsum_of_nonneg (fun n => le_of_lt (hB_pos n)) hB.summable).symm
have h_sum := (@ENNReal.summable _ B1).HasSum
rwa [h_tsum_B1] at h_sum
- have hB1 : (∑' i, B1 i) < ∞ := by rw [hB1_has.tsum_eq]; exact ENNReal.ofReal_lt_top
+ have hB1 : ∑' i, B1 i < ∞ := by rw [hB1_has.tsum_eq]; exact ENNReal.ofReal_lt_top
let f1 : ℕ → α → E := fun n => f n
refine' H f1 (fun n => Lp.mem_ℒp (f n)) B1 hB1 fun N n m hn hm => _
specialize hf N n m hn hm
@@ -1387,7 +1387,7 @@ private theorem snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm' {f : ℕ → α →
private theorem lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum {f : ℕ → α → E}
(hf : ∀ n, AEStronglyMeasurable (f n) μ) {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (n : ℕ)
(hn : snorm' (fun x => ∑ i in Finset.range (n + 1), ‖f (i + 1) x - f i x‖) p μ ≤ ∑' i, B i) :
- (∫⁻ a, (∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ≤ (∑' i, B i) ^ p :=
+ ∫⁻ a, (∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ ≤ (∑' i, B i) ^ p :=
by
have hp_pos : 0 < p := zero_lt_one.trans_le hp1
rw [← one_div_one_div p, @ENNReal.le_rpow_one_div_iff _ _ (1 / p) (by simp [hp_pos]),
@@ -1415,20 +1415,20 @@ private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E
(hf : ∀ n, AEStronglyMeasurable (f n) μ) {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞}
(h :
∀ n,
- (∫⁻ a, (∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ≤
+ ∫⁻ a, (∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ ≤
(∑' i, B i) ^ p) :
(∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ^ (1 / p) ≤ ∑' i, B i :=
by
have hp_pos : 0 < p := zero_lt_one.trans_le hp1
- suffices h_pow : (∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ≤ (∑' i, B i) ^ p
+ suffices h_pow : ∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ ≤ (∑' i, B i) ^ p
· rwa [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div]
have h_tsum_1 :
- ∀ g : ℕ → ℝ≥0∞, (∑' i, g i) = at_top.liminf fun n => ∑ i in Finset.range (n + 1), g i := by
+ ∀ g : ℕ → ℝ≥0∞, ∑' i, g i = at_top.liminf fun n => ∑ i in Finset.range (n + 1), g i := by
intro g; rw [ENNReal.tsum_eq_liminf_sum_nat, ← liminf_nat_add _ 1]
simp_rw [h_tsum_1 _]
rw [← h_tsum_1]
have h_liminf_pow :
- (∫⁻ a, (at_top.liminf fun n => ∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊) ^ p ∂μ) =
+ ∫⁻ a, (at_top.liminf fun n => ∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊) ^ p ∂μ =
∫⁻ a, at_top.liminf fun n => (∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊) ^ p ∂μ :=
by
refine' lintegral_congr fun x => _
@@ -1448,12 +1448,12 @@ private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E
· exact liminf_le_of_frequently_le' (frequently_of_forall h)
private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, AEStronglyMeasurable (f n) μ)
- {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
+ {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h : (∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ^ (1 / p) ≤ ∑' i, B i) :
∀ᵐ x ∂μ, (∑' i, ‖f (i + 1) x - f i x‖₊ : ℝ≥0∞) < ∞ :=
by
have hp_pos : 0 < p := zero_lt_one.trans_le hp1
- have h_integral : (∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) < ∞ :=
+ have h_integral : ∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ < ∞ :=
by
have h_tsum_lt_top : (∑' i, B i) ^ p < ∞ := ENNReal.rpow_lt_top_of_nonneg hp_pos.le hB
refine' lt_of_le_of_lt _ h_tsum_lt_top
@@ -1467,7 +1467,7 @@ private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, AE
ENNReal.top_rpow_of_pos (by simp [hp_pos] : 0 < 1 / p)] at hx
theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p : ℝ}
- (hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
+ (hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm' (f n - f m) p μ < B N) :
∀ᵐ x ∂μ, ∃ l : E, atTop.Tendsto (fun n => f n x) (𝓝 l) :=
by
@@ -1478,7 +1478,7 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm' hf hp1 h_cau
have h2 :
∀ n,
- (∫⁻ a, (∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ≤
+ ∫⁻ a, (∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ ≤
(∑' i, B i) ^ p :=
fun n => lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum hf hp1 n (h1 n)
have h3 : (∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ^ (1 / p) ≤ ∑' i, B i :=
@@ -1490,18 +1490,20 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
summable_of_summable_nnnorm
(ennreal.tsum_coe_ne_top_iff_summable.mp (lt_top_iff_ne_top.mp hx))
have h :
- ∀ᵐ x ∂μ, ∃ l : E, at_top.tendsto (fun n => ∑ i in Finset.range n, f (i + 1) x - f i x) (𝓝 l) :=
+ ∀ᵐ x ∂μ,
+ ∃ l : E, at_top.tendsto (fun n => ∑ i in Finset.range n, (f (i + 1) x - f i x)) (𝓝 l) :=
by
refine' h_summable.mono fun x hx => _
let hx_sum := hx.has_sum.tendsto_sum_nat
- exact ⟨∑' i, f (i + 1) x - f i x, hx_sum⟩
+ exact ⟨∑' i, (f (i + 1) x - f i x), hx_sum⟩
refine' h.mono fun x hx => _
cases' hx with l hx
- have h_rw_sum : (fun n => ∑ i in Finset.range n, f (i + 1) x - f i x) = fun n => f n x - f 0 x :=
+ have h_rw_sum :
+ (fun n => ∑ i in Finset.range n, (f (i + 1) x - f i x)) = fun n => f n x - f 0 x :=
by
ext1 n
change
- (∑ i : ℕ in Finset.range n, (fun m => f m x) (i + 1) - (fun m => f m x) i) = f n x - f 0 x
+ ∑ i : ℕ in Finset.range n, ((fun m => f m x) (i + 1) - (fun m => f m x) i) = f n x - f 0 x
rw [Finset.sum_range_sub]
rw [h_rw_sum] at hx
have hf_rw : (fun n => f n x) = fun n => f n x - f 0 x + f 0 x := by ext1 n; abel
@@ -1510,7 +1512,7 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm' MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm'
theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
- (hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
+ (hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N) :
∀ᵐ x ∂μ, ∃ l : E, atTop.Tendsto (fun n => f n x) (𝓝 l) :=
by
@@ -1546,7 +1548,7 @@ theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm
theorem cauchy_tendsto_of_tendsto {f : ℕ → α → E} (hf : ∀ n, AEStronglyMeasurable (f n) μ)
- (f_lim : α → E) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
+ (f_lim : α → E) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N)
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) :=
@@ -1592,7 +1594,7 @@ theorem memℒp_of_cauchy_tendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf :
#align measure_theory.Lp.mem_ℒp_of_cauchy_tendsto MeasureTheory.Lp.memℒp_of_cauchy_tendsto
theorem cauchy_complete_ℒp [CompleteSpace E] (hp : 1 ≤ p) {f : ℕ → α → E}
- (hf : ∀ n, Memℒp (f n) p μ) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
+ (hf : ∀ n, Memℒp (f n) p μ) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N) :
∃ (f_lim : α → E) (hf_lim_meas : Memℒp f_lim p μ),
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -646,7 +646,6 @@ theorem snorm_indicator_const_le (c : G) (p : ℝ≥0∞) :
_ = ‖c‖₊ * μ t ^ (1 / p.to_real) :=
(snorm_indicator_const (measurable_set_to_measurable _ _) hp h'p)
_ = ‖c‖₊ * μ s ^ (1 / p.to_real) := by rw [measure_to_measurable]
-
#align measure_theory.snorm_indicator_const_le MeasureTheory.snorm_indicator_const_le
theorem Memℒp.indicator (hs : MeasurableSet s) (hf : Memℒp f p μ) : Memℒp (s.indicator f) p μ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -102,7 +102,7 @@ theorem Memℒp.snorm_mk_lt_top {α E : Type _} [MeasurableSpace α] {μ : Measu
def Lp {α} (E : Type _) {m : MeasurableSpace α} [NormedAddCommGroup E] (p : ℝ≥0∞)
(μ : Measure α := by exact MeasureTheory.MeasureSpace.volume) : AddSubgroup (α →ₘ[μ] E)
where
- carrier := { f | snorm f p μ < ∞ }
+ carrier := {f | snorm f p μ < ∞}
zero_mem' := by simp [snorm_congr_ae ae_eq_fun.coe_fn_zero, snorm_zero]
add_mem' f g hf hg := by
simp [snorm_congr_ae (ae_eq_fun.coe_fn_add _ _),
@@ -186,7 +186,7 @@ theorem mem_Lp_iff_memℒp {f : α →ₘ[μ] E} : f ∈ Lp E p μ ↔ Memℒp f
simp [mem_Lp_iff_snorm_lt_top, mem_ℒp, f.strongly_measurable.ae_strongly_measurable]
#align measure_theory.Lp.mem_Lp_iff_mem_ℒp MeasureTheory.Lp.mem_Lp_iff_memℒp
-protected theorem antitone [FiniteMeasure μ] {p q : ℝ≥0∞} (hpq : p ≤ q) : Lp E q μ ≤ Lp E p μ :=
+protected theorem antitone [IsFiniteMeasure μ] {p q : ℝ≥0∞} (hpq : p ≤ q) : Lp E q μ ≤ Lp E p μ :=
fun f hf => (Memℒp.memℒp_of_exponent_le ⟨f.AEStronglyMeasurable, hf⟩ hpq).2
#align measure_theory.Lp.antitone MeasureTheory.Lp.antitone
@@ -247,7 +247,7 @@ theorem coeFn_sub (f g : Lp E p μ) : ⇑(f - g) =ᵐ[μ] f - g :=
AEEqFun.coeFn_sub _ _
#align measure_theory.Lp.coe_fn_sub MeasureTheory.Lp.coeFn_sub
-theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [FiniteMeasure μ] :
+theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [IsFiniteMeasure μ] :
@AEEqFun.const α _ _ μ _ c ∈ Lp E p μ :=
(memℒp_const c).snorm_mk_lt_top
#align measure_theory.Lp.mem_Lp_const MeasureTheory.Lp.mem_lp_const
@@ -351,7 +351,7 @@ theorem eq_zero_iff_ae_eq_zero {f : Lp E p μ} : f = 0 ↔ f =ᵐ[μ] 0 :=
exact ae_eq_fun.coe_fn_const _ _
· intro h
ext1
- filter_upwards [h, ae_eq_fun.coe_fn_const α (0 : E)]with _ ha h'a
+ filter_upwards [h, ae_eq_fun.coe_fn_const α (0 : E)] with _ ha h'a
rw [ha]
exact h'a.symm
#align measure_theory.Lp.eq_zero_iff_ae_eq_zero MeasureTheory.Lp.eq_zero_iff_ae_eq_zero
@@ -415,17 +415,17 @@ theorem mem_Lp_of_ae_le {f : α →ₘ[μ] E} {g : Lp F p μ} (h : ∀ᵐ x ∂
mem_Lp_of_nnnorm_ae_le h
#align measure_theory.Lp.mem_Lp_of_ae_le MeasureTheory.Lp.mem_Lp_of_ae_le
-theorem mem_Lp_of_ae_nnnorm_bound [FiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ≥0)
+theorem mem_Lp_of_ae_nnnorm_bound [IsFiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ≥0)
(hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) : f ∈ Lp E p μ :=
mem_Lp_iff_memℒp.2 <| Memℒp.of_bound f.AEStronglyMeasurable _ hfC
#align measure_theory.Lp.mem_Lp_of_ae_nnnorm_bound MeasureTheory.Lp.mem_Lp_of_ae_nnnorm_bound
-theorem mem_Lp_of_ae_bound [FiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ) (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
+theorem mem_Lp_of_ae_bound [IsFiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ) (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
f ∈ Lp E p μ :=
mem_Lp_iff_memℒp.2 <| Memℒp.of_bound f.AEStronglyMeasurable _ hfC
#align measure_theory.Lp.mem_Lp_of_ae_bound MeasureTheory.Lp.mem_Lp_of_ae_bound
-theorem nnnorm_le_of_ae_bound [FiniteMeasure μ] {f : Lp E p μ} {C : ℝ≥0}
+theorem nnnorm_le_of_ae_bound [IsFiniteMeasure μ] {f : Lp E p μ} {C : ℝ≥0}
(hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) : ‖f‖₊ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ * C :=
by
by_cases hμ : μ = 0
@@ -438,7 +438,7 @@ theorem nnnorm_le_of_ae_bound [FiniteMeasure μ] {f : Lp E p μ} {C : ℝ≥0}
ENNReal.coe_mul, mul_comm, ENNReal.smul_def, smul_eq_mul]
#align measure_theory.Lp.nnnorm_le_of_ae_bound MeasureTheory.Lp.nnnorm_le_of_ae_bound
-theorem norm_le_of_ae_bound [FiniteMeasure μ] {f : Lp E p μ} {C : ℝ} (hC : 0 ≤ C)
+theorem norm_le_of_ae_bound [IsFiniteMeasure μ] {f : Lp E p μ} {C : ℝ} (hC : 0 ≤ C)
(hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : ‖f‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ * C :=
by
lift C to ℝ≥0 using hC
@@ -587,7 +587,7 @@ theorem snormEssSup_indicator_const_eq (s : Set α) (c : G) (hμs : μ s ≠ 0)
refine' le_antisymm (snorm_ess_sup_indicator_const_le s c) _
by_contra' h
have h' := ae_iff.mp (ae_lt_of_essSup_lt h)
- push_neg at h'
+ push_neg at h'
refine' hμs (measure_mono_null (fun x hx_mem => _) h')
rw [Set.mem_setOf_eq, Set.indicator_of_mem hx_mem]
exact le_rfl
@@ -727,7 +727,7 @@ theorem exists_snorm_indicator_le (hp : p ≠ ∞) (c : E) {ε : ℝ≥0∞} (h
(𝓝 (0 : ℝ≥0)) :=
by
rw [ENNReal.tendsto_coe]
- convert(NNReal.continuousAt_rpow_const (Or.inr hp₀')).Tendsto.const_mul _
+ convert (NNReal.continuousAt_rpow_const (Or.inr hp₀')).Tendsto.const_mul _
simp [hp₀''.ne']
have hε' : 0 < ε := hε.bot_lt
obtain ⟨δ, hδ, hδε'⟩ :=
@@ -922,7 +922,7 @@ def compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : Lp E p μ) : Lp F p μ :
by
suffices ∀ᵐ x ∂μ, ‖ae_eq_fun.comp g hg.continuous (f : α →ₘ[μ] E) x‖ ≤ c * ‖f x‖ by
exact Lp.mem_Lp_of_ae_le_mul this
- filter_upwards [ae_eq_fun.coe_fn_comp g hg.continuous (f : α →ₘ[μ] E)]with a ha
+ filter_upwards [ae_eq_fun.coe_fn_comp g hg.continuous (f : α →ₘ[μ] E)] with a ha
simp only [ha]
rw [← dist_zero_right, ← dist_zero_right, ← g0]
exact hg.dist_le_mul (f a) 0⟩
@@ -938,7 +938,7 @@ theorem compLp_zero (hg : LipschitzWith c g) (g0 : g 0 = 0) : hg.compLp g0 (0 :
by
rw [Lp.eq_zero_iff_ae_eq_zero]
apply (coe_fn_comp_Lp _ _ _).trans
- filter_upwards [Lp.coe_fn_zero E p μ]with _ ha
+ filter_upwards [Lp.coe_fn_zero E p μ] with _ ha
simp [ha, g0]
#align lipschitz_with.comp_Lp_zero LipschitzWith.compLp_zero
@@ -947,7 +947,7 @@ theorem norm_compLp_sub_le (hg : LipschitzWith c g) (g0 : g 0 = 0) (f f' : Lp E
by
apply Lp.norm_le_mul_norm_of_ae_le_mul
filter_upwards [hg.coe_fn_comp_Lp g0 f, hg.coe_fn_comp_Lp g0 f',
- Lp.coe_fn_sub (hg.comp_Lp g0 f) (hg.comp_Lp g0 f'), Lp.coe_fn_sub f f']with a ha1 ha2 ha3 ha4
+ Lp.coe_fn_sub (hg.comp_Lp g0 f) (hg.comp_Lp g0 f'), Lp.coe_fn_sub f f'] with a ha1 ha2 ha3 ha4
simp [ha1, ha2, ha3, ha4, ← dist_eq_norm]
exact hg.dist_le_mul (f a) (f' a)
#align lipschitz_with.norm_comp_Lp_sub_le LipschitzWith.norm_compLp_sub_le
@@ -1060,7 +1060,7 @@ def compLpₗ (L : E →L[𝕜] F) : Lp E p μ →ₗ[𝕜] Lp F p μ
dsimp
ext1
filter_upwards [Lp.coe_fn_smul c f, coe_fn_comp_Lp L (c • f), Lp.coe_fn_smul c (L.comp_Lp f),
- coe_fn_comp_Lp L f]with _ ha1 ha2 ha3 ha4
+ coe_fn_comp_Lp L f] with _ ha1 ha2 ha3 ha4
simp only [ha1, ha2, ha3, ha4, SMulHomClass.map_smul, Pi.smul_apply]
#align continuous_linear_map.comp_Lpₗ ContinuousLinearMap.compLpₗ
@@ -1157,7 +1157,7 @@ theorem coeFn_posPart (f : Lp ℝ p μ) : ⇑(posPart f) =ᵐ[μ] fun a => max (
theorem coeFn_negPart_eq_max (f : Lp ℝ p μ) : ∀ᵐ a ∂μ, negPart f a = max (-f a) 0 :=
by
rw [neg_part]
- filter_upwards [coe_fn_pos_part (-f), coe_fn_neg f]with _ h₁ h₂
+ filter_upwards [coe_fn_pos_part (-f), coe_fn_neg f] with _ h₁ h₂
rw [h₁, h₂, Pi.neg_apply]
#align measure_theory.Lp.coe_fn_neg_part_eq_max MeasureTheory.Lp.coeFn_negPart_eq_max
@@ -1305,7 +1305,7 @@ theorem tendsto_Lp_iff_tendsto_ℒp'' {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f
ext1 n
apply snorm_congr_ae
filter_upwards [((f_ℒp n).sub f_lim_ℒp).coeFn_toLp,
- Lp.coe_fn_sub ((f_ℒp n).toLp (f n)) (f_lim_ℒp.to_Lp f_lim)]with _ hx₁ hx₂
+ Lp.coe_fn_sub ((f_ℒp n).toLp (f n)) (f_lim_ℒp.to_Lp f_lim)] with _ hx₁ hx₂
rw [← hx₂]
exact hx₁.symm
#align measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp'' MeasureTheory.Lp.tendsto_Lp_iff_tendsto_ℒp''
@@ -1656,13 +1656,13 @@ theorem MeasureTheory.Lp.mem_boundedContinuousFunction_iff {f : Lp E p μ} :
namespace BoundedContinuousFunction
-variable [FiniteMeasure μ]
+variable [IsFiniteMeasure μ]
/-- A bounded continuous function on a finite-measure space is in `Lp`. -/
theorem mem_Lp (f : α →ᵇ E) : f.toContinuousMap.toAEEqFun μ ∈ Lp E p μ :=
by
refine' Lp.mem_Lp_of_ae_bound ‖f‖ _
- filter_upwards [f.to_continuous_map.coe_fn_to_ae_eq_fun μ]with x _
+ filter_upwards [f.to_continuous_map.coe_fn_to_ae_eq_fun μ] with x _
convert f.norm_coe_le_norm x
#align bounded_continuous_function.mem_Lp BoundedContinuousFunction.mem_Lp
@@ -1703,7 +1703,8 @@ theorem range_toLpHom [Fact (1 ≤ p)] :
MeasureTheory.Lp.boundedContinuousFunction E p μ :=
by
symm
- convert AddMonoidHom.addSubgroupOf_range_eq_of_le
+ convert
+ AddMonoidHom.addSubgroupOf_range_eq_of_le
((ContinuousMap.toAEEqFunAddHom μ).comp (to_continuous_map_add_hom α E))
(by rintro - ⟨f, rfl⟩; exact mem_Lp f : _ ≤ Lp E p μ)
#align bounded_continuous_function.range_to_Lp_hom BoundedContinuousFunction.range_toLpHom
@@ -1738,7 +1739,7 @@ theorem toLp_norm_le [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] :
LinearMap.mkContinuous_norm_le _ (measureUnivNNReal μ ^ p.toReal⁻¹).coe_nonneg _
#align bounded_continuous_function.to_Lp_norm_le BoundedContinuousFunction.toLp_norm_le
-theorem toLp_inj {f g : α →ᵇ E} [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
+theorem toLp_inj {f g : α →ᵇ E} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
toLp p μ 𝕜 f = toLp p μ 𝕜 g ↔ f = g :=
by
refine' ⟨fun h => _, by tauto⟩
@@ -1747,7 +1748,7 @@ theorem toLp_inj {f g : α →ᵇ E} [μ.OpenPosMeasure] [NormedField 𝕜] [Nor
rw [h]
#align bounded_continuous_function.to_Lp_inj BoundedContinuousFunction.toLp_inj
-theorem toLp_injective [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
+theorem toLp_injective [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
Function.Injective ⇑(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ) := fun f g hfg => (toLp_inj μ).mp hfg
#align bounded_continuous_function.to_Lp_injective BoundedContinuousFunction.toLp_injective
@@ -1755,7 +1756,7 @@ end BoundedContinuousFunction
namespace ContinuousMap
-variable [CompactSpace α] [FiniteMeasure μ]
+variable [CompactSpace α] [IsFiniteMeasure μ]
variable (𝕜 : Type _) (p μ) [Fact (1 ≤ p)]
@@ -1804,12 +1805,12 @@ theorem coe_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) :
rfl
#align continuous_map.coe_to_Lp ContinuousMap.coe_toLp
-theorem toLp_injective [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
+theorem toLp_injective [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
Function.Injective ⇑(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ) :=
(BoundedContinuousFunction.toLp_injective _).comp (linearIsometryBoundedOfCompact α E 𝕜).Injective
#align continuous_map.to_Lp_injective ContinuousMap.toLp_injective
-theorem toLp_inj {f g : C(α, E)} [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
+theorem toLp_inj {f g : C(α, E)} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
toLp p μ 𝕜 f = toLp p μ 𝕜 g ↔ f = g :=
(toLp_injective μ).eq_iff
#align continuous_map.to_Lp_inj ContinuousMap.toLp_inj
@@ -1818,7 +1819,7 @@ variable {μ}
/-- If a sum of continuous functions `g n` is convergent, and the same sum converges in `Lᵖ` to `h`,
then in fact `g n` converges uniformly to `h`. -/
-theorem hasSum_of_hasSum_Lp {β : Type _} [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E]
+theorem hasSum_of_hasSum_Lp {β : Type _} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E]
{g : β → C(α, E)} {f : C(α, E)} (hg : Summable g)
(hg2 : HasSum (toLp p μ 𝕜 ∘ g) (toLp p μ 𝕜 f)) : HasSum g f :=
by
@@ -1848,26 +1849,26 @@ namespace MeasureTheory
namespace Lp
theorem pow_mul_meas_ge_le_norm (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) (ε : ℝ≥0∞) :
- (ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal }) ^ (1 / p.toReal) ≤ ENNReal.ofReal ‖f‖ :=
+ (ε * μ {x | ε ≤ ‖f x‖₊ ^ p.toReal}) ^ (1 / p.toReal) ≤ ENNReal.ofReal ‖f‖ :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
pow_mul_meas_ge_le_snorm μ hp_ne_zero hp_ne_top (Lp.aestronglyMeasurable f) ε
#align measure_theory.Lp.pow_mul_meas_ge_le_norm MeasureTheory.Lp.pow_mul_meas_ge_le_norm
theorem mul_meas_ge_le_pow_norm (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) (ε : ℝ≥0∞) :
- ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal } ≤ ENNReal.ofReal ‖f‖ ^ p.toReal :=
+ ε * μ {x | ε ≤ ‖f x‖₊ ^ p.toReal} ≤ ENNReal.ofReal ‖f‖ ^ p.toReal :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
mul_meas_ge_le_pow_snorm μ hp_ne_zero hp_ne_top (Lp.aestronglyMeasurable f) ε
#align measure_theory.Lp.mul_meas_ge_le_pow_norm MeasureTheory.Lp.mul_meas_ge_le_pow_norm
/-- A version of Markov's inequality with elements of Lp. -/
theorem mul_meas_ge_le_pow_norm' (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
- (ε : ℝ≥0∞) : ε ^ p.toReal * μ { x | ε ≤ ‖f x‖₊ } ≤ ENNReal.ofReal ‖f‖ ^ p.toReal :=
+ (ε : ℝ≥0∞) : ε ^ p.toReal * μ {x | ε ≤ ‖f x‖₊} ≤ ENNReal.ofReal ‖f‖ ^ p.toReal :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
mul_meas_ge_le_pow_snorm' μ hp_ne_zero hp_ne_top (Lp.aestronglyMeasurable f) ε
#align measure_theory.Lp.mul_meas_ge_le_pow_norm' MeasureTheory.Lp.mul_meas_ge_le_pow_norm'
theorem meas_ge_le_mul_pow_norm (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) {ε : ℝ≥0∞}
- (hε : ε ≠ 0) : μ { x | ε ≤ ‖f x‖₊ } ≤ ε⁻¹ ^ p.toReal * ENNReal.ofReal ‖f‖ ^ p.toReal :=
+ (hε : ε ≠ 0) : μ {x | ε ≤ ‖f x‖₊} ≤ ε⁻¹ ^ p.toReal * ENNReal.ofReal ‖f‖ ^ p.toReal :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
meas_ge_le_mul_pow_snorm μ hp_ne_zero hp_ne_top (Lp.aestronglyMeasurable f) hε
#align measure_theory.Lp.meas_ge_le_mul_pow_norm MeasureTheory.Lp.meas_ge_le_mul_pow_norm
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -332,9 +332,9 @@ theorem norm_zero : ‖(0 : Lp E p μ)‖ = 0 :=
theorem nnnorm_eq_zero_iff {f : Lp E p μ} (hp : 0 < p) : ‖f‖₊ = 0 ↔ f = 0 :=
by
refine' ⟨fun hf => _, fun hf => by simp [hf]⟩
- rw [nnnorm_def, ENNReal.toNNReal_eq_zero_iff] at hf
+ rw [nnnorm_def, ENNReal.toNNReal_eq_zero_iff] at hf
cases hf
- · rw [snorm_eq_zero_iff (Lp.ae_strongly_measurable f) hp.ne.symm] at hf
+ · rw [snorm_eq_zero_iff (Lp.ae_strongly_measurable f) hp.ne.symm] at hf
exact Subtype.eq (ae_eq_fun.ext (hf.trans ae_eq_fun.coe_fn_zero.symm))
· exact absurd hf (snorm_ne_top f)
#align measure_theory.Lp.nnnorm_eq_zero_iff MeasureTheory.Lp.nnnorm_eq_zero_iff
@@ -372,7 +372,7 @@ theorem nnnorm_le_mul_nnnorm_of_ae_le_mul {c : ℝ≥0} {f : Lp E p μ} {g : Lp
simp only [nnnorm_def]
have := snorm_le_nnreal_smul_snorm_of_ae_le_mul h p
rwa [← ENNReal.toNNReal_le_toNNReal, ENNReal.smul_def, smul_eq_mul, ENNReal.toNNReal_mul,
- ENNReal.toNNReal_coe] at this
+ ENNReal.toNNReal_coe] at this
· exact (Lp.mem_ℒp _).snorm_ne_top
· exact ENNReal.mul_ne_top ENNReal.coe_ne_top (Lp.mem_ℒp _).snorm_ne_top
#align measure_theory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul MeasureTheory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul
@@ -443,7 +443,7 @@ theorem norm_le_of_ae_bound [FiniteMeasure μ] {f : Lp E p μ} {C : ℝ} (hC : 0
by
lift C to ℝ≥0 using hC
have := nnnorm_le_of_ae_bound hfC
- rwa [← NNReal.coe_le_coe, NNReal.coe_mul, NNReal.coe_rpow] at this
+ rwa [← NNReal.coe_le_coe, NNReal.coe_mul, NNReal.coe_rpow] at this
#align measure_theory.Lp.norm_le_of_ae_bound MeasureTheory.Lp.norm_le_of_ae_bound
instance [hp : Fact (1 ≤ p)] : NormedAddCommGroup (Lp E p μ) :=
@@ -587,7 +587,7 @@ theorem snormEssSup_indicator_const_eq (s : Set α) (c : G) (hμs : μ s ≠ 0)
refine' le_antisymm (snorm_ess_sup_indicator_const_le s c) _
by_contra' h
have h' := ae_iff.mp (ae_lt_of_essSup_lt h)
- push_neg at h'
+ push_neg at h'
refine' hμs (measure_mono_null (fun x hx_mem => _) h')
rw [Set.mem_setOf_eq, Set.indicator_of_mem hx_mem]
exact le_rfl
@@ -1108,7 +1108,7 @@ theorem indicatorConstLp_eq_toSpanSingleton_compLp {s : Set α} [NormedSpace ℝ
refine' indicator_const_Lp_coe_fn.trans _
have h_comp_Lp :=
(ContinuousLinearMap.toSpanSingleton ℝ x).coeFn_compLp (indicator_const_Lp 2 hs hμs (1 : ℝ))
- rw [← eventually_eq] at h_comp_Lp
+ rw [← eventually_eq] at h_comp_Lp
refine' eventually_eq.trans _ h_comp_Lp.symm
refine' (@indicator_const_Lp_coe_fn _ _ _ 2 μ _ s hs hμs (1 : ℝ)).mono fun y hy => _
dsimp only
@@ -1262,7 +1262,7 @@ theorem snorm_lim_le_liminf_snorm {E} [NormedAddCommGroup E] {f : ℕ → α →
by
by_cases hp0 : p = 0
· simp [hp0]
- rw [← Ne.def] at hp0
+ rw [← Ne.def] at hp0
by_cases hp_top : p = ∞
· simp_rw [hp_top]
exact snorm_exponent_top_lim_le_liminf_snorm_exponent_top h_lim
@@ -1331,7 +1331,7 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
(H :
∀ (f : ℕ → α → E) (hf : ∀ n, Memℒp (f n) p μ) (B : ℕ → ℝ≥0∞) (hB : (∑' i, B i) < ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N),
- ∃ (f_lim : α → E)(hf_lim_meas : Memℒp f_lim p μ),
+ ∃ (f_lim : α → E) (hf_lim_meas : Memℒp f_lim p μ),
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)) :
CompleteSpace (Lp E p μ) :=
by
@@ -1339,7 +1339,7 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
have hB_pos : ∀ n, 0 < B n := fun n => pow_pos (div_pos zero_lt_one zero_lt_two) n
refine' Metric.complete_of_convergent_controlled_sequences B hB_pos fun f hf => _
rsuffices ⟨f_lim, hf_lim_meas, h_tendsto⟩ :
- ∃ (f_lim : α → E)(hf_lim_meas : mem_ℒp f_lim p μ),
+ ∃ (f_lim : α → E) (hf_lim_meas : mem_ℒp f_lim p μ),
at_top.tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)
· exact ⟨hf_lim_meas.to_Lp f_lim, tendsto_Lp_of_tendsto_ℒp f_lim hf_lim_meas h_tendsto⟩
have hB : Summable B := summable_geometric_two
@@ -1353,12 +1353,12 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
rw [← hB.tsum_eq]
exact (ENNReal.ofReal_tsum_of_nonneg (fun n => le_of_lt (hB_pos n)) hB.summable).symm
have h_sum := (@ENNReal.summable _ B1).HasSum
- rwa [h_tsum_B1] at h_sum
+ rwa [h_tsum_B1] at h_sum
have hB1 : (∑' i, B1 i) < ∞ := by rw [hB1_has.tsum_eq]; exact ENNReal.ofReal_lt_top
let f1 : ℕ → α → E := fun n => f n
refine' H f1 (fun n => Lp.mem_ℒp (f n)) B1 hB1 fun N n m hn hm => _
specialize hf N n m hn hm
- rw [dist_def] at hf
+ rw [dist_def] at hf
simp_rw [f1, B1]
rwa [ENNReal.lt_ofReal_iff_toReal_lt]
rw [snorm_congr_ae (Lp.coe_fn_sub _ _).symm]
@@ -1393,7 +1393,7 @@ private theorem lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum {f : ℕ → α
have hp_pos : 0 < p := zero_lt_one.trans_le hp1
rw [← one_div_one_div p, @ENNReal.le_rpow_one_div_iff _ _ (1 / p) (by simp [hp_pos]),
one_div_one_div p]
- simp_rw [snorm'] at hn
+ simp_rw [snorm'] at hn
have h_nnnorm_nonneg :
(fun a => (‖∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖‖₊ : ℝ≥0∞) ^ p) = fun a =>
(∑ i in Finset.range (n + 1), (‖f (i + 1) a - f i a‖₊ : ℝ≥0∞)) ^ p :=
@@ -1408,8 +1408,8 @@ private theorem lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum {f : ℕ → α
change
(∫⁻ a, (fun x => ↑‖∑ i in Finset.range (n + 1), ‖f (i + 1) x - f i x‖‖₊ ^ p) a ∂μ) ^ (1 / p) ≤
∑' i, B i at
- hn
- rwa [h_nnnorm_nonneg] at hn
+ hn
+ rwa [h_nnnorm_nonneg] at hn
/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic filter.is_bounded_default -/
private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E}
@@ -1458,14 +1458,14 @@ private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, AE
by
have h_tsum_lt_top : (∑' i, B i) ^ p < ∞ := ENNReal.rpow_lt_top_of_nonneg hp_pos.le hB
refine' lt_of_le_of_lt _ h_tsum_lt_top
- rwa [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div] at h
+ rwa [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div] at h
have rpow_ae_lt_top : ∀ᵐ x ∂μ, (∑' i, ‖f (i + 1) x - f i x‖₊ : ℝ≥0∞) ^ p < ∞ :=
by
refine' ae_lt_top' (AEMeasurable.pow_const _ _) h_integral.ne
exact AEMeasurable.ennreal_tsum fun n => ((hf (n + 1)).sub (hf n)).ennnorm
refine' rpow_ae_lt_top.mono fun x hx => _
rwa [← ENNReal.lt_rpow_one_div_iff hp_pos,
- ENNReal.top_rpow_of_pos (by simp [hp_pos] : 0 < 1 / p)] at hx
+ ENNReal.top_rpow_of_pos (by simp [hp_pos] : 0 < 1 / p)] at hx
theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p : ℝ}
(hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
@@ -1504,7 +1504,7 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
change
(∑ i : ℕ in Finset.range n, (fun m => f m x) (i + 1) - (fun m => f m x) i) = f n x - f 0 x
rw [Finset.sum_range_sub]
- rw [h_rw_sum] at hx
+ rw [h_rw_sum] at hx
have hf_rw : (fun n => f n x) = fun n => f n x - f 0 x + f 0 x := by ext1 n; abel
rw [hf_rw]
exact ⟨l + f 0 x, tendsto.add_const _ hx⟩
@@ -1521,14 +1521,14 @@ theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
by
simp_rw [ae_all_iff]
exact fun N n m hnN hmN => ae_lt_of_essSup_lt (h_cau N n m hnN hmN)
- simp_rw [snorm_exponent_top, snorm_ess_sup] at h_cau
+ simp_rw [snorm_exponent_top, snorm_ess_sup] at h_cau
refine' h_cau_ae.mono fun x hx => cauchySeq_tendsto_of_complete _
refine' cauchySeq_of_le_tendsto_0 (fun n => (B n).toReal) _ _
· intro n m N hnN hmN
specialize hx N n m hnN hmN
rw [dist_eq_norm, ← ENNReal.toReal_ofReal (norm_nonneg _),
ENNReal.toReal_le_toReal ENNReal.ofReal_ne_top (ENNReal.ne_top_of_tsum_ne_top hB N)]
- rw [← ofReal_norm_eq_coe_nnnorm] at hx
+ rw [← ofReal_norm_eq_coe_nnnorm] at hx
exact hx.le
· rw [← ENNReal.zero_toReal]
exact
@@ -1542,7 +1542,7 @@ theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
by
intro N n m hn hm
specialize h_cau N n m hn hm
- rwa [snorm_eq_snorm' (zero_lt_one.trans_le hp).Ne.symm hp_top] at h_cau
+ rwa [snorm_eq_snorm' (zero_lt_one.trans_le hp).Ne.symm hp_top] at h_cau
exact ae_tendsto_of_cauchy_snorm' hf hp1 hB h_cau'
#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm
@@ -1578,7 +1578,7 @@ theorem memℒp_of_cauchy_tendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf :
(h_tendsto : atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)) : Memℒp f_lim p μ :=
by
refine' ⟨h_lim_meas, _⟩
- rw [ENNReal.tendsto_atTop_zero] at h_tendsto
+ rw [ENNReal.tendsto_atTop_zero] at h_tendsto
cases' h_tendsto 1 zero_lt_one with N h_tendsto_1
specialize h_tendsto_1 N (le_refl N)
have h_add : f_lim = f_lim - f N + f N := by abel
@@ -1595,11 +1595,11 @@ theorem memℒp_of_cauchy_tendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf :
theorem cauchy_complete_ℒp [CompleteSpace E] (hp : 1 ≤ p) {f : ℕ → α → E}
(hf : ∀ n, Memℒp (f n) p μ) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N) :
- ∃ (f_lim : α → E)(hf_lim_meas : Memℒp f_lim p μ),
+ ∃ (f_lim : α → E) (hf_lim_meas : Memℒp f_lim p μ),
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) :=
by
obtain ⟨f_lim, h_f_lim_meas, h_lim⟩ :
- ∃ (f_lim : α → E)(hf_lim_meas : strongly_measurable f_lim),
+ ∃ (f_lim : α → E) (hf_lim_meas : strongly_measurable f_lim),
∀ᵐ x ∂μ, tendsto (fun n => f n x) at_top (nhds (f_lim x))
exact
exists_stronglyMeasurable_limit_of_tendsto_ae (fun n => (hf n).1)
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit c4015acc0a223449d44061e27ddac1835a3852b9
+! leanprover-community/mathlib commit f60c6087a7275b72d5db3c5a1d0e19e35a429c0a
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -15,6 +15,9 @@ import Mathbin.Topology.ContinuousFunction.Compact
/-!
# Lp space
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file provides the space `Lp E p μ` as the subtype of elements of `α →ₘ[μ] E` (see ae_eq_fun)
such that `snorm f p μ` is finite. For `1 ≤ p`, `snorm` defines a norm and `Lp` is a complete metric
space.
@@ -83,19 +86,20 @@ The space of equivalence classes of measurable functions for which `snorm f p μ
@[simp]
-theorem snorm_aEEqFun {α E : Type _} [MeasurableSpace α] {μ : Measure α} [NormedAddCommGroup E]
+theorem snorm_aeeqFun {α E : Type _} [MeasurableSpace α] {μ : Measure α} [NormedAddCommGroup E]
{p : ℝ≥0∞} {f : α → E} (hf : AEStronglyMeasurable f μ) :
snorm (AEEqFun.mk f hf) p μ = snorm f p μ :=
snorm_congr_ae (AEEqFun.coeFn_mk _ _)
-#align measure_theory.snorm_ae_eq_fun MeasureTheory.snorm_aEEqFun
+#align measure_theory.snorm_ae_eq_fun MeasureTheory.snorm_aeeqFun
theorem Memℒp.snorm_mk_lt_top {α E : Type _} [MeasurableSpace α] {μ : Measure α}
[NormedAddCommGroup E] {p : ℝ≥0∞} {f : α → E} (hfp : Memℒp f p μ) :
snorm (AEEqFun.mk f hfp.1) p μ < ∞ := by simp [hfp.2]
#align measure_theory.mem_ℒp.snorm_mk_lt_top MeasureTheory.Memℒp.snorm_mk_lt_top
+#print MeasureTheory.Lp /-
/-- Lp space -/
-def lp {α} (E : Type _) {m : MeasurableSpace α} [NormedAddCommGroup E] (p : ℝ≥0∞)
+def Lp {α} (E : Type _) {m : MeasurableSpace α} [NormedAddCommGroup E] (p : ℝ≥0∞)
(μ : Measure α := by exact MeasureTheory.MeasureSpace.volume) : AddSubgroup (α →ₘ[μ] E)
where
carrier := { f | snorm f p μ < ∞ }
@@ -104,24 +108,27 @@ def lp {α} (E : Type _) {m : MeasurableSpace α} [NormedAddCommGroup E] (p :
simp [snorm_congr_ae (ae_eq_fun.coe_fn_add _ _),
snorm_add_lt_top ⟨f.ae_strongly_measurable, hf⟩ ⟨g.ae_strongly_measurable, hg⟩]
neg_mem' f hf := by rwa [Set.mem_setOf_eq, snorm_congr_ae (ae_eq_fun.coe_fn_neg _), snorm_neg]
-#align measure_theory.Lp MeasureTheory.lp
+#align measure_theory.Lp MeasureTheory.Lp
+-/
-- mathport name: measure_theory.L1
-scoped notation:25 α " →₁[" μ "] " E => MeasureTheory.lp E 1 μ
+scoped notation:25 α " →₁[" μ "] " E => MeasureTheory.Lp E 1 μ
-- mathport name: measure_theory.L2
-scoped notation:25 α " →₂[" μ "] " E => MeasureTheory.lp E 2 μ
+scoped notation:25 α " →₂[" μ "] " E => MeasureTheory.Lp E 2 μ
namespace Memℒp
/-- make an element of Lp from a function verifying `mem_ℒp` -/
-def toLp (f : α → E) (h_mem_ℒp : Memℒp f p μ) : lp E p μ :=
+def toLp (f : α → E) (h_mem_ℒp : Memℒp f p μ) : Lp E p μ :=
⟨AEEqFun.mk f h_mem_ℒp.1, h_mem_ℒp.snorm_mk_lt_top⟩
#align measure_theory.mem_ℒp.to_Lp MeasureTheory.Memℒp.toLp
+#print MeasureTheory.Memℒp.coeFn_toLp /-
theorem coeFn_toLp {f : α → E} (hf : Memℒp f p μ) : hf.toLp f =ᵐ[μ] f :=
AEEqFun.coeFn_mk _ _
#align measure_theory.mem_ℒp.coe_fn_to_Lp MeasureTheory.Memℒp.coeFn_toLp
+-/
theorem toLp_congr {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) (hfg : f =ᵐ[μ] g) :
hf.toLp f = hg.toLp g := by simp [to_Lp, hfg]
@@ -155,166 +162,174 @@ end Memℒp
namespace Lp
-instance : CoeFun (lp E p μ) fun _ => α → E :=
+instance : CoeFun (Lp E p μ) fun _ => α → E :=
⟨fun f => ((f : α →ₘ[μ] E) : α → E)⟩
@[ext]
-theorem ext {f g : lp E p μ} (h : f =ᵐ[μ] g) : f = g :=
+theorem ext {f g : Lp E p μ} (h : f =ᵐ[μ] g) : f = g :=
by
cases f
cases g
simp only [Subtype.mk_eq_mk]
exact ae_eq_fun.ext h
-#align measure_theory.Lp.ext MeasureTheory.lp.ext
+#align measure_theory.Lp.ext MeasureTheory.Lp.ext
-theorem ext_iff {f g : lp E p μ} : f = g ↔ f =ᵐ[μ] g :=
+theorem ext_iff {f g : Lp E p μ} : f = g ↔ f =ᵐ[μ] g :=
⟨fun h => by rw [h], fun h => ext h⟩
-#align measure_theory.Lp.ext_iff MeasureTheory.lp.ext_iff
+#align measure_theory.Lp.ext_iff MeasureTheory.Lp.ext_iff
-theorem mem_lp_iff_snorm_lt_top {f : α →ₘ[μ] E} : f ∈ lp E p μ ↔ snorm f p μ < ∞ :=
+theorem mem_Lp_iff_snorm_lt_top {f : α →ₘ[μ] E} : f ∈ Lp E p μ ↔ snorm f p μ < ∞ :=
Iff.refl _
-#align measure_theory.Lp.mem_Lp_iff_snorm_lt_top MeasureTheory.lp.mem_lp_iff_snorm_lt_top
+#align measure_theory.Lp.mem_Lp_iff_snorm_lt_top MeasureTheory.Lp.mem_Lp_iff_snorm_lt_top
-theorem mem_lp_iff_memℒp {f : α →ₘ[μ] E} : f ∈ lp E p μ ↔ Memℒp f p μ := by
+theorem mem_Lp_iff_memℒp {f : α →ₘ[μ] E} : f ∈ Lp E p μ ↔ Memℒp f p μ := by
simp [mem_Lp_iff_snorm_lt_top, mem_ℒp, f.strongly_measurable.ae_strongly_measurable]
-#align measure_theory.Lp.mem_Lp_iff_mem_ℒp MeasureTheory.lp.mem_lp_iff_memℒp
+#align measure_theory.Lp.mem_Lp_iff_mem_ℒp MeasureTheory.Lp.mem_Lp_iff_memℒp
-protected theorem antitone [FiniteMeasure μ] {p q : ℝ≥0∞} (hpq : p ≤ q) : lp E q μ ≤ lp E p μ :=
+protected theorem antitone [FiniteMeasure μ] {p q : ℝ≥0∞} (hpq : p ≤ q) : Lp E q μ ≤ Lp E p μ :=
fun f hf => (Memℒp.memℒp_of_exponent_le ⟨f.AEStronglyMeasurable, hf⟩ hpq).2
-#align measure_theory.Lp.antitone MeasureTheory.lp.antitone
+#align measure_theory.Lp.antitone MeasureTheory.Lp.antitone
@[simp]
-theorem coeFn_mk {f : α →ₘ[μ] E} (hf : snorm f p μ < ∞) : ((⟨f, hf⟩ : lp E p μ) : α → E) = f :=
+theorem coeFn_mk {f : α →ₘ[μ] E} (hf : snorm f p μ < ∞) : ((⟨f, hf⟩ : Lp E p μ) : α → E) = f :=
rfl
-#align measure_theory.Lp.coe_fn_mk MeasureTheory.lp.coeFn_mk
+#align measure_theory.Lp.coe_fn_mk MeasureTheory.Lp.coeFn_mk
@[simp]
-theorem coe_mk {f : α →ₘ[μ] E} (hf : snorm f p μ < ∞) : ((⟨f, hf⟩ : lp E p μ) : α →ₘ[μ] E) = f :=
+theorem coe_mk {f : α →ₘ[μ] E} (hf : snorm f p μ < ∞) : ((⟨f, hf⟩ : Lp E p μ) : α →ₘ[μ] E) = f :=
rfl
-#align measure_theory.Lp.coe_mk MeasureTheory.lp.coe_mk
+#align measure_theory.Lp.coe_mk MeasureTheory.Lp.coe_mk
@[simp]
-theorem toLp_coeFn (f : lp E p μ) (hf : Memℒp f p μ) : hf.toLp f = f := by cases f;
+theorem toLp_coeFn (f : Lp E p μ) (hf : Memℒp f p μ) : hf.toLp f = f := by cases f;
simp [mem_ℒp.to_Lp]
-#align measure_theory.Lp.to_Lp_coe_fn MeasureTheory.lp.toLp_coeFn
+#align measure_theory.Lp.to_Lp_coe_fn MeasureTheory.Lp.toLp_coeFn
-theorem snorm_lt_top (f : lp E p μ) : snorm f p μ < ∞ :=
+theorem snorm_lt_top (f : Lp E p μ) : snorm f p μ < ∞ :=
f.Prop
-#align measure_theory.Lp.snorm_lt_top MeasureTheory.lp.snorm_lt_top
+#align measure_theory.Lp.snorm_lt_top MeasureTheory.Lp.snorm_lt_top
-theorem snorm_ne_top (f : lp E p μ) : snorm f p μ ≠ ∞ :=
+theorem snorm_ne_top (f : Lp E p μ) : snorm f p μ ≠ ∞ :=
(snorm_lt_top f).Ne
-#align measure_theory.Lp.snorm_ne_top MeasureTheory.lp.snorm_ne_top
+#align measure_theory.Lp.snorm_ne_top MeasureTheory.Lp.snorm_ne_top
@[measurability]
-protected theorem stronglyMeasurable (f : lp E p μ) : StronglyMeasurable f :=
+protected theorem stronglyMeasurable (f : Lp E p μ) : StronglyMeasurable f :=
f.val.StronglyMeasurable
-#align measure_theory.Lp.strongly_measurable MeasureTheory.lp.stronglyMeasurable
+#align measure_theory.Lp.strongly_measurable MeasureTheory.Lp.stronglyMeasurable
@[measurability]
-protected theorem aEStronglyMeasurable (f : lp E p μ) : AEStronglyMeasurable f μ :=
+protected theorem aestronglyMeasurable (f : Lp E p μ) : AEStronglyMeasurable f μ :=
f.val.AEStronglyMeasurable
-#align measure_theory.Lp.ae_strongly_measurable MeasureTheory.lp.aEStronglyMeasurable
+#align measure_theory.Lp.ae_strongly_measurable MeasureTheory.Lp.aestronglyMeasurable
-protected theorem memℒp (f : lp E p μ) : Memℒp f p μ :=
- ⟨lp.aEStronglyMeasurable f, f.Prop⟩
-#align measure_theory.Lp.mem_ℒp MeasureTheory.lp.memℒp
+protected theorem memℒp (f : Lp E p μ) : Memℒp f p μ :=
+ ⟨Lp.aestronglyMeasurable f, f.Prop⟩
+#align measure_theory.Lp.mem_ℒp MeasureTheory.Lp.memℒp
variable (E p μ)
-theorem coeFn_zero : ⇑(0 : lp E p μ) =ᵐ[μ] 0 :=
+theorem coeFn_zero : ⇑(0 : Lp E p μ) =ᵐ[μ] 0 :=
AEEqFun.coeFn_zero
-#align measure_theory.Lp.coe_fn_zero MeasureTheory.lp.coeFn_zero
+#align measure_theory.Lp.coe_fn_zero MeasureTheory.Lp.coeFn_zero
variable {E p μ}
-theorem coeFn_neg (f : lp E p μ) : ⇑(-f) =ᵐ[μ] -f :=
+theorem coeFn_neg (f : Lp E p μ) : ⇑(-f) =ᵐ[μ] -f :=
AEEqFun.coeFn_neg _
-#align measure_theory.Lp.coe_fn_neg MeasureTheory.lp.coeFn_neg
+#align measure_theory.Lp.coe_fn_neg MeasureTheory.Lp.coeFn_neg
-theorem coeFn_add (f g : lp E p μ) : ⇑(f + g) =ᵐ[μ] f + g :=
+theorem coeFn_add (f g : Lp E p μ) : ⇑(f + g) =ᵐ[μ] f + g :=
AEEqFun.coeFn_add _ _
-#align measure_theory.Lp.coe_fn_add MeasureTheory.lp.coeFn_add
+#align measure_theory.Lp.coe_fn_add MeasureTheory.Lp.coeFn_add
-theorem coeFn_sub (f g : lp E p μ) : ⇑(f - g) =ᵐ[μ] f - g :=
+theorem coeFn_sub (f g : Lp E p μ) : ⇑(f - g) =ᵐ[μ] f - g :=
AEEqFun.coeFn_sub _ _
-#align measure_theory.Lp.coe_fn_sub MeasureTheory.lp.coeFn_sub
+#align measure_theory.Lp.coe_fn_sub MeasureTheory.Lp.coeFn_sub
theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [FiniteMeasure μ] :
- @AEEqFun.const α _ _ μ _ c ∈ lp E p μ :=
+ @AEEqFun.const α _ _ μ _ c ∈ Lp E p μ :=
(memℒp_const c).snorm_mk_lt_top
-#align measure_theory.Lp.mem_Lp_const MeasureTheory.lp.mem_lp_const
+#align measure_theory.Lp.mem_Lp_const MeasureTheory.Lp.mem_lp_const
-instance : Norm (lp E p μ) where norm f := ENNReal.toReal (snorm f p μ)
+instance : Norm (Lp E p μ) where norm f := ENNReal.toReal (snorm f p μ)
-- note: we need this to be defeq to the instance from `seminormed_add_group.to_has_nnnorm`, so
-- can't use `ennreal.to_nnreal (snorm f p μ)`
-instance : NNNorm (lp E p μ) where nnnorm f := ⟨‖f‖, ENNReal.toReal_nonneg⟩
+instance : NNNorm (Lp E p μ) where nnnorm f := ⟨‖f‖, ENNReal.toReal_nonneg⟩
-instance : Dist (lp E p μ) where dist f g := ‖f - g‖
+instance : Dist (Lp E p μ) where dist f g := ‖f - g‖
-instance : EDist (lp E p μ) where edist f g := snorm (f - g) p μ
+instance : EDist (Lp E p μ) where edist f g := snorm (f - g) p μ
-theorem norm_def (f : lp E p μ) : ‖f‖ = ENNReal.toReal (snorm f p μ) :=
+theorem norm_def (f : Lp E p μ) : ‖f‖ = ENNReal.toReal (snorm f p μ) :=
rfl
-#align measure_theory.Lp.norm_def MeasureTheory.lp.norm_def
+#align measure_theory.Lp.norm_def MeasureTheory.Lp.norm_def
-theorem nnnorm_def (f : lp E p μ) : ‖f‖₊ = ENNReal.toNNReal (snorm f p μ) :=
+theorem nnnorm_def (f : Lp E p μ) : ‖f‖₊ = ENNReal.toNNReal (snorm f p μ) :=
Subtype.eta _ _
-#align measure_theory.Lp.nnnorm_def MeasureTheory.lp.nnnorm_def
+#align measure_theory.Lp.nnnorm_def MeasureTheory.Lp.nnnorm_def
@[simp, norm_cast]
-protected theorem coe_nnnorm (f : lp E p μ) : (‖f‖₊ : ℝ) = ‖f‖ :=
+protected theorem coe_nnnorm (f : Lp E p μ) : (‖f‖₊ : ℝ) = ‖f‖ :=
rfl
-#align measure_theory.Lp.coe_nnnorm MeasureTheory.lp.coe_nnnorm
+#align measure_theory.Lp.coe_nnnorm MeasureTheory.Lp.coe_nnnorm
+#print MeasureTheory.Lp.norm_toLp /-
@[simp]
theorem norm_toLp (f : α → E) (hf : Memℒp f p μ) : ‖hf.toLp f‖ = ENNReal.toReal (snorm f p μ) := by
rw [norm_def, snorm_congr_ae (mem_ℒp.coe_fn_to_Lp hf)]
-#align measure_theory.Lp.norm_to_Lp MeasureTheory.lp.norm_toLp
+#align measure_theory.Lp.norm_to_Lp MeasureTheory.Lp.norm_toLp
+-/
+#print MeasureTheory.Lp.nnnorm_toLp /-
@[simp]
theorem nnnorm_toLp (f : α → E) (hf : Memℒp f p μ) :
‖hf.toLp f‖₊ = ENNReal.toNNReal (snorm f p μ) :=
NNReal.eq <| norm_toLp f hf
-#align measure_theory.Lp.nnnorm_to_Lp MeasureTheory.lp.nnnorm_toLp
+#align measure_theory.Lp.nnnorm_to_Lp MeasureTheory.Lp.nnnorm_toLp
+-/
-theorem dist_def (f g : lp E p μ) : dist f g = (snorm (f - g) p μ).toReal :=
+theorem dist_def (f g : Lp E p μ) : dist f g = (snorm (f - g) p μ).toReal :=
by
simp_rw [dist, norm_def]
congr 1
apply snorm_congr_ae (coe_fn_sub _ _)
-#align measure_theory.Lp.dist_def MeasureTheory.lp.dist_def
+#align measure_theory.Lp.dist_def MeasureTheory.Lp.dist_def
-theorem edist_def (f g : lp E p μ) : edist f g = snorm (f - g) p μ :=
+theorem edist_def (f g : Lp E p μ) : edist f g = snorm (f - g) p μ :=
rfl
-#align measure_theory.Lp.edist_def MeasureTheory.lp.edist_def
+#align measure_theory.Lp.edist_def MeasureTheory.Lp.edist_def
+#print MeasureTheory.Lp.edist_toLp_toLp /-
@[simp]
theorem edist_toLp_toLp (f g : α → E) (hf : Memℒp f p μ) (hg : Memℒp g p μ) :
edist (hf.toLp f) (hg.toLp g) = snorm (f - g) p μ := by rw [edist_def];
exact snorm_congr_ae (hf.coe_fn_to_Lp.sub hg.coe_fn_to_Lp)
-#align measure_theory.Lp.edist_to_Lp_to_Lp MeasureTheory.lp.edist_toLp_toLp
+#align measure_theory.Lp.edist_to_Lp_to_Lp MeasureTheory.Lp.edist_toLp_toLp
+-/
+#print MeasureTheory.Lp.edist_toLp_zero /-
@[simp]
theorem edist_toLp_zero (f : α → E) (hf : Memℒp f p μ) : edist (hf.toLp f) 0 = snorm f p μ := by
convert edist_to_Lp_to_Lp f 0 hf zero_mem_ℒp; simp
-#align measure_theory.Lp.edist_to_Lp_zero MeasureTheory.lp.edist_toLp_zero
+#align measure_theory.Lp.edist_to_Lp_zero MeasureTheory.Lp.edist_toLp_zero
+-/
@[simp]
-theorem nnnorm_zero : ‖(0 : lp E p μ)‖₊ = 0 :=
+theorem nnnorm_zero : ‖(0 : Lp E p μ)‖₊ = 0 :=
by
rw [nnnorm_def]
change (snorm (⇑(0 : α →ₘ[μ] E)) p μ).toNNReal = 0
simp [snorm_congr_ae ae_eq_fun.coe_fn_zero, snorm_zero]
-#align measure_theory.Lp.nnnorm_zero MeasureTheory.lp.nnnorm_zero
+#align measure_theory.Lp.nnnorm_zero MeasureTheory.Lp.nnnorm_zero
@[simp]
-theorem norm_zero : ‖(0 : lp E p μ)‖ = 0 :=
+theorem norm_zero : ‖(0 : Lp E p μ)‖ = 0 :=
congr_arg coe nnnorm_zero
-#align measure_theory.Lp.norm_zero MeasureTheory.lp.norm_zero
+#align measure_theory.Lp.norm_zero MeasureTheory.Lp.norm_zero
-theorem nnnorm_eq_zero_iff {f : lp E p μ} (hp : 0 < p) : ‖f‖₊ = 0 ↔ f = 0 :=
+theorem nnnorm_eq_zero_iff {f : Lp E p μ} (hp : 0 < p) : ‖f‖₊ = 0 ↔ f = 0 :=
by
refine' ⟨fun hf => _, fun hf => by simp [hf]⟩
rw [nnnorm_def, ENNReal.toNNReal_eq_zero_iff] at hf
@@ -322,13 +337,13 @@ theorem nnnorm_eq_zero_iff {f : lp E p μ} (hp : 0 < p) : ‖f‖₊ = 0 ↔ f =
· rw [snorm_eq_zero_iff (Lp.ae_strongly_measurable f) hp.ne.symm] at hf
exact Subtype.eq (ae_eq_fun.ext (hf.trans ae_eq_fun.coe_fn_zero.symm))
· exact absurd hf (snorm_ne_top f)
-#align measure_theory.Lp.nnnorm_eq_zero_iff MeasureTheory.lp.nnnorm_eq_zero_iff
+#align measure_theory.Lp.nnnorm_eq_zero_iff MeasureTheory.Lp.nnnorm_eq_zero_iff
-theorem norm_eq_zero_iff {f : lp E p μ} (hp : 0 < p) : ‖f‖ = 0 ↔ f = 0 :=
+theorem norm_eq_zero_iff {f : Lp E p μ} (hp : 0 < p) : ‖f‖ = 0 ↔ f = 0 :=
Iff.symm <| (nnnorm_eq_zero_iff hp).symm.trans <| (NNReal.coe_eq_zero _).symm
-#align measure_theory.Lp.norm_eq_zero_iff MeasureTheory.lp.norm_eq_zero_iff
+#align measure_theory.Lp.norm_eq_zero_iff MeasureTheory.Lp.norm_eq_zero_iff
-theorem eq_zero_iff_ae_eq_zero {f : lp E p μ} : f = 0 ↔ f =ᵐ[μ] 0 :=
+theorem eq_zero_iff_ae_eq_zero {f : Lp E p μ} : f = 0 ↔ f =ᵐ[μ] 0 :=
by
constructor
· intro h
@@ -339,19 +354,19 @@ theorem eq_zero_iff_ae_eq_zero {f : lp E p μ} : f = 0 ↔ f =ᵐ[μ] 0 :=
filter_upwards [h, ae_eq_fun.coe_fn_const α (0 : E)]with _ ha h'a
rw [ha]
exact h'a.symm
-#align measure_theory.Lp.eq_zero_iff_ae_eq_zero MeasureTheory.lp.eq_zero_iff_ae_eq_zero
+#align measure_theory.Lp.eq_zero_iff_ae_eq_zero MeasureTheory.Lp.eq_zero_iff_ae_eq_zero
@[simp]
-theorem nnnorm_neg (f : lp E p μ) : ‖-f‖₊ = ‖f‖₊ := by
+theorem nnnorm_neg (f : Lp E p μ) : ‖-f‖₊ = ‖f‖₊ := by
rw [nnnorm_def, nnnorm_def, snorm_congr_ae (coe_fn_neg _), snorm_neg]
-#align measure_theory.Lp.nnnorm_neg MeasureTheory.lp.nnnorm_neg
+#align measure_theory.Lp.nnnorm_neg MeasureTheory.Lp.nnnorm_neg
@[simp]
-theorem norm_neg (f : lp E p μ) : ‖-f‖ = ‖f‖ :=
+theorem norm_neg (f : Lp E p μ) : ‖-f‖ = ‖f‖ :=
(congr_arg (coe : ℝ≥0 → ℝ) (nnnorm_neg f) : _)
-#align measure_theory.Lp.norm_neg MeasureTheory.lp.norm_neg
+#align measure_theory.Lp.norm_neg MeasureTheory.Lp.norm_neg
-theorem nnnorm_le_mul_nnnorm_of_ae_le_mul {c : ℝ≥0} {f : lp E p μ} {g : lp F p μ}
+theorem nnnorm_le_mul_nnnorm_of_ae_le_mul {c : ℝ≥0} {f : Lp E p μ} {g : Lp F p μ}
(h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) : ‖f‖₊ ≤ c * ‖g‖₊ :=
by
simp only [nnnorm_def]
@@ -360,9 +375,9 @@ theorem nnnorm_le_mul_nnnorm_of_ae_le_mul {c : ℝ≥0} {f : lp E p μ} {g : lp
ENNReal.toNNReal_coe] at this
· exact (Lp.mem_ℒp _).snorm_ne_top
· exact ENNReal.mul_ne_top ENNReal.coe_ne_top (Lp.mem_ℒp _).snorm_ne_top
-#align measure_theory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul MeasureTheory.lp.nnnorm_le_mul_nnnorm_of_ae_le_mul
+#align measure_theory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul MeasureTheory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul
-theorem norm_le_mul_norm_of_ae_le_mul {c : ℝ} {f : lp E p μ} {g : lp F p μ}
+theorem norm_le_mul_norm_of_ae_le_mul {c : ℝ} {f : Lp E p μ} {g : Lp F p μ}
(h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : ‖f‖ ≤ c * ‖g‖ :=
by
cases' le_or_lt 0 c with hc hc
@@ -371,46 +386,46 @@ theorem norm_le_mul_norm_of_ae_le_mul {c : ℝ} {f : lp E p μ} {g : lp F p μ}
· simp only [norm_def]
have := snorm_eq_zero_and_zero_of_ae_le_mul_neg h hc p
simp [this]
-#align measure_theory.Lp.norm_le_mul_norm_of_ae_le_mul MeasureTheory.lp.norm_le_mul_norm_of_ae_le_mul
+#align measure_theory.Lp.norm_le_mul_norm_of_ae_le_mul MeasureTheory.Lp.norm_le_mul_norm_of_ae_le_mul
-theorem norm_le_norm_of_ae_le {f : lp E p μ} {g : lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
+theorem norm_le_norm_of_ae_le {f : Lp E p μ} {g : Lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
‖f‖ ≤ ‖g‖ :=
by
rw [norm_def, norm_def, ENNReal.toReal_le_toReal (snorm_ne_top _) (snorm_ne_top _)]
exact snorm_mono_ae h
-#align measure_theory.Lp.norm_le_norm_of_ae_le MeasureTheory.lp.norm_le_norm_of_ae_le
-
-theorem mem_lp_of_nnnorm_ae_le_mul {c : ℝ≥0} {f : α →ₘ[μ] E} {g : lp F p μ}
- (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) : f ∈ lp E p μ :=
- mem_lp_iff_memℒp.2 <| Memℒp.of_nnnorm_le_mul (lp.memℒp g) f.AEStronglyMeasurable h
-#align measure_theory.Lp.mem_Lp_of_nnnorm_ae_le_mul MeasureTheory.lp.mem_lp_of_nnnorm_ae_le_mul
-
-theorem mem_lp_of_ae_le_mul {c : ℝ} {f : α →ₘ[μ] E} {g : lp F p μ}
- (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : f ∈ lp E p μ :=
- mem_lp_iff_memℒp.2 <| Memℒp.of_le_mul (lp.memℒp g) f.AEStronglyMeasurable h
-#align measure_theory.Lp.mem_Lp_of_ae_le_mul MeasureTheory.lp.mem_lp_of_ae_le_mul
-
-theorem mem_lp_of_nnnorm_ae_le {f : α →ₘ[μ] E} {g : lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ ‖g x‖₊) :
- f ∈ lp E p μ :=
- mem_lp_iff_memℒp.2 <| Memℒp.of_le (lp.memℒp g) f.AEStronglyMeasurable h
-#align measure_theory.Lp.mem_Lp_of_nnnorm_ae_le MeasureTheory.lp.mem_lp_of_nnnorm_ae_le
-
-theorem mem_lp_of_ae_le {f : α →ₘ[μ] E} {g : lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
- f ∈ lp E p μ :=
- mem_lp_of_nnnorm_ae_le h
-#align measure_theory.Lp.mem_Lp_of_ae_le MeasureTheory.lp.mem_lp_of_ae_le
-
-theorem mem_lp_of_ae_nnnorm_bound [FiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ≥0)
- (hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) : f ∈ lp E p μ :=
- mem_lp_iff_memℒp.2 <| Memℒp.of_bound f.AEStronglyMeasurable _ hfC
-#align measure_theory.Lp.mem_Lp_of_ae_nnnorm_bound MeasureTheory.lp.mem_lp_of_ae_nnnorm_bound
-
-theorem mem_lp_of_ae_bound [FiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ) (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
- f ∈ lp E p μ :=
- mem_lp_iff_memℒp.2 <| Memℒp.of_bound f.AEStronglyMeasurable _ hfC
-#align measure_theory.Lp.mem_Lp_of_ae_bound MeasureTheory.lp.mem_lp_of_ae_bound
-
-theorem nnnorm_le_of_ae_bound [FiniteMeasure μ] {f : lp E p μ} {C : ℝ≥0}
+#align measure_theory.Lp.norm_le_norm_of_ae_le MeasureTheory.Lp.norm_le_norm_of_ae_le
+
+theorem mem_Lp_of_nnnorm_ae_le_mul {c : ℝ≥0} {f : α →ₘ[μ] E} {g : Lp F p μ}
+ (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) : f ∈ Lp E p μ :=
+ mem_Lp_iff_memℒp.2 <| Memℒp.of_nnnorm_le_mul (Lp.memℒp g) f.AEStronglyMeasurable h
+#align measure_theory.Lp.mem_Lp_of_nnnorm_ae_le_mul MeasureTheory.Lp.mem_Lp_of_nnnorm_ae_le_mul
+
+theorem mem_Lp_of_ae_le_mul {c : ℝ} {f : α →ₘ[μ] E} {g : Lp F p μ}
+ (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : f ∈ Lp E p μ :=
+ mem_Lp_iff_memℒp.2 <| Memℒp.of_le_mul (Lp.memℒp g) f.AEStronglyMeasurable h
+#align measure_theory.Lp.mem_Lp_of_ae_le_mul MeasureTheory.Lp.mem_Lp_of_ae_le_mul
+
+theorem mem_Lp_of_nnnorm_ae_le {f : α →ₘ[μ] E} {g : Lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ ‖g x‖₊) :
+ f ∈ Lp E p μ :=
+ mem_Lp_iff_memℒp.2 <| Memℒp.of_le (Lp.memℒp g) f.AEStronglyMeasurable h
+#align measure_theory.Lp.mem_Lp_of_nnnorm_ae_le MeasureTheory.Lp.mem_Lp_of_nnnorm_ae_le
+
+theorem mem_Lp_of_ae_le {f : α →ₘ[μ] E} {g : Lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
+ f ∈ Lp E p μ :=
+ mem_Lp_of_nnnorm_ae_le h
+#align measure_theory.Lp.mem_Lp_of_ae_le MeasureTheory.Lp.mem_Lp_of_ae_le
+
+theorem mem_Lp_of_ae_nnnorm_bound [FiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ≥0)
+ (hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) : f ∈ Lp E p μ :=
+ mem_Lp_iff_memℒp.2 <| Memℒp.of_bound f.AEStronglyMeasurable _ hfC
+#align measure_theory.Lp.mem_Lp_of_ae_nnnorm_bound MeasureTheory.Lp.mem_Lp_of_ae_nnnorm_bound
+
+theorem mem_Lp_of_ae_bound [FiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ) (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
+ f ∈ Lp E p μ :=
+ mem_Lp_iff_memℒp.2 <| Memℒp.of_bound f.AEStronglyMeasurable _ hfC
+#align measure_theory.Lp.mem_Lp_of_ae_bound MeasureTheory.Lp.mem_Lp_of_ae_bound
+
+theorem nnnorm_le_of_ae_bound [FiniteMeasure μ] {f : Lp E p μ} {C : ℝ≥0}
(hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) : ‖f‖₊ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ * C :=
by
by_cases hμ : μ = 0
@@ -421,20 +436,20 @@ theorem nnnorm_le_of_ae_bound [FiniteMeasure μ] {f : lp E p μ} {C : ℝ≥0}
refine' (snorm_le_of_ae_nnnorm_bound hfC).trans_eq _
rw [← coe_measure_univ_nnreal μ, ENNReal.coe_rpow_of_ne_zero (measure_univ_nnreal_pos hμ).ne',
ENNReal.coe_mul, mul_comm, ENNReal.smul_def, smul_eq_mul]
-#align measure_theory.Lp.nnnorm_le_of_ae_bound MeasureTheory.lp.nnnorm_le_of_ae_bound
+#align measure_theory.Lp.nnnorm_le_of_ae_bound MeasureTheory.Lp.nnnorm_le_of_ae_bound
-theorem norm_le_of_ae_bound [FiniteMeasure μ] {f : lp E p μ} {C : ℝ} (hC : 0 ≤ C)
+theorem norm_le_of_ae_bound [FiniteMeasure μ] {f : Lp E p μ} {C : ℝ} (hC : 0 ≤ C)
(hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : ‖f‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ * C :=
by
lift C to ℝ≥0 using hC
have := nnnorm_le_of_ae_bound hfC
rwa [← NNReal.coe_le_coe, NNReal.coe_mul, NNReal.coe_rpow] at this
-#align measure_theory.Lp.norm_le_of_ae_bound MeasureTheory.lp.norm_le_of_ae_bound
+#align measure_theory.Lp.norm_le_of_ae_bound MeasureTheory.Lp.norm_le_of_ae_bound
-instance [hp : Fact (1 ≤ p)] : NormedAddCommGroup (lp E p μ) :=
+instance [hp : Fact (1 ≤ p)] : NormedAddCommGroup (Lp E p μ) :=
{
AddGroupNorm.toNormedAddCommGroup
- { toFun := (norm : lp E p μ → ℝ)
+ { toFun := (norm : Lp E p μ → ℝ)
map_zero' := norm_zero
neg' := by simp
add_le' := fun f g => by
@@ -454,10 +469,10 @@ instance [hp : Fact (1 ≤ p)] : NormedAddCommGroup (lp E p μ) :=
ENNReal.ofReal_toReal (snorm_ne_top (f - g))] }
-- check no diamond is created
-example [Fact (1 ≤ p)] : PseudoEMetricSpace.toHasEdist = (lp.hasEdist : EDist (lp E p μ)) :=
+example [Fact (1 ≤ p)] : PseudoEMetricSpace.toHasEdist = (Lp.instEDist : EDist (Lp E p μ)) :=
rfl
-example [Fact (1 ≤ p)] : SeminormedAddGroup.toNNNorm = (lp.hasNnnorm : NNNorm (lp E p μ)) :=
+example [Fact (1 ≤ p)] : SeminormedAddGroup.toNNNorm = (Lp.instNNNorm : NNNorm (Lp E p μ)) :=
rfl
section BoundedSMul
@@ -468,45 +483,45 @@ variable [NormedRing 𝕜] [NormedRing 𝕜'] [Module 𝕜 E] [Module 𝕜' E]
variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜' E]
-theorem mem_lp_const_smul (c : 𝕜) (f : lp E p μ) : c • ↑f ∈ lp E p μ :=
+theorem mem_Lp_const_smul (c : 𝕜) (f : Lp E p μ) : c • ↑f ∈ Lp E p μ :=
by
rw [mem_Lp_iff_snorm_lt_top, snorm_congr_ae (ae_eq_fun.coe_fn_smul _ _)]
refine' (snorm_const_smul_le _ _).trans_lt _
rw [ENNReal.smul_def, smul_eq_mul, ENNReal.mul_lt_top_iff]
exact Or.inl ⟨ENNReal.coe_lt_top, f.prop⟩
-#align measure_theory.Lp.mem_Lp_const_smul MeasureTheory.lp.mem_lp_const_smul
+#align measure_theory.Lp.mem_Lp_const_smul MeasureTheory.Lp.mem_Lp_const_smul
variable (E p μ 𝕜)
/-- The `𝕜`-submodule of elements of `α →ₘ[μ] E` whose `Lp` norm is finite. This is `Lp E p μ`,
with extra structure. -/
-def lpSubmodule : Submodule 𝕜 (α →ₘ[μ] E) :=
- { lp E p μ with smul_mem' := fun c f hf => by simpa using mem_Lp_const_smul c ⟨f, hf⟩ }
-#align measure_theory.Lp.Lp_submodule MeasureTheory.lp.lpSubmodule
+def LpSubmodule : Submodule 𝕜 (α →ₘ[μ] E) :=
+ { Lp E p μ with smul_mem' := fun c f hf => by simpa using mem_Lp_const_smul c ⟨f, hf⟩ }
+#align measure_theory.Lp.Lp_submodule MeasureTheory.Lp.LpSubmodule
variable {E p μ 𝕜}
-theorem coe_lpSubmodule : (lpSubmodule E p μ 𝕜).toAddSubgroup = lp E p μ :=
+theorem coe_LpSubmodule : (LpSubmodule E p μ 𝕜).toAddSubgroup = Lp E p μ :=
rfl
-#align measure_theory.Lp.coe_Lp_submodule MeasureTheory.lp.coe_lpSubmodule
+#align measure_theory.Lp.coe_Lp_submodule MeasureTheory.Lp.coe_LpSubmodule
-instance : Module 𝕜 (lp E p μ) :=
- { (lpSubmodule E p μ 𝕜).Module with }
+instance : Module 𝕜 (Lp E p μ) :=
+ { (LpSubmodule E p μ 𝕜).Module with }
-theorem coeFn_smul (c : 𝕜) (f : lp E p μ) : ⇑(c • f) =ᵐ[μ] c • f :=
+theorem coeFn_smul (c : 𝕜) (f : Lp E p μ) : ⇑(c • f) =ᵐ[μ] c • f :=
AEEqFun.coeFn_smul _ _
-#align measure_theory.Lp.coe_fn_smul MeasureTheory.lp.coeFn_smul
+#align measure_theory.Lp.coe_fn_smul MeasureTheory.Lp.coeFn_smul
-instance [Module 𝕜ᵐᵒᵖ E] [BoundedSMul 𝕜ᵐᵒᵖ E] [IsCentralScalar 𝕜 E] : IsCentralScalar 𝕜 (lp E p μ)
+instance [Module 𝕜ᵐᵒᵖ E] [BoundedSMul 𝕜ᵐᵒᵖ E] [IsCentralScalar 𝕜 E] : IsCentralScalar 𝕜 (Lp E p μ)
where op_smul_eq_smul k f := Subtype.ext <| op_smul_eq_smul k (f : α →ₘ[μ] E)
-instance [SMulCommClass 𝕜 𝕜' E] : SMulCommClass 𝕜 𝕜' (lp E p μ)
+instance [SMulCommClass 𝕜 𝕜' E] : SMulCommClass 𝕜 𝕜' (Lp E p μ)
where smul_comm k k' f := Subtype.ext <| smul_comm k k' (f : α →ₘ[μ] E)
-instance [SMul 𝕜 𝕜'] [IsScalarTower 𝕜 𝕜' E] : IsScalarTower 𝕜 𝕜' (lp E p μ)
+instance [SMul 𝕜 𝕜'] [IsScalarTower 𝕜 𝕜' E] : IsScalarTower 𝕜 𝕜' (Lp E p μ)
where smul_assoc k k' f := Subtype.ext <| smul_assoc k k' (f : α →ₘ[μ] E)
-instance [Fact (1 ≤ p)] : BoundedSMul 𝕜 (lp E p μ) :=
+instance [Fact (1 ≤ p)] : BoundedSMul 𝕜 (Lp E p μ) :=
-- TODO: add `has_bounded_smul.of_nnnorm_smul_le
BoundedSMul.of_norm_smul_le
fun r f => by
@@ -521,7 +536,7 @@ section NormedSpace
variable {𝕜 : Type _} [NormedField 𝕜] [NormedSpace 𝕜 E]
-instance [Fact (1 ≤ p)] : NormedSpace 𝕜 (lp E p μ) where norm_smul_le _ _ := norm_smul_le _ _
+instance [Fact (1 ≤ p)] : NormedSpace 𝕜 (Lp E p μ) where norm_smul_le _ _ := norm_smul_le _ _
end NormedSpace
@@ -735,7 +750,7 @@ open Set Function
variable {s : Set α} {hs : MeasurableSet s} {hμs : μ s ≠ ∞} {c : E}
/-- Indicator of a set as an element of `Lp`. -/
-def indicatorConstLp (p : ℝ≥0∞) (hs : MeasurableSet s) (hμs : μ s ≠ ∞) (c : E) : lp E p μ :=
+def indicatorConstLp (p : ℝ≥0∞) (hs : MeasurableSet s) (hμs : μ s ≠ ∞) (c : E) : Lp E p μ :=
Memℒp.toLp (s.indicator fun _ => c) (memℒp_indicator_const p hs c (Or.inr hμs))
#align measure_theory.indicator_const_Lp MeasureTheory.indicatorConstLp
@@ -765,22 +780,22 @@ theorem norm_indicatorConstLp_top (hμs_ne_zero : μ s ≠ 0) : ‖indicatorCons
ENNReal.rpow_zero, mul_one, ENNReal.coe_toReal, coe_nnnorm]
#align measure_theory.norm_indicator_const_Lp_top MeasureTheory.norm_indicatorConstLp_top
-theorem norm_indicator_const_Lp' (hp_pos : p ≠ 0) (hμs_pos : μ s ≠ 0) :
+theorem norm_indicatorConstLp' (hp_pos : p ≠ 0) (hμs_pos : μ s ≠ 0) :
‖indicatorConstLp p hs hμs c‖ = ‖c‖ * (μ s).toReal ^ (1 / p.toReal) :=
by
by_cases hp_top : p = ∞
· rw [hp_top, ENNReal.top_toReal, div_zero, Real.rpow_zero, mul_one]
exact norm_indicator_const_Lp_top hμs_pos
· exact norm_indicator_const_Lp hp_pos hp_top
-#align measure_theory.norm_indicator_const_Lp' MeasureTheory.norm_indicator_const_Lp'
+#align measure_theory.norm_indicator_const_Lp' MeasureTheory.norm_indicatorConstLp'
@[simp]
-theorem indicator_const_empty : indicatorConstLp p MeasurableSet.empty (by simp : μ ∅ ≠ ∞) c = 0 :=
+theorem indicatorConst_empty : indicatorConstLp p MeasurableSet.empty (by simp : μ ∅ ≠ ∞) c = 0 :=
by
rw [Lp.eq_zero_iff_ae_eq_zero]
convert indicator_const_Lp_coe_fn
simp [Set.indicator_empty']
-#align measure_theory.indicator_const_empty MeasureTheory.indicator_const_empty
+#align measure_theory.indicator_const_empty MeasureTheory.indicatorConst_empty
theorem memℒp_add_of_disjoint {f g : α → E} (h : Disjoint (support f) (support g))
(hf : StronglyMeasurable f) (hg : StronglyMeasurable g) :
@@ -902,7 +917,7 @@ theorem memℒp_comp_iff_of_antilipschitz {α E F} {K K'} [MeasurableSpace α] {
/-- When `g` is a Lipschitz function sending `0` to `0` and `f` is in `Lp`, then `g ∘ f` is well
defined as an element of `Lp`. -/
-def compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : lp E p μ) : lp F p μ :=
+def compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : Lp E p μ) : Lp F p μ :=
⟨AEEqFun.comp g hg.Continuous (f : α →ₘ[μ] E),
by
suffices ∀ᵐ x ∂μ, ‖ae_eq_fun.comp g hg.continuous (f : α →ₘ[μ] E) x‖ ≤ c * ‖f x‖ by
@@ -913,13 +928,13 @@ def compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : lp E p μ) : lp F p μ :
exact hg.dist_le_mul (f a) 0⟩
#align lipschitz_with.comp_Lp LipschitzWith.compLp
-theorem coeFn_compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : lp E p μ) :
+theorem coeFn_compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : Lp E p μ) :
hg.compLp g0 f =ᵐ[μ] g ∘ f :=
AEEqFun.coeFn_comp _ _ _
#align lipschitz_with.coe_fn_comp_Lp LipschitzWith.coeFn_compLp
@[simp]
-theorem compLp_zero (hg : LipschitzWith c g) (g0 : g 0 = 0) : hg.compLp g0 (0 : lp E p μ) = 0 :=
+theorem compLp_zero (hg : LipschitzWith c g) (g0 : g 0 = 0) : hg.compLp g0 (0 : Lp E p μ) = 0 :=
by
rw [Lp.eq_zero_iff_ae_eq_zero]
apply (coe_fn_comp_Lp _ _ _).trans
@@ -927,7 +942,7 @@ theorem compLp_zero (hg : LipschitzWith c g) (g0 : g 0 = 0) : hg.compLp g0 (0 :
simp [ha, g0]
#align lipschitz_with.comp_Lp_zero LipschitzWith.compLp_zero
-theorem norm_compLp_sub_le (hg : LipschitzWith c g) (g0 : g 0 = 0) (f f' : lp E p μ) :
+theorem norm_compLp_sub_le (hg : LipschitzWith c g) (g0 : g 0 = 0) (f f' : Lp E p μ) :
‖hg.compLp g0 f - hg.compLp g0 f'‖ ≤ c * ‖f - f'‖ :=
by
apply Lp.norm_le_mul_norm_of_ae_le_mul
@@ -937,17 +952,17 @@ theorem norm_compLp_sub_le (hg : LipschitzWith c g) (g0 : g 0 = 0) (f f' : lp E
exact hg.dist_le_mul (f a) (f' a)
#align lipschitz_with.norm_comp_Lp_sub_le LipschitzWith.norm_compLp_sub_le
-theorem norm_compLp_le (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : lp E p μ) :
+theorem norm_compLp_le (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : Lp E p μ) :
‖hg.compLp g0 f‖ ≤ c * ‖f‖ := by simpa using hg.norm_comp_Lp_sub_le g0 f 0
#align lipschitz_with.norm_comp_Lp_le LipschitzWith.norm_compLp_le
theorem lipschitzWith_compLp [Fact (1 ≤ p)] (hg : LipschitzWith c g) (g0 : g 0 = 0) :
- LipschitzWith c (hg.compLp g0 : lp E p μ → lp F p μ) :=
+ LipschitzWith c (hg.compLp g0 : Lp E p μ → Lp F p μ) :=
LipschitzWith.of_dist_le_mul fun f g => by simp [dist_eq_norm, norm_comp_Lp_sub_le]
#align lipschitz_with.lipschitz_with_comp_Lp LipschitzWith.lipschitzWith_compLp
theorem continuous_compLp [Fact (1 ≤ p)] (hg : LipschitzWith c g) (g0 : g 0 = 0) :
- Continuous (hg.compLp g0 : lp E p μ → lp F p μ) :=
+ Continuous (hg.compLp g0 : Lp E p μ → Lp F p μ) :=
(lipschitzWith_compLp hg g0).Continuous
#align lipschitz_with.continuous_comp_Lp LipschitzWith.continuous_compLp
@@ -958,34 +973,34 @@ namespace ContinuousLinearMap
variable {𝕜 : Type _} [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] [NormedSpace 𝕜 F]
/-- Composing `f : Lp ` with `L : E →L[𝕜] F`. -/
-def compLp (L : E →L[𝕜] F) (f : lp E p μ) : lp F p μ :=
+def compLp (L : E →L[𝕜] F) (f : Lp E p μ) : Lp F p μ :=
L.lipschitz.compLp (map_zero L) f
#align continuous_linear_map.comp_Lp ContinuousLinearMap.compLp
-theorem coeFn_compLp (L : E →L[𝕜] F) (f : lp E p μ) : ∀ᵐ a ∂μ, (L.compLp f) a = L (f a) :=
+theorem coeFn_compLp (L : E →L[𝕜] F) (f : Lp E p μ) : ∀ᵐ a ∂μ, (L.compLp f) a = L (f a) :=
LipschitzWith.coeFn_compLp _ _ _
#align continuous_linear_map.coe_fn_comp_Lp ContinuousLinearMap.coeFn_compLp
-theorem coeFn_comp_Lp' (L : E →L[𝕜] F) (f : lp E p μ) : L.compLp f =ᵐ[μ] fun a => L (f a) :=
+theorem coeFn_compLp' (L : E →L[𝕜] F) (f : Lp E p μ) : L.compLp f =ᵐ[μ] fun a => L (f a) :=
L.coeFn_compLp f
-#align continuous_linear_map.coe_fn_comp_Lp' ContinuousLinearMap.coeFn_comp_Lp'
+#align continuous_linear_map.coe_fn_comp_Lp' ContinuousLinearMap.coeFn_compLp'
-theorem comp_memℒp (L : E →L[𝕜] F) (f : lp E p μ) : Memℒp (L ∘ f) p μ :=
- (lp.memℒp (L.compLp f)).ae_eq (L.coeFn_comp_Lp' f)
+theorem comp_memℒp (L : E →L[𝕜] F) (f : Lp E p μ) : Memℒp (L ∘ f) p μ :=
+ (Lp.memℒp (L.compLp f)).ae_eq (L.coeFn_compLp' f)
#align continuous_linear_map.comp_mem_ℒp ContinuousLinearMap.comp_memℒp
-theorem comp_mem_ℒp' (L : E →L[𝕜] F) {f : α → E} (hf : Memℒp f p μ) : Memℒp (L ∘ f) p μ :=
+theorem comp_memℒp' (L : E →L[𝕜] F) {f : α → E} (hf : Memℒp f p μ) : Memℒp (L ∘ f) p μ :=
(L.comp_memℒp (hf.toLp f)).ae_eq (EventuallyEq.fun_comp hf.coeFn_toLp _)
-#align continuous_linear_map.comp_mem_ℒp' ContinuousLinearMap.comp_mem_ℒp'
+#align continuous_linear_map.comp_mem_ℒp' ContinuousLinearMap.comp_memℒp'
section IsROrC
variable {K : Type _} [IsROrC K]
-theorem MeasureTheory.Memℒp.of_real {f : α → ℝ} (hf : Memℒp f p μ) :
+theorem MeasureTheory.Memℒp.ofReal {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => (f x : K)) p μ :=
- (@IsROrC.ofRealClm K _).comp_mem_ℒp' hf
-#align measure_theory.mem_ℒp.of_real MeasureTheory.Memℒp.of_real
+ (@IsROrC.ofRealClm K _).comp_memℒp' hf
+#align measure_theory.mem_ℒp.of_real MeasureTheory.Memℒp.ofReal
theorem MeasureTheory.memℒp_re_im_iff {f : α → K} :
Memℒp (fun x => IsROrC.re (f x)) p μ ∧ Memℒp (fun x => IsROrC.im (f x)) p μ ↔ Memℒp f p μ :=
@@ -1000,7 +1015,7 @@ theorem MeasureTheory.memℒp_re_im_iff {f : α → K} :
end IsROrC
-theorem add_compLp (L L' : E →L[𝕜] F) (f : lp E p μ) :
+theorem add_compLp (L L' : E →L[𝕜] F) (f : Lp E p μ) :
(L + L').compLp f = L.compLp f + L'.compLp f :=
by
ext1
@@ -1013,7 +1028,7 @@ theorem add_compLp (L L' : E →L[𝕜] F) (f : lp E p μ) :
#align continuous_linear_map.add_comp_Lp ContinuousLinearMap.add_compLp
theorem smul_compLp {𝕜'} [NormedRing 𝕜'] [Module 𝕜' F] [BoundedSMul 𝕜' F] [SMulCommClass 𝕜 𝕜' F]
- (c : 𝕜') (L : E →L[𝕜] F) (f : lp E p μ) : (c • L).compLp f = c • L.compLp f :=
+ (c : 𝕜') (L : E →L[𝕜] F) (f : Lp E p μ) : (c • L).compLp f = c • L.compLp f :=
by
ext1
refine' (coe_fn_comp_Lp' (c • L) f).trans _
@@ -1023,14 +1038,14 @@ theorem smul_compLp {𝕜'} [NormedRing 𝕜'] [Module 𝕜' F] [BoundedSMul
rfl
#align continuous_linear_map.smul_comp_Lp ContinuousLinearMap.smul_compLp
-theorem norm_compLp_le (L : E →L[𝕜] F) (f : lp E p μ) : ‖L.compLp f‖ ≤ ‖L‖ * ‖f‖ :=
+theorem norm_compLp_le (L : E →L[𝕜] F) (f : Lp E p μ) : ‖L.compLp f‖ ≤ ‖L‖ * ‖f‖ :=
LipschitzWith.norm_compLp_le _ _ _
#align continuous_linear_map.norm_comp_Lp_le ContinuousLinearMap.norm_compLp_le
variable (μ p)
/-- Composing `f : Lp E p μ` with `L : E →L[𝕜] F`, seen as a `𝕜`-linear map on `Lp E p μ`. -/
-def compLpₗ (L : E →L[𝕜] F) : lp E p μ →ₗ[𝕜] lp F p μ
+def compLpₗ (L : E →L[𝕜] F) : Lp E p μ →ₗ[𝕜] Lp F p μ
where
toFun f := L.compLp f
map_add' := by
@@ -1056,13 +1071,13 @@ def compLpₗ (L : E →L[𝕜] F) : lp E p μ →ₗ[𝕜] lp F p μ
* `continuous_linear_map.comp_left_continuous_bounded` for bounded continuous functions,
* `continuous_linear_map.comp_left_continuous_compact` for continuous functions on compact spaces.
-/
-def compLpL [Fact (1 ≤ p)] (L : E →L[𝕜] F) : lp E p μ →L[𝕜] lp F p μ :=
+def compLpL [Fact (1 ≤ p)] (L : E →L[𝕜] F) : Lp E p μ →L[𝕜] Lp F p μ :=
LinearMap.mkContinuous (L.compLpₗ p μ) ‖L‖ L.norm_compLp_le
#align continuous_linear_map.comp_LpL ContinuousLinearMap.compLpL
variable {μ p}
-theorem coeFn_compLpL [Fact (1 ≤ p)] (L : E →L[𝕜] F) (f : lp E p μ) :
+theorem coeFn_compLpL [Fact (1 ≤ p)] (L : E →L[𝕜] F) (f : Lp E p μ) :
L.compLpL p μ f =ᵐ[μ] fun a => L (f a) :=
L.coeFn_compLp f
#align continuous_linear_map.coe_fn_comp_LpL ContinuousLinearMap.coeFn_compLpL
@@ -1108,7 +1123,7 @@ section PosPart
theorem lipschitzWith_pos_part : LipschitzWith 1 fun x : ℝ => max x 0 :=
LipschitzWith.of_dist_le_mul fun x y => by simp [Real.dist_eq, abs_max_sub_max_le_abs]
-#align measure_theory.Lp.lipschitz_with_pos_part MeasureTheory.lp.lipschitzWith_pos_part
+#align measure_theory.Lp.lipschitz_with_pos_part MeasureTheory.Lp.lipschitzWith_pos_part
theorem MeasureTheory.Memℒp.pos_part {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => max (f x) 0) p μ :=
@@ -1121,45 +1136,45 @@ theorem MeasureTheory.Memℒp.neg_part {f : α → ℝ} (hf : Memℒp f p μ) :
#align measure_theory.mem_ℒp.neg_part MeasureTheory.Memℒp.neg_part
/-- Positive part of a function in `L^p`. -/
-def posPart (f : lp ℝ p μ) : lp ℝ p μ :=
+def posPart (f : Lp ℝ p μ) : Lp ℝ p μ :=
lipschitzWith_pos_part.compLp (max_eq_right le_rfl) f
-#align measure_theory.Lp.pos_part MeasureTheory.lp.posPart
+#align measure_theory.Lp.pos_part MeasureTheory.Lp.posPart
/-- Negative part of a function in `L^p`. -/
-def negPart (f : lp ℝ p μ) : lp ℝ p μ :=
+def negPart (f : Lp ℝ p μ) : Lp ℝ p μ :=
posPart (-f)
-#align measure_theory.Lp.neg_part MeasureTheory.lp.negPart
+#align measure_theory.Lp.neg_part MeasureTheory.Lp.negPart
@[norm_cast]
-theorem coe_posPart (f : lp ℝ p μ) : (posPart f : α →ₘ[μ] ℝ) = (f : α →ₘ[μ] ℝ).posPart :=
+theorem coe_posPart (f : Lp ℝ p μ) : (posPart f : α →ₘ[μ] ℝ) = (f : α →ₘ[μ] ℝ).posPart :=
rfl
-#align measure_theory.Lp.coe_pos_part MeasureTheory.lp.coe_posPart
+#align measure_theory.Lp.coe_pos_part MeasureTheory.Lp.coe_posPart
-theorem coeFn_posPart (f : lp ℝ p μ) : ⇑(posPart f) =ᵐ[μ] fun a => max (f a) 0 :=
+theorem coeFn_posPart (f : Lp ℝ p μ) : ⇑(posPart f) =ᵐ[μ] fun a => max (f a) 0 :=
AEEqFun.coeFn_posPart _
-#align measure_theory.Lp.coe_fn_pos_part MeasureTheory.lp.coeFn_posPart
+#align measure_theory.Lp.coe_fn_pos_part MeasureTheory.Lp.coeFn_posPart
-theorem coeFn_negPart_eq_max (f : lp ℝ p μ) : ∀ᵐ a ∂μ, negPart f a = max (-f a) 0 :=
+theorem coeFn_negPart_eq_max (f : Lp ℝ p μ) : ∀ᵐ a ∂μ, negPart f a = max (-f a) 0 :=
by
rw [neg_part]
filter_upwards [coe_fn_pos_part (-f), coe_fn_neg f]with _ h₁ h₂
rw [h₁, h₂, Pi.neg_apply]
-#align measure_theory.Lp.coe_fn_neg_part_eq_max MeasureTheory.lp.coeFn_negPart_eq_max
+#align measure_theory.Lp.coe_fn_neg_part_eq_max MeasureTheory.Lp.coeFn_negPart_eq_max
-theorem coeFn_negPart (f : lp ℝ p μ) : ∀ᵐ a ∂μ, negPart f a = -min (f a) 0 :=
+theorem coeFn_negPart (f : Lp ℝ p μ) : ∀ᵐ a ∂μ, negPart f a = -min (f a) 0 :=
(coeFn_negPart_eq_max f).mono fun a h => by rw [h, ← max_neg_neg, neg_zero]
-#align measure_theory.Lp.coe_fn_neg_part MeasureTheory.lp.coeFn_negPart
+#align measure_theory.Lp.coe_fn_neg_part MeasureTheory.Lp.coeFn_negPart
-theorem continuous_posPart [Fact (1 ≤ p)] : Continuous fun f : lp ℝ p μ => posPart f :=
+theorem continuous_posPart [Fact (1 ≤ p)] : Continuous fun f : Lp ℝ p μ => posPart f :=
LipschitzWith.continuous_compLp _ _
-#align measure_theory.Lp.continuous_pos_part MeasureTheory.lp.continuous_posPart
+#align measure_theory.Lp.continuous_pos_part MeasureTheory.Lp.continuous_posPart
-theorem continuous_negPart [Fact (1 ≤ p)] : Continuous fun f : lp ℝ p μ => negPart f :=
+theorem continuous_negPart [Fact (1 ≤ p)] : Continuous fun f : Lp ℝ p μ => negPart f :=
by
- have eq : (fun f : lp ℝ p μ => negPart f) = fun f : lp ℝ p μ => posPart (-f) := rfl
+ have eq : (fun f : Lp ℝ p μ => negPart f) = fun f : Lp ℝ p μ => posPart (-f) := rfl
rw [Eq]
exact continuous_pos_part.comp continuous_neg
-#align measure_theory.Lp.continuous_neg_part MeasureTheory.lp.continuous_negPart
+#align measure_theory.Lp.continuous_neg_part MeasureTheory.Lp.continuous_negPart
end PosPart
@@ -1195,7 +1210,7 @@ theorem snorm'_lim_eq_lintegral_liminf {ι} [Nonempty ι] [LinearOrder ι] {f :
simp_rw [ENNReal.coe_rpow_of_nonneg _ hp_nonneg, ENNReal.tendsto_coe]
refine' ((NNReal.continuous_rpow_const hp_nonneg).Tendsto ‖f_lim a‖₊).comp _
exact (continuous_nnnorm.tendsto (f_lim a)).comp ha
-#align measure_theory.Lp.snorm'_lim_eq_lintegral_liminf MeasureTheory.lp.snorm'_lim_eq_lintegral_liminf
+#align measure_theory.Lp.snorm'_lim_eq_lintegral_liminf MeasureTheory.Lp.snorm'_lim_eq_lintegral_liminf
/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic filter.is_bounded_default -/
theorem snorm'_lim_le_liminf_snorm' {E} [NormedAddCommGroup E] {f : ℕ → α → E} {p : ℝ}
@@ -1217,7 +1232,7 @@ theorem snorm'_lim_le_liminf_snorm' {E} [NormedAddCommGroup E] {f : ℕ → α
is_bounded_default
rw [h_pow_liminf]
simp_rw [snorm', ← ENNReal.rpow_mul, one_div, inv_mul_cancel hp_pos.ne.symm, ENNReal.rpow_one]
-#align measure_theory.Lp.snorm'_lim_le_liminf_snorm' MeasureTheory.lp.snorm'_lim_le_liminf_snorm'
+#align measure_theory.Lp.snorm'_lim_le_liminf_snorm' MeasureTheory.Lp.snorm'_lim_le_liminf_snorm'
theorem snorm_exponent_top_lim_eq_essSup_liminf {ι} [Nonempty ι] [LinearOrder ι] {f : ι → α → G}
{f_lim : α → G} (h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
@@ -1228,7 +1243,7 @@ theorem snorm_exponent_top_lim_eq_essSup_liminf {ι} [Nonempty ι] [LinearOrder
rw [tendsto.liminf_eq]
rw [ENNReal.tendsto_coe]
exact (continuous_nnnorm.tendsto (f_lim x)).comp hx
-#align measure_theory.Lp.snorm_exponent_top_lim_eq_ess_sup_liminf MeasureTheory.lp.snorm_exponent_top_lim_eq_essSup_liminf
+#align measure_theory.Lp.snorm_exponent_top_lim_eq_ess_sup_liminf MeasureTheory.Lp.snorm_exponent_top_lim_eq_essSup_liminf
theorem snorm_exponent_top_lim_le_liminf_snorm_exponent_top {ι} [Nonempty ι] [Countable ι]
[LinearOrder ι] {f : ι → α → F} {f_lim : α → F}
@@ -1238,7 +1253,7 @@ theorem snorm_exponent_top_lim_le_liminf_snorm_exponent_top {ι} [Nonempty ι] [
rw [snorm_exponent_top_lim_eq_ess_sup_liminf h_lim]
simp_rw [snorm_exponent_top, snorm_ess_sup]
exact ENNReal.essSup_liminf_le fun n => fun x => (‖f n x‖₊ : ℝ≥0∞)
-#align measure_theory.Lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top MeasureTheory.lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top
+#align measure_theory.Lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top MeasureTheory.Lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top
theorem snorm_lim_le_liminf_snorm {E} [NormedAddCommGroup E] {f : ℕ → α → E}
(hf : ∀ n, AEStronglyMeasurable (f n) μ) (f_lim : α → E)
@@ -1254,13 +1269,13 @@ theorem snorm_lim_le_liminf_snorm {E} [NormedAddCommGroup E] {f : ℕ → α →
simp_rw [snorm_eq_snorm' hp0 hp_top]
have hp_pos : 0 < p.to_real := ENNReal.toReal_pos hp0 hp_top
exact snorm'_lim_le_liminf_snorm' hp_pos hf h_lim
-#align measure_theory.Lp.snorm_lim_le_liminf_snorm MeasureTheory.lp.snorm_lim_le_liminf_snorm
+#align measure_theory.Lp.snorm_lim_le_liminf_snorm MeasureTheory.Lp.snorm_lim_le_liminf_snorm
/-! ### `Lp` is complete iff Cauchy sequences of `ℒp` have limits in `ℒp` -/
-theorem tendsto_lp_iff_tendsto_ℒp' {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f : ι → lp E p μ)
- (f_lim : lp E p μ) :
+theorem tendsto_Lp_iff_tendsto_ℒp' {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f : ι → Lp E p μ)
+ (f_lim : Lp E p μ) :
fi.Tendsto f (𝓝 f_lim) ↔ fi.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) :=
by
rw [tendsto_iff_dist_tendsto_zero]
@@ -1268,9 +1283,9 @@ theorem tendsto_lp_iff_tendsto_ℒp' {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f :
rw [← ENNReal.zero_toReal, ENNReal.tendsto_toReal_iff (fun n => _) ENNReal.zero_ne_top]
rw [snorm_congr_ae (Lp.coe_fn_sub _ _).symm]
exact Lp.snorm_ne_top _
-#align measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp' MeasureTheory.lp.tendsto_lp_iff_tendsto_ℒp'
+#align measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp' MeasureTheory.Lp.tendsto_Lp_iff_tendsto_ℒp'
-theorem tendsto_lp_iff_tendsto_ℒp {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f : ι → lp E p μ)
+theorem tendsto_Lp_iff_tendsto_ℒp {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f : ι → Lp E p μ)
(f_lim : α → E) (f_lim_ℒp : Memℒp f_lim p μ) :
fi.Tendsto f (𝓝 (f_lim_ℒp.toLp f_lim)) ↔ fi.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) :=
by
@@ -1279,9 +1294,9 @@ theorem tendsto_lp_iff_tendsto_ℒp {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f :
(fun n => snorm (f n - mem_ℒp.to_Lp f_lim f_lim_ℒp) p μ) = fun n => snorm (f n - f_lim) p μ
· rw [h_eq]
exact funext fun n => snorm_congr_ae (eventually_eq.rfl.sub (mem_ℒp.coe_fn_to_Lp f_lim_ℒp))
-#align measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp MeasureTheory.lp.tendsto_lp_iff_tendsto_ℒp
+#align measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp MeasureTheory.Lp.tendsto_Lp_iff_tendsto_ℒp
-theorem tendsto_lp_iff_tendsto_ℒp'' {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f : ι → α → E)
+theorem tendsto_Lp_iff_tendsto_ℒp'' {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f : ι → α → E)
(f_ℒp : ∀ n, Memℒp (f n) p μ) (f_lim : α → E) (f_lim_ℒp : Memℒp f_lim p μ) :
fi.Tendsto (fun n => (f_ℒp n).toLp (f n)) (𝓝 (f_lim_ℒp.toLp f_lim)) ↔
fi.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) :=
@@ -1293,24 +1308,24 @@ theorem tendsto_lp_iff_tendsto_ℒp'' {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f
Lp.coe_fn_sub ((f_ℒp n).toLp (f n)) (f_lim_ℒp.to_Lp f_lim)]with _ hx₁ hx₂
rw [← hx₂]
exact hx₁.symm
-#align measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp'' MeasureTheory.lp.tendsto_lp_iff_tendsto_ℒp''
+#align measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp'' MeasureTheory.Lp.tendsto_Lp_iff_tendsto_ℒp''
-theorem tendsto_lp_of_tendsto_ℒp {ι} {fi : Filter ι} [hp : Fact (1 ≤ p)] {f : ι → lp E p μ}
+theorem tendsto_Lp_of_tendsto_ℒp {ι} {fi : Filter ι} [hp : Fact (1 ≤ p)] {f : ι → Lp E p μ}
(f_lim : α → E) (f_lim_ℒp : Memℒp f_lim p μ)
(h_tendsto : fi.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)) :
fi.Tendsto f (𝓝 (f_lim_ℒp.toLp f_lim)) :=
- (tendsto_lp_iff_tendsto_ℒp f f_lim f_lim_ℒp).mpr h_tendsto
-#align measure_theory.Lp.tendsto_Lp_of_tendsto_ℒp MeasureTheory.lp.tendsto_lp_of_tendsto_ℒp
+ (tendsto_Lp_iff_tendsto_ℒp f f_lim f_lim_ℒp).mpr h_tendsto
+#align measure_theory.Lp.tendsto_Lp_of_tendsto_ℒp MeasureTheory.Lp.tendsto_Lp_of_tendsto_ℒp
-theorem cauchySeq_lp_iff_cauchySeq_ℒp {ι} [Nonempty ι] [SemilatticeSup ι] [hp : Fact (1 ≤ p)]
- (f : ι → lp E p μ) :
+theorem cauchySeq_Lp_iff_cauchySeq_ℒp {ι} [Nonempty ι] [SemilatticeSup ι] [hp : Fact (1 ≤ p)]
+ (f : ι → Lp E p μ) :
CauchySeq f ↔ Tendsto (fun n : ι × ι => snorm (f n.fst - f n.snd) p μ) atTop (𝓝 0) :=
by
simp_rw [cauchySeq_iff_tendsto_dist_atTop_0, dist_def]
rw [← ENNReal.zero_toReal, ENNReal.tendsto_toReal_iff (fun n => _) ENNReal.zero_ne_top]
rw [snorm_congr_ae (Lp.coe_fn_sub _ _).symm]
exact snorm_ne_top _
-#align measure_theory.Lp.cauchy_seq_Lp_iff_cauchy_seq_ℒp MeasureTheory.lp.cauchySeq_lp_iff_cauchySeq_ℒp
+#align measure_theory.Lp.cauchy_seq_Lp_iff_cauchy_seq_ℒp MeasureTheory.Lp.cauchySeq_Lp_iff_cauchySeq_ℒp
theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
(H :
@@ -1318,7 +1333,7 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N),
∃ (f_lim : α → E)(hf_lim_meas : Memℒp f_lim p μ),
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)) :
- CompleteSpace (lp E p μ) :=
+ CompleteSpace (Lp E p μ) :=
by
let B := fun n : ℕ => ((1 : ℝ) / 2) ^ n
have hB_pos : ∀ n, 0 < B n := fun n => pow_pos (div_pos zero_lt_one zero_lt_two) n
@@ -1348,7 +1363,7 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
rwa [ENNReal.lt_ofReal_iff_toReal_lt]
rw [snorm_congr_ae (Lp.coe_fn_sub _ _).symm]
exact Lp.snorm_ne_top _
-#align measure_theory.Lp.complete_space_Lp_of_cauchy_complete_ℒp MeasureTheory.lp.completeSpace_lp_of_cauchy_complete_ℒp
+#align measure_theory.Lp.complete_space_Lp_of_cauchy_complete_ℒp MeasureTheory.Lp.completeSpace_lp_of_cauchy_complete_ℒp
/-! ### Prove that controlled Cauchy sequences of `ℒp` have limits in `ℒp` -/
@@ -1493,7 +1508,7 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
have hf_rw : (fun n => f n x) = fun n => f n x - f 0 x + f 0 x := by ext1 n; abel
rw [hf_rw]
exact ⟨l + f 0 x, tendsto.add_const _ hx⟩
-#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm' MeasureTheory.lp.ae_tendsto_of_cauchy_snorm'
+#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm' MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm'
theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
(hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
@@ -1529,7 +1544,7 @@ theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
specialize h_cau N n m hn hm
rwa [snorm_eq_snorm' (zero_lt_one.trans_le hp).Ne.symm hp_top] at h_cau
exact ae_tendsto_of_cauchy_snorm' hf hp1 hB h_cau'
-#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm MeasureTheory.lp.ae_tendsto_of_cauchy_snorm
+#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm
theorem cauchy_tendsto_of_tendsto {f : ℕ → α → E} (hf : ∀ n, AEStronglyMeasurable (f n) μ)
(f_lim : α → E) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
@@ -1556,7 +1571,7 @@ theorem cauchy_tendsto_of_tendsto {f : ℕ → α → E} (hf : ∀ n, AEStrongly
refine' liminf_le_of_frequently_le' (frequently_at_top.mpr _)
refine' fun N1 => ⟨max N N1, le_max_right _ _, _⟩
exact (h_cau N n (max N N1) hn (le_max_left _ _)).le.trans h_B
-#align measure_theory.Lp.cauchy_tendsto_of_tendsto MeasureTheory.lp.cauchy_tendsto_of_tendsto
+#align measure_theory.Lp.cauchy_tendsto_of_tendsto MeasureTheory.Lp.cauchy_tendsto_of_tendsto
theorem memℒp_of_cauchy_tendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf : ∀ n, Memℒp (f n) p μ)
(f_lim : α → E) (h_lim_meas : AEStronglyMeasurable f_lim μ)
@@ -1575,7 +1590,7 @@ theorem memℒp_of_cauchy_tendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf :
have h_neg : f_lim - f N = -(f N - f_lim) := by simp
rwa [h_neg, snorm_neg]
· exact (hf N).2
-#align measure_theory.Lp.mem_ℒp_of_cauchy_tendsto MeasureTheory.lp.memℒp_of_cauchy_tendsto
+#align measure_theory.Lp.mem_ℒp_of_cauchy_tendsto MeasureTheory.Lp.memℒp_of_cauchy_tendsto
theorem cauchy_complete_ℒp [CompleteSpace E] (hp : 1 ≤ p) {f : ℕ → α → E}
(hf : ∀ n, Memℒp (f n) p μ) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
@@ -1594,12 +1609,12 @@ theorem cauchy_complete_ℒp [CompleteSpace E] (hp : 1 ≤ p) {f : ℕ → α
have h_ℒp_lim : mem_ℒp f_lim p μ :=
mem_ℒp_of_cauchy_tendsto hp hf f_lim h_f_lim_meas.ae_strongly_measurable h_tendsto'
exact ⟨f_lim, h_ℒp_lim, h_tendsto'⟩
-#align measure_theory.Lp.cauchy_complete_ℒp MeasureTheory.lp.cauchy_complete_ℒp
+#align measure_theory.Lp.cauchy_complete_ℒp MeasureTheory.Lp.cauchy_complete_ℒp
/-! ### `Lp` is complete for `1 ≤ p` -/
-instance [CompleteSpace E] [hp : Fact (1 ≤ p)] : CompleteSpace (lp E p μ) :=
+instance [CompleteSpace E] [hp : Fact (1 ≤ p)] : CompleteSpace (Lp E p μ) :=
completeSpace_lp_of_cauchy_complete_ℒp fun f hf B hB h_cau =>
cauchy_complete_ℒp hp.elim hf hB.Ne h_cau
@@ -1624,37 +1639,37 @@ variable (E p μ)
/-- An additive subgroup of `Lp E p μ`, consisting of the equivalence classes which contain a
bounded continuous representative. -/
-def MeasureTheory.lp.boundedContinuousFunction : AddSubgroup (lp E p μ) :=
+def MeasureTheory.Lp.boundedContinuousFunction : AddSubgroup (Lp E p μ) :=
AddSubgroup.addSubgroupOf
- ((ContinuousMap.toAEEqFunAddHom μ).comp (toContinuousMapAddHom α E)).range (lp E p μ)
-#align measure_theory.Lp.bounded_continuous_function MeasureTheory.lp.boundedContinuousFunction
+ ((ContinuousMap.toAEEqFunAddHom μ).comp (toContinuousMapAddHom α E)).range (Lp E p μ)
+#align measure_theory.Lp.bounded_continuous_function MeasureTheory.Lp.boundedContinuousFunction
variable {E p μ}
/-- By definition, the elements of `Lp.bounded_continuous_function E p μ` are the elements of
`Lp E p μ` which contain a bounded continuous representative. -/
-theorem MeasureTheory.lp.mem_boundedContinuousFunction_iff {f : lp E p μ} :
- f ∈ MeasureTheory.lp.boundedContinuousFunction E p μ ↔
+theorem MeasureTheory.Lp.mem_boundedContinuousFunction_iff {f : Lp E p μ} :
+ f ∈ MeasureTheory.Lp.boundedContinuousFunction E p μ ↔
∃ f₀ : α →ᵇ E, f₀.toContinuousMap.toAEEqFun μ = (f : α →ₘ[μ] E) :=
AddSubgroup.mem_addSubgroupOf
-#align measure_theory.Lp.mem_bounded_continuous_function_iff MeasureTheory.lp.mem_boundedContinuousFunction_iff
+#align measure_theory.Lp.mem_bounded_continuous_function_iff MeasureTheory.Lp.mem_boundedContinuousFunction_iff
namespace BoundedContinuousFunction
variable [FiniteMeasure μ]
/-- A bounded continuous function on a finite-measure space is in `Lp`. -/
-theorem mem_lp (f : α →ᵇ E) : f.toContinuousMap.toAEEqFun μ ∈ lp E p μ :=
+theorem mem_Lp (f : α →ᵇ E) : f.toContinuousMap.toAEEqFun μ ∈ Lp E p μ :=
by
refine' Lp.mem_Lp_of_ae_bound ‖f‖ _
filter_upwards [f.to_continuous_map.coe_fn_to_ae_eq_fun μ]with x _
convert f.norm_coe_le_norm x
-#align bounded_continuous_function.mem_Lp BoundedContinuousFunction.mem_lp
+#align bounded_continuous_function.mem_Lp BoundedContinuousFunction.mem_Lp
/-- The `Lp`-norm of a bounded continuous function is at most a constant (depending on the measure
of the whole space) times its sup-norm. -/
-theorem lp_nnnorm_le (f : α →ᵇ E) :
- ‖(⟨f.toContinuousMap.toAEEqFun μ, mem_lp f⟩ : lp E p μ)‖₊ ≤
+theorem Lp_nnnorm_le (f : α →ᵇ E) :
+ ‖(⟨f.toContinuousMap.toAEEqFun μ, mem_Lp f⟩ : Lp E p μ)‖₊ ≤
measureUnivNNReal μ ^ p.toReal⁻¹ * ‖f‖₊ :=
by
apply Lp.nnnorm_le_of_ae_bound
@@ -1662,30 +1677,30 @@ theorem lp_nnnorm_le (f : α →ᵇ E) :
intro x hx
rw [← NNReal.coe_le_coe, coe_nnnorm, coe_nnnorm]
convert f.norm_coe_le_norm x
-#align bounded_continuous_function.Lp_nnnorm_le BoundedContinuousFunction.lp_nnnorm_le
+#align bounded_continuous_function.Lp_nnnorm_le BoundedContinuousFunction.Lp_nnnorm_le
/-- The `Lp`-norm of a bounded continuous function is at most a constant (depending on the measure
of the whole space) times its sup-norm. -/
-theorem lp_norm_le (f : α →ᵇ E) :
- ‖(⟨f.toContinuousMap.toAEEqFun μ, mem_lp f⟩ : lp E p μ)‖ ≤
+theorem Lp_norm_le (f : α →ᵇ E) :
+ ‖(⟨f.toContinuousMap.toAEEqFun μ, mem_Lp f⟩ : Lp E p μ)‖ ≤
measureUnivNNReal μ ^ p.toReal⁻¹ * ‖f‖ :=
- lp_nnnorm_le f
-#align bounded_continuous_function.Lp_norm_le BoundedContinuousFunction.lp_norm_le
+ Lp_nnnorm_le f
+#align bounded_continuous_function.Lp_norm_le BoundedContinuousFunction.Lp_norm_le
variable (p μ)
/-- The normed group homomorphism of considering a bounded continuous function on a finite-measure
space as an element of `Lp`. -/
-def toLpHom [Fact (1 ≤ p)] : NormedAddGroupHom (α →ᵇ E) (lp E p μ) :=
+def toLpHom [Fact (1 ≤ p)] : NormedAddGroupHom (α →ᵇ E) (Lp E p μ) :=
{
AddMonoidHom.codRestrict ((ContinuousMap.toAEEqFunAddHom μ).comp (toContinuousMapAddHom α E))
- (lp E p μ) mem_lp with
- bound' := ⟨_, lp_norm_le⟩ }
+ (Lp E p μ) mem_Lp with
+ bound' := ⟨_, Lp_norm_le⟩ }
#align bounded_continuous_function.to_Lp_hom BoundedContinuousFunction.toLpHom
theorem range_toLpHom [Fact (1 ≤ p)] :
- ((toLpHom p μ).range : AddSubgroup (lp E p μ)) =
- MeasureTheory.lp.boundedContinuousFunction E p μ :=
+ ((toLpHom p μ).range : AddSubgroup (Lp E p μ)) =
+ MeasureTheory.Lp.boundedContinuousFunction E p μ :=
by
symm
convert AddMonoidHom.addSubgroupOf_range_eq_of_le
@@ -1697,11 +1712,11 @@ variable (𝕜 : Type _) [Fact (1 ≤ p)]
/-- The bounded linear map of considering a bounded continuous function on a finite-measure space
as an element of `Lp`. -/
-def toLp [NormedField 𝕜] [NormedSpace 𝕜 E] : (α →ᵇ E) →L[𝕜] lp E p μ :=
+def toLp [NormedField 𝕜] [NormedSpace 𝕜 E] : (α →ᵇ E) →L[𝕜] Lp E p μ :=
LinearMap.mkContinuous
- (LinearMap.codRestrict (lp.lpSubmodule E p μ 𝕜)
- ((ContinuousMap.toAEEqFunLinearMap μ).comp (toContinuousMapLinearMap α E 𝕜)) mem_lp)
- _ lp_norm_le
+ (LinearMap.codRestrict (Lp.LpSubmodule E p μ 𝕜)
+ ((ContinuousMap.toAEEqFunLinearMap μ).comp (toContinuousMapLinearMap α E 𝕜)) mem_Lp)
+ _ Lp_norm_le
#align bounded_continuous_function.to_Lp BoundedContinuousFunction.toLp
theorem coeFn_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : α →ᵇ E) : toLp p μ 𝕜 f =ᵐ[μ] f :=
@@ -1711,15 +1726,15 @@ theorem coeFn_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : α →ᵇ E) : t
variable {𝕜}
theorem range_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] :
- (LinearMap.range (toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] lp E p μ)).toAddSubgroup =
- MeasureTheory.lp.boundedContinuousFunction E p μ :=
+ (LinearMap.range (toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)).toAddSubgroup =
+ MeasureTheory.Lp.boundedContinuousFunction E p μ :=
range_toLpHom p μ
#align bounded_continuous_function.range_to_Lp BoundedContinuousFunction.range_toLp
variable {p}
theorem toLp_norm_le [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] :
- ‖(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] lp E p μ)‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ :=
+ ‖(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ :=
LinearMap.mkContinuous_norm_le _ (measureUnivNNReal μ ^ p.toReal⁻¹).coe_nonneg _
#align bounded_continuous_function.to_Lp_norm_le BoundedContinuousFunction.toLp_norm_le
@@ -1733,7 +1748,7 @@ theorem toLp_inj {f g : α →ᵇ E} [μ.OpenPosMeasure] [NormedField 𝕜] [Nor
#align bounded_continuous_function.to_Lp_inj BoundedContinuousFunction.toLp_inj
theorem toLp_injective [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
- Function.Injective ⇑(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] lp E p μ) := fun f g hfg => (toLp_inj μ).mp hfg
+ Function.Injective ⇑(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ) := fun f g hfg => (toLp_inj μ).mp hfg
#align bounded_continuous_function.to_Lp_injective BoundedContinuousFunction.toLp_injective
end BoundedContinuousFunction
@@ -1748,7 +1763,7 @@ variable (𝕜 : Type _) (p μ) [Fact (1 ≤ p)]
space `α` as an element of `Lp`. By definition, the norm on `C(α, E)` is the sup-norm, transferred
from the space `α →ᵇ E` of bounded continuous functions, so this construction is just a matter of
transferring the structure from `bounded_continuous_function.to_Lp` along the isometry. -/
-def toLp [NormedField 𝕜] [NormedSpace 𝕜 E] : C(α, E) →L[𝕜] lp E p μ :=
+def toLp [NormedField 𝕜] [NormedSpace 𝕜 E] : C(α, E) →L[𝕜] Lp E p μ :=
(BoundedContinuousFunction.toLp p μ 𝕜).comp
(linearIsometryBoundedOfCompact α E 𝕜).toLinearIsometry.toContinuousLinearMap
#align continuous_map.to_Lp ContinuousMap.toLp
@@ -1756,8 +1771,8 @@ def toLp [NormedField 𝕜] [NormedSpace 𝕜 E] : C(α, E) →L[𝕜] lp E p μ
variable {𝕜}
theorem range_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] :
- (LinearMap.range (toLp p μ 𝕜 : C(α, E) →L[𝕜] lp E p μ)).toAddSubgroup =
- MeasureTheory.lp.boundedContinuousFunction E p μ :=
+ (LinearMap.range (toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)).toAddSubgroup =
+ MeasureTheory.Lp.boundedContinuousFunction E p μ :=
by
refine' SetLike.ext' _
have := (linear_isometry_bounded_of_compact α E 𝕜).Surjective
@@ -1790,7 +1805,7 @@ theorem coe_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) :
#align continuous_map.coe_to_Lp ContinuousMap.coe_toLp
theorem toLp_injective [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
- Function.Injective ⇑(toLp p μ 𝕜 : C(α, E) →L[𝕜] lp E p μ) :=
+ Function.Injective ⇑(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ) :=
(BoundedContinuousFunction.toLp_injective _).comp (linearIsometryBoundedOfCompact α E 𝕜).Injective
#align continuous_map.to_Lp_injective ContinuousMap.toLp_injective
@@ -1803,24 +1818,24 @@ variable {μ}
/-- If a sum of continuous functions `g n` is convergent, and the same sum converges in `Lᵖ` to `h`,
then in fact `g n` converges uniformly to `h`. -/
-theorem hasSum_of_hasSum_lp {β : Type _} [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E]
+theorem hasSum_of_hasSum_Lp {β : Type _} [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E]
{g : β → C(α, E)} {f : C(α, E)} (hg : Summable g)
(hg2 : HasSum (toLp p μ 𝕜 ∘ g) (toLp p μ 𝕜 f)) : HasSum g f :=
by
convert Summable.hasSum hg
exact to_Lp_injective μ (hg2.unique ((to_Lp p μ 𝕜).HasSum <| Summable.hasSum hg))
-#align continuous_map.has_sum_of_has_sum_Lp ContinuousMap.hasSum_of_hasSum_lp
+#align continuous_map.has_sum_of_has_sum_Lp ContinuousMap.hasSum_of_hasSum_Lp
variable (μ) [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E]
theorem toLp_norm_eq_toLp_norm_coe :
- ‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] lp E p μ)‖ =
- ‖(BoundedContinuousFunction.toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] lp E p μ)‖ :=
+ ‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)‖ =
+ ‖(BoundedContinuousFunction.toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)‖ :=
ContinuousLinearMap.op_norm_comp_linearIsometryEquiv _ _
#align continuous_map.to_Lp_norm_eq_to_Lp_norm_coe ContinuousMap.toLp_norm_eq_toLp_norm_coe
/-- Bound for the operator norm of `continuous_map.to_Lp`. -/
-theorem toLp_norm_le : ‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] lp E p μ)‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ :=
+theorem toLp_norm_le : ‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ :=
by rw [to_Lp_norm_eq_to_Lp_norm_coe]; exact BoundedContinuousFunction.toLp_norm_le μ
#align continuous_map.to_Lp_norm_le ContinuousMap.toLp_norm_le
@@ -1832,30 +1847,30 @@ namespace MeasureTheory
namespace Lp
-theorem pow_mul_meas_ge_le_norm (f : lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) (ε : ℝ≥0∞) :
+theorem pow_mul_meas_ge_le_norm (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) (ε : ℝ≥0∞) :
(ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal }) ^ (1 / p.toReal) ≤ ENNReal.ofReal ‖f‖ :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
- pow_mul_meas_ge_le_snorm μ hp_ne_zero hp_ne_top (lp.aEStronglyMeasurable f) ε
-#align measure_theory.Lp.pow_mul_meas_ge_le_norm MeasureTheory.lp.pow_mul_meas_ge_le_norm
+ pow_mul_meas_ge_le_snorm μ hp_ne_zero hp_ne_top (Lp.aestronglyMeasurable f) ε
+#align measure_theory.Lp.pow_mul_meas_ge_le_norm MeasureTheory.Lp.pow_mul_meas_ge_le_norm
-theorem mul_meas_ge_le_pow_norm (f : lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) (ε : ℝ≥0∞) :
+theorem mul_meas_ge_le_pow_norm (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) (ε : ℝ≥0∞) :
ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal } ≤ ENNReal.ofReal ‖f‖ ^ p.toReal :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
- mul_meas_ge_le_pow_snorm μ hp_ne_zero hp_ne_top (lp.aEStronglyMeasurable f) ε
-#align measure_theory.Lp.mul_meas_ge_le_pow_norm MeasureTheory.lp.mul_meas_ge_le_pow_norm
+ mul_meas_ge_le_pow_snorm μ hp_ne_zero hp_ne_top (Lp.aestronglyMeasurable f) ε
+#align measure_theory.Lp.mul_meas_ge_le_pow_norm MeasureTheory.Lp.mul_meas_ge_le_pow_norm
/-- A version of Markov's inequality with elements of Lp. -/
-theorem mul_meas_ge_le_pow_norm' (f : lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
+theorem mul_meas_ge_le_pow_norm' (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
(ε : ℝ≥0∞) : ε ^ p.toReal * μ { x | ε ≤ ‖f x‖₊ } ≤ ENNReal.ofReal ‖f‖ ^ p.toReal :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
- mul_meas_ge_le_pow_snorm' μ hp_ne_zero hp_ne_top (lp.aEStronglyMeasurable f) ε
-#align measure_theory.Lp.mul_meas_ge_le_pow_norm' MeasureTheory.lp.mul_meas_ge_le_pow_norm'
+ mul_meas_ge_le_pow_snorm' μ hp_ne_zero hp_ne_top (Lp.aestronglyMeasurable f) ε
+#align measure_theory.Lp.mul_meas_ge_le_pow_norm' MeasureTheory.Lp.mul_meas_ge_le_pow_norm'
-theorem meas_ge_le_mul_pow_norm (f : lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) {ε : ℝ≥0∞}
+theorem meas_ge_le_mul_pow_norm (f : Lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) {ε : ℝ≥0∞}
(hε : ε ≠ 0) : μ { x | ε ≤ ‖f x‖₊ } ≤ ε⁻¹ ^ p.toReal * ENNReal.ofReal ‖f‖ ^ p.toReal :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
- meas_ge_le_mul_pow_snorm μ hp_ne_zero hp_ne_top (lp.aEStronglyMeasurable f) hε
-#align measure_theory.Lp.meas_ge_le_mul_pow_norm MeasureTheory.lp.meas_ge_le_mul_pow_norm
+ meas_ge_le_mul_pow_snorm μ hp_ne_zero hp_ne_top (Lp.aestronglyMeasurable f) hε
+#align measure_theory.Lp.meas_ge_le_mul_pow_norm MeasureTheory.Lp.meas_ge_le_mul_pow_norm
end Lp
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -68,7 +68,7 @@ noncomputable section
open TopologicalSpace MeasureTheory Filter
-open NNReal ENNReal BigOperators Topology MeasureTheory
+open scoped NNReal ENNReal BigOperators Topology MeasureTheory
variable {α E F G : Type _} {m m0 : MeasurableSpace α} {p : ℝ≥0∞} {q : ℝ} {μ ν : Measure α}
[NormedAddCommGroup E] [NormedAddCommGroup F] [NormedAddCommGroup G]
@@ -1612,7 +1612,7 @@ end CompleteSpace
/-! ### Continuous functions in `Lp` -/
-open BoundedContinuousFunction
+open scoped BoundedContinuousFunction
open BoundedContinuousFunction
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -194,9 +194,7 @@ theorem coe_mk {f : α →ₘ[μ] E} (hf : snorm f p μ < ∞) : ((⟨f, hf⟩ :
#align measure_theory.Lp.coe_mk MeasureTheory.lp.coe_mk
@[simp]
-theorem toLp_coeFn (f : lp E p μ) (hf : Memℒp f p μ) : hf.toLp f = f :=
- by
- cases f
+theorem toLp_coeFn (f : lp E p μ) (hf : Memℒp f p μ) : hf.toLp f = f := by cases f;
simp [mem_ℒp.to_Lp]
#align measure_theory.Lp.to_Lp_coe_fn MeasureTheory.lp.toLp_coeFn
@@ -294,17 +292,13 @@ theorem edist_def (f g : lp E p μ) : edist f g = snorm (f - g) p μ :=
@[simp]
theorem edist_toLp_toLp (f g : α → E) (hf : Memℒp f p μ) (hg : Memℒp g p μ) :
- edist (hf.toLp f) (hg.toLp g) = snorm (f - g) p μ :=
- by
- rw [edist_def]
+ edist (hf.toLp f) (hg.toLp g) = snorm (f - g) p μ := by rw [edist_def];
exact snorm_congr_ae (hf.coe_fn_to_Lp.sub hg.coe_fn_to_Lp)
#align measure_theory.Lp.edist_to_Lp_to_Lp MeasureTheory.lp.edist_toLp_toLp
@[simp]
-theorem edist_toLp_zero (f : α → E) (hf : Memℒp f p μ) : edist (hf.toLp f) 0 = snorm f p μ :=
- by
- convert edist_to_Lp_to_Lp f 0 hf zero_mem_ℒp
- simp
+theorem edist_toLp_zero (f : α → E) (hf : Memℒp f p μ) : edist (hf.toLp f) 0 = snorm f p μ := by
+ convert edist_to_Lp_to_Lp f 0 hf zero_mem_ℒp; simp
#align measure_theory.Lp.edist_to_Lp_zero MeasureTheory.lp.edist_toLp_zero
@[simp]
@@ -651,9 +645,7 @@ theorem snormEssSup_indicator_eq_snormEssSup_restrict {f : α → F} (hs : Measu
by_cases hs_null : μ s = 0
· rw [measure.restrict_zero_set hs_null]
simp only [essSup_measure_zero, ENNReal.essSup_eq_zero_iff, ENNReal.bot_eq_zero]
- have hs_empty : s =ᵐ[μ] (∅ : Set α) := by
- rw [ae_eq_set]
- simpa using hs_null
+ have hs_empty : s =ᵐ[μ] (∅ : Set α) := by rw [ae_eq_set]; simpa using hs_null
refine' (indicator_ae_eq_of_ae_eq_set hs_empty).trans _
rw [Set.indicator_empty]
rfl
@@ -690,8 +682,7 @@ theorem memℒp_indicator_const (p : ℝ≥0∞) (hs : MeasurableSet s) (c : E)
by
rw [mem_ℒp_indicator_iff_restrict hs]
by_cases hp_zero : p = 0
- · rw [hp_zero]
- exact mem_ℒp_zero_iff_ae_strongly_measurable.mpr ae_strongly_measurable_const
+ · rw [hp_zero]; exact mem_ℒp_zero_iff_ae_strongly_measurable.mpr ae_strongly_measurable_const
by_cases hp_top : p = ∞
· rw [hp_top]
exact
@@ -797,10 +788,8 @@ theorem memℒp_add_of_disjoint {f g : α → E} (h : Disjoint (support f) (supp
by
borelize E
refine' ⟨fun hfg => ⟨_, _⟩, fun h => h.1.add h.2⟩
- · rw [← indicator_add_eq_left h]
- exact hfg.indicator (measurableSet_support hf.measurable)
- · rw [← indicator_add_eq_right h]
- exact hfg.indicator (measurableSet_support hg.measurable)
+ · rw [← indicator_add_eq_left h]; exact hfg.indicator (measurableSet_support hf.measurable)
+ · rw [← indicator_add_eq_right h]; exact hfg.indicator (measurableSet_support hg.measurable)
#align measure_theory.mem_ℒp_add_of_disjoint MeasureTheory.memℒp_add_of_disjoint
/-- The indicator of a disjoint union of two sets is the sum of the indicators of the sets. -/
@@ -829,8 +818,7 @@ theorem Memℒp.norm_rpow_div {f : α → E} (hf : Memℒp f p μ) (q : ℝ≥0
by_cases q_top : q = ∞; · simp [q_top]
by_cases q_zero : q = 0
· simp [q_zero]
- by_cases p_zero : p = 0
- · simp [p_zero]
+ by_cases p_zero : p = 0; · simp [p_zero]
rw [ENNReal.div_zero p_zero]
exact (mem_ℒp_top_const (1 : ℝ)).2
rw [snorm_norm_rpow _ (ENNReal.toReal_pos q_zero q_top)]
@@ -1080,17 +1068,12 @@ theorem coeFn_compLpL [Fact (1 ≤ p)] (L : E →L[𝕜] F) (f : lp E p μ) :
#align continuous_linear_map.coe_fn_comp_LpL ContinuousLinearMap.coeFn_compLpL
theorem add_compLpL [Fact (1 ≤ p)] (L L' : E →L[𝕜] F) :
- (L + L').compLpL p μ = L.compLpL p μ + L'.compLpL p μ :=
- by
- ext1 f
- exact add_comp_Lp L L' f
+ (L + L').compLpL p μ = L.compLpL p μ + L'.compLpL p μ := by ext1 f; exact add_comp_Lp L L' f
#align continuous_linear_map.add_comp_LpL ContinuousLinearMap.add_compLpL
theorem smul_compLpL [Fact (1 ≤ p)] {𝕜'} [NormedRing 𝕜'] [Module 𝕜' F] [BoundedSMul 𝕜' F]
- [SMulCommClass 𝕜 𝕜' F] (c : 𝕜') (L : E →L[𝕜] F) : (c • L).compLpL p μ = c • L.compLpL p μ :=
- by
- ext1 f
- exact smul_comp_Lp c L f
+ [SMulCommClass 𝕜 𝕜' F] (c : 𝕜') (L : E →L[𝕜] F) : (c • L).compLpL p μ = c • L.compLpL p μ := by
+ ext1 f; exact smul_comp_Lp c L f
#align continuous_linear_map.smul_comp_LpL ContinuousLinearMap.smul_compLpL
theorem norm_compLpL_le [Fact (1 ≤ p)] (L : E →L[𝕜] F) : ‖L.compLpL p μ‖ ≤ ‖L‖ :=
@@ -1356,9 +1339,7 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
exact (ENNReal.ofReal_tsum_of_nonneg (fun n => le_of_lt (hB_pos n)) hB.summable).symm
have h_sum := (@ENNReal.summable _ B1).HasSum
rwa [h_tsum_B1] at h_sum
- have hB1 : (∑' i, B1 i) < ∞ := by
- rw [hB1_has.tsum_eq]
- exact ENNReal.ofReal_lt_top
+ have hB1 : (∑' i, B1 i) < ∞ := by rw [hB1_has.tsum_eq]; exact ENNReal.ofReal_lt_top
let f1 : ℕ → α → E := fun n => f n
refine' H f1 (fun n => Lp.mem_ℒp (f n)) B1 hB1 fun N n m hn hm => _
specialize hf N n m hn hm
@@ -1428,10 +1409,8 @@ private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E
suffices h_pow : (∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ≤ (∑' i, B i) ^ p
· rwa [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div]
have h_tsum_1 :
- ∀ g : ℕ → ℝ≥0∞, (∑' i, g i) = at_top.liminf fun n => ∑ i in Finset.range (n + 1), g i :=
- by
- intro g
- rw [ENNReal.tsum_eq_liminf_sum_nat, ← liminf_nat_add _ 1]
+ ∀ g : ℕ → ℝ≥0∞, (∑' i, g i) = at_top.liminf fun n => ∑ i in Finset.range (n + 1), g i := by
+ intro g; rw [ENNReal.tsum_eq_liminf_sum_nat, ← liminf_nat_add _ 1]
simp_rw [h_tsum_1 _]
rw [← h_tsum_1]
have h_liminf_pow :
@@ -1511,10 +1490,7 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
(∑ i : ℕ in Finset.range n, (fun m => f m x) (i + 1) - (fun m => f m x) i) = f n x - f 0 x
rw [Finset.sum_range_sub]
rw [h_rw_sum] at hx
- have hf_rw : (fun n => f n x) = fun n => f n x - f 0 x + f 0 x :=
- by
- ext1 n
- abel
+ have hf_rw : (fun n => f n x) = fun n => f n x - f 0 x + f 0 x := by ext1 n; abel
rw [hf_rw]
exact ⟨l + f 0 x, tendsto.add_const _ hx⟩
#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm' MeasureTheory.lp.ae_tendsto_of_cauchy_snorm'
@@ -1714,9 +1690,7 @@ theorem range_toLpHom [Fact (1 ≤ p)] :
symm
convert AddMonoidHom.addSubgroupOf_range_eq_of_le
((ContinuousMap.toAEEqFunAddHom μ).comp (to_continuous_map_add_hom α E))
- (by
- rintro - ⟨f, rfl⟩
- exact mem_Lp f : _ ≤ Lp E p μ)
+ (by rintro - ⟨f, rfl⟩; exact mem_Lp f : _ ≤ Lp E p μ)
#align bounded_continuous_function.range_to_Lp_hom BoundedContinuousFunction.range_toLpHom
variable (𝕜 : Type _) [Fact (1 ≤ p)]
@@ -1847,9 +1821,7 @@ theorem toLp_norm_eq_toLp_norm_coe :
/-- Bound for the operator norm of `continuous_map.to_Lp`. -/
theorem toLp_norm_le : ‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] lp E p μ)‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ :=
- by
- rw [to_Lp_norm_eq_to_Lp_norm_coe]
- exact BoundedContinuousFunction.toLp_norm_le μ
+ by rw [to_Lp_norm_eq_to_Lp_norm_coe]; exact BoundedContinuousFunction.toLp_norm_le μ
#align continuous_map.to_Lp_norm_le ContinuousMap.toLp_norm_le
end ContinuousMap
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -4,39 +4,23 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit 6480bedf0354aaba0016eeefd726f7e3e5fc50aa
+! leanprover-community/mathlib commit c4015acc0a223449d44061e27ddac1835a3852b9
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
-import Mathbin.Analysis.NormedSpace.IndicatorFunction
import Mathbin.Analysis.Normed.Group.Hom
-import Mathbin.Analysis.SpecialFunctions.Pow.Continuity
-import Mathbin.MeasureTheory.Function.EssSup
-import Mathbin.MeasureTheory.Function.AeEqFun
-import Mathbin.MeasureTheory.Integral.MeanInequalities
+import Mathbin.MeasureTheory.Function.LpSeminorm
import Mathbin.Topology.ContinuousFunction.Compact
/-!
-# ℒp space and Lp space
+# Lp space
-This file describes properties of almost everywhere strongly measurable functions with finite
-seminorm, denoted by `snorm f p μ` and defined for `p:ℝ≥0∞` asmm_group (Lp E p μ) := `0` if `p=0`,
-`(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and `ess_sup ‖f‖ μ` for `p=∞`.
-
-The Prop-valued `mem_ℒp f p μ` states that a function `f : α → E` has finite seminorm.
-The space `Lp E p μ` is the subtype of elements of `α →ₘ[μ] E` (see ae_eq_fun) such that
-`snorm f p μ` is finite. For `1 ≤ p`, `snorm` defines a norm and `Lp` is a complete metric space.
+This file provides the space `Lp E p μ` as the subtype of elements of `α →ₘ[μ] E` (see ae_eq_fun)
+such that `snorm f p μ` is finite. For `1 ≤ p`, `snorm` defines a norm and `Lp` is a complete metric
+space.
## Main definitions
-* `snorm' f p μ` : `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `f : α → F` and `p : ℝ`, where `α` is a measurable
- space and `F` is a normed group.
-* `snorm_ess_sup f μ` : seminorm in `ℒ∞`, equal to the essential supremum `ess_sup ‖f‖ μ`.
-* `snorm f p μ` : for `p : ℝ≥0∞`, seminorm in `ℒp`, equal to `0` for `p=0`, to `snorm' f p μ`
- for `0 < p < ∞` and to `snorm_ess_sup f μ` for `p = ∞`.
-
-* `mem_ℒp f p μ` : property that the function `f` is almost everywhere strongly measurable and has
- finite `p`-seminorm for the measure `μ` (`snorm f p μ < ∞`)
* `Lp E p μ` : elements of `α →ₘ[μ] E` (see ae_eq_fun) such that `snorm f p μ` is finite. Defined
as an `add_subgroup` of `α →ₘ[μ] E`.
@@ -91,1615 +75,6 @@ variable {α E F G : Type _} {m m0 : MeasurableSpace α} {p : ℝ≥0∞} {q :
namespace MeasureTheory
-section ℒp
-
-/-!
-### ℒp seminorm
-
-We define the ℒp seminorm, denoted by `snorm f p μ`. For real `p`, it is given by an integral
-formula (for which we use the notation `snorm' f p μ`), and for `p = ∞` it is the essential
-supremum (for which we use the notation `snorm_ess_sup f μ`).
-
-We also define a predicate `mem_ℒp f p μ`, requesting that a function is almost everywhere
-measurable and has finite `snorm f p μ`.
-
-This paragraph is devoted to the basic properties of these definitions. It is constructed as
-follows: for a given property, we prove it for `snorm'` and `snorm_ess_sup` when it makes sense,
-deduce it for `snorm`, and translate it in terms of `mem_ℒp`.
--/
-
-
-section ℒpSpaceDefinition
-
-/-- `(∫ ‖f a‖^q ∂μ) ^ (1/q)`, which is a seminorm on the space of measurable functions for which
-this quantity is finite -/
-def snorm' {m : MeasurableSpace α} (f : α → F) (q : ℝ) (μ : Measure α) : ℝ≥0∞ :=
- (∫⁻ a, ‖f a‖₊ ^ q ∂μ) ^ (1 / q)
-#align measure_theory.snorm' MeasureTheory.snorm'
-
-/-- seminorm for `ℒ∞`, equal to the essential supremum of `‖f‖`. -/
-def snormEssSup {m : MeasurableSpace α} (f : α → F) (μ : Measure α) :=
- essSup (fun x => (‖f x‖₊ : ℝ≥0∞)) μ
-#align measure_theory.snorm_ess_sup MeasureTheory.snormEssSup
-
-/-- `ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
-`ess_sup ‖f‖ μ` for `p = ∞`. -/
-def snorm {m : MeasurableSpace α} (f : α → F) (p : ℝ≥0∞) (μ : Measure α) : ℝ≥0∞ :=
- if p = 0 then 0 else if p = ∞ then snormEssSup f μ else snorm' f (ENNReal.toReal p) μ
-#align measure_theory.snorm MeasureTheory.snorm
-
-theorem snorm_eq_snorm' (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) {f : α → F} :
- snorm f p μ = snorm' f (ENNReal.toReal p) μ := by simp [snorm, hp_ne_zero, hp_ne_top]
-#align measure_theory.snorm_eq_snorm' MeasureTheory.snorm_eq_snorm'
-
-theorem snorm_eq_lintegral_rpow_nnnorm (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) {f : α → F} :
- snorm f p μ = (∫⁻ x, ‖f x‖₊ ^ p.toReal ∂μ) ^ (1 / p.toReal) := by
- rw [snorm_eq_snorm' hp_ne_zero hp_ne_top, snorm']
-#align measure_theory.snorm_eq_lintegral_rpow_nnnorm MeasureTheory.snorm_eq_lintegral_rpow_nnnorm
-
-theorem snorm_one_eq_lintegral_nnnorm {f : α → F} : snorm f 1 μ = ∫⁻ x, ‖f x‖₊ ∂μ := by
- simp_rw [snorm_eq_lintegral_rpow_nnnorm one_ne_zero ENNReal.coe_ne_top, ENNReal.one_toReal,
- one_div_one, ENNReal.rpow_one]
-#align measure_theory.snorm_one_eq_lintegral_nnnorm MeasureTheory.snorm_one_eq_lintegral_nnnorm
-
-@[simp]
-theorem snorm_exponent_top {f : α → F} : snorm f ∞ μ = snormEssSup f μ := by simp [snorm]
-#align measure_theory.snorm_exponent_top MeasureTheory.snorm_exponent_top
-
-/-- The property that `f:α→E` is ae strongly measurable and `(∫ ‖f a‖^p ∂μ)^(1/p)` is finite
-if `p < ∞`, or `ess_sup f < ∞` if `p = ∞`. -/
-def Memℒp {α} {m : MeasurableSpace α} (f : α → E) (p : ℝ≥0∞)
- (μ : Measure α := by exact MeasureTheory.MeasureSpace.volume) : Prop :=
- AEStronglyMeasurable f μ ∧ snorm f p μ < ∞
-#align measure_theory.mem_ℒp MeasureTheory.Memℒp
-
-theorem Memℒp.aEStronglyMeasurable {f : α → E} {p : ℝ≥0∞} (h : Memℒp f p μ) :
- AEStronglyMeasurable f μ :=
- h.1
-#align measure_theory.mem_ℒp.ae_strongly_measurable MeasureTheory.Memℒp.aEStronglyMeasurable
-
-theorem lintegral_rpow_nnnorm_eq_rpow_snorm' {f : α → F} (hq0_lt : 0 < q) :
- (∫⁻ a, ‖f a‖₊ ^ q ∂μ) = snorm' f q μ ^ q :=
- by
- rw [snorm', ← ENNReal.rpow_mul, one_div, inv_mul_cancel, ENNReal.rpow_one]
- exact (ne_of_lt hq0_lt).symm
-#align measure_theory.lintegral_rpow_nnnorm_eq_rpow_snorm' MeasureTheory.lintegral_rpow_nnnorm_eq_rpow_snorm'
-
-end ℒpSpaceDefinition
-
-section Top
-
-theorem Memℒp.snorm_lt_top {f : α → E} (hfp : Memℒp f p μ) : snorm f p μ < ∞ :=
- hfp.2
-#align measure_theory.mem_ℒp.snorm_lt_top MeasureTheory.Memℒp.snorm_lt_top
-
-theorem Memℒp.snorm_ne_top {f : α → E} (hfp : Memℒp f p μ) : snorm f p μ ≠ ∞ :=
- ne_of_lt hfp.2
-#align measure_theory.mem_ℒp.snorm_ne_top MeasureTheory.Memℒp.snorm_ne_top
-
-theorem lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top {f : α → F} (hq0_lt : 0 < q)
- (hfq : snorm' f q μ < ∞) : (∫⁻ a, ‖f a‖₊ ^ q ∂μ) < ∞ :=
- by
- rw [lintegral_rpow_nnnorm_eq_rpow_snorm' hq0_lt]
- exact ENNReal.rpow_lt_top_of_nonneg (le_of_lt hq0_lt) (ne_of_lt hfq)
-#align measure_theory.lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top MeasureTheory.lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top
-
-theorem lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top {f : α → F} (hp_ne_zero : p ≠ 0)
- (hp_ne_top : p ≠ ∞) (hfp : snorm f p μ < ∞) : (∫⁻ a, ‖f a‖₊ ^ p.toReal ∂μ) < ∞ :=
- by
- apply lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top
- · exact ENNReal.toReal_pos hp_ne_zero hp_ne_top
- · simpa [snorm_eq_snorm' hp_ne_zero hp_ne_top] using hfp
-#align measure_theory.lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top MeasureTheory.lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top
-
-theorem snorm_lt_top_iff_lintegral_rpow_nnnorm_lt_top {f : α → F} (hp_ne_zero : p ≠ 0)
- (hp_ne_top : p ≠ ∞) : snorm f p μ < ∞ ↔ (∫⁻ a, ‖f a‖₊ ^ p.toReal ∂μ) < ∞ :=
- ⟨lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top hp_ne_zero hp_ne_top,
- by
- intro h
- have hp' := ENNReal.toReal_pos hp_ne_zero hp_ne_top
- have : 0 < 1 / p.to_real := div_pos zero_lt_one hp'
- simpa [snorm_eq_lintegral_rpow_nnnorm hp_ne_zero hp_ne_top] using
- ENNReal.rpow_lt_top_of_nonneg (le_of_lt this) (ne_of_lt h)⟩
-#align measure_theory.snorm_lt_top_iff_lintegral_rpow_nnnorm_lt_top MeasureTheory.snorm_lt_top_iff_lintegral_rpow_nnnorm_lt_top
-
-end Top
-
-section Zero
-
-@[simp]
-theorem snorm'_exponent_zero {f : α → F} : snorm' f 0 μ = 1 := by
- rw [snorm', div_zero, ENNReal.rpow_zero]
-#align measure_theory.snorm'_exponent_zero MeasureTheory.snorm'_exponent_zero
-
-@[simp]
-theorem snorm_exponent_zero {f : α → F} : snorm f 0 μ = 0 := by simp [snorm]
-#align measure_theory.snorm_exponent_zero MeasureTheory.snorm_exponent_zero
-
-theorem memℒp_zero_iff_aEStronglyMeasurable {f : α → E} : Memℒp f 0 μ ↔ AEStronglyMeasurable f μ :=
- by simp [mem_ℒp, snorm_exponent_zero]
-#align measure_theory.mem_ℒp_zero_iff_ae_strongly_measurable MeasureTheory.memℒp_zero_iff_aEStronglyMeasurable
-
-@[simp]
-theorem snorm'_zero (hp0_lt : 0 < q) : snorm' (0 : α → F) q μ = 0 := by simp [snorm', hp0_lt]
-#align measure_theory.snorm'_zero MeasureTheory.snorm'_zero
-
-@[simp]
-theorem snorm'_zero' (hq0_ne : q ≠ 0) (hμ : μ ≠ 0) : snorm' (0 : α → F) q μ = 0 :=
- by
- cases' le_or_lt 0 q with hq0 hq_neg
- · exact snorm'_zero (lt_of_le_of_ne hq0 hq0_ne.symm)
- · simp [snorm', ENNReal.rpow_eq_zero_iff, hμ, hq_neg]
-#align measure_theory.snorm'_zero' MeasureTheory.snorm'_zero'
-
-@[simp]
-theorem snormEssSup_zero : snormEssSup (0 : α → F) μ = 0 :=
- by
- simp_rw [snorm_ess_sup, Pi.zero_apply, nnnorm_zero, ENNReal.coe_zero, ← ENNReal.bot_eq_zero]
- exact essSup_const_bot
-#align measure_theory.snorm_ess_sup_zero MeasureTheory.snormEssSup_zero
-
-@[simp]
-theorem snorm_zero : snorm (0 : α → F) p μ = 0 :=
- by
- by_cases h0 : p = 0
- · simp [h0]
- by_cases h_top : p = ∞
- · simp only [h_top, snorm_exponent_top, snorm_ess_sup_zero]
- rw [← Ne.def] at h0
- simp [snorm_eq_snorm' h0 h_top, ENNReal.toReal_pos h0 h_top]
-#align measure_theory.snorm_zero MeasureTheory.snorm_zero
-
-@[simp]
-theorem snorm_zero' : snorm (fun x : α => (0 : F)) p μ = 0 := by convert snorm_zero
-#align measure_theory.snorm_zero' MeasureTheory.snorm_zero'
-
-theorem zero_memℒp : Memℒp (0 : α → E) p μ :=
- ⟨aestronglyMeasurable_zero, by
- rw [snorm_zero]
- exact ENNReal.coe_lt_top⟩
-#align measure_theory.zero_mem_ℒp MeasureTheory.zero_memℒp
-
-theorem zero_mem_ℒp' : Memℒp (fun x : α => (0 : E)) p μ := by convert zero_mem_ℒp
-#align measure_theory.zero_mem_ℒp' MeasureTheory.zero_mem_ℒp'
-
-variable [MeasurableSpace α]
-
-theorem snorm'_measure_zero_of_pos {f : α → F} (hq_pos : 0 < q) : snorm' f q (0 : Measure α) = 0 :=
- by simp [snorm', hq_pos]
-#align measure_theory.snorm'_measure_zero_of_pos MeasureTheory.snorm'_measure_zero_of_pos
-
-theorem snorm'_measure_zero_of_exponent_zero {f : α → F} : snorm' f 0 (0 : Measure α) = 1 := by
- simp [snorm']
-#align measure_theory.snorm'_measure_zero_of_exponent_zero MeasureTheory.snorm'_measure_zero_of_exponent_zero
-
-theorem snorm'_measure_zero_of_neg {f : α → F} (hq_neg : q < 0) : snorm' f q (0 : Measure α) = ∞ :=
- by simp [snorm', hq_neg]
-#align measure_theory.snorm'_measure_zero_of_neg MeasureTheory.snorm'_measure_zero_of_neg
-
-@[simp]
-theorem snormEssSup_measure_zero {f : α → F} : snormEssSup f (0 : Measure α) = 0 := by
- simp [snorm_ess_sup]
-#align measure_theory.snorm_ess_sup_measure_zero MeasureTheory.snormEssSup_measure_zero
-
-@[simp]
-theorem snorm_measure_zero {f : α → F} : snorm f p (0 : Measure α) = 0 :=
- by
- by_cases h0 : p = 0
- · simp [h0]
- by_cases h_top : p = ∞
- · simp [h_top]
- rw [← Ne.def] at h0
- simp [snorm_eq_snorm' h0 h_top, snorm', ENNReal.toReal_pos h0 h_top]
-#align measure_theory.snorm_measure_zero MeasureTheory.snorm_measure_zero
-
-end Zero
-
-section Const
-
-theorem snorm'_const (c : F) (hq_pos : 0 < q) :
- snorm' (fun x : α => c) q μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / q) :=
- by
- rw [snorm', lintegral_const, ENNReal.mul_rpow_of_nonneg _ _ (by simp [hq_pos.le] : 0 ≤ 1 / q)]
- congr
- rw [← ENNReal.rpow_mul]
- suffices hq_cancel : q * (1 / q) = 1; · rw [hq_cancel, ENNReal.rpow_one]
- rw [one_div, mul_inv_cancel (ne_of_lt hq_pos).symm]
-#align measure_theory.snorm'_const MeasureTheory.snorm'_const
-
-theorem snorm'_const' [FiniteMeasure μ] (c : F) (hc_ne_zero : c ≠ 0) (hq_ne_zero : q ≠ 0) :
- snorm' (fun x : α => c) q μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / q) :=
- by
- rw [snorm', lintegral_const, ENNReal.mul_rpow_of_ne_top _ (measure_ne_top μ Set.univ)]
- · congr
- rw [← ENNReal.rpow_mul]
- suffices hp_cancel : q * (1 / q) = 1
- · rw [hp_cancel, ENNReal.rpow_one]
- rw [one_div, mul_inv_cancel hq_ne_zero]
- · rw [Ne.def, ENNReal.rpow_eq_top_iff, not_or, not_and_or, not_and_or]
- constructor
- · left
- rwa [ENNReal.coe_eq_zero, nnnorm_eq_zero]
- · exact Or.inl ENNReal.coe_ne_top
-#align measure_theory.snorm'_const' MeasureTheory.snorm'_const'
-
-theorem snormEssSup_const (c : F) (hμ : μ ≠ 0) : snormEssSup (fun x : α => c) μ = (‖c‖₊ : ℝ≥0∞) :=
- by rw [snorm_ess_sup, essSup_const _ hμ]
-#align measure_theory.snorm_ess_sup_const MeasureTheory.snormEssSup_const
-
-theorem snorm'_const_of_probabilityMeasure (c : F) (hq_pos : 0 < q) [ProbabilityMeasure μ] :
- snorm' (fun x : α => c) q μ = (‖c‖₊ : ℝ≥0∞) := by simp [snorm'_const c hq_pos, measure_univ]
-#align measure_theory.snorm'_const_of_is_probability_measure MeasureTheory.snorm'_const_of_probabilityMeasure
-
-theorem snorm_const (c : F) (h0 : p ≠ 0) (hμ : μ ≠ 0) :
- snorm (fun x : α => c) p μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / ENNReal.toReal p) :=
- by
- by_cases h_top : p = ∞
- · simp [h_top, snorm_ess_sup_const c hμ]
- simp [snorm_eq_snorm' h0 h_top, snorm'_const, ENNReal.toReal_pos h0 h_top]
-#align measure_theory.snorm_const MeasureTheory.snorm_const
-
-theorem snorm_const' (c : F) (h0 : p ≠ 0) (h_top : p ≠ ∞) :
- snorm (fun x : α => c) p μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / ENNReal.toReal p) := by
- simp [snorm_eq_snorm' h0 h_top, snorm'_const, ENNReal.toReal_pos h0 h_top]
-#align measure_theory.snorm_const' MeasureTheory.snorm_const'
-
-theorem snorm_const_lt_top_iff {p : ℝ≥0∞} {c : F} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) :
- snorm (fun x : α => c) p μ < ∞ ↔ c = 0 ∨ μ Set.univ < ∞ :=
- by
- have hp : 0 < p.to_real := ENNReal.toReal_pos hp_ne_zero hp_ne_top
- by_cases hμ : μ = 0
- ·
- simp only [hμ, measure.coe_zero, Pi.zero_apply, or_true_iff, WithTop.zero_lt_top,
- snorm_measure_zero]
- by_cases hc : c = 0
- · simp only [hc, true_or_iff, eq_self_iff_true, WithTop.zero_lt_top, snorm_zero']
- rw [snorm_const' c hp_ne_zero hp_ne_top]
- by_cases hμ_top : μ Set.univ = ∞
- · simp [hc, hμ_top, hp]
- rw [ENNReal.mul_lt_top_iff]
- simp only [true_and_iff, one_div, ENNReal.rpow_eq_zero_iff, hμ, false_or_iff, or_false_iff,
- ENNReal.coe_lt_top, nnnorm_eq_zero, ENNReal.coe_eq_zero,
- MeasureTheory.Measure.measure_univ_eq_zero, hp, inv_lt_zero, hc, and_false_iff, false_and_iff,
- _root_.inv_pos, or_self_iff, hμ_top, Ne.lt_top hμ_top, iff_true_iff]
- exact ENNReal.rpow_lt_top_of_nonneg (inv_nonneg.mpr hp.le) hμ_top
-#align measure_theory.snorm_const_lt_top_iff MeasureTheory.snorm_const_lt_top_iff
-
-theorem memℒp_const (c : E) [FiniteMeasure μ] : Memℒp (fun a : α => c) p μ :=
- by
- refine' ⟨ae_strongly_measurable_const, _⟩
- by_cases h0 : p = 0
- · simp [h0]
- by_cases hμ : μ = 0
- · simp [hμ]
- rw [snorm_const c h0 hμ]
- refine' ENNReal.mul_lt_top ENNReal.coe_ne_top _
- refine' (ENNReal.rpow_lt_top_of_nonneg _ (measure_ne_top μ Set.univ)).Ne
- simp
-#align measure_theory.mem_ℒp_const MeasureTheory.memℒp_const
-
-theorem memℒp_top_const (c : E) : Memℒp (fun a : α => c) ∞ μ :=
- by
- refine' ⟨ae_strongly_measurable_const, _⟩
- by_cases h : μ = 0
- · simp only [h, snorm_measure_zero, WithTop.zero_lt_top]
- · rw [snorm_const _ ENNReal.top_ne_zero h]
- simp only [ENNReal.top_toReal, div_zero, ENNReal.rpow_zero, mul_one, ENNReal.coe_lt_top]
-#align measure_theory.mem_ℒp_top_const MeasureTheory.memℒp_top_const
-
-theorem memℒp_const_iff {p : ℝ≥0∞} {c : E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) :
- Memℒp (fun x : α => c) p μ ↔ c = 0 ∨ μ Set.univ < ∞ :=
- by
- rw [← snorm_const_lt_top_iff hp_ne_zero hp_ne_top]
- exact ⟨fun h => h.2, fun h => ⟨ae_strongly_measurable_const, h⟩⟩
-#align measure_theory.mem_ℒp_const_iff MeasureTheory.memℒp_const_iff
-
-end Const
-
-theorem snorm'_mono_nnnorm_ae {f : α → F} {g : α → G} (hq : 0 ≤ q) (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ ‖g x‖₊) :
- snorm' f q μ ≤ snorm' g q μ := by
- rw [snorm']
- refine' ENNReal.rpow_le_rpow _ (one_div_nonneg.2 hq)
- refine' lintegral_mono_ae (h.mono fun x hx => _)
- exact ENNReal.rpow_le_rpow (ENNReal.coe_le_coe.2 hx) hq
-#align measure_theory.snorm'_mono_nnnorm_ae MeasureTheory.snorm'_mono_nnnorm_ae
-
-theorem snorm'_mono_ae {f : α → F} {g : α → G} (hq : 0 ≤ q) (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
- snorm' f q μ ≤ snorm' g q μ :=
- snorm'_mono_nnnorm_ae hq h
-#align measure_theory.snorm'_mono_ae MeasureTheory.snorm'_mono_ae
-
-theorem snorm'_congr_nnnorm_ae {f g : α → F} (hfg : ∀ᵐ x ∂μ, ‖f x‖₊ = ‖g x‖₊) :
- snorm' f q μ = snorm' g q μ :=
- by
- have : (fun x => (‖f x‖₊ ^ q : ℝ≥0∞)) =ᵐ[μ] fun x => ‖g x‖₊ ^ q :=
- hfg.mono fun x hx => by simp_rw [hx]
- simp only [snorm', lintegral_congr_ae this]
-#align measure_theory.snorm'_congr_nnnorm_ae MeasureTheory.snorm'_congr_nnnorm_ae
-
-theorem snorm'_congr_norm_ae {f g : α → F} (hfg : ∀ᵐ x ∂μ, ‖f x‖ = ‖g x‖) :
- snorm' f q μ = snorm' g q μ :=
- snorm'_congr_nnnorm_ae <| hfg.mono fun x hx => NNReal.eq hx
-#align measure_theory.snorm'_congr_norm_ae MeasureTheory.snorm'_congr_norm_ae
-
-theorem snorm'_congr_ae {f g : α → F} (hfg : f =ᵐ[μ] g) : snorm' f q μ = snorm' g q μ :=
- snorm'_congr_nnnorm_ae (hfg.fun_comp _)
-#align measure_theory.snorm'_congr_ae MeasureTheory.snorm'_congr_ae
-
-theorem snormEssSup_congr_ae {f g : α → F} (hfg : f =ᵐ[μ] g) : snormEssSup f μ = snormEssSup g μ :=
- essSup_congr_ae (hfg.fun_comp (coe ∘ nnnorm))
-#align measure_theory.snorm_ess_sup_congr_ae MeasureTheory.snormEssSup_congr_ae
-
-theorem snorm_mono_nnnorm_ae {f : α → F} {g : α → G} (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ ‖g x‖₊) :
- snorm f p μ ≤ snorm g p μ := by
- simp only [snorm]
- split_ifs
- · exact le_rfl
- · exact essSup_mono_ae (h.mono fun x hx => ennreal.coe_le_coe.mpr hx)
- · exact snorm'_mono_nnnorm_ae ENNReal.toReal_nonneg h
-#align measure_theory.snorm_mono_nnnorm_ae MeasureTheory.snorm_mono_nnnorm_ae
-
-theorem snorm_mono_ae {f : α → F} {g : α → G} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
- snorm f p μ ≤ snorm g p μ :=
- snorm_mono_nnnorm_ae h
-#align measure_theory.snorm_mono_ae MeasureTheory.snorm_mono_ae
-
-theorem snorm_mono_ae_real {f : α → F} {g : α → ℝ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ g x) :
- snorm f p μ ≤ snorm g p μ :=
- snorm_mono_ae <| h.mono fun x hx => hx.trans ((le_abs_self _).trans (Real.norm_eq_abs _).symm.le)
-#align measure_theory.snorm_mono_ae_real MeasureTheory.snorm_mono_ae_real
-
-theorem snorm_mono_nnnorm {f : α → F} {g : α → G} (h : ∀ x, ‖f x‖₊ ≤ ‖g x‖₊) :
- snorm f p μ ≤ snorm g p μ :=
- snorm_mono_nnnorm_ae (eventually_of_forall fun x => h x)
-#align measure_theory.snorm_mono_nnnorm MeasureTheory.snorm_mono_nnnorm
-
-theorem snorm_mono {f : α → F} {g : α → G} (h : ∀ x, ‖f x‖ ≤ ‖g x‖) : snorm f p μ ≤ snorm g p μ :=
- snorm_mono_nnnorm h
-#align measure_theory.snorm_mono MeasureTheory.snorm_mono
-
-theorem snorm_mono_real {f : α → F} {g : α → ℝ} (h : ∀ x, ‖f x‖ ≤ g x) :
- snorm f p μ ≤ snorm g p μ :=
- snorm_mono_ae_real (eventually_of_forall fun x => h x)
-#align measure_theory.snorm_mono_real MeasureTheory.snorm_mono_real
-
-theorem snormEssSup_le_of_ae_nnnorm_bound {f : α → F} {C : ℝ≥0} (hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) :
- snormEssSup f μ ≤ C :=
- essSup_le_of_ae_le C <| hfC.mono fun x hx => ENNReal.coe_le_coe.mpr hx
-#align measure_theory.snorm_ess_sup_le_of_ae_nnnorm_bound MeasureTheory.snormEssSup_le_of_ae_nnnorm_bound
-
-theorem snormEssSup_le_of_ae_bound {f : α → F} {C : ℝ} (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
- snormEssSup f μ ≤ ENNReal.ofReal C :=
- snormEssSup_le_of_ae_nnnorm_bound <| hfC.mono fun x hx => hx.trans C.le_coe_toNNReal
-#align measure_theory.snorm_ess_sup_le_of_ae_bound MeasureTheory.snormEssSup_le_of_ae_bound
-
-theorem snormEssSup_lt_top_of_ae_nnnorm_bound {f : α → F} {C : ℝ≥0} (hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) :
- snormEssSup f μ < ∞ :=
- (snormEssSup_le_of_ae_nnnorm_bound hfC).trans_lt ENNReal.coe_lt_top
-#align measure_theory.snorm_ess_sup_lt_top_of_ae_nnnorm_bound MeasureTheory.snormEssSup_lt_top_of_ae_nnnorm_bound
-
-theorem snormEssSup_lt_top_of_ae_bound {f : α → F} {C : ℝ} (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
- snormEssSup f μ < ∞ :=
- (snormEssSup_le_of_ae_bound hfC).trans_lt ENNReal.ofReal_lt_top
-#align measure_theory.snorm_ess_sup_lt_top_of_ae_bound MeasureTheory.snormEssSup_lt_top_of_ae_bound
-
-theorem snorm_le_of_ae_nnnorm_bound {f : α → F} {C : ℝ≥0} (hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) :
- snorm f p μ ≤ C • μ Set.univ ^ p.toReal⁻¹ :=
- by
- by_cases hμ : μ = 0
- · simp [hμ]
- haveI : μ.ae.ne_bot := ae_ne_bot.mpr hμ
- by_cases hp : p = 0
- · simp [hp]
- have : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ ‖(C : ℝ)‖₊ := hfC.mono fun x hx => hx.trans_eq C.nnnorm_eq.symm
- refine' (snorm_mono_ae this).trans_eq _
- rw [snorm_const _ hp hμ, C.nnnorm_eq, one_div, ENNReal.smul_def, smul_eq_mul]
-#align measure_theory.snorm_le_of_ae_nnnorm_bound MeasureTheory.snorm_le_of_ae_nnnorm_bound
-
-theorem snorm_le_of_ae_bound {f : α → F} {C : ℝ} (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
- snorm f p μ ≤ μ Set.univ ^ p.toReal⁻¹ * ENNReal.ofReal C :=
- by
- rw [← mul_comm]
- exact snorm_le_of_ae_nnnorm_bound (hfC.mono fun x hx => hx.trans C.le_coe_to_nnreal)
-#align measure_theory.snorm_le_of_ae_bound MeasureTheory.snorm_le_of_ae_bound
-
-theorem snorm_congr_nnnorm_ae {f : α → F} {g : α → G} (hfg : ∀ᵐ x ∂μ, ‖f x‖₊ = ‖g x‖₊) :
- snorm f p μ = snorm g p μ :=
- le_antisymm (snorm_mono_nnnorm_ae <| EventuallyEq.le hfg)
- (snorm_mono_nnnorm_ae <| (EventuallyEq.symm hfg).le)
-#align measure_theory.snorm_congr_nnnorm_ae MeasureTheory.snorm_congr_nnnorm_ae
-
-theorem snorm_congr_norm_ae {f : α → F} {g : α → G} (hfg : ∀ᵐ x ∂μ, ‖f x‖ = ‖g x‖) :
- snorm f p μ = snorm g p μ :=
- snorm_congr_nnnorm_ae <| hfg.mono fun x hx => NNReal.eq hx
-#align measure_theory.snorm_congr_norm_ae MeasureTheory.snorm_congr_norm_ae
-
-@[simp]
-theorem snorm'_norm {f : α → F} : snorm' (fun a => ‖f a‖) q μ = snorm' f q μ := by simp [snorm']
-#align measure_theory.snorm'_norm MeasureTheory.snorm'_norm
-
-@[simp]
-theorem snorm_norm (f : α → F) : snorm (fun x => ‖f x‖) p μ = snorm f p μ :=
- snorm_congr_norm_ae <| eventually_of_forall fun x => norm_norm _
-#align measure_theory.snorm_norm MeasureTheory.snorm_norm
-
-theorem snorm'_norm_rpow (f : α → F) (p q : ℝ) (hq_pos : 0 < q) :
- snorm' (fun x => ‖f x‖ ^ q) p μ = snorm' f (p * q) μ ^ q :=
- by
- simp_rw [snorm']
- rw [← ENNReal.rpow_mul, ← one_div_mul_one_div]
- simp_rw [one_div]
- rw [mul_assoc, inv_mul_cancel hq_pos.ne.symm, mul_one]
- congr
- ext1 x
- simp_rw [← ofReal_norm_eq_coe_nnnorm]
- rw [Real.norm_eq_abs, abs_eq_self.mpr (Real.rpow_nonneg_of_nonneg (norm_nonneg _) _), mul_comm, ←
- ENNReal.ofReal_rpow_of_nonneg (norm_nonneg _) hq_pos.le, ENNReal.rpow_mul]
-#align measure_theory.snorm'_norm_rpow MeasureTheory.snorm'_norm_rpow
-
-theorem snorm_norm_rpow (f : α → F) (hq_pos : 0 < q) :
- snorm (fun x => ‖f x‖ ^ q) p μ = snorm f (p * ENNReal.ofReal q) μ ^ q :=
- by
- by_cases h0 : p = 0
- · simp [h0, ENNReal.zero_rpow_of_pos hq_pos]
- by_cases hp_top : p = ∞
- · simp only [hp_top, snorm_exponent_top, ENNReal.top_mul', hq_pos.not_le, ENNReal.ofReal_eq_zero,
- if_false, snorm_exponent_top, snorm_ess_sup]
- have h_rpow :
- essSup (fun x : α => (‖‖f x‖ ^ q‖₊ : ℝ≥0∞)) μ = essSup (fun x : α => ↑‖f x‖₊ ^ q) μ :=
- by
- congr
- ext1 x
- nth_rw 2 [← nnnorm_norm]
- rw [ENNReal.coe_rpow_of_nonneg _ hq_pos.le, ENNReal.coe_eq_coe]
- ext
- push_cast
- rw [Real.norm_rpow_of_nonneg (norm_nonneg _)]
- rw [h_rpow]
- have h_rpow_mono := ENNReal.strictMono_rpow_of_pos hq_pos
- have h_rpow_surj := (ENNReal.rpow_left_bijective hq_pos.ne.symm).2
- let iso := h_rpow_mono.order_iso_of_surjective _ h_rpow_surj
- exact (iso.ess_sup_apply (fun x => (‖f x‖₊ : ℝ≥0∞)) μ).symm
- rw [snorm_eq_snorm' h0 hp_top, snorm_eq_snorm' _ _]
- swap;
- · refine' mul_ne_zero h0 _
- rwa [Ne.def, ENNReal.ofReal_eq_zero, not_le]
- swap; · exact ENNReal.mul_ne_top hp_top ENNReal.ofReal_ne_top
- rw [ENNReal.toReal_mul, ENNReal.toReal_ofReal hq_pos.le]
- exact snorm'_norm_rpow f p.to_real q hq_pos
-#align measure_theory.snorm_norm_rpow MeasureTheory.snorm_norm_rpow
-
-theorem snorm_congr_ae {f g : α → F} (hfg : f =ᵐ[μ] g) : snorm f p μ = snorm g p μ :=
- snorm_congr_norm_ae <| hfg.mono fun x hx => hx ▸ rfl
-#align measure_theory.snorm_congr_ae MeasureTheory.snorm_congr_ae
-
-theorem memℒp_congr_ae {f g : α → E} (hfg : f =ᵐ[μ] g) : Memℒp f p μ ↔ Memℒp g p μ := by
- simp only [mem_ℒp, snorm_congr_ae hfg, aestronglyMeasurable_congr hfg]
-#align measure_theory.mem_ℒp_congr_ae MeasureTheory.memℒp_congr_ae
-
-theorem Memℒp.ae_eq {f g : α → E} (hfg : f =ᵐ[μ] g) (hf_Lp : Memℒp f p μ) : Memℒp g p μ :=
- (memℒp_congr_ae hfg).1 hf_Lp
-#align measure_theory.mem_ℒp.ae_eq MeasureTheory.Memℒp.ae_eq
-
-theorem Memℒp.of_le {f : α → E} {g : α → F} (hg : Memℒp g p μ) (hf : AEStronglyMeasurable f μ)
- (hfg : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) : Memℒp f p μ :=
- ⟨hf, (snorm_mono_ae hfg).trans_lt hg.snorm_lt_top⟩
-#align measure_theory.mem_ℒp.of_le MeasureTheory.Memℒp.of_le
-
-alias mem_ℒp.of_le ← mem_ℒp.mono
-#align measure_theory.mem_ℒp.mono MeasureTheory.Memℒp.mono
-
-theorem Memℒp.mono' {f : α → E} {g : α → ℝ} (hg : Memℒp g p μ) (hf : AEStronglyMeasurable f μ)
- (h : ∀ᵐ a ∂μ, ‖f a‖ ≤ g a) : Memℒp f p μ :=
- hg.mono hf <| h.mono fun x hx => le_trans hx (le_abs_self _)
-#align measure_theory.mem_ℒp.mono' MeasureTheory.Memℒp.mono'
-
-theorem Memℒp.congr_norm {f : α → E} {g : α → F} (hf : Memℒp f p μ) (hg : AEStronglyMeasurable g μ)
- (h : ∀ᵐ a ∂μ, ‖f a‖ = ‖g a‖) : Memℒp g p μ :=
- hf.mono hg <| EventuallyEq.le <| EventuallyEq.symm h
-#align measure_theory.mem_ℒp.congr_norm MeasureTheory.Memℒp.congr_norm
-
-theorem memℒp_congr_norm {f : α → E} {g : α → F} (hf : AEStronglyMeasurable f μ)
- (hg : AEStronglyMeasurable g μ) (h : ∀ᵐ a ∂μ, ‖f a‖ = ‖g a‖) : Memℒp f p μ ↔ Memℒp g p μ :=
- ⟨fun h2f => h2f.congr_norm hg h, fun h2g => h2g.congr_norm hf <| EventuallyEq.symm h⟩
-#align measure_theory.mem_ℒp_congr_norm MeasureTheory.memℒp_congr_norm
-
-theorem memℒp_top_of_bound {f : α → E} (hf : AEStronglyMeasurable f μ) (C : ℝ)
- (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : Memℒp f ∞ μ :=
- ⟨hf, by
- rw [snorm_exponent_top]
- exact snorm_ess_sup_lt_top_of_ae_bound hfC⟩
-#align measure_theory.mem_ℒp_top_of_bound MeasureTheory.memℒp_top_of_bound
-
-theorem Memℒp.of_bound [FiniteMeasure μ] {f : α → E} (hf : AEStronglyMeasurable f μ) (C : ℝ)
- (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : Memℒp f p μ :=
- (memℒp_const C).of_le hf (hfC.mono fun x hx => le_trans hx (le_abs_self _))
-#align measure_theory.mem_ℒp.of_bound MeasureTheory.Memℒp.of_bound
-
-@[mono]
-theorem snorm'_mono_measure (f : α → F) (hμν : ν ≤ μ) (hq : 0 ≤ q) : snorm' f q ν ≤ snorm' f q μ :=
- by
- simp_rw [snorm']
- suffices h_integral_mono : (∫⁻ a, (‖f a‖₊ : ℝ≥0∞) ^ q ∂ν) ≤ ∫⁻ a, ‖f a‖₊ ^ q ∂μ
- exact ENNReal.rpow_le_rpow h_integral_mono (by simp [hq])
- exact lintegral_mono' hμν le_rfl
-#align measure_theory.snorm'_mono_measure MeasureTheory.snorm'_mono_measure
-
-@[mono]
-theorem snormEssSup_mono_measure (f : α → F) (hμν : ν ≪ μ) : snormEssSup f ν ≤ snormEssSup f μ :=
- by
- simp_rw [snorm_ess_sup]
- exact essSup_mono_measure hμν
-#align measure_theory.snorm_ess_sup_mono_measure MeasureTheory.snormEssSup_mono_measure
-
-@[mono]
-theorem snorm_mono_measure (f : α → F) (hμν : ν ≤ μ) : snorm f p ν ≤ snorm f p μ :=
- by
- by_cases hp0 : p = 0
- · simp [hp0]
- by_cases hp_top : p = ∞
- · simp [hp_top, snorm_ess_sup_mono_measure f (measure.absolutely_continuous_of_le hμν)]
- simp_rw [snorm_eq_snorm' hp0 hp_top]
- exact snorm'_mono_measure f hμν ENNReal.toReal_nonneg
-#align measure_theory.snorm_mono_measure MeasureTheory.snorm_mono_measure
-
-theorem Memℒp.mono_measure {f : α → E} (hμν : ν ≤ μ) (hf : Memℒp f p μ) : Memℒp f p ν :=
- ⟨hf.1.mono_measure hμν, (snorm_mono_measure f hμν).trans_lt hf.2⟩
-#align measure_theory.mem_ℒp.mono_measure MeasureTheory.Memℒp.mono_measure
-
-theorem Memℒp.restrict (s : Set α) {f : α → E} (hf : Memℒp f p μ) : Memℒp f p (μ.restrict s) :=
- hf.mono_measure Measure.restrict_le_self
-#align measure_theory.mem_ℒp.restrict MeasureTheory.Memℒp.restrict
-
-theorem snorm'_smul_measure {p : ℝ} (hp : 0 ≤ p) {f : α → F} (c : ℝ≥0∞) :
- snorm' f p (c • μ) = c ^ (1 / p) * snorm' f p μ :=
- by
- rw [snorm', lintegral_smul_measure, ENNReal.mul_rpow_of_nonneg, snorm']
- simp [hp]
-#align measure_theory.snorm'_smul_measure MeasureTheory.snorm'_smul_measure
-
-theorem snormEssSup_smul_measure {f : α → F} {c : ℝ≥0∞} (hc : c ≠ 0) :
- snormEssSup f (c • μ) = snormEssSup f μ :=
- by
- simp_rw [snorm_ess_sup]
- exact essSup_smul_measure hc
-#align measure_theory.snorm_ess_sup_smul_measure MeasureTheory.snormEssSup_smul_measure
-
-/-- Use `snorm_smul_measure_of_ne_top` instead. -/
-private theorem snorm_smul_measure_of_ne_zero_of_ne_top {p : ℝ≥0∞} (hp_ne_zero : p ≠ 0)
- (hp_ne_top : p ≠ ∞) {f : α → F} (c : ℝ≥0∞) :
- snorm f p (c • μ) = c ^ (1 / p).toReal • snorm f p μ :=
- by
- simp_rw [snorm_eq_snorm' hp_ne_zero hp_ne_top]
- rw [snorm'_smul_measure ENNReal.toReal_nonneg]
- congr
- simp_rw [one_div]
- rw [ENNReal.toReal_inv]
-#align measure_theory.snorm_smul_measure_of_ne_zero_of_ne_top measure_theory.snorm_smul_measure_of_ne_zero_of_ne_top
-
-theorem snorm_smul_measure_of_ne_zero {p : ℝ≥0∞} {f : α → F} {c : ℝ≥0∞} (hc : c ≠ 0) :
- snorm f p (c • μ) = c ^ (1 / p).toReal • snorm f p μ :=
- by
- by_cases hp0 : p = 0
- · simp [hp0]
- by_cases hp_top : p = ∞
- · simp [hp_top, snorm_ess_sup_smul_measure hc]
- exact snorm_smul_measure_of_ne_zero_of_ne_top hp0 hp_top c
-#align measure_theory.snorm_smul_measure_of_ne_zero MeasureTheory.snorm_smul_measure_of_ne_zero
-
-theorem snorm_smul_measure_of_ne_top {p : ℝ≥0∞} (hp_ne_top : p ≠ ∞) {f : α → F} (c : ℝ≥0∞) :
- snorm f p (c • μ) = c ^ (1 / p).toReal • snorm f p μ :=
- by
- by_cases hp0 : p = 0
- · simp [hp0]
- · exact snorm_smul_measure_of_ne_zero_of_ne_top hp0 hp_ne_top c
-#align measure_theory.snorm_smul_measure_of_ne_top MeasureTheory.snorm_smul_measure_of_ne_top
-
-theorem snorm_one_smul_measure {f : α → F} (c : ℝ≥0∞) : snorm f 1 (c • μ) = c * snorm f 1 μ :=
- by
- rw [@snorm_smul_measure_of_ne_top _ _ _ μ _ 1 (@ENNReal.coe_ne_top 1) f c]
- simp
-#align measure_theory.snorm_one_smul_measure MeasureTheory.snorm_one_smul_measure
-
-theorem Memℒp.of_measure_le_smul {μ' : Measure α} (c : ℝ≥0∞) (hc : c ≠ ∞) (hμ'_le : μ' ≤ c • μ)
- {f : α → E} (hf : Memℒp f p μ) : Memℒp f p μ' :=
- by
- refine' ⟨hf.1.mono' (measure.absolutely_continuous_of_le_smul hμ'_le), _⟩
- refine' (snorm_mono_measure f hμ'_le).trans_lt _
- by_cases hc0 : c = 0
- · simp [hc0]
- rw [snorm_smul_measure_of_ne_zero hc0, smul_eq_mul]
- refine' ENNReal.mul_lt_top _ hf.2.Ne
- simp [hc, hc0]
-#align measure_theory.mem_ℒp.of_measure_le_smul MeasureTheory.Memℒp.of_measure_le_smul
-
-theorem Memℒp.smul_measure {f : α → E} {c : ℝ≥0∞} (hf : Memℒp f p μ) (hc : c ≠ ∞) :
- Memℒp f p (c • μ) :=
- hf.of_measure_le_smul c hc le_rfl
-#align measure_theory.mem_ℒp.smul_measure MeasureTheory.Memℒp.smul_measure
-
-include m
-
-theorem snorm_one_add_measure (f : α → F) (μ ν : Measure α) :
- snorm f 1 (μ + ν) = snorm f 1 μ + snorm f 1 ν :=
- by
- simp_rw [snorm_one_eq_lintegral_nnnorm]
- rw [lintegral_add_measure _ μ ν]
-#align measure_theory.snorm_one_add_measure MeasureTheory.snorm_one_add_measure
-
-theorem snorm_le_add_measure_right (f : α → F) (μ ν : Measure α) {p : ℝ≥0∞} :
- snorm f p μ ≤ snorm f p (μ + ν) :=
- snorm_mono_measure f <| Measure.le_add_right <| le_refl _
-#align measure_theory.snorm_le_add_measure_right MeasureTheory.snorm_le_add_measure_right
-
-theorem snorm_le_add_measure_left (f : α → F) (μ ν : Measure α) {p : ℝ≥0∞} :
- snorm f p ν ≤ snorm f p (μ + ν) :=
- snorm_mono_measure f <| Measure.le_add_left <| le_refl _
-#align measure_theory.snorm_le_add_measure_left MeasureTheory.snorm_le_add_measure_left
-
-omit m
-
-theorem Memℒp.left_of_add_measure {f : α → E} (h : Memℒp f p (μ + ν)) : Memℒp f p μ :=
- h.mono_measure <| Measure.le_add_right <| le_refl _
-#align measure_theory.mem_ℒp.left_of_add_measure MeasureTheory.Memℒp.left_of_add_measure
-
-theorem Memℒp.right_of_add_measure {f : α → E} (h : Memℒp f p (μ + ν)) : Memℒp f p ν :=
- h.mono_measure <| Measure.le_add_left <| le_refl _
-#align measure_theory.mem_ℒp.right_of_add_measure MeasureTheory.Memℒp.right_of_add_measure
-
-theorem Memℒp.norm {f : α → E} (h : Memℒp f p μ) : Memℒp (fun x => ‖f x‖) p μ :=
- h.of_le h.AEStronglyMeasurable.norm (eventually_of_forall fun x => by simp)
-#align measure_theory.mem_ℒp.norm MeasureTheory.Memℒp.norm
-
-theorem memℒp_norm_iff {f : α → E} (hf : AEStronglyMeasurable f μ) :
- Memℒp (fun x => ‖f x‖) p μ ↔ Memℒp f p μ :=
- ⟨fun h =>
- ⟨hf, by
- rw [← snorm_norm]
- exact h.2⟩,
- fun h => h.norm⟩
-#align measure_theory.mem_ℒp_norm_iff MeasureTheory.memℒp_norm_iff
-
-theorem snorm'_eq_zero_of_ae_zero {f : α → F} (hq0_lt : 0 < q) (hf_zero : f =ᵐ[μ] 0) :
- snorm' f q μ = 0 := by rw [snorm'_congr_ae hf_zero, snorm'_zero hq0_lt]
-#align measure_theory.snorm'_eq_zero_of_ae_zero MeasureTheory.snorm'_eq_zero_of_ae_zero
-
-theorem snorm'_eq_zero_of_ae_zero' (hq0_ne : q ≠ 0) (hμ : μ ≠ 0) {f : α → F} (hf_zero : f =ᵐ[μ] 0) :
- snorm' f q μ = 0 := by rw [snorm'_congr_ae hf_zero, snorm'_zero' hq0_ne hμ]
-#align measure_theory.snorm'_eq_zero_of_ae_zero' MeasureTheory.snorm'_eq_zero_of_ae_zero'
-
-theorem ae_eq_zero_of_snorm'_eq_zero {f : α → E} (hq0 : 0 ≤ q) (hf : AEStronglyMeasurable f μ)
- (h : snorm' f q μ = 0) : f =ᵐ[μ] 0 :=
- by
- rw [snorm', ENNReal.rpow_eq_zero_iff] at h
- cases h
- · rw [lintegral_eq_zero_iff' (hf.ennnorm.pow_const q)] at h
- refine' h.left.mono fun x hx => _
- rw [Pi.zero_apply, ENNReal.rpow_eq_zero_iff] at hx
- cases hx
- · cases' hx with hx _
- rwa [← ENNReal.coe_zero, ENNReal.coe_eq_coe, nnnorm_eq_zero] at hx
- · exact absurd hx.left ENNReal.coe_ne_top
- · exfalso
- rw [one_div, inv_lt_zero] at h
- exact hq0.not_lt h.right
-#align measure_theory.ae_eq_zero_of_snorm'_eq_zero MeasureTheory.ae_eq_zero_of_snorm'_eq_zero
-
-theorem snorm'_eq_zero_iff (hq0_lt : 0 < q) {f : α → E} (hf : AEStronglyMeasurable f μ) :
- snorm' f q μ = 0 ↔ f =ᵐ[μ] 0 :=
- ⟨ae_eq_zero_of_snorm'_eq_zero (le_of_lt hq0_lt) hf, snorm'_eq_zero_of_ae_zero hq0_lt⟩
-#align measure_theory.snorm'_eq_zero_iff MeasureTheory.snorm'_eq_zero_iff
-
-theorem coe_nnnorm_ae_le_snormEssSup {m : MeasurableSpace α} (f : α → F) (μ : Measure α) :
- ∀ᵐ x ∂μ, (‖f x‖₊ : ℝ≥0∞) ≤ snormEssSup f μ :=
- ENNReal.ae_le_essSup fun x => (‖f x‖₊ : ℝ≥0∞)
-#align measure_theory.coe_nnnorm_ae_le_snorm_ess_sup MeasureTheory.coe_nnnorm_ae_le_snormEssSup
-
-@[simp]
-theorem snormEssSup_eq_zero_iff {f : α → F} : snormEssSup f μ = 0 ↔ f =ᵐ[μ] 0 := by
- simp [eventually_eq, snorm_ess_sup]
-#align measure_theory.snorm_ess_sup_eq_zero_iff MeasureTheory.snormEssSup_eq_zero_iff
-
-theorem snorm_eq_zero_iff {f : α → E} (hf : AEStronglyMeasurable f μ) (h0 : p ≠ 0) :
- snorm f p μ = 0 ↔ f =ᵐ[μ] 0 := by
- by_cases h_top : p = ∞
- · rw [h_top, snorm_exponent_top, snorm_ess_sup_eq_zero_iff]
- rw [snorm_eq_snorm' h0 h_top]
- exact snorm'_eq_zero_iff (ENNReal.toReal_pos h0 h_top) hf
-#align measure_theory.snorm_eq_zero_iff MeasureTheory.snorm_eq_zero_iff
-
-theorem snorm'_add_le {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
- (hq1 : 1 ≤ q) : snorm' (f + g) q μ ≤ snorm' f q μ + snorm' g q μ :=
- calc
- (∫⁻ a, ↑‖(f + g) a‖₊ ^ q ∂μ) ^ (1 / q) ≤
- (∫⁻ a, ((fun a => (‖f a‖₊ : ℝ≥0∞)) + fun a => (‖g a‖₊ : ℝ≥0∞)) a ^ q ∂μ) ^ (1 / q) :=
- by
- refine' ENNReal.rpow_le_rpow _ (by simp [le_trans zero_le_one hq1] : 0 ≤ 1 / q)
- refine' lintegral_mono fun a => ENNReal.rpow_le_rpow _ (le_trans zero_le_one hq1)
- simp [← ENNReal.coe_add, nnnorm_add_le]
- _ ≤ snorm' f q μ + snorm' g q μ := ENNReal.lintegral_Lp_add_le hf.ennnorm hg.ennnorm hq1
-
-#align measure_theory.snorm'_add_le MeasureTheory.snorm'_add_le
-
-theorem snorm'_add_le_of_le_one {f g : α → E} (hf : AEStronglyMeasurable f μ) (hq0 : 0 ≤ q)
- (hq1 : q ≤ 1) : snorm' (f + g) q μ ≤ 2 ^ (1 / q - 1) * (snorm' f q μ + snorm' g q μ) :=
- calc
- (∫⁻ a, ↑‖(f + g) a‖₊ ^ q ∂μ) ^ (1 / q) ≤
- (∫⁻ a, ((fun a => (‖f a‖₊ : ℝ≥0∞)) + fun a => (‖g a‖₊ : ℝ≥0∞)) a ^ q ∂μ) ^ (1 / q) :=
- by
- refine' ENNReal.rpow_le_rpow _ (by simp [hq0] : 0 ≤ 1 / q)
- refine' lintegral_mono fun a => ENNReal.rpow_le_rpow _ hq0
- simp [← ENNReal.coe_add, nnnorm_add_le]
- _ ≤ 2 ^ (1 / q - 1) * (snorm' f q μ + snorm' g q μ) :=
- ENNReal.lintegral_Lp_add_le_of_le_one hf.ennnorm hq0 hq1
-
-#align measure_theory.snorm'_add_le_of_le_one MeasureTheory.snorm'_add_le_of_le_one
-
-theorem snormEssSup_add_le {f g : α → F} :
- snormEssSup (f + g) μ ≤ snormEssSup f μ + snormEssSup g μ :=
- by
- refine' le_trans (essSup_mono_ae (eventually_of_forall fun x => _)) (ENNReal.essSup_add_le _ _)
- simp_rw [Pi.add_apply, ← ENNReal.coe_add, ENNReal.coe_le_coe]
- exact nnnorm_add_le _ _
-#align measure_theory.snorm_ess_sup_add_le MeasureTheory.snormEssSup_add_le
-
-theorem snorm_add_le {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
- (hp1 : 1 ≤ p) : snorm (f + g) p μ ≤ snorm f p μ + snorm g p μ :=
- by
- by_cases hp0 : p = 0
- · simp [hp0]
- by_cases hp_top : p = ∞
- · simp [hp_top, snorm_ess_sup_add_le]
- have hp1_real : 1 ≤ p.to_real := by
- rwa [← ENNReal.one_toReal, ENNReal.toReal_le_toReal ENNReal.one_ne_top hp_top]
- repeat' rw [snorm_eq_snorm' hp0 hp_top]
- exact snorm'_add_le hf hg hp1_real
-#align measure_theory.snorm_add_le MeasureTheory.snorm_add_le
-
-/-- A constant for the inequality `‖f + g‖_{L^p} ≤ C * (‖f‖_{L^p} + ‖g‖_{L^p})`. It is equal to `1`
-for `p ≥ 1` or `p = 0`, and `2^(1/p-1)` in the more tricky interval `(0, 1)`. -/
-def lpAddConst (p : ℝ≥0∞) : ℝ≥0∞ :=
- if p ∈ Set.Ioo (0 : ℝ≥0∞) 1 then 2 ^ (1 / p.toReal - 1) else 1
-#align measure_theory.Lp_add_const MeasureTheory.lpAddConst
-
-theorem lpAddConst_of_one_le {p : ℝ≥0∞} (hp : 1 ≤ p) : lpAddConst p = 1 :=
- by
- rw [Lp_add_const, if_neg]
- intro h
- exact lt_irrefl _ (h.2.trans_le hp)
-#align measure_theory.Lp_add_const_of_one_le MeasureTheory.lpAddConst_of_one_le
-
-theorem lpAddConst_zero : lpAddConst 0 = 1 :=
- by
- rw [Lp_add_const, if_neg]
- intro h
- exact lt_irrefl _ h.1
-#align measure_theory.Lp_add_const_zero MeasureTheory.lpAddConst_zero
-
-theorem lpAddConst_lt_top (p : ℝ≥0∞) : lpAddConst p < ∞ :=
- by
- rw [Lp_add_const]
- split_ifs
- · apply ENNReal.rpow_lt_top_of_nonneg _ ENNReal.two_ne_top
- simp only [one_div, sub_nonneg]
- apply one_le_inv (ENNReal.toReal_pos h.1.ne' (h.2.trans ENNReal.one_lt_top).Ne)
- simpa using ENNReal.toReal_mono ENNReal.one_ne_top h.2.le
- · exact ENNReal.one_lt_top
-#align measure_theory.Lp_add_const_lt_top MeasureTheory.lpAddConst_lt_top
-
-theorem snorm_add_le' {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
- (p : ℝ≥0∞) : snorm (f + g) p μ ≤ lpAddConst p * (snorm f p μ + snorm g p μ) :=
- by
- rcases eq_or_ne p 0 with (rfl | hp)
- · simp only [snorm_exponent_zero, add_zero, MulZeroClass.mul_zero, le_zero_iff]
- rcases lt_or_le p 1 with (h'p | h'p)
- · simp only [snorm_eq_snorm' hp (h'p.trans ENNReal.one_lt_top).Ne]
- convert snorm'_add_le_of_le_one hf ENNReal.toReal_nonneg _
- · have : p ∈ Set.Ioo (0 : ℝ≥0∞) 1 := ⟨hp.bot_lt, h'p⟩
- simp only [Lp_add_const, if_pos this]
- · simpa using ENNReal.toReal_mono ENNReal.one_ne_top h'p.le
- · simp [Lp_add_const_of_one_le h'p]
- exact snorm_add_le hf hg h'p
-#align measure_theory.snorm_add_le' MeasureTheory.snorm_add_le'
-
-variable (μ E)
-
-/-- Technical lemma to control the addition of functions in `L^p` even for `p < 1`: Given `δ > 0`,
-there exists `η` such that two functions bounded by `η` in `L^p` have a sum bounded by `δ`. One
-could take `η = δ / 2` for `p ≥ 1`, but the point of the lemma is that it works also for `p < 1`.
--/
-theorem exists_Lp_half (p : ℝ≥0∞) {δ : ℝ≥0∞} (hδ : δ ≠ 0) :
- ∃ η : ℝ≥0∞,
- 0 < η ∧
- ∀ (f g : α → E) (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
- (Hf : snorm f p μ ≤ η) (Hg : snorm g p μ ≤ η), snorm (f + g) p μ < δ :=
- by
- have :
- tendsto (fun η : ℝ≥0∞ => Lp_add_const p * (η + η)) (𝓝[>] 0) (𝓝 (Lp_add_const p * (0 + 0))) :=
- (ENNReal.Tendsto.const_mul (tendsto_id.add tendsto_id)
- (Or.inr (Lp_add_const_lt_top p).Ne)).mono_left
- nhdsWithin_le_nhds
- simp only [add_zero, MulZeroClass.mul_zero] at this
- rcases(((tendsto_order.1 this).2 δ hδ.bot_lt).And self_mem_nhdsWithin).exists with ⟨η, hη, ηpos⟩
- refine' ⟨η, ηpos, fun f g hf hg Hf Hg => _⟩
- calc
- snorm (f + g) p μ ≤ Lp_add_const p * (snorm f p μ + snorm g p μ) := snorm_add_le' hf hg p
- _ ≤ Lp_add_const p * (η + η) := (mul_le_mul_of_nonneg_left (add_le_add Hf Hg) bot_le)
- _ < δ := hη
-
-#align measure_theory.exists_Lp_half MeasureTheory.exists_Lp_half
-
-variable {μ E}
-
-theorem snorm_sub_le' {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
- (p : ℝ≥0∞) : snorm (f - g) p μ ≤ lpAddConst p * (snorm f p μ + snorm g p μ) :=
- calc
- snorm (f - g) p μ = snorm (f + -g) p μ := by rw [sub_eq_add_neg]
- -- We cannot use snorm_add_le on f and (-g) because we don't have `ae_measurable (-g) μ`, since
- -- we don't suppose `[borel_space E]`.
- _ =
- snorm (fun x => ‖f x + -g x‖) p μ :=
- (snorm_norm (f + -g)).symm
- _ ≤ snorm (fun x => ‖f x‖ + ‖-g x‖) p μ :=
- by
- refine' snorm_mono_real fun x => _
- rw [norm_norm]
- exact norm_add_le _ _
- _ = snorm (fun x => ‖f x‖ + ‖g x‖) p μ := by simp_rw [norm_neg]
- _ ≤ lpAddConst p * (snorm (fun x => ‖f x‖) p μ + snorm (fun x => ‖g x‖) p μ) :=
- (snorm_add_le' hf.norm hg.norm p)
- _ = lpAddConst p * (snorm f p μ + snorm g p μ) := by rw [← snorm_norm f, ← snorm_norm g]
-
-#align measure_theory.snorm_sub_le' MeasureTheory.snorm_sub_le'
-
-theorem snorm_sub_le {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
- (hp : 1 ≤ p) : snorm (f - g) p μ ≤ snorm f p μ + snorm g p μ := by
- simpa [Lp_add_const_of_one_le hp] using snorm_sub_le' hf hg p
-#align measure_theory.snorm_sub_le MeasureTheory.snorm_sub_le
-
-theorem snorm_add_lt_top {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) :
- snorm (f + g) p μ < ∞ :=
- calc
- snorm (f + g) p μ ≤ lpAddConst p * (snorm f p μ + snorm g p μ) :=
- snorm_add_le' hf.AEStronglyMeasurable hg.AEStronglyMeasurable p
- _ < ∞ := by
- apply ENNReal.mul_lt_top (Lp_add_const_lt_top p).Ne
- exact (ENNReal.add_lt_top.2 ⟨hf.2, hg.2⟩).Ne
-
-#align measure_theory.snorm_add_lt_top MeasureTheory.snorm_add_lt_top
-
-theorem ae_le_snormEssSup {f : α → F} : ∀ᵐ y ∂μ, ↑‖f y‖₊ ≤ snormEssSup f μ :=
- ae_le_essSup
-#align measure_theory.ae_le_snorm_ess_sup MeasureTheory.ae_le_snormEssSup
-
-theorem meas_snormEssSup_lt {f : α → F} : μ { y | snormEssSup f μ < ‖f y‖₊ } = 0 :=
- meas_essSup_lt
-#align measure_theory.meas_snorm_ess_sup_lt MeasureTheory.meas_snormEssSup_lt
-
-section MapMeasure
-
-variable {β : Type _} {mβ : MeasurableSpace β} {f : α → β} {g : β → E}
-
-include mβ
-
-theorem snormEssSup_map_measure (hg : AEStronglyMeasurable g (Measure.map f μ))
- (hf : AEMeasurable f μ) : snormEssSup g (Measure.map f μ) = snormEssSup (g ∘ f) μ :=
- essSup_map_measure hg.ennnorm hf
-#align measure_theory.snorm_ess_sup_map_measure MeasureTheory.snormEssSup_map_measure
-
-theorem snorm_map_measure (hg : AEStronglyMeasurable g (Measure.map f μ)) (hf : AEMeasurable f μ) :
- snorm g p (Measure.map f μ) = snorm (g ∘ f) p μ :=
- by
- by_cases hp_zero : p = 0
- · simp only [hp_zero, snorm_exponent_zero]
- by_cases hp_top : p = ∞
- · simp_rw [hp_top, snorm_exponent_top]
- exact snorm_ess_sup_map_measure hg hf
- simp_rw [snorm_eq_lintegral_rpow_nnnorm hp_zero hp_top]
- rw [lintegral_map' (hg.ennnorm.pow_const p.to_real) hf]
-#align measure_theory.snorm_map_measure MeasureTheory.snorm_map_measure
-
-theorem memℒp_map_measure_iff (hg : AEStronglyMeasurable g (Measure.map f μ))
- (hf : AEMeasurable f μ) : Memℒp g p (Measure.map f μ) ↔ Memℒp (g ∘ f) p μ := by
- simp [mem_ℒp, snorm_map_measure hg hf, hg.comp_ae_measurable hf, hg]
-#align measure_theory.mem_ℒp_map_measure_iff MeasureTheory.memℒp_map_measure_iff
-
-theorem MeasurableEmbedding.snormEssSup_map_measure {g : β → F} (hf : MeasurableEmbedding f) :
- snormEssSup g (Measure.map f μ) = snormEssSup (g ∘ f) μ :=
- hf.essSup_map_measure
-#align measurable_embedding.snorm_ess_sup_map_measure MeasurableEmbedding.snormEssSup_map_measure
-
-theorem MeasurableEmbedding.snorm_map_measure {g : β → F} (hf : MeasurableEmbedding f) :
- snorm g p (Measure.map f μ) = snorm (g ∘ f) p μ :=
- by
- by_cases hp_zero : p = 0
- · simp only [hp_zero, snorm_exponent_zero]
- by_cases hp : p = ∞
- · simp_rw [hp, snorm_exponent_top]
- exact hf.ess_sup_map_measure
- · simp_rw [snorm_eq_lintegral_rpow_nnnorm hp_zero hp]
- rw [hf.lintegral_map]
-#align measurable_embedding.snorm_map_measure MeasurableEmbedding.snorm_map_measure
-
-theorem MeasurableEmbedding.memℒp_map_measure_iff {g : β → F} (hf : MeasurableEmbedding f) :
- Memℒp g p (Measure.map f μ) ↔ Memℒp (g ∘ f) p μ := by
- simp_rw [mem_ℒp, hf.ae_strongly_measurable_map_iff, hf.snorm_map_measure]
-#align measurable_embedding.mem_ℒp_map_measure_iff MeasurableEmbedding.memℒp_map_measure_iff
-
-theorem MeasurableEquiv.memℒp_map_measure_iff (f : α ≃ᵐ β) {g : β → F} :
- Memℒp g p (Measure.map f μ) ↔ Memℒp (g ∘ f) p μ :=
- f.MeasurableEmbedding.memℒp_map_measure_iff
-#align measurable_equiv.mem_ℒp_map_measure_iff MeasurableEquiv.memℒp_map_measure_iff
-
-omit mβ
-
-end MapMeasure
-
-section Trim
-
-theorem snorm'_trim (hm : m ≤ m0) {f : α → E} (hf : strongly_measurable[m] f) :
- snorm' f q (ν.trim hm) = snorm' f q ν :=
- by
- simp_rw [snorm']
- congr 1
- refine' lintegral_trim hm _
- refine' @Measurable.pow_const _ _ _ _ _ _ _ m _ (@Measurable.coe_nnreal_ennreal _ m _ _) _
- apply @strongly_measurable.measurable
- exact @strongly_measurable.nnnorm α m _ _ _ hf
-#align measure_theory.snorm'_trim MeasureTheory.snorm'_trim
-
-theorem limsup_trim (hm : m ≤ m0) {f : α → ℝ≥0∞} (hf : measurable[m] f) :
- (ν.trim hm).ae.limsup f = ν.ae.limsup f :=
- by
- simp_rw [limsup_eq]
- suffices h_set_eq : { a : ℝ≥0∞ | ∀ᵐ n ∂ν.trim hm, f n ≤ a } = { a : ℝ≥0∞ | ∀ᵐ n ∂ν, f n ≤ a }
- · rw [h_set_eq]
- ext1 a
- suffices h_meas_eq : ν { x | ¬f x ≤ a } = ν.trim hm { x | ¬f x ≤ a }
- · simp_rw [Set.mem_setOf_eq, ae_iff, h_meas_eq]
- refine' (trim_measurable_set_eq hm _).symm
- refine' @MeasurableSet.compl _ _ m (@measurableSet_le ℝ≥0∞ _ _ _ _ m _ _ _ _ _ hf _)
- exact @measurable_const _ _ _ m _
-#align measure_theory.limsup_trim MeasureTheory.limsup_trim
-
-theorem essSup_trim (hm : m ≤ m0) {f : α → ℝ≥0∞} (hf : measurable[m] f) :
- essSup f (ν.trim hm) = essSup f ν := by
- simp_rw [essSup]
- exact limsup_trim hm hf
-#align measure_theory.ess_sup_trim MeasureTheory.essSup_trim
-
-theorem snormEssSup_trim (hm : m ≤ m0) {f : α → E} (hf : strongly_measurable[m] f) :
- snormEssSup f (ν.trim hm) = snormEssSup f ν :=
- essSup_trim _ (@StronglyMeasurable.ennnorm _ m _ _ _ hf)
-#align measure_theory.snorm_ess_sup_trim MeasureTheory.snormEssSup_trim
-
-theorem snorm_trim (hm : m ≤ m0) {f : α → E} (hf : strongly_measurable[m] f) :
- snorm f p (ν.trim hm) = snorm f p ν :=
- by
- by_cases h0 : p = 0
- · simp [h0]
- by_cases h_top : p = ∞
- · simpa only [h_top, snorm_exponent_top] using snorm_ess_sup_trim hm hf
- simpa only [snorm_eq_snorm' h0 h_top] using snorm'_trim hm hf
-#align measure_theory.snorm_trim MeasureTheory.snorm_trim
-
-theorem snorm_trim_ae (hm : m ≤ m0) {f : α → E} (hf : AEStronglyMeasurable f (ν.trim hm)) :
- snorm f p (ν.trim hm) = snorm f p ν :=
- by
- rw [snorm_congr_ae hf.ae_eq_mk, snorm_congr_ae (ae_eq_of_ae_eq_trim hf.ae_eq_mk)]
- exact snorm_trim hm hf.strongly_measurable_mk
-#align measure_theory.snorm_trim_ae MeasureTheory.snorm_trim_ae
-
-theorem memℒp_of_memℒp_trim (hm : m ≤ m0) {f : α → E} (hf : Memℒp f p (ν.trim hm)) : Memℒp f p ν :=
- ⟨aestronglyMeasurable_of_aestronglyMeasurable_trim hm hf.1,
- (le_of_eq (snorm_trim_ae hm hf.1).symm).trans_lt hf.2⟩
-#align measure_theory.mem_ℒp_of_mem_ℒp_trim MeasureTheory.memℒp_of_memℒp_trim
-
-end Trim
-
-@[simp]
-theorem snorm'_neg {f : α → F} : snorm' (-f) q μ = snorm' f q μ := by simp [snorm']
-#align measure_theory.snorm'_neg MeasureTheory.snorm'_neg
-
-@[simp]
-theorem snorm_neg {f : α → F} : snorm (-f) p μ = snorm f p μ :=
- by
- by_cases h0 : p = 0
- · simp [h0]
- by_cases h_top : p = ∞
- · simp [h_top, snorm_ess_sup]
- simp [snorm_eq_snorm' h0 h_top]
-#align measure_theory.snorm_neg MeasureTheory.snorm_neg
-
-theorem Memℒp.neg {f : α → E} (hf : Memℒp f p μ) : Memℒp (-f) p μ :=
- ⟨AEStronglyMeasurable.neg hf.1, by simp [hf.right]⟩
-#align measure_theory.mem_ℒp.neg MeasureTheory.Memℒp.neg
-
-theorem memℒp_neg_iff {f : α → E} : Memℒp (-f) p μ ↔ Memℒp f p μ :=
- ⟨fun h => neg_neg f ▸ h.neg, Memℒp.neg⟩
-#align measure_theory.mem_ℒp_neg_iff MeasureTheory.memℒp_neg_iff
-
-theorem snorm'_le_snorm'_mul_rpow_measure_univ {p q : ℝ} (hp0_lt : 0 < p) (hpq : p ≤ q) {f : α → E}
- (hf : AEStronglyMeasurable f μ) : snorm' f p μ ≤ snorm' f q μ * μ Set.univ ^ (1 / p - 1 / q) :=
- by
- have hq0_lt : 0 < q := lt_of_lt_of_le hp0_lt hpq
- by_cases hpq_eq : p = q
- · rw [hpq_eq, sub_self, ENNReal.rpow_zero, mul_one]
- exact le_rfl
- have hpq : p < q := lt_of_le_of_ne hpq hpq_eq
- let g := fun a : α => (1 : ℝ≥0∞)
- have h_rw : (∫⁻ a, ↑‖f a‖₊ ^ p ∂μ) = ∫⁻ a, (‖f a‖₊ * g a) ^ p ∂μ :=
- lintegral_congr fun a => by simp
- repeat' rw [snorm']
- rw [h_rw]
- let r := p * q / (q - p)
- have hpqr : 1 / p = 1 / q + 1 / r :=
- by
- field_simp [(ne_of_lt hp0_lt).symm, (ne_of_lt hq0_lt).symm]
- ring
- calc
- (∫⁻ a : α, (↑‖f a‖₊ * g a) ^ p ∂μ) ^ (1 / p) ≤
- (∫⁻ a : α, ↑‖f a‖₊ ^ q ∂μ) ^ (1 / q) * (∫⁻ a : α, g a ^ r ∂μ) ^ (1 / r) :=
- ENNReal.lintegral_Lp_mul_le_Lq_mul_Lr hp0_lt hpq hpqr μ hf.ennnorm aemeasurable_const
- _ = (∫⁻ a : α, ↑‖f a‖₊ ^ q ∂μ) ^ (1 / q) * μ Set.univ ^ (1 / p - 1 / q) := by simp [hpqr]
-
-#align measure_theory.snorm'_le_snorm'_mul_rpow_measure_univ MeasureTheory.snorm'_le_snorm'_mul_rpow_measure_univ
-
-theorem snorm'_le_snormEssSup_mul_rpow_measure_univ (hq_pos : 0 < q) {f : α → F} :
- snorm' f q μ ≤ snormEssSup f μ * μ Set.univ ^ (1 / q) :=
- by
- have h_le : (∫⁻ a : α, ↑‖f a‖₊ ^ q ∂μ) ≤ ∫⁻ a : α, snorm_ess_sup f μ ^ q ∂μ :=
- by
- refine' lintegral_mono_ae _
- have h_nnnorm_le_snorm_ess_sup := coe_nnnorm_ae_le_snorm_ess_sup f μ
- refine' h_nnnorm_le_snorm_ess_sup.mono fun x hx => ENNReal.rpow_le_rpow hx (le_of_lt hq_pos)
- rw [snorm', ← ENNReal.rpow_one (snorm_ess_sup f μ)]
- nth_rw 2 [← mul_inv_cancel (ne_of_lt hq_pos).symm]
- rw [ENNReal.rpow_mul, one_div, ← ENNReal.mul_rpow_of_nonneg _ _ (by simp [hq_pos.le] : 0 ≤ q⁻¹)]
- refine' ENNReal.rpow_le_rpow _ (by simp [hq_pos.le])
- rwa [lintegral_const] at h_le
-#align measure_theory.snorm'_le_snorm_ess_sup_mul_rpow_measure_univ MeasureTheory.snorm'_le_snormEssSup_mul_rpow_measure_univ
-
-theorem snorm_le_snorm_mul_rpow_measure_univ {p q : ℝ≥0∞} (hpq : p ≤ q) {f : α → E}
- (hf : AEStronglyMeasurable f μ) :
- snorm f p μ ≤ snorm f q μ * μ Set.univ ^ (1 / p.toReal - 1 / q.toReal) :=
- by
- by_cases hp0 : p = 0
- · simp [hp0, zero_le]
- rw [← Ne.def] at hp0
- have hp0_lt : 0 < p := lt_of_le_of_ne (zero_le _) hp0.symm
- have hq0_lt : 0 < q := lt_of_lt_of_le hp0_lt hpq
- by_cases hq_top : q = ∞
- · simp only [hq_top, div_zero, one_div, ENNReal.top_toReal, sub_zero, snorm_exponent_top,
- inv_zero]
- by_cases hp_top : p = ∞
- · simp only [hp_top, ENNReal.rpow_zero, mul_one, ENNReal.top_toReal, sub_zero, inv_zero,
- snorm_exponent_top]
- exact le_rfl
- rw [snorm_eq_snorm' hp0 hp_top]
- have hp_pos : 0 < p.to_real := ENNReal.toReal_pos hp0_lt.ne' hp_top
- refine' (snorm'_le_snorm_ess_sup_mul_rpow_measure_univ hp_pos).trans (le_of_eq _)
- congr
- exact one_div _
- have hp_lt_top : p < ∞ := hpq.trans_lt (lt_top_iff_ne_top.mpr hq_top)
- have hp_pos : 0 < p.to_real := ENNReal.toReal_pos hp0_lt.ne' hp_lt_top.ne
- rw [snorm_eq_snorm' hp0_lt.ne.symm hp_lt_top.ne, snorm_eq_snorm' hq0_lt.ne.symm hq_top]
- have hpq_real : p.to_real ≤ q.to_real := by rwa [ENNReal.toReal_le_toReal hp_lt_top.ne hq_top]
- exact snorm'_le_snorm'_mul_rpow_measure_univ hp_pos hpq_real hf
-#align measure_theory.snorm_le_snorm_mul_rpow_measure_univ MeasureTheory.snorm_le_snorm_mul_rpow_measure_univ
-
-theorem snorm'_le_snorm'_of_exponent_le {m : MeasurableSpace α} {p q : ℝ} (hp0_lt : 0 < p)
- (hpq : p ≤ q) (μ : Measure α) [ProbabilityMeasure μ] {f : α → E}
- (hf : AEStronglyMeasurable f μ) : snorm' f p μ ≤ snorm' f q μ :=
- by
- have h_le_μ := snorm'_le_snorm'_mul_rpow_measure_univ hp0_lt hpq hf
- rwa [measure_univ, ENNReal.one_rpow, mul_one] at h_le_μ
-#align measure_theory.snorm'_le_snorm'_of_exponent_le MeasureTheory.snorm'_le_snorm'_of_exponent_le
-
-theorem snorm'_le_snormEssSup (hq_pos : 0 < q) {f : α → F} [ProbabilityMeasure μ] :
- snorm' f q μ ≤ snormEssSup f μ :=
- le_trans (snorm'_le_snormEssSup_mul_rpow_measure_univ hq_pos) (le_of_eq (by simp [measure_univ]))
-#align measure_theory.snorm'_le_snorm_ess_sup MeasureTheory.snorm'_le_snormEssSup
-
-theorem snorm_le_snorm_of_exponent_le {p q : ℝ≥0∞} (hpq : p ≤ q) [ProbabilityMeasure μ] {f : α → E}
- (hf : AEStronglyMeasurable f μ) : snorm f p μ ≤ snorm f q μ :=
- (snorm_le_snorm_mul_rpow_measure_univ hpq hf).trans (le_of_eq (by simp [measure_univ]))
-#align measure_theory.snorm_le_snorm_of_exponent_le MeasureTheory.snorm_le_snorm_of_exponent_le
-
-theorem snorm'_lt_top_of_snorm'_lt_top_of_exponent_le {p q : ℝ} [FiniteMeasure μ] {f : α → E}
- (hf : AEStronglyMeasurable f μ) (hfq_lt_top : snorm' f q μ < ∞) (hp_nonneg : 0 ≤ p)
- (hpq : p ≤ q) : snorm' f p μ < ∞ :=
- by
- cases' le_or_lt p 0 with hp_nonpos hp_pos
- · rw [le_antisymm hp_nonpos hp_nonneg]
- simp
- have hq_pos : 0 < q := lt_of_lt_of_le hp_pos hpq
- calc
- snorm' f p μ ≤ snorm' f q μ * μ Set.univ ^ (1 / p - 1 / q) :=
- snorm'_le_snorm'_mul_rpow_measure_univ hp_pos hpq hf
- _ < ∞ := by
- rw [ENNReal.mul_lt_top_iff]
- refine' Or.inl ⟨hfq_lt_top, ENNReal.rpow_lt_top_of_nonneg _ (measure_ne_top μ Set.univ)⟩
- rwa [le_sub_comm, sub_zero, one_div, one_div, inv_le_inv hq_pos hp_pos]
-
-#align measure_theory.snorm'_lt_top_of_snorm'_lt_top_of_exponent_le MeasureTheory.snorm'_lt_top_of_snorm'_lt_top_of_exponent_le
-
-variable (μ)
-
-theorem pow_mul_meas_ge_le_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
- (hf : AEStronglyMeasurable f μ) (ε : ℝ≥0∞) :
- (ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal }) ^ (1 / p.toReal) ≤ snorm f p μ :=
- by
- rw [snorm_eq_lintegral_rpow_nnnorm hp_ne_zero hp_ne_top]
- exact
- ENNReal.rpow_le_rpow (mul_meas_ge_le_lintegral₀ (hf.ennnorm.pow_const _) ε)
- (one_div_nonneg.2 ENNReal.toReal_nonneg)
-#align measure_theory.pow_mul_meas_ge_le_snorm MeasureTheory.pow_mul_meas_ge_le_snorm
-
-theorem mul_meas_ge_le_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
- (hf : AEStronglyMeasurable f μ) (ε : ℝ≥0∞) :
- ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal } ≤ snorm f p μ ^ p.toReal :=
- by
- have : 1 / p.to_real * p.to_real = 1 :=
- by
- refine' one_div_mul_cancel _
- rw [Ne, ENNReal.toReal_eq_zero_iff]
- exact not_or_of_not hp_ne_zero hp_ne_top
- rw [← ENNReal.rpow_one (ε * μ { x | ε ≤ ‖f x‖₊ ^ p.to_real }), ← this, ENNReal.rpow_mul]
- exact
- ENNReal.rpow_le_rpow (pow_mul_meas_ge_le_snorm μ hp_ne_zero hp_ne_top hf ε)
- ENNReal.toReal_nonneg
-#align measure_theory.mul_meas_ge_le_pow_snorm MeasureTheory.mul_meas_ge_le_pow_snorm
-
-/-- A version of Markov's inequality using Lp-norms. -/
-theorem mul_meas_ge_le_pow_snorm' {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
- (hf : AEStronglyMeasurable f μ) (ε : ℝ≥0∞) :
- ε ^ p.toReal * μ { x | ε ≤ ‖f x‖₊ } ≤ snorm f p μ ^ p.toReal :=
- by
- convert mul_meas_ge_le_pow_snorm μ hp_ne_zero hp_ne_top hf (ε ^ p.to_real)
- ext x
- rw [ENNReal.rpow_le_rpow_iff (ENNReal.toReal_pos hp_ne_zero hp_ne_top)]
-#align measure_theory.mul_meas_ge_le_pow_snorm' MeasureTheory.mul_meas_ge_le_pow_snorm'
-
-theorem meas_ge_le_mul_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
- (hf : AEStronglyMeasurable f μ) {ε : ℝ≥0∞} (hε : ε ≠ 0) :
- μ { x | ε ≤ ‖f x‖₊ } ≤ ε⁻¹ ^ p.toReal * snorm f p μ ^ p.toReal :=
- by
- by_cases ε = ∞
- · simp [h]
- have hεpow : ε ^ p.to_real ≠ 0 := (ENNReal.rpow_pos (pos_iff_ne_zero.2 hε) h).Ne.symm
- have hεpow' : ε ^ p.to_real ≠ ∞ := ENNReal.rpow_ne_top_of_nonneg ENNReal.toReal_nonneg h
- rw [ENNReal.inv_rpow, ← ENNReal.mul_le_mul_left hεpow hεpow', ← mul_assoc,
- ENNReal.mul_inv_cancel hεpow hεpow', one_mul]
- exact mul_meas_ge_le_pow_snorm' μ hp_ne_zero hp_ne_top hf ε
-#align measure_theory.meas_ge_le_mul_pow_snorm MeasureTheory.meas_ge_le_mul_pow_snorm
-
-variable {μ}
-
-theorem Memℒp.memℒp_of_exponent_le {p q : ℝ≥0∞} [FiniteMeasure μ] {f : α → E} (hfq : Memℒp f q μ)
- (hpq : p ≤ q) : Memℒp f p μ :=
- by
- cases' hfq with hfq_m hfq_lt_top
- by_cases hp0 : p = 0
- · rwa [hp0, mem_ℒp_zero_iff_ae_strongly_measurable]
- rw [← Ne.def] at hp0
- refine' ⟨hfq_m, _⟩
- by_cases hp_top : p = ∞
- · have hq_top : q = ∞ := by rwa [hp_top, top_le_iff] at hpq
- rw [hp_top]
- rwa [hq_top] at hfq_lt_top
- have hp_pos : 0 < p.to_real := ENNReal.toReal_pos hp0 hp_top
- by_cases hq_top : q = ∞
- · rw [snorm_eq_snorm' hp0 hp_top]
- rw [hq_top, snorm_exponent_top] at hfq_lt_top
- refine' lt_of_le_of_lt (snorm'_le_snorm_ess_sup_mul_rpow_measure_univ hp_pos) _
- refine' ENNReal.mul_lt_top hfq_lt_top.ne _
- exact (ENNReal.rpow_lt_top_of_nonneg (by simp [hp_pos.le]) (measure_ne_top μ Set.univ)).Ne
- have hq0 : q ≠ 0 := by
- by_contra hq_eq_zero
- have hp_eq_zero : p = 0 := le_antisymm (by rwa [hq_eq_zero] at hpq) (zero_le _)
- rw [hp_eq_zero, ENNReal.zero_toReal] at hp_pos
- exact (lt_irrefl _) hp_pos
- have hpq_real : p.to_real ≤ q.to_real := by rwa [ENNReal.toReal_le_toReal hp_top hq_top]
- rw [snorm_eq_snorm' hp0 hp_top]
- rw [snorm_eq_snorm' hq0 hq_top] at hfq_lt_top
- exact snorm'_lt_top_of_snorm'_lt_top_of_exponent_le hfq_m hfq_lt_top (le_of_lt hp_pos) hpq_real
-#align measure_theory.mem_ℒp.mem_ℒp_of_exponent_le MeasureTheory.Memℒp.memℒp_of_exponent_le
-
-section MeasurableAdd
-
--- variable [has_measurable_add₂ E]
-theorem snorm'_sum_le {ι} {f : ι → α → E} {s : Finset ι}
- (hfs : ∀ i, i ∈ s → AEStronglyMeasurable (f i) μ) (hq1 : 1 ≤ q) :
- snorm' (∑ i in s, f i) q μ ≤ ∑ i in s, snorm' (f i) q μ :=
- Finset.le_sum_of_subadditive_on_pred (fun f : α → E => snorm' f q μ)
- (fun f => AEStronglyMeasurable f μ) (snorm'_zero (zero_lt_one.trans_le hq1))
- (fun f g hf hg => snorm'_add_le hf hg hq1) (fun f g hf hg => hf.add hg) _ hfs
-#align measure_theory.snorm'_sum_le MeasureTheory.snorm'_sum_le
-
-theorem snorm_sum_le {ι} {f : ι → α → E} {s : Finset ι}
- (hfs : ∀ i, i ∈ s → AEStronglyMeasurable (f i) μ) (hp1 : 1 ≤ p) :
- snorm (∑ i in s, f i) p μ ≤ ∑ i in s, snorm (f i) p μ :=
- Finset.le_sum_of_subadditive_on_pred (fun f : α → E => snorm f p μ)
- (fun f => AEStronglyMeasurable f μ) snorm_zero (fun f g hf hg => snorm_add_le hf hg hp1)
- (fun f g hf hg => hf.add hg) _ hfs
-#align measure_theory.snorm_sum_le MeasureTheory.snorm_sum_le
-
-theorem Memℒp.add {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) : Memℒp (f + g) p μ :=
- ⟨AEStronglyMeasurable.add hf.1 hg.1, snorm_add_lt_top hf hg⟩
-#align measure_theory.mem_ℒp.add MeasureTheory.Memℒp.add
-
-theorem Memℒp.sub {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) : Memℒp (f - g) p μ :=
- by
- rw [sub_eq_add_neg]
- exact hf.add hg.neg
-#align measure_theory.mem_ℒp.sub MeasureTheory.Memℒp.sub
-
-theorem memℒp_finset_sum {ι} (s : Finset ι) {f : ι → α → E} (hf : ∀ i ∈ s, Memℒp (f i) p μ) :
- Memℒp (fun a => ∑ i in s, f i a) p μ :=
- by
- haveI : DecidableEq ι := Classical.decEq _
- revert hf
- refine' Finset.induction_on s _ _
- · simp only [zero_mem_ℒp', Finset.sum_empty, imp_true_iff]
- · intro i s his ih hf
- simp only [his, Finset.sum_insert, not_false_iff]
- exact (hf i (s.mem_insert_self i)).add (ih fun j hj => hf j (Finset.mem_insert_of_mem hj))
-#align measure_theory.mem_ℒp_finset_sum MeasureTheory.memℒp_finset_sum
-
-theorem memℒp_finset_sum' {ι} (s : Finset ι) {f : ι → α → E} (hf : ∀ i ∈ s, Memℒp (f i) p μ) :
- Memℒp (∑ i in s, f i) p μ := by
- convert mem_ℒp_finset_sum s hf
- ext x
- simp
-#align measure_theory.mem_ℒp_finset_sum' MeasureTheory.memℒp_finset_sum'
-
-end MeasurableAdd
-
-section NormedSpace
-
-variable {𝕜 : Type _} [NormedField 𝕜] [NormedSpace 𝕜 E] [NormedSpace 𝕜 F]
-
-theorem snorm'_const_smul {f : α → F} (c : 𝕜) (hq_pos : 0 < q) :
- snorm' (c • f) q μ = (‖c‖₊ : ℝ≥0∞) * snorm' f q μ :=
- by
- rw [snorm']
- simp_rw [Pi.smul_apply, nnnorm_smul, ENNReal.coe_mul, ENNReal.mul_rpow_of_nonneg _ _ hq_pos.le]
- suffices h_integral : (∫⁻ a, ↑‖c‖₊ ^ q * ↑‖f a‖₊ ^ q ∂μ) = (‖c‖₊ : ℝ≥0∞) ^ q * ∫⁻ a, ‖f a‖₊ ^ q ∂μ
- · apply_fun fun x => x ^ (1 / q) at h_integral
- rw [h_integral, ENNReal.mul_rpow_of_nonneg _ _ (by simp [hq_pos.le] : 0 ≤ 1 / q)]
- congr
- simp_rw [← ENNReal.rpow_mul, one_div, mul_inv_cancel hq_pos.ne.symm, ENNReal.rpow_one]
- rw [lintegral_const_mul']
- rw [ENNReal.coe_rpow_of_nonneg _ hq_pos.le]
- exact ENNReal.coe_ne_top
-#align measure_theory.snorm'_const_smul MeasureTheory.snorm'_const_smul
-
-theorem snormEssSup_const_smul {f : α → F} (c : 𝕜) :
- snormEssSup (c • f) μ = (‖c‖₊ : ℝ≥0∞) * snormEssSup f μ := by
- simp_rw [snorm_ess_sup, Pi.smul_apply, nnnorm_smul, ENNReal.coe_mul, ENNReal.essSup_const_mul]
-#align measure_theory.snorm_ess_sup_const_smul MeasureTheory.snormEssSup_const_smul
-
-theorem snorm_const_smul {f : α → F} (c : 𝕜) : snorm (c • f) p μ = (‖c‖₊ : ℝ≥0∞) * snorm f p μ :=
- by
- by_cases h0 : p = 0
- · simp [h0]
- by_cases h_top : p = ∞
- · simp [h_top, snorm_ess_sup_const_smul]
- repeat' rw [snorm_eq_snorm' h0 h_top]
- rw [← Ne.def] at h0
- exact snorm'_const_smul c (ENNReal.toReal_pos h0 h_top)
-#align measure_theory.snorm_const_smul MeasureTheory.snorm_const_smul
-
-theorem Memℒp.const_smul {f : α → E} (hf : Memℒp f p μ) (c : 𝕜) : Memℒp (c • f) p μ :=
- ⟨AEStronglyMeasurable.const_smul hf.1 c,
- (snorm_const_smul c).le.trans_lt (ENNReal.mul_lt_top ENNReal.coe_ne_top hf.2.Ne)⟩
-#align measure_theory.mem_ℒp.const_smul MeasureTheory.Memℒp.const_smul
-
-theorem Memℒp.const_mul {f : α → 𝕜} (hf : Memℒp f p μ) (c : 𝕜) : Memℒp (fun x => c * f x) p μ :=
- hf.const_smul c
-#align measure_theory.mem_ℒp.const_mul MeasureTheory.Memℒp.const_mul
-
-theorem snorm'_smul_le_mul_snorm' {p q r : ℝ} {f : α → E} (hf : AEStronglyMeasurable f μ)
- {φ : α → 𝕜} (hφ : AEStronglyMeasurable φ μ) (hp0_lt : 0 < p) (hpq : p < q)
- (hpqr : 1 / p = 1 / q + 1 / r) : snorm' (φ • f) p μ ≤ snorm' φ q μ * snorm' f r μ :=
- by
- simp_rw [snorm', Pi.smul_apply', nnnorm_smul, ENNReal.coe_mul]
- exact ENNReal.lintegral_Lp_mul_le_Lq_mul_Lr hp0_lt hpq hpqr μ hφ.ennnorm hf.ennnorm
-#align measure_theory.snorm'_smul_le_mul_snorm' MeasureTheory.snorm'_smul_le_mul_snorm'
-
-theorem snorm_smul_le_snorm_top_mul_snorm (p : ℝ≥0∞) {f : α → E} (hf : AEStronglyMeasurable f μ)
- (φ : α → 𝕜) : snorm (φ • f) p μ ≤ snorm φ ∞ μ * snorm f p μ :=
- by
- by_cases hp_top : p = ∞
- · simp_rw [hp_top, snorm_exponent_top, snorm_ess_sup, Pi.smul_apply', nnnorm_smul,
- ENNReal.coe_mul]
- exact ENNReal.essSup_mul_le _ _
- by_cases hp_zero : p = 0
- · simp only [hp_zero, snorm_exponent_zero, MulZeroClass.mul_zero, le_zero_iff]
- simp_rw [snorm_eq_lintegral_rpow_nnnorm hp_zero hp_top, snorm_exponent_top, snorm_ess_sup]
- calc
- (∫⁻ x, ↑‖(φ • f) x‖₊ ^ p.to_real ∂μ) ^ (1 / p.to_real) =
- (∫⁻ x, ↑‖φ x‖₊ ^ p.to_real * ↑‖f x‖₊ ^ p.to_real ∂μ) ^ (1 / p.to_real) :=
- by
- congr
- ext1 x
- rw [Pi.smul_apply', nnnorm_smul, ENNReal.coe_mul,
- ENNReal.mul_rpow_of_nonneg _ _ ENNReal.toReal_nonneg]
- _ ≤
- (∫⁻ x, essSup (fun x => ↑‖φ x‖₊) μ ^ p.to_real * ↑‖f x‖₊ ^ p.to_real ∂μ) ^
- (1 / p.to_real) :=
- by
- refine' ENNReal.rpow_le_rpow _ _
- swap;
- · rw [one_div_nonneg]
- exact ENNReal.toReal_nonneg
- refine' lintegral_mono_ae _
- filter_upwards [@ENNReal.ae_le_essSup _ _ μ fun x => ↑‖φ x‖₊]with x hx
- exact mul_le_mul_right' (ENNReal.rpow_le_rpow hx ENNReal.toReal_nonneg) _
- _ = essSup (fun x => ↑‖φ x‖₊) μ * (∫⁻ x, ↑‖f x‖₊ ^ p.to_real ∂μ) ^ (1 / p.to_real) :=
- by
- rw [lintegral_const_mul'']
- swap; · exact hf.nnnorm.ae_measurable.coe_nnreal_ennreal.pow aemeasurable_const
- rw [ENNReal.mul_rpow_of_nonneg]
- swap;
- · rw [one_div_nonneg]
- exact ENNReal.toReal_nonneg
- rw [← ENNReal.rpow_mul, one_div, mul_inv_cancel, ENNReal.rpow_one]
- rw [Ne.def, ENNReal.toReal_eq_zero_iff, Auto.not_or_eq]
- exact ⟨hp_zero, hp_top⟩
-
-#align measure_theory.snorm_smul_le_snorm_top_mul_snorm MeasureTheory.snorm_smul_le_snorm_top_mul_snorm
-
-theorem snorm_smul_le_snorm_mul_snorm_top (p : ℝ≥0∞) (f : α → E) {φ : α → 𝕜}
- (hφ : AEStronglyMeasurable φ μ) : snorm (φ • f) p μ ≤ snorm φ p μ * snorm f ∞ μ :=
- by
- rw [← snorm_norm]
- simp_rw [Pi.smul_apply', norm_smul]
- have : (fun x => ‖φ x‖ * ‖f x‖) = (fun x => ‖f x‖) • fun x => ‖φ x‖ :=
- by
- rw [smul_eq_mul, mul_comm]
- rfl
- rw [this]
- have h := snorm_smul_le_snorm_top_mul_snorm p hφ.norm fun x => ‖f x‖
- refine' h.trans_eq _
- simp_rw [snorm_norm]
- rw [mul_comm]
-#align measure_theory.snorm_smul_le_snorm_mul_snorm_top MeasureTheory.snorm_smul_le_snorm_mul_snorm_top
-
-/-- Hölder's inequality, as an inequality on the `ℒp` seminorm of a scalar product `φ • f`. -/
-theorem snorm_smul_le_mul_snorm {p q r : ℝ≥0∞} {f : α → E} (hf : AEStronglyMeasurable f μ)
- {φ : α → 𝕜} (hφ : AEStronglyMeasurable φ μ) (hpqr : 1 / p = 1 / q + 1 / r) :
- snorm (φ • f) p μ ≤ snorm φ q μ * snorm f r μ :=
- by
- by_cases hp_zero : p = 0
- · simp [hp_zero]
- have hq_ne_zero : q ≠ 0 := by
- intro hq_zero
- simp only [hq_zero, hp_zero, one_div, ENNReal.inv_zero, top_add, ENNReal.inv_eq_top] at hpqr
- exact hpqr
- have hr_ne_zero : r ≠ 0 := by
- intro hr_zero
- simp only [hr_zero, hp_zero, one_div, ENNReal.inv_zero, add_top, ENNReal.inv_eq_top] at hpqr
- exact hpqr
- by_cases hq_top : q = ∞
- · have hpr : p = r := by
- simpa only [hq_top, one_div, ENNReal.div_top, zero_add, inv_inj] using hpqr
- rw [← hpr, hq_top]
- exact snorm_smul_le_snorm_top_mul_snorm p hf φ
- by_cases hr_top : r = ∞
- · have hpq : p = q := by
- simpa only [hr_top, one_div, ENNReal.div_top, add_zero, inv_inj] using hpqr
- rw [← hpq, hr_top]
- exact snorm_smul_le_snorm_mul_snorm_top p f hφ
- have hpq : p < q :=
- by
- suffices 1 / q < 1 / p by rwa [one_div, one_div, ENNReal.inv_lt_inv] at this
- rw [hpqr]
- refine' ENNReal.lt_add_right _ _
- · simp only [hq_ne_zero, one_div, Ne.def, ENNReal.inv_eq_top, not_false_iff]
- · simp only [hr_top, one_div, Ne.def, ENNReal.inv_eq_zero, not_false_iff]
- rw [snorm_eq_snorm' hp_zero (hpq.trans_le le_top).Ne, snorm_eq_snorm' hq_ne_zero hq_top,
- snorm_eq_snorm' hr_ne_zero hr_top]
- refine' snorm'_smul_le_mul_snorm' hf hφ _ _ _
- · exact ENNReal.toReal_pos hp_zero (hpq.trans_le le_top).Ne
- · exact ENNReal.toReal_strict_mono hq_top hpq
- rw [← ENNReal.one_toReal, ← ENNReal.toReal_div, ← ENNReal.toReal_div, ← ENNReal.toReal_div, hpqr,
- ENNReal.toReal_add]
- · simp only [hq_ne_zero, one_div, Ne.def, ENNReal.inv_eq_top, not_false_iff]
- · simp only [hr_ne_zero, one_div, Ne.def, ENNReal.inv_eq_top, not_false_iff]
-#align measure_theory.snorm_smul_le_mul_snorm MeasureTheory.snorm_smul_le_mul_snorm
-
-theorem Memℒp.smul {p q r : ℝ≥0∞} {f : α → E} {φ : α → 𝕜} (hf : Memℒp f r μ) (hφ : Memℒp φ q μ)
- (hpqr : 1 / p = 1 / q + 1 / r) : Memℒp (φ • f) p μ :=
- ⟨hφ.1.smul hf.1,
- (snorm_smul_le_mul_snorm hf.1 hφ.1 hpqr).trans_lt
- (ENNReal.mul_lt_top hφ.snorm_ne_top hf.snorm_ne_top)⟩
-#align measure_theory.mem_ℒp.smul MeasureTheory.Memℒp.smul
-
-theorem Memℒp.smul_of_top_right {p : ℝ≥0∞} {f : α → E} {φ : α → 𝕜} (hf : Memℒp f p μ)
- (hφ : Memℒp φ ∞ μ) : Memℒp (φ • f) p μ :=
- by
- apply hf.smul hφ
- simp only [ENNReal.div_top, zero_add]
-#align measure_theory.mem_ℒp.smul_of_top_right MeasureTheory.Memℒp.smul_of_top_right
-
-theorem Memℒp.smul_of_top_left {p : ℝ≥0∞} {f : α → E} {φ : α → 𝕜} (hf : Memℒp f ∞ μ)
- (hφ : Memℒp φ p μ) : Memℒp (φ • f) p μ :=
- by
- apply hf.smul hφ
- simp only [ENNReal.div_top, add_zero]
-#align measure_theory.mem_ℒp.smul_of_top_left MeasureTheory.Memℒp.smul_of_top_left
-
-end NormedSpace
-
-section Monotonicity
-
-theorem snorm_le_nNReal_smul_snorm_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ≥0}
- (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) (p : ℝ≥0∞) : snorm f p μ ≤ c • snorm g p μ :=
- by
- rw [← snorm_norm g, ← c.nnnorm_eq, ENNReal.smul_def, smul_eq_mul, ← snorm_const_smul (c : ℝ)]
- swap; infer_instance
- refine' snorm_mono_nnnorm_ae (h.mono fun x hx => hx.trans_eq _)
- rw [Pi.smul_apply, smul_eq_mul, nnnorm_mul, NNReal.nnnorm_eq, nnnorm_norm]
-#align measure_theory.snorm_le_nnreal_smul_snorm_of_ae_le_mul MeasureTheory.snorm_le_nNReal_smul_snorm_of_ae_le_mul
-
--- TODO: add the whole family of lemmas?
-private theorem le_mul_iff_eq_zero_of_nonneg_of_neg_of_nonneg {α} [LinearOrderedSemiring α]
- {a b c : α} (ha : 0 ≤ a) (hb : b < 0) (hc : 0 ≤ c) : a ≤ b * c ↔ a = 0 ∧ c = 0 :=
- by
- constructor
- · intro h
- exact
- ⟨(h.trans (mul_nonpos_of_nonpos_of_nonneg hb.le hc)).antisymm ha,
- (nonpos_of_mul_nonneg_right (ha.trans h) hb).antisymm hc⟩
- · rintro ⟨rfl, rfl⟩
- rw [MulZeroClass.mul_zero]
-#align measure_theory.le_mul_iff_eq_zero_of_nonneg_of_neg_of_nonneg measure_theory.le_mul_iff_eq_zero_of_nonneg_of_neg_of_nonneg
-
-/-- When `c` is negative, `‖f x‖ ≤ c * ‖g x‖` is nonsense and forces both `f` and `g` to have an
-`snorm` of `0`. -/
-theorem snorm_eq_zero_and_zero_of_ae_le_mul_neg {f : α → F} {g : α → G} {c : ℝ}
- (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) (hc : c < 0) (p : ℝ≥0∞) : snorm f p μ = 0 ∧ snorm g p μ = 0 :=
- by
- simp_rw [le_mul_iff_eq_zero_of_nonneg_of_neg_of_nonneg (norm_nonneg _) hc (norm_nonneg _),
- norm_eq_zero, eventually_and] at h
- change f =ᵐ[μ] 0 ∧ g =ᵐ[μ] 0 at h
- simp [snorm_congr_ae h.1, snorm_congr_ae h.2]
-#align measure_theory.snorm_eq_zero_and_zero_of_ae_le_mul_neg MeasureTheory.snorm_eq_zero_and_zero_of_ae_le_mul_neg
-
-theorem snorm_le_mul_snorm_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ}
- (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) (p : ℝ≥0∞) : snorm f p μ ≤ ENNReal.ofReal c * snorm g p μ :=
- snorm_le_nNReal_smul_snorm_of_ae_le_mul
- (h.mono fun x hx => hx.trans <| mul_le_mul_of_nonneg_right c.le_coe_toNNReal (norm_nonneg _)) _
-#align measure_theory.snorm_le_mul_snorm_of_ae_le_mul MeasureTheory.snorm_le_mul_snorm_of_ae_le_mul
-
-theorem Memℒp.of_nnnorm_le_mul {f : α → E} {g : α → F} {c : ℝ≥0} (hg : Memℒp g p μ)
- (hf : AEStronglyMeasurable f μ) (hfg : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) : Memℒp f p μ :=
- ⟨hf,
- (snorm_le_nNReal_smul_snorm_of_ae_le_mul hfg p).trans_lt <|
- ENNReal.mul_lt_top ENNReal.coe_ne_top hg.snorm_ne_top⟩
-#align measure_theory.mem_ℒp.of_nnnorm_le_mul MeasureTheory.Memℒp.of_nnnorm_le_mul
-
-theorem Memℒp.of_le_mul {f : α → E} {g : α → F} {c : ℝ} (hg : Memℒp g p μ)
- (hf : AEStronglyMeasurable f μ) (hfg : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : Memℒp f p μ :=
- ⟨hf,
- (snorm_le_mul_snorm_of_ae_le_mul hfg p).trans_lt <|
- ENNReal.mul_lt_top ENNReal.ofReal_ne_top hg.snorm_ne_top⟩
-#align measure_theory.mem_ℒp.of_le_mul MeasureTheory.Memℒp.of_le_mul
-
-end Monotonicity
-
-theorem snorm_indicator_ge_of_bdd_below (hp : p ≠ 0) (hp' : p ≠ ∞) {f : α → F} (C : ℝ≥0) {s : Set α}
- (hs : MeasurableSet s) (hf : ∀ᵐ x ∂μ, x ∈ s → C ≤ ‖s.indicator f x‖₊) :
- C • μ s ^ (1 / p.toReal) ≤ snorm (s.indicator f) p μ :=
- by
- rw [ENNReal.smul_def, smul_eq_mul, snorm_eq_lintegral_rpow_nnnorm hp hp',
- ENNReal.le_rpow_one_div_iff (ENNReal.toReal_pos hp hp'),
- ENNReal.mul_rpow_of_nonneg _ _ ENNReal.toReal_nonneg, ← ENNReal.rpow_mul,
- one_div_mul_cancel (ENNReal.toReal_pos hp hp').Ne.symm, ENNReal.rpow_one, ← set_lintegral_const,
- ← lintegral_indicator _ hs]
- refine' lintegral_mono_ae _
- filter_upwards [hf]with x hx
- rw [nnnorm_indicator_eq_indicator_nnnorm]
- by_cases hxs : x ∈ s
- · simp only [Set.indicator_of_mem hxs] at hx⊢
- exact ENNReal.rpow_le_rpow (ENNReal.coe_le_coe.2 (hx hxs)) ENNReal.toReal_nonneg
- · simp [Set.indicator_of_not_mem hxs]
-#align measure_theory.snorm_indicator_ge_of_bdd_below MeasureTheory.snorm_indicator_ge_of_bdd_below
-
-section IsROrC
-
-variable {𝕜 : Type _} [IsROrC 𝕜] {f : α → 𝕜}
-
-theorem Memℒp.re (hf : Memℒp f p μ) : Memℒp (fun x => IsROrC.re (f x)) p μ :=
- by
- have : ∀ x, ‖IsROrC.re (f x)‖ ≤ 1 * ‖f x‖ := by
- intro x
- rw [one_mul]
- exact IsROrC.norm_re_le_norm (f x)
- refine' hf.of_le_mul _ (eventually_of_forall this)
- exact is_R_or_C.continuous_re.comp_ae_strongly_measurable hf.1
-#align measure_theory.mem_ℒp.re MeasureTheory.Memℒp.re
-
-theorem Memℒp.im (hf : Memℒp f p μ) : Memℒp (fun x => IsROrC.im (f x)) p μ :=
- by
- have : ∀ x, ‖IsROrC.im (f x)‖ ≤ 1 * ‖f x‖ := by
- intro x
- rw [one_mul]
- exact IsROrC.norm_im_le_norm (f x)
- refine' hf.of_le_mul _ (eventually_of_forall this)
- exact is_R_or_C.continuous_im.comp_ae_strongly_measurable hf.1
-#align measure_theory.mem_ℒp.im MeasureTheory.Memℒp.im
-
-end IsROrC
-
-section Liminf
-
-variable [MeasurableSpace E] [OpensMeasurableSpace E] {R : ℝ≥0}
-
-theorem ae_bdd_liminf_atTop_rpow_of_snorm_bdd {p : ℝ≥0∞} {f : ℕ → α → E}
- (hfmeas : ∀ n, Measurable (f n)) (hbdd : ∀ n, snorm (f n) p μ ≤ R) :
- ∀ᵐ x ∂μ, liminf (fun n => (‖f n x‖₊ ^ p.toReal : ℝ≥0∞)) atTop < ∞ :=
- by
- by_cases hp0 : p.to_real = 0
- · simp only [hp0, ENNReal.rpow_zero]
- refine' eventually_of_forall fun x => _
- rw [liminf_const (1 : ℝ≥0∞)]
- exacts[ENNReal.one_lt_top, at_top_ne_bot]
- have hp : p ≠ 0 := fun h => by simpa [h] using hp0
- have hp' : p ≠ ∞ := fun h => by simpa [h] using hp0
- refine'
- ae_lt_top (measurable_liminf fun n => (hfmeas n).nnnorm.coe_nnreal_ennreal.pow_const p.to_real)
- (lt_of_le_of_lt
- (lintegral_liminf_le fun n => (hfmeas n).nnnorm.coe_nnreal_ennreal.pow_const p.to_real)
- (lt_of_le_of_lt _
- (ENNReal.rpow_lt_top_of_nonneg ENNReal.toReal_nonneg ENNReal.coe_ne_top :
- ↑R ^ p.to_real < ∞))).Ne
- simp_rw [snorm_eq_lintegral_rpow_nnnorm hp hp'] at hbdd
- simp_rw [liminf_eq, eventually_at_top]
- exact
- sSup_le fun b ⟨a, ha⟩ =>
- (ha a le_rfl).trans ((ENNReal.rpow_one_div_le_iff (ENNReal.toReal_pos hp hp')).1 (hbdd _))
-#align measure_theory.ae_bdd_liminf_at_top_rpow_of_snorm_bdd MeasureTheory.ae_bdd_liminf_atTop_rpow_of_snorm_bdd
-
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic filter.is_bounded_default -/
-theorem ae_bdd_liminf_atTop_of_snorm_bdd {p : ℝ≥0∞} (hp : p ≠ 0) {f : ℕ → α → E}
- (hfmeas : ∀ n, Measurable (f n)) (hbdd : ∀ n, snorm (f n) p μ ≤ R) :
- ∀ᵐ x ∂μ, liminf (fun n => (‖f n x‖₊ : ℝ≥0∞)) atTop < ∞ :=
- by
- by_cases hp' : p = ∞
- · subst hp'
- simp_rw [snorm_exponent_top] at hbdd
- have : ∀ n, ∀ᵐ x ∂μ, (‖f n x‖₊ : ℝ≥0∞) < R + 1 := fun n =>
- ae_lt_of_essSup_lt
- (lt_of_le_of_lt (hbdd n) <| ENNReal.lt_add_right ENNReal.coe_ne_top one_ne_zero)
- rw [← ae_all_iff] at this
- filter_upwards [this]with x hx using lt_of_le_of_lt
- (liminf_le_of_frequently_le' <| frequently_of_forall fun n => (hx n).le)
- (ENNReal.add_lt_top.2 ⟨ENNReal.coe_lt_top, ENNReal.one_lt_top⟩)
- filter_upwards [ae_bdd_liminf_at_top_rpow_of_snorm_bdd hfmeas hbdd]with x hx
- have hppos : 0 < p.to_real := ENNReal.toReal_pos hp hp'
- have :
- liminf (fun n => (‖f n x‖₊ ^ p.to_real : ℝ≥0∞)) at_top =
- liminf (fun n => (‖f n x‖₊ : ℝ≥0∞)) at_top ^ p.to_real :=
- by
- change
- liminf (fun n => ENNReal.orderIsoRpow p.to_real hppos (‖f n x‖₊ : ℝ≥0∞)) at_top =
- ENNReal.orderIsoRpow p.to_real hppos (liminf (fun n => (‖f n x‖₊ : ℝ≥0∞)) at_top)
- refine' (OrderIso.liminf_apply (ENNReal.orderIsoRpow p.to_real _) _ _ _ _).symm <;>
- run_tac
- is_bounded_default
- rw [this] at hx
- rw [← ENNReal.rpow_one (liminf (fun n => ‖f n x‖₊) at_top), ← mul_inv_cancel hppos.ne.symm,
- ENNReal.rpow_mul]
- exact ENNReal.rpow_lt_top_of_nonneg (inv_nonneg.2 hppos.le) hx.ne
-#align measure_theory.ae_bdd_liminf_at_top_of_snorm_bdd MeasureTheory.ae_bdd_liminf_atTop_of_snorm_bdd
-
-end Liminf
-
-end ℒp
-
/-!
### Lp space
@@ -2091,14 +466,19 @@ example [Fact (1 ≤ p)] : PseudoEMetricSpace.toHasEdist = (lp.hasEdist : EDist
example [Fact (1 ≤ p)] : SeminormedAddGroup.toNNNorm = (lp.hasNnnorm : NNNorm (lp E p μ)) :=
rfl
-section NormedSpace
+section BoundedSMul
-variable {𝕜 : Type _} [NormedField 𝕜] [NormedSpace 𝕜 E]
+variable {𝕜 𝕜' : Type _}
+
+variable [NormedRing 𝕜] [NormedRing 𝕜'] [Module 𝕜 E] [Module 𝕜' E]
+
+variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜' E]
theorem mem_lp_const_smul (c : 𝕜) (f : lp E p μ) : c • ↑f ∈ lp E p μ :=
by
- rw [mem_Lp_iff_snorm_lt_top, snorm_congr_ae (ae_eq_fun.coe_fn_smul _ _), snorm_const_smul,
- ENNReal.mul_lt_top_iff]
+ rw [mem_Lp_iff_snorm_lt_top, snorm_congr_ae (ae_eq_fun.coe_fn_smul _ _)]
+ refine' (snorm_const_smul_le _ _).trans_lt _
+ rw [ENNReal.smul_def, smul_eq_mul, ENNReal.mul_lt_top_iff]
exact Or.inl ⟨ENNReal.coe_lt_top, f.prop⟩
#align measure_theory.Lp.mem_Lp_const_smul MeasureTheory.lp.mem_lp_const_smul
@@ -2123,13 +503,31 @@ theorem coeFn_smul (c : 𝕜) (f : lp E p μ) : ⇑(c • f) =ᵐ[μ] c • f :=
AEEqFun.coeFn_smul _ _
#align measure_theory.Lp.coe_fn_smul MeasureTheory.lp.coeFn_smul
-theorem norm_const_smul (c : 𝕜) (f : lp E p μ) : ‖c • f‖ = ‖c‖ * ‖f‖ := by
- rw [norm_def, snorm_congr_ae (coe_fn_smul _ _), snorm_const_smul c, ENNReal.toReal_mul,
- ENNReal.coe_toReal, coe_nnnorm, norm_def]
-#align measure_theory.Lp.norm_const_smul MeasureTheory.lp.norm_const_smul
+instance [Module 𝕜ᵐᵒᵖ E] [BoundedSMul 𝕜ᵐᵒᵖ E] [IsCentralScalar 𝕜 E] : IsCentralScalar 𝕜 (lp E p μ)
+ where op_smul_eq_smul k f := Subtype.ext <| op_smul_eq_smul k (f : α →ₘ[μ] E)
+
+instance [SMulCommClass 𝕜 𝕜' E] : SMulCommClass 𝕜 𝕜' (lp E p μ)
+ where smul_comm k k' f := Subtype.ext <| smul_comm k k' (f : α →ₘ[μ] E)
+
+instance [SMul 𝕜 𝕜'] [IsScalarTower 𝕜 𝕜' E] : IsScalarTower 𝕜 𝕜' (lp E p μ)
+ where smul_assoc k k' f := Subtype.ext <| smul_assoc k k' (f : α →ₘ[μ] E)
-instance [Fact (1 ≤ p)] : NormedSpace 𝕜 (lp E p μ)
- where norm_smul_le _ _ := by simp [norm_const_smul]
+instance [Fact (1 ≤ p)] : BoundedSMul 𝕜 (lp E p μ) :=
+ -- TODO: add `has_bounded_smul.of_nnnorm_smul_le
+ BoundedSMul.of_norm_smul_le
+ fun r f => by
+ suffices (‖r • f‖₊ : ℝ≥0∞) ≤ ‖r‖₊ * ‖f‖₊ by exact_mod_cast this
+ rw [nnnorm_def, nnnorm_def, ENNReal.coe_toNNReal (Lp.snorm_ne_top _),
+ snorm_congr_ae (coe_fn_smul _ _), ENNReal.coe_toNNReal (Lp.snorm_ne_top _)]
+ exact snorm_const_smul_le r f
+
+end BoundedSMul
+
+section NormedSpace
+
+variable {𝕜 : Type _} [NormedField 𝕜] [NormedSpace 𝕜 E]
+
+instance [Fact (1 ≤ p)] : NormedSpace 𝕜 (lp E p μ) where norm_smul_le _ _ := norm_smul_le _ _
end NormedSpace
@@ -2137,7 +535,7 @@ end Lp
namespace Memℒp
-variable {𝕜 : Type _} [NormedField 𝕜] [NormedSpace 𝕜 E]
+variable {𝕜 : Type _} [NormedRing 𝕜] [Module 𝕜 E] [BoundedSMul 𝕜 E]
theorem toLp_const_smul {f : α → E} (c : 𝕜) (hf : Memℒp f p μ) :
(hf.const_smul c).toLp (c • f) = c • hf.toLp f :=
@@ -2484,12 +882,11 @@ variable {g : E → F} {c : ℝ≥0}
theorem LipschitzWith.comp_memℒp {α E F} {K} [MeasurableSpace α] {μ : Measure α}
[NormedAddCommGroup E] [NormedAddCommGroup F] {f : α → E} {g : E → F} (hg : LipschitzWith K g)
(g0 : g 0 = 0) (hL : Memℒp f p μ) : Memℒp (g ∘ f) p μ :=
- haveI : ∀ᵐ x ∂μ, ‖g (f x)‖ ≤ K * ‖f x‖ :=
- by
- apply Filter.eventually_of_forall fun x => _
- rw [← dist_zero_right, ← dist_zero_right, ← g0]
- apply hg.dist_le_mul
- hL.of_le_mul (hg.continuous.comp_ae_strongly_measurable hL.1) this
+ haveI : ∀ x, ‖g (f x)‖ ≤ K * ‖f x‖ := by
+ intro a
+ -- TODO: add `lipschitz_with.nnnorm_sub_le` and `lipschitz_with.nnnorm_le`
+ simpa [g0] using hg.norm_sub_le (f a) 0
+ hL.of_le_mul (hg.continuous.comp_ae_strongly_measurable hL.1) (eventually_of_forall this)
#align lipschitz_with.comp_mem_ℒp LipschitzWith.comp_memℒp
theorem MeasureTheory.Memℒp.of_comp_antilipschitzWith {α E F} {K'} [MeasurableSpace α]
@@ -2497,14 +894,14 @@ theorem MeasureTheory.Memℒp.of_comp_antilipschitzWith {α E F} {K'} [Measurabl
(hL : Memℒp (g ∘ f) p μ) (hg : UniformContinuous g) (hg' : AntilipschitzWith K' g)
(g0 : g 0 = 0) : Memℒp f p μ :=
by
- have A : ∀ᵐ x ∂μ, ‖f x‖ ≤ K' * ‖g (f x)‖ :=
- by
- apply Filter.eventually_of_forall fun x => _
+ have A : ∀ x, ‖f x‖ ≤ K' * ‖g (f x)‖ := by
+ intro x
+ -- TODO: add `antilipschitz_with.le_mul_nnnorm_sub` and `antilipschitz_with.le_mul_norm`
rw [← dist_zero_right, ← dist_zero_right, ← g0]
apply hg'.le_mul_dist
have B : ae_strongly_measurable f μ :=
(hg'.uniform_embedding hg).Embedding.aestronglyMeasurable_comp_iff.1 hL.1
- exact hL.of_le_mul B A
+ exact hL.of_le_mul B (Filter.eventually_of_forall A)
#align measure_theory.mem_ℒp.of_comp_antilipschitz_with MeasureTheory.Memℒp.of_comp_antilipschitzWith
namespace LipschitzWith
@@ -2627,8 +1024,8 @@ theorem add_compLp (L L' : E →L[𝕜] F) (f : lp E p μ) :
rfl
#align continuous_linear_map.add_comp_Lp ContinuousLinearMap.add_compLp
-theorem smul_compLp {𝕜'} [NormedField 𝕜'] [NormedSpace 𝕜' F] [SMulCommClass 𝕜 𝕜' F] (c : 𝕜')
- (L : E →L[𝕜] F) (f : lp E p μ) : (c • L).compLp f = c • L.compLp f :=
+theorem smul_compLp {𝕜'} [NormedRing 𝕜'] [Module 𝕜' F] [BoundedSMul 𝕜' F] [SMulCommClass 𝕜 𝕜' F]
+ (c : 𝕜') (L : E →L[𝕜] F) (f : lp E p μ) : (c • L).compLp f = c • L.compLp f :=
by
ext1
refine' (coe_fn_comp_Lp' (c • L) f).trans _
@@ -2689,20 +1086,13 @@ theorem add_compLpL [Fact (1 ≤ p)] (L L' : E →L[𝕜] F) :
exact add_comp_Lp L L' f
#align continuous_linear_map.add_comp_LpL ContinuousLinearMap.add_compLpL
-theorem smul_compLpL [Fact (1 ≤ p)] (c : 𝕜) (L : E →L[𝕜] F) :
- (c • L).compLpL p μ = c • L.compLpL p μ :=
+theorem smul_compLpL [Fact (1 ≤ p)] {𝕜'} [NormedRing 𝕜'] [Module 𝕜' F] [BoundedSMul 𝕜' F]
+ [SMulCommClass 𝕜 𝕜' F] (c : 𝕜') (L : E →L[𝕜] F) : (c • L).compLpL p μ = c • L.compLpL p μ :=
by
ext1 f
exact smul_comp_Lp c L f
#align continuous_linear_map.smul_comp_LpL ContinuousLinearMap.smul_compLpL
-/-- TODO: written in an "apply" way because of a missing `has_smul` instance. -/
-theorem smul_compLpL_apply [Fact (1 ≤ p)] {𝕜'} [NormedField 𝕜'] [NormedSpace 𝕜' F]
- [SMulCommClass 𝕜 𝕜' F] (c : 𝕜') (L : E →L[𝕜] F) (f : lp E p μ) :
- (c • L).compLpL p μ f = c • L.compLpL p μ f :=
- smul_compLp c L f
-#align continuous_linear_map.smul_comp_LpL_apply ContinuousLinearMap.smul_compLpL_apply
-
theorem norm_compLpL_le [Fact (1 ≤ p)] (L : E →L[𝕜] F) : ‖L.compLpL p μ‖ ≤ ‖L‖ :=
LinearMap.mkContinuous_norm_le _ (norm_nonneg _) _
#align continuous_linear_map.norm_compLpL_le ContinuousLinearMap.norm_compLpL_le
@@ -2998,7 +1388,6 @@ private theorem snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm' {f : ℕ → α →
simp_rw [← Pi.sub_apply, snorm'_norm]
refine' (Finset.sum_le_sum _).trans (sum_le_tsum _ (fun m _ => zero_le _) ENNReal.summable)
exact fun m _ => (h_cau m (m + 1) m (Nat.le_succ m) (le_refl m)).le
-#align measure_theory.Lp.snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm' measure_theory.Lp.snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm'
private theorem lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum {f : ℕ → α → E}
(hf : ∀ n, AEStronglyMeasurable (f n) μ) {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (n : ℕ)
@@ -3025,7 +1414,6 @@ private theorem lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum {f : ℕ → α
∑' i, B i at
hn
rwa [h_nnnorm_nonneg] at hn
-#align measure_theory.Lp.lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum measure_theory.Lp.lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum
/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic filter.is_bounded_default -/
private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E}
@@ -3065,7 +1453,6 @@ private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E
((hf (i + 1)).sub (hf i)).ennnorm).pow_const
_
· exact liminf_le_of_frequently_le' (frequently_of_forall h)
-#align measure_theory.Lp.lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum measure_theory.Lp.lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum
private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, AEStronglyMeasurable (f n) μ)
{p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
@@ -3085,7 +1472,6 @@ private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, AE
refine' rpow_ae_lt_top.mono fun x hx => _
rwa [← ENNReal.lt_rpow_one_div_iff hp_pos,
ENNReal.top_rpow_of_pos (by simp [hp_pos] : 0 < 1 / p)] at hx
-#align measure_theory.Lp.tsum_nnnorm_sub_ae_lt_top measure_theory.Lp.tsum_nnnorm_sub_ae_lt_top
theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p : ℝ}
(hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
mathlib commit https://github.com/leanprover-community/mathlib/commit/e1a18cad9cd462973d760af7de36b05776b8811c
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit 8f9fea08977f7e450770933ee6abb20733b47c92
+! leanprover-community/mathlib commit 6480bedf0354aaba0016eeefd726f7e3e5fc50aa
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -396,40 +396,52 @@ theorem memℒp_const_iff {p : ℝ≥0∞} {c : E} (hp_ne_zero : p ≠ 0) (hp_ne
end Const
-theorem snorm'_mono_ae {f : α → F} {g : α → G} (hq : 0 ≤ q) (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
+theorem snorm'_mono_nnnorm_ae {f : α → F} {g : α → G} (hq : 0 ≤ q) (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ ‖g x‖₊) :
snorm' f q μ ≤ snorm' g q μ := by
rw [snorm']
refine' ENNReal.rpow_le_rpow _ (one_div_nonneg.2 hq)
refine' lintegral_mono_ae (h.mono fun x hx => _)
exact ENNReal.rpow_le_rpow (ENNReal.coe_le_coe.2 hx) hq
+#align measure_theory.snorm'_mono_nnnorm_ae MeasureTheory.snorm'_mono_nnnorm_ae
+
+theorem snorm'_mono_ae {f : α → F} {g : α → G} (hq : 0 ≤ q) (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
+ snorm' f q μ ≤ snorm' g q μ :=
+ snorm'_mono_nnnorm_ae hq h
#align measure_theory.snorm'_mono_ae MeasureTheory.snorm'_mono_ae
-theorem snorm'_congr_norm_ae {f g : α → F} (hfg : ∀ᵐ x ∂μ, ‖f x‖ = ‖g x‖) :
+theorem snorm'_congr_nnnorm_ae {f g : α → F} (hfg : ∀ᵐ x ∂μ, ‖f x‖₊ = ‖g x‖₊) :
snorm' f q μ = snorm' g q μ :=
by
have : (fun x => (‖f x‖₊ ^ q : ℝ≥0∞)) =ᵐ[μ] fun x => ‖g x‖₊ ^ q :=
- hfg.mono fun x hx => by
- simp only [← coe_nnnorm, NNReal.coe_eq] at hx
- simp [hx]
+ hfg.mono fun x hx => by simp_rw [hx]
simp only [snorm', lintegral_congr_ae this]
+#align measure_theory.snorm'_congr_nnnorm_ae MeasureTheory.snorm'_congr_nnnorm_ae
+
+theorem snorm'_congr_norm_ae {f g : α → F} (hfg : ∀ᵐ x ∂μ, ‖f x‖ = ‖g x‖) :
+ snorm' f q μ = snorm' g q μ :=
+ snorm'_congr_nnnorm_ae <| hfg.mono fun x hx => NNReal.eq hx
#align measure_theory.snorm'_congr_norm_ae MeasureTheory.snorm'_congr_norm_ae
theorem snorm'_congr_ae {f g : α → F} (hfg : f =ᵐ[μ] g) : snorm' f q μ = snorm' g q μ :=
- snorm'_congr_norm_ae (hfg.fun_comp _)
+ snorm'_congr_nnnorm_ae (hfg.fun_comp _)
#align measure_theory.snorm'_congr_ae MeasureTheory.snorm'_congr_ae
theorem snormEssSup_congr_ae {f g : α → F} (hfg : f =ᵐ[μ] g) : snormEssSup f μ = snormEssSup g μ :=
essSup_congr_ae (hfg.fun_comp (coe ∘ nnnorm))
#align measure_theory.snorm_ess_sup_congr_ae MeasureTheory.snormEssSup_congr_ae
-theorem snorm_mono_ae {f : α → F} {g : α → G} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
+theorem snorm_mono_nnnorm_ae {f : α → F} {g : α → G} (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ ‖g x‖₊) :
snorm f p μ ≤ snorm g p μ := by
simp only [snorm]
split_ifs
· exact le_rfl
- · refine' essSup_mono_ae (h.mono fun x hx => _)
- exact_mod_cast hx
- · exact snorm'_mono_ae ENNReal.toReal_nonneg h
+ · exact essSup_mono_ae (h.mono fun x hx => ennreal.coe_le_coe.mpr hx)
+ · exact snorm'_mono_nnnorm_ae ENNReal.toReal_nonneg h
+#align measure_theory.snorm_mono_nnnorm_ae MeasureTheory.snorm_mono_nnnorm_ae
+
+theorem snorm_mono_ae {f : α → F} {g : α → G} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
+ snorm f p μ ≤ snorm g p μ :=
+ snorm_mono_nnnorm_ae h
#align measure_theory.snorm_mono_ae MeasureTheory.snorm_mono_ae
theorem snorm_mono_ae_real {f : α → F} {g : α → ℝ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ g x) :
@@ -437,8 +449,13 @@ theorem snorm_mono_ae_real {f : α → F} {g : α → ℝ} (h : ∀ᵐ x ∂μ,
snorm_mono_ae <| h.mono fun x hx => hx.trans ((le_abs_self _).trans (Real.norm_eq_abs _).symm.le)
#align measure_theory.snorm_mono_ae_real MeasureTheory.snorm_mono_ae_real
+theorem snorm_mono_nnnorm {f : α → F} {g : α → G} (h : ∀ x, ‖f x‖₊ ≤ ‖g x‖₊) :
+ snorm f p μ ≤ snorm g p μ :=
+ snorm_mono_nnnorm_ae (eventually_of_forall fun x => h x)
+#align measure_theory.snorm_mono_nnnorm MeasureTheory.snorm_mono_nnnorm
+
theorem snorm_mono {f : α → F} {g : α → G} (h : ∀ x, ‖f x‖ ≤ ‖g x‖) : snorm f p μ ≤ snorm g p μ :=
- snorm_mono_ae (eventually_of_forall fun x => h x)
+ snorm_mono_nnnorm h
#align measure_theory.snorm_mono MeasureTheory.snorm_mono
theorem snorm_mono_real {f : α → F} {g : α → ℝ} (h : ∀ x, ‖f x‖ ≤ g x) :
@@ -446,37 +463,55 @@ theorem snorm_mono_real {f : α → F} {g : α → ℝ} (h : ∀ x, ‖f x‖
snorm_mono_ae_real (eventually_of_forall fun x => h x)
#align measure_theory.snorm_mono_real MeasureTheory.snorm_mono_real
+theorem snormEssSup_le_of_ae_nnnorm_bound {f : α → F} {C : ℝ≥0} (hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) :
+ snormEssSup f μ ≤ C :=
+ essSup_le_of_ae_le C <| hfC.mono fun x hx => ENNReal.coe_le_coe.mpr hx
+#align measure_theory.snorm_ess_sup_le_of_ae_nnnorm_bound MeasureTheory.snormEssSup_le_of_ae_nnnorm_bound
+
theorem snormEssSup_le_of_ae_bound {f : α → F} {C : ℝ} (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
snormEssSup f μ ≤ ENNReal.ofReal C :=
- by
- simp_rw [snorm_ess_sup, ← ofReal_norm_eq_coe_nnnorm]
- refine' essSup_le_of_ae_le (ENNReal.ofReal C) (hfC.mono fun x hx => _)
- exact ENNReal.ofReal_le_ofReal hx
+ snormEssSup_le_of_ae_nnnorm_bound <| hfC.mono fun x hx => hx.trans C.le_coe_toNNReal
#align measure_theory.snorm_ess_sup_le_of_ae_bound MeasureTheory.snormEssSup_le_of_ae_bound
+theorem snormEssSup_lt_top_of_ae_nnnorm_bound {f : α → F} {C : ℝ≥0} (hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) :
+ snormEssSup f μ < ∞ :=
+ (snormEssSup_le_of_ae_nnnorm_bound hfC).trans_lt ENNReal.coe_lt_top
+#align measure_theory.snorm_ess_sup_lt_top_of_ae_nnnorm_bound MeasureTheory.snormEssSup_lt_top_of_ae_nnnorm_bound
+
theorem snormEssSup_lt_top_of_ae_bound {f : α → F} {C : ℝ} (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
snormEssSup f μ < ∞ :=
(snormEssSup_le_of_ae_bound hfC).trans_lt ENNReal.ofReal_lt_top
#align measure_theory.snorm_ess_sup_lt_top_of_ae_bound MeasureTheory.snormEssSup_lt_top_of_ae_bound
-theorem snorm_le_of_ae_bound {f : α → F} {C : ℝ} (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
- snorm f p μ ≤ μ Set.univ ^ p.toReal⁻¹ * ENNReal.ofReal C :=
+theorem snorm_le_of_ae_nnnorm_bound {f : α → F} {C : ℝ≥0} (hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) :
+ snorm f p μ ≤ C • μ Set.univ ^ p.toReal⁻¹ :=
by
by_cases hμ : μ = 0
· simp [hμ]
haveI : μ.ae.ne_bot := ae_ne_bot.mpr hμ
by_cases hp : p = 0
· simp [hp]
- have hC : 0 ≤ C := le_trans (norm_nonneg _) hfC.exists.some_spec
- have hC' : ‖C‖ = C := by rw [Real.norm_eq_abs, abs_eq_self.mpr hC]
- have : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖(fun _ => C) x‖ := hfC.mono fun x hx => hx.trans (le_of_eq hC'.symm)
- convert snorm_mono_ae this
- rw [snorm_const _ hp hμ, mul_comm, ← ofReal_norm_eq_coe_nnnorm, hC', one_div]
+ have : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ ‖(C : ℝ)‖₊ := hfC.mono fun x hx => hx.trans_eq C.nnnorm_eq.symm
+ refine' (snorm_mono_ae this).trans_eq _
+ rw [snorm_const _ hp hμ, C.nnnorm_eq, one_div, ENNReal.smul_def, smul_eq_mul]
+#align measure_theory.snorm_le_of_ae_nnnorm_bound MeasureTheory.snorm_le_of_ae_nnnorm_bound
+
+theorem snorm_le_of_ae_bound {f : α → F} {C : ℝ} (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
+ snorm f p μ ≤ μ Set.univ ^ p.toReal⁻¹ * ENNReal.ofReal C :=
+ by
+ rw [← mul_comm]
+ exact snorm_le_of_ae_nnnorm_bound (hfC.mono fun x hx => hx.trans C.le_coe_to_nnreal)
#align measure_theory.snorm_le_of_ae_bound MeasureTheory.snorm_le_of_ae_bound
+theorem snorm_congr_nnnorm_ae {f : α → F} {g : α → G} (hfg : ∀ᵐ x ∂μ, ‖f x‖₊ = ‖g x‖₊) :
+ snorm f p μ = snorm g p μ :=
+ le_antisymm (snorm_mono_nnnorm_ae <| EventuallyEq.le hfg)
+ (snorm_mono_nnnorm_ae <| (EventuallyEq.symm hfg).le)
+#align measure_theory.snorm_congr_nnnorm_ae MeasureTheory.snorm_congr_nnnorm_ae
+
theorem snorm_congr_norm_ae {f : α → F} {g : α → G} (hfg : ∀ᵐ x ∂μ, ‖f x‖ = ‖g x‖) :
snorm f p μ = snorm g p μ :=
- le_antisymm (snorm_mono_ae <| EventuallyEq.le hfg) (snorm_mono_ae <| (EventuallyEq.symm hfg).le)
+ snorm_congr_nnnorm_ae <| hfg.mono fun x hx => NNReal.eq hx
#align measure_theory.snorm_congr_norm_ae MeasureTheory.snorm_congr_norm_ae
@[simp]
@@ -1500,40 +1535,56 @@ end NormedSpace
section Monotonicity
-theorem snorm_le_mul_snorm_aux_of_nonneg {f : α → F} {g : α → G} {c : ℝ}
- (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) (hc : 0 ≤ c) (p : ℝ≥0∞) :
- snorm f p μ ≤ ENNReal.ofReal c * snorm g p μ :=
+theorem snorm_le_nNReal_smul_snorm_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ≥0}
+ (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) (p : ℝ≥0∞) : snorm f p μ ≤ c • snorm g p μ :=
by
- lift c to ℝ≥0 using hc
- rw [ENNReal.ofReal_coe_nnreal, ← c.nnnorm_eq, ← snorm_norm g, ← snorm_const_smul (c : ℝ)]
+ rw [← snorm_norm g, ← c.nnnorm_eq, ENNReal.smul_def, smul_eq_mul, ← snorm_const_smul (c : ℝ)]
swap; infer_instance
- refine' snorm_mono_ae _
- simpa
-#align measure_theory.snorm_le_mul_snorm_aux_of_nonneg MeasureTheory.snorm_le_mul_snorm_aux_of_nonneg
+ refine' snorm_mono_nnnorm_ae (h.mono fun x hx => hx.trans_eq _)
+ rw [Pi.smul_apply, smul_eq_mul, nnnorm_mul, NNReal.nnnorm_eq, nnnorm_norm]
+#align measure_theory.snorm_le_nnreal_smul_snorm_of_ae_le_mul MeasureTheory.snorm_le_nNReal_smul_snorm_of_ae_le_mul
-theorem snorm_le_mul_snorm_aux_of_neg {f : α → F} {g : α → G} {c : ℝ}
+-- TODO: add the whole family of lemmas?
+private theorem le_mul_iff_eq_zero_of_nonneg_of_neg_of_nonneg {α} [LinearOrderedSemiring α]
+ {a b c : α} (ha : 0 ≤ a) (hb : b < 0) (hc : 0 ≤ c) : a ≤ b * c ↔ a = 0 ∧ c = 0 :=
+ by
+ constructor
+ · intro h
+ exact
+ ⟨(h.trans (mul_nonpos_of_nonpos_of_nonneg hb.le hc)).antisymm ha,
+ (nonpos_of_mul_nonneg_right (ha.trans h) hb).antisymm hc⟩
+ · rintro ⟨rfl, rfl⟩
+ rw [MulZeroClass.mul_zero]
+#align measure_theory.le_mul_iff_eq_zero_of_nonneg_of_neg_of_nonneg measure_theory.le_mul_iff_eq_zero_of_nonneg_of_neg_of_nonneg
+
+/-- When `c` is negative, `‖f x‖ ≤ c * ‖g x‖` is nonsense and forces both `f` and `g` to have an
+`snorm` of `0`. -/
+theorem snorm_eq_zero_and_zero_of_ae_le_mul_neg {f : α → F} {g : α → G} {c : ℝ}
(h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) (hc : c < 0) (p : ℝ≥0∞) : snorm f p μ = 0 ∧ snorm g p μ = 0 :=
by
- suffices f =ᵐ[μ] 0 ∧ g =ᵐ[μ] 0 by simp [snorm_congr_ae this.1, snorm_congr_ae this.2]
- refine' ⟨h.mono fun x hx => _, h.mono fun x hx => _⟩
- · refine' norm_le_zero_iff.1 (hx.trans _)
- exact mul_nonpos_of_nonpos_of_nonneg hc.le (norm_nonneg _)
- · refine' norm_le_zero_iff.1 (nonpos_of_mul_nonneg_right _ hc)
- exact (norm_nonneg _).trans hx
-#align measure_theory.snorm_le_mul_snorm_aux_of_neg MeasureTheory.snorm_le_mul_snorm_aux_of_neg
+ simp_rw [le_mul_iff_eq_zero_of_nonneg_of_neg_of_nonneg (norm_nonneg _) hc (norm_nonneg _),
+ norm_eq_zero, eventually_and] at h
+ change f =ᵐ[μ] 0 ∧ g =ᵐ[μ] 0 at h
+ simp [snorm_congr_ae h.1, snorm_congr_ae h.2]
+#align measure_theory.snorm_eq_zero_and_zero_of_ae_le_mul_neg MeasureTheory.snorm_eq_zero_and_zero_of_ae_le_mul_neg
theorem snorm_le_mul_snorm_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ}
(h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) (p : ℝ≥0∞) : snorm f p μ ≤ ENNReal.ofReal c * snorm g p μ :=
- by
- cases' le_or_lt 0 c with hc hc
- · exact snorm_le_mul_snorm_aux_of_nonneg h hc p
- · simp [snorm_le_mul_snorm_aux_of_neg h hc p]
+ snorm_le_nNReal_smul_snorm_of_ae_le_mul
+ (h.mono fun x hx => hx.trans <| mul_le_mul_of_nonneg_right c.le_coe_toNNReal (norm_nonneg _)) _
#align measure_theory.snorm_le_mul_snorm_of_ae_le_mul MeasureTheory.snorm_le_mul_snorm_of_ae_le_mul
+theorem Memℒp.of_nnnorm_le_mul {f : α → E} {g : α → F} {c : ℝ≥0} (hg : Memℒp g p μ)
+ (hf : AEStronglyMeasurable f μ) (hfg : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) : Memℒp f p μ :=
+ ⟨hf,
+ (snorm_le_nNReal_smul_snorm_of_ae_le_mul hfg p).trans_lt <|
+ ENNReal.mul_lt_top ENNReal.coe_ne_top hg.snorm_ne_top⟩
+#align measure_theory.mem_ℒp.of_nnnorm_le_mul MeasureTheory.Memℒp.of_nnnorm_le_mul
+
theorem Memℒp.of_le_mul {f : α → E} {g : α → F} {c : ℝ} (hg : Memℒp g p μ)
(hf : AEStronglyMeasurable f μ) (hfg : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : Memℒp f p μ :=
⟨hf,
- lt_of_le_of_lt (snorm_le_mul_snorm_of_ae_le_mul hfg p) <|
+ (snorm_le_mul_snorm_of_ae_le_mul hfg p).trans_lt <|
ENNReal.mul_lt_top ENNReal.ofReal_ne_top hg.snorm_ne_top⟩
#align measure_theory.mem_ℒp.of_le_mul MeasureTheory.Memℒp.of_le_mul
@@ -1823,6 +1874,10 @@ theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [Fi
instance : Norm (lp E p μ) where norm f := ENNReal.toReal (snorm f p μ)
+-- note: we need this to be defeq to the instance from `seminormed_add_group.to_has_nnnorm`, so
+-- can't use `ennreal.to_nnreal (snorm f p μ)`
+instance : NNNorm (lp E p μ) where nnnorm f := ⟨‖f‖, ENNReal.toReal_nonneg⟩
+
instance : Dist (lp E p μ) where dist f g := ‖f - g‖
instance : EDist (lp E p μ) where edist f g := snorm (f - g) p μ
@@ -1831,11 +1886,26 @@ theorem norm_def (f : lp E p μ) : ‖f‖ = ENNReal.toReal (snorm f p μ) :=
rfl
#align measure_theory.Lp.norm_def MeasureTheory.lp.norm_def
+theorem nnnorm_def (f : lp E p μ) : ‖f‖₊ = ENNReal.toNNReal (snorm f p μ) :=
+ Subtype.eta _ _
+#align measure_theory.Lp.nnnorm_def MeasureTheory.lp.nnnorm_def
+
+@[simp, norm_cast]
+protected theorem coe_nnnorm (f : lp E p μ) : (‖f‖₊ : ℝ) = ‖f‖ :=
+ rfl
+#align measure_theory.Lp.coe_nnnorm MeasureTheory.lp.coe_nnnorm
+
@[simp]
theorem norm_toLp (f : α → E) (hf : Memℒp f p μ) : ‖hf.toLp f‖ = ENNReal.toReal (snorm f p μ) := by
rw [norm_def, snorm_congr_ae (mem_ℒp.coe_fn_to_Lp hf)]
#align measure_theory.Lp.norm_to_Lp MeasureTheory.lp.norm_toLp
+@[simp]
+theorem nnnorm_toLp (f : α → E) (hf : Memℒp f p μ) :
+ ‖hf.toLp f‖₊ = ENNReal.toNNReal (snorm f p μ) :=
+ NNReal.eq <| norm_toLp f hf
+#align measure_theory.Lp.nnnorm_to_Lp MeasureTheory.lp.nnnorm_toLp
+
theorem dist_def (f g : lp E p μ) : dist f g = (snorm (f - g) p μ).toReal :=
by
simp_rw [dist, norm_def]
@@ -1863,20 +1933,30 @@ theorem edist_toLp_zero (f : α → E) (hf : Memℒp f p μ) : edist (hf.toLp f)
#align measure_theory.Lp.edist_to_Lp_zero MeasureTheory.lp.edist_toLp_zero
@[simp]
-theorem norm_zero : ‖(0 : lp E p μ)‖ = 0 :=
+theorem nnnorm_zero : ‖(0 : lp E p μ)‖₊ = 0 :=
by
- change (snorm (⇑(0 : α →ₘ[μ] E)) p μ).toReal = 0
+ rw [nnnorm_def]
+ change (snorm (⇑(0 : α →ₘ[μ] E)) p μ).toNNReal = 0
simp [snorm_congr_ae ae_eq_fun.coe_fn_zero, snorm_zero]
+#align measure_theory.Lp.nnnorm_zero MeasureTheory.lp.nnnorm_zero
+
+@[simp]
+theorem norm_zero : ‖(0 : lp E p μ)‖ = 0 :=
+ congr_arg coe nnnorm_zero
#align measure_theory.Lp.norm_zero MeasureTheory.lp.norm_zero
-theorem norm_eq_zero_iff {f : lp E p μ} (hp : 0 < p) : ‖f‖ = 0 ↔ f = 0 :=
+theorem nnnorm_eq_zero_iff {f : lp E p μ} (hp : 0 < p) : ‖f‖₊ = 0 ↔ f = 0 :=
by
refine' ⟨fun hf => _, fun hf => by simp [hf]⟩
- rw [norm_def, ENNReal.toReal_eq_zero_iff] at hf
+ rw [nnnorm_def, ENNReal.toNNReal_eq_zero_iff] at hf
cases hf
· rw [snorm_eq_zero_iff (Lp.ae_strongly_measurable f) hp.ne.symm] at hf
exact Subtype.eq (ae_eq_fun.ext (hf.trans ae_eq_fun.coe_fn_zero.symm))
· exact absurd hf (snorm_ne_top f)
+#align measure_theory.Lp.nnnorm_eq_zero_iff MeasureTheory.lp.nnnorm_eq_zero_iff
+
+theorem norm_eq_zero_iff {f : lp E p μ} (hp : 0 < p) : ‖f‖ = 0 ↔ f = 0 :=
+ Iff.symm <| (nnnorm_eq_zero_iff hp).symm.trans <| (NNReal.coe_eq_zero _).symm
#align measure_theory.Lp.norm_eq_zero_iff MeasureTheory.lp.norm_eq_zero_iff
theorem eq_zero_iff_ae_eq_zero {f : lp E p μ} : f = 0 ↔ f =ᵐ[μ] 0 :=
@@ -1893,20 +1973,34 @@ theorem eq_zero_iff_ae_eq_zero {f : lp E p μ} : f = 0 ↔ f =ᵐ[μ] 0 :=
#align measure_theory.Lp.eq_zero_iff_ae_eq_zero MeasureTheory.lp.eq_zero_iff_ae_eq_zero
@[simp]
-theorem norm_neg {f : lp E p μ} : ‖-f‖ = ‖f‖ := by
- rw [norm_def, norm_def, snorm_congr_ae (coe_fn_neg _), snorm_neg]
+theorem nnnorm_neg (f : lp E p μ) : ‖-f‖₊ = ‖f‖₊ := by
+ rw [nnnorm_def, nnnorm_def, snorm_congr_ae (coe_fn_neg _), snorm_neg]
+#align measure_theory.Lp.nnnorm_neg MeasureTheory.lp.nnnorm_neg
+
+@[simp]
+theorem norm_neg (f : lp E p μ) : ‖-f‖ = ‖f‖ :=
+ (congr_arg (coe : ℝ≥0 → ℝ) (nnnorm_neg f) : _)
#align measure_theory.Lp.norm_neg MeasureTheory.lp.norm_neg
+theorem nnnorm_le_mul_nnnorm_of_ae_le_mul {c : ℝ≥0} {f : lp E p μ} {g : lp F p μ}
+ (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) : ‖f‖₊ ≤ c * ‖g‖₊ :=
+ by
+ simp only [nnnorm_def]
+ have := snorm_le_nnreal_smul_snorm_of_ae_le_mul h p
+ rwa [← ENNReal.toNNReal_le_toNNReal, ENNReal.smul_def, smul_eq_mul, ENNReal.toNNReal_mul,
+ ENNReal.toNNReal_coe] at this
+ · exact (Lp.mem_ℒp _).snorm_ne_top
+ · exact ENNReal.mul_ne_top ENNReal.coe_ne_top (Lp.mem_ℒp _).snorm_ne_top
+#align measure_theory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul MeasureTheory.lp.nnnorm_le_mul_nnnorm_of_ae_le_mul
+
theorem norm_le_mul_norm_of_ae_le_mul {c : ℝ} {f : lp E p μ} {g : lp F p μ}
(h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : ‖f‖ ≤ c * ‖g‖ :=
by
- simp only [norm_def]
cases' le_or_lt 0 c with hc hc
- · have := snorm_le_mul_snorm_of_ae_le_mul h p
- rwa [← ENNReal.toReal_le_toReal, ENNReal.toReal_mul, ENNReal.toReal_ofReal hc] at this
- · exact (Lp.mem_ℒp _).snorm_ne_top
- · exact ENNReal.mul_ne_top ENNReal.ofReal_ne_top (Lp.mem_ℒp _).snorm_ne_top
- · have := snorm_le_mul_snorm_aux_of_neg h hc p
+ · lift c to ℝ≥0 using hc
+ exact nnreal.coe_le_coe.mpr (nnnorm_le_mul_nnnorm_of_ae_le_mul h)
+ · simp only [norm_def]
+ have := snorm_eq_zero_and_zero_of_ae_le_mul_neg h hc p
simp [this]
#align measure_theory.Lp.norm_le_mul_norm_of_ae_le_mul MeasureTheory.lp.norm_le_mul_norm_of_ae_le_mul
@@ -1917,35 +2011,55 @@ theorem norm_le_norm_of_ae_le {f : lp E p μ} {g : lp F p μ} (h : ∀ᵐ x ∂
exact snorm_mono_ae h
#align measure_theory.Lp.norm_le_norm_of_ae_le MeasureTheory.lp.norm_le_norm_of_ae_le
+theorem mem_lp_of_nnnorm_ae_le_mul {c : ℝ≥0} {f : α →ₘ[μ] E} {g : lp F p μ}
+ (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) : f ∈ lp E p μ :=
+ mem_lp_iff_memℒp.2 <| Memℒp.of_nnnorm_le_mul (lp.memℒp g) f.AEStronglyMeasurable h
+#align measure_theory.Lp.mem_Lp_of_nnnorm_ae_le_mul MeasureTheory.lp.mem_lp_of_nnnorm_ae_le_mul
+
theorem mem_lp_of_ae_le_mul {c : ℝ} {f : α →ₘ[μ] E} {g : lp F p μ}
(h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : f ∈ lp E p μ :=
mem_lp_iff_memℒp.2 <| Memℒp.of_le_mul (lp.memℒp g) f.AEStronglyMeasurable h
#align measure_theory.Lp.mem_Lp_of_ae_le_mul MeasureTheory.lp.mem_lp_of_ae_le_mul
-theorem mem_lp_of_ae_le {f : α →ₘ[μ] E} {g : lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
+theorem mem_lp_of_nnnorm_ae_le {f : α →ₘ[μ] E} {g : lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ ‖g x‖₊) :
f ∈ lp E p μ :=
mem_lp_iff_memℒp.2 <| Memℒp.of_le (lp.memℒp g) f.AEStronglyMeasurable h
+#align measure_theory.Lp.mem_Lp_of_nnnorm_ae_le MeasureTheory.lp.mem_lp_of_nnnorm_ae_le
+
+theorem mem_lp_of_ae_le {f : α →ₘ[μ] E} {g : lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
+ f ∈ lp E p μ :=
+ mem_lp_of_nnnorm_ae_le h
#align measure_theory.Lp.mem_Lp_of_ae_le MeasureTheory.lp.mem_lp_of_ae_le
+theorem mem_lp_of_ae_nnnorm_bound [FiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ≥0)
+ (hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) : f ∈ lp E p μ :=
+ mem_lp_iff_memℒp.2 <| Memℒp.of_bound f.AEStronglyMeasurable _ hfC
+#align measure_theory.Lp.mem_Lp_of_ae_nnnorm_bound MeasureTheory.lp.mem_lp_of_ae_nnnorm_bound
+
theorem mem_lp_of_ae_bound [FiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ) (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
f ∈ lp E p μ :=
mem_lp_iff_memℒp.2 <| Memℒp.of_bound f.AEStronglyMeasurable _ hfC
#align measure_theory.Lp.mem_Lp_of_ae_bound MeasureTheory.lp.mem_lp_of_ae_bound
-theorem norm_le_of_ae_bound [FiniteMeasure μ] {f : lp E p μ} {C : ℝ} (hC : 0 ≤ C)
- (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : ‖f‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ * C :=
+theorem nnnorm_le_of_ae_bound [FiniteMeasure μ] {f : lp E p μ} {C : ℝ≥0}
+ (hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) : ‖f‖₊ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ * C :=
by
by_cases hμ : μ = 0
· by_cases hp : p.to_real⁻¹ = 0
- · simpa [hp, hμ, norm_def] using hC
- · simp [hμ, norm_def, Real.zero_rpow hp]
- let A : ℝ≥0 := measure_univ_nnreal μ ^ p.to_real⁻¹ * ⟨C, hC⟩
- suffices snorm f p μ ≤ A by exact ENNReal.toReal_le_coe_of_le_coe this
- convert snorm_le_of_ae_bound hfC
+ · simp [hp, hμ, nnnorm_def]
+ · simp [hμ, nnnorm_def, Real.zero_rpow hp]
+ rw [← ENNReal.coe_le_coe, nnnorm_def, ENNReal.coe_toNNReal (snorm_ne_top _)]
+ refine' (snorm_le_of_ae_nnnorm_bound hfC).trans_eq _
rw [← coe_measure_univ_nnreal μ, ENNReal.coe_rpow_of_ne_zero (measure_univ_nnreal_pos hμ).ne',
- ENNReal.coe_mul]
- congr
- rw [max_eq_left hC]
+ ENNReal.coe_mul, mul_comm, ENNReal.smul_def, smul_eq_mul]
+#align measure_theory.Lp.nnnorm_le_of_ae_bound MeasureTheory.lp.nnnorm_le_of_ae_bound
+
+theorem norm_le_of_ae_bound [FiniteMeasure μ] {f : lp E p μ} {C : ℝ} (hC : 0 ≤ C)
+ (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : ‖f‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ * C :=
+ by
+ lift C to ℝ≥0 using hC
+ have := nnnorm_le_of_ae_bound hfC
+ rwa [← NNReal.coe_le_coe, NNReal.coe_mul, NNReal.coe_rpow] at this
#align measure_theory.Lp.norm_le_of_ae_bound MeasureTheory.lp.norm_le_of_ae_bound
instance [hp : Fact (1 ≤ p)] : NormedAddCommGroup (lp E p μ) :=
@@ -1974,6 +2088,9 @@ instance [hp : Fact (1 ≤ p)] : NormedAddCommGroup (lp E p μ) :=
example [Fact (1 ≤ p)] : PseudoEMetricSpace.toHasEdist = (lp.hasEdist : EDist (lp E p μ)) :=
rfl
+example [Fact (1 ≤ p)] : SeminormedAddGroup.toNNNorm = (lp.hasNnnorm : NNNorm (lp E p μ)) :=
+ rfl
+
section NormedSpace
variable {𝕜 : Type _} [NormedField 𝕜] [NormedSpace 𝕜 E]
@@ -3172,17 +3289,25 @@ theorem mem_lp (f : α →ᵇ E) : f.toContinuousMap.toAEEqFun μ ∈ lp E p μ
convert f.norm_coe_le_norm x
#align bounded_continuous_function.mem_Lp BoundedContinuousFunction.mem_lp
+/-- The `Lp`-norm of a bounded continuous function is at most a constant (depending on the measure
+of the whole space) times its sup-norm. -/
+theorem lp_nnnorm_le (f : α →ᵇ E) :
+ ‖(⟨f.toContinuousMap.toAEEqFun μ, mem_lp f⟩ : lp E p μ)‖₊ ≤
+ measureUnivNNReal μ ^ p.toReal⁻¹ * ‖f‖₊ :=
+ by
+ apply Lp.nnnorm_le_of_ae_bound
+ refine' (f.to_continuous_map.coe_fn_to_ae_eq_fun μ).mono _
+ intro x hx
+ rw [← NNReal.coe_le_coe, coe_nnnorm, coe_nnnorm]
+ convert f.norm_coe_le_norm x
+#align bounded_continuous_function.Lp_nnnorm_le BoundedContinuousFunction.lp_nnnorm_le
+
/-- The `Lp`-norm of a bounded continuous function is at most a constant (depending on the measure
of the whole space) times its sup-norm. -/
theorem lp_norm_le (f : α →ᵇ E) :
‖(⟨f.toContinuousMap.toAEEqFun μ, mem_lp f⟩ : lp E p μ)‖ ≤
measureUnivNNReal μ ^ p.toReal⁻¹ * ‖f‖ :=
- by
- apply Lp.norm_le_of_ae_bound (norm_nonneg f)
- · refine' (f.to_continuous_map.coe_fn_to_ae_eq_fun μ).mono _
- intro x hx
- convert f.norm_coe_le_norm x
- · infer_instance
+ lp_nnnorm_le f
#align bounded_continuous_function.Lp_norm_le BoundedContinuousFunction.lp_norm_le
variable (p μ)
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -1657,15 +1657,15 @@ The space of equivalence classes of measurable functions for which `snorm f p μ
@[simp]
-theorem snorm_aeEqFun {α E : Type _} [MeasurableSpace α] {μ : Measure α} [NormedAddCommGroup E]
+theorem snorm_aEEqFun {α E : Type _} [MeasurableSpace α] {μ : Measure α} [NormedAddCommGroup E]
{p : ℝ≥0∞} {f : α → E} (hf : AEStronglyMeasurable f μ) :
- snorm (AeEqFun.mk f hf) p μ = snorm f p μ :=
- snorm_congr_ae (AeEqFun.coeFn_mk _ _)
-#align measure_theory.snorm_ae_eq_fun MeasureTheory.snorm_aeEqFun
+ snorm (AEEqFun.mk f hf) p μ = snorm f p μ :=
+ snorm_congr_ae (AEEqFun.coeFn_mk _ _)
+#align measure_theory.snorm_ae_eq_fun MeasureTheory.snorm_aEEqFun
theorem Memℒp.snorm_mk_lt_top {α E : Type _} [MeasurableSpace α] {μ : Measure α}
[NormedAddCommGroup E] {p : ℝ≥0∞} {f : α → E} (hfp : Memℒp f p μ) :
- snorm (AeEqFun.mk f hfp.1) p μ < ∞ := by simp [hfp.2]
+ snorm (AEEqFun.mk f hfp.1) p μ < ∞ := by simp [hfp.2]
#align measure_theory.mem_ℒp.snorm_mk_lt_top MeasureTheory.Memℒp.snorm_mk_lt_top
/-- Lp space -/
@@ -1690,11 +1690,11 @@ namespace Memℒp
/-- make an element of Lp from a function verifying `mem_ℒp` -/
def toLp (f : α → E) (h_mem_ℒp : Memℒp f p μ) : lp E p μ :=
- ⟨AeEqFun.mk f h_mem_ℒp.1, h_mem_ℒp.snorm_mk_lt_top⟩
+ ⟨AEEqFun.mk f h_mem_ℒp.1, h_mem_ℒp.snorm_mk_lt_top⟩
#align measure_theory.mem_ℒp.to_Lp MeasureTheory.Memℒp.toLp
theorem coeFn_toLp {f : α → E} (hf : Memℒp f p μ) : hf.toLp f =ᵐ[μ] f :=
- AeEqFun.coeFn_mk _ _
+ AEEqFun.coeFn_mk _ _
#align measure_theory.mem_ℒp.coe_fn_to_Lp MeasureTheory.Memℒp.coeFn_toLp
theorem toLp_congr {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) (hfg : f =ᵐ[μ] g) :
@@ -1799,25 +1799,25 @@ protected theorem memℒp (f : lp E p μ) : Memℒp f p μ :=
variable (E p μ)
theorem coeFn_zero : ⇑(0 : lp E p μ) =ᵐ[μ] 0 :=
- AeEqFun.coeFn_zero
+ AEEqFun.coeFn_zero
#align measure_theory.Lp.coe_fn_zero MeasureTheory.lp.coeFn_zero
variable {E p μ}
theorem coeFn_neg (f : lp E p μ) : ⇑(-f) =ᵐ[μ] -f :=
- AeEqFun.coeFn_neg _
+ AEEqFun.coeFn_neg _
#align measure_theory.Lp.coe_fn_neg MeasureTheory.lp.coeFn_neg
theorem coeFn_add (f g : lp E p μ) : ⇑(f + g) =ᵐ[μ] f + g :=
- AeEqFun.coeFn_add _ _
+ AEEqFun.coeFn_add _ _
#align measure_theory.Lp.coe_fn_add MeasureTheory.lp.coeFn_add
theorem coeFn_sub (f g : lp E p μ) : ⇑(f - g) =ᵐ[μ] f - g :=
- AeEqFun.coeFn_sub _ _
+ AEEqFun.coeFn_sub _ _
#align measure_theory.Lp.coe_fn_sub MeasureTheory.lp.coeFn_sub
theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [FiniteMeasure μ] :
- @AeEqFun.const α _ _ μ _ c ∈ lp E p μ :=
+ @AEEqFun.const α _ _ μ _ c ∈ lp E p μ :=
(memℒp_const c).snorm_mk_lt_top
#align measure_theory.Lp.mem_Lp_const MeasureTheory.lp.mem_lp_const
@@ -2003,7 +2003,7 @@ instance : Module 𝕜 (lp E p μ) :=
{ (lpSubmodule E p μ 𝕜).Module with }
theorem coeFn_smul (c : 𝕜) (f : lp E p μ) : ⇑(c • f) =ᵐ[μ] c • f :=
- AeEqFun.coeFn_smul _ _
+ AEEqFun.coeFn_smul _ _
#align measure_theory.Lp.coe_fn_smul MeasureTheory.lp.coeFn_smul
theorem norm_const_smul (c : 𝕜) (f : lp E p μ) : ‖c • f‖ = ‖c‖ * ‖f‖ := by
@@ -2401,7 +2401,7 @@ theorem memℒp_comp_iff_of_antilipschitz {α E F} {K K'} [MeasurableSpace α] {
/-- When `g` is a Lipschitz function sending `0` to `0` and `f` is in `Lp`, then `g ∘ f` is well
defined as an element of `Lp`. -/
def compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : lp E p μ) : lp F p μ :=
- ⟨AeEqFun.comp g hg.Continuous (f : α →ₘ[μ] E),
+ ⟨AEEqFun.comp g hg.Continuous (f : α →ₘ[μ] E),
by
suffices ∀ᵐ x ∂μ, ‖ae_eq_fun.comp g hg.continuous (f : α →ₘ[μ] E) x‖ ≤ c * ‖f x‖ by
exact Lp.mem_Lp_of_ae_le_mul this
@@ -2413,7 +2413,7 @@ def compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : lp E p μ) : lp F p μ :
theorem coeFn_compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : lp E p μ) :
hg.compLp g0 f =ᵐ[μ] g ∘ f :=
- AeEqFun.coeFn_comp _ _ _
+ AEEqFun.coeFn_comp _ _ _
#align lipschitz_with.coe_fn_comp_Lp LipschitzWith.coeFn_compLp
@[simp]
@@ -2646,7 +2646,7 @@ theorem coe_posPart (f : lp ℝ p μ) : (posPart f : α →ₘ[μ] ℝ) = (f :
#align measure_theory.Lp.coe_pos_part MeasureTheory.lp.coe_posPart
theorem coeFn_posPart (f : lp ℝ p μ) : ⇑(posPart f) =ᵐ[μ] fun a => max (f a) 0 :=
- AeEqFun.coeFn_posPart _
+ AEEqFun.coeFn_posPart _
#align measure_theory.Lp.coe_fn_pos_part MeasureTheory.lp.coeFn_posPart
theorem coeFn_negPart_eq_max (f : lp ℝ p μ) : ∀ᵐ a ∂μ, negPart f a = max (-f a) 0 :=
@@ -3147,7 +3147,7 @@ variable (E p μ)
bounded continuous representative. -/
def MeasureTheory.lp.boundedContinuousFunction : AddSubgroup (lp E p μ) :=
AddSubgroup.addSubgroupOf
- ((ContinuousMap.toAeEqFunAddHom μ).comp (toContinuousMapAddHom α E)).range (lp E p μ)
+ ((ContinuousMap.toAEEqFunAddHom μ).comp (toContinuousMapAddHom α E)).range (lp E p μ)
#align measure_theory.Lp.bounded_continuous_function MeasureTheory.lp.boundedContinuousFunction
variable {E p μ}
@@ -3156,7 +3156,7 @@ variable {E p μ}
`Lp E p μ` which contain a bounded continuous representative. -/
theorem MeasureTheory.lp.mem_boundedContinuousFunction_iff {f : lp E p μ} :
f ∈ MeasureTheory.lp.boundedContinuousFunction E p μ ↔
- ∃ f₀ : α →ᵇ E, f₀.toContinuousMap.toAeEqFun μ = (f : α →ₘ[μ] E) :=
+ ∃ f₀ : α →ᵇ E, f₀.toContinuousMap.toAEEqFun μ = (f : α →ₘ[μ] E) :=
AddSubgroup.mem_addSubgroupOf
#align measure_theory.Lp.mem_bounded_continuous_function_iff MeasureTheory.lp.mem_boundedContinuousFunction_iff
@@ -3165,7 +3165,7 @@ namespace BoundedContinuousFunction
variable [FiniteMeasure μ]
/-- A bounded continuous function on a finite-measure space is in `Lp`. -/
-theorem mem_lp (f : α →ᵇ E) : f.toContinuousMap.toAeEqFun μ ∈ lp E p μ :=
+theorem mem_lp (f : α →ᵇ E) : f.toContinuousMap.toAEEqFun μ ∈ lp E p μ :=
by
refine' Lp.mem_Lp_of_ae_bound ‖f‖ _
filter_upwards [f.to_continuous_map.coe_fn_to_ae_eq_fun μ]with x _
@@ -3175,7 +3175,7 @@ theorem mem_lp (f : α →ᵇ E) : f.toContinuousMap.toAeEqFun μ ∈ lp E p μ
/-- The `Lp`-norm of a bounded continuous function is at most a constant (depending on the measure
of the whole space) times its sup-norm. -/
theorem lp_norm_le (f : α →ᵇ E) :
- ‖(⟨f.toContinuousMap.toAeEqFun μ, mem_lp f⟩ : lp E p μ)‖ ≤
+ ‖(⟨f.toContinuousMap.toAEEqFun μ, mem_lp f⟩ : lp E p μ)‖ ≤
measureUnivNNReal μ ^ p.toReal⁻¹ * ‖f‖ :=
by
apply Lp.norm_le_of_ae_bound (norm_nonneg f)
@@ -3191,7 +3191,7 @@ variable (p μ)
space as an element of `Lp`. -/
def toLpHom [Fact (1 ≤ p)] : NormedAddGroupHom (α →ᵇ E) (lp E p μ) :=
{
- AddMonoidHom.codRestrict ((ContinuousMap.toAeEqFunAddHom μ).comp (toContinuousMapAddHom α E))
+ AddMonoidHom.codRestrict ((ContinuousMap.toAEEqFunAddHom μ).comp (toContinuousMapAddHom α E))
(lp E p μ) mem_lp with
bound' := ⟨_, lp_norm_le⟩ }
#align bounded_continuous_function.to_Lp_hom BoundedContinuousFunction.toLpHom
@@ -3202,7 +3202,7 @@ theorem range_toLpHom [Fact (1 ≤ p)] :
by
symm
convert AddMonoidHom.addSubgroupOf_range_eq_of_le
- ((ContinuousMap.toAeEqFunAddHom μ).comp (to_continuous_map_add_hom α E))
+ ((ContinuousMap.toAEEqFunAddHom μ).comp (to_continuous_map_add_hom α E))
(by
rintro - ⟨f, rfl⟩
exact mem_Lp f : _ ≤ Lp E p μ)
@@ -3215,12 +3215,12 @@ as an element of `Lp`. -/
def toLp [NormedField 𝕜] [NormedSpace 𝕜 E] : (α →ᵇ E) →L[𝕜] lp E p μ :=
LinearMap.mkContinuous
(LinearMap.codRestrict (lp.lpSubmodule E p μ 𝕜)
- ((ContinuousMap.toAeEqFunLinearMap μ).comp (toContinuousMapLinearMap α E 𝕜)) mem_lp)
+ ((ContinuousMap.toAEEqFunLinearMap μ).comp (toContinuousMapLinearMap α E 𝕜)) mem_lp)
_ lp_norm_le
#align bounded_continuous_function.to_Lp BoundedContinuousFunction.toLp
theorem coeFn_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : α →ᵇ E) : toLp p μ 𝕜 f =ᵐ[μ] f :=
- AeEqFun.coeFn_mk f _
+ AEEqFun.coeFn_mk f _
#align bounded_continuous_function.coe_fn_to_Lp BoundedContinuousFunction.coeFn_toLp
variable {𝕜}
@@ -3284,7 +3284,7 @@ theorem range_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] :
variable {p}
theorem coeFn_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) : toLp p μ 𝕜 f =ᵐ[μ] f :=
- AeEqFun.coeFn_mk f _
+ AEEqFun.coeFn_mk f _
#align continuous_map.coe_fn_to_Lp ContinuousMap.coeFn_toLp
theorem toLp_def [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) :
@@ -3300,7 +3300,7 @@ theorem toLp_comp_toContinuousMap [NormedField 𝕜] [NormedSpace 𝕜 E] (f :
@[simp]
theorem coe_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) :
- (toLp p μ 𝕜 f : α →ₘ[μ] E) = f.toAeEqFun μ :=
+ (toLp p μ 𝕜 f : α →ₘ[μ] E) = f.toAEEqFun μ :=
rfl
#align continuous_map.coe_to_Lp ContinuousMap.coe_toLp
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -150,13 +150,13 @@ theorem snorm_exponent_top {f : α → F} : snorm f ∞ μ = snormEssSup f μ :=
if `p < ∞`, or `ess_sup f < ∞` if `p = ∞`. -/
def Memℒp {α} {m : MeasurableSpace α} (f : α → E) (p : ℝ≥0∞)
(μ : Measure α := by exact MeasureTheory.MeasureSpace.volume) : Prop :=
- AeStronglyMeasurable f μ ∧ snorm f p μ < ∞
+ AEStronglyMeasurable f μ ∧ snorm f p μ < ∞
#align measure_theory.mem_ℒp MeasureTheory.Memℒp
-theorem Memℒp.aeStronglyMeasurable {f : α → E} {p : ℝ≥0∞} (h : Memℒp f p μ) :
- AeStronglyMeasurable f μ :=
+theorem Memℒp.aEStronglyMeasurable {f : α → E} {p : ℝ≥0∞} (h : Memℒp f p μ) :
+ AEStronglyMeasurable f μ :=
h.1
-#align measure_theory.mem_ℒp.ae_strongly_measurable MeasureTheory.Memℒp.aeStronglyMeasurable
+#align measure_theory.mem_ℒp.ae_strongly_measurable MeasureTheory.Memℒp.aEStronglyMeasurable
theorem lintegral_rpow_nnnorm_eq_rpow_snorm' {f : α → F} (hq0_lt : 0 < q) :
(∫⁻ a, ‖f a‖₊ ^ q ∂μ) = snorm' f q μ ^ q :=
@@ -216,9 +216,9 @@ theorem snorm'_exponent_zero {f : α → F} : snorm' f 0 μ = 1 := by
theorem snorm_exponent_zero {f : α → F} : snorm f 0 μ = 0 := by simp [snorm]
#align measure_theory.snorm_exponent_zero MeasureTheory.snorm_exponent_zero
-theorem memℒp_zero_iff_aeStronglyMeasurable {f : α → E} : Memℒp f 0 μ ↔ AeStronglyMeasurable f μ :=
+theorem memℒp_zero_iff_aEStronglyMeasurable {f : α → E} : Memℒp f 0 μ ↔ AEStronglyMeasurable f μ :=
by simp [mem_ℒp, snorm_exponent_zero]
-#align measure_theory.mem_ℒp_zero_iff_ae_strongly_measurable MeasureTheory.memℒp_zero_iff_aeStronglyMeasurable
+#align measure_theory.mem_ℒp_zero_iff_ae_strongly_measurable MeasureTheory.memℒp_zero_iff_aEStronglyMeasurable
@[simp]
theorem snorm'_zero (hp0_lt : 0 < q) : snorm' (0 : α → F) q μ = 0 := by simp [snorm', hp0_lt]
@@ -255,7 +255,7 @@ theorem snorm_zero' : snorm (fun x : α => (0 : F)) p μ = 0 := by convert snorm
#align measure_theory.snorm_zero' MeasureTheory.snorm_zero'
theorem zero_memℒp : Memℒp (0 : α → E) p μ :=
- ⟨aeStronglyMeasurable_zero, by
+ ⟨aestronglyMeasurable_zero, by
rw [snorm_zero]
exact ENNReal.coe_lt_top⟩
#align measure_theory.zero_mem_ℒp MeasureTheory.zero_memℒp
@@ -539,14 +539,14 @@ theorem snorm_congr_ae {f g : α → F} (hfg : f =ᵐ[μ] g) : snorm f p μ = sn
#align measure_theory.snorm_congr_ae MeasureTheory.snorm_congr_ae
theorem memℒp_congr_ae {f g : α → E} (hfg : f =ᵐ[μ] g) : Memℒp f p μ ↔ Memℒp g p μ := by
- simp only [mem_ℒp, snorm_congr_ae hfg, aeStronglyMeasurable_congr hfg]
+ simp only [mem_ℒp, snorm_congr_ae hfg, aestronglyMeasurable_congr hfg]
#align measure_theory.mem_ℒp_congr_ae MeasureTheory.memℒp_congr_ae
theorem Memℒp.ae_eq {f g : α → E} (hfg : f =ᵐ[μ] g) (hf_Lp : Memℒp f p μ) : Memℒp g p μ :=
(memℒp_congr_ae hfg).1 hf_Lp
#align measure_theory.mem_ℒp.ae_eq MeasureTheory.Memℒp.ae_eq
-theorem Memℒp.of_le {f : α → E} {g : α → F} (hg : Memℒp g p μ) (hf : AeStronglyMeasurable f μ)
+theorem Memℒp.of_le {f : α → E} {g : α → F} (hg : Memℒp g p μ) (hf : AEStronglyMeasurable f μ)
(hfg : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) : Memℒp f p μ :=
⟨hf, (snorm_mono_ae hfg).trans_lt hg.snorm_lt_top⟩
#align measure_theory.mem_ℒp.of_le MeasureTheory.Memℒp.of_le
@@ -554,29 +554,29 @@ theorem Memℒp.of_le {f : α → E} {g : α → F} (hg : Memℒp g p μ) (hf :
alias mem_ℒp.of_le ← mem_ℒp.mono
#align measure_theory.mem_ℒp.mono MeasureTheory.Memℒp.mono
-theorem Memℒp.mono' {f : α → E} {g : α → ℝ} (hg : Memℒp g p μ) (hf : AeStronglyMeasurable f μ)
+theorem Memℒp.mono' {f : α → E} {g : α → ℝ} (hg : Memℒp g p μ) (hf : AEStronglyMeasurable f μ)
(h : ∀ᵐ a ∂μ, ‖f a‖ ≤ g a) : Memℒp f p μ :=
hg.mono hf <| h.mono fun x hx => le_trans hx (le_abs_self _)
#align measure_theory.mem_ℒp.mono' MeasureTheory.Memℒp.mono'
-theorem Memℒp.congr_norm {f : α → E} {g : α → F} (hf : Memℒp f p μ) (hg : AeStronglyMeasurable g μ)
+theorem Memℒp.congr_norm {f : α → E} {g : α → F} (hf : Memℒp f p μ) (hg : AEStronglyMeasurable g μ)
(h : ∀ᵐ a ∂μ, ‖f a‖ = ‖g a‖) : Memℒp g p μ :=
hf.mono hg <| EventuallyEq.le <| EventuallyEq.symm h
#align measure_theory.mem_ℒp.congr_norm MeasureTheory.Memℒp.congr_norm
-theorem memℒp_congr_norm {f : α → E} {g : α → F} (hf : AeStronglyMeasurable f μ)
- (hg : AeStronglyMeasurable g μ) (h : ∀ᵐ a ∂μ, ‖f a‖ = ‖g a‖) : Memℒp f p μ ↔ Memℒp g p μ :=
+theorem memℒp_congr_norm {f : α → E} {g : α → F} (hf : AEStronglyMeasurable f μ)
+ (hg : AEStronglyMeasurable g μ) (h : ∀ᵐ a ∂μ, ‖f a‖ = ‖g a‖) : Memℒp f p μ ↔ Memℒp g p μ :=
⟨fun h2f => h2f.congr_norm hg h, fun h2g => h2g.congr_norm hf <| EventuallyEq.symm h⟩
#align measure_theory.mem_ℒp_congr_norm MeasureTheory.memℒp_congr_norm
-theorem memℒp_top_of_bound {f : α → E} (hf : AeStronglyMeasurable f μ) (C : ℝ)
+theorem memℒp_top_of_bound {f : α → E} (hf : AEStronglyMeasurable f μ) (C : ℝ)
(hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : Memℒp f ∞ μ :=
⟨hf, by
rw [snorm_exponent_top]
exact snorm_ess_sup_lt_top_of_ae_bound hfC⟩
#align measure_theory.mem_ℒp_top_of_bound MeasureTheory.memℒp_top_of_bound
-theorem Memℒp.of_bound [FiniteMeasure μ] {f : α → E} (hf : AeStronglyMeasurable f μ) (C : ℝ)
+theorem Memℒp.of_bound [FiniteMeasure μ] {f : α → E} (hf : AEStronglyMeasurable f μ) (C : ℝ)
(hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : Memℒp f p μ :=
(memℒp_const C).of_le hf (hfC.mono fun x hx => le_trans hx (le_abs_self _))
#align measure_theory.mem_ℒp.of_bound MeasureTheory.Memℒp.of_bound
@@ -713,10 +713,10 @@ theorem Memℒp.right_of_add_measure {f : α → E} (h : Memℒp f p (μ + ν))
#align measure_theory.mem_ℒp.right_of_add_measure MeasureTheory.Memℒp.right_of_add_measure
theorem Memℒp.norm {f : α → E} (h : Memℒp f p μ) : Memℒp (fun x => ‖f x‖) p μ :=
- h.of_le h.AeStronglyMeasurable.norm (eventually_of_forall fun x => by simp)
+ h.of_le h.AEStronglyMeasurable.norm (eventually_of_forall fun x => by simp)
#align measure_theory.mem_ℒp.norm MeasureTheory.Memℒp.norm
-theorem memℒp_norm_iff {f : α → E} (hf : AeStronglyMeasurable f μ) :
+theorem memℒp_norm_iff {f : α → E} (hf : AEStronglyMeasurable f μ) :
Memℒp (fun x => ‖f x‖) p μ ↔ Memℒp f p μ :=
⟨fun h =>
⟨hf, by
@@ -733,7 +733,7 @@ theorem snorm'_eq_zero_of_ae_zero' (hq0_ne : q ≠ 0) (hμ : μ ≠ 0) {f : α
snorm' f q μ = 0 := by rw [snorm'_congr_ae hf_zero, snorm'_zero' hq0_ne hμ]
#align measure_theory.snorm'_eq_zero_of_ae_zero' MeasureTheory.snorm'_eq_zero_of_ae_zero'
-theorem ae_eq_zero_of_snorm'_eq_zero {f : α → E} (hq0 : 0 ≤ q) (hf : AeStronglyMeasurable f μ)
+theorem ae_eq_zero_of_snorm'_eq_zero {f : α → E} (hq0 : 0 ≤ q) (hf : AEStronglyMeasurable f μ)
(h : snorm' f q μ = 0) : f =ᵐ[μ] 0 :=
by
rw [snorm', ENNReal.rpow_eq_zero_iff] at h
@@ -750,7 +750,7 @@ theorem ae_eq_zero_of_snorm'_eq_zero {f : α → E} (hq0 : 0 ≤ q) (hf : AeStro
exact hq0.not_lt h.right
#align measure_theory.ae_eq_zero_of_snorm'_eq_zero MeasureTheory.ae_eq_zero_of_snorm'_eq_zero
-theorem snorm'_eq_zero_iff (hq0_lt : 0 < q) {f : α → E} (hf : AeStronglyMeasurable f μ) :
+theorem snorm'_eq_zero_iff (hq0_lt : 0 < q) {f : α → E} (hf : AEStronglyMeasurable f μ) :
snorm' f q μ = 0 ↔ f =ᵐ[μ] 0 :=
⟨ae_eq_zero_of_snorm'_eq_zero (le_of_lt hq0_lt) hf, snorm'_eq_zero_of_ae_zero hq0_lt⟩
#align measure_theory.snorm'_eq_zero_iff MeasureTheory.snorm'_eq_zero_iff
@@ -765,7 +765,7 @@ theorem snormEssSup_eq_zero_iff {f : α → F} : snormEssSup f μ = 0 ↔ f =ᵐ
simp [eventually_eq, snorm_ess_sup]
#align measure_theory.snorm_ess_sup_eq_zero_iff MeasureTheory.snormEssSup_eq_zero_iff
-theorem snorm_eq_zero_iff {f : α → E} (hf : AeStronglyMeasurable f μ) (h0 : p ≠ 0) :
+theorem snorm_eq_zero_iff {f : α → E} (hf : AEStronglyMeasurable f μ) (h0 : p ≠ 0) :
snorm f p μ = 0 ↔ f =ᵐ[μ] 0 := by
by_cases h_top : p = ∞
· rw [h_top, snorm_exponent_top, snorm_ess_sup_eq_zero_iff]
@@ -773,7 +773,7 @@ theorem snorm_eq_zero_iff {f : α → E} (hf : AeStronglyMeasurable f μ) (h0 :
exact snorm'_eq_zero_iff (ENNReal.toReal_pos h0 h_top) hf
#align measure_theory.snorm_eq_zero_iff MeasureTheory.snorm_eq_zero_iff
-theorem snorm'_add_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeStronglyMeasurable g μ)
+theorem snorm'_add_le {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
(hq1 : 1 ≤ q) : snorm' (f + g) q μ ≤ snorm' f q μ + snorm' g q μ :=
calc
(∫⁻ a, ↑‖(f + g) a‖₊ ^ q ∂μ) ^ (1 / q) ≤
@@ -786,7 +786,7 @@ theorem snorm'_add_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : Ae
#align measure_theory.snorm'_add_le MeasureTheory.snorm'_add_le
-theorem snorm'_add_le_of_le_one {f g : α → E} (hf : AeStronglyMeasurable f μ) (hq0 : 0 ≤ q)
+theorem snorm'_add_le_of_le_one {f g : α → E} (hf : AEStronglyMeasurable f μ) (hq0 : 0 ≤ q)
(hq1 : q ≤ 1) : snorm' (f + g) q μ ≤ 2 ^ (1 / q - 1) * (snorm' f q μ + snorm' g q μ) :=
calc
(∫⁻ a, ↑‖(f + g) a‖₊ ^ q ∂μ) ^ (1 / q) ≤
@@ -808,7 +808,7 @@ theorem snormEssSup_add_le {f g : α → F} :
exact nnnorm_add_le _ _
#align measure_theory.snorm_ess_sup_add_le MeasureTheory.snormEssSup_add_le
-theorem snorm_add_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeStronglyMeasurable g μ)
+theorem snorm_add_le {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
(hp1 : 1 ≤ p) : snorm (f + g) p μ ≤ snorm f p μ + snorm g p μ :=
by
by_cases hp0 : p = 0
@@ -852,7 +852,7 @@ theorem lpAddConst_lt_top (p : ℝ≥0∞) : lpAddConst p < ∞ :=
· exact ENNReal.one_lt_top
#align measure_theory.Lp_add_const_lt_top MeasureTheory.lpAddConst_lt_top
-theorem snorm_add_le' {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeStronglyMeasurable g μ)
+theorem snorm_add_le' {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
(p : ℝ≥0∞) : snorm (f + g) p μ ≤ lpAddConst p * (snorm f p μ + snorm g p μ) :=
by
rcases eq_or_ne p 0 with (rfl | hp)
@@ -876,7 +876,7 @@ could take `η = δ / 2` for `p ≥ 1`, but the point of the lemma is that it wo
theorem exists_Lp_half (p : ℝ≥0∞) {δ : ℝ≥0∞} (hδ : δ ≠ 0) :
∃ η : ℝ≥0∞,
0 < η ∧
- ∀ (f g : α → E) (hf : AeStronglyMeasurable f μ) (hg : AeStronglyMeasurable g μ)
+ ∀ (f g : α → E) (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
(Hf : snorm f p μ ≤ η) (Hg : snorm g p μ ≤ η), snorm (f + g) p μ < δ :=
by
have :
@@ -896,7 +896,7 @@ theorem exists_Lp_half (p : ℝ≥0∞) {δ : ℝ≥0∞} (hδ : δ ≠ 0) :
variable {μ E}
-theorem snorm_sub_le' {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeStronglyMeasurable g μ)
+theorem snorm_sub_le' {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
(p : ℝ≥0∞) : snorm (f - g) p μ ≤ lpAddConst p * (snorm f p μ + snorm g p μ) :=
calc
snorm (f - g) p μ = snorm (f + -g) p μ := by rw [sub_eq_add_neg]
@@ -917,7 +917,7 @@ theorem snorm_sub_le' {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : Ae
#align measure_theory.snorm_sub_le' MeasureTheory.snorm_sub_le'
-theorem snorm_sub_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeStronglyMeasurable g μ)
+theorem snorm_sub_le {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
(hp : 1 ≤ p) : snorm (f - g) p μ ≤ snorm f p μ + snorm g p μ := by
simpa [Lp_add_const_of_one_le hp] using snorm_sub_le' hf hg p
#align measure_theory.snorm_sub_le MeasureTheory.snorm_sub_le
@@ -926,7 +926,7 @@ theorem snorm_add_lt_top {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g
snorm (f + g) p μ < ∞ :=
calc
snorm (f + g) p μ ≤ lpAddConst p * (snorm f p μ + snorm g p μ) :=
- snorm_add_le' hf.AeStronglyMeasurable hg.AeStronglyMeasurable p
+ snorm_add_le' hf.AEStronglyMeasurable hg.AEStronglyMeasurable p
_ < ∞ := by
apply ENNReal.mul_lt_top (Lp_add_const_lt_top p).Ne
exact (ENNReal.add_lt_top.2 ⟨hf.2, hg.2⟩).Ne
@@ -947,12 +947,12 @@ variable {β : Type _} {mβ : MeasurableSpace β} {f : α → β} {g : β → E}
include mβ
-theorem snormEssSup_map_measure (hg : AeStronglyMeasurable g (Measure.map f μ))
+theorem snormEssSup_map_measure (hg : AEStronglyMeasurable g (Measure.map f μ))
(hf : AEMeasurable f μ) : snormEssSup g (Measure.map f μ) = snormEssSup (g ∘ f) μ :=
essSup_map_measure hg.ennnorm hf
#align measure_theory.snorm_ess_sup_map_measure MeasureTheory.snormEssSup_map_measure
-theorem snorm_map_measure (hg : AeStronglyMeasurable g (Measure.map f μ)) (hf : AEMeasurable f μ) :
+theorem snorm_map_measure (hg : AEStronglyMeasurable g (Measure.map f μ)) (hf : AEMeasurable f μ) :
snorm g p (Measure.map f μ) = snorm (g ∘ f) p μ :=
by
by_cases hp_zero : p = 0
@@ -964,7 +964,7 @@ theorem snorm_map_measure (hg : AeStronglyMeasurable g (Measure.map f μ)) (hf :
rw [lintegral_map' (hg.ennnorm.pow_const p.to_real) hf]
#align measure_theory.snorm_map_measure MeasureTheory.snorm_map_measure
-theorem memℒp_map_measure_iff (hg : AeStronglyMeasurable g (Measure.map f μ))
+theorem memℒp_map_measure_iff (hg : AEStronglyMeasurable g (Measure.map f μ))
(hf : AEMeasurable f μ) : Memℒp g p (Measure.map f μ) ↔ Memℒp (g ∘ f) p μ := by
simp [mem_ℒp, snorm_map_measure hg hf, hg.comp_ae_measurable hf, hg]
#align measure_theory.mem_ℒp_map_measure_iff MeasureTheory.memℒp_map_measure_iff
@@ -1048,7 +1048,7 @@ theorem snorm_trim (hm : m ≤ m0) {f : α → E} (hf : strongly_measurable[m] f
simpa only [snorm_eq_snorm' h0 h_top] using snorm'_trim hm hf
#align measure_theory.snorm_trim MeasureTheory.snorm_trim
-theorem snorm_trim_ae (hm : m ≤ m0) {f : α → E} (hf : AeStronglyMeasurable f (ν.trim hm)) :
+theorem snorm_trim_ae (hm : m ≤ m0) {f : α → E} (hf : AEStronglyMeasurable f (ν.trim hm)) :
snorm f p (ν.trim hm) = snorm f p ν :=
by
rw [snorm_congr_ae hf.ae_eq_mk, snorm_congr_ae (ae_eq_of_ae_eq_trim hf.ae_eq_mk)]
@@ -1056,7 +1056,7 @@ theorem snorm_trim_ae (hm : m ≤ m0) {f : α → E} (hf : AeStronglyMeasurable
#align measure_theory.snorm_trim_ae MeasureTheory.snorm_trim_ae
theorem memℒp_of_memℒp_trim (hm : m ≤ m0) {f : α → E} (hf : Memℒp f p (ν.trim hm)) : Memℒp f p ν :=
- ⟨aeStronglyMeasurable_of_aeStronglyMeasurable_trim hm hf.1,
+ ⟨aestronglyMeasurable_of_aestronglyMeasurable_trim hm hf.1,
(le_of_eq (snorm_trim_ae hm hf.1).symm).trans_lt hf.2⟩
#align measure_theory.mem_ℒp_of_mem_ℒp_trim MeasureTheory.memℒp_of_memℒp_trim
@@ -1077,7 +1077,7 @@ theorem snorm_neg {f : α → F} : snorm (-f) p μ = snorm f p μ :=
#align measure_theory.snorm_neg MeasureTheory.snorm_neg
theorem Memℒp.neg {f : α → E} (hf : Memℒp f p μ) : Memℒp (-f) p μ :=
- ⟨AeStronglyMeasurable.neg hf.1, by simp [hf.right]⟩
+ ⟨AEStronglyMeasurable.neg hf.1, by simp [hf.right]⟩
#align measure_theory.mem_ℒp.neg MeasureTheory.Memℒp.neg
theorem memℒp_neg_iff {f : α → E} : Memℒp (-f) p μ ↔ Memℒp f p μ :=
@@ -1085,7 +1085,7 @@ theorem memℒp_neg_iff {f : α → E} : Memℒp (-f) p μ ↔ Memℒp f p μ :=
#align measure_theory.mem_ℒp_neg_iff MeasureTheory.memℒp_neg_iff
theorem snorm'_le_snorm'_mul_rpow_measure_univ {p q : ℝ} (hp0_lt : 0 < p) (hpq : p ≤ q) {f : α → E}
- (hf : AeStronglyMeasurable f μ) : snorm' f p μ ≤ snorm' f q μ * μ Set.univ ^ (1 / p - 1 / q) :=
+ (hf : AEStronglyMeasurable f μ) : snorm' f p μ ≤ snorm' f q μ * μ Set.univ ^ (1 / p - 1 / q) :=
by
have hq0_lt : 0 < q := lt_of_lt_of_le hp0_lt hpq
by_cases hpq_eq : p = q
@@ -1126,7 +1126,7 @@ theorem snorm'_le_snormEssSup_mul_rpow_measure_univ (hq_pos : 0 < q) {f : α →
#align measure_theory.snorm'_le_snorm_ess_sup_mul_rpow_measure_univ MeasureTheory.snorm'_le_snormEssSup_mul_rpow_measure_univ
theorem snorm_le_snorm_mul_rpow_measure_univ {p q : ℝ≥0∞} (hpq : p ≤ q) {f : α → E}
- (hf : AeStronglyMeasurable f μ) :
+ (hf : AEStronglyMeasurable f μ) :
snorm f p μ ≤ snorm f q μ * μ Set.univ ^ (1 / p.toReal - 1 / q.toReal) :=
by
by_cases hp0 : p = 0
@@ -1155,7 +1155,7 @@ theorem snorm_le_snorm_mul_rpow_measure_univ {p q : ℝ≥0∞} (hpq : p ≤ q)
theorem snorm'_le_snorm'_of_exponent_le {m : MeasurableSpace α} {p q : ℝ} (hp0_lt : 0 < p)
(hpq : p ≤ q) (μ : Measure α) [ProbabilityMeasure μ] {f : α → E}
- (hf : AeStronglyMeasurable f μ) : snorm' f p μ ≤ snorm' f q μ :=
+ (hf : AEStronglyMeasurable f μ) : snorm' f p μ ≤ snorm' f q μ :=
by
have h_le_μ := snorm'_le_snorm'_mul_rpow_measure_univ hp0_lt hpq hf
rwa [measure_univ, ENNReal.one_rpow, mul_one] at h_le_μ
@@ -1167,12 +1167,12 @@ theorem snorm'_le_snormEssSup (hq_pos : 0 < q) {f : α → F} [ProbabilityMeasur
#align measure_theory.snorm'_le_snorm_ess_sup MeasureTheory.snorm'_le_snormEssSup
theorem snorm_le_snorm_of_exponent_le {p q : ℝ≥0∞} (hpq : p ≤ q) [ProbabilityMeasure μ] {f : α → E}
- (hf : AeStronglyMeasurable f μ) : snorm f p μ ≤ snorm f q μ :=
+ (hf : AEStronglyMeasurable f μ) : snorm f p μ ≤ snorm f q μ :=
(snorm_le_snorm_mul_rpow_measure_univ hpq hf).trans (le_of_eq (by simp [measure_univ]))
#align measure_theory.snorm_le_snorm_of_exponent_le MeasureTheory.snorm_le_snorm_of_exponent_le
theorem snorm'_lt_top_of_snorm'_lt_top_of_exponent_le {p q : ℝ} [FiniteMeasure μ] {f : α → E}
- (hf : AeStronglyMeasurable f μ) (hfq_lt_top : snorm' f q μ < ∞) (hp_nonneg : 0 ≤ p)
+ (hf : AEStronglyMeasurable f μ) (hfq_lt_top : snorm' f q μ < ∞) (hp_nonneg : 0 ≤ p)
(hpq : p ≤ q) : snorm' f p μ < ∞ :=
by
cases' le_or_lt p 0 with hp_nonpos hp_pos
@@ -1192,7 +1192,7 @@ theorem snorm'_lt_top_of_snorm'_lt_top_of_exponent_le {p q : ℝ} [FiniteMeasure
variable (μ)
theorem pow_mul_meas_ge_le_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
- (hf : AeStronglyMeasurable f μ) (ε : ℝ≥0∞) :
+ (hf : AEStronglyMeasurable f μ) (ε : ℝ≥0∞) :
(ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal }) ^ (1 / p.toReal) ≤ snorm f p μ :=
by
rw [snorm_eq_lintegral_rpow_nnnorm hp_ne_zero hp_ne_top]
@@ -1202,7 +1202,7 @@ theorem pow_mul_meas_ge_le_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
#align measure_theory.pow_mul_meas_ge_le_snorm MeasureTheory.pow_mul_meas_ge_le_snorm
theorem mul_meas_ge_le_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
- (hf : AeStronglyMeasurable f μ) (ε : ℝ≥0∞) :
+ (hf : AEStronglyMeasurable f μ) (ε : ℝ≥0∞) :
ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal } ≤ snorm f p μ ^ p.toReal :=
by
have : 1 / p.to_real * p.to_real = 1 :=
@@ -1218,7 +1218,7 @@ theorem mul_meas_ge_le_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
/-- A version of Markov's inequality using Lp-norms. -/
theorem mul_meas_ge_le_pow_snorm' {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
- (hf : AeStronglyMeasurable f μ) (ε : ℝ≥0∞) :
+ (hf : AEStronglyMeasurable f μ) (ε : ℝ≥0∞) :
ε ^ p.toReal * μ { x | ε ≤ ‖f x‖₊ } ≤ snorm f p μ ^ p.toReal :=
by
convert mul_meas_ge_le_pow_snorm μ hp_ne_zero hp_ne_top hf (ε ^ p.to_real)
@@ -1227,7 +1227,7 @@ theorem mul_meas_ge_le_pow_snorm' {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_t
#align measure_theory.mul_meas_ge_le_pow_snorm' MeasureTheory.mul_meas_ge_le_pow_snorm'
theorem meas_ge_le_mul_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
- (hf : AeStronglyMeasurable f μ) {ε : ℝ≥0∞} (hε : ε ≠ 0) :
+ (hf : AEStronglyMeasurable f μ) {ε : ℝ≥0∞} (hε : ε ≠ 0) :
μ { x | ε ≤ ‖f x‖₊ } ≤ ε⁻¹ ^ p.toReal * snorm f p μ ^ p.toReal :=
by
by_cases ε = ∞
@@ -1275,23 +1275,23 @@ section MeasurableAdd
-- variable [has_measurable_add₂ E]
theorem snorm'_sum_le {ι} {f : ι → α → E} {s : Finset ι}
- (hfs : ∀ i, i ∈ s → AeStronglyMeasurable (f i) μ) (hq1 : 1 ≤ q) :
+ (hfs : ∀ i, i ∈ s → AEStronglyMeasurable (f i) μ) (hq1 : 1 ≤ q) :
snorm' (∑ i in s, f i) q μ ≤ ∑ i in s, snorm' (f i) q μ :=
Finset.le_sum_of_subadditive_on_pred (fun f : α → E => snorm' f q μ)
- (fun f => AeStronglyMeasurable f μ) (snorm'_zero (zero_lt_one.trans_le hq1))
+ (fun f => AEStronglyMeasurable f μ) (snorm'_zero (zero_lt_one.trans_le hq1))
(fun f g hf hg => snorm'_add_le hf hg hq1) (fun f g hf hg => hf.add hg) _ hfs
#align measure_theory.snorm'_sum_le MeasureTheory.snorm'_sum_le
theorem snorm_sum_le {ι} {f : ι → α → E} {s : Finset ι}
- (hfs : ∀ i, i ∈ s → AeStronglyMeasurable (f i) μ) (hp1 : 1 ≤ p) :
+ (hfs : ∀ i, i ∈ s → AEStronglyMeasurable (f i) μ) (hp1 : 1 ≤ p) :
snorm (∑ i in s, f i) p μ ≤ ∑ i in s, snorm (f i) p μ :=
Finset.le_sum_of_subadditive_on_pred (fun f : α → E => snorm f p μ)
- (fun f => AeStronglyMeasurable f μ) snorm_zero (fun f g hf hg => snorm_add_le hf hg hp1)
+ (fun f => AEStronglyMeasurable f μ) snorm_zero (fun f g hf hg => snorm_add_le hf hg hp1)
(fun f g hf hg => hf.add hg) _ hfs
#align measure_theory.snorm_sum_le MeasureTheory.snorm_sum_le
theorem Memℒp.add {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) : Memℒp (f + g) p μ :=
- ⟨AeStronglyMeasurable.add hf.1 hg.1, snorm_add_lt_top hf hg⟩
+ ⟨AEStronglyMeasurable.add hf.1 hg.1, snorm_add_lt_top hf hg⟩
#align measure_theory.mem_ℒp.add MeasureTheory.Memℒp.add
theorem Memℒp.sub {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) : Memℒp (f - g) p μ :=
@@ -1357,7 +1357,7 @@ theorem snorm_const_smul {f : α → F} (c : 𝕜) : snorm (c • f) p μ = (‖
#align measure_theory.snorm_const_smul MeasureTheory.snorm_const_smul
theorem Memℒp.const_smul {f : α → E} (hf : Memℒp f p μ) (c : 𝕜) : Memℒp (c • f) p μ :=
- ⟨AeStronglyMeasurable.const_smul hf.1 c,
+ ⟨AEStronglyMeasurable.const_smul hf.1 c,
(snorm_const_smul c).le.trans_lt (ENNReal.mul_lt_top ENNReal.coe_ne_top hf.2.Ne)⟩
#align measure_theory.mem_ℒp.const_smul MeasureTheory.Memℒp.const_smul
@@ -1365,15 +1365,15 @@ theorem Memℒp.const_mul {f : α → 𝕜} (hf : Memℒp f p μ) (c : 𝕜) : M
hf.const_smul c
#align measure_theory.mem_ℒp.const_mul MeasureTheory.Memℒp.const_mul
-theorem snorm'_smul_le_mul_snorm' {p q r : ℝ} {f : α → E} (hf : AeStronglyMeasurable f μ)
- {φ : α → 𝕜} (hφ : AeStronglyMeasurable φ μ) (hp0_lt : 0 < p) (hpq : p < q)
+theorem snorm'_smul_le_mul_snorm' {p q r : ℝ} {f : α → E} (hf : AEStronglyMeasurable f μ)
+ {φ : α → 𝕜} (hφ : AEStronglyMeasurable φ μ) (hp0_lt : 0 < p) (hpq : p < q)
(hpqr : 1 / p = 1 / q + 1 / r) : snorm' (φ • f) p μ ≤ snorm' φ q μ * snorm' f r μ :=
by
simp_rw [snorm', Pi.smul_apply', nnnorm_smul, ENNReal.coe_mul]
exact ENNReal.lintegral_Lp_mul_le_Lq_mul_Lr hp0_lt hpq hpqr μ hφ.ennnorm hf.ennnorm
#align measure_theory.snorm'_smul_le_mul_snorm' MeasureTheory.snorm'_smul_le_mul_snorm'
-theorem snorm_smul_le_snorm_top_mul_snorm (p : ℝ≥0∞) {f : α → E} (hf : AeStronglyMeasurable f μ)
+theorem snorm_smul_le_snorm_top_mul_snorm (p : ℝ≥0∞) {f : α → E} (hf : AEStronglyMeasurable f μ)
(φ : α → 𝕜) : snorm (φ • f) p μ ≤ snorm φ ∞ μ * snorm f p μ :=
by
by_cases hp_top : p = ∞
@@ -1417,7 +1417,7 @@ theorem snorm_smul_le_snorm_top_mul_snorm (p : ℝ≥0∞) {f : α → E} (hf :
#align measure_theory.snorm_smul_le_snorm_top_mul_snorm MeasureTheory.snorm_smul_le_snorm_top_mul_snorm
theorem snorm_smul_le_snorm_mul_snorm_top (p : ℝ≥0∞) (f : α → E) {φ : α → 𝕜}
- (hφ : AeStronglyMeasurable φ μ) : snorm (φ • f) p μ ≤ snorm φ p μ * snorm f ∞ μ :=
+ (hφ : AEStronglyMeasurable φ μ) : snorm (φ • f) p μ ≤ snorm φ p μ * snorm f ∞ μ :=
by
rw [← snorm_norm]
simp_rw [Pi.smul_apply', norm_smul]
@@ -1433,8 +1433,8 @@ theorem snorm_smul_le_snorm_mul_snorm_top (p : ℝ≥0∞) (f : α → E) {φ :
#align measure_theory.snorm_smul_le_snorm_mul_snorm_top MeasureTheory.snorm_smul_le_snorm_mul_snorm_top
/-- Hölder's inequality, as an inequality on the `ℒp` seminorm of a scalar product `φ • f`. -/
-theorem snorm_smul_le_mul_snorm {p q r : ℝ≥0∞} {f : α → E} (hf : AeStronglyMeasurable f μ)
- {φ : α → 𝕜} (hφ : AeStronglyMeasurable φ μ) (hpqr : 1 / p = 1 / q + 1 / r) :
+theorem snorm_smul_le_mul_snorm {p q r : ℝ≥0∞} {f : α → E} (hf : AEStronglyMeasurable f μ)
+ {φ : α → 𝕜} (hφ : AEStronglyMeasurable φ μ) (hpqr : 1 / p = 1 / q + 1 / r) :
snorm (φ • f) p μ ≤ snorm φ q μ * snorm f r μ :=
by
by_cases hp_zero : p = 0
@@ -1531,7 +1531,7 @@ theorem snorm_le_mul_snorm_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ}
#align measure_theory.snorm_le_mul_snorm_of_ae_le_mul MeasureTheory.snorm_le_mul_snorm_of_ae_le_mul
theorem Memℒp.of_le_mul {f : α → E} {g : α → F} {c : ℝ} (hg : Memℒp g p μ)
- (hf : AeStronglyMeasurable f μ) (hfg : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : Memℒp f p μ :=
+ (hf : AEStronglyMeasurable f μ) (hfg : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : Memℒp f p μ :=
⟨hf,
lt_of_le_of_lt (snorm_le_mul_snorm_of_ae_le_mul hfg p) <|
ENNReal.mul_lt_top ENNReal.ofReal_ne_top hg.snorm_ne_top⟩
@@ -1658,7 +1658,7 @@ The space of equivalence classes of measurable functions for which `snorm f p μ
@[simp]
theorem snorm_aeEqFun {α E : Type _} [MeasurableSpace α] {μ : Measure α} [NormedAddCommGroup E]
- {p : ℝ≥0∞} {f : α → E} (hf : AeStronglyMeasurable f μ) :
+ {p : ℝ≥0∞} {f : α → E} (hf : AEStronglyMeasurable f μ) :
snorm (AeEqFun.mk f hf) p μ = snorm f p μ :=
snorm_congr_ae (AeEqFun.coeFn_mk _ _)
#align measure_theory.snorm_ae_eq_fun MeasureTheory.snorm_aeEqFun
@@ -1754,7 +1754,7 @@ theorem mem_lp_iff_memℒp {f : α →ₘ[μ] E} : f ∈ lp E p μ ↔ Memℒp f
#align measure_theory.Lp.mem_Lp_iff_mem_ℒp MeasureTheory.lp.mem_lp_iff_memℒp
protected theorem antitone [FiniteMeasure μ] {p q : ℝ≥0∞} (hpq : p ≤ q) : lp E q μ ≤ lp E p μ :=
- fun f hf => (Memℒp.memℒp_of_exponent_le ⟨f.AeStronglyMeasurable, hf⟩ hpq).2
+ fun f hf => (Memℒp.memℒp_of_exponent_le ⟨f.AEStronglyMeasurable, hf⟩ hpq).2
#align measure_theory.Lp.antitone MeasureTheory.lp.antitone
@[simp]
@@ -1788,12 +1788,12 @@ protected theorem stronglyMeasurable (f : lp E p μ) : StronglyMeasurable f :=
#align measure_theory.Lp.strongly_measurable MeasureTheory.lp.stronglyMeasurable
@[measurability]
-protected theorem aeStronglyMeasurable (f : lp E p μ) : AeStronglyMeasurable f μ :=
- f.val.AeStronglyMeasurable
-#align measure_theory.Lp.ae_strongly_measurable MeasureTheory.lp.aeStronglyMeasurable
+protected theorem aEStronglyMeasurable (f : lp E p μ) : AEStronglyMeasurable f μ :=
+ f.val.AEStronglyMeasurable
+#align measure_theory.Lp.ae_strongly_measurable MeasureTheory.lp.aEStronglyMeasurable
protected theorem memℒp (f : lp E p μ) : Memℒp f p μ :=
- ⟨lp.aeStronglyMeasurable f, f.Prop⟩
+ ⟨lp.aEStronglyMeasurable f, f.Prop⟩
#align measure_theory.Lp.mem_ℒp MeasureTheory.lp.memℒp
variable (E p μ)
@@ -1919,17 +1919,17 @@ theorem norm_le_norm_of_ae_le {f : lp E p μ} {g : lp F p μ} (h : ∀ᵐ x ∂
theorem mem_lp_of_ae_le_mul {c : ℝ} {f : α →ₘ[μ] E} {g : lp F p μ}
(h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : f ∈ lp E p μ :=
- mem_lp_iff_memℒp.2 <| Memℒp.of_le_mul (lp.memℒp g) f.AeStronglyMeasurable h
+ mem_lp_iff_memℒp.2 <| Memℒp.of_le_mul (lp.memℒp g) f.AEStronglyMeasurable h
#align measure_theory.Lp.mem_Lp_of_ae_le_mul MeasureTheory.lp.mem_lp_of_ae_le_mul
theorem mem_lp_of_ae_le {f : α →ₘ[μ] E} {g : lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
f ∈ lp E p μ :=
- mem_lp_iff_memℒp.2 <| Memℒp.of_le (lp.memℒp g) f.AeStronglyMeasurable h
+ mem_lp_iff_memℒp.2 <| Memℒp.of_le (lp.memℒp g) f.AEStronglyMeasurable h
#align measure_theory.Lp.mem_Lp_of_ae_le MeasureTheory.lp.mem_lp_of_ae_le
theorem mem_lp_of_ae_bound [FiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ) (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
f ∈ lp E p μ :=
- mem_lp_iff_memℒp.2 <| Memℒp.of_bound f.AeStronglyMeasurable _ hfC
+ mem_lp_iff_memℒp.2 <| Memℒp.of_bound f.AEStronglyMeasurable _ hfC
#align measure_theory.Lp.mem_Lp_of_ae_bound MeasureTheory.lp.mem_lp_of_ae_bound
theorem norm_le_of_ae_bound [FiniteMeasure μ] {f : lp E p μ} {C : ℝ} (hC : 0 ≤ C)
@@ -2038,7 +2038,7 @@ For a set `s` with `(hs : measurable_set s)` and `(hμs : μ s < ∞)`, we build
section Indicator
-variable {s : Set α} {hs : MeasurableSet s} {c : E} {f : α → E} {hf : AeStronglyMeasurable f μ}
+variable {s : Set α} {hs : MeasurableSet s} {c : E} {f : α → E} {hf : AEStronglyMeasurable f μ}
theorem snormEssSup_indicator_le (s : Set α) (f : α → G) :
snormEssSup (s.indicator f) μ ≤ snormEssSup f μ :=
@@ -2126,7 +2126,7 @@ theorem snorm_indicator_const_le (c : G) (p : ℝ≥0∞) :
#align measure_theory.snorm_indicator_const_le MeasureTheory.snorm_indicator_const_le
theorem Memℒp.indicator (hs : MeasurableSet s) (hf : Memℒp f p μ) : Memℒp (s.indicator f) p μ :=
- ⟨hf.AeStronglyMeasurable.indicator hs, lt_of_le_of_lt (snorm_indicator_le f) hf.snorm_lt_top⟩
+ ⟨hf.AEStronglyMeasurable.indicator hs, lt_of_le_of_lt (snorm_indicator_le f) hf.snorm_lt_top⟩
#align measure_theory.mem_ℒp.indicator MeasureTheory.Memℒp.indicator
theorem snormEssSup_indicator_eq_snormEssSup_restrict {f : α → F} (hs : MeasurableSet s) :
@@ -2167,7 +2167,7 @@ theorem snorm_indicator_eq_snorm_restrict {f : α → F} (hs : MeasurableSet s)
theorem memℒp_indicator_iff_restrict (hs : MeasurableSet s) :
Memℒp (s.indicator f) p μ ↔ Memℒp f p (μ.restrict s) := by
- simp [mem_ℒp, aeStronglyMeasurable_indicator_iff hs, snorm_indicator_eq_snorm_restrict hs]
+ simp [mem_ℒp, aestronglyMeasurable_indicator_iff hs, snorm_indicator_eq_snorm_restrict hs]
#align measure_theory.mem_ℒp_indicator_iff_restrict MeasureTheory.memℒp_indicator_iff_restrict
theorem memℒp_indicator_const (p : ℝ≥0∞) (hs : MeasurableSet s) (c : E) (hμsc : c = 0 ∨ μ s ≠ ∞) :
@@ -2310,7 +2310,7 @@ end IndicatorConstLp
theorem Memℒp.norm_rpow_div {f : α → E} (hf : Memℒp f p μ) (q : ℝ≥0∞) :
Memℒp (fun x : α => ‖f x‖ ^ q.toReal) (p / q) μ :=
by
- refine' ⟨(hf.1.norm.AEMeasurable.pow_const q.to_real).AeStronglyMeasurable, _⟩
+ refine' ⟨(hf.1.norm.AEMeasurable.pow_const q.to_real).AEStronglyMeasurable, _⟩
by_cases q_top : q = ∞; · simp [q_top]
by_cases q_zero : q = 0
· simp [q_zero]
@@ -2325,7 +2325,7 @@ theorem Memℒp.norm_rpow_div {f : α → E} (hf : Memℒp f p μ) (q : ℝ≥0
exact hf.2.Ne
#align measure_theory.mem_ℒp.norm_rpow_div MeasureTheory.Memℒp.norm_rpow_div
-theorem memℒp_norm_rpow_iff {q : ℝ≥0∞} {f : α → E} (hf : AeStronglyMeasurable f μ) (q_zero : q ≠ 0)
+theorem memℒp_norm_rpow_iff {q : ℝ≥0∞} {f : α → E} (hf : AEStronglyMeasurable f μ) (q_zero : q ≠ 0)
(q_top : q ≠ ∞) : Memℒp (fun x : α => ‖f x‖ ^ q.toReal) (p / q) μ ↔ Memℒp f p μ :=
by
refine' ⟨fun h => _, fun h => h.norm_rpow_div q⟩
@@ -2386,7 +2386,7 @@ theorem MeasureTheory.Memℒp.of_comp_antilipschitzWith {α E F} {K'} [Measurabl
rw [← dist_zero_right, ← dist_zero_right, ← g0]
apply hg'.le_mul_dist
have B : ae_strongly_measurable f μ :=
- (hg'.uniform_embedding hg).Embedding.aeStronglyMeasurable_comp_iff.1 hL.1
+ (hg'.uniform_embedding hg).Embedding.aestronglyMeasurable_comp_iff.1 hL.1
exact hL.of_le_mul B A
#align measure_theory.mem_ℒp.of_comp_antilipschitz_with MeasureTheory.Memℒp.of_comp_antilipschitzWith
@@ -2709,7 +2709,7 @@ theorem snorm'_lim_eq_lintegral_liminf {ι} [Nonempty ι] [LinearOrder ι] {f :
/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic filter.is_bounded_default -/
theorem snorm'_lim_le_liminf_snorm' {E} [NormedAddCommGroup E] {f : ℕ → α → E} {p : ℝ}
- (hp_pos : 0 < p) (hf : ∀ n, AeStronglyMeasurable (f n) μ) {f_lim : α → E}
+ (hp_pos : 0 < p) (hf : ∀ n, AEStronglyMeasurable (f n) μ) {f_lim : α → E}
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
snorm' f_lim p μ ≤ atTop.liminf fun n => snorm' (f n) p μ :=
by
@@ -2751,7 +2751,7 @@ theorem snorm_exponent_top_lim_le_liminf_snorm_exponent_top {ι} [Nonempty ι] [
#align measure_theory.Lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top MeasureTheory.lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top
theorem snorm_lim_le_liminf_snorm {E} [NormedAddCommGroup E] {f : ℕ → α → E}
- (hf : ∀ n, AeStronglyMeasurable (f n) μ) (f_lim : α → E)
+ (hf : ∀ n, AEStronglyMeasurable (f n) μ) (f_lim : α → E)
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
snorm f_lim p μ ≤ atTop.liminf fun n => snorm (f n) p μ :=
by
@@ -2866,7 +2866,7 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
private theorem snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm' {f : ℕ → α → E}
- (hf : ∀ n, AeStronglyMeasurable (f n) μ) {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞}
+ (hf : ∀ n, AEStronglyMeasurable (f n) μ) {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞}
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm' (f n - f m) p μ < B N) (n : ℕ) :
snorm' (fun x => ∑ i in Finset.range (n + 1), ‖f (i + 1) x - f i x‖) p μ ≤ ∑' i, B i :=
by
@@ -2884,7 +2884,7 @@ private theorem snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm' {f : ℕ → α →
#align measure_theory.Lp.snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm' measure_theory.Lp.snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm'
private theorem lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum {f : ℕ → α → E}
- (hf : ∀ n, AeStronglyMeasurable (f n) μ) {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (n : ℕ)
+ (hf : ∀ n, AEStronglyMeasurable (f n) μ) {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (n : ℕ)
(hn : snorm' (fun x => ∑ i in Finset.range (n + 1), ‖f (i + 1) x - f i x‖) p μ ≤ ∑' i, B i) :
(∫⁻ a, (∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ≤ (∑' i, B i) ^ p :=
by
@@ -2912,7 +2912,7 @@ private theorem lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum {f : ℕ → α
/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic filter.is_bounded_default -/
private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E}
- (hf : ∀ n, AeStronglyMeasurable (f n) μ) {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞}
+ (hf : ∀ n, AEStronglyMeasurable (f n) μ) {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞}
(h :
∀ n,
(∫⁻ a, (∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ≤
@@ -2950,7 +2950,7 @@ private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E
· exact liminf_le_of_frequently_le' (frequently_of_forall h)
#align measure_theory.Lp.lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum measure_theory.Lp.lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum
-private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, AeStronglyMeasurable (f n) μ)
+private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, AEStronglyMeasurable (f n) μ)
{p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
(h : (∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ^ (1 / p) ≤ ∑' i, B i) :
∀ᵐ x ∂μ, (∑' i, ‖f (i + 1) x - f i x‖₊ : ℝ≥0∞) < ∞ :=
@@ -2971,7 +2971,7 @@ private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, Ae
#align measure_theory.Lp.tsum_nnnorm_sub_ae_lt_top measure_theory.Lp.tsum_nnnorm_sub_ae_lt_top
theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p : ℝ}
- (hf : ∀ n, AeStronglyMeasurable (f n) μ) (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
+ (hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm' (f n - f m) p μ < B N) :
∀ᵐ x ∂μ, ∃ l : E, atTop.Tendsto (fun n => f n x) (𝓝 l) :=
by
@@ -3017,7 +3017,7 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm' MeasureTheory.lp.ae_tendsto_of_cauchy_snorm'
theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
- (hf : ∀ n, AeStronglyMeasurable (f n) μ) (hp : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
+ (hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N) :
∀ᵐ x ∂μ, ∃ l : E, atTop.Tendsto (fun n => f n x) (𝓝 l) :=
by
@@ -3052,7 +3052,7 @@ theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
exact ae_tendsto_of_cauchy_snorm' hf hp1 hB h_cau'
#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm MeasureTheory.lp.ae_tendsto_of_cauchy_snorm
-theorem cauchy_tendsto_of_tendsto {f : ℕ → α → E} (hf : ∀ n, AeStronglyMeasurable (f n) μ)
+theorem cauchy_tendsto_of_tendsto {f : ℕ → α → E} (hf : ∀ n, AEStronglyMeasurable (f n) μ)
(f_lim : α → E) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N)
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
@@ -3080,7 +3080,7 @@ theorem cauchy_tendsto_of_tendsto {f : ℕ → α → E} (hf : ∀ n, AeStrongly
#align measure_theory.Lp.cauchy_tendsto_of_tendsto MeasureTheory.lp.cauchy_tendsto_of_tendsto
theorem memℒp_of_cauchy_tendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf : ∀ n, Memℒp (f n) p μ)
- (f_lim : α → E) (h_lim_meas : AeStronglyMeasurable f_lim μ)
+ (f_lim : α → E) (h_lim_meas : AEStronglyMeasurable f_lim μ)
(h_tendsto : atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)) : Memℒp f_lim p μ :=
by
refine' ⟨h_lim_meas, _⟩
@@ -3352,26 +3352,26 @@ namespace Lp
theorem pow_mul_meas_ge_le_norm (f : lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) (ε : ℝ≥0∞) :
(ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal }) ^ (1 / p.toReal) ≤ ENNReal.ofReal ‖f‖ :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
- pow_mul_meas_ge_le_snorm μ hp_ne_zero hp_ne_top (lp.aeStronglyMeasurable f) ε
+ pow_mul_meas_ge_le_snorm μ hp_ne_zero hp_ne_top (lp.aEStronglyMeasurable f) ε
#align measure_theory.Lp.pow_mul_meas_ge_le_norm MeasureTheory.lp.pow_mul_meas_ge_le_norm
theorem mul_meas_ge_le_pow_norm (f : lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) (ε : ℝ≥0∞) :
ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal } ≤ ENNReal.ofReal ‖f‖ ^ p.toReal :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
- mul_meas_ge_le_pow_snorm μ hp_ne_zero hp_ne_top (lp.aeStronglyMeasurable f) ε
+ mul_meas_ge_le_pow_snorm μ hp_ne_zero hp_ne_top (lp.aEStronglyMeasurable f) ε
#align measure_theory.Lp.mul_meas_ge_le_pow_norm MeasureTheory.lp.mul_meas_ge_le_pow_norm
/-- A version of Markov's inequality with elements of Lp. -/
theorem mul_meas_ge_le_pow_norm' (f : lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
(ε : ℝ≥0∞) : ε ^ p.toReal * μ { x | ε ≤ ‖f x‖₊ } ≤ ENNReal.ofReal ‖f‖ ^ p.toReal :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
- mul_meas_ge_le_pow_snorm' μ hp_ne_zero hp_ne_top (lp.aeStronglyMeasurable f) ε
+ mul_meas_ge_le_pow_snorm' μ hp_ne_zero hp_ne_top (lp.aEStronglyMeasurable f) ε
#align measure_theory.Lp.mul_meas_ge_le_pow_norm' MeasureTheory.lp.mul_meas_ge_le_pow_norm'
theorem meas_ge_le_mul_pow_norm (f : lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) {ε : ℝ≥0∞}
(hε : ε ≠ 0) : μ { x | ε ≤ ‖f x‖₊ } ≤ ε⁻¹ ^ p.toReal * ENNReal.ofReal ‖f‖ ^ p.toReal :=
(ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
- meas_ge_le_mul_pow_snorm μ hp_ne_zero hp_ne_top (lp.aeStronglyMeasurable f) hε
+ meas_ge_le_mul_pow_snorm μ hp_ne_zero hp_ne_top (lp.aEStronglyMeasurable f) hε
#align measure_theory.Lp.meas_ge_le_mul_pow_norm MeasureTheory.lp.meas_ge_le_mul_pow_norm
end Lp
mathlib commit https://github.com/leanprover-community/mathlib/commit/33c67ae661dd8988516ff7f247b0be3018cdd952
@@ -1008,7 +1008,7 @@ theorem snorm'_trim (hm : m ≤ m0) {f : α → E} (hf : strongly_measurable[m]
simp_rw [snorm']
congr 1
refine' lintegral_trim hm _
- refine' @Measurable.pow_const _ _ _ _ _ _ _ m _ (@Measurable.coe_nNReal_eNNReal _ m _ _) _
+ refine' @Measurable.pow_const _ _ _ _ _ _ _ m _ (@Measurable.coe_nnreal_ennreal _ m _ _) _
apply @strongly_measurable.measurable
exact @strongly_measurable.nnnorm α m _ _ _ hf
#align measure_theory.snorm'_trim MeasureTheory.snorm'_trim
@@ -1599,9 +1599,9 @@ theorem ae_bdd_liminf_atTop_rpow_of_snorm_bdd {p : ℝ≥0∞} {f : ℕ → α
have hp : p ≠ 0 := fun h => by simpa [h] using hp0
have hp' : p ≠ ∞ := fun h => by simpa [h] using hp0
refine'
- ae_lt_top (measurable_liminf fun n => (hfmeas n).nnnorm.coe_nNReal_eNNReal.pow_const p.to_real)
+ ae_lt_top (measurable_liminf fun n => (hfmeas n).nnnorm.coe_nnreal_ennreal.pow_const p.to_real)
(lt_of_le_of_lt
- (lintegral_liminf_le fun n => (hfmeas n).nnnorm.coe_nNReal_eNNReal.pow_const p.to_real)
+ (lintegral_liminf_le fun n => (hfmeas n).nnnorm.coe_nnreal_ennreal.pow_const p.to_real)
(lt_of_le_of_lt _
(ENNReal.rpow_lt_top_of_nonneg ENNReal.toReal_nonneg ENNReal.coe_ne_top :
↑R ^ p.to_real < ∞))).Ne
@@ -2964,7 +2964,7 @@ private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, Ae
have rpow_ae_lt_top : ∀ᵐ x ∂μ, (∑' i, ‖f (i + 1) x - f i x‖₊ : ℝ≥0∞) ^ p < ∞ :=
by
refine' ae_lt_top' (AEMeasurable.pow_const _ _) h_integral.ne
- exact AEMeasurable.eNNReal_tsum fun n => ((hf (n + 1)).sub (hf n)).ennnorm
+ exact AEMeasurable.ennreal_tsum fun n => ((hf (n + 1)).sub (hf n)).ennnorm
refine' rpow_ae_lt_top.mono fun x hx => _
rwa [← ENNReal.lt_rpow_one_div_iff hp_pos,
ENNReal.top_rpow_of_pos (by simp [hp_pos] : 0 < 1 / p)] at hx
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -4,12 +4,13 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit 24e0c85412ff6adbeca08022c25ba4876eedf37a
+! leanprover-community/mathlib commit 8f9fea08977f7e450770933ee6abb20733b47c92
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.Analysis.NormedSpace.IndicatorFunction
import Mathbin.Analysis.Normed.Group.Hom
+import Mathbin.Analysis.SpecialFunctions.Pow.Continuity
import Mathbin.MeasureTheory.Function.EssSup
import Mathbin.MeasureTheory.Function.AeEqFun
import Mathbin.MeasureTheory.Integral.MeanInequalities
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit 52932b3a083d4142e78a15dc928084a22fea9ba0
+! leanprover-community/mathlib commit 24e0c85412ff6adbeca08022c25ba4876eedf37a
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,7 +13,6 @@ import Mathbin.Analysis.Normed.Group.Hom
import Mathbin.MeasureTheory.Function.EssSup
import Mathbin.MeasureTheory.Function.AeEqFun
import Mathbin.MeasureTheory.Integral.MeanInequalities
-import Mathbin.MeasureTheory.Function.StronglyMeasurable.Inner
import Mathbin.Topology.ContinuousFunction.Compact
/-!
@@ -1562,48 +1561,27 @@ section IsROrC
variable {𝕜 : Type _} [IsROrC 𝕜] {f : α → 𝕜}
theorem Memℒp.re (hf : Memℒp f p μ) : Memℒp (fun x => IsROrC.re (f x)) p μ :=
- haveI : ∀ x, ‖IsROrC.re (f x)‖ ≤ 1 * ‖f x‖ :=
- by
+ by
+ have : ∀ x, ‖IsROrC.re (f x)‖ ≤ 1 * ‖f x‖ := by
intro x
rw [one_mul]
exact IsROrC.norm_re_le_norm (f x)
- hf.of_le_mul hf.1.re (eventually_of_forall this)
+ refine' hf.of_le_mul _ (eventually_of_forall this)
+ exact is_R_or_C.continuous_re.comp_ae_strongly_measurable hf.1
#align measure_theory.mem_ℒp.re MeasureTheory.Memℒp.re
theorem Memℒp.im (hf : Memℒp f p μ) : Memℒp (fun x => IsROrC.im (f x)) p μ :=
- haveI : ∀ x, ‖IsROrC.im (f x)‖ ≤ 1 * ‖f x‖ :=
- by
+ by
+ have : ∀ x, ‖IsROrC.im (f x)‖ ≤ 1 * ‖f x‖ := by
intro x
rw [one_mul]
exact IsROrC.norm_im_le_norm (f x)
- hf.of_le_mul hf.1.im (eventually_of_forall this)
+ refine' hf.of_le_mul _ (eventually_of_forall this)
+ exact is_R_or_C.continuous_im.comp_ae_strongly_measurable hf.1
#align measure_theory.mem_ℒp.im MeasureTheory.Memℒp.im
end IsROrC
-section InnerProduct
-
-variable {E' 𝕜 : Type _} [IsROrC 𝕜] [NormedAddCommGroup E'] [InnerProductSpace 𝕜 E']
-
--- mathport name: «expr⟪ , ⟫»
-local notation "⟪" x ", " y "⟫" => @inner 𝕜 E' _ x y
-
-theorem Memℒp.const_inner (c : E') {f : α → E'} (hf : Memℒp f p μ) :
- Memℒp (fun a => ⟪c, f a⟫) p μ :=
- hf.of_le_mul (AeStronglyMeasurable.inner aeStronglyMeasurable_const hf.1)
- (eventually_of_forall fun x => norm_inner_le_norm _ _)
-#align measure_theory.mem_ℒp.const_inner MeasureTheory.Memℒp.const_inner
-
-theorem Memℒp.inner_const {f : α → E'} (hf : Memℒp f p μ) (c : E') :
- Memℒp (fun a => ⟪f a, c⟫) p μ :=
- hf.of_le_mul (AeStronglyMeasurable.inner hf.1 aeStronglyMeasurable_const)
- (eventually_of_forall fun x => by
- rw [mul_comm]
- exact norm_inner_le_norm _ _)
-#align measure_theory.mem_ℒp.inner_const MeasureTheory.Memℒp.inner_const
-
-end InnerProduct
-
section Liminf
variable [MeasurableSpace E] [OpensMeasurableSpace E] {R : ℝ≥0}
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -1629,7 +1629,7 @@ theorem ae_bdd_liminf_atTop_rpow_of_snorm_bdd {p : ℝ≥0∞} {f : ℕ → α
simp_rw [snorm_eq_lintegral_rpow_nnnorm hp hp'] at hbdd
simp_rw [liminf_eq, eventually_at_top]
exact
- supₛ_le fun b ⟨a, ha⟩ =>
+ sSup_le fun b ⟨a, ha⟩ =>
(ha a le_rfl).trans ((ENNReal.rpow_one_div_le_iff (ENNReal.toReal_pos hp hp')).1 (hbdd _))
#align measure_theory.ae_bdd_liminf_at_top_rpow_of_snorm_bdd MeasureTheory.ae_bdd_liminf_atTop_rpow_of_snorm_bdd
mathlib commit https://github.com/leanprover-community/mathlib/commit/cc5dd6244981976cc9da7afc4eee5682b037a013
@@ -1271,7 +1271,7 @@ theorem Memℒp.memℒp_of_exponent_le {p q : ℝ≥0∞} [FiniteMeasure μ] {f
exact snorm'_lt_top_of_snorm'_lt_top_of_exponent_le hfq_m hfq_lt_top (le_of_lt hp_pos) hpq_real
#align measure_theory.mem_ℒp.mem_ℒp_of_exponent_le MeasureTheory.Memℒp.memℒp_of_exponent_le
-section HasMeasurableAdd
+section MeasurableAdd
-- variable [has_measurable_add₂ E]
theorem snorm'_sum_le {ι} {f : ι → α → E} {s : Finset ι}
@@ -1319,7 +1319,7 @@ theorem memℒp_finset_sum' {ι} (s : Finset ι) {f : ι → α → E} (hf : ∀
simp
#align measure_theory.mem_ℒp_finset_sum' MeasureTheory.memℒp_finset_sum'
-end HasMeasurableAdd
+end MeasurableAdd
section NormedSpace
@@ -2965,7 +2965,7 @@ private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E
refine' (lintegral_liminf_le' _).trans _
·
exact fun n =>
- (Finset.aEMeasurable_sum (Finset.range (n + 1)) fun i _ =>
+ (Finset.aemeasurable_sum (Finset.range (n + 1)) fun i _ =>
((hf (i + 1)).sub (hf i)).ennnorm).pow_const
_
· exact liminf_le_of_frequently_le' (frequently_of_forall h)
mathlib commit https://github.com/leanprover-community/mathlib/commit/cc5dd6244981976cc9da7afc4eee5682b037a013
@@ -3259,7 +3259,7 @@ theorem toLp_norm_le [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] :
LinearMap.mkContinuous_norm_le _ (measureUnivNNReal μ ^ p.toReal⁻¹).coe_nonneg _
#align bounded_continuous_function.to_Lp_norm_le BoundedContinuousFunction.toLp_norm_le
-theorem toLp_inj {f g : α →ᵇ E} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
+theorem toLp_inj {f g : α →ᵇ E} [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
toLp p μ 𝕜 f = toLp p μ 𝕜 g ↔ f = g :=
by
refine' ⟨fun h => _, by tauto⟩
@@ -3268,7 +3268,7 @@ theorem toLp_inj {f g : α →ᵇ E} [μ.IsOpenPosMeasure] [NormedField 𝕜] [N
rw [h]
#align bounded_continuous_function.to_Lp_inj BoundedContinuousFunction.toLp_inj
-theorem toLp_injective [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
+theorem toLp_injective [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
Function.Injective ⇑(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] lp E p μ) := fun f g hfg => (toLp_inj μ).mp hfg
#align bounded_continuous_function.to_Lp_injective BoundedContinuousFunction.toLp_injective
@@ -3325,12 +3325,12 @@ theorem coe_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) :
rfl
#align continuous_map.coe_to_Lp ContinuousMap.coe_toLp
-theorem toLp_injective [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
+theorem toLp_injective [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
Function.Injective ⇑(toLp p μ 𝕜 : C(α, E) →L[𝕜] lp E p μ) :=
(BoundedContinuousFunction.toLp_injective _).comp (linearIsometryBoundedOfCompact α E 𝕜).Injective
#align continuous_map.to_Lp_injective ContinuousMap.toLp_injective
-theorem toLp_inj {f g : C(α, E)} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
+theorem toLp_inj {f g : C(α, E)} [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
toLp p μ 𝕜 f = toLp p μ 𝕜 g ↔ f = g :=
(toLp_injective μ).eq_iff
#align continuous_map.to_Lp_inj ContinuousMap.toLp_inj
@@ -3339,7 +3339,7 @@ variable {μ}
/-- If a sum of continuous functions `g n` is convergent, and the same sum converges in `Lᵖ` to `h`,
then in fact `g n` converges uniformly to `h`. -/
-theorem hasSum_of_hasSum_lp {β : Type _} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E]
+theorem hasSum_of_hasSum_lp {β : Type _} [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E]
{g : β → C(α, E)} {f : C(α, E)} (hg : Summable g)
(hg2 : HasSum (toLp p μ 𝕜 ∘ g) (toLp p μ 𝕜 f)) : HasSum g f :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/d4437c68c8d350fc9d4e95e1e174409db35e30d7
@@ -307,7 +307,7 @@ theorem snorm'_const (c : F) (hq_pos : 0 < q) :
rw [one_div, mul_inv_cancel (ne_of_lt hq_pos).symm]
#align measure_theory.snorm'_const MeasureTheory.snorm'_const
-theorem snorm'_const' [IsFiniteMeasure μ] (c : F) (hc_ne_zero : c ≠ 0) (hq_ne_zero : q ≠ 0) :
+theorem snorm'_const' [FiniteMeasure μ] (c : F) (hc_ne_zero : c ≠ 0) (hq_ne_zero : q ≠ 0) :
snorm' (fun x : α => c) q μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / q) :=
by
rw [snorm', lintegral_const, ENNReal.mul_rpow_of_ne_top _ (measure_ne_top μ Set.univ)]
@@ -327,9 +327,9 @@ theorem snormEssSup_const (c : F) (hμ : μ ≠ 0) : snormEssSup (fun x : α =>
by rw [snorm_ess_sup, essSup_const _ hμ]
#align measure_theory.snorm_ess_sup_const MeasureTheory.snormEssSup_const
-theorem snorm'_const_of_isProbabilityMeasure (c : F) (hq_pos : 0 < q) [IsProbabilityMeasure μ] :
+theorem snorm'_const_of_probabilityMeasure (c : F) (hq_pos : 0 < q) [ProbabilityMeasure μ] :
snorm' (fun x : α => c) q μ = (‖c‖₊ : ℝ≥0∞) := by simp [snorm'_const c hq_pos, measure_univ]
-#align measure_theory.snorm'_const_of_is_probability_measure MeasureTheory.snorm'_const_of_isProbabilityMeasure
+#align measure_theory.snorm'_const_of_is_probability_measure MeasureTheory.snorm'_const_of_probabilityMeasure
theorem snorm_const (c : F) (h0 : p ≠ 0) (hμ : μ ≠ 0) :
snorm (fun x : α => c) p μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / ENNReal.toReal p) :=
@@ -365,7 +365,7 @@ theorem snorm_const_lt_top_iff {p : ℝ≥0∞} {c : F} (hp_ne_zero : p ≠ 0) (
exact ENNReal.rpow_lt_top_of_nonneg (inv_nonneg.mpr hp.le) hμ_top
#align measure_theory.snorm_const_lt_top_iff MeasureTheory.snorm_const_lt_top_iff
-theorem memℒp_const (c : E) [IsFiniteMeasure μ] : Memℒp (fun a : α => c) p μ :=
+theorem memℒp_const (c : E) [FiniteMeasure μ] : Memℒp (fun a : α => c) p μ :=
by
refine' ⟨ae_strongly_measurable_const, _⟩
by_cases h0 : p = 0
@@ -576,7 +576,7 @@ theorem memℒp_top_of_bound {f : α → E} (hf : AeStronglyMeasurable f μ) (C
exact snorm_ess_sup_lt_top_of_ae_bound hfC⟩
#align measure_theory.mem_ℒp_top_of_bound MeasureTheory.memℒp_top_of_bound
-theorem Memℒp.of_bound [IsFiniteMeasure μ] {f : α → E} (hf : AeStronglyMeasurable f μ) (C : ℝ)
+theorem Memℒp.of_bound [FiniteMeasure μ] {f : α → E} (hf : AeStronglyMeasurable f μ) (C : ℝ)
(hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : Memℒp f p μ :=
(memℒp_const C).of_le hf (hfC.mono fun x hx => le_trans hx (le_abs_self _))
#align measure_theory.mem_ℒp.of_bound MeasureTheory.Memℒp.of_bound
@@ -1154,24 +1154,24 @@ theorem snorm_le_snorm_mul_rpow_measure_univ {p q : ℝ≥0∞} (hpq : p ≤ q)
#align measure_theory.snorm_le_snorm_mul_rpow_measure_univ MeasureTheory.snorm_le_snorm_mul_rpow_measure_univ
theorem snorm'_le_snorm'_of_exponent_le {m : MeasurableSpace α} {p q : ℝ} (hp0_lt : 0 < p)
- (hpq : p ≤ q) (μ : Measure α) [IsProbabilityMeasure μ] {f : α → E}
+ (hpq : p ≤ q) (μ : Measure α) [ProbabilityMeasure μ] {f : α → E}
(hf : AeStronglyMeasurable f μ) : snorm' f p μ ≤ snorm' f q μ :=
by
have h_le_μ := snorm'_le_snorm'_mul_rpow_measure_univ hp0_lt hpq hf
rwa [measure_univ, ENNReal.one_rpow, mul_one] at h_le_μ
#align measure_theory.snorm'_le_snorm'_of_exponent_le MeasureTheory.snorm'_le_snorm'_of_exponent_le
-theorem snorm'_le_snormEssSup (hq_pos : 0 < q) {f : α → F} [IsProbabilityMeasure μ] :
+theorem snorm'_le_snormEssSup (hq_pos : 0 < q) {f : α → F} [ProbabilityMeasure μ] :
snorm' f q μ ≤ snormEssSup f μ :=
le_trans (snorm'_le_snormEssSup_mul_rpow_measure_univ hq_pos) (le_of_eq (by simp [measure_univ]))
#align measure_theory.snorm'_le_snorm_ess_sup MeasureTheory.snorm'_le_snormEssSup
-theorem snorm_le_snorm_of_exponent_le {p q : ℝ≥0∞} (hpq : p ≤ q) [IsProbabilityMeasure μ]
- {f : α → E} (hf : AeStronglyMeasurable f μ) : snorm f p μ ≤ snorm f q μ :=
+theorem snorm_le_snorm_of_exponent_le {p q : ℝ≥0∞} (hpq : p ≤ q) [ProbabilityMeasure μ] {f : α → E}
+ (hf : AeStronglyMeasurable f μ) : snorm f p μ ≤ snorm f q μ :=
(snorm_le_snorm_mul_rpow_measure_univ hpq hf).trans (le_of_eq (by simp [measure_univ]))
#align measure_theory.snorm_le_snorm_of_exponent_le MeasureTheory.snorm_le_snorm_of_exponent_le
-theorem snorm'_lt_top_of_snorm'_lt_top_of_exponent_le {p q : ℝ} [IsFiniteMeasure μ] {f : α → E}
+theorem snorm'_lt_top_of_snorm'_lt_top_of_exponent_le {p q : ℝ} [FiniteMeasure μ] {f : α → E}
(hf : AeStronglyMeasurable f μ) (hfq_lt_top : snorm' f q μ < ∞) (hp_nonneg : 0 ≤ p)
(hpq : p ≤ q) : snorm' f p μ < ∞ :=
by
@@ -1241,7 +1241,7 @@ theorem meas_ge_le_mul_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
variable {μ}
-theorem Memℒp.memℒp_of_exponent_le {p q : ℝ≥0∞} [IsFiniteMeasure μ] {f : α → E} (hfq : Memℒp f q μ)
+theorem Memℒp.memℒp_of_exponent_le {p q : ℝ≥0∞} [FiniteMeasure μ] {f : α → E} (hfq : Memℒp f q μ)
(hpq : p ≤ q) : Memℒp f p μ :=
by
cases' hfq with hfq_m hfq_lt_top
@@ -1774,7 +1774,7 @@ theorem mem_lp_iff_memℒp {f : α →ₘ[μ] E} : f ∈ lp E p μ ↔ Memℒp f
simp [mem_Lp_iff_snorm_lt_top, mem_ℒp, f.strongly_measurable.ae_strongly_measurable]
#align measure_theory.Lp.mem_Lp_iff_mem_ℒp MeasureTheory.lp.mem_lp_iff_memℒp
-protected theorem antitone [IsFiniteMeasure μ] {p q : ℝ≥0∞} (hpq : p ≤ q) : lp E q μ ≤ lp E p μ :=
+protected theorem antitone [FiniteMeasure μ] {p q : ℝ≥0∞} (hpq : p ≤ q) : lp E q μ ≤ lp E p μ :=
fun f hf => (Memℒp.memℒp_of_exponent_le ⟨f.AeStronglyMeasurable, hf⟩ hpq).2
#align measure_theory.Lp.antitone MeasureTheory.lp.antitone
@@ -1837,7 +1837,7 @@ theorem coeFn_sub (f g : lp E p μ) : ⇑(f - g) =ᵐ[μ] f - g :=
AeEqFun.coeFn_sub _ _
#align measure_theory.Lp.coe_fn_sub MeasureTheory.lp.coeFn_sub
-theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [IsFiniteMeasure μ] :
+theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [FiniteMeasure μ] :
@AeEqFun.const α _ _ μ _ c ∈ lp E p μ :=
(memℒp_const c).snorm_mk_lt_top
#align measure_theory.Lp.mem_Lp_const MeasureTheory.lp.mem_lp_const
@@ -1948,13 +1948,13 @@ theorem mem_lp_of_ae_le {f : α →ₘ[μ] E} {g : lp F p μ} (h : ∀ᵐ x ∂
mem_lp_iff_memℒp.2 <| Memℒp.of_le (lp.memℒp g) f.AeStronglyMeasurable h
#align measure_theory.Lp.mem_Lp_of_ae_le MeasureTheory.lp.mem_lp_of_ae_le
-theorem mem_lp_of_ae_bound [IsFiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ) (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
+theorem mem_lp_of_ae_bound [FiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ) (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
f ∈ lp E p μ :=
mem_lp_iff_memℒp.2 <| Memℒp.of_bound f.AeStronglyMeasurable _ hfC
#align measure_theory.Lp.mem_Lp_of_ae_bound MeasureTheory.lp.mem_lp_of_ae_bound
-theorem norm_le_of_ae_bound [IsFiniteMeasure μ] {f : lp E p μ} {C : ℝ} (hC : 0 ≤ C)
- (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : ‖f‖ ≤ measureUnivNnreal μ ^ p.toReal⁻¹ * C :=
+theorem norm_le_of_ae_bound [FiniteMeasure μ] {f : lp E p μ} {C : ℝ} (hC : 0 ≤ C)
+ (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : ‖f‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ * C :=
by
by_cases hμ : μ = 0
· by_cases hp : p.to_real⁻¹ = 0
@@ -3183,7 +3183,7 @@ theorem MeasureTheory.lp.mem_boundedContinuousFunction_iff {f : lp E p μ} :
namespace BoundedContinuousFunction
-variable [IsFiniteMeasure μ]
+variable [FiniteMeasure μ]
/-- A bounded continuous function on a finite-measure space is in `Lp`. -/
theorem mem_lp (f : α →ᵇ E) : f.toContinuousMap.toAeEqFun μ ∈ lp E p μ :=
@@ -3197,7 +3197,7 @@ theorem mem_lp (f : α →ᵇ E) : f.toContinuousMap.toAeEqFun μ ∈ lp E p μ
of the whole space) times its sup-norm. -/
theorem lp_norm_le (f : α →ᵇ E) :
‖(⟨f.toContinuousMap.toAeEqFun μ, mem_lp f⟩ : lp E p μ)‖ ≤
- measureUnivNnreal μ ^ p.toReal⁻¹ * ‖f‖ :=
+ measureUnivNNReal μ ^ p.toReal⁻¹ * ‖f‖ :=
by
apply Lp.norm_le_of_ae_bound (norm_nonneg f)
· refine' (f.to_continuous_map.coe_fn_to_ae_eq_fun μ).mono _
@@ -3255,8 +3255,8 @@ theorem range_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] :
variable {p}
theorem toLp_norm_le [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] :
- ‖(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] lp E p μ)‖ ≤ measureUnivNnreal μ ^ p.toReal⁻¹ :=
- LinearMap.mkContinuous_norm_le _ (measureUnivNnreal μ ^ p.toReal⁻¹).coe_nonneg _
+ ‖(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] lp E p μ)‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ :=
+ LinearMap.mkContinuous_norm_le _ (measureUnivNNReal μ ^ p.toReal⁻¹).coe_nonneg _
#align bounded_continuous_function.to_Lp_norm_le BoundedContinuousFunction.toLp_norm_le
theorem toLp_inj {f g : α →ᵇ E} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
@@ -3276,7 +3276,7 @@ end BoundedContinuousFunction
namespace ContinuousMap
-variable [CompactSpace α] [IsFiniteMeasure μ]
+variable [CompactSpace α] [FiniteMeasure μ]
variable (𝕜 : Type _) (p μ) [Fact (1 ≤ p)]
@@ -3356,7 +3356,7 @@ theorem toLp_norm_eq_toLp_norm_coe :
#align continuous_map.to_Lp_norm_eq_to_Lp_norm_coe ContinuousMap.toLp_norm_eq_toLp_norm_coe
/-- Bound for the operator norm of `continuous_map.to_Lp`. -/
-theorem toLp_norm_le : ‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] lp E p μ)‖ ≤ measureUnivNnreal μ ^ p.toReal⁻¹ :=
+theorem toLp_norm_le : ‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] lp E p μ)‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ :=
by
rw [to_Lp_norm_eq_to_Lp_norm_coe]
exact BoundedContinuousFunction.toLp_norm_le μ
mathlib commit https://github.com/leanprover-community/mathlib/commit/92c69b77c5a7dc0f7eeddb552508633305157caa
@@ -254,14 +254,14 @@ theorem snorm_zero : snorm (0 : α → F) p μ = 0 :=
theorem snorm_zero' : snorm (fun x : α => (0 : F)) p μ = 0 := by convert snorm_zero
#align measure_theory.snorm_zero' MeasureTheory.snorm_zero'
-theorem zeroMemℒp : Memℒp (0 : α → E) p μ :=
- ⟨ae_strongly_measurable_zero, by
+theorem zero_memℒp : Memℒp (0 : α → E) p μ :=
+ ⟨aeStronglyMeasurable_zero, by
rw [snorm_zero]
exact ENNReal.coe_lt_top⟩
-#align measure_theory.zero_mem_ℒp MeasureTheory.zeroMemℒp
+#align measure_theory.zero_mem_ℒp MeasureTheory.zero_memℒp
-theorem zeroMemℒp' : Memℒp (fun x : α => (0 : E)) p μ := by convert zero_mem_ℒp
-#align measure_theory.zero_mem_ℒp' MeasureTheory.zeroMemℒp'
+theorem zero_mem_ℒp' : Memℒp (fun x : α => (0 : E)) p μ := by convert zero_mem_ℒp
+#align measure_theory.zero_mem_ℒp' MeasureTheory.zero_mem_ℒp'
variable [MeasurableSpace α]
@@ -365,7 +365,7 @@ theorem snorm_const_lt_top_iff {p : ℝ≥0∞} {c : F} (hp_ne_zero : p ≠ 0) (
exact ENNReal.rpow_lt_top_of_nonneg (inv_nonneg.mpr hp.le) hμ_top
#align measure_theory.snorm_const_lt_top_iff MeasureTheory.snorm_const_lt_top_iff
-theorem memℒpConst (c : E) [IsFiniteMeasure μ] : Memℒp (fun a : α => c) p μ :=
+theorem memℒp_const (c : E) [IsFiniteMeasure μ] : Memℒp (fun a : α => c) p μ :=
by
refine' ⟨ae_strongly_measurable_const, _⟩
by_cases h0 : p = 0
@@ -376,16 +376,16 @@ theorem memℒpConst (c : E) [IsFiniteMeasure μ] : Memℒp (fun a : α => c) p
refine' ENNReal.mul_lt_top ENNReal.coe_ne_top _
refine' (ENNReal.rpow_lt_top_of_nonneg _ (measure_ne_top μ Set.univ)).Ne
simp
-#align measure_theory.mem_ℒp_const MeasureTheory.memℒpConst
+#align measure_theory.mem_ℒp_const MeasureTheory.memℒp_const
-theorem memℒpTopConst (c : E) : Memℒp (fun a : α => c) ∞ μ :=
+theorem memℒp_top_const (c : E) : Memℒp (fun a : α => c) ∞ μ :=
by
refine' ⟨ae_strongly_measurable_const, _⟩
by_cases h : μ = 0
· simp only [h, snorm_measure_zero, WithTop.zero_lt_top]
· rw [snorm_const _ ENNReal.top_ne_zero h]
simp only [ENNReal.top_toReal, div_zero, ENNReal.rpow_zero, mul_one, ENNReal.coe_lt_top]
-#align measure_theory.mem_ℒp_top_const MeasureTheory.memℒpTopConst
+#align measure_theory.mem_ℒp_top_const MeasureTheory.memℒp_top_const
theorem memℒp_const_iff {p : ℝ≥0∞} {c : E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) :
Memℒp (fun x : α => c) p μ ↔ c = 0 ∨ μ Set.univ < ∞ :=
@@ -542,14 +542,14 @@ theorem memℒp_congr_ae {f g : α → E} (hfg : f =ᵐ[μ] g) : Memℒp f p μ
simp only [mem_ℒp, snorm_congr_ae hfg, aeStronglyMeasurable_congr hfg]
#align measure_theory.mem_ℒp_congr_ae MeasureTheory.memℒp_congr_ae
-theorem Memℒp.aeEq {f g : α → E} (hfg : f =ᵐ[μ] g) (hf_Lp : Memℒp f p μ) : Memℒp g p μ :=
+theorem Memℒp.ae_eq {f g : α → E} (hfg : f =ᵐ[μ] g) (hf_Lp : Memℒp f p μ) : Memℒp g p μ :=
(memℒp_congr_ae hfg).1 hf_Lp
-#align measure_theory.mem_ℒp.ae_eq MeasureTheory.Memℒp.aeEq
+#align measure_theory.mem_ℒp.ae_eq MeasureTheory.Memℒp.ae_eq
-theorem Memℒp.ofLe {f : α → E} {g : α → F} (hg : Memℒp g p μ) (hf : AeStronglyMeasurable f μ)
+theorem Memℒp.of_le {f : α → E} {g : α → F} (hg : Memℒp g p μ) (hf : AeStronglyMeasurable f μ)
(hfg : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) : Memℒp f p μ :=
⟨hf, (snorm_mono_ae hfg).trans_lt hg.snorm_lt_top⟩
-#align measure_theory.mem_ℒp.of_le MeasureTheory.Memℒp.ofLe
+#align measure_theory.mem_ℒp.of_le MeasureTheory.Memℒp.of_le
alias mem_ℒp.of_le ← mem_ℒp.mono
#align measure_theory.mem_ℒp.mono MeasureTheory.Memℒp.mono
@@ -559,27 +559,27 @@ theorem Memℒp.mono' {f : α → E} {g : α → ℝ} (hg : Memℒp g p μ) (hf
hg.mono hf <| h.mono fun x hx => le_trans hx (le_abs_self _)
#align measure_theory.mem_ℒp.mono' MeasureTheory.Memℒp.mono'
-theorem Memℒp.congrNorm {f : α → E} {g : α → F} (hf : Memℒp f p μ) (hg : AeStronglyMeasurable g μ)
+theorem Memℒp.congr_norm {f : α → E} {g : α → F} (hf : Memℒp f p μ) (hg : AeStronglyMeasurable g μ)
(h : ∀ᵐ a ∂μ, ‖f a‖ = ‖g a‖) : Memℒp g p μ :=
hf.mono hg <| EventuallyEq.le <| EventuallyEq.symm h
-#align measure_theory.mem_ℒp.congr_norm MeasureTheory.Memℒp.congrNorm
+#align measure_theory.mem_ℒp.congr_norm MeasureTheory.Memℒp.congr_norm
theorem memℒp_congr_norm {f : α → E} {g : α → F} (hf : AeStronglyMeasurable f μ)
(hg : AeStronglyMeasurable g μ) (h : ∀ᵐ a ∂μ, ‖f a‖ = ‖g a‖) : Memℒp f p μ ↔ Memℒp g p μ :=
- ⟨fun h2f => h2f.congrNorm hg h, fun h2g => h2g.congrNorm hf <| EventuallyEq.symm h⟩
+ ⟨fun h2f => h2f.congr_norm hg h, fun h2g => h2g.congr_norm hf <| EventuallyEq.symm h⟩
#align measure_theory.mem_ℒp_congr_norm MeasureTheory.memℒp_congr_norm
-theorem memℒpTopOfBound {f : α → E} (hf : AeStronglyMeasurable f μ) (C : ℝ)
+theorem memℒp_top_of_bound {f : α → E} (hf : AeStronglyMeasurable f μ) (C : ℝ)
(hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : Memℒp f ∞ μ :=
⟨hf, by
rw [snorm_exponent_top]
exact snorm_ess_sup_lt_top_of_ae_bound hfC⟩
-#align measure_theory.mem_ℒp_top_of_bound MeasureTheory.memℒpTopOfBound
+#align measure_theory.mem_ℒp_top_of_bound MeasureTheory.memℒp_top_of_bound
-theorem Memℒp.ofBound [IsFiniteMeasure μ] {f : α → E} (hf : AeStronglyMeasurable f μ) (C : ℝ)
+theorem Memℒp.of_bound [IsFiniteMeasure μ] {f : α → E} (hf : AeStronglyMeasurable f μ) (C : ℝ)
(hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : Memℒp f p μ :=
- (memℒpConst C).of_le hf (hfC.mono fun x hx => le_trans hx (le_abs_self _))
-#align measure_theory.mem_ℒp.of_bound MeasureTheory.Memℒp.ofBound
+ (memℒp_const C).of_le hf (hfC.mono fun x hx => le_trans hx (le_abs_self _))
+#align measure_theory.mem_ℒp.of_bound MeasureTheory.Memℒp.of_bound
@[mono]
theorem snorm'_mono_measure (f : α → F) (hμν : ν ≤ μ) (hq : 0 ≤ q) : snorm' f q ν ≤ snorm' f q μ :=
@@ -608,12 +608,12 @@ theorem snorm_mono_measure (f : α → F) (hμν : ν ≤ μ) : snorm f p ν ≤
exact snorm'_mono_measure f hμν ENNReal.toReal_nonneg
#align measure_theory.snorm_mono_measure MeasureTheory.snorm_mono_measure
-theorem Memℒp.monoMeasure {f : α → E} (hμν : ν ≤ μ) (hf : Memℒp f p μ) : Memℒp f p ν :=
- ⟨hf.1.monoMeasure hμν, (snorm_mono_measure f hμν).trans_lt hf.2⟩
-#align measure_theory.mem_ℒp.mono_measure MeasureTheory.Memℒp.monoMeasure
+theorem Memℒp.mono_measure {f : α → E} (hμν : ν ≤ μ) (hf : Memℒp f p μ) : Memℒp f p ν :=
+ ⟨hf.1.mono_measure hμν, (snorm_mono_measure f hμν).trans_lt hf.2⟩
+#align measure_theory.mem_ℒp.mono_measure MeasureTheory.Memℒp.mono_measure
theorem Memℒp.restrict (s : Set α) {f : α → E} (hf : Memℒp f p μ) : Memℒp f p (μ.restrict s) :=
- hf.monoMeasure Measure.restrict_le_self
+ hf.mono_measure Measure.restrict_le_self
#align measure_theory.mem_ℒp.restrict MeasureTheory.Memℒp.restrict
theorem snorm'_smul_measure {p : ℝ} (hp : 0 ≤ p) {f : α → F} (c : ℝ≥0∞) :
@@ -666,7 +666,7 @@ theorem snorm_one_smul_measure {f : α → F} (c : ℝ≥0∞) : snorm f 1 (c
simp
#align measure_theory.snorm_one_smul_measure MeasureTheory.snorm_one_smul_measure
-theorem Memℒp.ofMeasureLeSmul {μ' : Measure α} (c : ℝ≥0∞) (hc : c ≠ ∞) (hμ'_le : μ' ≤ c • μ)
+theorem Memℒp.of_measure_le_smul {μ' : Measure α} (c : ℝ≥0∞) (hc : c ≠ ∞) (hμ'_le : μ' ≤ c • μ)
{f : α → E} (hf : Memℒp f p μ) : Memℒp f p μ' :=
by
refine' ⟨hf.1.mono' (measure.absolutely_continuous_of_le_smul hμ'_le), _⟩
@@ -676,12 +676,12 @@ theorem Memℒp.ofMeasureLeSmul {μ' : Measure α} (c : ℝ≥0∞) (hc : c ≠
rw [snorm_smul_measure_of_ne_zero hc0, smul_eq_mul]
refine' ENNReal.mul_lt_top _ hf.2.Ne
simp [hc, hc0]
-#align measure_theory.mem_ℒp.of_measure_le_smul MeasureTheory.Memℒp.ofMeasureLeSmul
+#align measure_theory.mem_ℒp.of_measure_le_smul MeasureTheory.Memℒp.of_measure_le_smul
-theorem Memℒp.smulMeasure {f : α → E} {c : ℝ≥0∞} (hf : Memℒp f p μ) (hc : c ≠ ∞) :
+theorem Memℒp.smul_measure {f : α → E} {c : ℝ≥0∞} (hf : Memℒp f p μ) (hc : c ≠ ∞) :
Memℒp f p (c • μ) :=
- hf.ofMeasureLeSmul c hc le_rfl
-#align measure_theory.mem_ℒp.smul_measure MeasureTheory.Memℒp.smulMeasure
+ hf.of_measure_le_smul c hc le_rfl
+#align measure_theory.mem_ℒp.smul_measure MeasureTheory.Memℒp.smul_measure
include m
@@ -704,13 +704,13 @@ theorem snorm_le_add_measure_left (f : α → F) (μ ν : Measure α) {p : ℝ
omit m
-theorem Memℒp.leftOfAddMeasure {f : α → E} (h : Memℒp f p (μ + ν)) : Memℒp f p μ :=
- h.monoMeasure <| Measure.le_add_right <| le_refl _
-#align measure_theory.mem_ℒp.left_of_add_measure MeasureTheory.Memℒp.leftOfAddMeasure
+theorem Memℒp.left_of_add_measure {f : α → E} (h : Memℒp f p (μ + ν)) : Memℒp f p μ :=
+ h.mono_measure <| Measure.le_add_right <| le_refl _
+#align measure_theory.mem_ℒp.left_of_add_measure MeasureTheory.Memℒp.left_of_add_measure
-theorem Memℒp.rightOfAddMeasure {f : α → E} (h : Memℒp f p (μ + ν)) : Memℒp f p ν :=
- h.monoMeasure <| Measure.le_add_left <| le_refl _
-#align measure_theory.mem_ℒp.right_of_add_measure MeasureTheory.Memℒp.rightOfAddMeasure
+theorem Memℒp.right_of_add_measure {f : α → E} (h : Memℒp f p (μ + ν)) : Memℒp f p ν :=
+ h.mono_measure <| Measure.le_add_left <| le_refl _
+#align measure_theory.mem_ℒp.right_of_add_measure MeasureTheory.Memℒp.right_of_add_measure
theorem Memℒp.norm {f : α → E} (h : Memℒp f p μ) : Memℒp (fun x => ‖f x‖) p μ :=
h.of_le h.AeStronglyMeasurable.norm (eventually_of_forall fun x => by simp)
@@ -948,11 +948,11 @@ variable {β : Type _} {mβ : MeasurableSpace β} {f : α → β} {g : β → E}
include mβ
theorem snormEssSup_map_measure (hg : AeStronglyMeasurable g (Measure.map f μ))
- (hf : AeMeasurable f μ) : snormEssSup g (Measure.map f μ) = snormEssSup (g ∘ f) μ :=
+ (hf : AEMeasurable f μ) : snormEssSup g (Measure.map f μ) = snormEssSup (g ∘ f) μ :=
essSup_map_measure hg.ennnorm hf
#align measure_theory.snorm_ess_sup_map_measure MeasureTheory.snormEssSup_map_measure
-theorem snorm_map_measure (hg : AeStronglyMeasurable g (Measure.map f μ)) (hf : AeMeasurable f μ) :
+theorem snorm_map_measure (hg : AeStronglyMeasurable g (Measure.map f μ)) (hf : AEMeasurable f μ) :
snorm g p (Measure.map f μ) = snorm (g ∘ f) p μ :=
by
by_cases hp_zero : p = 0
@@ -965,7 +965,7 @@ theorem snorm_map_measure (hg : AeStronglyMeasurable g (Measure.map f μ)) (hf :
#align measure_theory.snorm_map_measure MeasureTheory.snorm_map_measure
theorem memℒp_map_measure_iff (hg : AeStronglyMeasurable g (Measure.map f μ))
- (hf : AeMeasurable f μ) : Memℒp g p (Measure.map f μ) ↔ Memℒp (g ∘ f) p μ := by
+ (hf : AEMeasurable f μ) : Memℒp g p (Measure.map f μ) ↔ Memℒp (g ∘ f) p μ := by
simp [mem_ℒp, snorm_map_measure hg hf, hg.comp_ae_measurable hf, hg]
#align measure_theory.mem_ℒp_map_measure_iff MeasureTheory.memℒp_map_measure_iff
@@ -1055,10 +1055,10 @@ theorem snorm_trim_ae (hm : m ≤ m0) {f : α → E} (hf : AeStronglyMeasurable
exact snorm_trim hm hf.strongly_measurable_mk
#align measure_theory.snorm_trim_ae MeasureTheory.snorm_trim_ae
-theorem memℒpOfMemℒpTrim (hm : m ≤ m0) {f : α → E} (hf : Memℒp f p (ν.trim hm)) : Memℒp f p ν :=
- ⟨aeStronglyMeasurableOfAeStronglyMeasurableTrim hm hf.1,
+theorem memℒp_of_memℒp_trim (hm : m ≤ m0) {f : α → E} (hf : Memℒp f p (ν.trim hm)) : Memℒp f p ν :=
+ ⟨aeStronglyMeasurable_of_aeStronglyMeasurable_trim hm hf.1,
(le_of_eq (snorm_trim_ae hm hf.1).symm).trans_lt hf.2⟩
-#align measure_theory.mem_ℒp_of_mem_ℒp_trim MeasureTheory.memℒpOfMemℒpTrim
+#align measure_theory.mem_ℒp_of_mem_ℒp_trim MeasureTheory.memℒp_of_memℒp_trim
end Trim
@@ -1105,7 +1105,7 @@ theorem snorm'_le_snorm'_mul_rpow_measure_univ {p q : ℝ} (hp0_lt : 0 < p) (hpq
calc
(∫⁻ a : α, (↑‖f a‖₊ * g a) ^ p ∂μ) ^ (1 / p) ≤
(∫⁻ a : α, ↑‖f a‖₊ ^ q ∂μ) ^ (1 / q) * (∫⁻ a : α, g a ^ r ∂μ) ^ (1 / r) :=
- ENNReal.lintegral_Lp_mul_le_Lq_mul_Lr hp0_lt hpq hpqr μ hf.ennnorm aeMeasurableConst
+ ENNReal.lintegral_Lp_mul_le_Lq_mul_Lr hp0_lt hpq hpqr μ hf.ennnorm aemeasurable_const
_ = (∫⁻ a : α, ↑‖f a‖₊ ^ q ∂μ) ^ (1 / q) * μ Set.univ ^ (1 / p - 1 / q) := by simp [hpqr]
#align measure_theory.snorm'_le_snorm'_mul_rpow_measure_univ MeasureTheory.snorm'_le_snorm'_mul_rpow_measure_univ
@@ -1241,7 +1241,7 @@ theorem meas_ge_le_mul_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
variable {μ}
-theorem Memℒp.memℒpOfExponentLe {p q : ℝ≥0∞} [IsFiniteMeasure μ] {f : α → E} (hfq : Memℒp f q μ)
+theorem Memℒp.memℒp_of_exponent_le {p q : ℝ≥0∞} [IsFiniteMeasure μ] {f : α → E} (hfq : Memℒp f q μ)
(hpq : p ≤ q) : Memℒp f p μ :=
by
cases' hfq with hfq_m hfq_lt_top
@@ -1269,7 +1269,7 @@ theorem Memℒp.memℒpOfExponentLe {p q : ℝ≥0∞} [IsFiniteMeasure μ] {f :
rw [snorm_eq_snorm' hp0 hp_top]
rw [snorm_eq_snorm' hq0 hq_top] at hfq_lt_top
exact snorm'_lt_top_of_snorm'_lt_top_of_exponent_le hfq_m hfq_lt_top (le_of_lt hp_pos) hpq_real
-#align measure_theory.mem_ℒp.mem_ℒp_of_exponent_le MeasureTheory.Memℒp.memℒpOfExponentLe
+#align measure_theory.mem_ℒp.mem_ℒp_of_exponent_le MeasureTheory.Memℒp.memℒp_of_exponent_le
section HasMeasurableAdd
@@ -1300,7 +1300,7 @@ theorem Memℒp.sub {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ)
exact hf.add hg.neg
#align measure_theory.mem_ℒp.sub MeasureTheory.Memℒp.sub
-theorem memℒpFinsetSum {ι} (s : Finset ι) {f : ι → α → E} (hf : ∀ i ∈ s, Memℒp (f i) p μ) :
+theorem memℒp_finset_sum {ι} (s : Finset ι) {f : ι → α → E} (hf : ∀ i ∈ s, Memℒp (f i) p μ) :
Memℒp (fun a => ∑ i in s, f i a) p μ :=
by
haveI : DecidableEq ι := Classical.decEq _
@@ -1310,14 +1310,14 @@ theorem memℒpFinsetSum {ι} (s : Finset ι) {f : ι → α → E} (hf : ∀ i
· intro i s his ih hf
simp only [his, Finset.sum_insert, not_false_iff]
exact (hf i (s.mem_insert_self i)).add (ih fun j hj => hf j (Finset.mem_insert_of_mem hj))
-#align measure_theory.mem_ℒp_finset_sum MeasureTheory.memℒpFinsetSum
+#align measure_theory.mem_ℒp_finset_sum MeasureTheory.memℒp_finset_sum
-theorem memℒpFinsetSum' {ι} (s : Finset ι) {f : ι → α → E} (hf : ∀ i ∈ s, Memℒp (f i) p μ) :
+theorem memℒp_finset_sum' {ι} (s : Finset ι) {f : ι → α → E} (hf : ∀ i ∈ s, Memℒp (f i) p μ) :
Memℒp (∑ i in s, f i) p μ := by
convert mem_ℒp_finset_sum s hf
ext x
simp
-#align measure_theory.mem_ℒp_finset_sum' MeasureTheory.memℒpFinsetSum'
+#align measure_theory.mem_ℒp_finset_sum' MeasureTheory.memℒp_finset_sum'
end HasMeasurableAdd
@@ -1356,14 +1356,14 @@ theorem snorm_const_smul {f : α → F} (c : 𝕜) : snorm (c • f) p μ = (‖
exact snorm'_const_smul c (ENNReal.toReal_pos h0 h_top)
#align measure_theory.snorm_const_smul MeasureTheory.snorm_const_smul
-theorem Memℒp.constSmul {f : α → E} (hf : Memℒp f p μ) (c : 𝕜) : Memℒp (c • f) p μ :=
- ⟨AeStronglyMeasurable.constSmul hf.1 c,
+theorem Memℒp.const_smul {f : α → E} (hf : Memℒp f p μ) (c : 𝕜) : Memℒp (c • f) p μ :=
+ ⟨AeStronglyMeasurable.const_smul hf.1 c,
(snorm_const_smul c).le.trans_lt (ENNReal.mul_lt_top ENNReal.coe_ne_top hf.2.Ne)⟩
-#align measure_theory.mem_ℒp.const_smul MeasureTheory.Memℒp.constSmul
+#align measure_theory.mem_ℒp.const_smul MeasureTheory.Memℒp.const_smul
-theorem Memℒp.constMul {f : α → 𝕜} (hf : Memℒp f p μ) (c : 𝕜) : Memℒp (fun x => c * f x) p μ :=
+theorem Memℒp.const_mul {f : α → 𝕜} (hf : Memℒp f p μ) (c : 𝕜) : Memℒp (fun x => c * f x) p μ :=
hf.const_smul c
-#align measure_theory.mem_ℒp.const_mul MeasureTheory.Memℒp.constMul
+#align measure_theory.mem_ℒp.const_mul MeasureTheory.Memℒp.const_mul
theorem snorm'_smul_le_mul_snorm' {p q r : ℝ} {f : α → E} (hf : AeStronglyMeasurable f μ)
{φ : α → 𝕜} (hφ : AeStronglyMeasurable φ μ) (hp0_lt : 0 < p) (hpq : p < q)
@@ -1405,7 +1405,7 @@ theorem snorm_smul_le_snorm_top_mul_snorm (p : ℝ≥0∞) {f : α → E} (hf :
_ = essSup (fun x => ↑‖φ x‖₊) μ * (∫⁻ x, ↑‖f x‖₊ ^ p.to_real ∂μ) ^ (1 / p.to_real) :=
by
rw [lintegral_const_mul'']
- swap; · exact hf.nnnorm.ae_measurable.coe_nnreal_ennreal.pow aeMeasurableConst
+ swap; · exact hf.nnnorm.ae_measurable.coe_nnreal_ennreal.pow aemeasurable_const
rw [ENNReal.mul_rpow_of_nonneg]
swap;
· rw [one_div_nonneg]
@@ -1482,19 +1482,19 @@ theorem Memℒp.smul {p q r : ℝ≥0∞} {f : α → E} {φ : α → 𝕜} (hf
(ENNReal.mul_lt_top hφ.snorm_ne_top hf.snorm_ne_top)⟩
#align measure_theory.mem_ℒp.smul MeasureTheory.Memℒp.smul
-theorem Memℒp.smulOfTopRight {p : ℝ≥0∞} {f : α → E} {φ : α → 𝕜} (hf : Memℒp f p μ)
+theorem Memℒp.smul_of_top_right {p : ℝ≥0∞} {f : α → E} {φ : α → 𝕜} (hf : Memℒp f p μ)
(hφ : Memℒp φ ∞ μ) : Memℒp (φ • f) p μ :=
by
apply hf.smul hφ
simp only [ENNReal.div_top, zero_add]
-#align measure_theory.mem_ℒp.smul_of_top_right MeasureTheory.Memℒp.smulOfTopRight
+#align measure_theory.mem_ℒp.smul_of_top_right MeasureTheory.Memℒp.smul_of_top_right
-theorem Memℒp.smulOfTopLeft {p : ℝ≥0∞} {f : α → E} {φ : α → 𝕜} (hf : Memℒp f ∞ μ)
+theorem Memℒp.smul_of_top_left {p : ℝ≥0∞} {f : α → E} {φ : α → 𝕜} (hf : Memℒp f ∞ μ)
(hφ : Memℒp φ p μ) : Memℒp (φ • f) p μ :=
by
apply hf.smul hφ
simp only [ENNReal.div_top, add_zero]
-#align measure_theory.mem_ℒp.smul_of_top_left MeasureTheory.Memℒp.smulOfTopLeft
+#align measure_theory.mem_ℒp.smul_of_top_left MeasureTheory.Memℒp.smul_of_top_left
end NormedSpace
@@ -1530,12 +1530,12 @@ theorem snorm_le_mul_snorm_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ}
· simp [snorm_le_mul_snorm_aux_of_neg h hc p]
#align measure_theory.snorm_le_mul_snorm_of_ae_le_mul MeasureTheory.snorm_le_mul_snorm_of_ae_le_mul
-theorem Memℒp.ofLeMul {f : α → E} {g : α → F} {c : ℝ} (hg : Memℒp g p μ)
+theorem Memℒp.of_le_mul {f : α → E} {g : α → F} {c : ℝ} (hg : Memℒp g p μ)
(hf : AeStronglyMeasurable f μ) (hfg : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : Memℒp f p μ :=
⟨hf,
lt_of_le_of_lt (snorm_le_mul_snorm_of_ae_le_mul hfg p) <|
ENNReal.mul_lt_top ENNReal.ofReal_ne_top hg.snorm_ne_top⟩
-#align measure_theory.mem_ℒp.of_le_mul MeasureTheory.Memℒp.ofLeMul
+#align measure_theory.mem_ℒp.of_le_mul MeasureTheory.Memℒp.of_le_mul
end Monotonicity
@@ -1588,17 +1588,19 @@ variable {E' 𝕜 : Type _} [IsROrC 𝕜] [NormedAddCommGroup E'] [InnerProductS
-- mathport name: «expr⟪ , ⟫»
local notation "⟪" x ", " y "⟫" => @inner 𝕜 E' _ x y
-theorem Memℒp.constInner (c : E') {f : α → E'} (hf : Memℒp f p μ) : Memℒp (fun a => ⟪c, f a⟫) p μ :=
- hf.ofLeMul (AeStronglyMeasurable.inner aeStronglyMeasurableConst hf.1)
+theorem Memℒp.const_inner (c : E') {f : α → E'} (hf : Memℒp f p μ) :
+ Memℒp (fun a => ⟪c, f a⟫) p μ :=
+ hf.of_le_mul (AeStronglyMeasurable.inner aeStronglyMeasurable_const hf.1)
(eventually_of_forall fun x => norm_inner_le_norm _ _)
-#align measure_theory.mem_ℒp.const_inner MeasureTheory.Memℒp.constInner
+#align measure_theory.mem_ℒp.const_inner MeasureTheory.Memℒp.const_inner
-theorem Memℒp.innerConst {f : α → E'} (hf : Memℒp f p μ) (c : E') : Memℒp (fun a => ⟪f a, c⟫) p μ :=
- hf.ofLeMul (AeStronglyMeasurable.inner hf.1 aeStronglyMeasurableConst)
+theorem Memℒp.inner_const {f : α → E'} (hf : Memℒp f p μ) (c : E') :
+ Memℒp (fun a => ⟪f a, c⟫) p μ :=
+ hf.of_le_mul (AeStronglyMeasurable.inner hf.1 aeStronglyMeasurable_const)
(eventually_of_forall fun x => by
rw [mul_comm]
exact norm_inner_le_norm _ _)
-#align measure_theory.mem_ℒp.inner_const MeasureTheory.Memℒp.innerConst
+#align measure_theory.mem_ℒp.inner_const MeasureTheory.Memℒp.inner_const
end InnerProduct
@@ -1773,7 +1775,7 @@ theorem mem_lp_iff_memℒp {f : α →ₘ[μ] E} : f ∈ lp E p μ ↔ Memℒp f
#align measure_theory.Lp.mem_Lp_iff_mem_ℒp MeasureTheory.lp.mem_lp_iff_memℒp
protected theorem antitone [IsFiniteMeasure μ] {p q : ℝ≥0∞} (hpq : p ≤ q) : lp E q μ ≤ lp E p μ :=
- fun f hf => (Memℒp.memℒpOfExponentLe ⟨f.AeStronglyMeasurable, hf⟩ hpq).2
+ fun f hf => (Memℒp.memℒp_of_exponent_le ⟨f.AeStronglyMeasurable, hf⟩ hpq).2
#align measure_theory.Lp.antitone MeasureTheory.lp.antitone
@[simp]
@@ -1818,26 +1820,26 @@ protected theorem memℒp (f : lp E p μ) : Memℒp f p μ :=
variable (E p μ)
theorem coeFn_zero : ⇑(0 : lp E p μ) =ᵐ[μ] 0 :=
- AeEqFun.coe_fn_zero
+ AeEqFun.coeFn_zero
#align measure_theory.Lp.coe_fn_zero MeasureTheory.lp.coeFn_zero
variable {E p μ}
theorem coeFn_neg (f : lp E p μ) : ⇑(-f) =ᵐ[μ] -f :=
- AeEqFun.coe_fn_neg _
+ AeEqFun.coeFn_neg _
#align measure_theory.Lp.coe_fn_neg MeasureTheory.lp.coeFn_neg
theorem coeFn_add (f g : lp E p μ) : ⇑(f + g) =ᵐ[μ] f + g :=
- AeEqFun.coe_fn_add _ _
+ AeEqFun.coeFn_add _ _
#align measure_theory.Lp.coe_fn_add MeasureTheory.lp.coeFn_add
theorem coeFn_sub (f g : lp E p μ) : ⇑(f - g) =ᵐ[μ] f - g :=
- AeEqFun.coe_fn_sub _ _
+ AeEqFun.coeFn_sub _ _
#align measure_theory.Lp.coe_fn_sub MeasureTheory.lp.coeFn_sub
theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [IsFiniteMeasure μ] :
@AeEqFun.const α _ _ μ _ c ∈ lp E p μ :=
- (memℒpConst c).snorm_mk_lt_top
+ (memℒp_const c).snorm_mk_lt_top
#align measure_theory.Lp.mem_Lp_const MeasureTheory.lp.mem_lp_const
instance : Norm (lp E p μ) where norm f := ENNReal.toReal (snorm f p μ)
@@ -1938,17 +1940,17 @@ theorem norm_le_norm_of_ae_le {f : lp E p μ} {g : lp F p μ} (h : ∀ᵐ x ∂
theorem mem_lp_of_ae_le_mul {c : ℝ} {f : α →ₘ[μ] E} {g : lp F p μ}
(h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : f ∈ lp E p μ :=
- mem_lp_iff_memℒp.2 <| Memℒp.ofLeMul (lp.memℒp g) f.AeStronglyMeasurable h
+ mem_lp_iff_memℒp.2 <| Memℒp.of_le_mul (lp.memℒp g) f.AeStronglyMeasurable h
#align measure_theory.Lp.mem_Lp_of_ae_le_mul MeasureTheory.lp.mem_lp_of_ae_le_mul
theorem mem_lp_of_ae_le {f : α →ₘ[μ] E} {g : lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
f ∈ lp E p μ :=
- mem_lp_iff_memℒp.2 <| Memℒp.ofLe (lp.memℒp g) f.AeStronglyMeasurable h
+ mem_lp_iff_memℒp.2 <| Memℒp.of_le (lp.memℒp g) f.AeStronglyMeasurable h
#align measure_theory.Lp.mem_Lp_of_ae_le MeasureTheory.lp.mem_lp_of_ae_le
theorem mem_lp_of_ae_bound [IsFiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ) (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
f ∈ lp E p μ :=
- mem_lp_iff_memℒp.2 <| Memℒp.ofBound f.AeStronglyMeasurable _ hfC
+ mem_lp_iff_memℒp.2 <| Memℒp.of_bound f.AeStronglyMeasurable _ hfC
#align measure_theory.Lp.mem_Lp_of_ae_bound MeasureTheory.lp.mem_lp_of_ae_bound
theorem norm_le_of_ae_bound [IsFiniteMeasure μ] {f : lp E p μ} {C : ℝ} (hC : 0 ≤ C)
@@ -2041,10 +2043,10 @@ namespace Memℒp
variable {𝕜 : Type _} [NormedField 𝕜] [NormedSpace 𝕜 E]
-theorem toLp_constSmul {f : α → E} (c : 𝕜) (hf : Memℒp f p μ) :
+theorem toLp_const_smul {f : α → E} (c : 𝕜) (hf : Memℒp f p μ) :
(hf.const_smul c).toLp (c • f) = c • hf.toLp f :=
rfl
-#align measure_theory.mem_ℒp.to_Lp_const_smul MeasureTheory.Memℒp.toLp_constSmul
+#align measure_theory.mem_ℒp.to_Lp_const_smul MeasureTheory.Memℒp.toLp_const_smul
end Memℒp
@@ -2189,7 +2191,7 @@ theorem memℒp_indicator_iff_restrict (hs : MeasurableSet s) :
simp [mem_ℒp, aeStronglyMeasurable_indicator_iff hs, snorm_indicator_eq_snorm_restrict hs]
#align measure_theory.mem_ℒp_indicator_iff_restrict MeasureTheory.memℒp_indicator_iff_restrict
-theorem memℒpIndicatorConst (p : ℝ≥0∞) (hs : MeasurableSet s) (c : E) (hμsc : c = 0 ∨ μ s ≠ ∞) :
+theorem memℒp_indicator_const (p : ℝ≥0∞) (hs : MeasurableSet s) (c : E) (hμsc : c = 0 ∨ μ s ≠ ∞) :
Memℒp (s.indicator fun _ => c) p μ :=
by
rw [mem_ℒp_indicator_iff_restrict hs]
@@ -2204,7 +2206,7 @@ theorem memℒpIndicatorConst (p : ℝ≥0∞) (hs : MeasurableSet s) (c : E) (h
cases hμsc
· exact Or.inl hμsc
· exact Or.inr hμsc.lt_top
-#align measure_theory.mem_ℒp_indicator_const MeasureTheory.memℒpIndicatorConst
+#align measure_theory.mem_ℒp_indicator_const MeasureTheory.memℒp_indicator_const
/-- The `ℒ^p` norm of the indicator of a set is uniformly small if the set itself has small measure,
for any `p < ∞`. Given here as an existential `∀ ε > 0, ∃ η > 0, ...` to avoid later
@@ -2249,11 +2251,11 @@ variable {s : Set α} {hs : MeasurableSet s} {hμs : μ s ≠ ∞} {c : E}
/-- Indicator of a set as an element of `Lp`. -/
def indicatorConstLp (p : ℝ≥0∞) (hs : MeasurableSet s) (hμs : μ s ≠ ∞) (c : E) : lp E p μ :=
- Memℒp.toLp (s.indicator fun _ => c) (memℒpIndicatorConst p hs c (Or.inr hμs))
+ Memℒp.toLp (s.indicator fun _ => c) (memℒp_indicator_const p hs c (Or.inr hμs))
#align measure_theory.indicator_const_Lp MeasureTheory.indicatorConstLp
theorem indicatorConstLp_coeFn : ⇑(indicatorConstLp p hs hμs c) =ᵐ[μ] s.indicator fun _ => c :=
- Memℒp.coeFn_toLp (memℒpIndicatorConst p hs c (Or.inr hμs))
+ Memℒp.coeFn_toLp (memℒp_indicator_const p hs c (Or.inr hμs))
#align measure_theory.indicator_const_Lp_coe_fn MeasureTheory.indicatorConstLp_coeFn
theorem indicatorConstLp_coeFn_mem : ∀ᵐ x : α ∂μ, x ∈ s → indicatorConstLp p hs hμs c x = c :=
@@ -2326,10 +2328,10 @@ theorem indicatorConstLp_disjoint_union {s t : Set α} (hs : MeasurableSet s) (h
end IndicatorConstLp
-theorem Memℒp.normRpowDiv {f : α → E} (hf : Memℒp f p μ) (q : ℝ≥0∞) :
+theorem Memℒp.norm_rpow_div {f : α → E} (hf : Memℒp f p μ) (q : ℝ≥0∞) :
Memℒp (fun x : α => ‖f x‖ ^ q.toReal) (p / q) μ :=
by
- refine' ⟨(hf.1.norm.AeMeasurable.pow_const q.to_real).AeStronglyMeasurable, _⟩
+ refine' ⟨(hf.1.norm.AEMeasurable.pow_const q.to_real).AeStronglyMeasurable, _⟩
by_cases q_top : q = ∞; · simp [q_top]
by_cases q_zero : q = 0
· simp [q_zero]
@@ -2342,12 +2344,12 @@ theorem Memℒp.normRpowDiv {f : α → E} (hf : Memℒp f p μ) (q : ℝ≥0∞
rw [ENNReal.ofReal_toReal q_top, div_eq_mul_inv, mul_assoc, ENNReal.inv_mul_cancel q_zero q_top,
mul_one]
exact hf.2.Ne
-#align measure_theory.mem_ℒp.norm_rpow_div MeasureTheory.Memℒp.normRpowDiv
+#align measure_theory.mem_ℒp.norm_rpow_div MeasureTheory.Memℒp.norm_rpow_div
theorem memℒp_norm_rpow_iff {q : ℝ≥0∞} {f : α → E} (hf : AeStronglyMeasurable f μ) (q_zero : q ≠ 0)
(q_top : q ≠ ∞) : Memℒp (fun x : α => ‖f x‖ ^ q.toReal) (p / q) μ ↔ Memℒp f p μ :=
by
- refine' ⟨fun h => _, fun h => h.normRpowDiv q⟩
+ refine' ⟨fun h => _, fun h => h.norm_rpow_div q⟩
apply (mem_ℒp_norm_iff hf).1
convert h.norm_rpow_div q⁻¹
· ext x
@@ -2359,12 +2361,12 @@ theorem memℒp_norm_rpow_iff {q : ℝ≥0∞} {f : α → E} (hf : AeStronglyMe
mul_one]
#align measure_theory.mem_ℒp_norm_rpow_iff MeasureTheory.memℒp_norm_rpow_iff
-theorem Memℒp.normRpow {f : α → E} (hf : Memℒp f p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) :
+theorem Memℒp.norm_rpow {f : α → E} (hf : Memℒp f p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) :
Memℒp (fun x : α => ‖f x‖ ^ p.toReal) 1 μ :=
by
convert hf.norm_rpow_div p
rw [div_eq_mul_inv, ENNReal.mul_inv_cancel hp_ne_zero hp_ne_top]
-#align measure_theory.mem_ℒp.norm_rpow MeasureTheory.Memℒp.normRpow
+#align measure_theory.mem_ℒp.norm_rpow MeasureTheory.Memℒp.norm_rpow
end MeasureTheory
@@ -2383,7 +2385,7 @@ section Composition
variable {g : E → F} {c : ℝ≥0}
-theorem LipschitzWith.compMemℒp {α E F} {K} [MeasurableSpace α] {μ : Measure α}
+theorem LipschitzWith.comp_memℒp {α E F} {K} [MeasurableSpace α] {μ : Measure α}
[NormedAddCommGroup E] [NormedAddCommGroup F] {f : α → E} {g : E → F} (hg : LipschitzWith K g)
(g0 : g 0 = 0) (hL : Memℒp f p μ) : Memℒp (g ∘ f) p μ :=
haveI : ∀ᵐ x ∂μ, ‖g (f x)‖ ≤ K * ‖f x‖ :=
@@ -2392,11 +2394,12 @@ theorem LipschitzWith.compMemℒp {α E F} {K} [MeasurableSpace α] {μ : Measur
rw [← dist_zero_right, ← dist_zero_right, ← g0]
apply hg.dist_le_mul
hL.of_le_mul (hg.continuous.comp_ae_strongly_measurable hL.1) this
-#align lipschitz_with.comp_mem_ℒp LipschitzWith.compMemℒp
+#align lipschitz_with.comp_mem_ℒp LipschitzWith.comp_memℒp
-theorem MeasureTheory.Memℒp.ofCompAntilipschitzWith {α E F} {K'} [MeasurableSpace α] {μ : Measure α}
- [NormedAddCommGroup E] [NormedAddCommGroup F] {f : α → E} {g : E → F} (hL : Memℒp (g ∘ f) p μ)
- (hg : UniformContinuous g) (hg' : AntilipschitzWith K' g) (g0 : g 0 = 0) : Memℒp f p μ :=
+theorem MeasureTheory.Memℒp.of_comp_antilipschitzWith {α E F} {K'} [MeasurableSpace α]
+ {μ : Measure α} [NormedAddCommGroup E] [NormedAddCommGroup F] {f : α → E} {g : E → F}
+ (hL : Memℒp (g ∘ f) p μ) (hg : UniformContinuous g) (hg' : AntilipschitzWith K' g)
+ (g0 : g 0 = 0) : Memℒp f p μ :=
by
have A : ∀ᵐ x ∂μ, ‖f x‖ ≤ K' * ‖g (f x)‖ :=
by
@@ -2406,14 +2409,14 @@ theorem MeasureTheory.Memℒp.ofCompAntilipschitzWith {α E F} {K'} [MeasurableS
have B : ae_strongly_measurable f μ :=
(hg'.uniform_embedding hg).Embedding.aeStronglyMeasurable_comp_iff.1 hL.1
exact hL.of_le_mul B A
-#align measure_theory.mem_ℒp.of_comp_antilipschitz_with MeasureTheory.Memℒp.ofCompAntilipschitzWith
+#align measure_theory.mem_ℒp.of_comp_antilipschitz_with MeasureTheory.Memℒp.of_comp_antilipschitzWith
namespace LipschitzWith
theorem memℒp_comp_iff_of_antilipschitz {α E F} {K K'} [MeasurableSpace α] {μ : Measure α}
[NormedAddCommGroup E] [NormedAddCommGroup F] {f : α → E} {g : E → F} (hg : LipschitzWith K g)
(hg' : AntilipschitzWith K' g) (g0 : g 0 = 0) : Memℒp (g ∘ f) p μ ↔ Memℒp f p μ :=
- ⟨fun h => h.ofCompAntilipschitzWith hg.UniformContinuous hg' g0, fun h => hg.compMemℒp g0 h⟩
+ ⟨fun h => h.of_comp_antilipschitzWith hg.UniformContinuous hg' g0, fun h => hg.comp_memℒp g0 h⟩
#align lipschitz_with.mem_ℒp_comp_iff_of_antilipschitz LipschitzWith.memℒp_comp_iff_of_antilipschitz
/-- When `g` is a Lipschitz function sending `0` to `0` and `f` is in `Lp`, then `g ∘ f` is well
@@ -2486,22 +2489,22 @@ theorem coeFn_comp_Lp' (L : E →L[𝕜] F) (f : lp E p μ) : L.compLp f =ᵐ[μ
L.coeFn_compLp f
#align continuous_linear_map.coe_fn_comp_Lp' ContinuousLinearMap.coeFn_comp_Lp'
-theorem compMemℒp (L : E →L[𝕜] F) (f : lp E p μ) : Memℒp (L ∘ f) p μ :=
+theorem comp_memℒp (L : E →L[𝕜] F) (f : lp E p μ) : Memℒp (L ∘ f) p μ :=
(lp.memℒp (L.compLp f)).ae_eq (L.coeFn_comp_Lp' f)
-#align continuous_linear_map.comp_mem_ℒp ContinuousLinearMap.compMemℒp
+#align continuous_linear_map.comp_mem_ℒp ContinuousLinearMap.comp_memℒp
-theorem compMemℒp' (L : E →L[𝕜] F) {f : α → E} (hf : Memℒp f p μ) : Memℒp (L ∘ f) p μ :=
- (L.compMemℒp (hf.toLp f)).ae_eq (EventuallyEq.fun_comp hf.coeFn_toLp _)
-#align continuous_linear_map.comp_mem_ℒp' ContinuousLinearMap.compMemℒp'
+theorem comp_mem_ℒp' (L : E →L[𝕜] F) {f : α → E} (hf : Memℒp f p μ) : Memℒp (L ∘ f) p μ :=
+ (L.comp_memℒp (hf.toLp f)).ae_eq (EventuallyEq.fun_comp hf.coeFn_toLp _)
+#align continuous_linear_map.comp_mem_ℒp' ContinuousLinearMap.comp_mem_ℒp'
section IsROrC
variable {K : Type _} [IsROrC K]
-theorem MeasureTheory.Memℒp.ofReal {f : α → ℝ} (hf : Memℒp f p μ) :
+theorem MeasureTheory.Memℒp.of_real {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => (f x : K)) p μ :=
- (@IsROrC.ofRealClm K _).compMemℒp' hf
-#align measure_theory.mem_ℒp.of_real MeasureTheory.Memℒp.ofReal
+ (@IsROrC.ofRealClm K _).comp_mem_ℒp' hf
+#align measure_theory.mem_ℒp.of_real MeasureTheory.Memℒp.of_real
theorem MeasureTheory.memℒp_re_im_iff {f : α → K} :
Memℒp (fun x => IsROrC.re (f x)) p μ ∧ Memℒp (fun x => IsROrC.im (f x)) p μ ↔ Memℒp f p μ :=
@@ -2638,15 +2641,15 @@ theorem lipschitzWith_pos_part : LipschitzWith 1 fun x : ℝ => max x 0 :=
LipschitzWith.of_dist_le_mul fun x y => by simp [Real.dist_eq, abs_max_sub_max_le_abs]
#align measure_theory.Lp.lipschitz_with_pos_part MeasureTheory.lp.lipschitzWith_pos_part
-theorem MeasureTheory.Memℒp.posPart {f : α → ℝ} (hf : Memℒp f p μ) :
+theorem MeasureTheory.Memℒp.pos_part {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => max (f x) 0) p μ :=
- lipschitzWith_pos_part.compMemℒp (max_eq_right le_rfl) hf
-#align measure_theory.mem_ℒp.pos_part MeasureTheory.Memℒp.posPart
+ lipschitzWith_pos_part.comp_memℒp (max_eq_right le_rfl) hf
+#align measure_theory.mem_ℒp.pos_part MeasureTheory.Memℒp.pos_part
-theorem MeasureTheory.Memℒp.negPart {f : α → ℝ} (hf : Memℒp f p μ) :
+theorem MeasureTheory.Memℒp.neg_part {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => max (-f x) 0) p μ :=
- lipschitzWith_pos_part.compMemℒp (max_eq_right le_rfl) hf.neg
-#align measure_theory.mem_ℒp.neg_part MeasureTheory.Memℒp.negPart
+ lipschitzWith_pos_part.comp_memℒp (max_eq_right le_rfl) hf.neg
+#align measure_theory.mem_ℒp.neg_part MeasureTheory.Memℒp.neg_part
/-- Positive part of a function in `L^p`. -/
def posPart (f : lp ℝ p μ) : lp ℝ p μ :=
@@ -2962,7 +2965,7 @@ private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E
refine' (lintegral_liminf_le' _).trans _
·
exact fun n =>
- (Finset.ae_measurable_sum (Finset.range (n + 1)) fun i _ =>
+ (Finset.aEMeasurable_sum (Finset.range (n + 1)) fun i _ =>
((hf (i + 1)).sub (hf i)).ennnorm).pow_const
_
· exact liminf_le_of_frequently_le' (frequently_of_forall h)
@@ -2981,8 +2984,8 @@ private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, Ae
rwa [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div] at h
have rpow_ae_lt_top : ∀ᵐ x ∂μ, (∑' i, ‖f (i + 1) x - f i x‖₊ : ℝ≥0∞) ^ p < ∞ :=
by
- refine' ae_lt_top' (AeMeasurable.powConst _ _) h_integral.ne
- exact AeMeasurable.ennrealTsum fun n => ((hf (n + 1)).sub (hf n)).ennnorm
+ refine' ae_lt_top' (AEMeasurable.pow_const _ _) h_integral.ne
+ exact AEMeasurable.eNNReal_tsum fun n => ((hf (n + 1)).sub (hf n)).ennnorm
refine' rpow_ae_lt_top.mono fun x hx => _
rwa [← ENNReal.lt_rpow_one_div_iff hp_pos,
ENNReal.top_rpow_of_pos (by simp [hp_pos] : 0 < 1 / p)] at hx
@@ -3097,7 +3100,7 @@ theorem cauchy_tendsto_of_tendsto {f : ℕ → α → E} (hf : ∀ n, AeStrongly
exact (h_cau N n (max N N1) hn (le_max_left _ _)).le.trans h_B
#align measure_theory.Lp.cauchy_tendsto_of_tendsto MeasureTheory.lp.cauchy_tendsto_of_tendsto
-theorem memℒpOfCauchyTendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf : ∀ n, Memℒp (f n) p μ)
+theorem memℒp_of_cauchy_tendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf : ∀ n, Memℒp (f n) p μ)
(f_lim : α → E) (h_lim_meas : AeStronglyMeasurable f_lim μ)
(h_tendsto : atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)) : Memℒp f_lim p μ :=
by
@@ -3114,7 +3117,7 @@ theorem memℒpOfCauchyTendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf : ∀ n
have h_neg : f_lim - f N = -(f N - f_lim) := by simp
rwa [h_neg, snorm_neg]
· exact (hf N).2
-#align measure_theory.Lp.mem_ℒp_of_cauchy_tendsto MeasureTheory.lp.memℒpOfCauchyTendsto
+#align measure_theory.Lp.mem_ℒp_of_cauchy_tendsto MeasureTheory.lp.memℒp_of_cauchy_tendsto
theorem cauchy_complete_ℒp [CompleteSpace E] (hp : 1 ≤ p) {f : ℕ → α → E}
(hf : ∀ n, Memℒp (f n) p μ) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
@@ -3165,7 +3168,7 @@ variable (E p μ)
bounded continuous representative. -/
def MeasureTheory.lp.boundedContinuousFunction : AddSubgroup (lp E p μ) :=
AddSubgroup.addSubgroupOf
- ((ContinuousMap.to_ae_eq_fun_add_hom μ).comp (toContinuousMapAddHom α E)).range (lp E p μ)
+ ((ContinuousMap.toAeEqFunAddHom μ).comp (toContinuousMapAddHom α E)).range (lp E p μ)
#align measure_theory.Lp.bounded_continuous_function MeasureTheory.lp.boundedContinuousFunction
variable {E p μ}
@@ -3209,9 +3212,8 @@ variable (p μ)
space as an element of `Lp`. -/
def toLpHom [Fact (1 ≤ p)] : NormedAddGroupHom (α →ᵇ E) (lp E p μ) :=
{
- AddMonoidHom.codRestrict
- ((ContinuousMap.to_ae_eq_fun_add_hom μ).comp (toContinuousMapAddHom α E)) (lp E p μ)
- mem_lp with
+ AddMonoidHom.codRestrict ((ContinuousMap.toAeEqFunAddHom μ).comp (toContinuousMapAddHom α E))
+ (lp E p μ) mem_lp with
bound' := ⟨_, lp_norm_le⟩ }
#align bounded_continuous_function.to_Lp_hom BoundedContinuousFunction.toLpHom
@@ -3221,7 +3223,7 @@ theorem range_toLpHom [Fact (1 ≤ p)] :
by
symm
convert AddMonoidHom.addSubgroupOf_range_eq_of_le
- ((ContinuousMap.to_ae_eq_fun_add_hom μ).comp (to_continuous_map_add_hom α E))
+ ((ContinuousMap.toAeEqFunAddHom μ).comp (to_continuous_map_add_hom α E))
(by
rintro - ⟨f, rfl⟩
exact mem_Lp f : _ ≤ Lp E p μ)
mathlib commit https://github.com/leanprover-community/mathlib/commit/52932b3a083d4142e78a15dc928084a22fea9ba0
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit 13bf7613c96a9fd66a81b9020a82cad9a6ea1fcf
+! leanprover-community/mathlib commit 52932b3a083d4142e78a15dc928084a22fea9ba0
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -933,6 +933,14 @@ theorem snorm_add_lt_top {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g
#align measure_theory.snorm_add_lt_top MeasureTheory.snorm_add_lt_top
+theorem ae_le_snormEssSup {f : α → F} : ∀ᵐ y ∂μ, ↑‖f y‖₊ ≤ snormEssSup f μ :=
+ ae_le_essSup
+#align measure_theory.ae_le_snorm_ess_sup MeasureTheory.ae_le_snormEssSup
+
+theorem meas_snormEssSup_lt {f : α → F} : μ { y | snormEssSup f μ < ‖f y‖₊ } = 0 :=
+ meas_essSup_lt
+#align measure_theory.meas_snorm_ess_sup_lt MeasureTheory.meas_snormEssSup_lt
+
section MapMeasure
variable {β : Type _} {mβ : MeasurableSpace β} {f : α → β} {g : β → E}
mathlib commit https://github.com/leanprover-community/mathlib/commit/49b7f94aab3a3bdca1f9f34c5d818afb253b3993
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit a8c97ed34c07fcfd7ebc6b83179b8f687275eba9
+! leanprover-community/mathlib commit 13bf7613c96a9fd66a81b9020a82cad9a6ea1fcf
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -786,6 +786,20 @@ theorem snorm'_add_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : Ae
#align measure_theory.snorm'_add_le MeasureTheory.snorm'_add_le
+theorem snorm'_add_le_of_le_one {f g : α → E} (hf : AeStronglyMeasurable f μ) (hq0 : 0 ≤ q)
+ (hq1 : q ≤ 1) : snorm' (f + g) q μ ≤ 2 ^ (1 / q - 1) * (snorm' f q μ + snorm' g q μ) :=
+ calc
+ (∫⁻ a, ↑‖(f + g) a‖₊ ^ q ∂μ) ^ (1 / q) ≤
+ (∫⁻ a, ((fun a => (‖f a‖₊ : ℝ≥0∞)) + fun a => (‖g a‖₊ : ℝ≥0∞)) a ^ q ∂μ) ^ (1 / q) :=
+ by
+ refine' ENNReal.rpow_le_rpow _ (by simp [hq0] : 0 ≤ 1 / q)
+ refine' lintegral_mono fun a => ENNReal.rpow_le_rpow _ hq0
+ simp [← ENNReal.coe_add, nnnorm_add_le]
+ _ ≤ 2 ^ (1 / q - 1) * (snorm' f q μ + snorm' g q μ) :=
+ ENNReal.lintegral_Lp_add_le_of_le_one hf.ennnorm hq0 hq1
+
+#align measure_theory.snorm'_add_le_of_le_one MeasureTheory.snorm'_add_le_of_le_one
+
theorem snormEssSup_add_le {f g : α → F} :
snormEssSup (f + g) μ ≤ snormEssSup f μ + snormEssSup g μ :=
by
@@ -807,8 +821,83 @@ theorem snorm_add_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeS
exact snorm'_add_le hf hg hp1_real
#align measure_theory.snorm_add_le MeasureTheory.snorm_add_le
-theorem snorm_sub_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeStronglyMeasurable g μ)
- (hp1 : 1 ≤ p) : snorm (f - g) p μ ≤ snorm f p μ + snorm g p μ :=
+/-- A constant for the inequality `‖f + g‖_{L^p} ≤ C * (‖f‖_{L^p} + ‖g‖_{L^p})`. It is equal to `1`
+for `p ≥ 1` or `p = 0`, and `2^(1/p-1)` in the more tricky interval `(0, 1)`. -/
+def lpAddConst (p : ℝ≥0∞) : ℝ≥0∞ :=
+ if p ∈ Set.Ioo (0 : ℝ≥0∞) 1 then 2 ^ (1 / p.toReal - 1) else 1
+#align measure_theory.Lp_add_const MeasureTheory.lpAddConst
+
+theorem lpAddConst_of_one_le {p : ℝ≥0∞} (hp : 1 ≤ p) : lpAddConst p = 1 :=
+ by
+ rw [Lp_add_const, if_neg]
+ intro h
+ exact lt_irrefl _ (h.2.trans_le hp)
+#align measure_theory.Lp_add_const_of_one_le MeasureTheory.lpAddConst_of_one_le
+
+theorem lpAddConst_zero : lpAddConst 0 = 1 :=
+ by
+ rw [Lp_add_const, if_neg]
+ intro h
+ exact lt_irrefl _ h.1
+#align measure_theory.Lp_add_const_zero MeasureTheory.lpAddConst_zero
+
+theorem lpAddConst_lt_top (p : ℝ≥0∞) : lpAddConst p < ∞ :=
+ by
+ rw [Lp_add_const]
+ split_ifs
+ · apply ENNReal.rpow_lt_top_of_nonneg _ ENNReal.two_ne_top
+ simp only [one_div, sub_nonneg]
+ apply one_le_inv (ENNReal.toReal_pos h.1.ne' (h.2.trans ENNReal.one_lt_top).Ne)
+ simpa using ENNReal.toReal_mono ENNReal.one_ne_top h.2.le
+ · exact ENNReal.one_lt_top
+#align measure_theory.Lp_add_const_lt_top MeasureTheory.lpAddConst_lt_top
+
+theorem snorm_add_le' {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeStronglyMeasurable g μ)
+ (p : ℝ≥0∞) : snorm (f + g) p μ ≤ lpAddConst p * (snorm f p μ + snorm g p μ) :=
+ by
+ rcases eq_or_ne p 0 with (rfl | hp)
+ · simp only [snorm_exponent_zero, add_zero, MulZeroClass.mul_zero, le_zero_iff]
+ rcases lt_or_le p 1 with (h'p | h'p)
+ · simp only [snorm_eq_snorm' hp (h'p.trans ENNReal.one_lt_top).Ne]
+ convert snorm'_add_le_of_le_one hf ENNReal.toReal_nonneg _
+ · have : p ∈ Set.Ioo (0 : ℝ≥0∞) 1 := ⟨hp.bot_lt, h'p⟩
+ simp only [Lp_add_const, if_pos this]
+ · simpa using ENNReal.toReal_mono ENNReal.one_ne_top h'p.le
+ · simp [Lp_add_const_of_one_le h'p]
+ exact snorm_add_le hf hg h'p
+#align measure_theory.snorm_add_le' MeasureTheory.snorm_add_le'
+
+variable (μ E)
+
+/-- Technical lemma to control the addition of functions in `L^p` even for `p < 1`: Given `δ > 0`,
+there exists `η` such that two functions bounded by `η` in `L^p` have a sum bounded by `δ`. One
+could take `η = δ / 2` for `p ≥ 1`, but the point of the lemma is that it works also for `p < 1`.
+-/
+theorem exists_Lp_half (p : ℝ≥0∞) {δ : ℝ≥0∞} (hδ : δ ≠ 0) :
+ ∃ η : ℝ≥0∞,
+ 0 < η ∧
+ ∀ (f g : α → E) (hf : AeStronglyMeasurable f μ) (hg : AeStronglyMeasurable g μ)
+ (Hf : snorm f p μ ≤ η) (Hg : snorm g p μ ≤ η), snorm (f + g) p μ < δ :=
+ by
+ have :
+ tendsto (fun η : ℝ≥0∞ => Lp_add_const p * (η + η)) (𝓝[>] 0) (𝓝 (Lp_add_const p * (0 + 0))) :=
+ (ENNReal.Tendsto.const_mul (tendsto_id.add tendsto_id)
+ (Or.inr (Lp_add_const_lt_top p).Ne)).mono_left
+ nhdsWithin_le_nhds
+ simp only [add_zero, MulZeroClass.mul_zero] at this
+ rcases(((tendsto_order.1 this).2 δ hδ.bot_lt).And self_mem_nhdsWithin).exists with ⟨η, hη, ηpos⟩
+ refine' ⟨η, ηpos, fun f g hf hg Hf Hg => _⟩
+ calc
+ snorm (f + g) p μ ≤ Lp_add_const p * (snorm f p μ + snorm g p μ) := snorm_add_le' hf hg p
+ _ ≤ Lp_add_const p * (η + η) := (mul_le_mul_of_nonneg_left (add_le_add Hf Hg) bot_le)
+ _ < δ := hη
+
+#align measure_theory.exists_Lp_half MeasureTheory.exists_Lp_half
+
+variable {μ E}
+
+theorem snorm_sub_le' {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeStronglyMeasurable g μ)
+ (p : ℝ≥0∞) : snorm (f - g) p μ ≤ lpAddConst p * (snorm f p μ + snorm g p μ) :=
calc
snorm (f - g) p μ = snorm (f + -g) p μ := by rw [sub_eq_add_neg]
-- We cannot use snorm_add_le on f and (-g) because we don't have `ae_measurable (-g) μ`, since
@@ -822,57 +911,26 @@ theorem snorm_sub_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeS
rw [norm_norm]
exact norm_add_le _ _
_ = snorm (fun x => ‖f x‖ + ‖g x‖) p μ := by simp_rw [norm_neg]
- _ ≤ snorm (fun x => ‖f x‖) p μ + snorm (fun x => ‖g x‖) p μ :=
- (snorm_add_le hf.norm hg.norm hp1)
- _ = snorm f p μ + snorm g p μ := by rw [← snorm_norm f, ← snorm_norm g]
+ _ ≤ lpAddConst p * (snorm (fun x => ‖f x‖) p μ + snorm (fun x => ‖g x‖) p μ) :=
+ (snorm_add_le' hf.norm hg.norm p)
+ _ = lpAddConst p * (snorm f p μ + snorm g p μ) := by rw [← snorm_norm f, ← snorm_norm g]
-#align measure_theory.snorm_sub_le MeasureTheory.snorm_sub_le
+#align measure_theory.snorm_sub_le' MeasureTheory.snorm_sub_le'
-theorem snorm_add_lt_top_of_one_le {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ)
- (hq1 : 1 ≤ p) : snorm (f + g) p μ < ∞ :=
- lt_of_le_of_lt (snorm_add_le hf.1 hg.1 hq1) (ENNReal.add_lt_top.mpr ⟨hf.2, hg.2⟩)
-#align measure_theory.snorm_add_lt_top_of_one_le MeasureTheory.snorm_add_lt_top_of_one_le
+theorem snorm_sub_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeStronglyMeasurable g μ)
+ (hp : 1 ≤ p) : snorm (f - g) p μ ≤ snorm f p μ + snorm g p μ := by
+ simpa [Lp_add_const_of_one_le hp] using snorm_sub_le' hf hg p
+#align measure_theory.snorm_sub_le MeasureTheory.snorm_sub_le
-theorem snorm'_add_lt_top_of_le_one {f g : α → E} (hf : AeStronglyMeasurable f μ)
- (hf_snorm : snorm' f q μ < ∞) (hg_snorm : snorm' g q μ < ∞) (hq_pos : 0 < q) (hq1 : q ≤ 1) :
- snorm' (f + g) q μ < ∞ :=
+theorem snorm_add_lt_top {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) :
+ snorm (f + g) p μ < ∞ :=
calc
- (∫⁻ a, ↑‖(f + g) a‖₊ ^ q ∂μ) ^ (1 / q) ≤
- (∫⁻ a, ((fun a => (‖f a‖₊ : ℝ≥0∞)) + fun a => (‖g a‖₊ : ℝ≥0∞)) a ^ q ∂μ) ^ (1 / q) :=
- by
- refine' ENNReal.rpow_le_rpow _ (by simp [hq_pos.le] : 0 ≤ 1 / q)
- refine' lintegral_mono fun a => ENNReal.rpow_le_rpow _ hq_pos.le
- simp [← ENNReal.coe_add, nnnorm_add_le]
- _ ≤ (∫⁻ a, (‖f a‖₊ : ℝ≥0∞) ^ q + (‖g a‖₊ : ℝ≥0∞) ^ q ∂μ) ^ (1 / q) :=
- by
- refine' ENNReal.rpow_le_rpow (lintegral_mono fun a => _) (by simp [hq_pos.le] : 0 ≤ 1 / q)
- exact ENNReal.rpow_add_le_add_rpow _ _ hq_pos.le hq1
+ snorm (f + g) p μ ≤ lpAddConst p * (snorm f p μ + snorm g p μ) :=
+ snorm_add_le' hf.AeStronglyMeasurable hg.AeStronglyMeasurable p
_ < ∞ := by
- refine' ENNReal.rpow_lt_top_of_nonneg (by simp [hq_pos.le] : 0 ≤ 1 / q) _
- rw [lintegral_add_left' (hf.ennnorm.pow_const q), ENNReal.add_ne_top]
- exact
- ⟨(lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top hq_pos hf_snorm).Ne,
- (lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top hq_pos hg_snorm).Ne⟩
+ apply ENNReal.mul_lt_top (Lp_add_const_lt_top p).Ne
+ exact (ENNReal.add_lt_top.2 ⟨hf.2, hg.2⟩).Ne
-#align measure_theory.snorm'_add_lt_top_of_le_one MeasureTheory.snorm'_add_lt_top_of_le_one
-
-theorem snorm_add_lt_top {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) :
- snorm (f + g) p μ < ∞ := by
- by_cases h0 : p = 0
- · simp [h0]
- rw [← Ne.def] at h0
- cases' le_total 1 p with hp1 hp1
- · exact snorm_add_lt_top_of_one_le hf hg hp1
- have hp_top : p ≠ ∞ := (lt_of_le_of_lt hp1 ENNReal.coe_lt_top).Ne
- have hp_pos : 0 < p.to_real :=
- by
- rw [← ENNReal.zero_toReal, @ENNReal.toReal_lt_toReal 0 p ENNReal.coe_ne_top hp_top]
- exact (zero_le p).lt_of_ne h0.symm
- have hp1_real : p.to_real ≤ 1 := by
- rwa [← ENNReal.one_toReal, @ENNReal.toReal_le_toReal p 1 hp_top ENNReal.coe_ne_top]
- rw [snorm_eq_snorm' h0 hp_top]
- rw [mem_ℒp, snorm_eq_snorm' h0 hp_top] at hf hg
- exact snorm'_add_lt_top_of_le_one hf.1 hf.2 hg.2 hp_pos hp1_real
#align measure_theory.snorm_add_lt_top MeasureTheory.snorm_add_lt_top
section MapMeasure
@@ -1010,9 +1068,6 @@ theorem snorm_neg {f : α → F} : snorm (-f) p μ = snorm f p μ :=
simp [snorm_eq_snorm' h0 h_top]
#align measure_theory.snorm_neg MeasureTheory.snorm_neg
-section BorelSpace
-
--- variable [borel_space E]
theorem Memℒp.neg {f : α → E} (hf : Memℒp f p μ) : Memℒp (-f) p μ :=
⟨AeStronglyMeasurable.neg hf.1, by simp [hf.right]⟩
#align measure_theory.mem_ℒp.neg MeasureTheory.Memℒp.neg
@@ -1258,8 +1313,6 @@ theorem memℒpFinsetSum' {ι} (s : Finset ι) {f : ι → α → E} (hf : ∀ i
end HasMeasurableAdd
-end BorelSpace
-
section NormedSpace
variable {𝕜 : Type _} [NormedField 𝕜] [NormedSpace 𝕜 E] [NormedSpace 𝕜 F]
mathlib commit https://github.com/leanprover-community/mathlib/commit/c9236f47f5b9df573443aa499c0d3968769628b7
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit 46b633fd842bef9469441c0209906f6dddd2b4f5
+! leanprover-community/mathlib commit a8c97ed34c07fcfd7ebc6b83179b8f687275eba9
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -2065,6 +2065,24 @@ theorem snorm_indicator_const' {c : G} (hs : MeasurableSet s) (hμs : μ s ≠ 0
· exact snorm_indicator_const hs hp hp_top
#align measure_theory.snorm_indicator_const' MeasureTheory.snorm_indicator_const'
+theorem snorm_indicator_const_le (c : G) (p : ℝ≥0∞) :
+ snorm (s.indicator fun x => c) p μ ≤ ‖c‖₊ * μ s ^ (1 / p.toReal) :=
+ by
+ rcases eq_or_ne p 0 with (rfl | hp)
+ · simp only [snorm_exponent_zero, zero_le']
+ rcases eq_or_ne p ∞ with (rfl | h'p)
+ · simp only [snorm_exponent_top, ENNReal.top_toReal, div_zero, ENNReal.rpow_zero, mul_one]
+ exact snorm_ess_sup_indicator_const_le _ _
+ let t := to_measurable μ s
+ calc
+ snorm (s.indicator fun x => c) p μ ≤ snorm (t.indicator fun x => c) p μ :=
+ snorm_mono (norm_indicator_le_of_subset (subset_to_measurable _ _) _)
+ _ = ‖c‖₊ * μ t ^ (1 / p.to_real) :=
+ (snorm_indicator_const (measurable_set_to_measurable _ _) hp h'p)
+ _ = ‖c‖₊ * μ s ^ (1 / p.to_real) := by rw [measure_to_measurable]
+
+#align measure_theory.snorm_indicator_const_le MeasureTheory.snorm_indicator_const_le
+
theorem Memℒp.indicator (hs : MeasurableSet s) (hf : Memℒp f p μ) : Memℒp (s.indicator f) p μ :=
⟨hf.AeStronglyMeasurable.indicator hs, lt_of_le_of_lt (snorm_indicator_le f) hf.snorm_lt_top⟩
#align measure_theory.mem_ℒp.indicator MeasureTheory.Memℒp.indicator
@@ -2127,6 +2145,39 @@ theorem memℒpIndicatorConst (p : ℝ≥0∞) (hs : MeasurableSet s) (c : E) (h
· exact Or.inr hμsc.lt_top
#align measure_theory.mem_ℒp_indicator_const MeasureTheory.memℒpIndicatorConst
+/-- The `ℒ^p` norm of the indicator of a set is uniformly small if the set itself has small measure,
+for any `p < ∞`. Given here as an existential `∀ ε > 0, ∃ η > 0, ...` to avoid later
+management of `ℝ≥0∞`-arithmetic. -/
+theorem exists_snorm_indicator_le (hp : p ≠ ∞) (c : E) {ε : ℝ≥0∞} (hε : ε ≠ 0) :
+ ∃ η : ℝ≥0, 0 < η ∧ ∀ s : Set α, μ s ≤ η → snorm (s.indicator fun x => c) p μ ≤ ε :=
+ by
+ rcases eq_or_ne p 0 with (rfl | h'p)
+ · exact ⟨1, zero_lt_one, fun s hs => by simp⟩
+ have hp₀ : 0 < p := bot_lt_iff_ne_bot.2 h'p
+ have hp₀' : 0 ≤ 1 / p.to_real := div_nonneg zero_le_one ENNReal.toReal_nonneg
+ have hp₀'' : 0 < p.to_real := by
+ simpa [← ENNReal.toReal_lt_toReal ENNReal.zero_ne_top hp] using hp₀
+ obtain ⟨η, hη_pos, hη_le⟩ : ∃ η : ℝ≥0, 0 < η ∧ (‖c‖₊ * η ^ (1 / p.to_real) : ℝ≥0∞) ≤ ε :=
+ by
+ have :
+ Filter.Tendsto (fun x : ℝ≥0 => ((‖c‖₊ * x ^ (1 / p.to_real) : ℝ≥0) : ℝ≥0∞)) (𝓝 0)
+ (𝓝 (0 : ℝ≥0)) :=
+ by
+ rw [ENNReal.tendsto_coe]
+ convert(NNReal.continuousAt_rpow_const (Or.inr hp₀')).Tendsto.const_mul _
+ simp [hp₀''.ne']
+ have hε' : 0 < ε := hε.bot_lt
+ obtain ⟨δ, hδ, hδε'⟩ :=
+ nnreal.nhds_zero_basis.eventually_iff.mp (eventually_le_of_tendsto_lt hε' this)
+ obtain ⟨η, hη, hηδ⟩ := exists_between hδ
+ refine' ⟨η, hη, _⟩
+ rw [ENNReal.coe_rpow_of_nonneg _ hp₀', ← ENNReal.coe_mul]
+ exact hδε' hηδ
+ refine' ⟨η, hη_pos, fun s hs => _⟩
+ refine' (snorm_indicator_const_le _ _).trans (le_trans _ hη_le)
+ exact mul_le_mul_left' (ENNReal.rpow_le_rpow hs hp₀') _
+#align measure_theory.exists_snorm_indicator_le MeasureTheory.exists_snorm_indicator_le
+
end Indicator
section IndicatorConstLp
mathlib commit https://github.com/leanprover-community/mathlib/commit/55d771df074d0dd020139ee1cd4b95521422df9f
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
+! leanprover-community/mathlib commit 46b633fd842bef9469441c0209906f6dddd2b4f5
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -1522,7 +1522,7 @@ end IsROrC
section InnerProduct
-variable {E' 𝕜 : Type _} [IsROrC 𝕜] [InnerProductSpace 𝕜 E']
+variable {E' 𝕜 : Type _} [IsROrC 𝕜] [NormedAddCommGroup E'] [InnerProductSpace 𝕜 E']
-- mathport name: «expr⟪ , ⟫»
local notation "⟪" x ", " y "⟫" => @inner 𝕜 E' _ x y
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -3108,8 +3108,7 @@ theorem range_toLpHom [Fact (1 ≤ p)] :
MeasureTheory.lp.boundedContinuousFunction E p μ :=
by
symm
- convert
- AddMonoidHom.addSubgroupOf_range_eq_of_le
+ convert AddMonoidHom.addSubgroupOf_range_eq_of_le
((ContinuousMap.to_ae_eq_fun_add_hom μ).comp (to_continuous_map_add_hom α E))
(by
rintro - ⟨f, rfl⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -1320,7 +1320,7 @@ theorem snorm_smul_le_snorm_top_mul_snorm (p : ℝ≥0∞) {f : α → E} (hf :
ENNReal.coe_mul]
exact ENNReal.essSup_mul_le _ _
by_cases hp_zero : p = 0
- · simp only [hp_zero, snorm_exponent_zero, mul_zero, le_zero_iff]
+ · simp only [hp_zero, snorm_exponent_zero, MulZeroClass.mul_zero, le_zero_iff]
simp_rw [snorm_eq_lintegral_rpow_nnnorm hp_zero hp_top, snorm_exponent_top, snorm_ess_sup]
calc
(∫⁻ x, ↑‖(φ • f) x‖₊ ^ p.to_real ∂μ) ^ (1 / p.to_real) =
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -1779,7 +1779,7 @@ theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [Is
(memℒpConst c).snorm_mk_lt_top
#align measure_theory.Lp.mem_Lp_const MeasureTheory.lp.mem_lp_const
-instance : HasNorm (lp E p μ) where norm f := ENNReal.toReal (snorm f p μ)
+instance : Norm (lp E p μ) where norm f := ENNReal.toReal (snorm f p μ)
instance : Dist (lp E p μ) where dist f g := ‖f - g‖
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -1781,7 +1781,7 @@ theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [Is
instance : HasNorm (lp E p μ) where norm f := ENNReal.toReal (snorm f p μ)
-instance : HasDist (lp E p μ) where dist f g := ‖f - g‖
+instance : Dist (lp E p μ) where dist f g := ‖f - g‖
instance : EDist (lp E p μ) where edist f g := snorm (f - g) p μ
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -1783,7 +1783,7 @@ instance : HasNorm (lp E p μ) where norm f := ENNReal.toReal (snorm f p μ)
instance : HasDist (lp E p μ) where dist f g := ‖f - g‖
-instance : HasEdist (lp E p μ) where edist f g := snorm (f - g) p μ
+instance : EDist (lp E p μ) where edist f g := snorm (f - g) p μ
theorem norm_def (f : lp E p μ) : ‖f‖ = ENNReal.toReal (snorm f p μ) :=
rfl
@@ -1929,7 +1929,7 @@ instance [hp : Fact (1 ≤ p)] : NormedAddCommGroup (lp E p μ) :=
ENNReal.ofReal_toReal (snorm_ne_top (f - g))] }
-- check no diamond is created
-example [Fact (1 ≤ p)] : PseudoEmetricSpace.toHasEdist = (lp.hasEdist : HasEdist (lp E p μ)) :=
+example [Fact (1 ≤ p)] : PseudoEMetricSpace.toHasEdist = (lp.hasEdist : EDist (lp E p μ)) :=
rfl
section NormedSpace
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -822,7 +822,8 @@ theorem snorm_sub_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeS
rw [norm_norm]
exact norm_add_le _ _
_ = snorm (fun x => ‖f x‖ + ‖g x‖) p μ := by simp_rw [norm_neg]
- _ ≤ snorm (fun x => ‖f x‖) p μ + snorm (fun x => ‖g x‖) p μ := snorm_add_le hf.norm hg.norm hp1
+ _ ≤ snorm (fun x => ‖f x‖) p μ + snorm (fun x => ‖g x‖) p μ :=
+ (snorm_add_le hf.norm hg.norm hp1)
_ = snorm f p μ + snorm g p μ := by rw [← snorm_norm f, ← snorm_norm g]
#align measure_theory.snorm_sub_le MeasureTheory.snorm_sub_le
@@ -1569,7 +1570,7 @@ theorem ae_bdd_liminf_atTop_rpow_of_snorm_bdd {p : ℝ≥0∞} {f : ℕ → α
(ha a le_rfl).trans ((ENNReal.rpow_one_div_le_iff (ENNReal.toReal_pos hp hp')).1 (hbdd _))
#align measure_theory.ae_bdd_liminf_at_top_rpow_of_snorm_bdd MeasureTheory.ae_bdd_liminf_atTop_rpow_of_snorm_bdd
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic filter.is_bounded_default -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic filter.is_bounded_default -/
theorem ae_bdd_liminf_atTop_of_snorm_bdd {p : ℝ≥0∞} (hp : p ≠ 0) {f : ℕ → α → E}
(hfmeas : ∀ n, Measurable (f n)) (hbdd : ∀ n, snorm (f n) p μ ≤ R) :
∀ᵐ x ∂μ, liminf (fun n => (‖f n x‖₊ : ℝ≥0∞)) atTop < ∞ :=
@@ -2612,7 +2613,7 @@ theorem snorm'_lim_eq_lintegral_liminf {ι} [Nonempty ι] [LinearOrder ι] {f :
exact (continuous_nnnorm.tendsto (f_lim a)).comp ha
#align measure_theory.Lp.snorm'_lim_eq_lintegral_liminf MeasureTheory.lp.snorm'_lim_eq_lintegral_liminf
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic filter.is_bounded_default -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic filter.is_bounded_default -/
theorem snorm'_lim_le_liminf_snorm' {E} [NormedAddCommGroup E] {f : ℕ → α → E} {p : ℝ}
(hp_pos : 0 < p) (hf : ∀ n, AeStronglyMeasurable (f n) μ) {f_lim : α → E}
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
@@ -2815,7 +2816,7 @@ private theorem lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum {f : ℕ → α
rwa [h_nnnorm_nonneg] at hn
#align measure_theory.Lp.lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum measure_theory.Lp.lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic filter.is_bounded_default -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic filter.is_bounded_default -/
private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E}
(hf : ∀ n, AeStronglyMeasurable (f n) μ) {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞}
(h :
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit afdb4fa3b32d41106a4a09b371ce549ad7958abd
+! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -1339,8 +1339,7 @@ theorem snorm_smul_le_snorm_top_mul_snorm (p : ℝ≥0∞) {f : α → E} (hf :
exact ENNReal.toReal_nonneg
refine' lintegral_mono_ae _
filter_upwards [@ENNReal.ae_le_essSup _ _ μ fun x => ↑‖φ x‖₊]with x hx
- refine' ENNReal.mul_le_mul _ le_rfl
- exact ENNReal.rpow_le_rpow hx ENNReal.toReal_nonneg
+ exact mul_le_mul_right' (ENNReal.rpow_le_rpow hx ENNReal.toReal_nonneg) _
_ = essSup (fun x => ↑‖φ x‖₊) μ * (∫⁻ x, ↑‖f x‖₊ ^ p.to_real ∂μ) ^ (1 / p.to_real) :=
by
rw [lintegral_const_mul'']
@@ -1380,13 +1379,11 @@ theorem snorm_smul_le_mul_snorm {p q r : ℝ≥0∞} {f : α → E} (hf : AeStro
· simp [hp_zero]
have hq_ne_zero : q ≠ 0 := by
intro hq_zero
- simp only [hq_zero, hp_zero, one_div, ENNReal.inv_zero, ENNReal.top_add, ENNReal.inv_eq_top] at
- hpqr
+ simp only [hq_zero, hp_zero, one_div, ENNReal.inv_zero, top_add, ENNReal.inv_eq_top] at hpqr
exact hpqr
have hr_ne_zero : r ≠ 0 := by
intro hr_zero
- simp only [hr_zero, hp_zero, one_div, ENNReal.inv_zero, ENNReal.add_top, ENNReal.inv_eq_top] at
- hpqr
+ simp only [hr_zero, hp_zero, one_div, ENNReal.inv_zero, add_top, ENNReal.inv_eq_top] at hpqr
exact hpqr
by_cases hq_top : q = ∞
· have hpr : p = r := by
@@ -1924,8 +1921,7 @@ instance [hp : Fact (1 ≤ p)] : NormedAddCommGroup (lp E p μ) :=
exact snorm_add_le (Lp.ae_strongly_measurable f) (Lp.ae_strongly_measurable g) hp.1
eq_zero_of_map_eq_zero' := fun f =>
(norm_eq_zero_iff <|
- ENNReal.zero_lt_one.trans_le
- hp.1).1 } with
+ zero_lt_one.trans_le hp.1).1 } with
edist := edist
edist_dist := fun f g => by
rw [edist_def, dist_def, ← snorm_congr_ae (coe_fn_sub _ _),
@@ -2014,7 +2010,7 @@ theorem snormEssSup_indicator_const_le (s : Set α) (c : G) :
by
by_cases hμ0 : μ = 0
· rw [hμ0, snorm_ess_sup_measure_zero]
- exact ENNReal.coe_nonneg
+ exact zero_le _
· exact (snorm_ess_sup_indicator_le s fun x => c).trans (snorm_ess_sup_const c hμ0).le
#align measure_theory.snorm_ess_sup_indicator_const_le MeasureTheory.snormEssSup_indicator_const_le
@@ -2957,7 +2953,7 @@ theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
by
intro N n m hn hm
specialize h_cau N n m hn hm
- rwa [snorm_eq_snorm' (ennreal.zero_lt_one.trans_le hp).Ne.symm hp_top] at h_cau
+ rwa [snorm_eq_snorm' (zero_lt_one.trans_le hp).Ne.symm hp_top] at h_cau
exact ae_tendsto_of_cauchy_snorm' hf hp1 hB h_cau'
#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm MeasureTheory.lp.ae_tendsto_of_cauchy_snorm
@@ -2994,7 +2990,7 @@ theorem memℒpOfCauchyTendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf : ∀ n
by
refine' ⟨h_lim_meas, _⟩
rw [ENNReal.tendsto_atTop_zero] at h_tendsto
- cases' h_tendsto 1 ENNReal.zero_lt_one with N h_tendsto_1
+ cases' h_tendsto 1 zero_lt_one with N h_tendsto_1
specialize h_tendsto_1 N (le_refl N)
have h_add : f_lim = f_lim - f N + f N := by abel
rw [h_add]
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -84,7 +84,7 @@ noncomputable section
open TopologicalSpace MeasureTheory Filter
-open NNReal Ennreal BigOperators Topology MeasureTheory
+open NNReal ENNReal BigOperators Topology MeasureTheory
variable {α E F G : Type _} {m m0 : MeasurableSpace α} {p : ℝ≥0∞} {q : ℝ} {μ ν : Measure α}
[NormedAddCommGroup E] [NormedAddCommGroup F] [NormedAddCommGroup G]
@@ -125,11 +125,11 @@ def snormEssSup {m : MeasurableSpace α} (f : α → F) (μ : Measure α) :=
/-- `ℒp` seminorm, equal to `0` for `p=0`, to `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and to
`ess_sup ‖f‖ μ` for `p = ∞`. -/
def snorm {m : MeasurableSpace α} (f : α → F) (p : ℝ≥0∞) (μ : Measure α) : ℝ≥0∞ :=
- if p = 0 then 0 else if p = ∞ then snormEssSup f μ else snorm' f (Ennreal.toReal p) μ
+ if p = 0 then 0 else if p = ∞ then snormEssSup f μ else snorm' f (ENNReal.toReal p) μ
#align measure_theory.snorm MeasureTheory.snorm
theorem snorm_eq_snorm' (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) {f : α → F} :
- snorm f p μ = snorm' f (Ennreal.toReal p) μ := by simp [snorm, hp_ne_zero, hp_ne_top]
+ snorm f p μ = snorm' f (ENNReal.toReal p) μ := by simp [snorm, hp_ne_zero, hp_ne_top]
#align measure_theory.snorm_eq_snorm' MeasureTheory.snorm_eq_snorm'
theorem snorm_eq_lintegral_rpow_nnnorm (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) {f : α → F} :
@@ -138,8 +138,8 @@ theorem snorm_eq_lintegral_rpow_nnnorm (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠
#align measure_theory.snorm_eq_lintegral_rpow_nnnorm MeasureTheory.snorm_eq_lintegral_rpow_nnnorm
theorem snorm_one_eq_lintegral_nnnorm {f : α → F} : snorm f 1 μ = ∫⁻ x, ‖f x‖₊ ∂μ := by
- simp_rw [snorm_eq_lintegral_rpow_nnnorm one_ne_zero Ennreal.coe_ne_top, Ennreal.one_toReal,
- one_div_one, Ennreal.rpow_one]
+ simp_rw [snorm_eq_lintegral_rpow_nnnorm one_ne_zero ENNReal.coe_ne_top, ENNReal.one_toReal,
+ one_div_one, ENNReal.rpow_one]
#align measure_theory.snorm_one_eq_lintegral_nnnorm MeasureTheory.snorm_one_eq_lintegral_nnnorm
@[simp]
@@ -161,7 +161,7 @@ theorem Memℒp.aeStronglyMeasurable {f : α → E} {p : ℝ≥0∞} (h : Memℒ
theorem lintegral_rpow_nnnorm_eq_rpow_snorm' {f : α → F} (hq0_lt : 0 < q) :
(∫⁻ a, ‖f a‖₊ ^ q ∂μ) = snorm' f q μ ^ q :=
by
- rw [snorm', ← Ennreal.rpow_mul, one_div, inv_mul_cancel, Ennreal.rpow_one]
+ rw [snorm', ← ENNReal.rpow_mul, one_div, inv_mul_cancel, ENNReal.rpow_one]
exact (ne_of_lt hq0_lt).symm
#align measure_theory.lintegral_rpow_nnnorm_eq_rpow_snorm' MeasureTheory.lintegral_rpow_nnnorm_eq_rpow_snorm'
@@ -181,14 +181,14 @@ theorem lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top {f : α → F} (hq0_lt : 0
(hfq : snorm' f q μ < ∞) : (∫⁻ a, ‖f a‖₊ ^ q ∂μ) < ∞ :=
by
rw [lintegral_rpow_nnnorm_eq_rpow_snorm' hq0_lt]
- exact Ennreal.rpow_lt_top_of_nonneg (le_of_lt hq0_lt) (ne_of_lt hfq)
+ exact ENNReal.rpow_lt_top_of_nonneg (le_of_lt hq0_lt) (ne_of_lt hfq)
#align measure_theory.lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top MeasureTheory.lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top
theorem lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top {f : α → F} (hp_ne_zero : p ≠ 0)
(hp_ne_top : p ≠ ∞) (hfp : snorm f p μ < ∞) : (∫⁻ a, ‖f a‖₊ ^ p.toReal ∂μ) < ∞ :=
by
apply lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top
- · exact Ennreal.toReal_pos hp_ne_zero hp_ne_top
+ · exact ENNReal.toReal_pos hp_ne_zero hp_ne_top
· simpa [snorm_eq_snorm' hp_ne_zero hp_ne_top] using hfp
#align measure_theory.lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top MeasureTheory.lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top
@@ -197,10 +197,10 @@ theorem snorm_lt_top_iff_lintegral_rpow_nnnorm_lt_top {f : α → F} (hp_ne_zero
⟨lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top hp_ne_zero hp_ne_top,
by
intro h
- have hp' := Ennreal.toReal_pos hp_ne_zero hp_ne_top
+ have hp' := ENNReal.toReal_pos hp_ne_zero hp_ne_top
have : 0 < 1 / p.to_real := div_pos zero_lt_one hp'
simpa [snorm_eq_lintegral_rpow_nnnorm hp_ne_zero hp_ne_top] using
- Ennreal.rpow_lt_top_of_nonneg (le_of_lt this) (ne_of_lt h)⟩
+ ENNReal.rpow_lt_top_of_nonneg (le_of_lt this) (ne_of_lt h)⟩
#align measure_theory.snorm_lt_top_iff_lintegral_rpow_nnnorm_lt_top MeasureTheory.snorm_lt_top_iff_lintegral_rpow_nnnorm_lt_top
end Top
@@ -209,7 +209,7 @@ section Zero
@[simp]
theorem snorm'_exponent_zero {f : α → F} : snorm' f 0 μ = 1 := by
- rw [snorm', div_zero, Ennreal.rpow_zero]
+ rw [snorm', div_zero, ENNReal.rpow_zero]
#align measure_theory.snorm'_exponent_zero MeasureTheory.snorm'_exponent_zero
@[simp]
@@ -229,13 +229,13 @@ theorem snorm'_zero' (hq0_ne : q ≠ 0) (hμ : μ ≠ 0) : snorm' (0 : α → F)
by
cases' le_or_lt 0 q with hq0 hq_neg
· exact snorm'_zero (lt_of_le_of_ne hq0 hq0_ne.symm)
- · simp [snorm', Ennreal.rpow_eq_zero_iff, hμ, hq_neg]
+ · simp [snorm', ENNReal.rpow_eq_zero_iff, hμ, hq_neg]
#align measure_theory.snorm'_zero' MeasureTheory.snorm'_zero'
@[simp]
theorem snormEssSup_zero : snormEssSup (0 : α → F) μ = 0 :=
by
- simp_rw [snorm_ess_sup, Pi.zero_apply, nnnorm_zero, Ennreal.coe_zero, ← Ennreal.bot_eq_zero]
+ simp_rw [snorm_ess_sup, Pi.zero_apply, nnnorm_zero, ENNReal.coe_zero, ← ENNReal.bot_eq_zero]
exact essSup_const_bot
#align measure_theory.snorm_ess_sup_zero MeasureTheory.snormEssSup_zero
@@ -247,7 +247,7 @@ theorem snorm_zero : snorm (0 : α → F) p μ = 0 :=
by_cases h_top : p = ∞
· simp only [h_top, snorm_exponent_top, snorm_ess_sup_zero]
rw [← Ne.def] at h0
- simp [snorm_eq_snorm' h0 h_top, Ennreal.toReal_pos h0 h_top]
+ simp [snorm_eq_snorm' h0 h_top, ENNReal.toReal_pos h0 h_top]
#align measure_theory.snorm_zero MeasureTheory.snorm_zero
@[simp]
@@ -257,7 +257,7 @@ theorem snorm_zero' : snorm (fun x : α => (0 : F)) p μ = 0 := by convert snorm
theorem zeroMemℒp : Memℒp (0 : α → E) p μ :=
⟨ae_strongly_measurable_zero, by
rw [snorm_zero]
- exact Ennreal.coe_lt_top⟩
+ exact ENNReal.coe_lt_top⟩
#align measure_theory.zero_mem_ℒp MeasureTheory.zeroMemℒp
theorem zeroMemℒp' : Memℒp (fun x : α => (0 : E)) p μ := by convert zero_mem_ℒp
@@ -290,7 +290,7 @@ theorem snorm_measure_zero {f : α → F} : snorm f p (0 : Measure α) = 0 :=
by_cases h_top : p = ∞
· simp [h_top]
rw [← Ne.def] at h0
- simp [snorm_eq_snorm' h0 h_top, snorm', Ennreal.toReal_pos h0 h_top]
+ simp [snorm_eq_snorm' h0 h_top, snorm', ENNReal.toReal_pos h0 h_top]
#align measure_theory.snorm_measure_zero MeasureTheory.snorm_measure_zero
end Zero
@@ -300,27 +300,27 @@ section Const
theorem snorm'_const (c : F) (hq_pos : 0 < q) :
snorm' (fun x : α => c) q μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / q) :=
by
- rw [snorm', lintegral_const, Ennreal.mul_rpow_of_nonneg _ _ (by simp [hq_pos.le] : 0 ≤ 1 / q)]
+ rw [snorm', lintegral_const, ENNReal.mul_rpow_of_nonneg _ _ (by simp [hq_pos.le] : 0 ≤ 1 / q)]
congr
- rw [← Ennreal.rpow_mul]
- suffices hq_cancel : q * (1 / q) = 1; · rw [hq_cancel, Ennreal.rpow_one]
+ rw [← ENNReal.rpow_mul]
+ suffices hq_cancel : q * (1 / q) = 1; · rw [hq_cancel, ENNReal.rpow_one]
rw [one_div, mul_inv_cancel (ne_of_lt hq_pos).symm]
#align measure_theory.snorm'_const MeasureTheory.snorm'_const
theorem snorm'_const' [IsFiniteMeasure μ] (c : F) (hc_ne_zero : c ≠ 0) (hq_ne_zero : q ≠ 0) :
snorm' (fun x : α => c) q μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / q) :=
by
- rw [snorm', lintegral_const, Ennreal.mul_rpow_of_ne_top _ (measure_ne_top μ Set.univ)]
+ rw [snorm', lintegral_const, ENNReal.mul_rpow_of_ne_top _ (measure_ne_top μ Set.univ)]
· congr
- rw [← Ennreal.rpow_mul]
+ rw [← ENNReal.rpow_mul]
suffices hp_cancel : q * (1 / q) = 1
- · rw [hp_cancel, Ennreal.rpow_one]
+ · rw [hp_cancel, ENNReal.rpow_one]
rw [one_div, mul_inv_cancel hq_ne_zero]
- · rw [Ne.def, Ennreal.rpow_eq_top_iff, not_or, not_and_or, not_and_or]
+ · rw [Ne.def, ENNReal.rpow_eq_top_iff, not_or, not_and_or, not_and_or]
constructor
· left
- rwa [Ennreal.coe_eq_zero, nnnorm_eq_zero]
- · exact Or.inl Ennreal.coe_ne_top
+ rwa [ENNReal.coe_eq_zero, nnnorm_eq_zero]
+ · exact Or.inl ENNReal.coe_ne_top
#align measure_theory.snorm'_const' MeasureTheory.snorm'_const'
theorem snormEssSup_const (c : F) (hμ : μ ≠ 0) : snormEssSup (fun x : α => c) μ = (‖c‖₊ : ℝ≥0∞) :=
@@ -332,22 +332,22 @@ theorem snorm'_const_of_isProbabilityMeasure (c : F) (hq_pos : 0 < q) [IsProbabi
#align measure_theory.snorm'_const_of_is_probability_measure MeasureTheory.snorm'_const_of_isProbabilityMeasure
theorem snorm_const (c : F) (h0 : p ≠ 0) (hμ : μ ≠ 0) :
- snorm (fun x : α => c) p μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / Ennreal.toReal p) :=
+ snorm (fun x : α => c) p μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / ENNReal.toReal p) :=
by
by_cases h_top : p = ∞
· simp [h_top, snorm_ess_sup_const c hμ]
- simp [snorm_eq_snorm' h0 h_top, snorm'_const, Ennreal.toReal_pos h0 h_top]
+ simp [snorm_eq_snorm' h0 h_top, snorm'_const, ENNReal.toReal_pos h0 h_top]
#align measure_theory.snorm_const MeasureTheory.snorm_const
theorem snorm_const' (c : F) (h0 : p ≠ 0) (h_top : p ≠ ∞) :
- snorm (fun x : α => c) p μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / Ennreal.toReal p) := by
- simp [snorm_eq_snorm' h0 h_top, snorm'_const, Ennreal.toReal_pos h0 h_top]
+ snorm (fun x : α => c) p μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / ENNReal.toReal p) := by
+ simp [snorm_eq_snorm' h0 h_top, snorm'_const, ENNReal.toReal_pos h0 h_top]
#align measure_theory.snorm_const' MeasureTheory.snorm_const'
theorem snorm_const_lt_top_iff {p : ℝ≥0∞} {c : F} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) :
snorm (fun x : α => c) p μ < ∞ ↔ c = 0 ∨ μ Set.univ < ∞ :=
by
- have hp : 0 < p.to_real := Ennreal.toReal_pos hp_ne_zero hp_ne_top
+ have hp : 0 < p.to_real := ENNReal.toReal_pos hp_ne_zero hp_ne_top
by_cases hμ : μ = 0
·
simp only [hμ, measure.coe_zero, Pi.zero_apply, or_true_iff, WithTop.zero_lt_top,
@@ -357,12 +357,12 @@ theorem snorm_const_lt_top_iff {p : ℝ≥0∞} {c : F} (hp_ne_zero : p ≠ 0) (
rw [snorm_const' c hp_ne_zero hp_ne_top]
by_cases hμ_top : μ Set.univ = ∞
· simp [hc, hμ_top, hp]
- rw [Ennreal.mul_lt_top_iff]
- simp only [true_and_iff, one_div, Ennreal.rpow_eq_zero_iff, hμ, false_or_iff, or_false_iff,
- Ennreal.coe_lt_top, nnnorm_eq_zero, Ennreal.coe_eq_zero,
+ rw [ENNReal.mul_lt_top_iff]
+ simp only [true_and_iff, one_div, ENNReal.rpow_eq_zero_iff, hμ, false_or_iff, or_false_iff,
+ ENNReal.coe_lt_top, nnnorm_eq_zero, ENNReal.coe_eq_zero,
MeasureTheory.Measure.measure_univ_eq_zero, hp, inv_lt_zero, hc, and_false_iff, false_and_iff,
_root_.inv_pos, or_self_iff, hμ_top, Ne.lt_top hμ_top, iff_true_iff]
- exact Ennreal.rpow_lt_top_of_nonneg (inv_nonneg.mpr hp.le) hμ_top
+ exact ENNReal.rpow_lt_top_of_nonneg (inv_nonneg.mpr hp.le) hμ_top
#align measure_theory.snorm_const_lt_top_iff MeasureTheory.snorm_const_lt_top_iff
theorem memℒpConst (c : E) [IsFiniteMeasure μ] : Memℒp (fun a : α => c) p μ :=
@@ -373,8 +373,8 @@ theorem memℒpConst (c : E) [IsFiniteMeasure μ] : Memℒp (fun a : α => c) p
by_cases hμ : μ = 0
· simp [hμ]
rw [snorm_const c h0 hμ]
- refine' Ennreal.mul_lt_top Ennreal.coe_ne_top _
- refine' (Ennreal.rpow_lt_top_of_nonneg _ (measure_ne_top μ Set.univ)).Ne
+ refine' ENNReal.mul_lt_top ENNReal.coe_ne_top _
+ refine' (ENNReal.rpow_lt_top_of_nonneg _ (measure_ne_top μ Set.univ)).Ne
simp
#align measure_theory.mem_ℒp_const MeasureTheory.memℒpConst
@@ -383,8 +383,8 @@ theorem memℒpTopConst (c : E) : Memℒp (fun a : α => c) ∞ μ :=
refine' ⟨ae_strongly_measurable_const, _⟩
by_cases h : μ = 0
· simp only [h, snorm_measure_zero, WithTop.zero_lt_top]
- · rw [snorm_const _ Ennreal.top_ne_zero h]
- simp only [Ennreal.top_toReal, div_zero, Ennreal.rpow_zero, mul_one, Ennreal.coe_lt_top]
+ · rw [snorm_const _ ENNReal.top_ne_zero h]
+ simp only [ENNReal.top_toReal, div_zero, ENNReal.rpow_zero, mul_one, ENNReal.coe_lt_top]
#align measure_theory.mem_ℒp_top_const MeasureTheory.memℒpTopConst
theorem memℒp_const_iff {p : ℝ≥0∞} {c : E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) :
@@ -399,9 +399,9 @@ end Const
theorem snorm'_mono_ae {f : α → F} {g : α → G} (hq : 0 ≤ q) (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
snorm' f q μ ≤ snorm' g q μ := by
rw [snorm']
- refine' Ennreal.rpow_le_rpow _ (one_div_nonneg.2 hq)
+ refine' ENNReal.rpow_le_rpow _ (one_div_nonneg.2 hq)
refine' lintegral_mono_ae (h.mono fun x hx => _)
- exact Ennreal.rpow_le_rpow (Ennreal.coe_le_coe.2 hx) hq
+ exact ENNReal.rpow_le_rpow (ENNReal.coe_le_coe.2 hx) hq
#align measure_theory.snorm'_mono_ae MeasureTheory.snorm'_mono_ae
theorem snorm'_congr_norm_ae {f g : α → F} (hfg : ∀ᵐ x ∂μ, ‖f x‖ = ‖g x‖) :
@@ -429,7 +429,7 @@ theorem snorm_mono_ae {f : α → F} {g : α → G} (h : ∀ᵐ x ∂μ, ‖f x
· exact le_rfl
· refine' essSup_mono_ae (h.mono fun x hx => _)
exact_mod_cast hx
- · exact snorm'_mono_ae Ennreal.toReal_nonneg h
+ · exact snorm'_mono_ae ENNReal.toReal_nonneg h
#align measure_theory.snorm_mono_ae MeasureTheory.snorm_mono_ae
theorem snorm_mono_ae_real {f : α → F} {g : α → ℝ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ g x) :
@@ -447,20 +447,20 @@ theorem snorm_mono_real {f : α → F} {g : α → ℝ} (h : ∀ x, ‖f x‖
#align measure_theory.snorm_mono_real MeasureTheory.snorm_mono_real
theorem snormEssSup_le_of_ae_bound {f : α → F} {C : ℝ} (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
- snormEssSup f μ ≤ Ennreal.ofReal C :=
+ snormEssSup f μ ≤ ENNReal.ofReal C :=
by
simp_rw [snorm_ess_sup, ← ofReal_norm_eq_coe_nnnorm]
- refine' essSup_le_of_ae_le (Ennreal.ofReal C) (hfC.mono fun x hx => _)
- exact Ennreal.ofReal_le_ofReal hx
+ refine' essSup_le_of_ae_le (ENNReal.ofReal C) (hfC.mono fun x hx => _)
+ exact ENNReal.ofReal_le_ofReal hx
#align measure_theory.snorm_ess_sup_le_of_ae_bound MeasureTheory.snormEssSup_le_of_ae_bound
theorem snormEssSup_lt_top_of_ae_bound {f : α → F} {C : ℝ} (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
snormEssSup f μ < ∞ :=
- (snormEssSup_le_of_ae_bound hfC).trans_lt Ennreal.ofReal_lt_top
+ (snormEssSup_le_of_ae_bound hfC).trans_lt ENNReal.ofReal_lt_top
#align measure_theory.snorm_ess_sup_lt_top_of_ae_bound MeasureTheory.snormEssSup_lt_top_of_ae_bound
theorem snorm_le_of_ae_bound {f : α → F} {C : ℝ} (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
- snorm f p μ ≤ μ Set.univ ^ p.toReal⁻¹ * Ennreal.ofReal C :=
+ snorm f p μ ≤ μ Set.univ ^ p.toReal⁻¹ * ENNReal.ofReal C :=
by
by_cases hμ : μ = 0
· simp [hμ]
@@ -492,23 +492,23 @@ theorem snorm'_norm_rpow (f : α → F) (p q : ℝ) (hq_pos : 0 < q) :
snorm' (fun x => ‖f x‖ ^ q) p μ = snorm' f (p * q) μ ^ q :=
by
simp_rw [snorm']
- rw [← Ennreal.rpow_mul, ← one_div_mul_one_div]
+ rw [← ENNReal.rpow_mul, ← one_div_mul_one_div]
simp_rw [one_div]
rw [mul_assoc, inv_mul_cancel hq_pos.ne.symm, mul_one]
congr
ext1 x
simp_rw [← ofReal_norm_eq_coe_nnnorm]
rw [Real.norm_eq_abs, abs_eq_self.mpr (Real.rpow_nonneg_of_nonneg (norm_nonneg _) _), mul_comm, ←
- Ennreal.ofReal_rpow_of_nonneg (norm_nonneg _) hq_pos.le, Ennreal.rpow_mul]
+ ENNReal.ofReal_rpow_of_nonneg (norm_nonneg _) hq_pos.le, ENNReal.rpow_mul]
#align measure_theory.snorm'_norm_rpow MeasureTheory.snorm'_norm_rpow
theorem snorm_norm_rpow (f : α → F) (hq_pos : 0 < q) :
- snorm (fun x => ‖f x‖ ^ q) p μ = snorm f (p * Ennreal.ofReal q) μ ^ q :=
+ snorm (fun x => ‖f x‖ ^ q) p μ = snorm f (p * ENNReal.ofReal q) μ ^ q :=
by
by_cases h0 : p = 0
- · simp [h0, Ennreal.zero_rpow_of_pos hq_pos]
+ · simp [h0, ENNReal.zero_rpow_of_pos hq_pos]
by_cases hp_top : p = ∞
- · simp only [hp_top, snorm_exponent_top, Ennreal.top_mul, hq_pos.not_le, Ennreal.ofReal_eq_zero,
+ · simp only [hp_top, snorm_exponent_top, ENNReal.top_mul', hq_pos.not_le, ENNReal.ofReal_eq_zero,
if_false, snorm_exponent_top, snorm_ess_sup]
have h_rpow :
essSup (fun x : α => (‖‖f x‖ ^ q‖₊ : ℝ≥0∞)) μ = essSup (fun x : α => ↑‖f x‖₊ ^ q) μ :=
@@ -516,21 +516,21 @@ theorem snorm_norm_rpow (f : α → F) (hq_pos : 0 < q) :
congr
ext1 x
nth_rw 2 [← nnnorm_norm]
- rw [Ennreal.coe_rpow_of_nonneg _ hq_pos.le, Ennreal.coe_eq_coe]
+ rw [ENNReal.coe_rpow_of_nonneg _ hq_pos.le, ENNReal.coe_eq_coe]
ext
push_cast
rw [Real.norm_rpow_of_nonneg (norm_nonneg _)]
rw [h_rpow]
- have h_rpow_mono := Ennreal.strictMono_rpow_of_pos hq_pos
- have h_rpow_surj := (Ennreal.rpow_left_bijective hq_pos.ne.symm).2
+ have h_rpow_mono := ENNReal.strictMono_rpow_of_pos hq_pos
+ have h_rpow_surj := (ENNReal.rpow_left_bijective hq_pos.ne.symm).2
let iso := h_rpow_mono.order_iso_of_surjective _ h_rpow_surj
exact (iso.ess_sup_apply (fun x => (‖f x‖₊ : ℝ≥0∞)) μ).symm
rw [snorm_eq_snorm' h0 hp_top, snorm_eq_snorm' _ _]
swap;
· refine' mul_ne_zero h0 _
- rwa [Ne.def, Ennreal.ofReal_eq_zero, not_le]
- swap; · exact Ennreal.mul_ne_top hp_top Ennreal.ofReal_ne_top
- rw [Ennreal.toReal_mul, Ennreal.toReal_ofReal hq_pos.le]
+ rwa [Ne.def, ENNReal.ofReal_eq_zero, not_le]
+ swap; · exact ENNReal.mul_ne_top hp_top ENNReal.ofReal_ne_top
+ rw [ENNReal.toReal_mul, ENNReal.toReal_ofReal hq_pos.le]
exact snorm'_norm_rpow f p.to_real q hq_pos
#align measure_theory.snorm_norm_rpow MeasureTheory.snorm_norm_rpow
@@ -586,7 +586,7 @@ theorem snorm'_mono_measure (f : α → F) (hμν : ν ≤ μ) (hq : 0 ≤ q) :
by
simp_rw [snorm']
suffices h_integral_mono : (∫⁻ a, (‖f a‖₊ : ℝ≥0∞) ^ q ∂ν) ≤ ∫⁻ a, ‖f a‖₊ ^ q ∂μ
- exact Ennreal.rpow_le_rpow h_integral_mono (by simp [hq])
+ exact ENNReal.rpow_le_rpow h_integral_mono (by simp [hq])
exact lintegral_mono' hμν le_rfl
#align measure_theory.snorm'_mono_measure MeasureTheory.snorm'_mono_measure
@@ -605,7 +605,7 @@ theorem snorm_mono_measure (f : α → F) (hμν : ν ≤ μ) : snorm f p ν ≤
by_cases hp_top : p = ∞
· simp [hp_top, snorm_ess_sup_mono_measure f (measure.absolutely_continuous_of_le hμν)]
simp_rw [snorm_eq_snorm' hp0 hp_top]
- exact snorm'_mono_measure f hμν Ennreal.toReal_nonneg
+ exact snorm'_mono_measure f hμν ENNReal.toReal_nonneg
#align measure_theory.snorm_mono_measure MeasureTheory.snorm_mono_measure
theorem Memℒp.monoMeasure {f : α → E} (hμν : ν ≤ μ) (hf : Memℒp f p μ) : Memℒp f p ν :=
@@ -619,7 +619,7 @@ theorem Memℒp.restrict (s : Set α) {f : α → E} (hf : Memℒp f p μ) : Mem
theorem snorm'_smul_measure {p : ℝ} (hp : 0 ≤ p) {f : α → F} (c : ℝ≥0∞) :
snorm' f p (c • μ) = c ^ (1 / p) * snorm' f p μ :=
by
- rw [snorm', lintegral_smul_measure, Ennreal.mul_rpow_of_nonneg, snorm']
+ rw [snorm', lintegral_smul_measure, ENNReal.mul_rpow_of_nonneg, snorm']
simp [hp]
#align measure_theory.snorm'_smul_measure MeasureTheory.snorm'_smul_measure
@@ -636,10 +636,10 @@ private theorem snorm_smul_measure_of_ne_zero_of_ne_top {p : ℝ≥0∞} (hp_ne_
snorm f p (c • μ) = c ^ (1 / p).toReal • snorm f p μ :=
by
simp_rw [snorm_eq_snorm' hp_ne_zero hp_ne_top]
- rw [snorm'_smul_measure Ennreal.toReal_nonneg]
+ rw [snorm'_smul_measure ENNReal.toReal_nonneg]
congr
simp_rw [one_div]
- rw [Ennreal.toReal_inv]
+ rw [ENNReal.toReal_inv]
#align measure_theory.snorm_smul_measure_of_ne_zero_of_ne_top measure_theory.snorm_smul_measure_of_ne_zero_of_ne_top
theorem snorm_smul_measure_of_ne_zero {p : ℝ≥0∞} {f : α → F} {c : ℝ≥0∞} (hc : c ≠ 0) :
@@ -662,7 +662,7 @@ theorem snorm_smul_measure_of_ne_top {p : ℝ≥0∞} (hp_ne_top : p ≠ ∞) {f
theorem snorm_one_smul_measure {f : α → F} (c : ℝ≥0∞) : snorm f 1 (c • μ) = c * snorm f 1 μ :=
by
- rw [@snorm_smul_measure_of_ne_top _ _ _ μ _ 1 (@Ennreal.coe_ne_top 1) f c]
+ rw [@snorm_smul_measure_of_ne_top _ _ _ μ _ 1 (@ENNReal.coe_ne_top 1) f c]
simp
#align measure_theory.snorm_one_smul_measure MeasureTheory.snorm_one_smul_measure
@@ -674,7 +674,7 @@ theorem Memℒp.ofMeasureLeSmul {μ' : Measure α} (c : ℝ≥0∞) (hc : c ≠
by_cases hc0 : c = 0
· simp [hc0]
rw [snorm_smul_measure_of_ne_zero hc0, smul_eq_mul]
- refine' Ennreal.mul_lt_top _ hf.2.Ne
+ refine' ENNReal.mul_lt_top _ hf.2.Ne
simp [hc, hc0]
#align measure_theory.mem_ℒp.of_measure_le_smul MeasureTheory.Memℒp.ofMeasureLeSmul
@@ -736,15 +736,15 @@ theorem snorm'_eq_zero_of_ae_zero' (hq0_ne : q ≠ 0) (hμ : μ ≠ 0) {f : α
theorem ae_eq_zero_of_snorm'_eq_zero {f : α → E} (hq0 : 0 ≤ q) (hf : AeStronglyMeasurable f μ)
(h : snorm' f q μ = 0) : f =ᵐ[μ] 0 :=
by
- rw [snorm', Ennreal.rpow_eq_zero_iff] at h
+ rw [snorm', ENNReal.rpow_eq_zero_iff] at h
cases h
· rw [lintegral_eq_zero_iff' (hf.ennnorm.pow_const q)] at h
refine' h.left.mono fun x hx => _
- rw [Pi.zero_apply, Ennreal.rpow_eq_zero_iff] at hx
+ rw [Pi.zero_apply, ENNReal.rpow_eq_zero_iff] at hx
cases hx
· cases' hx with hx _
- rwa [← Ennreal.coe_zero, Ennreal.coe_eq_coe, nnnorm_eq_zero] at hx
- · exact absurd hx.left Ennreal.coe_ne_top
+ rwa [← ENNReal.coe_zero, ENNReal.coe_eq_coe, nnnorm_eq_zero] at hx
+ · exact absurd hx.left ENNReal.coe_ne_top
· exfalso
rw [one_div, inv_lt_zero] at h
exact hq0.not_lt h.right
@@ -757,7 +757,7 @@ theorem snorm'_eq_zero_iff (hq0_lt : 0 < q) {f : α → E} (hf : AeStronglyMeasu
theorem coe_nnnorm_ae_le_snormEssSup {m : MeasurableSpace α} (f : α → F) (μ : Measure α) :
∀ᵐ x ∂μ, (‖f x‖₊ : ℝ≥0∞) ≤ snormEssSup f μ :=
- Ennreal.ae_le_essSup fun x => (‖f x‖₊ : ℝ≥0∞)
+ ENNReal.ae_le_essSup fun x => (‖f x‖₊ : ℝ≥0∞)
#align measure_theory.coe_nnnorm_ae_le_snorm_ess_sup MeasureTheory.coe_nnnorm_ae_le_snormEssSup
@[simp]
@@ -770,7 +770,7 @@ theorem snorm_eq_zero_iff {f : α → E} (hf : AeStronglyMeasurable f μ) (h0 :
by_cases h_top : p = ∞
· rw [h_top, snorm_exponent_top, snorm_ess_sup_eq_zero_iff]
rw [snorm_eq_snorm' h0 h_top]
- exact snorm'_eq_zero_iff (Ennreal.toReal_pos h0 h_top) hf
+ exact snorm'_eq_zero_iff (ENNReal.toReal_pos h0 h_top) hf
#align measure_theory.snorm_eq_zero_iff MeasureTheory.snorm_eq_zero_iff
theorem snorm'_add_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeStronglyMeasurable g μ)
@@ -779,18 +779,18 @@ theorem snorm'_add_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : Ae
(∫⁻ a, ↑‖(f + g) a‖₊ ^ q ∂μ) ^ (1 / q) ≤
(∫⁻ a, ((fun a => (‖f a‖₊ : ℝ≥0∞)) + fun a => (‖g a‖₊ : ℝ≥0∞)) a ^ q ∂μ) ^ (1 / q) :=
by
- refine' Ennreal.rpow_le_rpow _ (by simp [le_trans zero_le_one hq1] : 0 ≤ 1 / q)
- refine' lintegral_mono fun a => Ennreal.rpow_le_rpow _ (le_trans zero_le_one hq1)
- simp [← Ennreal.coe_add, nnnorm_add_le]
- _ ≤ snorm' f q μ + snorm' g q μ := Ennreal.lintegral_Lp_add_le hf.ennnorm hg.ennnorm hq1
+ refine' ENNReal.rpow_le_rpow _ (by simp [le_trans zero_le_one hq1] : 0 ≤ 1 / q)
+ refine' lintegral_mono fun a => ENNReal.rpow_le_rpow _ (le_trans zero_le_one hq1)
+ simp [← ENNReal.coe_add, nnnorm_add_le]
+ _ ≤ snorm' f q μ + snorm' g q μ := ENNReal.lintegral_Lp_add_le hf.ennnorm hg.ennnorm hq1
#align measure_theory.snorm'_add_le MeasureTheory.snorm'_add_le
theorem snormEssSup_add_le {f g : α → F} :
snormEssSup (f + g) μ ≤ snormEssSup f μ + snormEssSup g μ :=
by
- refine' le_trans (essSup_mono_ae (eventually_of_forall fun x => _)) (Ennreal.essSup_add_le _ _)
- simp_rw [Pi.add_apply, ← Ennreal.coe_add, Ennreal.coe_le_coe]
+ refine' le_trans (essSup_mono_ae (eventually_of_forall fun x => _)) (ENNReal.essSup_add_le _ _)
+ simp_rw [Pi.add_apply, ← ENNReal.coe_add, ENNReal.coe_le_coe]
exact nnnorm_add_le _ _
#align measure_theory.snorm_ess_sup_add_le MeasureTheory.snormEssSup_add_le
@@ -802,7 +802,7 @@ theorem snorm_add_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeS
by_cases hp_top : p = ∞
· simp [hp_top, snorm_ess_sup_add_le]
have hp1_real : 1 ≤ p.to_real := by
- rwa [← Ennreal.one_toReal, Ennreal.toReal_le_toReal Ennreal.one_ne_top hp_top]
+ rwa [← ENNReal.one_toReal, ENNReal.toReal_le_toReal ENNReal.one_ne_top hp_top]
repeat' rw [snorm_eq_snorm' hp0 hp_top]
exact snorm'_add_le hf hg hp1_real
#align measure_theory.snorm_add_le MeasureTheory.snorm_add_le
@@ -829,7 +829,7 @@ theorem snorm_sub_le {f g : α → E} (hf : AeStronglyMeasurable f μ) (hg : AeS
theorem snorm_add_lt_top_of_one_le {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ)
(hq1 : 1 ≤ p) : snorm (f + g) p μ < ∞ :=
- lt_of_le_of_lt (snorm_add_le hf.1 hg.1 hq1) (Ennreal.add_lt_top.mpr ⟨hf.2, hg.2⟩)
+ lt_of_le_of_lt (snorm_add_le hf.1 hg.1 hq1) (ENNReal.add_lt_top.mpr ⟨hf.2, hg.2⟩)
#align measure_theory.snorm_add_lt_top_of_one_le MeasureTheory.snorm_add_lt_top_of_one_le
theorem snorm'_add_lt_top_of_le_one {f g : α → E} (hf : AeStronglyMeasurable f μ)
@@ -839,16 +839,16 @@ theorem snorm'_add_lt_top_of_le_one {f g : α → E} (hf : AeStronglyMeasurable
(∫⁻ a, ↑‖(f + g) a‖₊ ^ q ∂μ) ^ (1 / q) ≤
(∫⁻ a, ((fun a => (‖f a‖₊ : ℝ≥0∞)) + fun a => (‖g a‖₊ : ℝ≥0∞)) a ^ q ∂μ) ^ (1 / q) :=
by
- refine' Ennreal.rpow_le_rpow _ (by simp [hq_pos.le] : 0 ≤ 1 / q)
- refine' lintegral_mono fun a => Ennreal.rpow_le_rpow _ hq_pos.le
- simp [← Ennreal.coe_add, nnnorm_add_le]
+ refine' ENNReal.rpow_le_rpow _ (by simp [hq_pos.le] : 0 ≤ 1 / q)
+ refine' lintegral_mono fun a => ENNReal.rpow_le_rpow _ hq_pos.le
+ simp [← ENNReal.coe_add, nnnorm_add_le]
_ ≤ (∫⁻ a, (‖f a‖₊ : ℝ≥0∞) ^ q + (‖g a‖₊ : ℝ≥0∞) ^ q ∂μ) ^ (1 / q) :=
by
- refine' Ennreal.rpow_le_rpow (lintegral_mono fun a => _) (by simp [hq_pos.le] : 0 ≤ 1 / q)
- exact Ennreal.rpow_add_le_add_rpow _ _ hq_pos.le hq1
+ refine' ENNReal.rpow_le_rpow (lintegral_mono fun a => _) (by simp [hq_pos.le] : 0 ≤ 1 / q)
+ exact ENNReal.rpow_add_le_add_rpow _ _ hq_pos.le hq1
_ < ∞ := by
- refine' Ennreal.rpow_lt_top_of_nonneg (by simp [hq_pos.le] : 0 ≤ 1 / q) _
- rw [lintegral_add_left' (hf.ennnorm.pow_const q), Ennreal.add_ne_top]
+ refine' ENNReal.rpow_lt_top_of_nonneg (by simp [hq_pos.le] : 0 ≤ 1 / q) _
+ rw [lintegral_add_left' (hf.ennnorm.pow_const q), ENNReal.add_ne_top]
exact
⟨(lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top hq_pos hf_snorm).Ne,
(lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_top hq_pos hg_snorm).Ne⟩
@@ -862,13 +862,13 @@ theorem snorm_add_lt_top {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g
rw [← Ne.def] at h0
cases' le_total 1 p with hp1 hp1
· exact snorm_add_lt_top_of_one_le hf hg hp1
- have hp_top : p ≠ ∞ := (lt_of_le_of_lt hp1 Ennreal.coe_lt_top).Ne
+ have hp_top : p ≠ ∞ := (lt_of_le_of_lt hp1 ENNReal.coe_lt_top).Ne
have hp_pos : 0 < p.to_real :=
by
- rw [← Ennreal.zero_toReal, @Ennreal.toReal_lt_toReal 0 p Ennreal.coe_ne_top hp_top]
+ rw [← ENNReal.zero_toReal, @ENNReal.toReal_lt_toReal 0 p ENNReal.coe_ne_top hp_top]
exact (zero_le p).lt_of_ne h0.symm
have hp1_real : p.to_real ≤ 1 := by
- rwa [← Ennreal.one_toReal, @Ennreal.toReal_le_toReal p 1 hp_top Ennreal.coe_ne_top]
+ rwa [← ENNReal.one_toReal, @ENNReal.toReal_le_toReal p 1 hp_top ENNReal.coe_ne_top]
rw [snorm_eq_snorm' h0 hp_top]
rw [mem_ℒp, snorm_eq_snorm' h0 hp_top] at hf hg
exact snorm'_add_lt_top_of_le_one hf.1 hf.2 hg.2 hp_pos hp1_real
@@ -941,7 +941,7 @@ theorem snorm'_trim (hm : m ≤ m0) {f : α → E} (hf : strongly_measurable[m]
simp_rw [snorm']
congr 1
refine' lintegral_trim hm _
- refine' @Measurable.pow_const _ _ _ _ _ _ _ m _ (@Measurable.coe_nNReal_ennreal _ m _ _) _
+ refine' @Measurable.pow_const _ _ _ _ _ _ _ m _ (@Measurable.coe_nNReal_eNNReal _ m _ _) _
apply @strongly_measurable.measurable
exact @strongly_measurable.nnnorm α m _ _ _ hf
#align measure_theory.snorm'_trim MeasureTheory.snorm'_trim
@@ -1025,7 +1025,7 @@ theorem snorm'_le_snorm'_mul_rpow_measure_univ {p q : ℝ} (hp0_lt : 0 < p) (hpq
by
have hq0_lt : 0 < q := lt_of_lt_of_le hp0_lt hpq
by_cases hpq_eq : p = q
- · rw [hpq_eq, sub_self, Ennreal.rpow_zero, mul_one]
+ · rw [hpq_eq, sub_self, ENNReal.rpow_zero, mul_one]
exact le_rfl
have hpq : p < q := lt_of_le_of_ne hpq hpq_eq
let g := fun a : α => (1 : ℝ≥0∞)
@@ -1041,7 +1041,7 @@ theorem snorm'_le_snorm'_mul_rpow_measure_univ {p q : ℝ} (hp0_lt : 0 < p) (hpq
calc
(∫⁻ a : α, (↑‖f a‖₊ * g a) ^ p ∂μ) ^ (1 / p) ≤
(∫⁻ a : α, ↑‖f a‖₊ ^ q ∂μ) ^ (1 / q) * (∫⁻ a : α, g a ^ r ∂μ) ^ (1 / r) :=
- Ennreal.lintegral_Lp_mul_le_Lq_mul_Lr hp0_lt hpq hpqr μ hf.ennnorm aeMeasurableConst
+ ENNReal.lintegral_Lp_mul_le_Lq_mul_Lr hp0_lt hpq hpqr μ hf.ennnorm aeMeasurableConst
_ = (∫⁻ a : α, ↑‖f a‖₊ ^ q ∂μ) ^ (1 / q) * μ Set.univ ^ (1 / p - 1 / q) := by simp [hpqr]
#align measure_theory.snorm'_le_snorm'_mul_rpow_measure_univ MeasureTheory.snorm'_le_snorm'_mul_rpow_measure_univ
@@ -1053,11 +1053,11 @@ theorem snorm'_le_snormEssSup_mul_rpow_measure_univ (hq_pos : 0 < q) {f : α →
by
refine' lintegral_mono_ae _
have h_nnnorm_le_snorm_ess_sup := coe_nnnorm_ae_le_snorm_ess_sup f μ
- refine' h_nnnorm_le_snorm_ess_sup.mono fun x hx => Ennreal.rpow_le_rpow hx (le_of_lt hq_pos)
- rw [snorm', ← Ennreal.rpow_one (snorm_ess_sup f μ)]
+ refine' h_nnnorm_le_snorm_ess_sup.mono fun x hx => ENNReal.rpow_le_rpow hx (le_of_lt hq_pos)
+ rw [snorm', ← ENNReal.rpow_one (snorm_ess_sup f μ)]
nth_rw 2 [← mul_inv_cancel (ne_of_lt hq_pos).symm]
- rw [Ennreal.rpow_mul, one_div, ← Ennreal.mul_rpow_of_nonneg _ _ (by simp [hq_pos.le] : 0 ≤ q⁻¹)]
- refine' Ennreal.rpow_le_rpow _ (by simp [hq_pos.le])
+ rw [ENNReal.rpow_mul, one_div, ← ENNReal.mul_rpow_of_nonneg _ _ (by simp [hq_pos.le] : 0 ≤ q⁻¹)]
+ refine' ENNReal.rpow_le_rpow _ (by simp [hq_pos.le])
rwa [lintegral_const] at h_le
#align measure_theory.snorm'_le_snorm_ess_sup_mul_rpow_measure_univ MeasureTheory.snorm'_le_snormEssSup_mul_rpow_measure_univ
@@ -1071,21 +1071,21 @@ theorem snorm_le_snorm_mul_rpow_measure_univ {p q : ℝ≥0∞} (hpq : p ≤ q)
have hp0_lt : 0 < p := lt_of_le_of_ne (zero_le _) hp0.symm
have hq0_lt : 0 < q := lt_of_lt_of_le hp0_lt hpq
by_cases hq_top : q = ∞
- · simp only [hq_top, div_zero, one_div, Ennreal.top_toReal, sub_zero, snorm_exponent_top,
+ · simp only [hq_top, div_zero, one_div, ENNReal.top_toReal, sub_zero, snorm_exponent_top,
inv_zero]
by_cases hp_top : p = ∞
- · simp only [hp_top, Ennreal.rpow_zero, mul_one, Ennreal.top_toReal, sub_zero, inv_zero,
+ · simp only [hp_top, ENNReal.rpow_zero, mul_one, ENNReal.top_toReal, sub_zero, inv_zero,
snorm_exponent_top]
exact le_rfl
rw [snorm_eq_snorm' hp0 hp_top]
- have hp_pos : 0 < p.to_real := Ennreal.toReal_pos hp0_lt.ne' hp_top
+ have hp_pos : 0 < p.to_real := ENNReal.toReal_pos hp0_lt.ne' hp_top
refine' (snorm'_le_snorm_ess_sup_mul_rpow_measure_univ hp_pos).trans (le_of_eq _)
congr
exact one_div _
have hp_lt_top : p < ∞ := hpq.trans_lt (lt_top_iff_ne_top.mpr hq_top)
- have hp_pos : 0 < p.to_real := Ennreal.toReal_pos hp0_lt.ne' hp_lt_top.ne
+ have hp_pos : 0 < p.to_real := ENNReal.toReal_pos hp0_lt.ne' hp_lt_top.ne
rw [snorm_eq_snorm' hp0_lt.ne.symm hp_lt_top.ne, snorm_eq_snorm' hq0_lt.ne.symm hq_top]
- have hpq_real : p.to_real ≤ q.to_real := by rwa [Ennreal.toReal_le_toReal hp_lt_top.ne hq_top]
+ have hpq_real : p.to_real ≤ q.to_real := by rwa [ENNReal.toReal_le_toReal hp_lt_top.ne hq_top]
exact snorm'_le_snorm'_mul_rpow_measure_univ hp_pos hpq_real hf
#align measure_theory.snorm_le_snorm_mul_rpow_measure_univ MeasureTheory.snorm_le_snorm_mul_rpow_measure_univ
@@ -1094,7 +1094,7 @@ theorem snorm'_le_snorm'_of_exponent_le {m : MeasurableSpace α} {p q : ℝ} (hp
(hf : AeStronglyMeasurable f μ) : snorm' f p μ ≤ snorm' f q μ :=
by
have h_le_μ := snorm'_le_snorm'_mul_rpow_measure_univ hp0_lt hpq hf
- rwa [measure_univ, Ennreal.one_rpow, mul_one] at h_le_μ
+ rwa [measure_univ, ENNReal.one_rpow, mul_one] at h_le_μ
#align measure_theory.snorm'_le_snorm'_of_exponent_le MeasureTheory.snorm'_le_snorm'_of_exponent_le
theorem snorm'_le_snormEssSup (hq_pos : 0 < q) {f : α → F} [IsProbabilityMeasure μ] :
@@ -1119,8 +1119,8 @@ theorem snorm'_lt_top_of_snorm'_lt_top_of_exponent_le {p q : ℝ} [IsFiniteMeasu
snorm' f p μ ≤ snorm' f q μ * μ Set.univ ^ (1 / p - 1 / q) :=
snorm'_le_snorm'_mul_rpow_measure_univ hp_pos hpq hf
_ < ∞ := by
- rw [Ennreal.mul_lt_top_iff]
- refine' Or.inl ⟨hfq_lt_top, Ennreal.rpow_lt_top_of_nonneg _ (measure_ne_top μ Set.univ)⟩
+ rw [ENNReal.mul_lt_top_iff]
+ refine' Or.inl ⟨hfq_lt_top, ENNReal.rpow_lt_top_of_nonneg _ (measure_ne_top μ Set.univ)⟩
rwa [le_sub_comm, sub_zero, one_div, one_div, inv_le_inv hq_pos hp_pos]
#align measure_theory.snorm'_lt_top_of_snorm'_lt_top_of_exponent_le MeasureTheory.snorm'_lt_top_of_snorm'_lt_top_of_exponent_le
@@ -1133,8 +1133,8 @@ theorem pow_mul_meas_ge_le_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
by
rw [snorm_eq_lintegral_rpow_nnnorm hp_ne_zero hp_ne_top]
exact
- Ennreal.rpow_le_rpow (mul_meas_ge_le_lintegral₀ (hf.ennnorm.pow_const _) ε)
- (one_div_nonneg.2 Ennreal.toReal_nonneg)
+ ENNReal.rpow_le_rpow (mul_meas_ge_le_lintegral₀ (hf.ennnorm.pow_const _) ε)
+ (one_div_nonneg.2 ENNReal.toReal_nonneg)
#align measure_theory.pow_mul_meas_ge_le_snorm MeasureTheory.pow_mul_meas_ge_le_snorm
theorem mul_meas_ge_le_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
@@ -1144,12 +1144,12 @@ theorem mul_meas_ge_le_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
have : 1 / p.to_real * p.to_real = 1 :=
by
refine' one_div_mul_cancel _
- rw [Ne, Ennreal.toReal_eq_zero_iff]
+ rw [Ne, ENNReal.toReal_eq_zero_iff]
exact not_or_of_not hp_ne_zero hp_ne_top
- rw [← Ennreal.rpow_one (ε * μ { x | ε ≤ ‖f x‖₊ ^ p.to_real }), ← this, Ennreal.rpow_mul]
+ rw [← ENNReal.rpow_one (ε * μ { x | ε ≤ ‖f x‖₊ ^ p.to_real }), ← this, ENNReal.rpow_mul]
exact
- Ennreal.rpow_le_rpow (pow_mul_meas_ge_le_snorm μ hp_ne_zero hp_ne_top hf ε)
- Ennreal.toReal_nonneg
+ ENNReal.rpow_le_rpow (pow_mul_meas_ge_le_snorm μ hp_ne_zero hp_ne_top hf ε)
+ ENNReal.toReal_nonneg
#align measure_theory.mul_meas_ge_le_pow_snorm MeasureTheory.mul_meas_ge_le_pow_snorm
/-- A version of Markov's inequality using Lp-norms. -/
@@ -1159,7 +1159,7 @@ theorem mul_meas_ge_le_pow_snorm' {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_t
by
convert mul_meas_ge_le_pow_snorm μ hp_ne_zero hp_ne_top hf (ε ^ p.to_real)
ext x
- rw [Ennreal.rpow_le_rpow_iff (Ennreal.toReal_pos hp_ne_zero hp_ne_top)]
+ rw [ENNReal.rpow_le_rpow_iff (ENNReal.toReal_pos hp_ne_zero hp_ne_top)]
#align measure_theory.mul_meas_ge_le_pow_snorm' MeasureTheory.mul_meas_ge_le_pow_snorm'
theorem meas_ge_le_mul_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
@@ -1168,10 +1168,10 @@ theorem meas_ge_le_mul_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
by
by_cases ε = ∞
· simp [h]
- have hεpow : ε ^ p.to_real ≠ 0 := (Ennreal.rpow_pos (pos_iff_ne_zero.2 hε) h).Ne.symm
- have hεpow' : ε ^ p.to_real ≠ ∞ := Ennreal.rpow_ne_top_of_nonneg Ennreal.toReal_nonneg h
- rw [Ennreal.inv_rpow, ← Ennreal.mul_le_mul_left hεpow hεpow', ← mul_assoc,
- Ennreal.mul_inv_cancel hεpow hεpow', one_mul]
+ have hεpow : ε ^ p.to_real ≠ 0 := (ENNReal.rpow_pos (pos_iff_ne_zero.2 hε) h).Ne.symm
+ have hεpow' : ε ^ p.to_real ≠ ∞ := ENNReal.rpow_ne_top_of_nonneg ENNReal.toReal_nonneg h
+ rw [ENNReal.inv_rpow, ← ENNReal.mul_le_mul_left hεpow hεpow', ← mul_assoc,
+ ENNReal.mul_inv_cancel hεpow hεpow', one_mul]
exact mul_meas_ge_le_pow_snorm' μ hp_ne_zero hp_ne_top hf ε
#align measure_theory.meas_ge_le_mul_pow_snorm MeasureTheory.meas_ge_le_mul_pow_snorm
@@ -1189,19 +1189,19 @@ theorem Memℒp.memℒpOfExponentLe {p q : ℝ≥0∞} [IsFiniteMeasure μ] {f :
· have hq_top : q = ∞ := by rwa [hp_top, top_le_iff] at hpq
rw [hp_top]
rwa [hq_top] at hfq_lt_top
- have hp_pos : 0 < p.to_real := Ennreal.toReal_pos hp0 hp_top
+ have hp_pos : 0 < p.to_real := ENNReal.toReal_pos hp0 hp_top
by_cases hq_top : q = ∞
· rw [snorm_eq_snorm' hp0 hp_top]
rw [hq_top, snorm_exponent_top] at hfq_lt_top
refine' lt_of_le_of_lt (snorm'_le_snorm_ess_sup_mul_rpow_measure_univ hp_pos) _
- refine' Ennreal.mul_lt_top hfq_lt_top.ne _
- exact (Ennreal.rpow_lt_top_of_nonneg (by simp [hp_pos.le]) (measure_ne_top μ Set.univ)).Ne
+ refine' ENNReal.mul_lt_top hfq_lt_top.ne _
+ exact (ENNReal.rpow_lt_top_of_nonneg (by simp [hp_pos.le]) (measure_ne_top μ Set.univ)).Ne
have hq0 : q ≠ 0 := by
by_contra hq_eq_zero
have hp_eq_zero : p = 0 := le_antisymm (by rwa [hq_eq_zero] at hpq) (zero_le _)
- rw [hp_eq_zero, Ennreal.zero_toReal] at hp_pos
+ rw [hp_eq_zero, ENNReal.zero_toReal] at hp_pos
exact (lt_irrefl _) hp_pos
- have hpq_real : p.to_real ≤ q.to_real := by rwa [Ennreal.toReal_le_toReal hp_top hq_top]
+ have hpq_real : p.to_real ≤ q.to_real := by rwa [ENNReal.toReal_le_toReal hp_top hq_top]
rw [snorm_eq_snorm' hp0 hp_top]
rw [snorm_eq_snorm' hq0 hq_top] at hfq_lt_top
exact snorm'_lt_top_of_snorm'_lt_top_of_exponent_le hfq_m hfq_lt_top (le_of_lt hp_pos) hpq_real
@@ -1267,20 +1267,20 @@ theorem snorm'_const_smul {f : α → F} (c : 𝕜) (hq_pos : 0 < q) :
snorm' (c • f) q μ = (‖c‖₊ : ℝ≥0∞) * snorm' f q μ :=
by
rw [snorm']
- simp_rw [Pi.smul_apply, nnnorm_smul, Ennreal.coe_mul, Ennreal.mul_rpow_of_nonneg _ _ hq_pos.le]
+ simp_rw [Pi.smul_apply, nnnorm_smul, ENNReal.coe_mul, ENNReal.mul_rpow_of_nonneg _ _ hq_pos.le]
suffices h_integral : (∫⁻ a, ↑‖c‖₊ ^ q * ↑‖f a‖₊ ^ q ∂μ) = (‖c‖₊ : ℝ≥0∞) ^ q * ∫⁻ a, ‖f a‖₊ ^ q ∂μ
· apply_fun fun x => x ^ (1 / q) at h_integral
- rw [h_integral, Ennreal.mul_rpow_of_nonneg _ _ (by simp [hq_pos.le] : 0 ≤ 1 / q)]
+ rw [h_integral, ENNReal.mul_rpow_of_nonneg _ _ (by simp [hq_pos.le] : 0 ≤ 1 / q)]
congr
- simp_rw [← Ennreal.rpow_mul, one_div, mul_inv_cancel hq_pos.ne.symm, Ennreal.rpow_one]
+ simp_rw [← ENNReal.rpow_mul, one_div, mul_inv_cancel hq_pos.ne.symm, ENNReal.rpow_one]
rw [lintegral_const_mul']
- rw [Ennreal.coe_rpow_of_nonneg _ hq_pos.le]
- exact Ennreal.coe_ne_top
+ rw [ENNReal.coe_rpow_of_nonneg _ hq_pos.le]
+ exact ENNReal.coe_ne_top
#align measure_theory.snorm'_const_smul MeasureTheory.snorm'_const_smul
theorem snormEssSup_const_smul {f : α → F} (c : 𝕜) :
snormEssSup (c • f) μ = (‖c‖₊ : ℝ≥0∞) * snormEssSup f μ := by
- simp_rw [snorm_ess_sup, Pi.smul_apply, nnnorm_smul, Ennreal.coe_mul, Ennreal.essSup_const_mul]
+ simp_rw [snorm_ess_sup, Pi.smul_apply, nnnorm_smul, ENNReal.coe_mul, ENNReal.essSup_const_mul]
#align measure_theory.snorm_ess_sup_const_smul MeasureTheory.snormEssSup_const_smul
theorem snorm_const_smul {f : α → F} (c : 𝕜) : snorm (c • f) p μ = (‖c‖₊ : ℝ≥0∞) * snorm f p μ :=
@@ -1291,12 +1291,12 @@ theorem snorm_const_smul {f : α → F} (c : 𝕜) : snorm (c • f) p μ = (‖
· simp [h_top, snorm_ess_sup_const_smul]
repeat' rw [snorm_eq_snorm' h0 h_top]
rw [← Ne.def] at h0
- exact snorm'_const_smul c (Ennreal.toReal_pos h0 h_top)
+ exact snorm'_const_smul c (ENNReal.toReal_pos h0 h_top)
#align measure_theory.snorm_const_smul MeasureTheory.snorm_const_smul
theorem Memℒp.constSmul {f : α → E} (hf : Memℒp f p μ) (c : 𝕜) : Memℒp (c • f) p μ :=
⟨AeStronglyMeasurable.constSmul hf.1 c,
- (snorm_const_smul c).le.trans_lt (Ennreal.mul_lt_top Ennreal.coe_ne_top hf.2.Ne)⟩
+ (snorm_const_smul c).le.trans_lt (ENNReal.mul_lt_top ENNReal.coe_ne_top hf.2.Ne)⟩
#align measure_theory.mem_ℒp.const_smul MeasureTheory.Memℒp.constSmul
theorem Memℒp.constMul {f : α → 𝕜} (hf : Memℒp f p μ) (c : 𝕜) : Memℒp (fun x => c * f x) p μ :=
@@ -1307,8 +1307,8 @@ theorem snorm'_smul_le_mul_snorm' {p q r : ℝ} {f : α → E} (hf : AeStronglyM
{φ : α → 𝕜} (hφ : AeStronglyMeasurable φ μ) (hp0_lt : 0 < p) (hpq : p < q)
(hpqr : 1 / p = 1 / q + 1 / r) : snorm' (φ • f) p μ ≤ snorm' φ q μ * snorm' f r μ :=
by
- simp_rw [snorm', Pi.smul_apply', nnnorm_smul, Ennreal.coe_mul]
- exact Ennreal.lintegral_Lp_mul_le_Lq_mul_Lr hp0_lt hpq hpqr μ hφ.ennnorm hf.ennnorm
+ simp_rw [snorm', Pi.smul_apply', nnnorm_smul, ENNReal.coe_mul]
+ exact ENNReal.lintegral_Lp_mul_le_Lq_mul_Lr hp0_lt hpq hpqr μ hφ.ennnorm hf.ennnorm
#align measure_theory.snorm'_smul_le_mul_snorm' MeasureTheory.snorm'_smul_le_mul_snorm'
theorem snorm_smul_le_snorm_top_mul_snorm (p : ℝ≥0∞) {f : α → E} (hf : AeStronglyMeasurable f μ)
@@ -1316,8 +1316,8 @@ theorem snorm_smul_le_snorm_top_mul_snorm (p : ℝ≥0∞) {f : α → E} (hf :
by
by_cases hp_top : p = ∞
· simp_rw [hp_top, snorm_exponent_top, snorm_ess_sup, Pi.smul_apply', nnnorm_smul,
- Ennreal.coe_mul]
- exact Ennreal.essSup_mul_le _ _
+ ENNReal.coe_mul]
+ exact ENNReal.essSup_mul_le _ _
by_cases hp_zero : p = 0
· simp only [hp_zero, snorm_exponent_zero, mul_zero, le_zero_iff]
simp_rw [snorm_eq_lintegral_rpow_nnnorm hp_zero hp_top, snorm_exponent_top, snorm_ess_sup]
@@ -1327,30 +1327,30 @@ theorem snorm_smul_le_snorm_top_mul_snorm (p : ℝ≥0∞) {f : α → E} (hf :
by
congr
ext1 x
- rw [Pi.smul_apply', nnnorm_smul, Ennreal.coe_mul,
- Ennreal.mul_rpow_of_nonneg _ _ Ennreal.toReal_nonneg]
+ rw [Pi.smul_apply', nnnorm_smul, ENNReal.coe_mul,
+ ENNReal.mul_rpow_of_nonneg _ _ ENNReal.toReal_nonneg]
_ ≤
(∫⁻ x, essSup (fun x => ↑‖φ x‖₊) μ ^ p.to_real * ↑‖f x‖₊ ^ p.to_real ∂μ) ^
(1 / p.to_real) :=
by
- refine' Ennreal.rpow_le_rpow _ _
+ refine' ENNReal.rpow_le_rpow _ _
swap;
· rw [one_div_nonneg]
- exact Ennreal.toReal_nonneg
+ exact ENNReal.toReal_nonneg
refine' lintegral_mono_ae _
- filter_upwards [@Ennreal.ae_le_essSup _ _ μ fun x => ↑‖φ x‖₊]with x hx
- refine' Ennreal.mul_le_mul _ le_rfl
- exact Ennreal.rpow_le_rpow hx Ennreal.toReal_nonneg
+ filter_upwards [@ENNReal.ae_le_essSup _ _ μ fun x => ↑‖φ x‖₊]with x hx
+ refine' ENNReal.mul_le_mul _ le_rfl
+ exact ENNReal.rpow_le_rpow hx ENNReal.toReal_nonneg
_ = essSup (fun x => ↑‖φ x‖₊) μ * (∫⁻ x, ↑‖f x‖₊ ^ p.to_real ∂μ) ^ (1 / p.to_real) :=
by
rw [lintegral_const_mul'']
swap; · exact hf.nnnorm.ae_measurable.coe_nnreal_ennreal.pow aeMeasurableConst
- rw [Ennreal.mul_rpow_of_nonneg]
+ rw [ENNReal.mul_rpow_of_nonneg]
swap;
· rw [one_div_nonneg]
- exact Ennreal.toReal_nonneg
- rw [← Ennreal.rpow_mul, one_div, mul_inv_cancel, Ennreal.rpow_one]
- rw [Ne.def, Ennreal.toReal_eq_zero_iff, Auto.not_or_eq]
+ exact ENNReal.toReal_nonneg
+ rw [← ENNReal.rpow_mul, one_div, mul_inv_cancel, ENNReal.rpow_one]
+ rw [Ne.def, ENNReal.toReal_eq_zero_iff, Auto.not_or_eq]
exact ⟨hp_zero, hp_top⟩
#align measure_theory.snorm_smul_le_snorm_top_mul_snorm MeasureTheory.snorm_smul_le_snorm_top_mul_snorm
@@ -1380,61 +1380,61 @@ theorem snorm_smul_le_mul_snorm {p q r : ℝ≥0∞} {f : α → E} (hf : AeStro
· simp [hp_zero]
have hq_ne_zero : q ≠ 0 := by
intro hq_zero
- simp only [hq_zero, hp_zero, one_div, Ennreal.inv_zero, Ennreal.top_add, Ennreal.inv_eq_top] at
+ simp only [hq_zero, hp_zero, one_div, ENNReal.inv_zero, ENNReal.top_add, ENNReal.inv_eq_top] at
hpqr
exact hpqr
have hr_ne_zero : r ≠ 0 := by
intro hr_zero
- simp only [hr_zero, hp_zero, one_div, Ennreal.inv_zero, Ennreal.add_top, Ennreal.inv_eq_top] at
+ simp only [hr_zero, hp_zero, one_div, ENNReal.inv_zero, ENNReal.add_top, ENNReal.inv_eq_top] at
hpqr
exact hpqr
by_cases hq_top : q = ∞
· have hpr : p = r := by
- simpa only [hq_top, one_div, Ennreal.div_top, zero_add, inv_inj] using hpqr
+ simpa only [hq_top, one_div, ENNReal.div_top, zero_add, inv_inj] using hpqr
rw [← hpr, hq_top]
exact snorm_smul_le_snorm_top_mul_snorm p hf φ
by_cases hr_top : r = ∞
· have hpq : p = q := by
- simpa only [hr_top, one_div, Ennreal.div_top, add_zero, inv_inj] using hpqr
+ simpa only [hr_top, one_div, ENNReal.div_top, add_zero, inv_inj] using hpqr
rw [← hpq, hr_top]
exact snorm_smul_le_snorm_mul_snorm_top p f hφ
have hpq : p < q :=
by
- suffices 1 / q < 1 / p by rwa [one_div, one_div, Ennreal.inv_lt_inv] at this
+ suffices 1 / q < 1 / p by rwa [one_div, one_div, ENNReal.inv_lt_inv] at this
rw [hpqr]
- refine' Ennreal.lt_add_right _ _
- · simp only [hq_ne_zero, one_div, Ne.def, Ennreal.inv_eq_top, not_false_iff]
- · simp only [hr_top, one_div, Ne.def, Ennreal.inv_eq_zero, not_false_iff]
+ refine' ENNReal.lt_add_right _ _
+ · simp only [hq_ne_zero, one_div, Ne.def, ENNReal.inv_eq_top, not_false_iff]
+ · simp only [hr_top, one_div, Ne.def, ENNReal.inv_eq_zero, not_false_iff]
rw [snorm_eq_snorm' hp_zero (hpq.trans_le le_top).Ne, snorm_eq_snorm' hq_ne_zero hq_top,
snorm_eq_snorm' hr_ne_zero hr_top]
refine' snorm'_smul_le_mul_snorm' hf hφ _ _ _
- · exact Ennreal.toReal_pos hp_zero (hpq.trans_le le_top).Ne
- · exact Ennreal.toReal_strict_mono hq_top hpq
- rw [← Ennreal.one_toReal, ← Ennreal.toReal_div, ← Ennreal.toReal_div, ← Ennreal.toReal_div, hpqr,
- Ennreal.toReal_add]
- · simp only [hq_ne_zero, one_div, Ne.def, Ennreal.inv_eq_top, not_false_iff]
- · simp only [hr_ne_zero, one_div, Ne.def, Ennreal.inv_eq_top, not_false_iff]
+ · exact ENNReal.toReal_pos hp_zero (hpq.trans_le le_top).Ne
+ · exact ENNReal.toReal_strict_mono hq_top hpq
+ rw [← ENNReal.one_toReal, ← ENNReal.toReal_div, ← ENNReal.toReal_div, ← ENNReal.toReal_div, hpqr,
+ ENNReal.toReal_add]
+ · simp only [hq_ne_zero, one_div, Ne.def, ENNReal.inv_eq_top, not_false_iff]
+ · simp only [hr_ne_zero, one_div, Ne.def, ENNReal.inv_eq_top, not_false_iff]
#align measure_theory.snorm_smul_le_mul_snorm MeasureTheory.snorm_smul_le_mul_snorm
theorem Memℒp.smul {p q r : ℝ≥0∞} {f : α → E} {φ : α → 𝕜} (hf : Memℒp f r μ) (hφ : Memℒp φ q μ)
(hpqr : 1 / p = 1 / q + 1 / r) : Memℒp (φ • f) p μ :=
⟨hφ.1.smul hf.1,
(snorm_smul_le_mul_snorm hf.1 hφ.1 hpqr).trans_lt
- (Ennreal.mul_lt_top hφ.snorm_ne_top hf.snorm_ne_top)⟩
+ (ENNReal.mul_lt_top hφ.snorm_ne_top hf.snorm_ne_top)⟩
#align measure_theory.mem_ℒp.smul MeasureTheory.Memℒp.smul
theorem Memℒp.smulOfTopRight {p : ℝ≥0∞} {f : α → E} {φ : α → 𝕜} (hf : Memℒp f p μ)
(hφ : Memℒp φ ∞ μ) : Memℒp (φ • f) p μ :=
by
apply hf.smul hφ
- simp only [Ennreal.div_top, zero_add]
+ simp only [ENNReal.div_top, zero_add]
#align measure_theory.mem_ℒp.smul_of_top_right MeasureTheory.Memℒp.smulOfTopRight
theorem Memℒp.smulOfTopLeft {p : ℝ≥0∞} {f : α → E} {φ : α → 𝕜} (hf : Memℒp f ∞ μ)
(hφ : Memℒp φ p μ) : Memℒp (φ • f) p μ :=
by
apply hf.smul hφ
- simp only [Ennreal.div_top, add_zero]
+ simp only [ENNReal.div_top, add_zero]
#align measure_theory.mem_ℒp.smul_of_top_left MeasureTheory.Memℒp.smulOfTopLeft
end NormedSpace
@@ -1443,10 +1443,10 @@ section Monotonicity
theorem snorm_le_mul_snorm_aux_of_nonneg {f : α → F} {g : α → G} {c : ℝ}
(h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) (hc : 0 ≤ c) (p : ℝ≥0∞) :
- snorm f p μ ≤ Ennreal.ofReal c * snorm g p μ :=
+ snorm f p μ ≤ ENNReal.ofReal c * snorm g p μ :=
by
lift c to ℝ≥0 using hc
- rw [Ennreal.ofReal_coe_nNReal, ← c.nnnorm_eq, ← snorm_norm g, ← snorm_const_smul (c : ℝ)]
+ rw [ENNReal.ofReal_coe_nnreal, ← c.nnnorm_eq, ← snorm_norm g, ← snorm_const_smul (c : ℝ)]
swap; infer_instance
refine' snorm_mono_ae _
simpa
@@ -1464,7 +1464,7 @@ theorem snorm_le_mul_snorm_aux_of_neg {f : α → F} {g : α → G} {c : ℝ}
#align measure_theory.snorm_le_mul_snorm_aux_of_neg MeasureTheory.snorm_le_mul_snorm_aux_of_neg
theorem snorm_le_mul_snorm_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ}
- (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) (p : ℝ≥0∞) : snorm f p μ ≤ Ennreal.ofReal c * snorm g p μ :=
+ (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) (p : ℝ≥0∞) : snorm f p μ ≤ ENNReal.ofReal c * snorm g p μ :=
by
cases' le_or_lt 0 c with hc hc
· exact snorm_le_mul_snorm_aux_of_nonneg h hc p
@@ -1475,7 +1475,7 @@ theorem Memℒp.ofLeMul {f : α → E} {g : α → F} {c : ℝ} (hg : Memℒp g
(hf : AeStronglyMeasurable f μ) (hfg : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : Memℒp f p μ :=
⟨hf,
lt_of_le_of_lt (snorm_le_mul_snorm_of_ae_le_mul hfg p) <|
- Ennreal.mul_lt_top Ennreal.ofReal_ne_top hg.snorm_ne_top⟩
+ ENNReal.mul_lt_top ENNReal.ofReal_ne_top hg.snorm_ne_top⟩
#align measure_theory.mem_ℒp.of_le_mul MeasureTheory.Memℒp.ofLeMul
end Monotonicity
@@ -1484,17 +1484,17 @@ theorem snorm_indicator_ge_of_bdd_below (hp : p ≠ 0) (hp' : p ≠ ∞) {f : α
(hs : MeasurableSet s) (hf : ∀ᵐ x ∂μ, x ∈ s → C ≤ ‖s.indicator f x‖₊) :
C • μ s ^ (1 / p.toReal) ≤ snorm (s.indicator f) p μ :=
by
- rw [Ennreal.smul_def, smul_eq_mul, snorm_eq_lintegral_rpow_nnnorm hp hp',
- Ennreal.le_rpow_one_div_iff (Ennreal.toReal_pos hp hp'),
- Ennreal.mul_rpow_of_nonneg _ _ Ennreal.toReal_nonneg, ← Ennreal.rpow_mul,
- one_div_mul_cancel (Ennreal.toReal_pos hp hp').Ne.symm, Ennreal.rpow_one, ← set_lintegral_const,
+ rw [ENNReal.smul_def, smul_eq_mul, snorm_eq_lintegral_rpow_nnnorm hp hp',
+ ENNReal.le_rpow_one_div_iff (ENNReal.toReal_pos hp hp'),
+ ENNReal.mul_rpow_of_nonneg _ _ ENNReal.toReal_nonneg, ← ENNReal.rpow_mul,
+ one_div_mul_cancel (ENNReal.toReal_pos hp hp').Ne.symm, ENNReal.rpow_one, ← set_lintegral_const,
← lintegral_indicator _ hs]
refine' lintegral_mono_ae _
filter_upwards [hf]with x hx
rw [nnnorm_indicator_eq_indicator_nnnorm]
by_cases hxs : x ∈ s
· simp only [Set.indicator_of_mem hxs] at hx⊢
- exact Ennreal.rpow_le_rpow (Ennreal.coe_le_coe.2 (hx hxs)) Ennreal.toReal_nonneg
+ exact ENNReal.rpow_le_rpow (ENNReal.coe_le_coe.2 (hx hxs)) ENNReal.toReal_nonneg
· simp [Set.indicator_of_not_mem hxs]
#align measure_theory.snorm_indicator_ge_of_bdd_below MeasureTheory.snorm_indicator_ge_of_bdd_below
@@ -1552,24 +1552,24 @@ theorem ae_bdd_liminf_atTop_rpow_of_snorm_bdd {p : ℝ≥0∞} {f : ℕ → α
∀ᵐ x ∂μ, liminf (fun n => (‖f n x‖₊ ^ p.toReal : ℝ≥0∞)) atTop < ∞ :=
by
by_cases hp0 : p.to_real = 0
- · simp only [hp0, Ennreal.rpow_zero]
+ · simp only [hp0, ENNReal.rpow_zero]
refine' eventually_of_forall fun x => _
rw [liminf_const (1 : ℝ≥0∞)]
- exacts[Ennreal.one_lt_top, at_top_ne_bot]
+ exacts[ENNReal.one_lt_top, at_top_ne_bot]
have hp : p ≠ 0 := fun h => by simpa [h] using hp0
have hp' : p ≠ ∞ := fun h => by simpa [h] using hp0
refine'
- ae_lt_top (measurable_liminf fun n => (hfmeas n).nnnorm.coe_nNReal_ennreal.pow_const p.to_real)
+ ae_lt_top (measurable_liminf fun n => (hfmeas n).nnnorm.coe_nNReal_eNNReal.pow_const p.to_real)
(lt_of_le_of_lt
- (lintegral_liminf_le fun n => (hfmeas n).nnnorm.coe_nNReal_ennreal.pow_const p.to_real)
+ (lintegral_liminf_le fun n => (hfmeas n).nnnorm.coe_nNReal_eNNReal.pow_const p.to_real)
(lt_of_le_of_lt _
- (Ennreal.rpow_lt_top_of_nonneg Ennreal.toReal_nonneg Ennreal.coe_ne_top :
+ (ENNReal.rpow_lt_top_of_nonneg ENNReal.toReal_nonneg ENNReal.coe_ne_top :
↑R ^ p.to_real < ∞))).Ne
simp_rw [snorm_eq_lintegral_rpow_nnnorm hp hp'] at hbdd
simp_rw [liminf_eq, eventually_at_top]
exact
supₛ_le fun b ⟨a, ha⟩ =>
- (ha a le_rfl).trans ((Ennreal.rpow_one_div_le_iff (Ennreal.toReal_pos hp hp')).1 (hbdd _))
+ (ha a le_rfl).trans ((ENNReal.rpow_one_div_le_iff (ENNReal.toReal_pos hp hp')).1 (hbdd _))
#align measure_theory.ae_bdd_liminf_at_top_rpow_of_snorm_bdd MeasureTheory.ae_bdd_liminf_atTop_rpow_of_snorm_bdd
/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic filter.is_bounded_default -/
@@ -1582,27 +1582,27 @@ theorem ae_bdd_liminf_atTop_of_snorm_bdd {p : ℝ≥0∞} (hp : p ≠ 0) {f :
simp_rw [snorm_exponent_top] at hbdd
have : ∀ n, ∀ᵐ x ∂μ, (‖f n x‖₊ : ℝ≥0∞) < R + 1 := fun n =>
ae_lt_of_essSup_lt
- (lt_of_le_of_lt (hbdd n) <| Ennreal.lt_add_right Ennreal.coe_ne_top one_ne_zero)
+ (lt_of_le_of_lt (hbdd n) <| ENNReal.lt_add_right ENNReal.coe_ne_top one_ne_zero)
rw [← ae_all_iff] at this
filter_upwards [this]with x hx using lt_of_le_of_lt
(liminf_le_of_frequently_le' <| frequently_of_forall fun n => (hx n).le)
- (Ennreal.add_lt_top.2 ⟨Ennreal.coe_lt_top, Ennreal.one_lt_top⟩)
+ (ENNReal.add_lt_top.2 ⟨ENNReal.coe_lt_top, ENNReal.one_lt_top⟩)
filter_upwards [ae_bdd_liminf_at_top_rpow_of_snorm_bdd hfmeas hbdd]with x hx
- have hppos : 0 < p.to_real := Ennreal.toReal_pos hp hp'
+ have hppos : 0 < p.to_real := ENNReal.toReal_pos hp hp'
have :
liminf (fun n => (‖f n x‖₊ ^ p.to_real : ℝ≥0∞)) at_top =
liminf (fun n => (‖f n x‖₊ : ℝ≥0∞)) at_top ^ p.to_real :=
by
change
- liminf (fun n => Ennreal.orderIsoRpow p.to_real hppos (‖f n x‖₊ : ℝ≥0∞)) at_top =
- Ennreal.orderIsoRpow p.to_real hppos (liminf (fun n => (‖f n x‖₊ : ℝ≥0∞)) at_top)
- refine' (OrderIso.liminf_apply (Ennreal.orderIsoRpow p.to_real _) _ _ _ _).symm <;>
+ liminf (fun n => ENNReal.orderIsoRpow p.to_real hppos (‖f n x‖₊ : ℝ≥0∞)) at_top =
+ ENNReal.orderIsoRpow p.to_real hppos (liminf (fun n => (‖f n x‖₊ : ℝ≥0∞)) at_top)
+ refine' (OrderIso.liminf_apply (ENNReal.orderIsoRpow p.to_real _) _ _ _ _).symm <;>
run_tac
is_bounded_default
rw [this] at hx
- rw [← Ennreal.rpow_one (liminf (fun n => ‖f n x‖₊) at_top), ← mul_inv_cancel hppos.ne.symm,
- Ennreal.rpow_mul]
- exact Ennreal.rpow_lt_top_of_nonneg (inv_nonneg.2 hppos.le) hx.ne
+ rw [← ENNReal.rpow_one (liminf (fun n => ‖f n x‖₊) at_top), ← mul_inv_cancel hppos.ne.symm,
+ ENNReal.rpow_mul]
+ exact ENNReal.rpow_lt_top_of_nonneg (inv_nonneg.2 hppos.le) hx.ne
#align measure_theory.ae_bdd_liminf_at_top_of_snorm_bdd MeasureTheory.ae_bdd_liminf_atTop_of_snorm_bdd
end Liminf
@@ -1781,18 +1781,18 @@ theorem mem_lp_const (α) {m : MeasurableSpace α} (μ : Measure α) (c : E) [Is
(memℒpConst c).snorm_mk_lt_top
#align measure_theory.Lp.mem_Lp_const MeasureTheory.lp.mem_lp_const
-instance : HasNorm (lp E p μ) where norm f := Ennreal.toReal (snorm f p μ)
+instance : HasNorm (lp E p μ) where norm f := ENNReal.toReal (snorm f p μ)
instance : HasDist (lp E p μ) where dist f g := ‖f - g‖
instance : HasEdist (lp E p μ) where edist f g := snorm (f - g) p μ
-theorem norm_def (f : lp E p μ) : ‖f‖ = Ennreal.toReal (snorm f p μ) :=
+theorem norm_def (f : lp E p μ) : ‖f‖ = ENNReal.toReal (snorm f p μ) :=
rfl
#align measure_theory.Lp.norm_def MeasureTheory.lp.norm_def
@[simp]
-theorem norm_toLp (f : α → E) (hf : Memℒp f p μ) : ‖hf.toLp f‖ = Ennreal.toReal (snorm f p μ) := by
+theorem norm_toLp (f : α → E) (hf : Memℒp f p μ) : ‖hf.toLp f‖ = ENNReal.toReal (snorm f p μ) := by
rw [norm_def, snorm_congr_ae (mem_ℒp.coe_fn_to_Lp hf)]
#align measure_theory.Lp.norm_to_Lp MeasureTheory.lp.norm_toLp
@@ -1832,7 +1832,7 @@ theorem norm_zero : ‖(0 : lp E p μ)‖ = 0 :=
theorem norm_eq_zero_iff {f : lp E p μ} (hp : 0 < p) : ‖f‖ = 0 ↔ f = 0 :=
by
refine' ⟨fun hf => _, fun hf => by simp [hf]⟩
- rw [norm_def, Ennreal.toReal_eq_zero_iff] at hf
+ rw [norm_def, ENNReal.toReal_eq_zero_iff] at hf
cases hf
· rw [snorm_eq_zero_iff (Lp.ae_strongly_measurable f) hp.ne.symm] at hf
exact Subtype.eq (ae_eq_fun.ext (hf.trans ae_eq_fun.coe_fn_zero.symm))
@@ -1863,9 +1863,9 @@ theorem norm_le_mul_norm_of_ae_le_mul {c : ℝ} {f : lp E p μ} {g : lp F p μ}
simp only [norm_def]
cases' le_or_lt 0 c with hc hc
· have := snorm_le_mul_snorm_of_ae_le_mul h p
- rwa [← Ennreal.toReal_le_toReal, Ennreal.toReal_mul, Ennreal.toReal_ofReal hc] at this
+ rwa [← ENNReal.toReal_le_toReal, ENNReal.toReal_mul, ENNReal.toReal_ofReal hc] at this
· exact (Lp.mem_ℒp _).snorm_ne_top
- · exact Ennreal.mul_ne_top Ennreal.ofReal_ne_top (Lp.mem_ℒp _).snorm_ne_top
+ · exact ENNReal.mul_ne_top ENNReal.ofReal_ne_top (Lp.mem_ℒp _).snorm_ne_top
· have := snorm_le_mul_snorm_aux_of_neg h hc p
simp [this]
#align measure_theory.Lp.norm_le_mul_norm_of_ae_le_mul MeasureTheory.lp.norm_le_mul_norm_of_ae_le_mul
@@ -1873,7 +1873,7 @@ theorem norm_le_mul_norm_of_ae_le_mul {c : ℝ} {f : lp E p μ} {g : lp F p μ}
theorem norm_le_norm_of_ae_le {f : lp E p μ} {g : lp F p μ} (h : ∀ᵐ x ∂μ, ‖f x‖ ≤ ‖g x‖) :
‖f‖ ≤ ‖g‖ :=
by
- rw [norm_def, norm_def, Ennreal.toReal_le_toReal (snorm_ne_top _) (snorm_ne_top _)]
+ rw [norm_def, norm_def, ENNReal.toReal_le_toReal (snorm_ne_top _) (snorm_ne_top _)]
exact snorm_mono_ae h
#align measure_theory.Lp.norm_le_norm_of_ae_le MeasureTheory.lp.norm_le_norm_of_ae_le
@@ -1900,10 +1900,10 @@ theorem norm_le_of_ae_bound [IsFiniteMeasure μ] {f : lp E p μ} {C : ℝ} (hC :
· simpa [hp, hμ, norm_def] using hC
· simp [hμ, norm_def, Real.zero_rpow hp]
let A : ℝ≥0 := measure_univ_nnreal μ ^ p.to_real⁻¹ * ⟨C, hC⟩
- suffices snorm f p μ ≤ A by exact Ennreal.toReal_le_coe_of_le_coe this
+ suffices snorm f p μ ≤ A by exact ENNReal.toReal_le_coe_of_le_coe this
convert snorm_le_of_ae_bound hfC
- rw [← coe_measure_univ_nnreal μ, Ennreal.coe_rpow_of_ne_zero (measure_univ_nnreal_pos hμ).ne',
- Ennreal.coe_mul]
+ rw [← coe_measure_univ_nnreal μ, ENNReal.coe_rpow_of_ne_zero (measure_univ_nnreal_pos hμ).ne',
+ ENNReal.coe_mul]
congr
rw [max_eq_left hC]
#align measure_theory.Lp.norm_le_of_ae_bound MeasureTheory.lp.norm_le_of_ae_bound
@@ -1916,20 +1916,20 @@ instance [hp : Fact (1 ≤ p)] : NormedAddCommGroup (lp E p μ) :=
neg' := by simp
add_le' := fun f g => by
simp only [norm_def]
- rw [← Ennreal.toReal_add (snorm_ne_top f) (snorm_ne_top g)]
+ rw [← ENNReal.toReal_add (snorm_ne_top f) (snorm_ne_top g)]
suffices h_snorm : snorm (⇑(f + g)) p μ ≤ snorm (⇑f) p μ + snorm (⇑g) p μ
- · rwa [Ennreal.toReal_le_toReal (snorm_ne_top (f + g))]
+ · rwa [ENNReal.toReal_le_toReal (snorm_ne_top (f + g))]
exact ennreal.add_ne_top.mpr ⟨snorm_ne_top f, snorm_ne_top g⟩
rw [snorm_congr_ae (coe_fn_add _ _)]
exact snorm_add_le (Lp.ae_strongly_measurable f) (Lp.ae_strongly_measurable g) hp.1
eq_zero_of_map_eq_zero' := fun f =>
(norm_eq_zero_iff <|
- Ennreal.zero_lt_one.trans_le
+ ENNReal.zero_lt_one.trans_le
hp.1).1 } with
edist := edist
edist_dist := fun f g => by
rw [edist_def, dist_def, ← snorm_congr_ae (coe_fn_sub _ _),
- Ennreal.ofReal_toReal (snorm_ne_top (f - g))] }
+ ENNReal.ofReal_toReal (snorm_ne_top (f - g))] }
-- check no diamond is created
example [Fact (1 ≤ p)] : PseudoEmetricSpace.toHasEdist = (lp.hasEdist : HasEdist (lp E p μ)) :=
@@ -1942,8 +1942,8 @@ variable {𝕜 : Type _} [NormedField 𝕜] [NormedSpace 𝕜 E]
theorem mem_lp_const_smul (c : 𝕜) (f : lp E p μ) : c • ↑f ∈ lp E p μ :=
by
rw [mem_Lp_iff_snorm_lt_top, snorm_congr_ae (ae_eq_fun.coe_fn_smul _ _), snorm_const_smul,
- Ennreal.mul_lt_top_iff]
- exact Or.inl ⟨Ennreal.coe_lt_top, f.prop⟩
+ ENNReal.mul_lt_top_iff]
+ exact Or.inl ⟨ENNReal.coe_lt_top, f.prop⟩
#align measure_theory.Lp.mem_Lp_const_smul MeasureTheory.lp.mem_lp_const_smul
variable (E p μ 𝕜)
@@ -1968,8 +1968,8 @@ theorem coeFn_smul (c : 𝕜) (f : lp E p μ) : ⇑(c • f) =ᵐ[μ] c • f :=
#align measure_theory.Lp.coe_fn_smul MeasureTheory.lp.coeFn_smul
theorem norm_const_smul (c : 𝕜) (f : lp E p μ) : ‖c • f‖ = ‖c‖ * ‖f‖ := by
- rw [norm_def, snorm_congr_ae (coe_fn_smul _ _), snorm_const_smul c, Ennreal.toReal_mul,
- Ennreal.coe_toReal, coe_nnnorm, norm_def]
+ rw [norm_def, snorm_congr_ae (coe_fn_smul _ _), snorm_const_smul c, ENNReal.toReal_mul,
+ ENNReal.coe_toReal, coe_nnnorm, norm_def]
#align measure_theory.Lp.norm_const_smul MeasureTheory.lp.norm_const_smul
instance [Fact (1 ≤ p)] : NormedSpace 𝕜 (lp E p μ)
@@ -2005,7 +2005,7 @@ theorem snormEssSup_indicator_le (s : Set α) (f : α → G) :
snormEssSup (s.indicator f) μ ≤ snormEssSup f μ :=
by
refine' essSup_mono_ae (eventually_of_forall fun x => _)
- rw [Ennreal.coe_le_coe, nnnorm_indicator_eq_indicator_nnnorm]
+ rw [ENNReal.coe_le_coe, nnnorm_indicator_eq_indicator_nnnorm]
exact Set.indicator_le_self s _ x
#align measure_theory.snorm_ess_sup_indicator_le MeasureTheory.snormEssSup_indicator_le
@@ -2014,7 +2014,7 @@ theorem snormEssSup_indicator_const_le (s : Set α) (c : G) :
by
by_cases hμ0 : μ = 0
· rw [hμ0, snorm_ess_sup_measure_zero]
- exact Ennreal.coe_nonneg
+ exact ENNReal.coe_nonneg
· exact (snorm_ess_sup_indicator_le s fun x => c).trans (snorm_ess_sup_const c hμ0).le
#align measure_theory.snorm_ess_sup_indicator_const_le MeasureTheory.snormEssSup_indicator_const_le
@@ -2046,17 +2046,17 @@ variable {hs}
theorem snorm_indicator_const {c : G} (hs : MeasurableSet s) (hp : p ≠ 0) (hp_top : p ≠ ∞) :
snorm (s.indicator fun x => c) p μ = ‖c‖₊ * μ s ^ (1 / p.toReal) :=
by
- have hp_pos : 0 < p.to_real := Ennreal.toReal_pos hp hp_top
+ have hp_pos : 0 < p.to_real := ENNReal.toReal_pos hp hp_top
rw [snorm_eq_lintegral_rpow_nnnorm hp hp_top]
- simp_rw [nnnorm_indicator_eq_indicator_nnnorm, Ennreal.coe_indicator]
+ simp_rw [nnnorm_indicator_eq_indicator_nnnorm, ENNReal.coe_indicator]
have h_indicator_pow :
(fun a : α => s.indicator (fun x : α => (‖c‖₊ : ℝ≥0∞)) a ^ p.to_real) =
s.indicator fun x : α => ↑‖c‖₊ ^ p.to_real :=
by
rw [Set.comp_indicator_const (‖c‖₊ : ℝ≥0∞) (fun x => x ^ p.to_real) _]
simp [hp_pos]
- rw [h_indicator_pow, lintegral_indicator _ hs, set_lintegral_const, Ennreal.mul_rpow_of_nonneg]
- · rw [← Ennreal.rpow_mul, mul_one_div_cancel hp_pos.ne.symm, Ennreal.rpow_one]
+ rw [h_indicator_pow, lintegral_indicator _ hs, set_lintegral_const, ENNReal.mul_rpow_of_nonneg]
+ · rw [← ENNReal.rpow_mul, mul_one_div_cancel hp_pos.ne.symm, ENNReal.rpow_one]
· simp [hp_pos.le]
#align measure_theory.snorm_indicator_const MeasureTheory.snorm_indicator_const
@@ -2075,10 +2075,10 @@ theorem Memℒp.indicator (hs : MeasurableSet s) (hf : Memℒp f p μ) : Memℒp
theorem snormEssSup_indicator_eq_snormEssSup_restrict {f : α → F} (hs : MeasurableSet s) :
snormEssSup (s.indicator f) μ = snormEssSup f (μ.restrict s) :=
by
- simp_rw [snorm_ess_sup, nnnorm_indicator_eq_indicator_nnnorm, Ennreal.coe_indicator]
+ simp_rw [snorm_ess_sup, nnnorm_indicator_eq_indicator_nnnorm, ENNReal.coe_indicator]
by_cases hs_null : μ s = 0
· rw [measure.restrict_zero_set hs_null]
- simp only [essSup_measure_zero, Ennreal.essSup_eq_zero_iff, Ennreal.bot_eq_zero]
+ simp only [essSup_measure_zero, ENNReal.essSup_eq_zero_iff, ENNReal.bot_eq_zero]
have hs_empty : s =ᵐ[μ] (∅ : Set α) := by
rw [ae_eq_set]
simpa using hs_null
@@ -2102,9 +2102,9 @@ theorem snorm_indicator_eq_snorm_restrict {f : α → F} (hs : MeasurableSet s)
suffices (∫⁻ x, ‖s.indicator f x‖₊ ^ p.to_real ∂μ) = ∫⁻ x in s, ‖f x‖₊ ^ p.to_real ∂μ by rw [this]
rw [← lintegral_indicator _ hs]
congr
- simp_rw [nnnorm_indicator_eq_indicator_nnnorm, Ennreal.coe_indicator]
+ simp_rw [nnnorm_indicator_eq_indicator_nnnorm, ENNReal.coe_indicator]
have h_zero : (fun x => x ^ p.to_real) (0 : ℝ≥0∞) = 0 := by
- simp [Ennreal.toReal_pos hp_zero hp_top]
+ simp [ENNReal.toReal_pos hp_zero hp_top]
exact (Set.indicator_comp_of_zero h_zero).symm
#align measure_theory.snorm_indicator_eq_snorm_restrict MeasureTheory.snorm_indicator_eq_snorm_restrict
@@ -2158,22 +2158,22 @@ theorem indicatorConstLp_coeFn_nmem : ∀ᵐ x : α ∂μ, x ∉ s → indicator
theorem norm_indicatorConstLp (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) :
‖indicatorConstLp p hs hμs c‖ = ‖c‖ * (μ s).toReal ^ (1 / p.toReal) := by
rw [Lp.norm_def, snorm_congr_ae indicator_const_Lp_coe_fn,
- snorm_indicator_const hs hp_ne_zero hp_ne_top, Ennreal.toReal_mul, Ennreal.toReal_rpow,
- Ennreal.coe_toReal, coe_nnnorm]
+ snorm_indicator_const hs hp_ne_zero hp_ne_top, ENNReal.toReal_mul, ENNReal.toReal_rpow,
+ ENNReal.coe_toReal, coe_nnnorm]
#align measure_theory.norm_indicator_const_Lp MeasureTheory.norm_indicatorConstLp
theorem norm_indicatorConstLp_top (hμs_ne_zero : μ s ≠ 0) : ‖indicatorConstLp ∞ hs hμs c‖ = ‖c‖ :=
by
rw [Lp.norm_def, snorm_congr_ae indicator_const_Lp_coe_fn,
- snorm_indicator_const' hs hμs_ne_zero Ennreal.top_ne_zero, Ennreal.top_toReal, div_zero,
- Ennreal.rpow_zero, mul_one, Ennreal.coe_toReal, coe_nnnorm]
+ snorm_indicator_const' hs hμs_ne_zero ENNReal.top_ne_zero, ENNReal.top_toReal, div_zero,
+ ENNReal.rpow_zero, mul_one, ENNReal.coe_toReal, coe_nnnorm]
#align measure_theory.norm_indicator_const_Lp_top MeasureTheory.norm_indicatorConstLp_top
theorem norm_indicator_const_Lp' (hp_pos : p ≠ 0) (hμs_pos : μ s ≠ 0) :
‖indicatorConstLp p hs hμs c‖ = ‖c‖ * (μ s).toReal ^ (1 / p.toReal) :=
by
by_cases hp_top : p = ∞
- · rw [hp_top, Ennreal.top_toReal, div_zero, Real.rpow_zero, mul_one]
+ · rw [hp_top, ENNReal.top_toReal, div_zero, Real.rpow_zero, mul_one]
exact norm_indicator_const_Lp_top hμs_pos
· exact norm_indicator_const_Lp hp_pos hp_top
#align measure_theory.norm_indicator_const_Lp' MeasureTheory.norm_indicator_const_Lp'
@@ -2203,7 +2203,7 @@ theorem indicatorConstLp_disjoint_union {s t : Set α} (hs : MeasurableSet s) (h
(hμs : μ s ≠ ∞) (hμt : μ t ≠ ∞) (hst : s ∩ t = ∅) (c : E) :
indicatorConstLp p (hs.union ht)
((measure_union_le s t).trans_lt
- (lt_top_iff_ne_top.mpr (Ennreal.add_ne_top.mpr ⟨hμs, hμt⟩))).Ne
+ (lt_top_iff_ne_top.mpr (ENNReal.add_ne_top.mpr ⟨hμs, hμt⟩))).Ne
c =
indicatorConstLp p hs hμs c + indicatorConstLp p ht hμt c :=
by
@@ -2226,11 +2226,11 @@ theorem Memℒp.normRpowDiv {f : α → E} (hf : Memℒp f p μ) (q : ℝ≥0∞
· simp [q_zero]
by_cases p_zero : p = 0
· simp [p_zero]
- rw [Ennreal.div_zero p_zero]
+ rw [ENNReal.div_zero p_zero]
exact (mem_ℒp_top_const (1 : ℝ)).2
- rw [snorm_norm_rpow _ (Ennreal.toReal_pos q_zero q_top)]
- apply Ennreal.rpow_lt_top_of_nonneg Ennreal.toReal_nonneg
- rw [Ennreal.ofReal_toReal q_top, div_eq_mul_inv, mul_assoc, Ennreal.inv_mul_cancel q_zero q_top,
+ rw [snorm_norm_rpow _ (ENNReal.toReal_pos q_zero q_top)]
+ apply ENNReal.rpow_lt_top_of_nonneg ENNReal.toReal_nonneg
+ rw [ENNReal.ofReal_toReal q_top, div_eq_mul_inv, mul_assoc, ENNReal.inv_mul_cancel q_zero q_top,
mul_one]
exact hf.2.Ne
#align measure_theory.mem_ℒp.norm_rpow_div MeasureTheory.Memℒp.normRpowDiv
@@ -2243,10 +2243,10 @@ theorem memℒp_norm_rpow_iff {q : ℝ≥0∞} {f : α → E} (hf : AeStronglyMe
convert h.norm_rpow_div q⁻¹
· ext x
rw [Real.norm_eq_abs, Real.abs_rpow_of_nonneg (norm_nonneg _), ← Real.rpow_mul (abs_nonneg _),
- Ennreal.toReal_inv, mul_inv_cancel, abs_of_nonneg (norm_nonneg _), Real.rpow_one]
- simp [Ennreal.toReal_eq_zero_iff, not_or, q_zero, q_top]
+ ENNReal.toReal_inv, mul_inv_cancel, abs_of_nonneg (norm_nonneg _), Real.rpow_one]
+ simp [ENNReal.toReal_eq_zero_iff, not_or, q_zero, q_top]
·
- rw [div_eq_mul_inv, inv_inv, div_eq_mul_inv, mul_assoc, Ennreal.inv_mul_cancel q_zero q_top,
+ rw [div_eq_mul_inv, inv_inv, div_eq_mul_inv, mul_assoc, ENNReal.inv_mul_cancel q_zero q_top,
mul_one]
#align measure_theory.mem_ℒp_norm_rpow_iff MeasureTheory.memℒp_norm_rpow_iff
@@ -2254,7 +2254,7 @@ theorem Memℒp.normRpow {f : α → E} (hf : Memℒp f p μ) (hp_ne_zero : p
Memℒp (fun x : α => ‖f x‖ ^ p.toReal) 1 μ :=
by
convert hf.norm_rpow_div p
- rw [div_eq_mul_inv, Ennreal.mul_inv_cancel hp_ne_zero hp_ne_top]
+ rw [div_eq_mul_inv, ENNReal.mul_inv_cancel hp_ne_zero hp_ne_top]
#align measure_theory.mem_ℒp.norm_rpow MeasureTheory.Memℒp.normRpow
end MeasureTheory
@@ -2611,7 +2611,7 @@ theorem snorm'_lim_eq_lintegral_liminf {ι} [Nonempty ι] [LinearOrder ι] {f :
· rw [snorm', h_no_pow]
refine' lintegral_congr_ae (h_lim.mono fun a ha => _)
rw [tendsto.liminf_eq]
- simp_rw [Ennreal.coe_rpow_of_nonneg _ hp_nonneg, Ennreal.tendsto_coe]
+ simp_rw [ENNReal.coe_rpow_of_nonneg _ hp_nonneg, ENNReal.tendsto_coe]
refine' ((NNReal.continuous_rpow_const hp_nonneg).Tendsto ‖f_lim a‖₊).comp _
exact (continuous_nnnorm.tendsto (f_lim a)).comp ha
#align measure_theory.Lp.snorm'_lim_eq_lintegral_liminf MeasureTheory.lp.snorm'_lim_eq_lintegral_liminf
@@ -2623,19 +2623,19 @@ theorem snorm'_lim_le_liminf_snorm' {E} [NormedAddCommGroup E] {f : ℕ → α
snorm' f_lim p μ ≤ atTop.liminf fun n => snorm' (f n) p μ :=
by
rw [snorm'_lim_eq_lintegral_liminf hp_pos.le h_lim]
- rw [← Ennreal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div]
+ rw [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div]
refine' (lintegral_liminf_le' fun m => (hf m).ennnorm.pow_const _).trans_eq _
have h_pow_liminf :
(at_top.liminf fun n => snorm' (f n) p μ) ^ p = at_top.liminf fun n => snorm' (f n) p μ ^ p :=
by
- have h_rpow_mono := Ennreal.strictMono_rpow_of_pos hp_pos
- have h_rpow_surj := (Ennreal.rpow_left_bijective hp_pos.ne.symm).2
+ have h_rpow_mono := ENNReal.strictMono_rpow_of_pos hp_pos
+ have h_rpow_surj := (ENNReal.rpow_left_bijective hp_pos.ne.symm).2
refine' (h_rpow_mono.order_iso_of_surjective _ h_rpow_surj).liminf_apply _ _ _ _
all_goals
run_tac
is_bounded_default
rw [h_pow_liminf]
- simp_rw [snorm', ← Ennreal.rpow_mul, one_div, inv_mul_cancel hp_pos.ne.symm, Ennreal.rpow_one]
+ simp_rw [snorm', ← ENNReal.rpow_mul, one_div, inv_mul_cancel hp_pos.ne.symm, ENNReal.rpow_one]
#align measure_theory.Lp.snorm'_lim_le_liminf_snorm' MeasureTheory.lp.snorm'_lim_le_liminf_snorm'
theorem snorm_exponent_top_lim_eq_essSup_liminf {ι} [Nonempty ι] [LinearOrder ι] {f : ι → α → G}
@@ -2645,7 +2645,7 @@ theorem snorm_exponent_top_lim_eq_essSup_liminf {ι} [Nonempty ι] [LinearOrder
rw [snorm_exponent_top, snorm_ess_sup]
refine' essSup_congr_ae (h_lim.mono fun x hx => _)
rw [tendsto.liminf_eq]
- rw [Ennreal.tendsto_coe]
+ rw [ENNReal.tendsto_coe]
exact (continuous_nnnorm.tendsto (f_lim x)).comp hx
#align measure_theory.Lp.snorm_exponent_top_lim_eq_ess_sup_liminf MeasureTheory.lp.snorm_exponent_top_lim_eq_essSup_liminf
@@ -2656,7 +2656,7 @@ theorem snorm_exponent_top_lim_le_liminf_snorm_exponent_top {ι} [Nonempty ι] [
by
rw [snorm_exponent_top_lim_eq_ess_sup_liminf h_lim]
simp_rw [snorm_exponent_top, snorm_ess_sup]
- exact Ennreal.essSup_liminf_le fun n => fun x => (‖f n x‖₊ : ℝ≥0∞)
+ exact ENNReal.essSup_liminf_le fun n => fun x => (‖f n x‖₊ : ℝ≥0∞)
#align measure_theory.Lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top MeasureTheory.lp.snorm_exponent_top_lim_le_liminf_snorm_exponent_top
theorem snorm_lim_le_liminf_snorm {E} [NormedAddCommGroup E] {f : ℕ → α → E}
@@ -2671,7 +2671,7 @@ theorem snorm_lim_le_liminf_snorm {E} [NormedAddCommGroup E] {f : ℕ → α →
· simp_rw [hp_top]
exact snorm_exponent_top_lim_le_liminf_snorm_exponent_top h_lim
simp_rw [snorm_eq_snorm' hp0 hp_top]
- have hp_pos : 0 < p.to_real := Ennreal.toReal_pos hp0 hp_top
+ have hp_pos : 0 < p.to_real := ENNReal.toReal_pos hp0 hp_top
exact snorm'_lim_le_liminf_snorm' hp_pos hf h_lim
#align measure_theory.Lp.snorm_lim_le_liminf_snorm MeasureTheory.lp.snorm_lim_le_liminf_snorm
@@ -2684,7 +2684,7 @@ theorem tendsto_lp_iff_tendsto_ℒp' {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f :
by
rw [tendsto_iff_dist_tendsto_zero]
simp_rw [dist_def]
- rw [← Ennreal.zero_toReal, Ennreal.tendsto_toReal_iff (fun n => _) Ennreal.zero_ne_top]
+ rw [← ENNReal.zero_toReal, ENNReal.tendsto_toReal_iff (fun n => _) ENNReal.zero_ne_top]
rw [snorm_congr_ae (Lp.coe_fn_sub _ _).symm]
exact Lp.snorm_ne_top _
#align measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp' MeasureTheory.lp.tendsto_lp_iff_tendsto_ℒp'
@@ -2726,7 +2726,7 @@ theorem cauchySeq_lp_iff_cauchySeq_ℒp {ι} [Nonempty ι] [SemilatticeSup ι] [
CauchySeq f ↔ Tendsto (fun n : ι × ι => snorm (f n.fst - f n.snd) p μ) atTop (𝓝 0) :=
by
simp_rw [cauchySeq_iff_tendsto_dist_atTop_0, dist_def]
- rw [← Ennreal.zero_toReal, Ennreal.tendsto_toReal_iff (fun n => _) Ennreal.zero_ne_top]
+ rw [← ENNReal.zero_toReal, ENNReal.tendsto_toReal_iff (fun n => _) ENNReal.zero_ne_top]
rw [snorm_congr_ae (Lp.coe_fn_sub _ _).symm]
exact snorm_ne_top _
#align measure_theory.Lp.cauchy_seq_Lp_iff_cauchy_seq_ℒp MeasureTheory.lp.cauchySeq_lp_iff_cauchySeq_ℒp
@@ -2748,25 +2748,25 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
· exact ⟨hf_lim_meas.to_Lp f_lim, tendsto_Lp_of_tendsto_ℒp f_lim hf_lim_meas h_tendsto⟩
have hB : Summable B := summable_geometric_two
cases' hB with M hB
- let B1 n := Ennreal.ofReal (B n)
- have hB1_has : HasSum B1 (Ennreal.ofReal M) :=
+ let B1 n := ENNReal.ofReal (B n)
+ have hB1_has : HasSum B1 (ENNReal.ofReal M) :=
by
- have h_tsum_B1 : (∑' i, B1 i) = Ennreal.ofReal M :=
+ have h_tsum_B1 : (∑' i, B1 i) = ENNReal.ofReal M :=
by
- change (∑' n : ℕ, Ennreal.ofReal (B n)) = Ennreal.ofReal M
+ change (∑' n : ℕ, ENNReal.ofReal (B n)) = ENNReal.ofReal M
rw [← hB.tsum_eq]
- exact (Ennreal.ofReal_tsum_of_nonneg (fun n => le_of_lt (hB_pos n)) hB.summable).symm
- have h_sum := (@Ennreal.summable _ B1).HasSum
+ exact (ENNReal.ofReal_tsum_of_nonneg (fun n => le_of_lt (hB_pos n)) hB.summable).symm
+ have h_sum := (@ENNReal.summable _ B1).HasSum
rwa [h_tsum_B1] at h_sum
have hB1 : (∑' i, B1 i) < ∞ := by
rw [hB1_has.tsum_eq]
- exact Ennreal.ofReal_lt_top
+ exact ENNReal.ofReal_lt_top
let f1 : ℕ → α → E := fun n => f n
refine' H f1 (fun n => Lp.mem_ℒp (f n)) B1 hB1 fun N n m hn hm => _
specialize hf N n m hn hm
rw [dist_def] at hf
simp_rw [f1, B1]
- rwa [Ennreal.lt_ofReal_iff_toReal_lt]
+ rwa [ENNReal.lt_ofReal_iff_toReal_lt]
rw [snorm_congr_ae (Lp.coe_fn_sub _ _).symm]
exact Lp.snorm_ne_top _
#align measure_theory.Lp.complete_space_Lp_of_cauchy_complete_ℒp MeasureTheory.lp.completeSpace_lp_of_cauchy_complete_ℒp
@@ -2788,7 +2788,7 @@ private theorem snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm' {f : ℕ → α →
rw [hgf_norm_diff]
refine' (snorm'_sum_le (fun i _ => ((hf (i + 1)).sub (hf i)).norm) hp1).trans _
simp_rw [← Pi.sub_apply, snorm'_norm]
- refine' (Finset.sum_le_sum _).trans (sum_le_tsum _ (fun m _ => zero_le _) Ennreal.summable)
+ refine' (Finset.sum_le_sum _).trans (sum_le_tsum _ (fun m _ => zero_le _) ENNReal.summable)
exact fun m _ => (h_cau m (m + 1) m (Nat.le_succ m) (le_refl m)).le
#align measure_theory.Lp.snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm' measure_theory.Lp.snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm'
@@ -2798,7 +2798,7 @@ private theorem lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum {f : ℕ → α
(∫⁻ a, (∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ≤ (∑' i, B i) ^ p :=
by
have hp_pos : 0 < p := zero_lt_one.trans_le hp1
- rw [← one_div_one_div p, @Ennreal.le_rpow_one_div_iff _ _ (1 / p) (by simp [hp_pos]),
+ rw [← one_div_one_div p, @ENNReal.le_rpow_one_div_iff _ _ (1 / p) (by simp [hp_pos]),
one_div_one_div p]
simp_rw [snorm'] at hn
have h_nnnorm_nonneg :
@@ -2808,7 +2808,7 @@ private theorem lintegral_rpow_sum_coe_nnnorm_sub_le_rpow_tsum {f : ℕ → α
ext1 a
congr
simp_rw [← ofReal_norm_eq_coe_nnnorm]
- rw [← Ennreal.ofReal_sum_of_nonneg]
+ rw [← ENNReal.ofReal_sum_of_nonneg]
· rw [Real.norm_of_nonneg _]
exact Finset.sum_nonneg fun x hx => norm_nonneg _
· exact fun x hx => norm_nonneg _
@@ -2830,12 +2830,12 @@ private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E
by
have hp_pos : 0 < p := zero_lt_one.trans_le hp1
suffices h_pow : (∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ≤ (∑' i, B i) ^ p
- · rwa [← Ennreal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div]
+ · rwa [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div]
have h_tsum_1 :
∀ g : ℕ → ℝ≥0∞, (∑' i, g i) = at_top.liminf fun n => ∑ i in Finset.range (n + 1), g i :=
by
intro g
- rw [Ennreal.tsum_eq_liminf_sum_nat, ← liminf_nat_add _ 1]
+ rw [ENNReal.tsum_eq_liminf_sum_nat, ← liminf_nat_add _ 1]
simp_rw [h_tsum_1 _]
rw [← h_tsum_1]
have h_liminf_pow :
@@ -2843,8 +2843,8 @@ private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E
∫⁻ a, at_top.liminf fun n => (∑ i in Finset.range (n + 1), ‖f (i + 1) a - f i a‖₊) ^ p ∂μ :=
by
refine' lintegral_congr fun x => _
- have h_rpow_mono := Ennreal.strictMono_rpow_of_pos (zero_lt_one.trans_le hp1)
- have h_rpow_surj := (Ennreal.rpow_left_bijective hp_pos.ne.symm).2
+ have h_rpow_mono := ENNReal.strictMono_rpow_of_pos (zero_lt_one.trans_le hp1)
+ have h_rpow_surj := (ENNReal.rpow_left_bijective hp_pos.ne.symm).2
refine' (h_rpow_mono.order_iso_of_surjective _ h_rpow_surj).liminf_apply _ _ _ _
all_goals
run_tac
@@ -2867,16 +2867,16 @@ private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, Ae
have hp_pos : 0 < p := zero_lt_one.trans_le hp1
have h_integral : (∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) < ∞ :=
by
- have h_tsum_lt_top : (∑' i, B i) ^ p < ∞ := Ennreal.rpow_lt_top_of_nonneg hp_pos.le hB
+ have h_tsum_lt_top : (∑' i, B i) ^ p < ∞ := ENNReal.rpow_lt_top_of_nonneg hp_pos.le hB
refine' lt_of_le_of_lt _ h_tsum_lt_top
- rwa [← Ennreal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div] at h
+ rwa [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div] at h
have rpow_ae_lt_top : ∀ᵐ x ∂μ, (∑' i, ‖f (i + 1) x - f i x‖₊ : ℝ≥0∞) ^ p < ∞ :=
by
refine' ae_lt_top' (AeMeasurable.powConst _ _) h_integral.ne
exact AeMeasurable.ennrealTsum fun n => ((hf (n + 1)).sub (hf n)).ennnorm
refine' rpow_ae_lt_top.mono fun x hx => _
- rwa [← Ennreal.lt_rpow_one_div_iff hp_pos,
- Ennreal.top_rpow_of_pos (by simp [hp_pos] : 0 < 1 / p)] at hx
+ rwa [← ENNReal.lt_rpow_one_div_iff hp_pos,
+ ENNReal.top_rpow_of_pos (by simp [hp_pos] : 0 < 1 / p)] at hx
#align measure_theory.Lp.tsum_nnnorm_sub_ae_lt_top measure_theory.Lp.tsum_nnnorm_sub_ae_lt_top
theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p : ℝ}
@@ -2941,17 +2941,17 @@ theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
refine' cauchySeq_of_le_tendsto_0 (fun n => (B n).toReal) _ _
· intro n m N hnN hmN
specialize hx N n m hnN hmN
- rw [dist_eq_norm, ← Ennreal.toReal_ofReal (norm_nonneg _),
- Ennreal.toReal_le_toReal Ennreal.ofReal_ne_top (Ennreal.ne_top_of_tsum_ne_top hB N)]
+ rw [dist_eq_norm, ← ENNReal.toReal_ofReal (norm_nonneg _),
+ ENNReal.toReal_le_toReal ENNReal.ofReal_ne_top (ENNReal.ne_top_of_tsum_ne_top hB N)]
rw [← ofReal_norm_eq_coe_nnnorm] at hx
exact hx.le
- · rw [← Ennreal.zero_toReal]
+ · rw [← ENNReal.zero_toReal]
exact
- tendsto.comp (Ennreal.tendsto_toReal Ennreal.zero_ne_top)
- (Ennreal.tendsto_atTop_zero_of_tsum_ne_top hB)
+ tendsto.comp (ENNReal.tendsto_toReal ENNReal.zero_ne_top)
+ (ENNReal.tendsto_atTop_zero_of_tsum_ne_top hB)
have hp1 : 1 ≤ p.to_real :=
by
- rw [← Ennreal.ofReal_le_iff_le_toReal hp_top, Ennreal.ofReal_one]
+ rw [← ENNReal.ofReal_le_iff_le_toReal hp_top, ENNReal.ofReal_one]
exact hp
have h_cau' : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm' (f n - f m) p.to_real μ < B N :=
by
@@ -2967,13 +2967,13 @@ theorem cauchy_tendsto_of_tendsto {f : ℕ → α → E} (hf : ∀ n, AeStrongly
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) :=
by
- rw [Ennreal.tendsto_atTop_zero]
+ rw [ENNReal.tendsto_atTop_zero]
intro ε hε
have h_B : ∃ N : ℕ, B N ≤ ε :=
by
suffices h_tendsto_zero : ∃ N : ℕ, ∀ n : ℕ, N ≤ n → B n ≤ ε
exact ⟨h_tendsto_zero.some, h_tendsto_zero.some_spec _ le_rfl⟩
- exact (ennreal.tendsto_at_top_zero.mp (Ennreal.tendsto_atTop_zero_of_tsum_ne_top hB)) ε hε
+ exact (ennreal.tendsto_at_top_zero.mp (ENNReal.tendsto_atTop_zero_of_tsum_ne_top hB)) ε hε
cases' h_B with N h_B
refine' ⟨N, fun n hn => _⟩
have h_sub : snorm (f n - f_lim) p μ ≤ at_top.liminf fun m => snorm (f n - f m) p μ :=
@@ -2993,15 +2993,15 @@ theorem memℒpOfCauchyTendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf : ∀ n
(h_tendsto : atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)) : Memℒp f_lim p μ :=
by
refine' ⟨h_lim_meas, _⟩
- rw [Ennreal.tendsto_atTop_zero] at h_tendsto
- cases' h_tendsto 1 Ennreal.zero_lt_one with N h_tendsto_1
+ rw [ENNReal.tendsto_atTop_zero] at h_tendsto
+ cases' h_tendsto 1 ENNReal.zero_lt_one with N h_tendsto_1
specialize h_tendsto_1 N (le_refl N)
have h_add : f_lim = f_lim - f N + f N := by abel
rw [h_add]
refine' lt_of_le_of_lt (snorm_add_le (h_lim_meas.sub (hf N).1) (hf N).1 hp) _
- rw [Ennreal.add_lt_top]
+ rw [ENNReal.add_lt_top]
constructor
- · refine' lt_of_le_of_lt _ Ennreal.one_lt_top
+ · refine' lt_of_le_of_lt _ ENNReal.one_lt_top
have h_neg : f_lim - f N = -(f N - f_lim) := by simp
rwa [h_neg, snorm_neg]
· exact (hf N).2
@@ -3261,27 +3261,27 @@ namespace MeasureTheory
namespace Lp
theorem pow_mul_meas_ge_le_norm (f : lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) (ε : ℝ≥0∞) :
- (ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal }) ^ (1 / p.toReal) ≤ Ennreal.ofReal ‖f‖ :=
- (Ennreal.ofReal_toReal (snorm_ne_top f)).symm ▸
+ (ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal }) ^ (1 / p.toReal) ≤ ENNReal.ofReal ‖f‖ :=
+ (ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
pow_mul_meas_ge_le_snorm μ hp_ne_zero hp_ne_top (lp.aeStronglyMeasurable f) ε
#align measure_theory.Lp.pow_mul_meas_ge_le_norm MeasureTheory.lp.pow_mul_meas_ge_le_norm
theorem mul_meas_ge_le_pow_norm (f : lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) (ε : ℝ≥0∞) :
- ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal } ≤ Ennreal.ofReal ‖f‖ ^ p.toReal :=
- (Ennreal.ofReal_toReal (snorm_ne_top f)).symm ▸
+ ε * μ { x | ε ≤ ‖f x‖₊ ^ p.toReal } ≤ ENNReal.ofReal ‖f‖ ^ p.toReal :=
+ (ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
mul_meas_ge_le_pow_snorm μ hp_ne_zero hp_ne_top (lp.aeStronglyMeasurable f) ε
#align measure_theory.Lp.mul_meas_ge_le_pow_norm MeasureTheory.lp.mul_meas_ge_le_pow_norm
/-- A version of Markov's inequality with elements of Lp. -/
theorem mul_meas_ge_le_pow_norm' (f : lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞)
- (ε : ℝ≥0∞) : ε ^ p.toReal * μ { x | ε ≤ ‖f x‖₊ } ≤ Ennreal.ofReal ‖f‖ ^ p.toReal :=
- (Ennreal.ofReal_toReal (snorm_ne_top f)).symm ▸
+ (ε : ℝ≥0∞) : ε ^ p.toReal * μ { x | ε ≤ ‖f x‖₊ } ≤ ENNReal.ofReal ‖f‖ ^ p.toReal :=
+ (ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
mul_meas_ge_le_pow_snorm' μ hp_ne_zero hp_ne_top (lp.aeStronglyMeasurable f) ε
#align measure_theory.Lp.mul_meas_ge_le_pow_norm' MeasureTheory.lp.mul_meas_ge_le_pow_norm'
theorem meas_ge_le_mul_pow_norm (f : lp E p μ) (hp_ne_zero : p ≠ 0) (hp_ne_top : p ≠ ∞) {ε : ℝ≥0∞}
- (hε : ε ≠ 0) : μ { x | ε ≤ ‖f x‖₊ } ≤ ε⁻¹ ^ p.toReal * Ennreal.ofReal ‖f‖ ^ p.toReal :=
- (Ennreal.ofReal_toReal (snorm_ne_top f)).symm ▸
+ (hε : ε ≠ 0) : μ { x | ε ≤ ‖f x‖₊ } ≤ ε⁻¹ ^ p.toReal * ENNReal.ofReal ‖f‖ ^ p.toReal :=
+ (ENNReal.ofReal_toReal (snorm_ne_top f)).symm ▸
meas_ge_le_mul_pow_snorm μ hp_ne_zero hp_ne_top (lp.aeStronglyMeasurable f) hε
#align measure_theory.Lp.meas_ge_le_mul_pow_norm MeasureTheory.lp.meas_ge_le_mul_pow_norm
mathlib commit https://github.com/leanprover-community/mathlib/commit/271bf175e6c51b8d31d6c0107b7bb4a967c7277e
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit 59694bd07f0a39c5beccba34bd9f413a160782bf
+! leanprover-community/mathlib commit afdb4fa3b32d41106a4a09b371ce549ad7958abd
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -1473,10 +1473,9 @@ theorem snorm_le_mul_snorm_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ}
theorem Memℒp.ofLeMul {f : α → E} {g : α → F} {c : ℝ} (hg : Memℒp g p μ)
(hf : AeStronglyMeasurable f μ) (hfg : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : Memℒp f p μ :=
- by
- simp only [mem_ℒp, hf, true_and_iff]
- apply lt_of_le_of_lt (snorm_le_mul_snorm_of_ae_le_mul hfg p)
- simp [lt_top_iff_ne_top, hg.snorm_ne_top]
+ ⟨hf,
+ lt_of_le_of_lt (snorm_le_mul_snorm_of_ae_le_mul hfg p) <|
+ Ennreal.mul_lt_top Ennreal.ofReal_ne_top hg.snorm_ne_top⟩
#align measure_theory.mem_ℒp.of_le_mul MeasureTheory.Memℒp.ofLeMul
end Monotonicity
@@ -1861,17 +1860,13 @@ theorem norm_neg {f : lp E p μ} : ‖-f‖ = ‖f‖ := by
theorem norm_le_mul_norm_of_ae_le_mul {c : ℝ} {f : lp E p μ} {g : lp F p μ}
(h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : ‖f‖ ≤ c * ‖g‖ :=
by
- by_cases pzero : p = 0
- · simp [pzero, norm_def]
+ simp only [norm_def]
cases' le_or_lt 0 c with hc hc
- · have := snorm_le_mul_snorm_aux_of_nonneg h hc p
- rw [← Ennreal.toReal_le_toReal, Ennreal.toReal_mul, Ennreal.toReal_ofReal hc] at this
- · exact this
+ · have := snorm_le_mul_snorm_of_ae_le_mul h p
+ rwa [← Ennreal.toReal_le_toReal, Ennreal.toReal_mul, Ennreal.toReal_ofReal hc] at this
· exact (Lp.mem_ℒp _).snorm_ne_top
- · simp [(Lp.mem_ℒp _).snorm_ne_top]
+ · exact Ennreal.mul_ne_top Ennreal.ofReal_ne_top (Lp.mem_ℒp _).snorm_ne_top
· have := snorm_le_mul_snorm_aux_of_neg h hc p
- simp only [snorm_eq_zero_iff (Lp.ae_strongly_measurable _) pzero, ← eq_zero_iff_ae_eq_zero] at
- this
simp [this]
#align measure_theory.Lp.norm_le_mul_norm_of_ae_le_mul MeasureTheory.lp.norm_le_mul_norm_of_ae_le_mul
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
IsROrC
to RCLike
(#10819)
IsROrC
contains data, which goes against the expectation that classes prefixed with Is
are prop-valued. People have been complaining about this on and off, so this PR renames IsROrC
to RCLike
.
@@ -1120,25 +1120,26 @@ theorem comp_memℒp' (L : E →L[𝕜] F) {f : α → E} (hf : Memℒp f p μ)
(L.comp_memℒp (hf.toLp f)).ae_eq (EventuallyEq.fun_comp hf.coeFn_toLp _)
#align continuous_linear_map.comp_mem_ℒp' ContinuousLinearMap.comp_memℒp'
-section IsROrC
+section RCLike
-variable {K : Type*} [IsROrC K]
+variable {K : Type*} [RCLike K]
theorem _root_.MeasureTheory.Memℒp.ofReal {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => (f x : K)) p μ :=
- (@IsROrC.ofRealCLM K _).comp_memℒp' hf
+ (@RCLike.ofRealCLM K _).comp_memℒp' hf
#align measure_theory.mem_ℒp.of_real MeasureTheory.Memℒp.ofReal
theorem _root_.MeasureTheory.memℒp_re_im_iff {f : α → K} :
- Memℒp (fun x => IsROrC.re (f x)) p μ ∧ Memℒp (fun x => IsROrC.im (f x)) p μ ↔ Memℒp f p μ := by
+ Memℒp (fun x ↦ RCLike.re (f x)) p μ ∧ Memℒp (fun x ↦ RCLike.im (f x)) p μ ↔
+ Memℒp f p μ := by
refine' ⟨_, fun hf => ⟨hf.re, hf.im⟩⟩
rintro ⟨hre, him⟩
- convert MeasureTheory.Memℒp.add (E := K) hre.ofReal (him.ofReal.const_mul IsROrC.I)
+ convert MeasureTheory.Memℒp.add (E := K) hre.ofReal (him.ofReal.const_mul RCLike.I)
ext1 x
- rw [Pi.add_apply, mul_comm, IsROrC.re_add_im]
+ rw [Pi.add_apply, mul_comm, RCLike.re_add_im]
#align measure_theory.mem_ℒp_re_im_iff MeasureTheory.memℒp_re_im_iff
-end IsROrC
+end RCLike
theorem add_compLp (L L' : E →L[𝕜] F) (f : Lp E p μ) :
(L + L').compLp f = L.compLp f + L'.compLp f := by
filter_upwards
(#11208)
This is presumably not exhaustive, but covers about a hundred instances.
Style opinions (e.g., why a particular change is great/not a good idea) are very welcome; I'm still forming my own.
@@ -738,13 +738,12 @@ lemma Memℒp.piecewise [DecidablePred (· ∈ s)]
constructor
· have h : ∀ᵐ (x : α) ∂μ, x ∈ s →
(‖Set.piecewise s f g x‖₊ : ℝ≥0∞) ^ p.toReal = (‖f x‖₊ : ℝ≥0∞) ^ p.toReal := by
- refine ae_of_all _ (fun a ha ↦ ?_)
- simp [ha]
+ filter_upwards with a ha using by simp [ha]
rw [set_lintegral_congr_fun hs h]
exact lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top hp_zero hp_top hf.2
· have h : ∀ᵐ (x : α) ∂μ, x ∈ sᶜ →
(‖Set.piecewise s f g x‖₊ : ℝ≥0∞) ^ p.toReal = (‖g x‖₊ : ℝ≥0∞) ^ p.toReal := by
- refine ae_of_all _ (fun a ha ↦ ?_)
+ filter_upwards with a ha
have ha' : a ∉ s := ha
simp [ha']
rw [set_lintegral_congr_fun hs.compl h]
@@ -1148,7 +1147,7 @@ theorem add_compLp (L L' : E →L[𝕜] F) (f : Lp E p μ) :
refine' EventuallyEq.trans _ (Lp.coeFn_add _ _).symm
refine'
EventuallyEq.trans _ (EventuallyEq.add (L.coeFn_compLp' f).symm (L'.coeFn_compLp' f).symm)
- refine' eventually_of_forall fun x => _
+ filter_upwards with x
rw [coe_add', Pi.add_def]
#align continuous_linear_map.add_comp_Lp ContinuousLinearMap.add_compLp
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -467,9 +467,7 @@ example [Fact (1 ≤ p)] : SeminormedAddGroup.toNNNorm = (Lp.instNNNorm : NNNorm
section BoundedSMul
variable {𝕜 𝕜' : Type*}
-
variable [NormedRing 𝕜] [NormedRing 𝕜'] [Module 𝕜 E] [Module 𝕜' E]
-
variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜' E]
theorem const_smul_mem_Lp (c : 𝕜) (f : Lp E p μ) : c • (f : α →ₘ[μ] E) ∈ Lp E p μ := by
@@ -1718,7 +1716,6 @@ open BoundedContinuousFunction
section
variable [TopologicalSpace α] [BorelSpace α] [SecondCountableTopologyEither α E]
-
variable (E p μ)
/-- An additive subgroup of `Lp E p μ`, consisting of the equivalence classes which contain a
@@ -1837,7 +1834,6 @@ end BoundedContinuousFunction
namespace ContinuousMap
variable [CompactSpace α] [IsFiniteMeasure μ]
-
variable (𝕜 : Type*) (p μ) [Fact (1 ≤ p)]
/-- The bounded linear map of considering a continuous function on a compact finite-measure
@@ -1465,7 +1465,7 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
refine' H f1 (fun n => Lp.memℒp (f n)) B1 hB1 fun N n m hn hm => _
specialize hf N n m hn hm
rw [dist_def] at hf
- dsimp only
+ dsimp only [f1]
rwa [ENNReal.lt_ofReal_iff_toReal_lt]
rw [snorm_congr_ae (Lp.coeFn_sub _ _).symm]
exact Lp.snorm_ne_top _
Currently, we have multiple "no-diamond" tests of the form
example : x = y := rfl
where X
and Y
are instances of some class
. The problem is that since simp
and type class synthesis operate at reducible_and_instances
transparency this check means little.
We went through all the mentions of diamonds and either added with_reducible_and_instancse
or added a reference to the issue #10906.
Co-authored-by: Kevin Buzzard <k.buzzard@imperial.ac.uk>
@@ -458,11 +458,11 @@ instance instNormedAddCommGroup [hp : Fact (1 ≤ p)] : NormedAddCommGroup (Lp E
#align measure_theory.Lp.normed_add_comm_group MeasureTheory.Lp.instNormedAddCommGroup
-- check no diamond is created
-example [Fact (1 ≤ p)] : PseudoEMetricSpace.toEDist = (Lp.instEDist : EDist (Lp E p μ)) :=
- rfl
+example [Fact (1 ≤ p)] : PseudoEMetricSpace.toEDist = (Lp.instEDist : EDist (Lp E p μ)) := by
+ with_reducible_and_instances rfl
-example [Fact (1 ≤ p)] : SeminormedAddGroup.toNNNorm = (Lp.instNNNorm : NNNorm (Lp E p μ)) :=
- rfl
+example [Fact (1 ≤ p)] : SeminormedAddGroup.toNNNorm = (Lp.instNNNorm : NNNorm (Lp E p μ)) := by
+ with_reducible_and_instances rfl
section BoundedSMul
@@ -186,7 +186,7 @@ theorem coeFn_mk {f : α →ₘ[μ] E} (hf : snorm f p μ < ∞) : ((⟨f, hf⟩
rfl
#align measure_theory.Lp.coe_fn_mk MeasureTheory.Lp.coeFn_mk
--- @[simp] -- Porting note: dsimp can prove this
+-- @[simp] -- Porting note (#10685): dsimp can prove this
theorem coe_mk {f : α →ₘ[μ] E} (hf : snorm f p μ < ∞) : ((⟨f, hf⟩ : Lp E p μ) : α →ₘ[μ] E) = f :=
rfl
#align measure_theory.Lp.coe_mk MeasureTheory.Lp.coe_mk
have
, replace
and suffices
(#10640)
No changes to tactic file, it's just boring fixes throughout the library.
This follows on from #6964.
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -1522,8 +1522,8 @@ private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E
(∑' i, B i) ^ p) :
(∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ^ (1 / p) ≤ ∑' i, B i := by
have hp_pos : 0 < p := zero_lt_one.trans_le hp1
- suffices h_pow : (∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ≤ (∑' i, B i) ^ p
- · rwa [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div]
+ suffices h_pow : (∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ≤ (∑' i, B i) ^ p by
+ rwa [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div]
have h_tsum_1 :
∀ g : ℕ → ℝ≥0∞, ∑' i, g i = atTop.liminf fun n => ∑ i in Finset.range (n + 1), g i := by
intro g
NNReal
coercion lemmas (#10214)
Add a few missing lemmas about the coercion NNReal → Real
. Remove a bunch of protected
on the existing coercion lemmas (so that it matches the convention for other coercions). Rename NNReal.coe_eq
to NNReal.coe_inj
From LeanAPAP
@@ -349,7 +349,7 @@ theorem nnnorm_eq_zero_iff {f : Lp E p μ} (hp : 0 < p) : ‖f‖₊ = 0 ↔ f =
#align measure_theory.Lp.nnnorm_eq_zero_iff MeasureTheory.Lp.nnnorm_eq_zero_iff
theorem norm_eq_zero_iff {f : Lp E p μ} (hp : 0 < p) : ‖f‖ = 0 ↔ f = 0 :=
- Iff.symm <| (nnnorm_eq_zero_iff hp).symm.trans <| (NNReal.coe_eq_zero _).symm
+ NNReal.coe_eq_zero.trans (nnnorm_eq_zero_iff hp)
#align measure_theory.Lp.norm_eq_zero_iff MeasureTheory.Lp.norm_eq_zero_iff
theorem eq_zero_iff_ae_eq_zero {f : Lp E p μ} : f = 0 ↔ f =ᵐ[μ] 0 := by
Also fix GeneralizedContinuedFraction.of_convergence
:
it worked for the Preorder.topology
only.
@@ -1685,7 +1685,7 @@ theorem cauchy_complete_ℒp [CompleteSpace E] (hp : 1 ≤ p) {f : ℕ → α
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) := by
obtain ⟨f_lim, h_f_lim_meas, h_lim⟩ :
∃ f_lim : α → E, StronglyMeasurable f_lim ∧
- ∀ᵐ x ∂μ, Tendsto (fun n => f n x) atTop (nhds (f_lim x)) :=
+ ∀ᵐ x ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x)) :=
exists_stronglyMeasurable_limit_of_tendsto_ae (fun n => (hf n).1)
(ae_tendsto_of_cauchy_snorm (fun n => (hf n).1) hp hB h_cau)
have h_tendsto' : atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) :=
@@ -6,7 +6,9 @@ Authors: Rémy Degenne, Sébastien Gouëzel
import Mathlib.Analysis.Normed.Group.Hom
import Mathlib.Analysis.SpecialFunctions.Pow.Continuity
import Mathlib.Data.Set.Image
-import Mathlib.MeasureTheory.Function.LpSeminorm
+import Mathlib.MeasureTheory.Function.LpSeminorm.ChebyshevMarkov
+import Mathlib.MeasureTheory.Function.LpSeminorm.CompareExp
+import Mathlib.MeasureTheory.Function.LpSeminorm.TriangleInequality
import Mathlib.MeasureTheory.Measure.OpenPos
import Mathlib.Topology.ContinuousFunction.Compact
@@ -1910,7 +1910,7 @@ variable (μ) [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E]
theorem toLp_norm_eq_toLp_norm_coe :
‖(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)‖ =
‖(BoundedContinuousFunction.toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)‖ :=
- ContinuousLinearMap.op_norm_comp_linearIsometryEquiv _ _
+ ContinuousLinearMap.opNorm_comp_linearIsometryEquiv _ _
#align continuous_map.to_Lp_norm_eq_to_Lp_norm_coe ContinuousMap.toLp_norm_eq_toLp_norm_coe
/-- Bound for the operator norm of `ContinuousMap.toLp`. -/
Clm
-> CLM
, Cle
-> CLE
(#10018)
Rename
Complex.equivRealProdClm
→ Complex.equivRealProdCLM
;
CLE
?Complex.reClm
→ Complex.reCLM
;Complex.imClm
→ Complex.imCLM
;Complex.conjLie
→ Complex.conjLIE
;Complex.conjCle
→ Complex.conjCLE
;Complex.ofRealLi
→ Complex.ofRealLI
;Complex.ofRealClm
→ Complex.ofRealCLM
;fderivInnerClm
→ fderivInnerCLM
;LinearPMap.adjointDomainMkClm
→ LinearPMap.adjointDomainMkCLM
;LinearPMap.adjointDomainMkClmExtend
→ LinearPMap.adjointDomainMkCLMExtend
;IsROrC.reClm
→ IsROrC.reCLM
;IsROrC.imClm
→ IsROrC.imCLM
;IsROrC.conjLie
→ IsROrC.conjLIE
;IsROrC.conjCle
→ IsROrC.conjCLE
;IsROrC.ofRealLi
→ IsROrC.ofRealLI
;IsROrC.ofRealClm
→ IsROrC.ofRealCLM
;MeasureTheory.condexpL1Clm
→ MeasureTheory.condexpL1CLM
;algebraMapClm
→ algebraMapCLM
;WeakDual.CharacterSpace.toClm
→ WeakDual.CharacterSpace.toCLM
;BoundedContinuousFunction.evalClm
→ BoundedContinuousFunction.evalCLM
;ContinuousMap.evalClm
→ ContinuousMap.evalCLM
;TrivSqZeroExt.fstClm
→ TrivSqZeroExt.fstClm
;TrivSqZeroExt.sndClm
→ TrivSqZeroExt.sndCLM
;TrivSqZeroExt.inlClm
→ TrivSqZeroExt.inlCLM
;TrivSqZeroExt.inrClm
→ TrivSqZeroExt.inrCLM
and related theorems.
@@ -1127,7 +1127,7 @@ variable {K : Type*} [IsROrC K]
theorem _root_.MeasureTheory.Memℒp.ofReal {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => (f x : K)) p μ :=
- (@IsROrC.ofRealClm K _).comp_memℒp' hf
+ (@IsROrC.ofRealCLM K _).comp_memℒp' hf
#align measure_theory.mem_ℒp.of_real MeasureTheory.Memℒp.ofReal
theorem _root_.MeasureTheory.memℒp_re_im_iff {f : α → K} :
@@ -4,6 +4,8 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
-/
import Mathlib.Analysis.Normed.Group.Hom
+import Mathlib.Analysis.SpecialFunctions.Pow.Continuity
+import Mathlib.Data.Set.Image
import Mathlib.MeasureTheory.Function.LpSeminorm
import Mathlib.MeasureTheory.Measure.OpenPos
import Mathlib.Topology.ContinuousFunction.Compact
FunLike
to DFunLike
(#9785)
This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.
This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:
sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@@ -1818,7 +1818,7 @@ theorem toLp_norm_le [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] :
theorem toLp_inj {f g : α →ᵇ E} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
toLp (E := E) p μ 𝕜 f = toLp (E := E) p μ 𝕜 g ↔ f = g := by
refine' ⟨fun h => _, by tauto⟩
- rw [← FunLike.coe_fn_eq, ← (map_continuous f).ae_eq_iff_eq μ (map_continuous g)]
+ rw [← DFunLike.coe_fn_eq, ← (map_continuous f).ae_eq_iff_eq μ (map_continuous g)]
refine' (coeFn_toLp p μ 𝕜 f).symm.trans (EventuallyEq.trans _ <| coeFn_toLp p μ 𝕜 g)
rw [h]
#align bounded_continuous_function.to_Lp_inj BoundedContinuousFunction.toLp_inj
@@ -897,7 +897,7 @@ theorem Lp.norm_const_le : ‖Lp.const p μ c‖ ≤ ‖c‖ * (μ Set.univ).toR
@[simps! apply]
protected def Lp.constL (𝕜 : Type*) [NormedField 𝕜] [NormedSpace 𝕜 E] [Fact (1 ≤ p)] :
E →L[𝕜] Lp E p μ :=
- (Lp.constₗ p μ 𝕜).mkContinuous ((μ Set.univ).toReal ^ (1 / p.toReal)) <| fun _ ↦
+ (Lp.constₗ p μ 𝕜).mkContinuous ((μ Set.univ).toReal ^ (1 / p.toReal)) fun _ ↦
(Lp.norm_const_le _ _ _).trans_eq (mul_comm _ _)
theorem Lp.norm_constL_le (𝕜 : Type*) [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E]
@@ -1680,7 +1680,7 @@ theorem cauchy_complete_ℒp [CompleteSpace E] (hp : 1 ≤ p) {f : ℕ → α
∃ (f_lim : α → E), Memℒp f_lim p μ ∧
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) := by
obtain ⟨f_lim, h_f_lim_meas, h_lim⟩ :
- ∃ (f_lim : α → E) (_ : StronglyMeasurable f_lim),
+ ∃ f_lim : α → E, StronglyMeasurable f_lim ∧
∀ᵐ x ∂μ, Tendsto (fun n => f n x) atTop (nhds (f_lim x)) :=
exists_stronglyMeasurable_limit_of_tendsto_ae (fun n => (hf n).1)
(ae_tendsto_of_cauchy_snorm (fun n => (hf n).1) hp hB h_cau)
cases'
(#9171)
I literally went through and regex'd some uses of cases'
, replacing them with rcases
; this is meant to be a low effort PR as I hope that tools can do this in the future.
rcases
is an easier replacement than cases
, though with better tools we could in future do a second pass converting simple rcases
added here (and existing ones) to cases
.
@@ -374,7 +374,7 @@ theorem nnnorm_le_mul_nnnorm_of_ae_le_mul {c : ℝ≥0} {f : Lp E p μ} {g : Lp
theorem norm_le_mul_norm_of_ae_le_mul {c : ℝ} {f : Lp E p μ} {g : Lp F p μ}
(h : ∀ᵐ x ∂μ, ‖f x‖ ≤ c * ‖g x‖) : ‖f‖ ≤ c * ‖g‖ := by
- cases' le_or_lt 0 c with hc hc
+ rcases le_or_lt 0 c with hc | hc
· lift c to ℝ≥0 using hc
exact NNReal.coe_le_coe.mpr (nnnorm_le_mul_nnnorm_of_ae_le_mul h)
· simp only [norm_def]
Filter.map_smul
(#8935)
We use SMulHomClass.map_smul
much more often, even when the Filter
namespace is opened.
@@ -1179,7 +1179,7 @@ def compLpₗ (L : E →L[𝕜] F) : Lp E p μ →ₗ[𝕜] Lp F p μ where
ext1
filter_upwards [Lp.coeFn_smul c f, coeFn_compLp L (c • f), Lp.coeFn_smul c (L.compLp f),
coeFn_compLp L f] with _ ha1 ha2 ha3 ha4
- simp only [ha1, ha2, ha3, ha4, SMulHomClass.map_smul, Pi.smul_apply]
+ simp only [ha1, ha2, ha3, ha4, map_smul, Pi.smul_apply]
#align continuous_linear_map.comp_Lpₗ ContinuousLinearMap.compLpₗ
/-- Composing `f : Lp E p μ` with `L : E →L[𝕜] F`, seen as a continuous `𝕜`-linear map on
@@ -574,7 +574,7 @@ theorem snormEssSup_indicator_const_le (s : Set α) (c : G) :
theorem snormEssSup_indicator_const_eq (s : Set α) (c : G) (hμs : μ s ≠ 0) :
snormEssSup (s.indicator fun _ : α => c) μ = ‖c‖₊ := by
refine' le_antisymm (snormEssSup_indicator_const_le s c) _
- by_contra' h
+ by_contra! h
have h' := ae_iff.mp (ae_lt_of_essSup_lt h)
push_neg at h'
refine' hμs (measure_mono_null (fun x hx_mem => _) h')
exact_mod_cast
tactic with mod_cast
elaborator where possible (#8404)
We still have the exact_mod_cast
tactic, used in a few places, which somehow (?) works a little bit harder to prevent the expected type influencing the elaboration of the term. I would like to get to the bottom of this, and it will be easier once the only usages of exact_mod_cast
are the ones that don't work using the term elaborator by itself.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -443,7 +443,7 @@ instance instNormedAddCommGroup [hp : Fact (1 ≤ p)] : NormedAddCommGroup (Lp E
map_zero' := norm_zero
neg' := by simp
add_le' := fun f g => by
- suffices (‖f + g‖₊ : ℝ≥0∞) ≤ ‖f‖₊ + ‖g‖₊ by exact_mod_cast this
+ suffices (‖f + g‖₊ : ℝ≥0∞) ≤ ‖f‖₊ + ‖g‖₊ from mod_cast this
simp only [Lp.nnnorm_coe_ennreal]
exact (snorm_congr_ae (AEEqFun.coeFn_add _ _)).trans_le
(snorm_add_le (Lp.aestronglyMeasurable _) (Lp.aestronglyMeasurable _) hp.out)
@@ -512,7 +512,7 @@ instance instIsScalarTower [SMul 𝕜 𝕜'] [IsScalarTower 𝕜 𝕜' E] : IsSc
instance instBoundedSMul [Fact (1 ≤ p)] : BoundedSMul 𝕜 (Lp E p μ) :=
-- TODO: add `BoundedSMul.of_nnnorm_smul_le`
BoundedSMul.of_norm_smul_le fun r f => by
- suffices (‖r • f‖₊ : ℝ≥0∞) ≤ ‖r‖₊ * ‖f‖₊ by exact_mod_cast this
+ suffices (‖r • f‖₊ : ℝ≥0∞) ≤ ‖r‖₊ * ‖f‖₊ from mod_cast this
rw [nnnorm_def, nnnorm_def, ENNReal.coe_toNNReal (Lp.snorm_ne_top _),
snorm_congr_ae (coeFn_smul _ _), ENNReal.coe_toNNReal (Lp.snorm_ne_top _)]
exact snorm_const_smul_le r f
This is the supremum of
along with some minor fixes from failures on nightly-testing as Mathlib master
is merged into it.
Note that some PRs for changes that are already compatible with the current toolchain and will be necessary have already been split out: #8380.
I am hopeful that in future we will be able to progressively merge adaptation PRs into a bump/v4.X.0
branch, so we never end up with a "big merge" like this. However one of these adaptation PRs (#8056) predates my new scheme for combined CI, and it wasn't possible to keep that PR viable in the meantime.
In particular this includes adjustments for the Lean PRs
We can get rid of all the
local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue [lean4#2220](https://github.com/leanprover/lean4/pull/2220)
macros across Mathlib (and in any projects that want to write natural number powers of reals).
Changes the default behaviour of simp
to (config := {decide := false})
. This makes simp
(and consequentially norm_num
) less powerful, but also more consistent, and less likely to blow up in long failures. This requires a variety of changes: changing some previously by simp
or norm_num
to decide
or rfl
, or adding (config := {decide := true})
.
This changed the behaviour of simp
so that simp [f]
will only unfold "fully applied" occurrences of f
. The old behaviour can be recovered with simp (config := { unfoldPartialApp := true })
. We may in future add a syntax for this, e.g. simp [!f]
; please provide feedback! In the meantime, we have made the following changes:
(config := { unfoldPartialApp := true })
in some places, to recover the old behaviour@[eqns]
to manually adjust the equation lemmas for a particular definition, recovering the old behaviour just for that definition. See #8371, where we do this for Function.comp
and Function.flip
.This change in Lean may require further changes down the line (e.g. adding the !f
syntax, and/or upstreaming the special treatment for Function.comp
and Function.flip
, and/or removing this special treatment). Please keep an open and skeptical mind about these changes!
Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Mauricio Collares <mauricio@collares.org>
@@ -68,8 +68,6 @@ open TopologicalSpace MeasureTheory Filter
open scoped NNReal ENNReal BigOperators Topology MeasureTheory Uniformity
-local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue lean4#2220
-
variable {α E F G : Type*} {m m0 : MeasurableSpace α} {p : ℝ≥0∞} {q : ℝ} {μ ν : Measure α}
[NormedAddCommGroup E] [NormedAddCommGroup F] [NormedAddCommGroup G]
summable_of_norm_bounded
-> Summable.of_norm_bounded
;summable_of_norm_bounded_eventually
-> Summable.of_norm_bounded_eventually
;summable_of_nnnorm_bounded
-> Summable.of_nnnorm_bounded
;summable_of_summable_norm
-> Summable.of_norm
;summable_of_summable_nnnorm
-> Summable.of_nnnorm
;Summable.of_norm_bounded_eventually_nat
Summable.norm
@@ -1579,10 +1579,7 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum hf hp1 h2
have h4 : ∀ᵐ x ∂μ, (∑' i, ‖f (i + 1) x - f i x‖₊ : ℝ≥0∞) < ∞ :=
tsum_nnnorm_sub_ae_lt_top hf hp1 hB h3
- exact
- h4.mono fun x hx =>
- summable_of_summable_nnnorm
- (ENNReal.tsum_coe_ne_top_iff_summable.mp (lt_top_iff_ne_top.mp hx))
+ exact h4.mono fun x hx => .of_nnnorm <| ENNReal.tsum_coe_ne_top_iff_summable.mp hx.ne
have h :
∀ᵐ x ∂μ, ∃ l : E,
atTop.Tendsto (fun n => ∑ i in Finset.range n, (f (i + 1) x - f i x)) (𝓝 l) := by
blimsup_eq_limsup
and bliminf_eq_liminf
limsup_nat_add
and liminf_nat_add
to a ConditionallyCompleteLattice
.Filter.HasBasis.blimsup_eq_iInf_iSup
.limsup_sup_filter
, liminf_sup_filter
, blimsup_sup_not
,
bliminf_inf_not
, blimsup_not_sup
, bliminf_not_inf
,
limsup_piecewise
, and liminf_piecewise
.essSup_piecewise
.ℝ≥0∞
in essSup_indicator_eq_essSup_restrict
.
This allows us to drop assumptions 0 ≤ᵐ[_] f
and μ s ≠ 0
.snormEssSup_piecewise_le
(now
snormEssSup_piecewise
) and snorm_top_piecewise_le
(now
snorm_top_piecewise
).@@ -641,17 +641,8 @@ theorem Memℒp.indicator (hs : MeasurableSet s) (hf : Memℒp f p μ) : Memℒp
theorem snormEssSup_indicator_eq_snormEssSup_restrict {f : α → F} (hs : MeasurableSet s) :
snormEssSup (s.indicator f) μ = snormEssSup f (μ.restrict s) := by
- simp_rw [snormEssSup, nnnorm_indicator_eq_indicator_nnnorm, ENNReal.coe_indicator]
- by_cases hs_null : μ s = 0
- · rw [Measure.restrict_zero_set hs_null]
- simp only [essSup_measure_zero, ENNReal.essSup_eq_zero_iff, ENNReal.bot_eq_zero]
- have hs_empty : s =ᵐ[μ] (∅ : Set α) := by rw [ae_eq_set]; simpa using hs_null
- refine' (indicator_ae_eq_of_ae_eq_set hs_empty).trans _
- rw [Set.indicator_empty]
- rfl
- rw [essSup_indicator_eq_essSup_restrict (eventually_of_forall fun x => ?_) hs hs_null]
- rw [Pi.zero_apply]
- exact zero_le _
+ simp_rw [snormEssSup, nnnorm_indicator_eq_indicator_nnnorm, ENNReal.coe_indicator,
+ ENNReal.essSup_indicator_eq_essSup_restrict hs]
#align measure_theory.snorm_ess_sup_indicator_eq_snorm_ess_sup_restrict MeasureTheory.snormEssSup_indicator_eq_snormEssSup_restrict
theorem snorm_indicator_eq_snorm_restrict {f : α → F} (hs : MeasurableSet s) :
@@ -739,11 +730,9 @@ lemma Memℒp.piecewise [DecidablePred (· ∈ s)]
· simp only [hp_zero, memℒp_zero_iff_aestronglyMeasurable]
exact AEStronglyMeasurable.piecewise hs hf.1 hg.1
refine ⟨AEStronglyMeasurable.piecewise hs hf.1 hg.1, ?_⟩
- by_cases hp_top : p = ∞
- · have hf2 := hf.2
- have hg2 := hg.2
- simp only [hp_top] at hf2 hg2 ⊢
- exact (snorm_top_piecewise_le f g hs).trans_lt (max_lt_iff.mpr ⟨hf2, hg2⟩)
+ rcases eq_or_ne p ∞ with rfl | hp_top
+ · rw [snorm_top_piecewise f g hs]
+ exact max_lt hf.2 hg.2
rw [snorm_lt_top_iff_lintegral_rpow_nnnorm_lt_top hp_zero hp_top, ← lintegral_add_compl _ hs,
ENNReal.add_lt_top]
constructor
@@ -732,6 +732,35 @@ theorem exists_snorm_indicator_le (hp : p ≠ ∞) (c : E) {ε : ℝ≥0∞} (h
exact mul_le_mul_left' (ENNReal.rpow_le_rpow hs hp₀') _
#align measure_theory.exists_snorm_indicator_le MeasureTheory.exists_snorm_indicator_le
+lemma Memℒp.piecewise [DecidablePred (· ∈ s)]
+ (hs : MeasurableSet s) (hf : Memℒp f p (μ.restrict s)) (hg : Memℒp g p (μ.restrict sᶜ)) :
+ Memℒp (s.piecewise f g) p μ := by
+ by_cases hp_zero : p = 0
+ · simp only [hp_zero, memℒp_zero_iff_aestronglyMeasurable]
+ exact AEStronglyMeasurable.piecewise hs hf.1 hg.1
+ refine ⟨AEStronglyMeasurable.piecewise hs hf.1 hg.1, ?_⟩
+ by_cases hp_top : p = ∞
+ · have hf2 := hf.2
+ have hg2 := hg.2
+ simp only [hp_top] at hf2 hg2 ⊢
+ exact (snorm_top_piecewise_le f g hs).trans_lt (max_lt_iff.mpr ⟨hf2, hg2⟩)
+ rw [snorm_lt_top_iff_lintegral_rpow_nnnorm_lt_top hp_zero hp_top, ← lintegral_add_compl _ hs,
+ ENNReal.add_lt_top]
+ constructor
+ · have h : ∀ᵐ (x : α) ∂μ, x ∈ s →
+ (‖Set.piecewise s f g x‖₊ : ℝ≥0∞) ^ p.toReal = (‖f x‖₊ : ℝ≥0∞) ^ p.toReal := by
+ refine ae_of_all _ (fun a ha ↦ ?_)
+ simp [ha]
+ rw [set_lintegral_congr_fun hs h]
+ exact lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top hp_zero hp_top hf.2
+ · have h : ∀ᵐ (x : α) ∂μ, x ∈ sᶜ →
+ (‖Set.piecewise s f g x‖₊ : ℝ≥0∞) ^ p.toReal = (‖g x‖₊ : ℝ≥0∞) ^ p.toReal := by
+ refine ae_of_all _ (fun a ha ↦ ?_)
+ have ha' : a ∉ s := ha
+ simp [ha']
+ rw [set_lintegral_congr_fun hs.compl h]
+ exact lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top hp_zero hp_top hg.2
+
end Indicator
section IndicatorConstLp
This will improve spaces in the mathlib4 docs.
@@ -1082,7 +1082,7 @@ namespace ContinuousLinearMap
variable {𝕜 : Type*} [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] [NormedSpace 𝕜 F]
-/-- Composing `f : Lp ` with `L : E →L[𝕜] F`. -/
+/-- Composing `f : Lp` with `L : E →L[𝕜] F`. -/
def compLp (L : E →L[𝕜] F) (f : Lp E p μ) : Lp F p μ :=
L.lipschitz.compLp (map_zero L) f
#align continuous_linear_map.comp_Lp ContinuousLinearMap.compLp
@@ -804,8 +804,7 @@ theorem indicatorConstLp_empty :
indicatorConstLp p MeasurableSet.empty (by simp : μ ∅ ≠ ∞) c = 0 := by
rw [Lp.eq_zero_iff_ae_eq_zero]
convert indicatorConstLp_coeFn (E := E)
- simp [Set.indicator_empty']
- rfl
+ simp [Set.indicator_empty', Pi.zero_def]
#align measure_theory.indicator_const_empty MeasureTheory.indicatorConstLp_empty
theorem memℒp_add_of_disjoint {f g : α → E} (h : Disjoint (support f) (support g))
@@ -895,7 +894,8 @@ end const
theorem Memℒp.norm_rpow_div {f : α → E} (hf : Memℒp f p μ) (q : ℝ≥0∞) :
Memℒp (fun x : α => ‖f x‖ ^ q.toReal) (p / q) μ := by
refine' ⟨(hf.1.norm.aemeasurable.pow_const q.toReal).aestronglyMeasurable, _⟩
- by_cases q_top : q = ∞; · simp [q_top]
+ by_cases q_top : q = ∞
+ · simp [q_top]
by_cases q_zero : q = 0
· simp [q_zero]
by_cases p_zero : p = 0
@@ -1032,9 +1032,9 @@ theorem memℒp_comp_iff_of_antilipschitz {α E F} {K K'} [MeasurableSpace α] {
defined as an element of `Lp`. -/
def compLp (hg : LipschitzWith c g) (g0 : g 0 = 0) (f : Lp E p μ) : Lp F p μ :=
⟨AEEqFun.comp g hg.continuous (f : α →ₘ[μ] E), by
- suffices ∀ᵐ x ∂μ, ‖AEEqFun.comp g hg.continuous (f : α →ₘ[μ] E) x‖ ≤ c * ‖f x‖ by
- exact Lp.mem_Lp_of_ae_le_mul this
- filter_upwards [AEEqFun.coeFn_comp g hg.continuous (f : α →ₘ[μ] E)]with a ha
+ suffices ∀ᵐ x ∂μ, ‖AEEqFun.comp g hg.continuous (f : α →ₘ[μ] E) x‖ ≤ c * ‖f x‖ from
+ Lp.mem_Lp_of_ae_le_mul this
+ filter_upwards [AEEqFun.coeFn_comp g hg.continuous (f : α →ₘ[μ] E)] with a ha
simp only [ha]
rw [← dist_zero_right, ← dist_zero_right, ← g0]
exact hg.dist_le_mul (f a) 0⟩
@@ -1117,8 +1117,8 @@ theorem _root_.MeasureTheory.memℒp_re_im_iff {f : α → K} :
refine' ⟨_, fun hf => ⟨hf.re, hf.im⟩⟩
rintro ⟨hre, him⟩
convert MeasureTheory.Memℒp.add (E := K) hre.ofReal (him.ofReal.const_mul IsROrC.I)
- · ext1 x
- rw [Pi.add_apply, mul_comm, IsROrC.re_add_im]
+ ext1 x
+ rw [Pi.add_apply, mul_comm, IsROrC.re_add_im]
#align measure_theory.mem_ℒp_re_im_iff MeasureTheory.memℒp_re_im_iff
end IsROrC
@@ -1131,7 +1131,7 @@ theorem add_compLp (L L' : E →L[𝕜] F) (f : Lp E p μ) :
refine'
EventuallyEq.trans _ (EventuallyEq.add (L.coeFn_compLp' f).symm (L'.coeFn_compLp' f).symm)
refine' eventually_of_forall fun x => _
- rfl
+ rw [coe_add', Pi.add_def]
#align continuous_linear_map.add_comp_Lp ContinuousLinearMap.add_compLp
theorem smul_compLp {𝕜'} [NormedRing 𝕜'] [Module 𝕜' F] [BoundedSMul 𝕜' F] [SMulCommClass 𝕜 𝕜' F]
@@ -1140,8 +1140,7 @@ theorem smul_compLp {𝕜'} [NormedRing 𝕜'] [Module 𝕜' F] [BoundedSMul
refine' (coeFn_compLp' (c • L) f).trans _
refine' EventuallyEq.trans _ (Lp.coeFn_smul _ _).symm
refine' (L.coeFn_compLp' f).mono fun x hx => _
- rw [Pi.smul_apply, hx]
- rfl
+ rw [Pi.smul_apply, hx, coe_smul', Pi.smul_def]
#align continuous_linear_map.smul_comp_Lp ContinuousLinearMap.smul_compLp
theorem norm_compLp_le (L : E →L[𝕜] F) (f : Lp E p μ) : ‖L.compLp f‖ ≤ ‖L‖ * ‖f‖ :=
@@ -1153,15 +1152,13 @@ variable (μ p)
/-- Composing `f : Lp E p μ` with `L : E →L[𝕜] F`, seen as a `𝕜`-linear map on `Lp E p μ`. -/
def compLpₗ (L : E →L[𝕜] F) : Lp E p μ →ₗ[𝕜] Lp F p μ where
toFun f := L.compLp f
- map_add' := by
- intro f g
+ map_add' f g := by
ext1
filter_upwards [Lp.coeFn_add f g, coeFn_compLp L (f + g), coeFn_compLp L f,
coeFn_compLp L g, Lp.coeFn_add (L.compLp f) (L.compLp g)]
intro a ha1 ha2 ha3 ha4 ha5
simp only [ha1, ha2, ha3, ha4, ha5, map_add, Pi.add_apply]
- map_smul' := by
- intro c f
+ map_smul' c f := by
dsimp
ext1
filter_upwards [Lp.coeFn_smul c f, coeFn_compLp L (c • f), Lp.coeFn_smul c (L.compLp f),
@@ -1273,8 +1270,7 @@ theorem continuous_posPart [Fact (1 ≤ p)] : Continuous fun f : Lp ℝ p μ =>
#align measure_theory.Lp.continuous_pos_part MeasureTheory.Lp.continuous_posPart
theorem continuous_negPart [Fact (1 ≤ p)] : Continuous fun f : Lp ℝ p μ => negPart f := by
- have eq : (fun f : Lp ℝ p μ => negPart f) = fun f : Lp ℝ p μ => posPart (-f) := rfl
- rw [eq]
+ unfold negPart
exact continuous_posPart.comp continuous_neg
#align measure_theory.Lp.continuous_neg_part MeasureTheory.Lp.continuous_negPart
@@ -1304,8 +1300,8 @@ theorem snorm'_lim_eq_lintegral_liminf {ι} [Nonempty ι] [LinearOrder ι] {f :
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
snorm' f_lim p μ = (∫⁻ a, atTop.liminf fun m => (‖f m a‖₊ : ℝ≥0∞) ^ p ∂μ) ^ (1 / p) := by
suffices h_no_pow :
- (∫⁻ a, (‖f_lim a‖₊ : ℝ≥0∞) ^ p ∂μ) = ∫⁻ a, atTop.liminf fun m => (‖f m a‖₊ : ℝ≥0∞) ^ p ∂μ
- · rw [snorm', h_no_pow]
+ (∫⁻ a, (‖f_lim a‖₊ : ℝ≥0∞) ^ p ∂μ) = ∫⁻ a, atTop.liminf fun m => (‖f m a‖₊ : ℝ≥0∞) ^ p ∂μ by
+ rw [snorm', h_no_pow]
refine' lintegral_congr_ae (h_lim.mono fun a ha => _)
dsimp only
rw [Tendsto.liminf_eq]
@@ -1337,7 +1333,7 @@ theorem snorm_exponent_top_lim_eq_essSup_liminf {ι} [Nonempty ι] [LinearOrder
rw [snorm_exponent_top, snormEssSup]
refine' essSup_congr_ae (h_lim.mono fun x hx => _)
dsimp only
- rw [Tendsto.liminf_eq]
+ apply (Tendsto.liminf_eq ..).symm
rw [ENNReal.tendsto_coe]
exact (continuous_nnnorm.tendsto (f_lim x)).comp hx
#align measure_theory.Lp.snorm_exponent_top_lim_eq_ess_sup_liminf MeasureTheory.Lp.snorm_exponent_top_lim_eq_essSup_liminf
@@ -1355,9 +1351,8 @@ theorem snorm_lim_le_liminf_snorm {E} [NormedAddCommGroup E] {f : ℕ → α →
(hf : ∀ n, AEStronglyMeasurable (f n) μ) (f_lim : α → E)
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
snorm f_lim p μ ≤ atTop.liminf fun n => snorm (f n) p μ := by
- by_cases hp0 : p = 0
- · simp [hp0]
- rw [← Ne.def] at hp0
+ obtain rfl|hp0 := eq_or_ne p 0
+ · simp
by_cases hp_top : p = ∞
· simp_rw [hp_top]
exact snorm_exponent_top_lim_le_liminf_snorm_exponent_top h_lim
@@ -1385,9 +1380,9 @@ theorem tendsto_Lp_iff_tendsto_ℒp {ι} {fi : Filter ι} [Fact (1 ≤ p)] (f :
fi.Tendsto (fun n => snorm (⇑(f n) - f_lim) p μ) (𝓝 0) := by
rw [tendsto_Lp_iff_tendsto_ℒp']
suffices h_eq :
- (fun n => snorm (⇑(f n) - ⇑(Memℒp.toLp f_lim f_lim_ℒp)) p μ) =
- (fun n => snorm (⇑(f n) - f_lim) p μ)
- · rw [h_eq]
+ (fun n => snorm (⇑(f n) - ⇑(Memℒp.toLp f_lim f_lim_ℒp)) p μ) =
+ (fun n => snorm (⇑(f n) - f_lim) p μ) by
+ rw [h_eq]
exact funext fun n => snorm_congr_ae (EventuallyEq.rfl.sub (Memℒp.coeFn_toLp f_lim_ℒp))
#align measure_theory.Lp.tendsto_Lp_iff_tendsto_ℒp MeasureTheory.Lp.tendsto_Lp_iff_tendsto_ℒp
@@ -1434,8 +1429,7 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
∃ (f_lim : α → E), Memℒp f_lim p μ ∧
atTop.Tendsto (fun n => snorm (⇑(f n) - f_lim) p μ) (𝓝 0)
· exact ⟨hf_lim_meas.toLp f_lim, tendsto_Lp_of_tendsto_ℒp f_lim hf_lim_meas h_tendsto⟩
- have hB : Summable B := summable_geometric_two
- cases' hB with M hB
+ obtain ⟨M, hB⟩ : Summable B := summable_geometric_two
let B1 n := ENNReal.ofReal (B n)
have hB1_has : HasSum B1 (ENNReal.ofReal M) := by
have h_tsum_B1 : ∑' i, B1 i = ENNReal.ofReal M := by
@@ -1633,8 +1627,8 @@ theorem cauchy_tendsto_of_tendsto {f : ℕ → α → E} (hf : ∀ n, AEStrongly
rw [ENNReal.tendsto_atTop_zero]
intro ε hε
have h_B : ∃ N : ℕ, B N ≤ ε := by
- suffices h_tendsto_zero : ∃ N : ℕ, ∀ n : ℕ, N ≤ n → B n ≤ ε
- exact ⟨h_tendsto_zero.choose, h_tendsto_zero.choose_spec _ le_rfl⟩
+ suffices h_tendsto_zero : ∃ N : ℕ, ∀ n : ℕ, N ≤ n → B n ≤ ε from
+ ⟨h_tendsto_zero.choose, h_tendsto_zero.choose_spec _ le_rfl⟩
exact (ENNReal.tendsto_atTop_zero.mp (ENNReal.tendsto_atTop_zero_of_tsum_ne_top hB)) ε hε
cases' h_B with N h_B
refine' ⟨N, fun n hn => _⟩
@@ -1673,9 +1667,8 @@ theorem cauchy_complete_ℒp [CompleteSpace E] (hp : 1 ≤ p) {f : ℕ → α
∃ (f_lim : α → E), Memℒp f_lim p μ ∧
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) := by
obtain ⟨f_lim, h_f_lim_meas, h_lim⟩ :
- ∃ (f_lim : α → E) (_ : StronglyMeasurable f_lim),
- ∀ᵐ x ∂μ, Tendsto (fun n => f n x) atTop (nhds (f_lim x))
- exact
+ ∃ (f_lim : α → E) (_ : StronglyMeasurable f_lim),
+ ∀ᵐ x ∂μ, Tendsto (fun n => f n x) atTop (nhds (f_lim x)) :=
exists_stronglyMeasurable_limit_of_tendsto_ae (fun n => (hf n).1)
(ae_tendsto_of_cauchy_snorm (fun n => (hf n).1) hp hB h_cau)
have h_tendsto' : atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) :=
@@ -1847,8 +1840,8 @@ theorem range_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] :
refine' SetLike.ext' _
have := (linearIsometryBoundedOfCompact α E 𝕜).surjective
convert Function.Surjective.range_comp this (BoundedContinuousFunction.toLp (E := E) p μ 𝕜)
- rw [← BoundedContinuousFunction.range_toLp p μ (𝕜 := 𝕜)]
- rfl
+ rw [← BoundedContinuousFunction.range_toLp p μ (𝕜 := 𝕜), Submodule.coe_toAddSubgroup,
+ LinearMap.range_coe]
#align continuous_map.range_to_Lp ContinuousMap.range_toLp
variable {p}
@@ -66,7 +66,7 @@ set_option linter.uppercaseLean3 false
open TopologicalSpace MeasureTheory Filter
-open NNReal ENNReal BigOperators Topology MeasureTheory
+open scoped NNReal ENNReal BigOperators Topology MeasureTheory Uniformity
local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue lean4#2220
@@ -168,8 +168,7 @@ theorem ext_iff {f g : Lp E p μ} : f = g ↔ f =ᵐ[μ] g :=
⟨fun h => by rw [h], fun h => ext h⟩
#align measure_theory.Lp.ext_iff MeasureTheory.Lp.ext_iff
-theorem mem_Lp_iff_snorm_lt_top {f : α →ₘ[μ] E} : f ∈ Lp E p μ ↔ snorm f p μ < ∞ :=
- Iff.refl _
+theorem mem_Lp_iff_snorm_lt_top {f : α →ₘ[μ] E} : f ∈ Lp E p μ ↔ snorm f p μ < ∞ := Iff.rfl
#align measure_theory.Lp.mem_Lp_iff_snorm_lt_top MeasureTheory.Lp.mem_Lp_iff_snorm_lt_top
theorem mem_Lp_iff_memℒp {f : α →ₘ[μ] E} : f ∈ Lp E p μ ↔ Memℒp f p μ := by
@@ -270,6 +269,10 @@ protected theorem coe_nnnorm (f : Lp E p μ) : (‖f‖₊ : ℝ) = ‖f‖ :=
rfl
#align measure_theory.Lp.coe_nnnorm MeasureTheory.Lp.coe_nnnorm
+@[simp, norm_cast]
+theorem nnnorm_coe_ennreal (f : Lp E p μ) : (‖f‖₊ : ℝ≥0∞) = snorm f p μ :=
+ ENNReal.coe_toNNReal <| Lp.snorm_ne_top f
+
@[simp]
theorem norm_toLp (f : α → E) (hf : Memℒp f p μ) : ‖hf.toLp f‖ = ENNReal.toReal (snorm f p μ) := by
erw [norm_def, snorm_congr_ae (Memℒp.coeFn_toLp hf)]
@@ -442,13 +445,10 @@ instance instNormedAddCommGroup [hp : Fact (1 ≤ p)] : NormedAddCommGroup (Lp E
map_zero' := norm_zero
neg' := by simp
add_le' := fun f g => by
- simp only [norm_def]
- rw [← ENNReal.toReal_add (snorm_ne_top f) (snorm_ne_top g)]
- suffices h_snorm : snorm (⇑(f + g)) p μ ≤ snorm (⇑f) p μ + snorm (⇑g) p μ
- · rwa [ENNReal.toReal_le_toReal (snorm_ne_top (f + g))]
- exact ENNReal.add_ne_top.mpr ⟨snorm_ne_top f, snorm_ne_top g⟩
- rw [snorm_congr_ae (coeFn_add _ _)]
- exact snorm_add_le (Lp.aestronglyMeasurable f) (Lp.aestronglyMeasurable g) hp.1
+ suffices (‖f + g‖₊ : ℝ≥0∞) ≤ ‖f‖₊ + ‖g‖₊ by exact_mod_cast this
+ simp only [Lp.nnnorm_coe_ennreal]
+ exact (snorm_congr_ae (AEEqFun.coeFn_add _ _)).trans_le
+ (snorm_add_le (Lp.aestronglyMeasurable _) (Lp.aestronglyMeasurable _) hp.out)
eq_zero_of_map_eq_zero' := fun f =>
(norm_eq_zero_iff <| zero_lt_one.trans_le hp.1).1 } with
edist := edist
@@ -711,15 +711,14 @@ theorem exists_snorm_indicator_le (hp : p ≠ ∞) (c : E) {ε : ℝ≥0∞} (h
· exact ⟨1, zero_lt_one, fun s _ => by simp⟩
have hp₀ : 0 < p := bot_lt_iff_ne_bot.2 h'p
have hp₀' : 0 ≤ 1 / p.toReal := div_nonneg zero_le_one ENNReal.toReal_nonneg
- have hp₀'' : 0 < p.toReal := by
- simpa [← ENNReal.toReal_lt_toReal ENNReal.zero_ne_top hp] using hp₀
+ have hp₀'' : 0 < p.toReal := ENNReal.toReal_pos hp₀.ne' hp
obtain ⟨η, hη_pos, hη_le⟩ :
∃ η : ℝ≥0, 0 < η ∧ (‖c‖₊ : ℝ≥0∞) * (η : ℝ≥0∞) ^ (1 / p.toReal) ≤ ε := by
have :
Filter.Tendsto (fun x : ℝ≥0 => ((‖c‖₊ * x ^ (1 / p.toReal) : ℝ≥0) : ℝ≥0∞)) (𝓝 0)
(𝓝 (0 : ℝ≥0)) := by
rw [ENNReal.tendsto_coe]
- convert(NNReal.continuousAt_rpow_const (Or.inr hp₀')).tendsto.const_mul _
+ convert (NNReal.continuousAt_rpow_const (Or.inr hp₀')).tendsto.const_mul _
simp [hp₀''.ne']
have hε' : 0 < ε := hε.bot_lt
obtain ⟨δ, hδ, hδε'⟩ :=
@@ -783,7 +782,7 @@ theorem norm_indicatorConstLp' (hp_pos : p ≠ 0) (hμs_pos : μ s ≠ 0) :
theorem norm_indicatorConstLp_le :
‖indicatorConstLp p hs hμs c‖ ≤ ‖c‖ * (μ s).toReal ^ (1 / p.toReal) := by
rw [indicatorConstLp, Lp.norm_toLp]
- refine toReal_le_of_le_ofReal (by positivity) ?_
+ refine ENNReal.toReal_le_of_le_ofReal (by positivity) ?_
refine (snorm_indicator_const_le _ _).trans_eq ?_
rw [← coe_nnnorm, ENNReal.ofReal_mul (NNReal.coe_nonneg _), ENNReal.ofReal_coe_nnreal,
ENNReal.toReal_rpow, ENNReal.ofReal_toReal]
@@ -1001,10 +1000,9 @@ variable {g : E → F} {c : ℝ≥0}
theorem LipschitzWith.comp_memℒp {α E F} {K} [MeasurableSpace α] {μ : Measure α}
[NormedAddCommGroup E] [NormedAddCommGroup F] {f : α → E} {g : E → F} (hg : LipschitzWith K g)
(g0 : g 0 = 0) (hL : Memℒp f p μ) : Memℒp (g ∘ f) p μ :=
- haveI : ∀ x, ‖g (f x)‖ ≤ K * ‖f x‖ := by
- intro a
+ have : ∀ x, ‖g (f x)‖ ≤ K * ‖f x‖ := fun x ↦ by
-- TODO: add `LipschitzWith.nnnorm_sub_le` and `LipschitzWith.nnnorm_le`
- simpa [g0] using hg.norm_sub_le (f a) 0
+ simpa [g0] using hg.norm_sub_le (f x) 0
hL.of_le_mul (hg.continuous.comp_aestronglyMeasurable hL.1) (eventually_of_forall this)
#align lipschitz_with.comp_mem_ℒp LipschitzWith.comp_memℒp
@@ -679,6 +679,20 @@ theorem memℒp_indicator_iff_restrict (hs : MeasurableSet s) :
simp [Memℒp, aestronglyMeasurable_indicator_iff hs, snorm_indicator_eq_snorm_restrict hs]
#align measure_theory.mem_ℒp_indicator_iff_restrict MeasureTheory.memℒp_indicator_iff_restrict
+/-- If a function is supported on a finite-measure set and belongs to `ℒ^p`, then it belongs to
+`ℒ^q` for any `q ≤ p`. -/
+theorem Memℒp.memℒp_of_exponent_le_of_measure_support_ne_top
+ {p q : ℝ≥0∞} {f : α → E} (hfq : Memℒp f q μ) {s : Set α} (hf : ∀ x, x ∉ s → f x = 0)
+ (hs : μ s ≠ ∞) (hpq : p ≤ q) : Memℒp f p μ := by
+ have : (toMeasurable μ s).indicator f = f := by
+ apply Set.indicator_eq_self.2
+ apply Function.support_subset_iff'.2 (fun x hx ↦ hf x ?_)
+ contrapose! hx
+ exact subset_toMeasurable μ s hx
+ rw [← this, memℒp_indicator_iff_restrict (measurableSet_toMeasurable μ s)] at hfq ⊢
+ have : Fact (μ (toMeasurable μ s) < ∞) := ⟨by simpa [lt_top_iff_ne_top] using hs⟩
+ exact memℒp_of_exponent_le hfq hpq
+
theorem memℒp_indicator_const (p : ℝ≥0∞) (hs : MeasurableSet s) (c : E) (hμsc : c = 0 ∨ μ s ≠ ∞) :
Memℒp (s.indicator fun _ => c) p μ := by
rw [memℒp_indicator_iff_restrict hs]
@@ -526,7 +526,6 @@ section NormedSpace
variable {𝕜 : Type*} [NormedField 𝕜] [NormedSpace 𝕜 E]
-set_option synthInstance.maxHeartbeats 30000 in
instance instNormedSpace [Fact (1 ≤ p)] : NormedSpace 𝕜 (Lp E p μ) where
norm_smul_le _ _ := norm_smul_le _ _
#align measure_theory.Lp.normed_space MeasureTheory.Lp.instNormedSpace
@@ -1180,7 +1179,6 @@ theorem add_compLpL [Fact (1 ≤ p)] (L L' : E →L[𝕜] F) :
(L + L').compLpL p μ = L.compLpL p μ + L'.compLpL p μ := by ext1 f; exact add_compLp L L' f
#align continuous_linear_map.add_comp_LpL ContinuousLinearMap.add_compLpL
-set_option synthInstance.maxHeartbeats 30000 in
theorem smul_compLpL [Fact (1 ≤ p)] {𝕜'} [NormedRing 𝕜'] [Module 𝕜' F] [BoundedSMul 𝕜' F]
[SMulCommClass 𝕜 𝕜' F] (c : 𝕜') (L : E →L[𝕜] F) : (c • L).compLpL p μ = c • L.compLpL p μ := by
ext1 f; exact smul_compLp c L f
@@ -281,6 +281,9 @@ theorem nnnorm_toLp (f : α → E) (hf : Memℒp f p μ) :
NNReal.eq <| norm_toLp f hf
#align measure_theory.Lp.nnnorm_to_Lp MeasureTheory.Lp.nnnorm_toLp
+theorem coe_nnnorm_toLp {f : α → E} (hf : Memℒp f p μ) : (‖hf.toLp f‖₊ : ℝ≥0∞) = snorm f p μ := by
+ rw [nnnorm_toLp f hf, ENNReal.coe_toNNReal hf.2.ne]
+
theorem dist_def (f g : Lp E p μ) : dist f g = (snorm (⇑f - ⇑g) p μ).toReal := by
simp_rw [dist, norm_def]
refine congr_arg _ ?_
@@ -773,6 +776,17 @@ theorem norm_indicatorConstLp_le :
ENNReal.toReal_rpow, ENNReal.ofReal_toReal]
exact ENNReal.rpow_ne_top_of_nonneg (by positivity) hμs
+theorem edist_indicatorConstLp_eq_nnnorm {t : Set α} (ht : MeasurableSet t) (hμt : μ t ≠ ∞) :
+ edist (indicatorConstLp p hs hμs c) (indicatorConstLp p ht hμt c) =
+ ‖indicatorConstLp p (hs.symmDiff ht) (measure_symmDiff_ne_top hμs hμt) c‖₊ := by
+ unfold indicatorConstLp
+ rw [Lp.edist_toLp_toLp, snorm_indicator_sub_indicator, Lp.coe_nnnorm_toLp]
+
+theorem dist_indicatorConstLp_eq_norm {t : Set α} (ht : MeasurableSet t) (hμt : μ t ≠ ∞) :
+ dist (indicatorConstLp p hs hμs c) (indicatorConstLp p ht hμt c) =
+ ‖indicatorConstLp p (hs.symmDiff ht) (measure_symmDiff_ne_top hμs hμt) c‖ := by
+ rw [Lp.dist_edist, edist_indicatorConstLp_eq_nnnorm, ENNReal.coe_toReal, Lp.coe_nnnorm]
+
@[simp]
theorem indicatorConstLp_empty :
indicatorConstLp p MeasurableSet.empty (by simp : μ ∅ ≠ ∞) c = 0 := by
MeasureTheory.indicatorConst_empty
to MeasureTheory.indicatorConstLp_empty
.@@ -774,13 +774,13 @@ theorem norm_indicatorConstLp_le :
exact ENNReal.rpow_ne_top_of_nonneg (by positivity) hμs
@[simp]
-theorem indicatorConst_empty :
+theorem indicatorConstLp_empty :
indicatorConstLp p MeasurableSet.empty (by simp : μ ∅ ≠ ∞) c = 0 := by
rw [Lp.eq_zero_iff_ae_eq_zero]
convert indicatorConstLp_coeFn (E := E)
simp [Set.indicator_empty']
rfl
-#align measure_theory.indicator_const_empty MeasureTheory.indicatorConst_empty
+#align measure_theory.indicator_const_empty MeasureTheory.indicatorConstLp_empty
theorem memℒp_add_of_disjoint {f g : α → E} (h : Disjoint (support f) (support g))
(hf : StronglyMeasurable f) (hg : StronglyMeasurable g) :
@@ -794,10 +794,7 @@ theorem memℒp_add_of_disjoint {f g : α → E} (h : Disjoint (support f) (supp
/-- The indicator of a disjoint union of two sets is the sum of the indicators of the sets. -/
theorem indicatorConstLp_disjoint_union {s t : Set α} (hs : MeasurableSet s) (ht : MeasurableSet t)
(hμs : μ s ≠ ∞) (hμt : μ t ≠ ∞) (hst : s ∩ t = ∅) (c : E) :
- indicatorConstLp p (hs.union ht)
- ((measure_union_le s t).trans_lt
- (lt_top_iff_ne_top.mpr (ENNReal.add_ne_top.mpr ⟨hμs, hμt⟩))).ne
- c =
+ indicatorConstLp p (hs.union ht) (measure_union_ne_top hμs hμt) c =
indicatorConstLp p hs hμs c + indicatorConstLp p ht hμt c := by
ext1
refine' indicatorConstLp_coeFn.trans (EventuallyEq.trans _ (Lp.coeFn_add _ _).symm)
@@ -1451,7 +1451,7 @@ private theorem snorm'_sum_norm_sub_le_tsum_of_cauchy_snorm' {f : ℕ → α →
fun n => funext fun x => by simp
rw [hgf_norm_diff]
refine' (snorm'_sum_le (fun i _ => ((hf (i + 1)).sub (hf i)).norm) hp1).trans _
- simp_rw [← Pi.sub_apply, snorm'_norm]
+ simp_rw [snorm'_norm]
refine' (Finset.sum_le_sum _).trans (sum_le_tsum _ (fun m _ => zero_le _) ENNReal.summable)
exact fun m _ => (h_cau m (m + 1) m (Nat.le_succ m) (le_refl m)).le
Autoimplicits are highly controversial and also defeat the performance-improving work in #6474.
The intent of this PR is to make autoImplicit
opt-in on a per-file basis, by disabling it in the lakefile and enabling it again with set_option autoImplicit true
in the few files that rely on it.
That also keeps this PR small, as opposed to attempting to "fix" files to not need it any more.
I claim that many of the uses of autoImplicit
in these files are accidental; situations such as:
variables
are in scope, but pasting the lemma in the wrong sectionHaving set_option autoImplicit false
as the default prevents these types of mistake being made in the 90% of files where autoImplicit
s are not used at all, and causes them to be caught by CI during review.
I think there were various points during the port where we encouraged porters to delete the universes u v
lines; I think having autoparams for universe variables only would cover a lot of the cases we actually use them, while avoiding any real shortcomings.
A Zulip poll (after combining overlapping votes accordingly) was in favor of this change with 5:5:18
as the no:dontcare:yes
vote ratio.
While this PR was being reviewed, a handful of files gained some more likely-accidental autoImplicits. In these places, set_option autoImplicit true
has been placed locally within a section, rather than at the top of the file.
@@ -552,6 +552,8 @@ For a set `s` with `(hs : MeasurableSet s)` and `(hμs : μ s < ∞)`, we build
section Indicator
+set_option autoImplicit true
+
variable {c : E} {f : α → E} {hf : AEStronglyMeasurable f μ}
theorem snormEssSup_indicator_le (s : Set α) (f : α → G) :
MeasureTheory.lintegral_indicator_const
and MeasureTheory.snorm_indicator_const
to a NullMeasurableSet
;@@ -552,7 +552,7 @@ For a set `s` with `(hs : MeasurableSet s)` and `(hμs : μ s < ∞)`, we build
section Indicator
-variable {s : Set α} {hs : MeasurableSet s} {c : E} {f : α → E} {hf : AEStronglyMeasurable f μ}
+variable {c : E} {f : α → E} {hf : AEStronglyMeasurable f μ}
theorem snormEssSup_indicator_le (s : Set α) (f : α → G) :
snormEssSup (s.indicator f) μ ≤ snormEssSup f μ := by
@@ -579,9 +579,7 @@ theorem snormEssSup_indicator_const_eq (s : Set α) (c : G) (hμs : μ s ≠ 0)
rw [Set.mem_setOf_eq, Set.indicator_of_mem hx_mem]
#align measure_theory.snorm_ess_sup_indicator_const_eq MeasureTheory.snormEssSup_indicator_const_eq
-variable (hs)
-
-theorem snorm_indicator_le {E : Type*} [NormedAddCommGroup E] (f : α → E) :
+theorem snorm_indicator_le (f : α → E) {s : Set α} :
snorm (s.indicator f) p μ ≤ snorm f p μ := by
refine' snorm_mono_ae (eventually_of_forall fun x => _)
suffices ‖s.indicator f x‖₊ ≤ ‖f x‖₊ by exact NNReal.coe_mono this
@@ -589,21 +587,25 @@ theorem snorm_indicator_le {E : Type*} [NormedAddCommGroup E] (f : α → E) :
exact s.indicator_le_self _ x
#align measure_theory.snorm_indicator_le MeasureTheory.snorm_indicator_le
-variable {hs}
+theorem snorm_indicator_const₀ {c : G} (hs : NullMeasurableSet s μ) (hp : p ≠ 0) (hp_top : p ≠ ∞) :
+ snorm (s.indicator fun _ => c) p μ = ‖c‖₊ * μ s ^ (1 / p.toReal) :=
+ have hp_pos : 0 < p.toReal := ENNReal.toReal_pos hp hp_top
+ calc
+ snorm (s.indicator fun _ => c) p μ
+ = (∫⁻ x, ((‖(s.indicator fun _ ↦ c) x‖₊ : ℝ≥0∞) ^ p.toReal) ∂μ) ^ (1 / p.toReal) :=
+ snorm_eq_lintegral_rpow_nnnorm hp hp_top
+ _ = (∫⁻ x, (s.indicator fun _ ↦ (‖c‖₊ : ℝ≥0∞) ^ p.toReal) x ∂μ) ^ (1 / p.toReal) := by
+ congr 2
+ refine (Set.comp_indicator_const c (fun x : G ↦ (‖x‖₊ : ℝ≥0∞) ^ p.toReal) ?_)
+ simp [hp_pos]
+ _ = ‖c‖₊ * μ s ^ (1 / p.toReal) := by
+ rw [lintegral_indicator_const₀ hs, ENNReal.mul_rpow_of_nonneg, ← ENNReal.rpow_mul,
+ mul_one_div_cancel hp_pos.ne', ENNReal.rpow_one]
+ positivity
theorem snorm_indicator_const {c : G} (hs : MeasurableSet s) (hp : p ≠ 0) (hp_top : p ≠ ∞) :
- snorm (s.indicator fun _ => c) p μ = ‖c‖₊ * μ s ^ (1 / p.toReal) := by
- have hp_pos : 0 < p.toReal := ENNReal.toReal_pos hp hp_top
- rw [snorm_eq_lintegral_rpow_nnnorm hp hp_top]
- simp_rw [nnnorm_indicator_eq_indicator_nnnorm, ENNReal.coe_indicator]
- have h_indicator_pow :
- (fun a : α => s.indicator (fun _ : α => (‖c‖₊ : ℝ≥0∞)) a ^ p.toReal) =
- s.indicator fun _ : α => (‖c‖₊ : ℝ≥0∞) ^ p.toReal := by
- rw [Set.comp_indicator_const (‖c‖₊ : ℝ≥0∞) (fun x => x ^ p.toReal) _]
- simp [hp_pos]
- rw [h_indicator_pow, lintegral_indicator _ hs, set_lintegral_const, ENNReal.mul_rpow_of_nonneg]
- · rw [← ENNReal.rpow_mul, mul_one_div_cancel hp_pos.ne.symm, ENNReal.rpow_one]
- · simp [hp_pos.le]
+ snorm (s.indicator fun _ => c) p μ = ‖c‖₊ * μ s ^ (1 / p.toReal) :=
+ snorm_indicator_const₀ hs.nullMeasurableSet hp hp_top
#align measure_theory.snorm_indicator_const MeasureTheory.snorm_indicator_const
theorem snorm_indicator_const' {c : G} (hs : MeasurableSet s) (hμs : μ s ≠ 0) (hp : p ≠ 0) :
@@ -676,17 +678,10 @@ theorem memℒp_indicator_iff_restrict (hs : MeasurableSet s) :
theorem memℒp_indicator_const (p : ℝ≥0∞) (hs : MeasurableSet s) (c : E) (hμsc : c = 0 ∨ μ s ≠ ∞) :
Memℒp (s.indicator fun _ => c) p μ := by
rw [memℒp_indicator_iff_restrict hs]
- by_cases hp_zero : p = 0
- · rw [hp_zero]
- exact memℒp_zero_iff_aestronglyMeasurable.mpr aestronglyMeasurable_const
- by_cases hp_top : p = ∞
- · rw [hp_top]
- exact
- memℒp_top_of_bound aestronglyMeasurable_const ‖c‖ (eventually_of_forall fun _ => le_rfl)
- rw [memℒp_const_iff hp_zero hp_top, Measure.restrict_apply_univ]
- cases hμsc with
- | inl hμsc => exact Or.inl hμsc
- | inr hμsc => exact Or.inr hμsc.lt_top
+ rcases hμsc with rfl | hμ
+ · exact zero_memℒp
+ · have := Fact.mk hμ.lt_top
+ apply memℒp_const
#align measure_theory.mem_ℒp_indicator_const MeasureTheory.memℒp_indicator_const
/-- The `ℒ^p` norm of the indicator of a set is uniformly small if the set itself has small measure,
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -70,7 +70,7 @@ open NNReal ENNReal BigOperators Topology MeasureTheory
local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue lean4#2220
-variable {α E F G : Type _} {m m0 : MeasurableSpace α} {p : ℝ≥0∞} {q : ℝ} {μ ν : Measure α}
+variable {α E F G : Type*} {m m0 : MeasurableSpace α} {p : ℝ≥0∞} {q : ℝ} {μ ν : Measure α}
[NormedAddCommGroup E] [NormedAddCommGroup F] [NormedAddCommGroup G]
namespace MeasureTheory
@@ -83,19 +83,19 @@ The space of equivalence classes of measurable functions for which `snorm f p μ
@[simp]
-theorem snorm_aeeqFun {α E : Type _} [MeasurableSpace α] {μ : Measure α} [NormedAddCommGroup E]
+theorem snorm_aeeqFun {α E : Type*} [MeasurableSpace α] {μ : Measure α} [NormedAddCommGroup E]
{p : ℝ≥0∞} {f : α → E} (hf : AEStronglyMeasurable f μ) :
snorm (AEEqFun.mk f hf) p μ = snorm f p μ :=
snorm_congr_ae (AEEqFun.coeFn_mk _ _)
#align measure_theory.snorm_ae_eq_fun MeasureTheory.snorm_aeeqFun
-theorem Memℒp.snorm_mk_lt_top {α E : Type _} [MeasurableSpace α] {μ : Measure α}
+theorem Memℒp.snorm_mk_lt_top {α E : Type*} [MeasurableSpace α] {μ : Measure α}
[NormedAddCommGroup E] {p : ℝ≥0∞} {f : α → E} (hfp : Memℒp f p μ) :
snorm (AEEqFun.mk f hfp.1) p μ < ∞ := by simp [hfp.2]
#align measure_theory.mem_ℒp.snorm_mk_lt_top MeasureTheory.Memℒp.snorm_mk_lt_top
/-- Lp space -/
-def Lp {α} (E : Type _) {m : MeasurableSpace α} [NormedAddCommGroup E] (p : ℝ≥0∞)
+def Lp {α} (E : Type*) {m : MeasurableSpace α} [NormedAddCommGroup E] (p : ℝ≥0∞)
(μ : Measure α := by volume_tac) : AddSubgroup (α →ₘ[μ] E) where
carrier := { f | snorm f p μ < ∞ }
zero_mem' := by simp [snorm_congr_ae AEEqFun.coeFn_zero, snorm_zero]
@@ -461,7 +461,7 @@ example [Fact (1 ≤ p)] : SeminormedAddGroup.toNNNorm = (Lp.instNNNorm : NNNorm
section BoundedSMul
-variable {𝕜 𝕜' : Type _}
+variable {𝕜 𝕜' : Type*}
variable [NormedRing 𝕜] [NormedRing 𝕜'] [Module 𝕜 E] [Module 𝕜' E]
@@ -521,7 +521,7 @@ end BoundedSMul
section NormedSpace
-variable {𝕜 : Type _} [NormedField 𝕜] [NormedSpace 𝕜 E]
+variable {𝕜 : Type*} [NormedField 𝕜] [NormedSpace 𝕜 E]
set_option synthInstance.maxHeartbeats 30000 in
instance instNormedSpace [Fact (1 ≤ p)] : NormedSpace 𝕜 (Lp E p μ) where
@@ -534,7 +534,7 @@ end Lp
namespace Memℒp
-variable {𝕜 : Type _} [NormedRing 𝕜] [Module 𝕜 E] [BoundedSMul 𝕜 E]
+variable {𝕜 : Type*} [NormedRing 𝕜] [Module 𝕜 E] [BoundedSMul 𝕜 E]
theorem toLp_const_smul {f : α → E} (c : 𝕜) (hf : Memℒp f p μ) :
(hf.const_smul c).toLp (c • f) = c • hf.toLp f :=
@@ -581,7 +581,7 @@ theorem snormEssSup_indicator_const_eq (s : Set α) (c : G) (hμs : μ s ≠ 0)
variable (hs)
-theorem snorm_indicator_le {E : Type _} [NormedAddCommGroup E] (f : α → E) :
+theorem snorm_indicator_le {E : Type*} [NormedAddCommGroup E] (f : α → E) :
snorm (s.indicator f) p μ ≤ snorm f p μ := by
refine' snorm_mono_ae (eventually_of_forall fun x => _)
suffices ‖s.indicator f x‖₊ ≤ ‖f x‖₊ by exact NNReal.coe_mono this
@@ -853,19 +853,19 @@ theorem Lp.norm_const_le : ‖Lp.const p μ c‖ ≤ ‖c‖ * (μ Set.univ).toR
exact norm_indicatorConstLp_le
/-- `MeasureTheory.Lp.const` as a `LinearMap`. -/
-@[simps] protected def Lp.constₗ (𝕜 : Type _) [NormedRing 𝕜] [Module 𝕜 E] [BoundedSMul 𝕜 E] :
+@[simps] protected def Lp.constₗ (𝕜 : Type*) [NormedRing 𝕜] [Module 𝕜 E] [BoundedSMul 𝕜 E] :
E →ₗ[𝕜] Lp E p μ where
toFun := Lp.const p μ
map_add' := map_add _
map_smul' _ _ := rfl
@[simps! apply]
-protected def Lp.constL (𝕜 : Type _) [NormedField 𝕜] [NormedSpace 𝕜 E] [Fact (1 ≤ p)] :
+protected def Lp.constL (𝕜 : Type*) [NormedField 𝕜] [NormedSpace 𝕜 E] [Fact (1 ≤ p)] :
E →L[𝕜] Lp E p μ :=
(Lp.constₗ p μ 𝕜).mkContinuous ((μ Set.univ).toReal ^ (1 / p.toReal)) <| fun _ ↦
(Lp.norm_const_le _ _ _).trans_eq (mul_comm _ _)
-theorem Lp.norm_constL_le (𝕜 : Type _) [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E]
+theorem Lp.norm_constL_le (𝕜 : Type*) [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E]
[Fact (1 ≤ p)] :
‖(Lp.constL p μ 𝕜 : E →L[𝕜] Lp E p μ)‖ ≤ (μ Set.univ).toReal ^ (1 / p.toReal) :=
LinearMap.mkContinuous_norm_le _ (by positivity) _
@@ -908,7 +908,7 @@ theorem Memℒp.norm_rpow {f : α → E} (hf : Memℒp f p μ) (hp_ne_zero : p
rw [div_eq_mul_inv, ENNReal.mul_inv_cancel hp_ne_zero hp_ne_top]
#align measure_theory.mem_ℒp.norm_rpow MeasureTheory.Memℒp.norm_rpow
-theorem AEEqFun.compMeasurePreserving_mem_Lp {β : Type _} [MeasurableSpace β]
+theorem AEEqFun.compMeasurePreserving_mem_Lp {β : Type*} [MeasurableSpace β]
{μb : MeasureTheory.Measure β} {g : β →ₘ[μb] E} (hg : g ∈ Lp E p μb) {f : α → β}
(hf : MeasurePreserving f μ μb) :
g.compMeasurePreserving f hf ∈ Lp E p μ := by
@@ -919,7 +919,7 @@ namespace Lp
/-! ### Composition with a measure preserving function -/
-variable {β : Type _} [MeasurableSpace β] {μb : MeasureTheory.Measure β} {f : α → β}
+variable {β : Type*} [MeasurableSpace β] {μb : MeasureTheory.Measure β} {f : α → β}
/-- Composition of an `L^p` function with a measure preserving function is an `L^p` function. -/
def compMeasurePreserving (f : α → β) (hf : MeasurePreserving f μ μb) :
@@ -942,7 +942,7 @@ theorem norm_compMeasurePreserving (g : Lp E p μb) (hf : MeasurePreserving f μ
‖compMeasurePreserving f hf g‖ = ‖g‖ :=
congr_arg ENNReal.toReal <| g.1.snorm_compMeasurePreserving hf
-variable (𝕜 : Type _) [NormedRing 𝕜] [Module 𝕜 E] [BoundedSMul 𝕜 E]
+variable (𝕜 : Type*) [NormedRing 𝕜] [Module 𝕜 E] [BoundedSMul 𝕜 E]
/-- `MeasureTheory.Lp.compMeasurePreserving` as a linear map. -/
@[simps]
@@ -1061,7 +1061,7 @@ end LipschitzWith
namespace ContinuousLinearMap
-variable {𝕜 : Type _} [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] [NormedSpace 𝕜 F]
+variable {𝕜 : Type*} [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] [NormedSpace 𝕜 F]
/-- Composing `f : Lp ` with `L : E →L[𝕜] F`. -/
def compLp (L : E →L[𝕜] F) (f : Lp E p μ) : Lp F p μ :=
@@ -1086,7 +1086,7 @@ theorem comp_memℒp' (L : E →L[𝕜] F) {f : α → E} (hf : Memℒp f p μ)
section IsROrC
-variable {K : Type _} [IsROrC K]
+variable {K : Type*} [IsROrC K]
theorem _root_.MeasureTheory.Memℒp.ofReal {f : α → ℝ} (hf : Memℒp f p μ) :
Memℒp (fun x => (f x : K)) p μ :=
@@ -1760,7 +1760,7 @@ theorem range_toLpHom [Fact (1 ≤ p)] :
(by rintro - ⟨f, rfl⟩; exact mem_Lp f : _ ≤ Lp E p μ)
#align bounded_continuous_function.range_to_Lp_hom BoundedContinuousFunction.range_toLpHom
-variable (𝕜 : Type _) [Fact (1 ≤ p)]
+variable (𝕜 : Type*) [Fact (1 ≤ p)]
/-- The bounded linear map of considering a bounded continuous function on a finite-measure space
as an element of `Lp`. -/
@@ -1810,7 +1810,7 @@ namespace ContinuousMap
variable [CompactSpace α] [IsFiniteMeasure μ]
-variable (𝕜 : Type _) (p μ) [Fact (1 ≤ p)]
+variable (𝕜 : Type*) (p μ) [Fact (1 ≤ p)]
/-- The bounded linear map of considering a continuous function on a compact finite-measure
space `α` as an element of `Lp`. By definition, the norm on `C(α, E)` is the sup-norm, transferred
@@ -1872,7 +1872,7 @@ variable {μ}
/-- If a sum of continuous functions `g n` is convergent, and the same sum converges in `Lᵖ` to `h`,
then in fact `g n` converges uniformly to `h`. -/
-theorem hasSum_of_hasSum_Lp {β : Type _} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E]
+theorem hasSum_of_hasSum_Lp {β : Type*} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E]
{g : β → C(α, E)} {f : C(α, E)} (hg : Summable g)
(hg2 : HasSum (toLp (E := E) p μ 𝕜 ∘ g) (toLp (E := E) p μ 𝕜 f)) : HasSum g f := by
convert Summable.hasSum hg
@@ -68,7 +68,7 @@ open TopologicalSpace MeasureTheory Filter
open NNReal ENNReal BigOperators Topology MeasureTheory
-local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue #2220
+local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue lean4#2220
variable {α E F G : Type _} {m m0 : MeasurableSpace α} {p : ℝ≥0∞} {q : ℝ} {μ ν : Measure α}
[NormedAddCommGroup E] [NormedAddCommGroup F] [NormedAddCommGroup G]
@@ -262,7 +262,7 @@ theorem norm_def (f : Lp E p μ) : ‖f‖ = ENNReal.toReal (snorm f p μ) :=
#align measure_theory.Lp.norm_def MeasureTheory.Lp.norm_def
theorem nnnorm_def (f : Lp E p μ) : ‖f‖₊ = ENNReal.toNNReal (snorm f p μ) :=
- Subtype.eta _ _
+ rfl
#align measure_theory.Lp.nnnorm_def MeasureTheory.Lp.nnnorm_def
@[simp, norm_cast]
@@ -291,6 +291,13 @@ theorem edist_def (f g : Lp E p μ) : edist f g = snorm (⇑f - ⇑g) p μ :=
rfl
#align measure_theory.Lp.edist_def MeasureTheory.Lp.edist_def
+protected theorem edist_dist (f g : Lp E p μ) : edist f g = .ofReal (dist f g) := by
+ rw [edist_def, dist_def, ← snorm_congr_ae (coeFn_sub _ _),
+ ENNReal.ofReal_toReal (snorm_ne_top (f - g))]
+
+protected theorem dist_edist (f g : Lp E p μ) : dist f g = (edist f g).toReal :=
+ MeasureTheory.Lp.dist_def ..
+
@[simp]
theorem edist_toLp_toLp (f g : α → E) (hf : Memℒp f p μ) (hg : Memℒp g p μ) :
edist (hf.toLp f) (hg.toLp g) = snorm (f - g) p μ := by
@@ -440,12 +447,9 @@ instance instNormedAddCommGroup [hp : Fact (1 ≤ p)] : NormedAddCommGroup (Lp E
rw [snorm_congr_ae (coeFn_add _ _)]
exact snorm_add_le (Lp.aestronglyMeasurable f) (Lp.aestronglyMeasurable g) hp.1
eq_zero_of_map_eq_zero' := fun f =>
- (norm_eq_zero_iff <|
- zero_lt_one.trans_le hp.1).1 } with
+ (norm_eq_zero_iff <| zero_lt_one.trans_le hp.1).1 } with
edist := edist
- edist_dist := fun f g => by
- rw [edist_def, dist_def, ← snorm_congr_ae (coeFn_sub _ _),
- ENNReal.ofReal_toReal (snorm_ne_top (f - g))] }
+ edist_dist := Lp.edist_dist }
#align measure_theory.Lp.normed_add_comm_group MeasureTheory.Lp.instNormedAddCommGroup
-- check no diamond is created
@@ -940,12 +944,14 @@ theorem norm_compMeasurePreserving (g : Lp E p μb) (hf : MeasurePreserving f μ
variable (𝕜 : Type _) [NormedRing 𝕜] [Module 𝕜 E] [BoundedSMul 𝕜 E]
+/-- `MeasureTheory.Lp.compMeasurePreserving` as a linear map. -/
@[simps]
def compMeasurePreservingₗ (f : α → β) (hf : MeasurePreserving f μ μb) :
Lp E p μb →ₗ[𝕜] Lp E p μ where
__ := compMeasurePreserving f hf
map_smul' c g := by rcases g with ⟨⟨_⟩, _⟩; rfl
+/-- `MeasureTheory.Lp.compMeasurePreserving` as a linear isometry. -/
@[simps!]
def compMeasurePreservingₗᵢ [Fact (1 ≤ p)] (f : α → β) (hf : MeasurePreserving f μ μb) :
Lp E p μb →ₗᵢ[𝕜] Lp E p μ where
@@ -238,10 +238,10 @@ theorem coeFn_sub (f g : Lp E p μ) : ⇑(f - g) =ᵐ[μ] f - g :=
AEEqFun.coeFn_sub _ _
#align measure_theory.Lp.coe_fn_sub MeasureTheory.Lp.coeFn_sub
-theorem mem_lp_const (α) {_ : MeasurableSpace α} (μ : Measure α) (c : E) [IsFiniteMeasure μ] :
+theorem const_mem_Lp (α) {_ : MeasurableSpace α} (μ : Measure α) (c : E) [IsFiniteMeasure μ] :
@AEEqFun.const α _ _ μ _ c ∈ Lp E p μ :=
(memℒp_const c).snorm_mk_lt_top
-#align measure_theory.Lp.mem_Lp_const MeasureTheory.Lp.mem_lp_const
+#align measure_theory.Lp.mem_Lp_const MeasureTheory.Lp.const_mem_Lp
instance instNorm : Norm (Lp E p μ) where norm f := ENNReal.toReal (snorm f p μ)
#align measure_theory.Lp.has_norm MeasureTheory.Lp.instNorm
@@ -316,6 +316,12 @@ theorem norm_zero : ‖(0 : Lp E p μ)‖ = 0 :=
congr_arg ((↑) : ℝ≥0 → ℝ) nnnorm_zero
#align measure_theory.Lp.norm_zero MeasureTheory.Lp.norm_zero
+@[simp]
+theorem norm_measure_zero (f : Lp E p (0 : MeasureTheory.Measure α)) : ‖f‖ = 0 := by
+ simp [norm_def]
+
+@[simp] theorem norm_exponent_zero (f : Lp E 0 μ) : ‖f‖ = 0 := by simp [norm_def]
+
theorem nnnorm_eq_zero_iff {f : Lp E p μ} (hp : 0 < p) : ‖f‖₊ = 0 ↔ f = 0 := by
refine' ⟨fun hf => _, fun hf => by simp [hf]⟩
rw [nnnorm_def, ENNReal.toNNReal_eq_zero_iff] at hf
@@ -332,15 +338,7 @@ theorem norm_eq_zero_iff {f : Lp E p μ} (hp : 0 < p) : ‖f‖ = 0 ↔ f = 0 :=
#align measure_theory.Lp.norm_eq_zero_iff MeasureTheory.Lp.norm_eq_zero_iff
theorem eq_zero_iff_ae_eq_zero {f : Lp E p μ} : f = 0 ↔ f =ᵐ[μ] 0 := by
- constructor
- · intro h
- rw [h]
- exact AEEqFun.coeFn_const _ _
- · intro h
- ext1
- filter_upwards [h, AEEqFun.coeFn_const α (0 : E)] with _ ha h'a
- rw [ha]
- exact h'a.symm
+ rw [← (Lp.memℒp f).toLp_eq_toLp_iff zero_memℒp, Memℒp.toLp_zero, toLp_coeFn]
#align measure_theory.Lp.eq_zero_iff_ae_eq_zero MeasureTheory.Lp.eq_zero_iff_ae_eq_zero
@[simp]
@@ -465,19 +463,19 @@ variable [NormedRing 𝕜] [NormedRing 𝕜'] [Module 𝕜 E] [Module 𝕜' E]
variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜' E]
-theorem mem_Lp_const_smul (c : 𝕜) (f : Lp E p μ) : c • (f : α →ₘ[μ] E) ∈ Lp E p μ := by
+theorem const_smul_mem_Lp (c : 𝕜) (f : Lp E p μ) : c • (f : α →ₘ[μ] E) ∈ Lp E p μ := by
rw [mem_Lp_iff_snorm_lt_top, snorm_congr_ae (AEEqFun.coeFn_smul _ _)]
refine' (snorm_const_smul_le _ _).trans_lt _
rw [ENNReal.smul_def, smul_eq_mul, ENNReal.mul_lt_top_iff]
exact Or.inl ⟨ENNReal.coe_lt_top, f.prop⟩
-#align measure_theory.Lp.mem_Lp_const_smul MeasureTheory.Lp.mem_Lp_const_smul
+#align measure_theory.Lp.mem_Lp_const_smul MeasureTheory.Lp.const_smul_mem_Lp
variable (E p μ 𝕜)
/-- The `𝕜`-submodule of elements of `α →ₘ[μ] E` whose `Lp` norm is finite. This is `Lp E p μ`,
with extra structure. -/
def LpSubmodule : Submodule 𝕜 (α →ₘ[μ] E) :=
- { Lp E p μ with smul_mem' := fun c f hf => by simpa using mem_Lp_const_smul c ⟨f, hf⟩ }
+ { Lp E p μ with smul_mem' := fun c f hf => by simpa using const_smul_mem_Lp c ⟨f, hf⟩ }
#align measure_theory.Lp.Lp_submodule MeasureTheory.Lp.LpSubmodule
variable {E p μ 𝕜}
@@ -765,6 +763,15 @@ theorem norm_indicatorConstLp' (hp_pos : p ≠ 0) (hμs_pos : μ s ≠ 0) :
· exact norm_indicatorConstLp hp_pos hp_top
#align measure_theory.norm_indicator_const_Lp' MeasureTheory.norm_indicatorConstLp'
+theorem norm_indicatorConstLp_le :
+ ‖indicatorConstLp p hs hμs c‖ ≤ ‖c‖ * (μ s).toReal ^ (1 / p.toReal) := by
+ rw [indicatorConstLp, Lp.norm_toLp]
+ refine toReal_le_of_le_ofReal (by positivity) ?_
+ refine (snorm_indicator_const_le _ _).trans_eq ?_
+ rw [← coe_nnnorm, ENNReal.ofReal_mul (NNReal.coe_nonneg _), ENNReal.ofReal_coe_nnreal,
+ ENNReal.toReal_rpow, ENNReal.ofReal_toReal]
+ exact ENNReal.rpow_ne_top_of_nonneg (by positivity) hμs
+
@[simp]
theorem indicatorConst_empty :
indicatorConstLp p MeasurableSet.empty (by simp : μ ∅ ≠ ∞) c = 0 := by
@@ -801,6 +808,66 @@ theorem indicatorConstLp_disjoint_union {s t : Set α} (hs : MeasurableSet s) (h
end IndicatorConstLp
+section const
+
+variable (μ p)
+variable [IsFiniteMeasure μ] (c : E)
+
+/-- Constant function as an element of `MeasureTheory.Lp` for a finite measure. -/
+protected def Lp.const : E →+ Lp E p μ where
+ toFun c := ⟨AEEqFun.const α c, const_mem_Lp α μ c⟩
+ map_zero' := rfl
+ map_add' _ _ := rfl
+
+lemma Lp.coeFn_const : Lp.const p μ c =ᵐ[μ] Function.const α c :=
+ AEEqFun.coeFn_const α c
+
+@[simp] lemma Lp.const_val : (Lp.const p μ c).1 = AEEqFun.const α c := rfl
+
+@[simp]
+lemma Memℒp.toLp_const : Memℒp.toLp _ (memℒp_const c) = Lp.const p μ c := rfl
+
+@[simp]
+lemma indicatorConstLp_univ :
+ indicatorConstLp p .univ (measure_ne_top μ _) c = Lp.const p μ c := by
+ rw [← Memℒp.toLp_const, indicatorConstLp]
+ simp only [Set.indicator_univ, Function.const]
+
+theorem Lp.norm_const [NeZero μ] (hp_zero : p ≠ 0) :
+ ‖Lp.const p μ c‖ = ‖c‖ * (μ Set.univ).toReal ^ (1 / p.toReal) := by
+ have := NeZero.ne μ
+ rw [← Memℒp.toLp_const, Lp.norm_toLp, snorm_const] <;> try assumption
+ rw [ENNReal.toReal_mul, ENNReal.coe_toReal, ← ENNReal.toReal_rpow, coe_nnnorm]
+
+theorem Lp.norm_const' (hp_zero : p ≠ 0) (hp_top : p ≠ ∞) :
+ ‖Lp.const p μ c‖ = ‖c‖ * (μ Set.univ).toReal ^ (1 / p.toReal) := by
+ rw [← Memℒp.toLp_const, Lp.norm_toLp, snorm_const'] <;> try assumption
+ rw [ENNReal.toReal_mul, ENNReal.coe_toReal, ← ENNReal.toReal_rpow, coe_nnnorm]
+
+theorem Lp.norm_const_le : ‖Lp.const p μ c‖ ≤ ‖c‖ * (μ Set.univ).toReal ^ (1 / p.toReal) := by
+ rw [← indicatorConstLp_univ]
+ exact norm_indicatorConstLp_le
+
+/-- `MeasureTheory.Lp.const` as a `LinearMap`. -/
+@[simps] protected def Lp.constₗ (𝕜 : Type _) [NormedRing 𝕜] [Module 𝕜 E] [BoundedSMul 𝕜 E] :
+ E →ₗ[𝕜] Lp E p μ where
+ toFun := Lp.const p μ
+ map_add' := map_add _
+ map_smul' _ _ := rfl
+
+@[simps! apply]
+protected def Lp.constL (𝕜 : Type _) [NormedField 𝕜] [NormedSpace 𝕜 E] [Fact (1 ≤ p)] :
+ E →L[𝕜] Lp E p μ :=
+ (Lp.constₗ p μ 𝕜).mkContinuous ((μ Set.univ).toReal ^ (1 / p.toReal)) <| fun _ ↦
+ (Lp.norm_const_le _ _ _).trans_eq (mul_comm _ _)
+
+theorem Lp.norm_constL_le (𝕜 : Type _) [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E]
+ [Fact (1 ≤ p)] :
+ ‖(Lp.constL p μ 𝕜 : E →L[𝕜] Lp E p μ)‖ ≤ (μ Set.univ).toReal ^ (1 / p.toReal) :=
+ LinearMap.mkContinuous_norm_le _ (by positivity) _
+
+end const
+
theorem Memℒp.norm_rpow_div {f : α → E} (hf : Memℒp f p μ) (q : ℝ≥0∞) :
Memℒp (fun x : α => ‖f x‖ ^ q.toReal) (p / q) μ := by
refine' ⟨(hf.1.norm.aemeasurable.pow_const q.toReal).aestronglyMeasurable, _⟩
@@ -1596,7 +1663,6 @@ theorem cauchy_complete_ℒp [CompleteSpace E] (hp : 1 ≤ p) {f : ℕ → α
/-! ### `Lp` is complete for `1 ≤ p` -/
-
instance instCompleteSpace [CompleteSpace E] [hp : Fact (1 ≤ p)] : CompleteSpace (Lp E p μ) :=
completeSpace_lp_of_cauchy_complete_ℒp fun _f hf _B hB h_cau =>
cauchy_complete_ℒp hp.elim hf hB.ne h_cau
@@ -2,17 +2,14 @@
Copyright (c) 2020 Rémy Degenne. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
-
-! This file was ported from Lean 3 source module measure_theory.function.lp_space
-! leanprover-community/mathlib commit c4015acc0a223449d44061e27ddac1835a3852b9
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Analysis.Normed.Group.Hom
import Mathlib.MeasureTheory.Function.LpSeminorm
import Mathlib.MeasureTheory.Measure.OpenPos
import Mathlib.Topology.ContinuousFunction.Compact
+#align_import measure_theory.function.lp_space from "leanprover-community/mathlib"@"c4015acc0a223449d44061e27ddac1835a3852b9"
+
/-!
# Lp space
Also invert the import order so that MeasureTheory.Measure.OpenPos
imports MeasureTheory.Constructions.BorelSpace.Basic
rather than the other way around.
@@ -10,6 +10,7 @@ Authors: Rémy Degenne, Sébastien Gouëzel
-/
import Mathlib.Analysis.Normed.Group.Hom
import Mathlib.MeasureTheory.Function.LpSeminorm
+import Mathlib.MeasureTheory.Measure.OpenPos
import Mathlib.Topology.ContinuousFunction.Compact
/-!
∑'
precedence (#5615)
∑
, ∏
and variants).([^a-zA-Zα-ωΑ-Ω'𝓝ℳ₀𝕂ₛ)]) \(([∑∏][^()∑∏]*,[^()∑∏:]*)\) ([⊂⊆=<≤])
replaced by $1 $2 $3
@@ -1333,7 +1333,7 @@ theorem cauchySeq_Lp_iff_cauchySeq_ℒp {ι} [Nonempty ι] [SemilatticeSup ι] [
theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
(H :
- ∀ (f : ℕ → α → E) (hf : ∀ n, Memℒp (f n) p μ) (B : ℕ → ℝ≥0∞) (hB : (∑' i, B i) < ∞)
+ ∀ (f : ℕ → α → E) (hf : ∀ n, Memℒp (f n) p μ) (B : ℕ → ℝ≥0∞) (hB : ∑' i, B i < ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N),
∃ (f_lim : α → E), Memℒp f_lim p μ ∧
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0)) :
@@ -1349,13 +1349,13 @@ theorem completeSpace_lp_of_cauchy_complete_ℒp [hp : Fact (1 ≤ p)]
cases' hB with M hB
let B1 n := ENNReal.ofReal (B n)
have hB1_has : HasSum B1 (ENNReal.ofReal M) := by
- have h_tsum_B1 : (∑' i, B1 i) = ENNReal.ofReal M := by
+ have h_tsum_B1 : ∑' i, B1 i = ENNReal.ofReal M := by
change (∑' n : ℕ, ENNReal.ofReal (B n)) = ENNReal.ofReal M
rw [← hB.tsum_eq]
exact (ENNReal.ofReal_tsum_of_nonneg (fun n => le_of_lt (hB_pos n)) hB.summable).symm
have h_sum := (@ENNReal.summable _ B1).hasSum
rwa [h_tsum_B1] at h_sum
- have hB1 : (∑' i, B1 i) < ∞ := by
+ have hB1 : ∑' i, B1 i < ∞ := by
rw [hB1_has.tsum_eq]
exact ENNReal.ofReal_lt_top
let f1 : ℕ → α → E := fun n => f n
@@ -1422,7 +1422,7 @@ private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E
suffices h_pow : (∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ≤ (∑' i, B i) ^ p
· rwa [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div]
have h_tsum_1 :
- ∀ g : ℕ → ℝ≥0∞, (∑' i, g i) = atTop.liminf fun n => ∑ i in Finset.range (n + 1), g i := by
+ ∀ g : ℕ → ℝ≥0∞, ∑' i, g i = atTop.liminf fun n => ∑ i in Finset.range (n + 1), g i := by
intro g
rw [ENNReal.tsum_eq_liminf_sum_nat, ← liminf_nat_add _ 1]
simp_rw [h_tsum_1 _]
@@ -1446,7 +1446,7 @@ private theorem lintegral_rpow_tsum_coe_nnnorm_sub_le_tsum {f : ℕ → α → E
· exact liminf_le_of_frequently_le' (frequently_of_forall h)
private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, AEStronglyMeasurable (f n) μ)
- {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
+ {p : ℝ} (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h : (∫⁻ a, (∑' i, ‖f (i + 1) a - f i a‖₊ : ℝ≥0∞) ^ p ∂μ) ^ (1 / p) ≤ ∑' i, B i) :
∀ᵐ x ∂μ, (∑' i, ‖f (i + 1) x - f i x‖₊ : ℝ≥0∞) < ∞ := by
have hp_pos : 0 < p := zero_lt_one.trans_le hp1
@@ -1462,7 +1462,7 @@ private theorem tsum_nnnorm_sub_ae_lt_top {f : ℕ → α → E} (hf : ∀ n, AE
ENNReal.top_rpow_of_pos (by simp [hp_pos] : 0 < 1 / p)] at hx
theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p : ℝ}
- (hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
+ (hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp1 : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm' (f n - f m) p μ < B N) :
∀ᵐ x ∂μ, ∃ l : E, atTop.Tendsto (fun n => f n x) (𝓝 l) := by
have h_summable : ∀ᵐ x ∂μ, Summable fun i : ℕ => f (i + 1) x - f i x := by
@@ -1487,7 +1487,7 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
atTop.Tendsto (fun n => ∑ i in Finset.range n, (f (i + 1) x - f i x)) (𝓝 l) := by
refine' h_summable.mono fun x hx => _
let hx_sum := hx.hasSum.tendsto_sum_nat
- exact ⟨∑' i, f (i + 1) x - f i x, hx_sum⟩
+ exact ⟨∑' i, (f (i + 1) x - f i x), hx_sum⟩
refine' h.mono fun x hx => _
cases' hx with l hx
have h_rw_sum :
@@ -1505,7 +1505,7 @@ theorem ae_tendsto_of_cauchy_snorm' [CompleteSpace E] {f : ℕ → α → E} {p
#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm' MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm'
theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
- (hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
+ (hf : ∀ n, AEStronglyMeasurable (f n) μ) (hp : 1 ≤ p) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N) :
∀ᵐ x ∂μ, ∃ l : E, atTop.Tendsto (fun n => f n x) (𝓝 l) := by
by_cases hp_top : p = ∞
@@ -1537,7 +1537,7 @@ theorem ae_tendsto_of_cauchy_snorm [CompleteSpace E] {f : ℕ → α → E}
#align measure_theory.Lp.ae_tendsto_of_cauchy_snorm MeasureTheory.Lp.ae_tendsto_of_cauchy_snorm
theorem cauchy_tendsto_of_tendsto {f : ℕ → α → E} (hf : ∀ n, AEStronglyMeasurable (f n) μ)
- (f_lim : α → E) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
+ (f_lim : α → E) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N)
(h_lim : ∀ᵐ x : α ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))) :
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) := by
@@ -1579,7 +1579,7 @@ theorem memℒp_of_cauchy_tendsto (hp : 1 ≤ p) {f : ℕ → α → E} (hf :
#align measure_theory.Lp.mem_ℒp_of_cauchy_tendsto MeasureTheory.Lp.memℒp_of_cauchy_tendsto
theorem cauchy_complete_ℒp [CompleteSpace E] (hp : 1 ≤ p) {f : ℕ → α → E}
- (hf : ∀ n, Memℒp (f n) p μ) {B : ℕ → ℝ≥0∞} (hB : (∑' i, B i) ≠ ∞)
+ (hf : ∀ n, Memℒp (f n) p μ) {B : ℕ → ℝ≥0∞} (hB : ∑' i, B i ≠ ∞)
(h_cau : ∀ N n m : ℕ, N ≤ n → N ≤ m → snorm (f n - f m) p μ < B N) :
∃ (f_lim : α → E), Memℒp f_lim p μ ∧
atTop.Tendsto (fun n => snorm (f n - f_lim) p μ) (𝓝 0) := by
@@ -839,6 +839,56 @@ theorem Memℒp.norm_rpow {f : α → E} (hf : Memℒp f p μ) (hp_ne_zero : p
rw [div_eq_mul_inv, ENNReal.mul_inv_cancel hp_ne_zero hp_ne_top]
#align measure_theory.mem_ℒp.norm_rpow MeasureTheory.Memℒp.norm_rpow
+theorem AEEqFun.compMeasurePreserving_mem_Lp {β : Type _} [MeasurableSpace β]
+ {μb : MeasureTheory.Measure β} {g : β →ₘ[μb] E} (hg : g ∈ Lp E p μb) {f : α → β}
+ (hf : MeasurePreserving f μ μb) :
+ g.compMeasurePreserving f hf ∈ Lp E p μ := by
+ rw [Lp.mem_Lp_iff_snorm_lt_top] at hg ⊢
+ rwa [snorm_compMeasurePreserving]
+
+namespace Lp
+
+/-! ### Composition with a measure preserving function -/
+
+variable {β : Type _} [MeasurableSpace β] {μb : MeasureTheory.Measure β} {f : α → β}
+
+/-- Composition of an `L^p` function with a measure preserving function is an `L^p` function. -/
+def compMeasurePreserving (f : α → β) (hf : MeasurePreserving f μ μb) :
+ Lp E p μb →+ Lp E p μ where
+ toFun g := ⟨g.1.compMeasurePreserving f hf, g.1.compMeasurePreserving_mem_Lp g.2 hf⟩
+ map_zero' := rfl
+ map_add' := by rintro ⟨⟨_⟩, _⟩ ⟨⟨_⟩, _⟩; rfl
+
+@[simp]
+theorem compMeasurePreserving_val (g : Lp E p μb) (hf : MeasurePreserving f μ μb) :
+ (compMeasurePreserving f hf g).1 = g.1.compMeasurePreserving f hf :=
+ rfl
+
+theorem coeFn_compMeasurePreserving (g : Lp E p μb) (hf : MeasurePreserving f μ μb) :
+ compMeasurePreserving f hf g =ᵐ[μ] g ∘ f :=
+ g.1.coeFn_compMeasurePreserving hf
+
+@[simp]
+theorem norm_compMeasurePreserving (g : Lp E p μb) (hf : MeasurePreserving f μ μb) :
+ ‖compMeasurePreserving f hf g‖ = ‖g‖ :=
+ congr_arg ENNReal.toReal <| g.1.snorm_compMeasurePreserving hf
+
+variable (𝕜 : Type _) [NormedRing 𝕜] [Module 𝕜 E] [BoundedSMul 𝕜 E]
+
+@[simps]
+def compMeasurePreservingₗ (f : α → β) (hf : MeasurePreserving f μ μb) :
+ Lp E p μb →ₗ[𝕜] Lp E p μ where
+ __ := compMeasurePreserving f hf
+ map_smul' c g := by rcases g with ⟨⟨_⟩, _⟩; rfl
+
+@[simps!]
+def compMeasurePreservingₗᵢ [Fact (1 ≤ p)] (f : α → β) (hf : MeasurePreserving f μ μb) :
+ Lp E p μb →ₗᵢ[𝕜] Lp E p μ where
+ toLinearMap := compMeasurePreservingₗ 𝕜 f hf
+ norm_map' := (norm_compMeasurePreserving · hf)
+
+end Lp
+
end MeasureTheory
open MeasureTheory
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -574,7 +574,7 @@ theorem snormEssSup_indicator_const_eq (s : Set α) (c : G) (hμs : μ s ≠ 0)
refine' le_antisymm (snormEssSup_indicator_const_le s c) _
by_contra' h
have h' := ae_iff.mp (ae_lt_of_essSup_lt h)
- push_neg at h'
+ push_neg at h'
refine' hμs (measure_mono_null (fun x hx_mem => _) h')
rw [Set.mem_setOf_eq, Set.indicator_of_mem hx_mem]
#align measure_theory.snorm_ess_sup_indicator_const_eq MeasureTheory.snormEssSup_indicator_const_eq
I wrote a script to find lines that contain an odd number of backticks
@@ -509,7 +509,7 @@ instance instIsScalarTower [SMul 𝕜 𝕜'] [IsScalarTower 𝕜 𝕜' E] : IsSc
smul_assoc k k' f := Subtype.ext <| smul_assoc k k' (f : α →ₘ[μ] E)
instance instBoundedSMul [Fact (1 ≤ p)] : BoundedSMul 𝕜 (Lp E p μ) :=
- -- TODO: add `BoundedSMul.of_nnnorm_smul_le
+ -- TODO: add `BoundedSMul.of_nnnorm_smul_le`
BoundedSMul.of_norm_smul_le fun r f => by
suffices (‖r • f‖₊ : ℝ≥0∞) ≤ ‖r‖₊ * ‖f‖₊ by exact_mod_cast this
rw [nnnorm_def, nnnorm_def, ENNReal.coe_toNNReal (Lp.snorm_ne_top _),
@@ -107,11 +107,9 @@ def Lp {α} (E : Type _) {m : MeasurableSpace α} [NormedAddCommGroup E] (p :
neg_mem' {f} hf := by rwa [Set.mem_setOf_eq, snorm_congr_ae (AEEqFun.coeFn_neg f), snorm_neg]
#align measure_theory.Lp MeasureTheory.Lp
--- mathport name: measure_theory.L1
-scoped notation:25 α " →₁[" μ "] " E => MeasureTheory.Lp (α := α) E 1 μ
-
--- mathport name: measure_theory.L2
-scoped notation:25 α " →₂[" μ "] " E => MeasureTheory.Lp (α := α) E 2 μ
+-- Porting note: calling the first argument `α` breaks the `(α := ·)` notation
+scoped notation:25 α' " →₁[" μ "] " E => MeasureTheory.Lp (α := α') E 1 μ
+scoped notation:25 α' " →₂[" μ "] " E => MeasureTheory.Lp (α := α') E 2 μ
namespace Memℒp
Is
of Foo
which is ported from is_foo
(#4639)
I have misported is_foo
to Foo
because I misunderstood the rule for IsLawfulFoo
.
This PR recover Is
of Foo
which is ported from is_foo
.
This PR also renames some misported theorems.
@@ -180,7 +180,7 @@ theorem mem_Lp_iff_memℒp {f : α →ₘ[μ] E} : f ∈ Lp E p μ ↔ Memℒp f
simp [mem_Lp_iff_snorm_lt_top, Memℒp, f.stronglyMeasurable.aestronglyMeasurable]
#align measure_theory.Lp.mem_Lp_iff_mem_ℒp MeasureTheory.Lp.mem_Lp_iff_memℒp
-protected theorem antitone [FiniteMeasure μ] {p q : ℝ≥0∞} (hpq : p ≤ q) : Lp E q μ ≤ Lp E p μ :=
+protected theorem antitone [IsFiniteMeasure μ] {p q : ℝ≥0∞} (hpq : p ≤ q) : Lp E q μ ≤ Lp E p μ :=
fun f hf => (Memℒp.memℒp_of_exponent_le ⟨f.aestronglyMeasurable, hf⟩ hpq).2
#align measure_theory.Lp.antitone MeasureTheory.Lp.antitone
@@ -242,7 +242,7 @@ theorem coeFn_sub (f g : Lp E p μ) : ⇑(f - g) =ᵐ[μ] f - g :=
AEEqFun.coeFn_sub _ _
#align measure_theory.Lp.coe_fn_sub MeasureTheory.Lp.coeFn_sub
-theorem mem_lp_const (α) {_ : MeasurableSpace α} (μ : Measure α) (c : E) [FiniteMeasure μ] :
+theorem mem_lp_const (α) {_ : MeasurableSpace α} (μ : Measure α) (c : E) [IsFiniteMeasure μ] :
@AEEqFun.const α _ _ μ _ c ∈ Lp E p μ :=
(memℒp_const c).snorm_mk_lt_top
#align measure_theory.Lp.mem_Lp_const MeasureTheory.Lp.mem_lp_const
@@ -403,17 +403,17 @@ theorem mem_Lp_of_ae_le {f : α →ₘ[μ] E} {g : Lp F p μ} (h : ∀ᵐ x ∂
mem_Lp_of_nnnorm_ae_le h
#align measure_theory.Lp.mem_Lp_of_ae_le MeasureTheory.Lp.mem_Lp_of_ae_le
-theorem mem_Lp_of_ae_nnnorm_bound [FiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ≥0)
+theorem mem_Lp_of_ae_nnnorm_bound [IsFiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ≥0)
(hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) : f ∈ Lp E p μ :=
mem_Lp_iff_memℒp.2 <| Memℒp.of_bound f.aestronglyMeasurable _ hfC
#align measure_theory.Lp.mem_Lp_of_ae_nnnorm_bound MeasureTheory.Lp.mem_Lp_of_ae_nnnorm_bound
-theorem mem_Lp_of_ae_bound [FiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ) (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
+theorem mem_Lp_of_ae_bound [IsFiniteMeasure μ] {f : α →ₘ[μ] E} (C : ℝ) (hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) :
f ∈ Lp E p μ :=
mem_Lp_iff_memℒp.2 <| Memℒp.of_bound f.aestronglyMeasurable _ hfC
#align measure_theory.Lp.mem_Lp_of_ae_bound MeasureTheory.Lp.mem_Lp_of_ae_bound
-theorem nnnorm_le_of_ae_bound [FiniteMeasure μ] {f : Lp E p μ} {C : ℝ≥0}
+theorem nnnorm_le_of_ae_bound [IsFiniteMeasure μ] {f : Lp E p μ} {C : ℝ≥0}
(hfC : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ C) : ‖f‖₊ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ * C := by
by_cases hμ : μ = 0
· by_cases hp : p.toReal⁻¹ = 0
@@ -425,7 +425,7 @@ theorem nnnorm_le_of_ae_bound [FiniteMeasure μ] {f : Lp E p μ} {C : ℝ≥0}
ENNReal.coe_mul, mul_comm, ENNReal.smul_def, smul_eq_mul]
#align measure_theory.Lp.nnnorm_le_of_ae_bound MeasureTheory.Lp.nnnorm_le_of_ae_bound
-theorem norm_le_of_ae_bound [FiniteMeasure μ] {f : Lp E p μ} {C : ℝ} (hC : 0 ≤ C)
+theorem norm_le_of_ae_bound [IsFiniteMeasure μ] {f : Lp E p μ} {C : ℝ} (hC : 0 ≤ C)
(hfC : ∀ᵐ x ∂μ, ‖f x‖ ≤ C) : ‖f‖ ≤ measureUnivNNReal μ ^ p.toReal⁻¹ * C := by
lift C to ℝ≥0 using hC
have := nnnorm_le_of_ae_bound hfC
@@ -1594,7 +1594,7 @@ theorem MeasureTheory.Lp.mem_boundedContinuousFunction_iff {f : Lp E p μ} :
namespace BoundedContinuousFunction
-variable [FiniteMeasure μ]
+variable [IsFiniteMeasure μ]
/-- A bounded continuous function on a finite-measure space is in `Lp`. -/
theorem mem_Lp (f : α →ᵇ E) : f.toContinuousMap.toAEEqFun μ ∈ Lp E p μ := by
@@ -1673,7 +1673,7 @@ theorem toLp_norm_le [NontriviallyNormedField 𝕜] [NormedSpace 𝕜 E] :
LinearMap.mkContinuous_norm_le _ (measureUnivNNReal μ ^ p.toReal⁻¹).coe_nonneg _
#align bounded_continuous_function.to_Lp_norm_le BoundedContinuousFunction.toLp_norm_le
-theorem toLp_inj {f g : α →ᵇ E} [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
+theorem toLp_inj {f g : α →ᵇ E} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
toLp (E := E) p μ 𝕜 f = toLp (E := E) p μ 𝕜 g ↔ f = g := by
refine' ⟨fun h => _, by tauto⟩
rw [← FunLike.coe_fn_eq, ← (map_continuous f).ae_eq_iff_eq μ (map_continuous g)]
@@ -1681,7 +1681,7 @@ theorem toLp_inj {f g : α →ᵇ E} [μ.OpenPosMeasure] [NormedField 𝕜] [Nor
rw [h]
#align bounded_continuous_function.to_Lp_inj BoundedContinuousFunction.toLp_inj
-theorem toLp_injective [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
+theorem toLp_injective [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
Function.Injective (⇑(toLp p μ 𝕜 : (α →ᵇ E) →L[𝕜] Lp E p μ)) :=
fun _f _g hfg => (toLp_inj μ).mp hfg
#align bounded_continuous_function.to_Lp_injective BoundedContinuousFunction.toLp_injective
@@ -1690,7 +1690,7 @@ end BoundedContinuousFunction
namespace ContinuousMap
-variable [CompactSpace α] [FiniteMeasure μ]
+variable [CompactSpace α] [IsFiniteMeasure μ]
variable (𝕜 : Type _) (p μ) [Fact (1 ≤ p)]
@@ -1740,12 +1740,12 @@ theorem coe_toLp [NormedField 𝕜] [NormedSpace 𝕜 E] (f : C(α, E)) :
rfl
#align continuous_map.coe_to_Lp ContinuousMap.coe_toLp
-theorem toLp_injective [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
+theorem toLp_injective [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
Function.Injective (⇑(toLp p μ 𝕜 : C(α, E) →L[𝕜] Lp E p μ)) :=
(BoundedContinuousFunction.toLp_injective _).comp (linearIsometryBoundedOfCompact α E 𝕜).injective
#align continuous_map.to_Lp_injective ContinuousMap.toLp_injective
-theorem toLp_inj {f g : C(α, E)} [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
+theorem toLp_inj {f g : C(α, E)} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E] :
toLp (E := E) p μ 𝕜 f = toLp (E := E) p μ 𝕜 g ↔ f = g :=
(toLp_injective μ).eq_iff
#align continuous_map.to_Lp_inj ContinuousMap.toLp_inj
@@ -1754,7 +1754,7 @@ variable {μ}
/-- If a sum of continuous functions `g n` is convergent, and the same sum converges in `Lᵖ` to `h`,
then in fact `g n` converges uniformly to `h`. -/
-theorem hasSum_of_hasSum_Lp {β : Type _} [μ.OpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E]
+theorem hasSum_of_hasSum_Lp {β : Type _} [μ.IsOpenPosMeasure] [NormedField 𝕜] [NormedSpace 𝕜 E]
{g : β → C(α, E)} {f : C(α, E)} (hg : Summable g)
(hg2 : HasSum (toLp (E := E) p μ 𝕜 ∘ g) (toLp (E := E) p μ 𝕜 f)) : HasSum g f := by
convert Summable.hasSum hg
The unported dependencies are
algebra.order.module
init.core
linear_algebra.free_module.finite.rank
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
linear_algebra.free_module.rank
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file