measure_theory.function.lp_seminorm
⟷
Mathlib.MeasureTheory.Function.LpSeminorm.Trim
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
@@ -6,7 +6,7 @@ Authors: Rémy Degenne, Sébastien Gouëzel
import Analysis.NormedSpace.IndicatorFunction
import Analysis.SpecialFunctions.Pow.Continuity
import MeasureTheory.Function.EssSup
-import MeasureTheory.Function.AeEqFun
+import MeasureTheory.Function.AEEqFun
import MeasureTheory.Integral.MeanInequalities
#align_import measure_theory.function.lp_seminorm from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
@@ -1984,31 +1984,31 @@ theorem snorm_indicator_ge_of_bdd_below (hp : p ≠ 0) (hp' : p ≠ ∞) {f : α
#align measure_theory.snorm_indicator_ge_of_bdd_below MeasureTheory.snorm_indicator_ge_of_bdd_below
-/
-section IsROrC
+section RCLike
-variable {𝕜 : Type _} [IsROrC 𝕜] {f : α → 𝕜}
+variable {𝕜 : Type _} [RCLike 𝕜] {f : α → 𝕜}
#print MeasureTheory.Memℒp.re /-
-theorem Memℒp.re (hf : Memℒp f p μ) : Memℒp (fun x => IsROrC.re (f x)) p μ :=
+theorem Memℒp.re (hf : Memℒp f p μ) : Memℒp (fun x => RCLike.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)
+ have : ∀ x, ‖RCLike.re (f x)‖ ≤ 1 * ‖f x‖ := by intro x; rw [one_mul];
+ exact RCLike.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
-/
#print MeasureTheory.Memℒp.im /-
-theorem Memℒp.im (hf : Memℒp f p μ) : Memℒp (fun x => IsROrC.im (f x)) p μ :=
+theorem Memℒp.im (hf : Memℒp f p μ) : Memℒp (fun x => RCLike.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)
+ have : ∀ x, ‖RCLike.im (f x)‖ ≤ 1 * ‖f x‖ := by intro x; rw [one_mul];
+ exact RCLike.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
+end RCLike
section Liminf
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -247,7 +247,7 @@ theorem snorm_zero : snorm (0 : α → F) 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
+ 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
-/
@@ -304,7 +304,7 @@ theorem snorm_measure_zero {f : α → F} : snorm f p (0 : Measure α) = 0 :=
· simp [h0]
by_cases h_top : p = ∞
· simp [h_top]
- rw [← Ne.def] at h0
+ 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
-/
@@ -899,17 +899,17 @@ 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
+ · 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_inj, nnnorm_eq_zero] at hx
+ rwa [← ENNReal.coe_zero, ENNReal.coe_inj, nnnorm_eq_zero] at hx
· exact absurd hx.left ENNReal.coe_ne_top
· exfalso
- rw [one_div, inv_lt_zero] at h
+ 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
-/
@@ -1073,7 +1073,7 @@ theorem exists_Lp_half (p : ℝ≥0∞) {δ : ℝ≥0∞} (hδ : δ ≠ 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
+ 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
@@ -1347,7 +1347,7 @@ theorem snorm'_le_snormEssSup_mul_rpow_measure_univ (hq_pos : 0 < q) {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
+ 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
-/
@@ -1358,7 +1358,7 @@ theorem snorm_le_snorm_mul_rpow_measure_univ {p q : ℝ≥0∞} (hpq : p ≤ q)
by
by_cases hp0 : p = 0
· simp [hp0, zero_le]
- rw [← Ne.def] at hp0
+ 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 = ∞
@@ -1387,7 +1387,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
-/
@@ -1491,27 +1491,27 @@ theorem Memℒp.memℒp_of_exponent_le {p q : ℝ≥0∞} [IsFiniteMeasure μ] {
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
+ 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
+ · have hq_top : q = ∞ := by rwa [hp_top, top_le_iff] at hpq
rw [hp_top]
- rwa [hq_top] at hfq_lt_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
+ 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
+ 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
+ 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
-/
@@ -1638,8 +1638,8 @@ 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
+ 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
-/
@@ -1761,11 +1761,11 @@ theorem snorm_le_snorm_mul_snorm_of_nnnorm {p q r : ℝ≥0∞} {f : α → E}
· 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
+ 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
+ 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
@@ -1779,7 +1779,7 @@ theorem snorm_le_snorm_mul_snorm_of_nnnorm {p q r : ℝ≥0∞} {f : α → E}
exact snorm_le_snorm_mul_snorm_top p hf g b 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]
@@ -1940,7 +1940,7 @@ theorem snorm'_const_smul {f : α → F} (c : 𝕜) (hq_pos : 0 < q) :
· simp [snorm', hq_pos]
refine' le_antisymm (snorm'_const_smul_le _ _ hq_pos) _
have : snorm' _ q μ ≤ _ := snorm'_const_smul_le c⁻¹ (c • f) hq_pos
- rwa [inv_smul_smul₀ hc, nnnorm_inv, ENNReal.le_inv_smul_iff (nnnorm_ne_zero_iff.mpr hc)] at this
+ rwa [inv_smul_smul₀ hc, nnnorm_inv, ENNReal.le_inv_smul_iff (nnnorm_ne_zero_iff.mpr hc)] at this
#align measure_theory.snorm'_const_smul MeasureTheory.snorm'_const_smul
-/
@@ -1958,7 +1958,7 @@ theorem snorm_const_smul (c : 𝕜) (f : α → F) : snorm (c • f) p μ = (‖
· simp
refine' le_antisymm (snorm_const_smul_le _ _) _
have : snorm _ p μ ≤ _ := snorm_const_smul_le c⁻¹ (c • f)
- rwa [inv_smul_smul₀ hc, nnnorm_inv, ENNReal.le_inv_smul_iff (nnnorm_ne_zero_iff.mpr hc)] at this
+ rwa [inv_smul_smul₀ hc, nnnorm_inv, ENNReal.le_inv_smul_iff (nnnorm_ne_zero_iff.mpr hc)] at this
#align measure_theory.snorm_const_smul MeasureTheory.snorm_const_smul
-/
@@ -2033,7 +2033,7 @@ theorem ae_bdd_liminf_atTop_rpow_of_snorm_bdd {p : ℝ≥0∞} {f : ℕ → α
(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 [snorm_eq_lintegral_rpow_nnnorm hp hp'] at hbdd
simp_rw [liminf_eq, eventually_at_top]
exact
sSup_le fun b ⟨a, ha⟩ =>
@@ -2049,11 +2049,11 @@ theorem ae_bdd_liminf_atTop_of_snorm_bdd {p : ℝ≥0∞} (hp : p ≠ 0) {f :
by
by_cases hp' : p = ∞
· subst hp'
- simp_rw [snorm_exponent_top] at hbdd
+ 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
+ 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⟩)
@@ -2069,7 +2069,7 @@ theorem ae_bdd_liminf_atTop_of_snorm_bdd {p : ℝ≥0∞} (hp : p ≠ 0) {f :
refine' (OrderIso.liminf_apply (ENNReal.orderIsoRpow p.to_real _) _ _ _ _).symm <;>
run_tac
is_bounded_default
- rw [this] at hx
+ 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
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -640,7 +640,7 @@ 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_inj]
ext
push_cast
rw [Real.norm_rpow_of_nonneg (norm_nonneg _)]
@@ -906,7 +906,7 @@ theorem ae_eq_zero_of_snorm'_eq_zero {f : α → E} (hq0 : 0 ≤ q) (hf : AEStro
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
+ rwa [← ENNReal.coe_zero, ENNReal.coe_inj, nnnorm_eq_zero] at hx
· exact absurd hx.left ENNReal.coe_ne_top
· exfalso
rw [one_div, inv_lt_zero] at h
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -620,7 +620,7 @@ theorem snorm'_norm_rpow (f : α → F) (p q : ℝ) (hq_pos : 0 < q) :
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, ←
+ rw [Real.norm_eq_abs, abs_eq_self.mpr (Real.rpow_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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,11 +3,11 @@ 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.NormedSpace.IndicatorFunction
-import Mathbin.Analysis.SpecialFunctions.Pow.Continuity
-import Mathbin.MeasureTheory.Function.EssSup
-import Mathbin.MeasureTheory.Function.AeEqFun
-import Mathbin.MeasureTheory.Integral.MeanInequalities
+import Analysis.NormedSpace.IndicatorFunction
+import Analysis.SpecialFunctions.Pow.Continuity
+import MeasureTheory.Function.EssSup
+import MeasureTheory.Function.AeEqFun
+import MeasureTheory.Integral.MeanInequalities
#align_import measure_theory.function.lp_seminorm from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -682,7 +682,7 @@ theorem Memℒp.of_le {f : α → E} {g : α → F} (hg : Memℒp g p μ) (hf :
#align measure_theory.mem_ℒp.of_le MeasureTheory.Memℒp.of_le
-/
-alias mem_ℒp.of_le ← mem_ℒp.mono
+alias mem_ℒp.mono := mem_ℒp.of_le
#align measure_theory.mem_ℒp.mono MeasureTheory.Memℒp.mono
#print MeasureTheory.Memℒp.mono' /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,11 +2,6 @@
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_seminorm
-! 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.NormedSpace.IndicatorFunction
import Mathbin.Analysis.SpecialFunctions.Pow.Continuity
@@ -14,6 +9,8 @@ import Mathbin.MeasureTheory.Function.EssSup
import Mathbin.MeasureTheory.Function.AeEqFun
import Mathbin.MeasureTheory.Integral.MeanInequalities
+#align_import measure_theory.function.lp_seminorm from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
+
/-!
# ℒp space
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -95,23 +95,31 @@ def snorm {m : MeasurableSpace α} (f : α → F) (p : ℝ≥0∞) (μ : Measure
#align measure_theory.snorm MeasureTheory.snorm
-/
+#print MeasureTheory.snorm_eq_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'
+-/
+#print MeasureTheory.snorm_eq_lintegral_rpow_nnnorm /-
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
+-/
+#print MeasureTheory.snorm_one_eq_lintegral_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
+-/
+#print MeasureTheory.snorm_exponent_top /-
@[simp]
theorem snorm_exponent_top {f : α → F} : snorm f ∞ μ = snormEssSup f μ := by simp [snorm]
#align measure_theory.snorm_exponent_top MeasureTheory.snorm_exponent_top
+-/
#print MeasureTheory.Memℒp /-
/-- The property that `f:α→E` is ae strongly measurable and `(∫ ‖f a‖^p ∂μ)^(1/p)` is finite
@@ -129,32 +137,41 @@ theorem Memℒp.aestronglyMeasurable {f : α → E} {p : ℝ≥0∞} (h : Memℒ
#align measure_theory.mem_ℒp.ae_strongly_measurable MeasureTheory.Memℒp.aestronglyMeasurable
-/
+#print MeasureTheory.lintegral_rpow_nnnorm_eq_rpow_snorm' /-
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
+#print MeasureTheory.Memℒp.snorm_lt_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
+-/
+#print MeasureTheory.Memℒp.snorm_ne_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
+-/
+#print MeasureTheory.lintegral_rpow_nnnorm_lt_top_of_snorm'_lt_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
+-/
+#print 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
@@ -162,7 +179,9 @@ theorem lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top {f : α → F} (hp_ne_zero
· 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
+-/
+#print MeasureTheory.snorm_lt_top_iff_lintegral_rpow_nnnorm_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,
@@ -173,28 +192,38 @@ theorem snorm_lt_top_iff_lintegral_rpow_nnnorm_lt_top {f : α → F} (hp_ne_zero
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
+#print MeasureTheory.snorm'_exponent_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
+-/
+#print 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
+-/
+#print MeasureTheory.memℒp_zero_iff_aestronglyMeasurable /-
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
+-/
+#print MeasureTheory.snorm'_zero /-
@[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
+-/
+#print MeasureTheory.snorm'_zero' /-
@[simp]
theorem snorm'_zero' (hq0_ne : q ≠ 0) (hμ : μ ≠ 0) : snorm' (0 : α → F) q μ = 0 :=
by
@@ -202,14 +231,18 @@ theorem snorm'_zero' (hq0_ne : q ≠ 0) (hμ : μ ≠ 0) : snorm' (0 : α → F)
· 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'
+-/
+#print MeasureTheory.snormEssSup_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
+-/
+#print MeasureTheory.snorm_zero /-
@[simp]
theorem snorm_zero : snorm (0 : α → F) p μ = 0 :=
by
@@ -220,37 +253,53 @@ theorem snorm_zero : snorm (0 : α → F) p μ = 0 :=
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
+-/
+#print 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'
+-/
+#print MeasureTheory.zero_memℒp /-
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
+-/
+#print 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 α]
+#print MeasureTheory.snorm'_measure_zero_of_pos /-
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
+-/
+#print MeasureTheory.snorm'_measure_zero_of_exponent_zero /-
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
+-/
+#print MeasureTheory.snorm'_measure_zero_of_neg /-
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
+-/
+#print MeasureTheory.snormEssSup_measure_zero /-
@[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
+-/
+#print MeasureTheory.snorm_measure_zero /-
@[simp]
theorem snorm_measure_zero {f : α → F} : snorm f p (0 : Measure α) = 0 :=
by
@@ -261,11 +310,13 @@ theorem snorm_measure_zero {f : α → F} : snorm f p (0 : Measure α) = 0 :=
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
+#print MeasureTheory.snorm'_const /-
theorem snorm'_const (c : F) (hq_pos : 0 < q) :
snorm' (fun x : α => c) q μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / q) :=
by
@@ -275,7 +326,9 @@ theorem snorm'_const (c : F) (hq_pos : 0 < q) :
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
+-/
+#print 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
@@ -290,15 +343,21 @@ theorem snorm'_const' [IsFiniteMeasure μ] (c : F) (hc_ne_zero : c ≠ 0) (hq_ne
rwa [ENNReal.coe_eq_zero, nnnorm_eq_zero]
· exact Or.inl ENNReal.coe_ne_top
#align measure_theory.snorm'_const' MeasureTheory.snorm'_const'
+-/
+#print MeasureTheory.snormEssSup_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
+-/
+#print MeasureTheory.snorm'_const_of_isProbabilityMeasure /-
theorem snorm'_const_of_isProbabilityMeasure (c : F) (hq_pos : 0 < q) [IsProbabilityMeasure μ] :
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
+-/
+#print MeasureTheory.snorm_const /-
theorem snorm_const (c : F) (h0 : p ≠ 0) (hμ : μ ≠ 0) :
snorm (fun x : α => c) p μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / ENNReal.toReal p) :=
by
@@ -306,12 +365,16 @@ theorem snorm_const (c : F) (h0 : p ≠ 0) (hμ : μ ≠ 0) :
· 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
+-/
+#print 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'
+-/
+#print MeasureTheory.snorm_const_lt_top_iff /-
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
@@ -332,7 +395,9 @@ theorem snorm_const_lt_top_iff {p : ℝ≥0∞} {c : F} (hp_ne_zero : p ≠ 0) (
_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
+-/
+#print MeasureTheory.memℒp_const /-
theorem memℒp_const (c : E) [IsFiniteMeasure μ] : Memℒp (fun a : α => c) p μ :=
by
refine' ⟨ae_strongly_measurable_const, _⟩
@@ -345,7 +410,9 @@ theorem memℒp_const (c : E) [IsFiniteMeasure μ] : Memℒp (fun a : α => c) p
refine' (ENNReal.rpow_lt_top_of_nonneg _ (measure_ne_top μ Set.univ)).Ne
simp
#align measure_theory.mem_ℒp_const MeasureTheory.memℒp_const
+-/
+#print MeasureTheory.memℒp_top_const /-
theorem memℒp_top_const (c : E) : Memℒp (fun a : α => c) ∞ μ :=
by
refine' ⟨ae_strongly_measurable_const, _⟩
@@ -354,16 +421,20 @@ theorem memℒp_top_const (c : E) : Memℒp (fun a : α => c) ∞ μ :=
· 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
+-/
+#print MeasureTheory.memℒp_const_iff /-
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
+#print MeasureTheory.snorm'_mono_nnnorm_ae /-
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']
@@ -371,12 +442,16 @@ theorem snorm'_mono_nnnorm_ae {f : α → F} {g : α → G} (hq : 0 ≤ q) (h :
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
+-/
+#print MeasureTheory.snorm'_mono_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
+-/
+#print MeasureTheory.snorm'_congr_nnnorm_ae /-
theorem snorm'_congr_nnnorm_ae {f g : α → F} (hfg : ∀ᵐ x ∂μ, ‖f x‖₊ = ‖g x‖₊) :
snorm' f q μ = snorm' g q μ :=
by
@@ -384,25 +459,35 @@ theorem snorm'_congr_nnnorm_ae {f g : α → F} (hfg : ∀ᵐ x ∂μ, ‖f x‖
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
+-/
+#print MeasureTheory.snorm'_congr_norm_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
+-/
+#print MeasureTheory.snorm'_congr_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
+-/
+#print MeasureTheory.snormEssSup_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
+-/
+#print MeasureTheory.snormEssSup_mono_nnnorm_ae /-
theorem snormEssSup_mono_nnnorm_ae {f g : α → F} (hfg : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ ‖g x‖₊) :
snormEssSup f μ ≤ snormEssSup g μ :=
essSup_mono_ae <| hfg.mono fun x hx => ENNReal.coe_le_coe.mpr hx
#align measure_theory.snorm_ess_sup_mono_nnnorm_ae MeasureTheory.snormEssSup_mono_nnnorm_ae
+-/
+#print MeasureTheory.snorm_mono_nnnorm_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]
@@ -411,51 +496,71 @@ theorem snorm_mono_nnnorm_ae {f : α → F} {g : α → G} (h : ∀ᵐ x ∂μ,
· 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
+-/
+#print MeasureTheory.snorm_mono_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
+-/
+#print MeasureTheory.snorm_mono_ae_real /-
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
+-/
+#print MeasureTheory.snorm_mono_nnnorm /-
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
+-/
+#print MeasureTheory.snorm_mono /-
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
+-/
+#print MeasureTheory.snorm_mono_real /-
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
+-/
+#print MeasureTheory.snormEssSup_le_of_ae_nnnorm_bound /-
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
+-/
+#print MeasureTheory.snormEssSup_le_of_ae_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
+-/
+#print MeasureTheory.snormEssSup_lt_top_of_ae_nnnorm_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
+-/
+#print MeasureTheory.snormEssSup_lt_top_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
#align measure_theory.snorm_ess_sup_lt_top_of_ae_bound MeasureTheory.snormEssSup_lt_top_of_ae_bound
+-/
+#print MeasureTheory.snorm_le_of_ae_nnnorm_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
@@ -468,34 +573,46 @@ theorem snorm_le_of_ae_nnnorm_bound {f : α → F} {C : ℝ≥0} (hfC : ∀ᵐ x
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
+-/
+#print MeasureTheory.snorm_le_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 :=
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
+-/
+#print MeasureTheory.snorm_congr_nnnorm_ae /-
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
+-/
+#print MeasureTheory.snorm_congr_norm_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
+-/
+#print MeasureTheory.snorm'_norm /-
@[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
+-/
+#print 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
+-/
+#print MeasureTheory.snorm'_norm_rpow /-
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
@@ -509,7 +626,9 @@ theorem snorm'_norm_rpow (f : α → F) (p q : ℝ) (hq_pos : 0 < q) :
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
+-/
+#print 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
@@ -539,52 +658,72 @@ theorem snorm_norm_rpow (f : α → F) (hq_pos : 0 < q) :
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
+-/
+#print MeasureTheory.snorm_congr_ae /-
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
+-/
+#print MeasureTheory.memℒp_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
+-/
+#print MeasureTheory.Memℒp.ae_eq /-
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
+-/
+#print MeasureTheory.Memℒp.of_le /-
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
+#print 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'
+-/
+#print MeasureTheory.Memℒp.congr_norm /-
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
+-/
+#print 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
+-/
+#print MeasureTheory.memℒp_top_of_bound /-
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
+-/
+#print MeasureTheory.Memℒp.of_bound /-
theorem Memℒp.of_bound [IsFiniteMeasure μ] {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
+-/
+#print MeasureTheory.snorm'_mono_measure /-
@[mono]
theorem snorm'_mono_measure (f : α → F) (hμν : ν ≤ μ) (hq : 0 ≤ q) : snorm' f q ν ≤ snorm' f q μ :=
by
@@ -593,12 +732,16 @@ theorem snorm'_mono_measure (f : α → F) (hμν : ν ≤ μ) (hq : 0 ≤ 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
+-/
+#print MeasureTheory.snormEssSup_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
+-/
+#print MeasureTheory.snorm_mono_measure /-
@[mono]
theorem snorm_mono_measure (f : α → F) (hμν : ν ≤ μ) : snorm f p ν ≤ snorm f p μ :=
by
@@ -609,24 +752,33 @@ theorem snorm_mono_measure (f : α → F) (hμν : ν ≤ μ) : snorm f p ν ≤
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
+-/
+#print MeasureTheory.Memℒp.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
+-/
+#print MeasureTheory.Memℒp.restrict /-
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
+-/
+#print MeasureTheory.snorm'_smul_measure /-
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
+-/
+#print MeasureTheory.snormEssSup_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)
@@ -639,6 +791,7 @@ private theorem snorm_smul_measure_of_ne_zero_of_ne_top {p : ℝ≥0∞} (hp_ne_
simp_rw [one_div]
rw [ENNReal.toReal_inv]
+#print MeasureTheory.snorm_smul_measure_of_ne_zero /-
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
@@ -648,7 +801,9 @@ theorem snorm_smul_measure_of_ne_zero {p : ℝ≥0∞} {f : α → F} {c : ℝ
· 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
+-/
+#print MeasureTheory.snorm_smul_measure_of_ne_top /-
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
@@ -656,11 +811,15 @@ theorem snorm_smul_measure_of_ne_top {p : ℝ≥0∞} (hp_ne_top : p ≠ ∞) {f
· 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
+-/
+#print MeasureTheory.snorm_one_smul_measure /-
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
+-/
+#print MeasureTheory.Memℒp.of_measure_le_smul /-
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
@@ -672,30 +831,35 @@ theorem Memℒp.of_measure_le_smul {μ' : Measure α} (c : ℝ≥0∞) (hc : c
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
+-/
+#print MeasureTheory.Memℒp.smul_measure /-
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
-
+#print MeasureTheory.snorm_one_add_measure /-
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
+-/
+#print MeasureTheory.snorm_le_add_measure_right /-
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
+-/
+#print MeasureTheory.snorm_le_add_measure_left /-
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
+-/
#print MeasureTheory.Memℒp.left_of_add_measure /-
theorem Memℒp.left_of_add_measure {f : α → E} (h : Memℒp f p (μ + ν)) : Memℒp f p μ :=
@@ -715,19 +879,26 @@ theorem Memℒp.norm {f : α → E} (h : Memℒp f p μ) : Memℒp (fun x => ‖
#align measure_theory.mem_ℒp.norm MeasureTheory.Memℒp.norm
-/
+#print MeasureTheory.memℒp_norm_iff /-
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
+-/
+#print MeasureTheory.snorm'_eq_zero_of_ae_zero /-
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
+-/
+#print 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'
+-/
+#print MeasureTheory.ae_eq_zero_of_snorm'_eq_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
@@ -744,22 +915,30 @@ theorem ae_eq_zero_of_snorm'_eq_zero {f : α → E} (hq0 : 0 ≤ q) (hf : AEStro
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
+-/
+#print MeasureTheory.snorm'_eq_zero_iff /-
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
+-/
+#print MeasureTheory.coe_nnnorm_ae_le_snormEssSup /-
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
+-/
+#print MeasureTheory.snormEssSup_eq_zero_iff /-
@[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
+-/
+#print MeasureTheory.snorm_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 = ∞
@@ -767,7 +946,9 @@ theorem snorm_eq_zero_iff {f : α → E} (hf : AEStronglyMeasurable f μ) (h0 :
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
+-/
+#print MeasureTheory.snorm'_add_le /-
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
@@ -779,7 +960,9 @@ theorem snorm'_add_le {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AE
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
+-/
+#print MeasureTheory.snorm'_add_le_of_le_one /-
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
@@ -792,7 +975,9 @@ theorem snorm'_add_le_of_le_one {f g : α → E} (hf : AEStronglyMeasurable f μ
_ ≤ 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
+-/
+#print MeasureTheory.snormEssSup_add_le /-
theorem snormEssSup_add_le {f g : α → F} :
snormEssSup (f + g) μ ≤ snormEssSup f μ + snormEssSup g μ :=
by
@@ -800,7 +985,9 @@ theorem snormEssSup_add_le {f g : α → F} :
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
+-/
+#print MeasureTheory.snorm_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
@@ -813,6 +1000,7 @@ theorem snorm_add_le {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AES
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
+-/
#print MeasureTheory.LpAddConst /-
/-- A constant for the inequality `‖f + g‖_{L^p} ≤ C * (‖f‖_{L^p} + ‖g‖_{L^p})`. It is equal to `1`
@@ -822,12 +1010,14 @@ def LpAddConst (p : ℝ≥0∞) : ℝ≥0∞ :=
#align measure_theory.Lp_add_const MeasureTheory.LpAddConst
-/
+#print MeasureTheory.LpAddConst_of_one_le /-
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
+-/
#print MeasureTheory.LpAddConst_zero /-
theorem LpAddConst_zero : LpAddConst 0 = 1 :=
@@ -838,6 +1028,7 @@ theorem LpAddConst_zero : LpAddConst 0 = 1 :=
#align measure_theory.Lp_add_const_zero MeasureTheory.LpAddConst_zero
-/
+#print MeasureTheory.LpAddConst_lt_top /-
theorem LpAddConst_lt_top (p : ℝ≥0∞) : LpAddConst p < ∞ :=
by
rw [Lp_add_const]
@@ -848,7 +1039,9 @@ theorem LpAddConst_lt_top (p : ℝ≥0∞) : LpAddConst p < ∞ :=
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
+-/
+#print MeasureTheory.snorm_add_le' /-
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
@@ -863,9 +1056,11 @@ theorem snorm_add_le' {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AE
· 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)
+#print MeasureTheory.exists_Lp_half /-
/-- 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`.
@@ -889,9 +1084,11 @@ theorem exists_Lp_half (p : ℝ≥0∞) {δ : ℝ≥0∞} (hδ : δ ≠ 0) :
_ ≤ 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}
+#print MeasureTheory.snorm_sub_le' /-
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
@@ -908,12 +1105,16 @@ theorem snorm_sub_le' {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AE
(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'
+-/
+#print 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
+-/
+#print MeasureTheory.snorm_add_lt_top /-
theorem snorm_add_lt_top {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ) :
snorm (f + g) p μ < ∞ :=
calc
@@ -923,21 +1124,24 @@ theorem snorm_add_lt_top {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g
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
+-/
+#print MeasureTheory.ae_le_snormEssSup /-
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
+-/
+#print MeasureTheory.meas_snormEssSup_lt /-
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β
-
#print MeasureTheory.snormEssSup_map_measure /-
theorem snormEssSup_map_measure (hg : AEStronglyMeasurable g (Measure.map f μ))
(hf : AEMeasurable f μ) : snormEssSup g (Measure.map f μ) = snormEssSup (g ∘ f) μ :=
@@ -966,11 +1170,14 @@ theorem memℒp_map_measure_iff (hg : AEStronglyMeasurable g (Measure.map f μ))
#align measure_theory.mem_ℒp_map_measure_iff MeasureTheory.memℒp_map_measure_iff
-/
+#print MeasurableEmbedding.snormEssSup_map_measure /-
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
+-/
+#print MeasurableEmbedding.snorm_map_measure /-
theorem MeasurableEmbedding.snorm_map_measure {g : β → F} (hf : MeasurableEmbedding f) :
snorm g p (Measure.map f μ) = snorm (g ∘ f) p μ :=
by
@@ -982,23 +1189,27 @@ theorem MeasurableEmbedding.snorm_map_measure {g : β → F} (hf : MeasurableEmb
· simp_rw [snorm_eq_lintegral_rpow_nnnorm hp_zero hp]
rw [hf.lintegral_map]
#align measurable_embedding.snorm_map_measure MeasurableEmbedding.snorm_map_measure
+-/
+#print MeasurableEmbedding.memℒp_map_measure_iff /-
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
+-/
+#print MeasurableEquiv.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
+#print MeasureTheory.snorm'_trim /-
theorem snorm'_trim (hm : m ≤ m0) {f : α → E} (hf : strongly_measurable[m] f) :
snorm' f q (ν.trim hm) = snorm' f q ν :=
by
@@ -1009,7 +1220,9 @@ theorem snorm'_trim (hm : m ≤ m0) {f : α → E} (hf : strongly_measurable[m]
apply @strongly_measurable.measurable
exact @strongly_measurable.nnnorm α m _ _ _ hf
#align measure_theory.snorm'_trim MeasureTheory.snorm'_trim
+-/
+#print MeasureTheory.limsup_trim /-
theorem limsup_trim (hm : m ≤ m0) {f : α → ℝ≥0∞} (hf : measurable[m] f) :
(ν.trim hm).ae.limsup f = ν.ae.limsup f :=
by
@@ -1023,16 +1236,22 @@ theorem limsup_trim (hm : m ≤ m0) {f : α → ℝ≥0∞} (hf : measurable[m]
refine' @MeasurableSet.compl _ _ m (@measurableSet_le ℝ≥0∞ _ _ _ _ m _ _ _ _ _ hf _)
exact @measurable_const _ _ _ m _
#align measure_theory.limsup_trim MeasureTheory.limsup_trim
+-/
+#print MeasureTheory.essSup_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
+-/
+#print MeasureTheory.snormEssSup_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
+-/
+#print MeasureTheory.snorm_trim /-
theorem snorm_trim (hm : m ≤ m0) {f : α → E} (hf : strongly_measurable[m] f) :
snorm f p (ν.trim hm) = snorm f p ν :=
by
@@ -1042,25 +1261,33 @@ theorem snorm_trim (hm : m ≤ m0) {f : α → E} (hf : strongly_measurable[m] f
· 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
+-/
+#print MeasureTheory.snorm_trim_ae /-
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
+-/
+#print MeasureTheory.memℒp_of_memℒp_trim /-
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
+#print MeasureTheory.snorm'_neg /-
@[simp]
theorem snorm'_neg {f : α → F} : snorm' (-f) q μ = snorm' f q μ := by simp [snorm']
#align measure_theory.snorm'_neg MeasureTheory.snorm'_neg
+-/
+#print MeasureTheory.snorm_neg /-
@[simp]
theorem snorm_neg {f : α → F} : snorm (-f) p μ = snorm f p μ :=
by
@@ -1070,15 +1297,21 @@ theorem snorm_neg {f : α → F} : snorm (-f) p μ = snorm f p μ :=
· simp [h_top, snorm_ess_sup]
simp [snorm_eq_snorm' h0 h_top]
#align measure_theory.snorm_neg MeasureTheory.snorm_neg
+-/
+#print MeasureTheory.Memℒp.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
+-/
+#print MeasureTheory.memℒp_neg_iff /-
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
+-/
+#print MeasureTheory.snorm'_le_snorm'_mul_rpow_measure_univ /-
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
@@ -1102,7 +1335,9 @@ theorem snorm'_le_snorm'_mul_rpow_measure_univ {p q : ℝ} (hp0_lt : 0 < p) (hpq
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
+-/
+#print MeasureTheory.snorm'_le_snormEssSup_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
@@ -1117,7 +1352,9 @@ theorem snorm'_le_snormEssSup_mul_rpow_measure_univ (hq_pos : 0 < q) {f : α →
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
+-/
+#print MeasureTheory.snorm_le_snorm_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) :=
@@ -1145,7 +1382,9 @@ theorem snorm_le_snorm_mul_rpow_measure_univ {p q : ℝ≥0∞} (hpq : p ≤ q)
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
+-/
+#print MeasureTheory.snorm'_le_snorm'_of_exponent_le /-
theorem snorm'_le_snorm'_of_exponent_le {m : MeasurableSpace α} {p q : ℝ} (hp0_lt : 0 < p)
(hpq : p ≤ q) (μ : Measure α) [IsProbabilityMeasure μ] {f : α → E}
(hf : AEStronglyMeasurable f μ) : snorm' f p μ ≤ snorm' f q μ :=
@@ -1153,17 +1392,23 @@ theorem snorm'_le_snorm'_of_exponent_le {m : MeasurableSpace α} {p q : ℝ} (hp
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
+-/
+#print MeasureTheory.snorm'_le_snormEssSup /-
theorem snorm'_le_snormEssSup (hq_pos : 0 < q) {f : α → F} [IsProbabilityMeasure μ] :
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
+-/
+#print MeasureTheory.snorm_le_snorm_of_exponent_le /-
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 μ :=
(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
+-/
+#print MeasureTheory.snorm'_lt_top_of_snorm'_lt_top_of_exponent_le /-
theorem snorm'_lt_top_of_snorm'_lt_top_of_exponent_le {p q : ℝ} [IsFiniteMeasure μ] {f : α → E}
(hf : AEStronglyMeasurable f μ) (hfq_lt_top : snorm' f q μ < ∞) (hp_nonneg : 0 ≤ p)
(hpq : p ≤ q) : snorm' f p μ < ∞ :=
@@ -1180,9 +1425,11 @@ theorem snorm'_lt_top_of_snorm'_lt_top_of_exponent_le {p q : ℝ} [IsFiniteMeasu
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 (μ)
+#print MeasureTheory.pow_mul_meas_ge_le_snorm /-
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 μ :=
@@ -1192,7 +1439,9 @@ theorem pow_mul_meas_ge_le_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
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
+-/
+#print MeasureTheory.mul_meas_ge_le_pow_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 :=
@@ -1207,7 +1456,9 @@ theorem mul_meas_ge_le_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
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
+-/
+#print 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∞) :
@@ -1217,7 +1468,9 @@ theorem mul_meas_ge_le_pow_snorm' {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_t
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'
+-/
+#print MeasureTheory.meas_ge_le_mul_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 :=
@@ -1230,9 +1483,11 @@ theorem meas_ge_le_mul_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
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 {μ}
+#print MeasureTheory.Memℒp.memℒp_of_exponent_le /-
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
@@ -1262,9 +1517,11 @@ theorem Memℒp.memℒp_of_exponent_le {p q : ℝ≥0∞} [IsFiniteMeasure μ] {
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
+#print MeasureTheory.snorm'_sum_le /-
-- variable [has_measurable_add₂ E]
theorem snorm'_sum_le {ι} {f : ι → α → E} {s : Finset ι}
(hfs : ∀ i, i ∈ s → AEStronglyMeasurable (f i) μ) (hq1 : 1 ≤ q) :
@@ -1273,7 +1530,9 @@ theorem snorm'_sum_le {ι} {f : ι → α → E} {s : Finset ι}
(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
+-/
+#print 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 μ :=
@@ -1281,14 +1540,19 @@ theorem snorm_sum_le {ι} {f : ι → α → E} {s : Finset ι}
(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
+-/
+#print MeasureTheory.Memℒp.add /-
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
+-/
+#print MeasureTheory.Memℒp.sub /-
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
+-/
#print MeasureTheory.memℒp_finset_sum /-
theorem memℒp_finset_sum {ι} (s : Finset ι) {f : ι → α → E} (hf : ∀ i ∈ s, Memℒp (f i) p μ) :
@@ -1317,6 +1581,7 @@ end MeasurableAdd
section Monotonicity
+#print MeasureTheory.snorm'_le_nnreal_smul_snorm'_of_ae_le_mul /-
theorem snorm'_le_nnreal_smul_snorm'_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ≥0}
(h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) {p : ℝ} (hp : 0 < p) : snorm' f p μ ≤ c • snorm' g p μ :=
by
@@ -1330,7 +1595,9 @@ theorem snorm'_le_nnreal_smul_snorm'_of_ae_le_mul {f : α → F} {g : α → G}
simp_rw [ENNReal.coe_le_coe, ← NNReal.mul_rpow, NNReal.rpow_le_rpow_iff hp]
exact h
#align measure_theory.snorm'_le_nnreal_smul_snorm'_of_ae_le_mul MeasureTheory.snorm'_le_nnreal_smul_snorm'_of_ae_le_mul
+-/
+#print MeasureTheory.snormEssSup_le_nnreal_smul_snormEssSup_of_ae_le_mul /-
theorem snormEssSup_le_nnreal_smul_snormEssSup_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ≥0}
(h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) : snormEssSup f μ ≤ c • snormEssSup g μ :=
calc
@@ -1339,7 +1606,9 @@ theorem snormEssSup_le_nnreal_smul_snormEssSup_of_ae_le_mul {f : α → F} {g :
_ = essSup (fun x => (c * ‖g x‖₊ : ℝ≥0∞)) μ := by simp_rw [ENNReal.coe_mul]
_ = c • essSup (fun x => (‖g x‖₊ : ℝ≥0∞)) μ := ENNReal.essSup_const_mul
#align measure_theory.snorm_ess_sup_le_nnreal_smul_snorm_ess_sup_of_ae_le_mul MeasureTheory.snormEssSup_le_nnreal_smul_snormEssSup_of_ae_le_mul
+-/
+#print MeasureTheory.snorm_le_nnreal_smul_snorm_of_ae_le_mul /-
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
@@ -1351,6 +1620,7 @@ theorem snorm_le_nnreal_smul_snorm_of_ae_le_mul {f : α → F} {g : α → G} {c
simp_rw [snorm_eq_snorm' h0 h_top]
exact snorm'_le_nnreal_smul_snorm'_of_ae_le_mul h (ENNReal.toReal_pos h0 h_top)
#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 α]
@@ -1364,6 +1634,7 @@ private theorem le_mul_iff_eq_zero_of_nonneg_of_neg_of_nonneg {α} [LinearOrdere
· rintro ⟨rfl, rfl⟩
rw [MulZeroClass.mul_zero]
+#print MeasureTheory.snorm_eq_zero_and_zero_of_ae_le_mul_neg /-
/-- 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 : ℝ}
@@ -1374,27 +1645,35 @@ theorem snorm_eq_zero_and_zero_of_ae_le_mul_neg {f : α → F} {g : α → G} {c
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
+-/
+#print MeasureTheory.snorm_le_mul_snorm_of_ae_le_mul /-
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
+-/
+#print MeasureTheory.Memℒp.of_nnnorm_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
+-/
+#print MeasureTheory.Memℒp.of_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
+-/
+#print MeasureTheory.snorm'_le_snorm'_mul_snorm' /-
theorem snorm'_le_snorm'_mul_snorm' {p q r : ℝ} {f : α → E} (hf : AEStronglyMeasurable f μ)
{g : α → F} (hg : AEStronglyMeasurable g μ) (b : E → F → G)
(h : ∀ᵐ x ∂μ, ‖b (f x) (g x)‖₊ ≤ ‖f x‖₊ * ‖g x‖₊) (hp0_lt : 0 < p) (hpq : p < q)
@@ -1412,7 +1691,9 @@ theorem snorm'_le_snorm'_mul_snorm' {p q r : ℝ} {f : α → E} (hf : AEStrongl
simp_rw [snorm', ENNReal.coe_mul]
exact ENNReal.lintegral_Lp_mul_le_Lq_mul_Lr hp0_lt hpq hpqr μ hf.ennnorm hg.ennnorm
#align measure_theory.snorm'_le_snorm'_mul_snorm' MeasureTheory.snorm'_le_snorm'_mul_snorm'
+-/
+#print MeasureTheory.snorm_le_snorm_top_mul_snorm /-
theorem snorm_le_snorm_top_mul_snorm (p : ℝ≥0∞) (f : α → E) {g : α → F}
(hg : AEStronglyMeasurable g μ) (b : E → F → G)
(h : ∀ᵐ x ∂μ, ‖b (f x) (g x)‖₊ ≤ ‖f x‖₊ * ‖g x‖₊) :
@@ -1455,7 +1736,9 @@ theorem snorm_le_snorm_top_mul_snorm (p : ℝ≥0∞) (f : α → E) {g : α →
rw [Ne.def, ENNReal.toReal_eq_zero_iff, Auto.not_or_eq]
exact ⟨hp_zero, hp_top⟩
#align measure_theory.snorm_le_snorm_top_mul_snorm MeasureTheory.snorm_le_snorm_top_mul_snorm
+-/
+#print MeasureTheory.snorm_le_snorm_mul_snorm_top /-
theorem snorm_le_snorm_mul_snorm_top (p : ℝ≥0∞) {f : α → E} (hf : AEStronglyMeasurable f μ)
(g : α → F) (b : E → F → G) (h : ∀ᵐ x ∂μ, ‖b (f x) (g x)‖₊ ≤ ‖f x‖₊ * ‖g x‖₊) :
snorm (fun x => b (f x) (g x)) p μ ≤ snorm f p μ * snorm g ∞ μ :=
@@ -1467,7 +1750,9 @@ theorem snorm_le_snorm_mul_snorm_top (p : ℝ≥0∞) {f : α → E} (hf : AEStr
refine' snorm_le_snorm_top_mul_snorm p (fun x => ‖g x‖) hf.norm _ (h.mono fun x hx => _)
simp_rw [nnnorm_mul]
#align measure_theory.snorm_le_snorm_mul_snorm_top MeasureTheory.snorm_le_snorm_mul_snorm_top
+-/
+#print MeasureTheory.snorm_le_snorm_mul_snorm_of_nnnorm /-
/-- Hölder's inequality, as an inequality on the `ℒp` seminorm of an elementwise operation
`λ x, b (f x) (g x)`. -/
theorem snorm_le_snorm_mul_snorm_of_nnnorm {p q r : ℝ≥0∞} {f : α → E}
@@ -1512,7 +1797,9 @@ theorem snorm_le_snorm_mul_snorm_of_nnnorm {p q r : ℝ≥0∞} {f : α → E}
· 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_le_snorm_mul_snorm_of_nnnorm MeasureTheory.snorm_le_snorm_mul_snorm_of_nnnorm
+-/
+#print MeasureTheory.snorm_le_snorm_mul_snorm'_of_norm /-
/-- Hölder's inequality, as an inequality on the `ℒp` seminorm of an elementwise operation
`λ x, b (f x) (g x)`. -/
theorem snorm_le_snorm_mul_snorm'_of_norm {p q r : ℝ≥0∞} {f : α → E} (hf : AEStronglyMeasurable f μ)
@@ -1521,6 +1808,7 @@ theorem snorm_le_snorm_mul_snorm'_of_norm {p q r : ℝ≥0∞} {f : α → E} (h
snorm (fun x => b (f x) (g x)) p μ ≤ snorm f q μ * snorm g r μ :=
snorm_le_snorm_mul_snorm_of_nnnorm hf hg b h hpqr
#align measure_theory.snorm_le_snorm_mul_snorm'_of_norm MeasureTheory.snorm_le_snorm_mul_snorm'_of_norm
+-/
end Monotonicity
@@ -1537,51 +1825,68 @@ variable {𝕜 : Type _} [NormedRing 𝕜] [MulActionWithZero 𝕜 E] [MulAction
variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜 F]
+#print MeasureTheory.snorm'_const_smul_le /-
theorem snorm'_const_smul_le (c : 𝕜) (f : α → F) (hq_pos : 0 < q) :
snorm' (c • f) q μ ≤ ‖c‖₊ • snorm' f q μ :=
snorm'_le_nnreal_smul_snorm'_of_ae_le_mul (eventually_of_forall fun a => nnnorm_smul_le _ _)
hq_pos
#align measure_theory.snorm'_const_smul_le MeasureTheory.snorm'_const_smul_le
+-/
+#print MeasureTheory.snormEssSup_const_smul_le /-
theorem snormEssSup_const_smul_le (c : 𝕜) (f : α → F) :
snormEssSup (c • f) μ ≤ ‖c‖₊ • snormEssSup f μ :=
snormEssSup_le_nnreal_smul_snormEssSup_of_ae_le_mul
(eventually_of_forall fun a => nnnorm_smul_le _ _)
#align measure_theory.snorm_ess_sup_const_smul_le MeasureTheory.snormEssSup_const_smul_le
+-/
+#print MeasureTheory.snorm_const_smul_le /-
theorem snorm_const_smul_le (c : 𝕜) (f : α → F) : snorm (c • f) p μ ≤ ‖c‖₊ • snorm f p μ :=
snorm_le_nnreal_smul_snorm_of_ae_le_mul (eventually_of_forall fun a => nnnorm_smul_le _ _) _
#align measure_theory.snorm_const_smul_le MeasureTheory.snorm_const_smul_le
+-/
+#print MeasureTheory.Memℒp.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_le c f).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
+-/
+#print MeasureTheory.Memℒp.const_mul /-
theorem Memℒp.const_mul {R} [NormedRing R] {f : α → R} (hf : Memℒp f p μ) (c : R) :
Memℒp (fun x => c * f x) p μ :=
hf.const_smul c
#align measure_theory.mem_ℒp.const_mul MeasureTheory.Memℒp.const_mul
+-/
+#print MeasureTheory.snorm'_smul_le_mul_snorm' /-
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 μ :=
snorm'_le_snorm'_mul_snorm' hφ hf (· • ·) (eventually_of_forall fun a => nnnorm_smul_le _ _)
hp0_lt hpq hpqr
#align measure_theory.snorm'_smul_le_mul_snorm' MeasureTheory.snorm'_smul_le_mul_snorm'
+-/
+#print MeasureTheory.snorm_smul_le_snorm_top_mul_snorm /-
theorem snorm_smul_le_snorm_top_mul_snorm (p : ℝ≥0∞) {f : α → E} (hf : AEStronglyMeasurable f μ)
(φ : α → 𝕜) : snorm (φ • f) p μ ≤ snorm φ ∞ μ * snorm f p μ :=
(snorm_le_snorm_top_mul_snorm p φ hf (· • ·) (eventually_of_forall fun a => nnnorm_smul_le _ _) :
_)
#align measure_theory.snorm_smul_le_snorm_top_mul_snorm MeasureTheory.snorm_smul_le_snorm_top_mul_snorm
+-/
+#print MeasureTheory.snorm_smul_le_snorm_mul_snorm_top /-
theorem snorm_smul_le_snorm_mul_snorm_top (p : ℝ≥0∞) (f : α → E) {φ : α → 𝕜}
(hφ : AEStronglyMeasurable φ μ) : snorm (φ • f) p μ ≤ snorm φ p μ * snorm f ∞ μ :=
(snorm_le_snorm_mul_snorm_top p hφ f (· • ·) (eventually_of_forall fun a => nnnorm_smul_le _ _) :
_)
#align measure_theory.snorm_smul_le_snorm_mul_snorm_top MeasureTheory.snorm_smul_le_snorm_mul_snorm_top
+-/
+#print MeasureTheory.snorm_smul_le_mul_snorm /-
/-- 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) :
@@ -1590,23 +1895,30 @@ theorem snorm_smul_le_mul_snorm {p q r : ℝ≥0∞} {f : α → E} (hf : AEStro
(eventually_of_forall fun a => nnnorm_smul_le _ _) hpqr :
_)
#align measure_theory.snorm_smul_le_mul_snorm MeasureTheory.snorm_smul_le_mul_snorm
+-/
+#print MeasureTheory.Memℒp.smul /-
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
+-/
+#print MeasureTheory.Memℒp.smul_of_top_right /-
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
+-/
+#print MeasureTheory.Memℒp.smul_of_top_left /-
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 BoundedSMul
@@ -1623,6 +1935,7 @@ variable {𝕜 : Type _} [NormedDivisionRing 𝕜] [MulActionWithZero 𝕜 E] [M
variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜 F]
+#print MeasureTheory.snorm'_const_smul /-
theorem snorm'_const_smul {f : α → F} (c : 𝕜) (hq_pos : 0 < q) :
snorm' (c • f) q μ = ‖c‖₊ • snorm' f q μ :=
by
@@ -1632,12 +1945,16 @@ theorem snorm'_const_smul {f : α → F} (c : 𝕜) (hq_pos : 0 < q) :
have : snorm' _ q μ ≤ _ := snorm'_const_smul_le c⁻¹ (c • f) hq_pos
rwa [inv_smul_smul₀ hc, nnnorm_inv, ENNReal.le_inv_smul_iff (nnnorm_ne_zero_iff.mpr hc)] at this
#align measure_theory.snorm'_const_smul MeasureTheory.snorm'_const_smul
+-/
+#print MeasureTheory.snormEssSup_const_smul /-
theorem snormEssSup_const_smul (c : 𝕜) (f : α → F) :
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
+-/
+#print MeasureTheory.snorm_const_smul /-
theorem snorm_const_smul (c : 𝕜) (f : α → F) : snorm (c • f) p μ = (‖c‖₊ : ℝ≥0∞) * snorm f p μ :=
by
obtain rfl | hc := eq_or_ne c 0
@@ -1646,9 +1963,11 @@ theorem snorm_const_smul (c : 𝕜) (f : α → F) : snorm (c • f) p μ = (‖
have : snorm _ p μ ≤ _ := snorm_const_smul_le c⁻¹ (c • f)
rwa [inv_smul_smul₀ hc, nnnorm_inv, ENNReal.le_inv_smul_iff (nnnorm_ne_zero_iff.mpr hc)] at this
#align measure_theory.snorm_const_smul MeasureTheory.snorm_const_smul
+-/
end NormedSpace
+#print MeasureTheory.snorm_indicator_ge_of_bdd_below /-
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 μ :=
@@ -1666,11 +1985,13 @@ theorem snorm_indicator_ge_of_bdd_below (hp : p ≠ 0) (hp' : p ≠ ∞) {f : α
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 : α → 𝕜}
+#print MeasureTheory.Memℒp.re /-
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];
@@ -1678,7 +1999,9 @@ theorem Memℒp.re (hf : Memℒp f p μ) : Memℒp (fun x => IsROrC.re (f x)) p
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
+-/
+#print MeasureTheory.Memℒp.im /-
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];
@@ -1686,6 +2009,7 @@ theorem Memℒp.im (hf : Memℒp f p μ) : Memℒp (fun x => IsROrC.im (f x)) p
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
@@ -1693,6 +2017,7 @@ section Liminf
variable [MeasurableSpace E] [OpensMeasurableSpace E] {R : ℝ≥0}
+#print MeasureTheory.ae_bdd_liminf_atTop_rpow_of_snorm_bdd /-
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 < ∞ :=
@@ -1717,8 +2042,10 @@ theorem ae_bdd_liminf_atTop_rpow_of_snorm_bdd {p : ℝ≥0∞} {f : ℕ → α
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 -/
+#print MeasureTheory.ae_bdd_liminf_atTop_of_snorm_bdd /-
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 < ∞ :=
@@ -1750,6 +2077,7 @@ theorem ae_bdd_liminf_atTop_of_snorm_bdd {p : ℝ≥0∞} (hp : p ≠ 0) {f :
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
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -130,7 +130,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 :=
+ ∫⁻ 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
@@ -149,14 +149,14 @@ theorem Memℒp.snorm_ne_top {f : α → E} (hfp : Memℒp f p μ) : snorm f p
#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 ∂μ) < ∞ :=
+ (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 ∂μ) < ∞ :=
+ (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
@@ -164,7 +164,7 @@ theorem lintegral_rpow_nnnorm_lt_top_of_snorm_lt_top {f : α → F} (hp_ne_zero
#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 ∂μ) < ∞ :=
+ (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
@@ -589,7 +589,7 @@ theorem Memℒp.of_bound [IsFiniteMeasure μ] {f : α → E} (hf : AEStronglyMea
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 ∂μ
+ 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
@@ -1088,8 +1088,7 @@ theorem snorm'_le_snorm'_mul_rpow_measure_univ {p q : ℝ} (hp0_lt : 0 < p) (hpq
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
+ 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)
@@ -1107,7 +1106,7 @@ theorem snorm'_le_snorm'_mul_rpow_measure_univ {p q : ℝ} (hp0_lt : 0 < p) (hpq
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 ∂μ :=
+ 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 μ
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -778,7 +778,6 @@ theorem snorm'_add_le {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AE
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)
@@ -792,7 +791,6 @@ theorem snorm'_add_le_of_le_one {f g : α → E} (hf : AEStronglyMeasurable f μ
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} :
@@ -890,7 +888,6 @@ theorem exists_Lp_half (p : ℝ≥0∞) {δ : ℝ≥0∞} (hδ : δ ≠ 0) :
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}
@@ -910,7 +907,6 @@ theorem snorm_sub_le' {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AE
_ ≤ 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 μ)
@@ -926,7 +922,6 @@ theorem snorm_add_lt_top {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g
_ < ∞ := 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 μ :=
@@ -1107,7 +1102,6 @@ theorem snorm'_le_snorm'_mul_rpow_measure_univ {p q : ℝ} (hp0_lt : 0 < p) (hpq
(∫⁻ 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} :
@@ -1186,7 +1180,6 @@ theorem snorm'_lt_top_of_snorm'_lt_top_of_exponent_le {p q : ℝ} [IsFiniteMeasu
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 (μ)
@@ -1346,7 +1339,6 @@ theorem snormEssSup_le_nnreal_smul_snormEssSup_of_ae_le_mul {f : α → F} {g :
essSup_mono_ae <| h.mono fun x hx => ENNReal.coe_le_coe.mpr hx
_ = essSup (fun x => (c * ‖g x‖₊ : ℝ≥0∞)) μ := by simp_rw [ENNReal.coe_mul]
_ = c • essSup (fun x => (‖g x‖₊ : ℝ≥0∞)) μ := ENNReal.essSup_const_mul
-
#align measure_theory.snorm_ess_sup_le_nnreal_smul_snorm_ess_sup_of_ae_le_mul MeasureTheory.snormEssSup_le_nnreal_smul_snormEssSup_of_ae_le_mul
theorem snorm_le_nnreal_smul_snorm_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ≥0}
@@ -1418,7 +1410,6 @@ theorem snorm'_le_snorm'_mul_snorm' {p q r : ℝ} {f : α → E} (hf : AEStrongl
lintegral_mono_ae <|
h.mono fun a ha => (ENNReal.rpow_le_rpow_iff hp0_lt).mpr <| ennreal.coe_le_coe.mpr <| ha
_ ≤ _ := _
-
simp_rw [snorm', ENNReal.coe_mul]
exact ENNReal.lintegral_Lp_mul_le_Lq_mul_Lr hp0_lt hpq hpqr μ hf.ennnorm hg.ennnorm
#align measure_theory.snorm'_le_snorm'_mul_snorm' MeasureTheory.snorm'_le_snorm'_mul_snorm'
@@ -1464,7 +1455,6 @@ theorem snorm_le_snorm_top_mul_snorm (p : ℝ≥0∞) (f : α → E) {g : α →
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_le_snorm_top_mul_snorm MeasureTheory.snorm_le_snorm_top_mul_snorm
theorem snorm_le_snorm_mul_snorm_top (p : ℝ≥0∞) {f : α → E} (hf : AEStronglyMeasurable f μ)
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -276,7 +276,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' [FiniteMeasure μ] (c : F) (hc_ne_zero : c ≠ 0) (hq_ne_zero : q ≠ 0) :
+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)]
@@ -295,9 +295,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_probabilityMeasure (c : F) (hq_pos : 0 < q) [ProbabilityMeasure μ] :
+theorem snorm'_const_of_isProbabilityMeasure (c : F) (hq_pos : 0 < q) [IsProbabilityMeasure μ] :
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
+#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) :=
@@ -333,7 +333,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) [FiniteMeasure μ] : 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
@@ -580,7 +580,7 @@ theorem memℒp_top_of_bound {f : α → E} (hf : AEStronglyMeasurable f μ) (C
⟨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 [IsFiniteMeasure μ] {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
@@ -933,7 +933,7 @@ theorem ae_le_snormEssSup {f : α → F} : ∀ᵐ y ∂μ, ↑‖f y‖₊ ≤ s
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 :=
+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
@@ -1019,10 +1019,10 @@ theorem limsup_trim (hm : m ≤ m0) {f : α → ℝ≥0∞} (hf : measurable[m]
(ν.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 }
+ 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 }
+ 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 _)
@@ -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 α) [ProbabilityMeasure μ] {f : α → E}
+ (hpq : p ≤ q) (μ : Measure α) [IsProbabilityMeasure μ] {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 μ] :
+theorem snorm'_le_snormEssSup (hq_pos : 0 < q) {f : α → F} [IsProbabilityMeasure μ] :
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 μ :=
+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 μ :=
(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}
+theorem snorm'_lt_top_of_snorm'_lt_top_of_exponent_le {p q : ℝ} [IsFiniteMeasure μ] {f : α → E}
(hf : AEStronglyMeasurable f μ) (hfq_lt_top : snorm' f q μ < ∞) (hp_nonneg : 0 ≤ p)
(hpq : p ≤ q) : snorm' f p μ < ∞ :=
by
@@ -1193,7 +1193,7 @@ 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 μ :=
+ (ε * μ {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
@@ -1203,14 +1203,14 @@ theorem pow_mul_meas_ge_le_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
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 :=
+ ε * μ {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]
+ 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
@@ -1219,7 +1219,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∞) :
- ε ^ p.toReal * μ { x | ε ≤ ‖f x‖₊ } ≤ snorm f p μ ^ p.toReal :=
+ ε ^ 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
@@ -1228,7 +1228,7 @@ theorem mul_meas_ge_le_pow_snorm' {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_t
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 :=
+ μ {x | ε ≤ ‖f x‖₊} ≤ ε⁻¹ ^ p.toReal * snorm f p μ ^ p.toReal :=
by
by_cases ε = ∞
· simp [h]
@@ -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∞} [FiniteMeasure μ] {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
@@ -1453,7 +1453,7 @@ theorem snorm_le_snorm_top_mul_snorm (p : ℝ≥0∞) (f : α → E) {g : α →
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 => ↑‖f x‖₊]with x hx
+ filter_upwards [@ENNReal.ae_le_essSup _ _ μ fun x => ↑‖f x‖₊] with x hx
exact mul_le_mul_right' (ENNReal.rpow_le_rpow hx ENNReal.toReal_nonneg) _
_ = essSup (fun x => ↑‖f x‖₊) μ * (∫⁻ x, ↑‖g x‖₊ ^ p.to_real ∂μ) ^ (1 / p.to_real) :=
by
@@ -1670,7 +1670,7 @@ theorem snorm_indicator_ge_of_bdd_below (hp : p ≠ 0) (hp' : p ≠ ∞) {f : α
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
+ 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 ⊢
@@ -1741,10 +1741,10 @@ theorem ae_bdd_liminf_atTop_of_snorm_bdd {p : ℝ≥0∞} (hp : p ≠ 0) {f :
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)
+ 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
+ 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 =
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -217,7 +217,7 @@ theorem snorm_zero : snorm (0 : α → F) 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
+ 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
@@ -258,7 +258,7 @@ theorem snorm_measure_zero {f : α → F} : snorm f p (0 : Measure α) = 0 :=
· simp [h0]
by_cases h_top : p = ∞
· simp [h_top]
- rw [← Ne.def] at h0
+ 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
@@ -731,17 +731,17 @@ 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
+ · 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
+ 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
+ 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
@@ -883,7 +883,7 @@ theorem exists_Lp_half (p : ℝ≥0∞) {δ : ℝ≥0∞} (hδ : δ ≠ 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
+ 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
@@ -1122,7 +1122,7 @@ theorem snorm'_le_snormEssSup_mul_rpow_measure_univ (hq_pos : 0 < q) {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
+ 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}
@@ -1131,7 +1131,7 @@ theorem snorm_le_snorm_mul_rpow_measure_univ {p q : ℝ≥0∞} (hpq : p ≤ q)
by
by_cases hp0 : p = 0
· simp [hp0, zero_le]
- rw [← Ne.def] at hp0
+ 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 = ∞
@@ -1158,7 +1158,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} [ProbabilityMeasure μ] :
@@ -1247,27 +1247,27 @@ theorem Memℒp.memℒp_of_exponent_le {p q : ℝ≥0∞} [FiniteMeasure μ] {f
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
+ 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
+ · have hq_top : q = ∞ := by rwa [hp_top, top_le_iff] at hpq
rw [hp_top]
- rwa [hq_top] at hfq_lt_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
+ 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
+ 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
+ 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
@@ -1379,8 +1379,8 @@ 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
+ 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
@@ -1490,11 +1490,11 @@ theorem snorm_le_snorm_mul_snorm_of_nnnorm {p q r : ℝ≥0∞} {f : α → E}
· 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
+ 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
+ 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
@@ -1508,7 +1508,7 @@ theorem snorm_le_snorm_mul_snorm_of_nnnorm {p q r : ℝ≥0∞} {f : α → E}
exact snorm_le_snorm_mul_snorm_top p hf g b 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]
@@ -1641,7 +1641,7 @@ theorem snorm'_const_smul {f : α → F} (c : 𝕜) (hq_pos : 0 < q) :
· simp [snorm', hq_pos]
refine' le_antisymm (snorm'_const_smul_le _ _ hq_pos) _
have : snorm' _ q μ ≤ _ := snorm'_const_smul_le c⁻¹ (c • f) hq_pos
- rwa [inv_smul_smul₀ hc, nnnorm_inv, ENNReal.le_inv_smul_iff (nnnorm_ne_zero_iff.mpr hc)] at this
+ rwa [inv_smul_smul₀ hc, nnnorm_inv, ENNReal.le_inv_smul_iff (nnnorm_ne_zero_iff.mpr hc)] at this
#align measure_theory.snorm'_const_smul MeasureTheory.snorm'_const_smul
theorem snormEssSup_const_smul (c : 𝕜) (f : α → F) :
@@ -1655,7 +1655,7 @@ theorem snorm_const_smul (c : 𝕜) (f : α → F) : snorm (c • f) p μ = (‖
· simp
refine' le_antisymm (snorm_const_smul_le _ _) _
have : snorm _ p μ ≤ _ := snorm_const_smul_le c⁻¹ (c • f)
- rwa [inv_smul_smul₀ hc, nnnorm_inv, ENNReal.le_inv_smul_iff (nnnorm_ne_zero_iff.mpr hc)] at this
+ rwa [inv_smul_smul₀ hc, nnnorm_inv, ENNReal.le_inv_smul_iff (nnnorm_ne_zero_iff.mpr hc)] at this
#align measure_theory.snorm_const_smul MeasureTheory.snorm_const_smul
end NormedSpace
@@ -1673,7 +1673,7 @@ theorem snorm_indicator_ge_of_bdd_below (hp : p ≠ 0) (hp' : p ≠ ∞) {f : α
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⊢
+ · 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
@@ -1712,7 +1712,7 @@ theorem ae_bdd_liminf_atTop_rpow_of_snorm_bdd {p : ℝ≥0∞} {f : ℕ → α
· 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'
@@ -1722,7 +1722,7 @@ theorem ae_bdd_liminf_atTop_rpow_of_snorm_bdd {p : ℝ≥0∞} {f : ℕ → α
(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 [snorm_eq_lintegral_rpow_nnnorm hp hp'] at hbdd
simp_rw [liminf_eq, eventually_at_top]
exact
sSup_le fun b ⟨a, ha⟩ =>
@@ -1736,11 +1736,11 @@ theorem ae_bdd_liminf_atTop_of_snorm_bdd {p : ℝ≥0∞} (hp : p ≠ 0) {f :
by
by_cases hp' : p = ∞
· subst hp'
- simp_rw [snorm_exponent_top] at hbdd
+ 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
+ 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⟩)
@@ -1756,7 +1756,7 @@ theorem ae_bdd_liminf_atTop_of_snorm_bdd {p : ℝ≥0∞} (hp : p ≠ 0) {f :
refine' (OrderIso.liminf_apply (ENNReal.orderIsoRpow p.to_real _) _ _ _ _).symm <;>
run_tac
is_bounded_default
- rw [this] at hx
+ 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
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_seminorm
-! 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.
-/
@@ -17,6 +17,9 @@ import Mathbin.MeasureTheory.Integral.MeanInequalities
/-!
# ℒp space
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file describes properties of almost everywhere strongly measurable functions with finite
`p`-seminorm, denoted by `snorm f p μ` and defined for `p:ℝ≥0∞` as `0` if `p=0`,
`(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `0 < p < ∞` and `ess_sup ‖f‖ μ` for `p=∞`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -69,22 +69,28 @@ deduce it for `snorm`, and translate it in terms of `mem_ℒp`.
section ℒpSpaceDefinition
+#print MeasureTheory.snorm' /-
/-- `(∫ ‖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'
+-/
+#print MeasureTheory.snormEssSup /-
/-- 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
+-/
+#print MeasureTheory.snorm /-
/-- `ℒ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]
@@ -104,17 +110,21 @@ theorem snorm_one_eq_lintegral_nnnorm {f : α → F} : snorm f 1 μ = ∫⁻ x,
theorem snorm_exponent_top {f : α → F} : snorm f ∞ μ = snormEssSup f μ := by simp [snorm]
#align measure_theory.snorm_exponent_top MeasureTheory.snorm_exponent_top
+#print MeasureTheory.Memℒp /-
/-- 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 μ) :
+#print MeasureTheory.Memℒp.aestronglyMeasurable /-
+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 :=
@@ -174,9 +184,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]
@@ -684,17 +694,23 @@ theorem snorm_le_add_measure_left (f : α → F) (μ ν : Measure α) {p : ℝ
omit m
+#print MeasureTheory.Memℒp.left_of_add_measure /-
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
+-/
+#print MeasureTheory.Memℒp.right_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
+-/
+#print MeasureTheory.Memℒp.norm /-
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 μ :=
@@ -797,27 +813,31 @@ 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
+#print MeasureTheory.LpAddConst /-
/-- 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∞ :=
+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
+#align measure_theory.Lp_add_const MeasureTheory.LpAddConst
+-/
-theorem lpAddConst_of_one_le {p : ℝ≥0∞} (hp : 1 ≤ p) : lpAddConst p = 1 :=
+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
+#align measure_theory.Lp_add_const_of_one_le MeasureTheory.LpAddConst_of_one_le
-theorem lpAddConst_zero : lpAddConst 0 = 1 :=
+#print MeasureTheory.LpAddConst_zero /-
+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
+#align measure_theory.Lp_add_const_zero MeasureTheory.LpAddConst_zero
+-/
-theorem lpAddConst_lt_top (p : ℝ≥0∞) : lpAddConst p < ∞ :=
+theorem LpAddConst_lt_top (p : ℝ≥0∞) : LpAddConst p < ∞ :=
by
rw [Lp_add_const]
split_ifs
@@ -826,10 +846,10 @@ theorem lpAddConst_lt_top (p : ℝ≥0∞) : lpAddConst p < ∞ :=
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
+#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 μ) :=
+ (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]
@@ -873,7 +893,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 μ)
- (p : ℝ≥0∞) : snorm (f - g) p μ ≤ lpAddConst p * (snorm f p μ + snorm g p μ) :=
+ (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
@@ -884,9 +904,9 @@ theorem snorm_sub_le' {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AE
_ ≤ 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 μ) :=
+ _ ≤ 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]
+ _ = 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'
@@ -898,7 +918,7 @@ theorem snorm_sub_le {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AES
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 (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
@@ -920,11 +940,14 @@ variable {β : Type _} {mβ : MeasurableSpace β} {f : α → β} {g : β → E}
include mβ
+#print MeasureTheory.snormEssSup_map_measure /-
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
+-/
+#print MeasureTheory.snorm_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
@@ -936,11 +959,14 @@ theorem snorm_map_measure (hg : AEStronglyMeasurable g (Measure.map f μ)) (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
+-/
+#print MeasureTheory.memℒp_map_measure_iff /-
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) μ :=
@@ -1269,6 +1295,7 @@ theorem Memℒp.sub {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp g p μ)
rw [sub_eq_add_neg]; exact hf.add hg.neg
#align measure_theory.mem_ℒp.sub MeasureTheory.Memℒp.sub
+#print MeasureTheory.memℒp_finset_sum /-
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
@@ -1280,19 +1307,22 @@ theorem memℒp_finset_sum {ι} (s : Finset ι) {f : ι → α → E} (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
+-/
+#print 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 Monotonicity
-theorem snorm'_le_nNReal_smul_snorm'_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ≥0}
+theorem snorm'_le_nnreal_smul_snorm'_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ≥0}
(h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) {p : ℝ} (hp : 0 < p) : snorm' f p μ ≤ c • snorm' g p μ :=
by
simp_rw [snorm']
@@ -1304,9 +1334,9 @@ theorem snorm'_le_nNReal_smul_snorm'_of_ae_le_mul {f : α → F} {g : α → G}
apply lintegral_mono_ae
simp_rw [ENNReal.coe_le_coe, ← NNReal.mul_rpow, NNReal.rpow_le_rpow_iff hp]
exact h
-#align measure_theory.snorm'_le_nnreal_smul_snorm'_of_ae_le_mul MeasureTheory.snorm'_le_nNReal_smul_snorm'_of_ae_le_mul
+#align measure_theory.snorm'_le_nnreal_smul_snorm'_of_ae_le_mul MeasureTheory.snorm'_le_nnreal_smul_snorm'_of_ae_le_mul
-theorem snormEssSup_le_nNReal_smul_snormEssSup_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ≥0}
+theorem snormEssSup_le_nnreal_smul_snormEssSup_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ≥0}
(h : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ c * ‖g x‖₊) : snormEssSup f μ ≤ c • snormEssSup g μ :=
calc
essSup (fun x => (‖f x‖₊ : ℝ≥0∞)) μ ≤ essSup (fun x => (↑(c * ‖g x‖₊) : ℝ≥0∞)) μ :=
@@ -1314,9 +1344,9 @@ theorem snormEssSup_le_nNReal_smul_snormEssSup_of_ae_le_mul {f : α → F} {g :
_ = essSup (fun x => (c * ‖g x‖₊ : ℝ≥0∞)) μ := by simp_rw [ENNReal.coe_mul]
_ = c • essSup (fun x => (‖g x‖₊ : ℝ≥0∞)) μ := ENNReal.essSup_const_mul
-#align measure_theory.snorm_ess_sup_le_nnreal_smul_snorm_ess_sup_of_ae_le_mul MeasureTheory.snormEssSup_le_nNReal_smul_snormEssSup_of_ae_le_mul
+#align measure_theory.snorm_ess_sup_le_nnreal_smul_snorm_ess_sup_of_ae_le_mul MeasureTheory.snormEssSup_le_nnreal_smul_snormEssSup_of_ae_le_mul
-theorem snorm_le_nNReal_smul_snorm_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ≥0}
+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
by_cases h0 : p = 0
@@ -1326,7 +1356,7 @@ theorem snorm_le_nNReal_smul_snorm_of_ae_le_mul {f : α → F} {g : α → G} {c
exact snorm_ess_sup_le_nnreal_smul_snorm_ess_sup_of_ae_le_mul h
simp_rw [snorm_eq_snorm' h0 h_top]
exact snorm'_le_nnreal_smul_snorm'_of_ae_le_mul h (ENNReal.toReal_pos h0 h_top)
-#align measure_theory.snorm_le_nnreal_smul_snorm_of_ae_le_mul MeasureTheory.snorm_le_nNReal_smul_snorm_of_ae_le_mul
+#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 α]
@@ -1353,14 +1383,14 @@ theorem snorm_eq_zero_and_zero_of_ae_le_mul_neg {f : α → F} {g : α → G} {c
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
+ 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 <|
+ (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
@@ -1517,18 +1547,18 @@ variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜 F]
theorem snorm'_const_smul_le (c : 𝕜) (f : α → F) (hq_pos : 0 < q) :
snorm' (c • f) q μ ≤ ‖c‖₊ • snorm' f q μ :=
- snorm'_le_nNReal_smul_snorm'_of_ae_le_mul (eventually_of_forall fun a => nnnorm_smul_le _ _)
+ snorm'_le_nnreal_smul_snorm'_of_ae_le_mul (eventually_of_forall fun a => nnnorm_smul_le _ _)
hq_pos
#align measure_theory.snorm'_const_smul_le MeasureTheory.snorm'_const_smul_le
theorem snormEssSup_const_smul_le (c : 𝕜) (f : α → F) :
snormEssSup (c • f) μ ≤ ‖c‖₊ • snormEssSup f μ :=
- snormEssSup_le_nNReal_smul_snormEssSup_of_ae_le_mul
+ snormEssSup_le_nnreal_smul_snormEssSup_of_ae_le_mul
(eventually_of_forall fun a => nnnorm_smul_le _ _)
#align measure_theory.snorm_ess_sup_const_smul_le MeasureTheory.snormEssSup_const_smul_le
theorem snorm_const_smul_le (c : 𝕜) (f : α → F) : snorm (c • f) p μ ≤ ‖c‖₊ • snorm f p μ :=
- snorm_le_nNReal_smul_snorm_of_ae_le_mul (eventually_of_forall fun a => nnnorm_smul_le _ _) _
+ snorm_le_nnreal_smul_snorm_of_ae_le_mul (eventually_of_forall fun a => nnnorm_smul_le _ _) _
#align measure_theory.snorm_const_smul_le MeasureTheory.snorm_const_smul_le
theorem Memℒp.const_smul {f : α → E} (hf : Memℒp f p μ) (c : 𝕜) : Memℒp (c • f) p μ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -42,7 +42,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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -213,9 +213,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
- rw [snorm_zero]
- exact ENNReal.coe_lt_top⟩
+ ⟨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
@@ -271,8 +269,7 @@ theorem snorm'_const' [FiniteMeasure μ] (c : F) (hc_ne_zero : c ≠ 0) (hq_ne_z
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]
+ 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
@@ -524,9 +521,7 @@ theorem snorm_norm_rpow (f : α → F) (hq_pos : 0 < q) :
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; · 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
@@ -569,9 +564,7 @@ theorem memℒp_congr_norm {f : α → E} {g : α → F} (hf : AEStronglyMeasura
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⟩
+ ⟨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 : ℝ)
@@ -589,10 +582,8 @@ theorem snorm'_mono_measure (f : α → F) (hμν : ν ≤ μ) (hq : 0 ≤ q) :
#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μν
+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]
@@ -615,16 +606,12 @@ theorem Memℒp.restrict (s : Set α) {f : α → E} (hf : Memℒp f p μ) : Mem
#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]
+ 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]
+ 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
@@ -657,10 +644,8 @@ theorem snorm_smul_measure_of_ne_top {p : ℝ≥0∞} (hp_ne_top : p ≠ ∞) {f
· 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
+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 • μ)
@@ -683,9 +668,7 @@ theorem Memℒp.smul_measure {f : α → E} {c : ℝ≥0∞} (hf : Memℒp f p
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]
+ 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
@@ -715,11 +698,7 @@ theorem Memℒp.norm {f : α → E} (h : Memℒp f p μ) : Memℒp (fun x => ‖
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⟩
+ ⟨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) :
@@ -902,11 +881,8 @@ theorem snorm_sub_le' {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AE
_ =
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 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)
@@ -1025,9 +1001,7 @@ theorem limsup_trim (hm : m ≤ m0) {f : α → ℝ≥0∞} (hf : measurable[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
+ 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) :
@@ -1291,10 +1265,8 @@ theorem Memℒp.add {f g : α → E} (hf : Memℒp f p μ) (hg : Memℒp 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
+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 μ) :
@@ -1446,9 +1418,7 @@ theorem snorm_le_snorm_top_mul_snorm (p : ℝ≥0∞) (f : α → E) {g : α →
(1 / p.to_real) :=
by
refine' ENNReal.rpow_le_rpow _ _
- swap;
- · rw [one_div_nonneg]
- exact ENNReal.toReal_nonneg
+ swap; · rw [one_div_nonneg]; exact ENNReal.toReal_nonneg
refine' lintegral_mono_ae _
filter_upwards [@ENNReal.ae_le_essSup _ _ μ fun x => ↑‖f x‖₊]with x hx
exact mul_le_mul_right' (ENNReal.rpow_le_rpow hx ENNReal.toReal_nonneg) _
@@ -1457,9 +1427,7 @@ theorem snorm_le_snorm_top_mul_snorm (p : ℝ≥0∞) (f : α → E) {g : α →
rw [lintegral_const_mul'']
swap; · exact hg.nnnorm.ae_measurable.coe_nnreal_ennreal.pow aemeasurable_const
rw [ENNReal.mul_rpow_of_nonneg]
- swap;
- · rw [one_div_nonneg]
- exact ENNReal.toReal_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⟩
@@ -1609,16 +1577,12 @@ theorem Memℒp.smul {p q r : ℝ≥0∞} {f : α → E} {φ : α → 𝕜} (hf
#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φ
+ (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φ
+ (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
@@ -1687,9 +1651,7 @@ 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]
+ 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
@@ -1697,9 +1659,7 @@ theorem Memℒp.re (hf : Memℒp f p μ) : Memℒp (fun x => IsROrC.re (f x)) p
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]
+ 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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
Notably, these cause issues on nightly-2024-04-25
Co-authored-by: adamtopaz <github@adamtopaz.com>
@@ -958,11 +958,11 @@ theorem snorm'_const_smul_le (c : 𝕜) (f : α → F) (hq_pos : 0 < q) :
theorem snormEssSup_const_smul_le (c : 𝕜) (f : α → F) :
snormEssSup (c • f) μ ≤ ‖c‖₊ • snormEssSup f μ :=
snormEssSup_le_nnreal_smul_snormEssSup_of_ae_le_mul
- (eventually_of_forall fun _ => nnnorm_smul_le _ _)
+ (eventually_of_forall fun _ => by simp [nnnorm_smul_le])
#align measure_theory.snorm_ess_sup_const_smul_le MeasureTheory.snormEssSup_const_smul_le
theorem snorm_const_smul_le (c : 𝕜) (f : α → F) : snorm (c • f) p μ ≤ ‖c‖₊ • snorm f p μ :=
- snorm_le_nnreal_smul_snorm_of_ae_le_mul (eventually_of_forall fun _ => nnnorm_smul_le _ _) _
+ snorm_le_nnreal_smul_snorm_of_ae_le_mul (eventually_of_forall fun _ => by simp [nnnorm_smul_le]) _
#align measure_theory.snorm_const_smul_le MeasureTheory.snorm_const_smul_le
theorem Memℒp.const_smul {f : α → E} (hf : Memℒp f p μ) (c : 𝕜) : Memℒp (c • f) p μ :=
b ≠ 0 → a * b / b = a
(#12424)
This lets us unify a few lemmas between GroupWithZero
and EuclideanDomain
and two lemmas that were previously proved separately for Nat
, Int
, Polynomial
.
@@ -36,9 +36,7 @@ theorem snorm'_le_snorm'_mul_rpow_measure_univ {p q : ℝ} (hp0_lt : 0 < p) (hpq
repeat' rw [snorm']
rw [h_rw]
let r := p * q / (q - p)
- have hpqr : 1 / p = 1 / q + 1 / r := by
- field_simp [r, (ne_of_lt hp0_lt).symm, (ne_of_lt hq0_lt).symm]
- ring
+ have hpqr : 1 / p = 1 / q + 1 / r := by field_simp [r, hp0_lt.ne', hq0_lt.ne']
calc
(∫⁻ a : α, (↑‖f a‖₊ * g a) ^ p ∂μ) ^ (1 / p) ≤
(∫⁻ a : α, ↑‖f a‖₊ ^ q ∂μ) ^ (1 / q) * (∫⁻ a : α, g a ^ r ∂μ) ^ (1 / r) :=
These are changes from #11997, the latest adaptation PR for nightly-2024-04-07, which can be made directly on master.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com>
@@ -65,7 +65,7 @@ theorem snorm_le_snorm_mul_rpow_measure_univ {p q : ℝ≥0∞} (hpq : p ≤ q)
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
+ rw [← Ne] 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 = ∞
@@ -125,7 +125,7 @@ theorem Memℒp.memℒp_of_exponent_le {p q : ℝ≥0∞} [IsFiniteMeasure μ] {
cases' hfq with hfq_m hfq_lt_top
by_cases hp0 : p = 0
· rwa [hp0, memℒp_zero_iff_aestronglyMeasurable]
- rw [← Ne.def] at hp0
+ rw [← Ne] at hp0
refine' ⟨hfq_m, _⟩
by_cases hp_top : p = ∞
· have hq_top : q = ∞ := by rwa [hp_top, top_le_iff] at hpq
These are changes from #11997, the latest adaptation PR for nightly-2024-04-07, which can be made directly on master.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com>
@@ -196,7 +196,7 @@ theorem snorm_zero : snorm (0 : α → F) p μ = 0 := by
· simp [h0]
by_cases h_top : p = ∞
· simp only [h_top, snorm_exponent_top, snormEssSup_zero]
- rw [← Ne.def] at h0
+ rw [← Ne] at h0
simp [snorm_eq_snorm' h0 h_top, ENNReal.toReal_pos h0 h_top]
#align measure_theory.snorm_zero MeasureTheory.snorm_zero
@@ -238,7 +238,7 @@ theorem snorm_measure_zero {f : α → F} : snorm f p (0 : Measure α) = 0 := by
· simp [h0]
by_cases h_top : p = ∞
· simp [h_top]
- rw [← Ne.def] at h0
+ rw [← Ne] 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
@@ -194,7 +194,7 @@ theorem snorm_le_snorm_top_mul_snorm (p : ℝ≥0∞) (f : α → E) {g : α →
· 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, not_or]
+ rw [Ne, ENNReal.toReal_eq_zero_iff, not_or]
exact ⟨hp_zero, hp_top⟩
#align measure_theory.snorm_le_snorm_top_mul_snorm MeasureTheory.snorm_le_snorm_top_mul_snorm
@@ -252,8 +252,8 @@ theorem snorm_le_snorm_mul_snorm_of_nnnorm {p q r : ℝ≥0∞}
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]
+ · simp only [hq_ne_zero, one_div, Ne, ENNReal.inv_eq_top, not_false_iff]
+ · simp only [hr_top, one_div, Ne, 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'_le_snorm'_mul_snorm' hf hg _ h _ _ _
@@ -261,8 +261,8 @@ theorem snorm_le_snorm_mul_snorm_of_nnnorm {p q r : ℝ≥0∞}
· 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]
+ · simp only [hq_ne_zero, one_div, Ne, ENNReal.inv_eq_top, not_false_iff]
+ · simp only [hr_ne_zero, one_div, Ne, ENNReal.inv_eq_top, not_false_iff]
#align measure_theory.snorm_le_snorm_mul_snorm_of_nnnorm MeasureTheory.snorm_le_snorm_mul_snorm_of_nnnorm
/-- Hölder's inequality, as an inequality on the `ℒp` seminorm of an elementwise operation
@@ -287,7 +287,7 @@ theorem snorm'_const' [IsFiniteMeasure μ] (c : F) (hc_ne_zero : c ≠ 0) (hq_ne
rw [← ENNReal.rpow_mul]
suffices hp_cancel : q * (1 / q) = 1 by 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, ENNReal.rpow_eq_top_iff, not_or, not_and_or, not_and_or]
constructor
· left
rwa [ENNReal.coe_eq_zero, nnnorm_eq_zero]
@@ -533,7 +533,7 @@ theorem snorm_norm_rpow (f : α → F) (hq_pos : 0 < q) :
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]
+ rwa [Ne, 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.toReal q hq_pos
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
.
@@ -1031,29 +1031,29 @@ theorem snorm_indicator_ge_of_bdd_below (hp : p ≠ 0) (hp' : p ≠ ∞) {f : α
· 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
+section RCLike
-variable {𝕜 : Type*} [IsROrC 𝕜] {f : α → 𝕜}
+variable {𝕜 : Type*} [RCLike 𝕜] {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
+theorem Memℒp.re (hf : Memℒp f p μ) : Memℒp (fun x => RCLike.re (f x)) p μ := by
+ have : ∀ x, ‖RCLike.re (f x)‖ ≤ 1 * ‖f x‖ := by
intro x
rw [one_mul]
- exact IsROrC.norm_re_le_norm (f x)
+ exact RCLike.norm_re_le_norm (f x)
refine' hf.of_le_mul _ (eventually_of_forall this)
- exact IsROrC.continuous_re.comp_aestronglyMeasurable hf.1
+ exact RCLike.continuous_re.comp_aestronglyMeasurable 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
+theorem Memℒp.im (hf : Memℒp f p μ) : Memℒp (fun x => RCLike.im (f x)) p μ := by
+ have : ∀ x, ‖RCLike.im (f x)‖ ≤ 1 * ‖f x‖ := by
intro x
rw [one_mul]
- exact IsROrC.norm_im_le_norm (f x)
+ exact RCLike.norm_im_le_norm (f x)
refine' hf.of_le_mul _ (eventually_of_forall this)
- exact IsROrC.continuous_im.comp_aestronglyMeasurable hf.1
+ exact RCLike.continuous_im.comp_aestronglyMeasurable hf.1
#align measure_theory.mem_ℒp.im MeasureTheory.Memℒp.im
-end IsROrC
+end RCLike
section Liminf
These attributes are unused in Mathlib.
Many of them were workarounds for the now-resolved leanprover/lean4#2243; this also allows the lemmas themselves (hasFiniteIntegral_def
, integrable_def
, memℒp_def
, and integrableOn_def
) to be deleted.
We are currently experiencing problems with the @[eqns]
attribute on the Lean nightlies. I'm uncertain yet what the outcome is going to be there, but it seems prudent to reduce our unnecessary exposure to a language feature added in Mathlib.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -109,13 +109,6 @@ def Memℒp {α} {_ : MeasurableSpace α} (f : α → E) (p : ℝ≥0∞)
AEStronglyMeasurable f μ ∧ snorm f p μ < ∞
#align measure_theory.mem_ℒp MeasureTheory.Memℒp
--- Porting note (#11215): TODO Delete this when leanprover/lean4#2243 is fixed.
-theorem memℒp_def {α} {_ : MeasurableSpace α} (f : α → E) (p : ℝ≥0∞) (μ : Measure α) :
- Memℒp f p μ ↔ (AEStronglyMeasurable f μ ∧ snorm f p μ < ∞) :=
- Iff.rfl
-
-attribute [eqns memℒp_def] Memℒp
-
theorem Memℒp.aestronglyMeasurable {f : α → E} {p : ℝ≥0∞} (h : Memℒp f p μ) :
AEStronglyMeasurable f μ :=
h.1
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.
@@ -1071,7 +1071,7 @@ theorem ae_bdd_liminf_atTop_rpow_of_snorm_bdd {p : ℝ≥0∞} {f : ℕ → α
∀ᵐ x ∂μ, liminf (fun n => ((‖f n x‖₊ : ℝ≥0∞) ^ p.toReal : ℝ≥0∞)) atTop < ∞ := by
by_cases hp0 : p.toReal = 0
· simp only [hp0, ENNReal.rpow_zero]
- refine' eventually_of_forall fun x => _
+ filter_upwards with _
rw [liminf_const (1 : ℝ≥0∞)]
exact ENNReal.one_lt_top
have hp : p ≠ 0 := fun h => by simp [h] at hp0
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)
@@ -954,7 +954,6 @@ In this section we show inequalities on the norm.
section BoundedSMul
variable {𝕜 : Type*} [NormedRing 𝕜] [MulActionWithZero 𝕜 E] [MulActionWithZero 𝕜 F]
-
variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜 F]
theorem snorm'_const_smul_le (c : 𝕜) (f : α → F) (hq_pos : 0 < q) :
@@ -994,7 +993,6 @@ The inequalities in the previous section are now tight.
section NormedSpace
variable {𝕜 : Type*} [NormedDivisionRing 𝕜] [MulActionWithZero 𝕜 E] [Module 𝕜 F]
-
variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜 F]
theorem snorm'_const_smul {f : α → F} (c : 𝕜) (hq_pos : 0 < q) :
@@ -109,7 +109,7 @@ def Memℒp {α} {_ : MeasurableSpace α} (f : α → E) (p : ℝ≥0∞)
AEStronglyMeasurable f μ ∧ snorm f p μ < ∞
#align measure_theory.mem_ℒp MeasureTheory.Memℒp
--- Porting note: TODO Delete this when leanprover/lean4#2243 is fixed.
+-- Porting note (#11215): TODO Delete this when leanprover/lean4#2243 is fixed.
theorem memℒp_def {α} {_ : MeasurableSpace α} (f : α → E) (p : ℝ≥0∞) (μ : Measure α) :
Memℒp f p μ ↔ (AEStronglyMeasurable f μ ∧ snorm f p μ < ∞) :=
Iff.rfl
This is a very large PR, but it has been reviewed piecemeal already in PRs to the bump/v4.7.0
branch as we update to intermediate nightlies.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: damiano <adomani@gmail.com>
@@ -39,6 +39,7 @@ theorem limsup_trim (hm : m ≤ m0) {f : α → ℝ≥0∞} (hf : Measurable[m]
rw [h_set_eq]
ext1 a
suffices h_meas_eq : μ { x | ¬f x ≤ a } = μ.trim hm { x | ¬f x ≤ a } by
+ set_option tactic.skipAssignedInstances false in
simp_rw [Set.mem_setOf_eq, ae_iff, h_meas_eq]; rfl
refine' (trim_measurableSet_eq hm _).symm
refine' @MeasurableSet.compl _ _ m (@measurableSet_le ℝ≥0∞ _ _ _ _ m _ _ _ _ _ hf _)
@@ -32,19 +32,19 @@ theorem snorm'_le_snorm'_mul_rpow_measure_univ {p q : ℝ} (hp0_lt : 0 < p) (hpq
have hpq : p < q := lt_of_le_of_ne hpq hpq_eq
let g := fun _ : α => (1 : ℝ≥0∞)
have h_rw : (∫⁻ a, (‖f a‖₊ : ℝ≥0∞) ^ p ∂μ) = ∫⁻ a, ((‖f a‖₊ : ℝ≥0∞) * g a) ^ p ∂μ :=
- lintegral_congr fun a => by simp
+ lintegral_congr fun a => by simp [g]
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]
+ field_simp [r, (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
- rw [hpqr]; simp
+ rw [hpqr]; simp [r, g]
#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 {q : ℝ} (hq_pos : 0 < q) :
refine
s (#10762)
I replaced a few "terminal" refine/refine'
s with exact
.
The strategy was very simple-minded: essentially any refine
whose following line had smaller indentation got replaced by exact
and then I cleaned up the mess.
This PR certainly leaves some further terminal refine
s, but maybe the current change is beneficial.
@@ -52,7 +52,7 @@ theorem snorm'_le_snormEssSup_mul_rpow_measure_univ {q : ℝ} (hq_pos : 0 < q) :
have h_le : (∫⁻ a : α, (‖f a‖₊ : ℝ≥0∞) ^ q ∂μ) ≤ ∫⁻ _ : α, snormEssSup f μ ^ q ∂μ := by
refine' lintegral_mono_ae _
have h_nnnorm_le_snorm_ess_sup := coe_nnnorm_ae_le_snormEssSup f μ
- refine' h_nnnorm_le_snorm_ess_sup.mono fun x hx => by gcongr
+ exact h_nnnorm_le_snorm_ess_sup.mono fun x hx => by gcongr
rw [snorm', ← ENNReal.rpow_one (snormEssSup 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⁻¹)]
@@ -621,6 +621,10 @@ theorem Memℒp.mono_measure {f : α → E} (hμν : ν ≤ μ) (hf : Memℒp f
⟨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
+lemma snorm_restrict_le (f : α → F) (p : ℝ≥0∞) (μ : Measure α) (s : Set α) :
+ snorm f p (μ.restrict s) ≤ snorm f p μ :=
+ snorm_mono_measure f Measure.restrict_le_self
+
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
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>
@@ -35,11 +35,11 @@ theorem snorm'_trim (hm : m ≤ m0) {f : α → E} (hf : StronglyMeasurable[m] f
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]
+ suffices h_set_eq : { a : ℝ≥0∞ | ∀ᵐ n ∂μ.trim hm, f n ≤ a } = { a : ℝ≥0∞ | ∀ᵐ n ∂μ, f n ≤ a } by
+ 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]; rfl
+ suffices h_meas_eq : μ { x | ¬f x ≤ a } = μ.trim hm { x | ¬f x ≤ a } by
+ simp_rw [Set.mem_setOf_eq, ae_iff, h_meas_eq]; rfl
refine' (trim_measurableSet_eq hm _).symm
refine' @MeasurableSet.compl _ _ m (@measurableSet_le ℝ≥0∞ _ _ _ _ m _ _ _ _ _ hf _)
exact @measurable_const _ _ _ m _
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>
@@ -283,7 +283,7 @@ theorem snorm'_const (c : F) (hq_pos : 0 < 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]
+ suffices hq_cancel : q * (1 / q) = 1 by 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
@@ -292,8 +292,7 @@ theorem snorm'_const' [IsFiniteMeasure μ] (c : F) (hc_ne_zero : c ≠ 0) (hq_ne
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]
+ suffices hp_cancel : q * (1 / q) = 1 by 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
ℝ≥0 → ℝ≥0∞
commute defeqly with nsmul
and pow
(#10225)
by tweaking the definition of the AddMonoid
and MonoidWithZero
instances for WithTop
. Also unprotect ENNReal.coe_injective
and rename ENNReal.coe_eq_coe → ENNReal.coe_inj
.
From LeanAPAP
@@ -529,7 +529,7 @@ theorem snorm_norm_rpow (f : α → F) (hq_pos : 0 < q) :
congr
ext1 x
conv_rhs => rw [← 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_inj]
ext
push_cast
rw [Real.norm_rpow_of_nonneg (norm_nonneg _)]
@@ -737,7 +737,7 @@ theorem ae_eq_zero_of_snorm'_eq_zero {f : α → E} (hq0 : 0 ≤ q) (hf : AEStro
cases hx with
| inl hx =>
cases' hx with hx _
- rwa [← ENNReal.coe_zero, ENNReal.coe_eq_coe, nnnorm_eq_zero] at hx
+ rwa [← ENNReal.coe_zero, ENNReal.coe_inj, nnnorm_eq_zero] at hx
| inr hx =>
exact absurd hx.left ENNReal.coe_ne_top
| inr h =>
@@ -3,7 +3,7 @@ Copyright (c) 2021 Rémy Degenne. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne
-/
-import Mathlib.MeasureTheory.Function.LpSeminorm
+import Mathlib.MeasureTheory.Function.LpSeminorm.Basic
#align_import measure_theory.function.lp_seminorm from "leanprover-community/mathlib"@"c4015acc0a223449d44061e27ddac1835a3852b9"
@@ -6,7 +6,7 @@ Authors: Rémy Degenne, Sébastien Gouëzel
import Mathlib.Analysis.NormedSpace.IndicatorFunction
import Mathlib.MeasureTheory.Function.EssSup
import Mathlib.MeasureTheory.Function.AEEqFun
-import Mathlib.MeasureTheory.Integral.MeanInequalities
+import Mathlib.MeasureTheory.Function.SpecialFunctions.Basic
#align_import measure_theory.function.lp_seminorm from "leanprover-community/mathlib"@"c4015acc0a223449d44061e27ddac1835a3852b9"
@@ -40,7 +40,7 @@ set_option linter.uppercaseLean3 false
open TopologicalSpace MeasureTheory Filter
-open NNReal ENNReal BigOperators Topology MeasureTheory
+open scoped NNReal ENNReal BigOperators Topology
variable {α E F G : Type*} {m m0 : MeasurableSpace α} {p : ℝ≥0∞} {q : ℝ} {μ ν : Measure α}
[NormedAddCommGroup E] [NormedAddCommGroup F] [NormedAddCommGroup G]
@@ -168,7 +168,7 @@ section Zero
@[simp]
theorem snorm'_exponent_zero {f : α → F} : snorm' f 0 μ = 1 := by
- rw [snorm', _root_.div_zero, ENNReal.rpow_zero]
+ rw [snorm', div_zero, ENNReal.rpow_zero]
#align measure_theory.snorm'_exponent_zero MeasureTheory.snorm'_exponent_zero
@[simp]
@@ -326,10 +326,10 @@ theorem snorm_const_lt_top_iff {p : ℝ≥0∞} {c : F} (hp_ne_zero : p ≠ 0) (
snorm (fun _ : α => c) p μ < ∞ ↔ c = 0 ∨ μ Set.univ < ∞ := by
have hp : 0 < p.toReal := 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, zero_lt_top,
+ · simp only [hμ, Measure.coe_zero, Pi.zero_apply, or_true_iff, ENNReal.zero_lt_top,
snorm_measure_zero]
by_cases hc : c = 0
- · simp only [hc, true_or_iff, eq_self_iff_true, zero_lt_top, snorm_zero']
+ · simp only [hc, true_or_iff, eq_self_iff_true, ENNReal.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]
@@ -337,7 +337,7 @@ theorem snorm_const_lt_top_iff {p : ℝ≥0∞} {c : F} (hp_ne_zero : p ≠ 0) (
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]
+ 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
@@ -356,9 +356,9 @@ theorem memℒp_const (c : E) [IsFiniteMeasure μ] : Memℒp (fun _ : α => c) p
theorem memℒp_top_const (c : E) : Memℒp (fun _ : α => c) ∞ μ := by
refine' ⟨aestronglyMeasurable_const, _⟩
by_cases h : μ = 0
- · simp only [h, snorm_measure_zero, zero_lt_top]
+ · simp only [h, snorm_measure_zero, ENNReal.zero_lt_top]
· rw [snorm_const _ ENNReal.top_ne_zero h]
- simp only [ENNReal.top_toReal, _root_.div_zero, ENNReal.rpow_zero, mul_one, ENNReal.coe_lt_top]
+ 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 ≠ ∞) :
@@ -769,135 +769,6 @@ 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 μ)
- (hq1 : 1 ≤ q) : snorm' (f + g) q μ ≤ snorm' f q μ + snorm' g q μ :=
- calc
- (∫⁻ a, (‖(f + g) a‖₊ : ℝ≥0∞) ^ q ∂μ) ^ (1 / q) ≤
- (∫⁻ a, ((fun a => (‖f a‖₊ : ℝ≥0∞)) + fun a => (‖g a‖₊ : ℝ≥0∞)) a ^ q ∂μ) ^ (1 / q) := by
- gcongr with a
- simp only [Pi.add_apply, ← ENNReal.coe_add, ENNReal.coe_le_coe, 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 : ℝ≥0∞) ^ (1 / q - 1) * (snorm' f q μ + snorm' g q μ) :=
- calc
- (∫⁻ a, (‖(f + g) a‖₊ : ℝ≥0∞) ^ q ∂μ) ^ (1 / q) ≤
- (∫⁻ a, ((fun a => (‖f a‖₊ : ℝ≥0∞)) + fun a => (‖g a‖₊ : ℝ≥0∞)) a ^ q ∂μ) ^ (1 / q) := by
- gcongr with a
- simp only [Pi.add_apply, ← ENNReal.coe_add, ENNReal.coe_le_coe, nnnorm_add_le]
- _ ≤ (2 : ℝ≥0∞) ^ (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, snormEssSup_add_le]
- have hp1_real : 1 ≤ p.toReal := 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 : ℝ≥0∞) ^ (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 [LpAddConst, 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 [LpAddConst, 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 [LpAddConst]
- split_ifs with h
- · 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, 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 [LpAddConst, if_pos this]
- · simpa using ENNReal.toReal_mono ENNReal.one_ne_top h'p.le
- · simp [LpAddConst_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), AEStronglyMeasurable f μ → AEStronglyMeasurable g μ →
- snorm f p μ ≤ η → snorm g p μ ≤ η → snorm (f + g) p μ < δ := by
- have :
- Tendsto (fun η : ℝ≥0∞ => LpAddConst p * (η + η)) (𝓝[>] 0) (𝓝 (LpAddConst p * (0 + 0))) :=
- (ENNReal.Tendsto.const_mul (tendsto_id.add tendsto_id)
- (Or.inr (LpAddConst_lt_top p).ne)).mono_left
- nhdsWithin_le_nhds
- simp only [add_zero, 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 μ ≤ LpAddConst p * (snorm f p μ + snorm g p μ) := snorm_add_le' hf hg p
- _ ≤ LpAddConst p * (η + η) := by gcongr
- _ < δ := 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 μ) := by
- simpa only [sub_eq_add_neg, snorm_neg] using snorm_add_le' hf hg.neg p
-#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 [LpAddConst_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 (LpAddConst_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
@@ -910,7 +781,7 @@ lemma snormEssSup_piecewise {s : Set α} (f g : α → E) [DecidablePred (· ∈
(hs : MeasurableSet s) :
snormEssSup (Set.piecewise s f g) μ
= max (snormEssSup f (μ.restrict s)) (snormEssSup g (μ.restrict sᶜ)) := by
- simp only [snormEssSup, ← essSup_piecewise hs]
+ simp only [snormEssSup, ← ENNReal.essSup_piecewise hs]
congr with x
by_cases hx : x ∈ s <;> simp [hx]
@@ -993,225 +864,6 @@ theorem _root_.MeasurableEquiv.memℒp_map_measure_iff (f : α ≃ᵐ β) {g :
end MapMeasure
-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]
- have hpq : p < q := lt_of_le_of_ne hpq hpq_eq
- let g := fun _ : α => (1 : ℝ≥0∞)
- have h_rw : (∫⁻ a, (‖f a‖₊ : ℝ≥0∞) ^ p ∂μ) = ∫⁻ a, ((‖f a‖₊ : ℝ≥0∞) * 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
- rw [hpqr]; simp
-#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‖₊ : ℝ≥0∞) ^ q ∂μ) ≤ ∫⁻ _ : α, snormEssSup f μ ^ q ∂μ := by
- refine' lintegral_mono_ae _
- have h_nnnorm_le_snorm_ess_sup := coe_nnnorm_ae_le_snormEssSup f μ
- refine' h_nnnorm_le_snorm_ess_sup.mono fun x hx => by gcongr
- rw [snorm', ← ENNReal.rpow_one (snormEssSup 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⁻¹)]
- gcongr
- 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, _root_.div_zero, one_div, ENNReal.top_toReal, sub_zero, snorm_exponent_top,
- GroupWithZero.inv_zero]
- by_cases hp_top : p = ∞
- · simp only [hp_top, ENNReal.rpow_zero, mul_one, ENNReal.top_toReal, sub_zero,
- GroupWithZero.inv_zero, snorm_exponent_top]
- exact le_rfl
- rw [snorm_eq_snorm' hp0 hp_top]
- have hp_pos : 0 < p.toReal := ENNReal.toReal_pos hp0_lt.ne' hp_top
- refine' (snorm'_le_snormEssSup_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.toReal := 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.toReal ≤ q.toReal := 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 α) [IsProbabilityMeasure μ] {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 μ] :
- 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 μ :=
- (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}
- (hf : AEStronglyMeasurable f μ) (hfq_lt_top : snorm' f q μ < ∞) (hp_nonneg : 0 ≤ p)
- (hpq : p ≤ q) : snorm' f p μ < ∞ := by
- rcases 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‖₊ : ℝ≥0∞) ^ p.toReal }) ^ (1 / p.toReal) ≤ snorm f p μ := by
- rw [snorm_eq_lintegral_rpow_nnnorm hp_ne_zero hp_ne_top]
- gcongr
- exact mul_meas_ge_le_lintegral₀ (hf.ennnorm.pow_const _) ε
-#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‖₊ : ℝ≥0∞) ^ p.toReal } ≤ snorm f p μ ^ p.toReal := by
- have : 1 / p.toReal * p.toReal = 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‖₊ : ℝ≥0∞) ^ p.toReal }), ← this, ENNReal.rpow_mul]
- gcongr
- exact pow_mul_meas_ge_le_snorm μ hp_ne_zero hp_ne_top hf ε
-#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.toReal) using 4
- 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 h : ε = ∞
- · simp [h]
- have hεpow : ε ^ p.toReal ≠ 0 := (ENNReal.rpow_pos (pos_iff_ne_zero.2 hε) h).ne.symm
- have hεpow' : ε ^ p.toReal ≠ ∞ := 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∞} [IsFiniteMeasure μ] {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_aestronglyMeasurable]
- 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.toReal := 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_snormEssSup_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.toReal ≤ q.toReal := 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 [MeasurableAdd₂ 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 using 1
- ext x
- simp
-#align measure_theory.mem_ℒp_finset_sum' MeasureTheory.memℒp_finset_sum'
-
-end MeasurableAdd
-
section Monotonicity
theorem snorm'_le_nnreal_smul_snorm'_of_ae_le_mul {f : α → F} {g : α → G} {c : ℝ≥0}
@@ -1289,126 +941,6 @@ theorem Memℒp.of_le_mul {f : α → E} {g : α → F} {c : ℝ} (hg : Memℒp
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
-theorem snorm'_le_snorm'_mul_snorm' {p q r : ℝ} {f : α → E} (hf : AEStronglyMeasurable f μ)
- {g : α → F} (hg : AEStronglyMeasurable g μ) (b : E → F → G)
- (h : ∀ᵐ x ∂μ, ‖b (f x) (g x)‖₊ ≤ ‖f x‖₊ * ‖g x‖₊) (hp0_lt : 0 < p) (hpq : p < q)
- (hpqr : 1 / p = 1 / q + 1 / r) :
- snorm' (fun x => b (f x) (g x)) p μ ≤ snorm' f q μ * snorm' g r μ := by
- rw [snorm']
- calc
- (∫⁻ a : α, ↑‖b (f a) (g a)‖₊ ^ p ∂μ) ^ (1 / p) ≤
- (∫⁻ a : α, ↑(‖f a‖₊ * ‖g a‖₊) ^ p ∂μ) ^ (1 / p) :=
- (ENNReal.rpow_le_rpow_iff <| one_div_pos.mpr hp0_lt).mpr <|
- lintegral_mono_ae <|
- h.mono fun a ha => (ENNReal.rpow_le_rpow_iff hp0_lt).mpr <| ENNReal.coe_le_coe.mpr <| ha
- _ ≤ _ := ?_
- simp_rw [snorm', ENNReal.coe_mul]
- exact ENNReal.lintegral_Lp_mul_le_Lq_mul_Lr hp0_lt hpq hpqr μ hf.ennnorm hg.ennnorm
-#align measure_theory.snorm'_le_snorm'_mul_snorm' MeasureTheory.snorm'_le_snorm'_mul_snorm'
-
-theorem snorm_le_snorm_top_mul_snorm (p : ℝ≥0∞) (f : α → E) {g : α → F}
- (hg : AEStronglyMeasurable g μ) (b : E → F → G)
- (h : ∀ᵐ x ∂μ, ‖b (f x) (g x)‖₊ ≤ ‖f x‖₊ * ‖g x‖₊) :
- snorm (fun x => b (f x) (g x)) p μ ≤ snorm f ∞ μ * snorm g p μ := by
- by_cases hp_top : p = ∞
- · simp_rw [hp_top, snorm_exponent_top]
- refine' le_trans (essSup_mono_ae <| h.mono fun a ha => _) (ENNReal.essSup_mul_le _ _)
- simp_rw [Pi.mul_apply, ← ENNReal.coe_mul, ENNReal.coe_le_coe]
- exact ha
- 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, snormEssSup]
- calc
- (∫⁻ x, (‖b (f x) (g x)‖₊ : ℝ≥0∞) ^ p.toReal ∂μ) ^ (1 / p.toReal) ≤
- (∫⁻ x, (‖f x‖₊ : ℝ≥0∞) ^ p.toReal * (‖g x‖₊ : ℝ≥0∞) ^ p.toReal ∂μ) ^ (1 / p.toReal) := by
- gcongr ?_ ^ _
- refine' lintegral_mono_ae (h.mono fun a ha => _)
- rw [← ENNReal.mul_rpow_of_nonneg _ _ ENNReal.toReal_nonneg]
- refine' ENNReal.rpow_le_rpow _ ENNReal.toReal_nonneg
- rw [← ENNReal.coe_mul, ENNReal.coe_le_coe]
- exact ha
- _ ≤
- (∫⁻ x, essSup (fun x => (‖f x‖₊ : ℝ≥0∞)) μ ^ p.toReal * (‖g x‖₊ : ℝ≥0∞) ^ p.toReal ∂μ) ^
- (1 / p.toReal) := by
- gcongr ?_ ^ _
- refine' lintegral_mono_ae _
- filter_upwards [@ENNReal.ae_le_essSup _ _ μ fun x => (‖f x‖₊ : ℝ≥0∞)] with x hx
- gcongr
- _ = essSup (fun x => (‖f x‖₊ : ℝ≥0∞)) μ *
- (∫⁻ x, (‖g x‖₊ : ℝ≥0∞) ^ p.toReal ∂μ) ^ (1 / p.toReal) := by
- rw [lintegral_const_mul'']
- swap; · exact hg.nnnorm.aemeasurable.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, not_or]
- exact ⟨hp_zero, hp_top⟩
-#align measure_theory.snorm_le_snorm_top_mul_snorm MeasureTheory.snorm_le_snorm_top_mul_snorm
-
-theorem snorm_le_snorm_mul_snorm_top (p : ℝ≥0∞) {f : α → E} (hf : AEStronglyMeasurable f μ)
- (g : α → F) (b : E → F → G) (h : ∀ᵐ x ∂μ, ‖b (f x) (g x)‖₊ ≤ ‖f x‖₊ * ‖g x‖₊) :
- snorm (fun x => b (f x) (g x)) p μ ≤ snorm f p μ * snorm g ∞ μ := by
- rw [← snorm_norm f, ← snorm_norm g]
- refine' (snorm_mono_ae_real h).trans _
- simp_rw [mul_comm ‖f _‖₊, val_eq_coe, NNReal.coe_mul, coe_nnnorm]
- rw [mul_comm]
- refine' snorm_le_snorm_top_mul_snorm p (fun x => ‖g x‖) hf.norm _ (h.mono fun x _ => _)
- simp_rw [nnnorm_mul]
- rfl
-#align measure_theory.snorm_le_snorm_mul_snorm_top MeasureTheory.snorm_le_snorm_mul_snorm_top
-
-/-- Hölder's inequality, as an inequality on the `ℒp` seminorm of an elementwise operation
-`fun x => b (f x) (g x)`. -/
-theorem snorm_le_snorm_mul_snorm_of_nnnorm {p q r : ℝ≥0∞} {f : α → E}
- (hf : AEStronglyMeasurable f μ) {g : α → F} (hg : AEStronglyMeasurable g μ) (b : E → F → G)
- (h : ∀ᵐ x ∂μ, ‖b (f x) (g x)‖₊ ≤ ‖f x‖₊ * ‖g x‖₊) (hpqr : 1 / p = 1 / q + 1 / r) :
- snorm (fun x => b (f x) (g x)) p μ ≤ snorm f q μ * snorm g 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
- 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
- by_cases hq_top : q = ∞
- · have hpr : p = r := by
- simpa only [hq_top, one_div, ENNReal.inv_top, zero_add, inv_inj] using hpqr
- rw [← hpr, hq_top]
- exact snorm_le_snorm_top_mul_snorm p f hg b h
- by_cases hr_top : r = ∞
- · have hpq : p = q := by
- simpa only [hr_top, one_div, ENNReal.inv_top, add_zero, inv_inj] using hpqr
- rw [← hpq, hr_top]
- exact snorm_le_snorm_mul_snorm_top p hf g b 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'_le_snorm'_mul_snorm' hf hg _ 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_le_snorm_mul_snorm_of_nnnorm MeasureTheory.snorm_le_snorm_mul_snorm_of_nnnorm
-
-/-- Hölder's inequality, as an inequality on the `ℒp` seminorm of an elementwise operation
-`fun x => b (f x) (g x)`. -/
-theorem snorm_le_snorm_mul_snorm'_of_norm {p q r : ℝ≥0∞} {f : α → E} (hf : AEStronglyMeasurable f μ)
- {g : α → F} (hg : AEStronglyMeasurable g μ) (b : E → F → G)
- (h : ∀ᵐ x ∂μ, ‖b (f x) (g x)‖ ≤ ‖f x‖ * ‖g x‖) (hpqr : 1 / p = 1 / q + 1 / r) :
- snorm (fun x => b (f x) (g x)) p μ ≤ snorm f q μ * snorm g r μ :=
- snorm_le_snorm_mul_snorm_of_nnnorm hf hg b h hpqr
-#align measure_theory.snorm_le_snorm_mul_snorm'_of_norm MeasureTheory.snorm_le_snorm_mul_snorm'_of_norm
-
end Monotonicity
/-!
@@ -1416,7 +948,6 @@ end Monotonicity
In this section we show inequalities on the norm.
-/
-
section BoundedSMul
variable {𝕜 : Type*} [NormedRing 𝕜] [MulActionWithZero 𝕜 E] [MulActionWithZero 𝕜 F]
@@ -1449,53 +980,6 @@ theorem Memℒp.const_mul {R} [NormedRing R] {f : α → R} (hf : Memℒp f 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 μ :=
- snorm'_le_snorm'_mul_snorm' hφ hf (· • ·) (eventually_of_forall fun _ => nnnorm_smul_le _ _)
- hp0_lt hpq hpqr
-#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 μ :=
- (snorm_le_snorm_top_mul_snorm p φ hf (· • ·) (eventually_of_forall fun _ => nnnorm_smul_le _ _) :
- _)
-#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 ∞ μ :=
- (snorm_le_snorm_mul_snorm_top p hφ f (· • ·) (eventually_of_forall fun _ => nnnorm_smul_le _ _) :
- _)
-#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 μ :=
- (snorm_le_snorm_mul_snorm_of_nnnorm hφ hf (· • ·)
- (eventually_of_forall fun _ => nnnorm_smul_le _ _) hpqr :
- _)
-#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 BoundedSMul
/-!
@@ -993,64 +993,6 @@ theorem _root_.MeasurableEquiv.memℒp_map_measure_iff (f : α ≃ᵐ β) {g :
end MapMeasure
-section Trim
-
-theorem snorm'_trim (hm : m ≤ m0) {f : α → E} (hf : StronglyMeasurable[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 _ _) q
- apply @StronglyMeasurable.measurable
- exact @StronglyMeasurable.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]; rfl
- refine' (trim_measurableSet_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 : StronglyMeasurable[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 : StronglyMeasurable[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 snormEssSup_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.stronglyMeasurable_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
-
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
Those notations are not scoped whereas the file is very low in the import hierarchy.
@@ -488,6 +488,7 @@ theorem snorm_congr_norm_ae {f : α → F} {g : α → G} (hfg : ∀ᵐ x ∂μ,
snorm_congr_nnnorm_ae <| hfg.mono fun _x hx => NNReal.eq hx
#align measure_theory.snorm_congr_norm_ae MeasureTheory.snorm_congr_norm_ae
+open scoped symmDiff in
theorem snorm_indicator_sub_indicator (s t : Set α) (f : α → E) :
snorm (s.indicator f - t.indicator f) p μ = snorm ((s ∆ t).indicator f) p μ :=
snorm_congr_norm_ae <| ae_of_all _ fun x ↦ by
@@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Rémy Degenne, Sébastien Gouëzel
-/
import Mathlib.Analysis.NormedSpace.IndicatorFunction
-import Mathlib.Analysis.SpecialFunctions.Pow.Continuity
import Mathlib.MeasureTheory.Function.EssSup
import Mathlib.MeasureTheory.Function.AEEqFun
import Mathlib.MeasureTheory.Integral.MeanInequalities
rpow_nonneg_of_nonneg
to rpow_nonneg
(#9518)
This better matches other lemma names.
From LeanAPAP
@@ -512,7 +512,7 @@ theorem snorm'_norm_rpow (f : α → F) (p q : ℝ) (hq_pos : 0 < q) :
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, ←
+ rw [Real.norm_eq_abs, abs_eq_self.mpr (Real.rpow_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
•
lemmas (#9179)
Remove the duplicates introduced in #8869 by sorting the lemmas in Algebra.Order.SMul
into three files:
Algebra.Order.Module.Defs
for the order isomorphism induced by scalar multiplication by a positivity elementAlgebra.Order.Module.Pointwise
for the order properties of scalar multiplication of sets. This file is new. I credit myself for https://github.com/leanprover-community/mathlib/pull/9078Algebra.Order.Module.OrderedSMul
: The material about OrderedSMul
per se. Inherits the copyright header from Algebra.Order.SMul
. This file should eventually be deleted.I move each #align
to the correct file. On top of that, I delete unused redundant OrderedSMul
instances (they were useful in Lean 3, but not anymore) and eq_of_smul_eq_smul_of_pos_of_le
/eq_of_smul_eq_smul_of_neg_of_le
since those lemmas are weird and unused.
@@ -1574,7 +1574,7 @@ theorem snorm'_const_smul {f : α → F} (c : 𝕜) (hq_pos : 0 < q) :
· simp [snorm', hq_pos]
refine' le_antisymm (snorm'_const_smul_le _ _ hq_pos) _
have : snorm' _ q μ ≤ _ := snorm'_const_smul_le c⁻¹ (c • f) hq_pos
- rwa [inv_smul_smul₀ hc, nnnorm_inv, ENNReal.le_inv_smul_iff (nnnorm_ne_zero_iff.mpr hc)] at this
+ rwa [inv_smul_smul₀ hc, nnnorm_inv, le_inv_smul_iff_of_pos (nnnorm_pos.2 hc)] at this
#align measure_theory.snorm'_const_smul MeasureTheory.snorm'_const_smul
theorem snormEssSup_const_smul (c : 𝕜) (f : α → F) :
@@ -1588,7 +1588,7 @@ theorem snorm_const_smul (c : 𝕜) (f : α → F) :
· simp
refine' le_antisymm (snorm_const_smul_le _ _) _
have : snorm _ p μ ≤ _ := snorm_const_smul_le c⁻¹ (c • f)
- rwa [inv_smul_smul₀ hc, nnnorm_inv, ENNReal.le_inv_smul_iff (nnnorm_ne_zero_iff.mpr hc)] at this
+ rwa [inv_smul_smul₀ hc, nnnorm_inv, le_inv_smul_iff_of_pos (nnnorm_pos.2 hc)] at this
#align measure_theory.snorm_const_smul MeasureTheory.snorm_const_smul
end NormedSpace
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
.
@@ -187,7 +187,7 @@ theorem snorm'_zero (hp0_lt : 0 < q) : snorm' (0 : α → F) q μ = 0 := by simp
@[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
+ rcases 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'
@@ -1135,7 +1135,7 @@ theorem snorm_le_snorm_of_exponent_le {p q : ℝ≥0∞} (hpq : p ≤ q) [IsProb
theorem snorm'_lt_top_of_snorm'_lt_top_of_exponent_le {p q : ℝ} [IsFiniteMeasure μ] {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
+ rcases 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
Following on from previous gcongr
golfing PRs #4702 and #4784.
This is a replacement for #7901: this round of golfs, first introduced there, there exposed some performance issues in gcongr
, hopefully fixed by #8731, and I am opening a new PR so that the performance can be checked against current master rather than master at the time of #7901.
@@ -372,10 +372,10 @@ 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)
+ simp only [snorm']
+ gcongr ?_ ^ (1/q)
refine' lintegral_mono_ae (h.mono fun x hx => _)
- exact ENNReal.rpow_le_rpow (ENNReal.coe_le_coe.2 hx) hq
+ gcongr
#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‖) :
@@ -598,8 +598,7 @@ theorem Memℒp.of_bound [IsFiniteMeasure μ] {f : α → E} (hf : AEStronglyMea
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‖₊ : ℝ≥0∞) ^ q ∂μ from
- ENNReal.rpow_le_rpow h_integral_mono (by simp [hq])
+ gcongr
exact lintegral_mono' hμν le_rfl
#align measure_theory.snorm'_mono_measure MeasureTheory.snorm'_mono_measure
@@ -775,8 +774,7 @@ theorem snorm'_add_le {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AE
calc
(∫⁻ a, (‖(f + g) a‖₊ : ℝ≥0∞) ^ 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)
+ gcongr with a
simp only [Pi.add_apply, ← ENNReal.coe_add, ENNReal.coe_le_coe, 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
@@ -786,8 +784,7 @@ theorem snorm'_add_le_of_le_one {f g : α → E} (hf : AEStronglyMeasurable f μ
calc
(∫⁻ a, (‖(f + g) a‖₊ : ℝ≥0∞) ^ 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
+ gcongr with a
simp only [Pi.add_apply, ← ENNReal.coe_add, ENNReal.coe_le_coe, nnnorm_add_le]
_ ≤ (2 : ℝ≥0∞) ^ (1 / q - 1) * (snorm' f q μ + snorm' g q μ) :=
ENNReal.lintegral_Lp_add_le_of_le_one hf.ennnorm hq0 hq1
@@ -875,7 +872,7 @@ theorem exists_Lp_half (p : ℝ≥0∞) {δ : ℝ≥0∞} (hδ : δ ≠ 0) :
refine' ⟨η, ηpos, fun f g hf hg Hf Hg => _⟩
calc
snorm (f + g) p μ ≤ LpAddConst p * (snorm f p μ + snorm g p μ) := snorm_add_le' hf hg p
- _ ≤ LpAddConst p * (η + η) := (mul_le_mul_of_nonneg_left (add_le_add Hf Hg) bot_le)
+ _ ≤ LpAddConst p * (η + η) := by gcongr
_ < δ := hη
#align measure_theory.exists_Lp_half MeasureTheory.exists_Lp_half
@@ -1083,11 +1080,11 @@ theorem snorm'_le_snormEssSup_mul_rpow_measure_univ (hq_pos : 0 < q) {f : α →
have h_le : (∫⁻ a : α, (‖f a‖₊ : ℝ≥0∞) ^ q ∂μ) ≤ ∫⁻ _ : α, snormEssSup f μ ^ q ∂μ := by
refine' lintegral_mono_ae _
have h_nnnorm_le_snorm_ess_sup := coe_nnnorm_ae_le_snormEssSup f μ
- refine' h_nnnorm_le_snorm_ess_sup.mono fun x hx => ENNReal.rpow_le_rpow hx (le_of_lt hq_pos)
+ refine' h_nnnorm_le_snorm_ess_sup.mono fun x hx => by gcongr
rw [snorm', ← ENNReal.rpow_one (snormEssSup 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])
+ gcongr
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
@@ -1157,9 +1154,8 @@ theorem pow_mul_meas_ge_le_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
(hf : AEStronglyMeasurable f μ) (ε : ℝ≥0∞) :
(ε * μ { x | ε ≤ (‖f x‖₊ : ℝ≥0∞) ^ 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)
+ gcongr
+ exact mul_meas_ge_le_lintegral₀ (hf.ennnorm.pow_const _) ε
#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 ≠ ∞)
@@ -1170,9 +1166,8 @@ theorem mul_meas_ge_le_pow_snorm {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_to
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‖₊ : ℝ≥0∞) ^ p.toReal }), ← 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
+ gcongr
+ exact pow_mul_meas_ge_le_snorm μ hp_ne_zero hp_ne_top hf ε
#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. -/
@@ -1384,7 +1379,7 @@ theorem snorm_le_snorm_top_mul_snorm (p : ℝ≥0∞) (f : α → E) {g : α →
calc
(∫⁻ x, (‖b (f x) (g x)‖₊ : ℝ≥0∞) ^ p.toReal ∂μ) ^ (1 / p.toReal) ≤
(∫⁻ x, (‖f x‖₊ : ℝ≥0∞) ^ p.toReal * (‖g x‖₊ : ℝ≥0∞) ^ p.toReal ∂μ) ^ (1 / p.toReal) := by
- refine' ENNReal.rpow_le_rpow _ (one_div_nonneg.mpr ENNReal.toReal_nonneg)
+ gcongr ?_ ^ _
refine' lintegral_mono_ae (h.mono fun a ha => _)
rw [← ENNReal.mul_rpow_of_nonneg _ _ ENNReal.toReal_nonneg]
refine' ENNReal.rpow_le_rpow _ ENNReal.toReal_nonneg
@@ -1393,13 +1388,10 @@ theorem snorm_le_snorm_top_mul_snorm (p : ℝ≥0∞) (f : α → E) {g : α →
_ ≤
(∫⁻ x, essSup (fun x => (‖f x‖₊ : ℝ≥0∞)) μ ^ p.toReal * (‖g x‖₊ : ℝ≥0∞) ^ p.toReal ∂μ) ^
(1 / p.toReal) := by
- refine' ENNReal.rpow_le_rpow _ _
- swap;
- · rw [one_div_nonneg]
- exact ENNReal.toReal_nonneg
+ gcongr ?_ ^ _
refine' lintegral_mono_ae _
filter_upwards [@ENNReal.ae_le_essSup _ _ μ fun x => (‖f x‖₊ : ℝ≥0∞)] with x hx
- exact mul_le_mul_right' (ENNReal.rpow_le_rpow hx ENNReal.toReal_nonneg) _
+ gcongr
_ = essSup (fun x => (‖f x‖₊ : ℝ≥0∞)) μ *
(∫⁻ x, (‖g x‖₊ : ℝ≥0∞) ^ p.toReal ∂μ) ^ (1 / p.toReal) := by
rw [lintegral_const_mul'']
@@ -1614,7 +1606,8 @@ theorem snorm_indicator_ge_of_bdd_below (hp : p ≠ 0) (hp' : p ≠ ∞) {f : α
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
+ gcongr
+ exact hx hxs
· simp [Set.indicator_of_not_mem hxs]
#align measure_theory.snorm_indicator_ge_of_bdd_below MeasureTheory.snorm_indicator_ge_of_bdd_below
I've also got a change to make this required, but I'd like to land this first.
@@ -1187,7 +1187,7 @@ theorem mul_meas_ge_le_pow_snorm' {f : α → E} (hp_ne_zero : p ≠ 0) (hp_ne_t
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 ε = ∞
+ by_cases h : ε = ∞
· simp [h]
have hεpow : ε ^ p.toReal ≠ 0 := (ENNReal.rpow_pos (pos_iff_ne_zero.2 hε) h).ne.symm
have hεpow' : ε ^ p.toReal ≠ ∞ := ENNReal.rpow_ne_top_of_nonneg ENNReal.toReal_nonneg h
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>
@@ -327,10 +327,10 @@ theorem snorm_const_lt_top_iff {p : ℝ≥0∞} {c : F} (hp_ne_zero : p ≠ 0) (
snorm (fun _ : α => c) p μ < ∞ ↔ c = 0 ∨ μ Set.univ < ∞ := by
have hp : 0 < p.toReal := 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,
+ · simp only [hμ, Measure.coe_zero, Pi.zero_apply, or_true_iff, 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']
+ · simp only [hc, true_or_iff, eq_self_iff_true, 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]
@@ -357,7 +357,7 @@ theorem memℒp_const (c : E) [IsFiniteMeasure μ] : Memℒp (fun _ : α => c) p
theorem memℒp_top_const (c : E) : Memℒp (fun _ : α => c) ∞ μ := by
refine' ⟨aestronglyMeasurable_const, _⟩
by_cases h : μ = 0
- · simp only [h, snorm_measure_zero, WithTop.zero_lt_top]
+ · simp only [h, snorm_measure_zero, zero_lt_top]
· rw [snorm_const _ ENNReal.top_ne_zero h]
simp only [ENNReal.top_toReal, _root_.div_zero, ENNReal.rpow_zero, mul_one, ENNReal.coe_lt_top]
#align measure_theory.mem_ℒp_top_const MeasureTheory.memℒp_top_const
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
).@@ -909,33 +909,19 @@ theorem meas_snormEssSup_lt {f : α → F} : μ { y | snormEssSup f μ < ‖f y
meas_essSup_lt
#align measure_theory.meas_snorm_ess_sup_lt MeasureTheory.meas_snormEssSup_lt
-lemma snormEssSup_piecewise_le {s : Set α} (f g : α → E) [DecidablePred (· ∈ s)]
+lemma snormEssSup_piecewise {s : Set α} (f g : α → E) [DecidablePred (· ∈ s)]
(hs : MeasurableSet s) :
snormEssSup (Set.piecewise s f g) μ
- ≤ max (snormEssSup f (μ.restrict s)) (snormEssSup g (μ.restrict sᶜ)) := by
- refine essSup_le_of_ae_le (max (snormEssSup f (μ.restrict s)) (snormEssSup g (μ.restrict sᶜ))) ?_
- have hf : ∀ᵐ y ∂(μ.restrict s), ↑‖f y‖₊ ≤ snormEssSup f (μ.restrict s) :=
- ae_le_snormEssSup (μ := μ.restrict s) (f := f)
- have hg : ∀ᵐ y ∂(μ.restrict sᶜ), ↑‖g y‖₊ ≤ snormEssSup g (μ.restrict sᶜ) :=
- ae_le_snormEssSup (μ := μ.restrict sᶜ) (f := g)
- refine ae_of_ae_restrict_of_ae_restrict_compl s ?_ ?_
- · rw [ae_restrict_iff' hs] at hf ⊢
- filter_upwards [hf] with x hx
- intro hx_mem
- simp only [hx_mem, Set.piecewise_eq_of_mem]
- exact (hx hx_mem).trans (le_max_left _ _)
- · rw [ae_restrict_iff' hs.compl] at hg ⊢
- filter_upwards [hg] with x hx
- intro hx_mem
- rw [Set.mem_compl_iff] at hx_mem
- simp only [hx_mem, not_false_eq_true, Set.piecewise_eq_of_not_mem]
- exact (hx hx_mem).trans (le_max_right _ _)
-
-lemma snorm_top_piecewise_le {s : Set α} (f g : α → E) [DecidablePred (· ∈ s)]
+ = max (snormEssSup f (μ.restrict s)) (snormEssSup g (μ.restrict sᶜ)) := by
+ simp only [snormEssSup, ← essSup_piecewise hs]
+ congr with x
+ by_cases hx : x ∈ s <;> simp [hx]
+
+lemma snorm_top_piecewise {s : Set α} (f g : α → E) [DecidablePred (· ∈ s)]
(hs : MeasurableSet s) :
snorm (Set.piecewise s f g) ∞ μ
- ≤ max (snorm f ∞ (μ.restrict s)) (snorm g ∞ (μ.restrict sᶜ)) :=
- snormEssSup_piecewise_le f g hs
+ = max (snorm f ∞ (μ.restrict s)) (snorm g ∞ (μ.restrict sᶜ)) :=
+ snormEssSup_piecewise f g hs
section MapMeasure
@@ -176,6 +176,7 @@ 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
+@[simp]
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
@@ -908,6 +909,34 @@ theorem meas_snormEssSup_lt {f : α → F} : μ { y | snormEssSup f μ < ‖f y
meas_essSup_lt
#align measure_theory.meas_snorm_ess_sup_lt MeasureTheory.meas_snormEssSup_lt
+lemma snormEssSup_piecewise_le {s : Set α} (f g : α → E) [DecidablePred (· ∈ s)]
+ (hs : MeasurableSet s) :
+ snormEssSup (Set.piecewise s f g) μ
+ ≤ max (snormEssSup f (μ.restrict s)) (snormEssSup g (μ.restrict sᶜ)) := by
+ refine essSup_le_of_ae_le (max (snormEssSup f (μ.restrict s)) (snormEssSup g (μ.restrict sᶜ))) ?_
+ have hf : ∀ᵐ y ∂(μ.restrict s), ↑‖f y‖₊ ≤ snormEssSup f (μ.restrict s) :=
+ ae_le_snormEssSup (μ := μ.restrict s) (f := f)
+ have hg : ∀ᵐ y ∂(μ.restrict sᶜ), ↑‖g y‖₊ ≤ snormEssSup g (μ.restrict sᶜ) :=
+ ae_le_snormEssSup (μ := μ.restrict sᶜ) (f := g)
+ refine ae_of_ae_restrict_of_ae_restrict_compl s ?_ ?_
+ · rw [ae_restrict_iff' hs] at hf ⊢
+ filter_upwards [hf] with x hx
+ intro hx_mem
+ simp only [hx_mem, Set.piecewise_eq_of_mem]
+ exact (hx hx_mem).trans (le_max_left _ _)
+ · rw [ae_restrict_iff' hs.compl] at hg ⊢
+ filter_upwards [hg] with x hx
+ intro hx_mem
+ rw [Set.mem_compl_iff] at hx_mem
+ simp only [hx_mem, not_false_eq_true, Set.piecewise_eq_of_not_mem]
+ exact (hx hx_mem).trans (le_max_right _ _)
+
+lemma snorm_top_piecewise_le {s : Set α} (f g : α → E) [DecidablePred (· ∈ s)]
+ (hs : MeasurableSet s) :
+ snorm (Set.piecewise s f g) ∞ μ
+ ≤ max (snorm f ∞ (μ.restrict s)) (snorm g ∞ (μ.restrict sᶜ)) :=
+ snormEssSup_piecewise_le f g hs
+
section MapMeasure
variable {β : Type*} {mβ : MeasurableSpace β} {f : α → β} {g : β → E}
filter_upwards
(#7719)
mathport was forgetting a space in filter_upwards [...]with
instead of filter_upwards [...] with
.
@@ -1383,7 +1383,7 @@ theorem snorm_le_snorm_top_mul_snorm (p : ℝ≥0∞) (f : α → E) {g : α →
· rw [one_div_nonneg]
exact ENNReal.toReal_nonneg
refine' lintegral_mono_ae _
- filter_upwards [@ENNReal.ae_le_essSup _ _ μ fun x => (‖f x‖₊ : ℝ≥0∞)]with x hx
+ filter_upwards [@ENNReal.ae_le_essSup _ _ μ fun x => (‖f x‖₊ : ℝ≥0∞)] with x hx
exact mul_le_mul_right' (ENNReal.rpow_le_rpow hx ENNReal.toReal_nonneg) _
_ = essSup (fun x => (‖f x‖₊ : ℝ≥0∞)) μ *
(∫⁻ x, (‖g x‖₊ : ℝ≥0∞) ^ p.toReal ∂μ) ^ (1 / p.toReal) := by
@@ -1665,7 +1665,7 @@ theorem ae_bdd_liminf_atTop_of_snorm_bdd {p : ℝ≥0∞} (hp : p ≠ 0) {f :
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
+ 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_atTop_rpow_of_snorm_bdd hfmeas hbdd] with x hx
@@ -490,8 +490,8 @@ theorem snorm_congr_norm_ae {f : α → F} {g : α → G} (hfg : ∀ᵐ x ∂μ,
theorem snorm_indicator_sub_indicator (s t : Set α) (f : α → E) :
snorm (s.indicator f - t.indicator f) p μ = snorm ((s ∆ t).indicator f) p μ :=
- snorm_congr_norm_ae <| ae_of_all _ fun x ↦ by
- simp only [Pi.sub_apply, Set.apply_indicator_symmDiff norm_neg]
+ snorm_congr_norm_ae <| ae_of_all _ fun x ↦ by
+ simp only [Pi.sub_apply, Set.apply_indicator_symmDiff norm_neg]
@[simp]
theorem snorm'_norm {f : α → F} : snorm' (fun a => ‖f a‖) q μ = snorm' f q μ := by simp [snorm']
MeasureTheory.snorm_sub_le'
.neg
lemmas up so that we can use them in MeasureTheory.snorm_sub_le'
.@@ -251,6 +251,31 @@ theorem snorm_measure_zero {f : α → F} : snorm f p (0 : Measure α) = 0 := by
end Zero
+section Neg
+
+@[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, snormEssSup]
+ 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
+
+end Neg
+
section Const
theorem snorm'_const (c : F) (hq_pos : 0 < q) :
@@ -856,21 +881,8 @@ theorem exists_Lp_half (p : ℝ≥0∞) {δ : ℝ≥0∞} (hδ : δ ≠ 0) :
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 `AEMeasurable (-g) μ`, since
- -- we don't suppose `[BorelSpace 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]
+ (p : ℝ≥0∞) : snorm (f - g) p μ ≤ LpAddConst p * (snorm f p μ + snorm g p μ) := by
+ simpa only [sub_eq_add_neg, snorm_neg] using snorm_add_le' hf hg.neg p
#align measure_theory.snorm_sub_le' MeasureTheory.snorm_sub_le'
theorem snorm_sub_le {f g : α → E} (hf : AEStronglyMeasurable f μ) (hg : AEStronglyMeasurable g μ)
@@ -1027,27 +1039,6 @@ theorem memℒp_of_memℒp_trim (hm : m ≤ m0) {f : α → E} (hf : Memℒp f p
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, snormEssSup]
- 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
@@ -463,6 +463,11 @@ theorem snorm_congr_norm_ae {f : α → F} {g : α → G} (hfg : ∀ᵐ x ∂μ,
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_indicator_sub_indicator (s t : Set α) (f : α → E) :
+ snorm (s.indicator f - t.indicator f) p μ = snorm ((s ∆ t).indicator f) p μ :=
+ snorm_congr_norm_ae <| ae_of_all _ fun x ↦ by
+ simp only [Pi.sub_apply, Set.apply_indicator_symmDiff norm_neg]
+
@[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
@@ -533,7 +533,7 @@ theorem Memℒp.of_le {f : α → E} {g : α → F} (hg : Memℒp g p μ) (hf :
⟨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
+alias Memℒp.mono := Memℒp.of_le
#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 μ)
MulZeroClass.
in mul_zero
/zero_mul
(#6682)
Search&replace MulZeroClass.mul_zero
-> mul_zero
, MulZeroClass.zero_mul
-> zero_mul
.
These were introduced by Mathport, as the full name of mul_zero
is actually MulZeroClass.mul_zero
(it's exported with the short name).
@@ -812,7 +812,7 @@ theorem LpAddConst_lt_top (p : ℝ≥0∞) : LpAddConst p < ∞ := by
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]
+ · simp only [snorm_exponent_zero, add_zero, 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 _
@@ -839,7 +839,7 @@ theorem exists_Lp_half (p : ℝ≥0∞) {δ : ℝ≥0∞} (hδ : δ ≠ 0) :
(ENNReal.Tendsto.const_mul (tendsto_id.add tendsto_id)
(Or.inr (LpAddConst_lt_top p).ne)).mono_left
nhdsWithin_le_nhds
- simp only [add_zero, MulZeroClass.mul_zero] at this
+ simp only [add_zero, 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
@@ -1308,7 +1308,7 @@ private theorem le_mul_iff_eq_zero_of_nonneg_of_neg_of_nonneg {α} [LinearOrdere
⟨(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]
+ rw [mul_zero]
/-- When `c` is negative, `‖f x‖ ≤ c * ‖g x‖` is nonsense and forces both `f` and `g` to have an
`snorm` of `0`. -/
@@ -1368,7 +1368,7 @@ theorem snorm_le_snorm_top_mul_snorm (p : ℝ≥0∞) (f : α → E) {g : α →
simp_rw [Pi.mul_apply, ← ENNReal.coe_mul, ENNReal.coe_le_coe]
exact ha
by_cases hp_zero : p = 0
- · simp only [hp_zero, snorm_exponent_zero, MulZeroClass.mul_zero, le_zero_iff]
+ · 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, snormEssSup]
calc
(∫⁻ x, (‖b (f x) (g x)‖₊ : ℝ≥0∞) ^ p.toReal ∂μ) ^ (1 / p.toReal) ≤
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -43,7 +43,7 @@ open TopologicalSpace MeasureTheory Filter
open NNReal ENNReal BigOperators Topology MeasureTheory
-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
@@ -893,7 +893,7 @@ theorem meas_snormEssSup_lt {f : α → F} : μ { y | snormEssSup f μ < ‖f y
section MapMeasure
-variable {β : Type _} {mβ : MeasurableSpace β} {f : α → β} {g : β → E}
+variable {β : Type*} {mβ : MeasurableSpace β} {f : α → β} {g : β → E}
theorem snormEssSup_map_measure (hg : AEStronglyMeasurable g (Measure.map f μ))
(hf : AEMeasurable f μ) : snormEssSup g (Measure.map f μ) = snormEssSup (g ∘ f) μ :=
@@ -1474,7 +1474,7 @@ In this section we show inequalities on the norm.
section BoundedSMul
-variable {𝕜 : Type _} [NormedRing 𝕜] [MulActionWithZero 𝕜 E] [MulActionWithZero 𝕜 F]
+variable {𝕜 : Type*} [NormedRing 𝕜] [MulActionWithZero 𝕜 E] [MulActionWithZero 𝕜 F]
variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜 F]
@@ -1561,7 +1561,7 @@ The inequalities in the previous section are now tight.
section NormedSpace
-variable {𝕜 : Type _} [NormedDivisionRing 𝕜] [MulActionWithZero 𝕜 E] [Module 𝕜 F]
+variable {𝕜 : Type*} [NormedDivisionRing 𝕜] [MulActionWithZero 𝕜 E] [Module 𝕜 F]
variable [BoundedSMul 𝕜 E] [BoundedSMul 𝕜 F]
@@ -1609,7 +1609,7 @@ theorem snorm_indicator_ge_of_bdd_below (hp : p ≠ 0) (hp' : p ≠ ∞) {f : α
section IsROrC
-variable {𝕜 : Type _} [IsROrC 𝕜] {f : α → 𝕜}
+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
@@ -1692,7 +1692,7 @@ end Liminf
/-- A continuous function with compact support belongs to `L^∞`. -/
theorem _root_.Continuous.memℒp_top_of_hasCompactSupport
- {X : Type _} [TopologicalSpace X] [MeasurableSpace X] [OpensMeasurableSpace X]
+ {X : Type*} [TopologicalSpace X] [MeasurableSpace X] [OpensMeasurableSpace X]
{f : X → E} (hf : Continuous f) (h'f : HasCompactSupport f) (μ : Measure X) : Memℒp f ⊤ μ := by
borelize E
rcases hf.bounded_above_of_compact_support h'f with ⟨C, hC⟩
@@ -1690,6 +1690,15 @@ theorem ae_bdd_liminf_atTop_of_snorm_bdd {p : ℝ≥0∞} (hp : p ≠ 0) {f :
end Liminf
+/-- A continuous function with compact support belongs to `L^∞`. -/
+theorem _root_.Continuous.memℒp_top_of_hasCompactSupport
+ {X : Type _} [TopologicalSpace X] [MeasurableSpace X] [OpensMeasurableSpace X]
+ {f : X → E} (hf : Continuous f) (h'f : HasCompactSupport f) (μ : Measure X) : Memℒp f ⊤ μ := by
+ borelize E
+ rcases hf.bounded_above_of_compact_support h'f with ⟨C, hC⟩
+ apply memℒp_top_of_bound ?_ C (Filter.eventually_of_forall hC)
+ exact (hf.stronglyMeasurable_of_hasCompactSupport h'f).aestronglyMeasurable
+
end ℒp
end MeasureTheory
NeZero
for measures (#6048)
Assume NeZero μ
instead of μ.ae.NeBot
everywhere,
and sometimes instead of μ ≠ 0
.
Convex.average_mem
, Convex.set_average_mem
,
ConvexOn.average_mem_epigraph
, ConcaveOn.average_mem_hypograph
,
ConvexOn.map_average_le
, ConcaveOn.le_map_average
:
assume [NeZero μ]
instead of μ ≠ 0
;MeasureTheory.condexp_bot'
, essSup_const'
, essInf_const'
,
MeasureTheory.laverage_const
, MeasureTheory.laverage_one
,
MeasureTheory.average_const
:
assume [NeZero μ]
instead of [μ.ae.NeBot]
MeasureTheory.Measure.measure_ne_zero
: replace with an instance;@[simp]
from MeasureTheory.ae_restrict_neBot
,
use ≠ 0
in the RHS;MeasureTheory.IsProbabilityMeasure.ae_neBot
into a theorem because inferInstance
can find it now;[NeZero μ] : NeZero (μ univ)
;[NeZero (μ s)] : NeZero (μ.restrict s)
;[NeZero μ] : μ.ae.NeBot
;[IsProbabilityMeasure μ] : NeZero μ
;[IsFiniteMeasure μ] [NeZero μ] : IsProbabilityMeasure ((μ univ)⁻¹ • μ)
this was a theorem MeasureTheory.isProbabilityMeasureSmul
assuming μ ≠ 0
;@@ -437,14 +437,13 @@ theorem snormEssSup_lt_top_of_ae_bound {f : α → F} {C : ℝ} (hfC : ∀ᵐ x
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.NeBot := ae_neBot.mpr hμ
+ rcases eq_zero_or_neZero μ with rfl | hμ
+ · simp
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]
+ rw [snorm_const _ hp (NeZero.ne μ), 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) :
@@ -2,11 +2,6 @@
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_seminorm
-! 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.NormedSpace.IndicatorFunction
import Mathlib.Analysis.SpecialFunctions.Pow.Continuity
@@ -14,6 +9,8 @@ import Mathlib.MeasureTheory.Function.EssSup
import Mathlib.MeasureTheory.Function.AEEqFun
import Mathlib.MeasureTheory.Integral.MeanInequalities
+#align_import measure_theory.function.lp_seminorm from "leanprover-community/mathlib"@"c4015acc0a223449d44061e27ddac1835a3852b9"
+
/-!
# ℒp space
@@ -26,7 +26,7 @@ and is almost everywhere strongly measurable.
## Main definitions
-* `snorm' f p μ` : `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `f : α → F` and `p : ℝ`, where `α` is a measurable
+* `snorm' f p μ` : `(∫ ‖f a‖^p ∂μ) ^ (1/p)` for `f : α → F` and `p : ℝ`, where `α` is a measurable
space and `F` is a normed group.
* `snormEssSup 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 μ`
@@ -220,7 +220,7 @@ theorem zero_memℒp : Memℒp (0 : α → E) p μ :=
exact ENNReal.coe_lt_top⟩
#align measure_theory.zero_mem_ℒp MeasureTheory.zero_memℒp
-theorem zero_mem_ℒp' : Memℒp (fun _ : α => (0 : E)) p μ := by convert zero_memℒp (E := E)
+theorem zero_mem_ℒp' : Memℒp (fun _ : α => (0 : E)) p μ := zero_memℒp (E := E)
#align measure_theory.zero_mem_ℒp' MeasureTheory.zero_mem_ℒp'
variable [MeasurableSpace α]
@@ -921,6 +921,24 @@ theorem memℒp_map_measure_iff (hg : AEStronglyMeasurable g (Measure.map f μ))
simp [Memℒp, snorm_map_measure hg hf, hg.comp_aemeasurable hf, hg]
#align measure_theory.mem_ℒp_map_measure_iff MeasureTheory.memℒp_map_measure_iff
+theorem Memℒp.comp_of_map (hg : Memℒp g p (Measure.map f μ)) (hf : AEMeasurable f μ) :
+ Memℒp (g ∘ f) p μ :=
+ (memℒp_map_measure_iff hg.aestronglyMeasurable hf).1 hg
+
+theorem snorm_comp_measurePreserving {ν : MeasureTheory.Measure β} (hg : AEStronglyMeasurable g ν)
+ (hf : MeasurePreserving f μ ν) : snorm (g ∘ f) p μ = snorm g p ν :=
+ Eq.symm <| hf.map_eq ▸ snorm_map_measure (hf.map_eq ▸ hg) hf.aemeasurable
+
+theorem AEEqFun.snorm_compMeasurePreserving {ν : MeasureTheory.Measure β} (g : β →ₘ[ν] E)
+ (hf : MeasurePreserving f μ ν) :
+ snorm (g.compMeasurePreserving f hf) p μ = snorm g p ν := by
+ rw [snorm_congr_ae (g.coeFn_compMeasurePreserving _)]
+ exact snorm_comp_measurePreserving g.aestronglyMeasurable hf
+
+theorem Memℒp.comp_measurePreserving {ν : MeasureTheory.Measure β} (hg : Memℒp g p ν)
+ (hf : MeasurePreserving f μ ν) : Memℒp (g ∘ f) p μ :=
+ .comp_of_map (hf.map_eq.symm ▸ hg) hf.aemeasurable
+
theorem _root_.MeasurableEmbedding.snormEssSup_map_measure {g : β → F}
(hf : MeasurableEmbedding f) : snormEssSup g (Measure.map f μ) = snormEssSup (g ∘ f) μ :=
hf.essSup_map_measure
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
@@ -1588,7 +1588,7 @@ theorem snorm_indicator_ge_of_bdd_below (hp : p ≠ 0) (hp' : p ≠ ∞) {f : α
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⊢
+ · 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
@@ -1055,7 +1055,7 @@ theorem snorm'_le_snorm'_mul_rpow_measure_univ {p q : ℝ} (hp0_lt : 0 < p) (hpq
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‖₊ : ℝ≥0∞) ^ q ∂μ) ≤ ∫⁻ _a : α, snormEssSup f μ ^ q ∂μ := by
+ have h_le : (∫⁻ a : α, (‖f a‖₊ : ℝ≥0∞) ^ q ∂μ) ≤ ∫⁻ _ : α, snormEssSup f μ ^ q ∂μ := by
refine' lintegral_mono_ae _
have h_nnnorm_le_snorm_ess_sup := coe_nnnorm_ae_le_snormEssSup f μ
refine' h_nnnorm_le_snorm_ess_sup.mono fun x hx => ENNReal.rpow_le_rpow hx (le_of_lt hq_pos)
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.
@@ -265,7 +265,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' [FiniteMeasure μ] (c : F) (hc_ne_zero : c ≠ 0) (hq_ne_zero : q ≠ 0) :
+theorem snorm'_const' [IsFiniteMeasure μ] (c : F) (hc_ne_zero : c ≠ 0) (hq_ne_zero : q ≠ 0) :
snorm' (fun _ : α => 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
@@ -284,9 +284,9 @@ theorem snormEssSup_const (c : F) (hμ : μ ≠ 0) : snormEssSup (fun _ : α =>
by rw [snormEssSup, 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 μ] :
+theorem snorm'_const_of_isProbabilityMeasure (c : F) (hq_pos : 0 < q) [IsProbabilityMeasure μ] :
snorm' (fun _ : α => 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
+#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 _ : α => c) p μ = (‖c‖₊ : ℝ≥0∞) * μ Set.univ ^ (1 / ENNReal.toReal p) := by
@@ -319,7 +319,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) [FiniteMeasure μ] : Memℒp (fun _ : α => c) p μ := by
+theorem memℒp_const (c : E) [IsFiniteMeasure μ] : Memℒp (fun _ : α => c) p μ := by
refine' ⟨aestronglyMeasurable_const, _⟩
by_cases h0 : p = 0
· simp [h0]
@@ -562,7 +562,7 @@ theorem memℒp_top_of_bound {f : α → E} (hf : AEStronglyMeasurable f μ) (C
exact snormEssSup_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 [IsFiniteMeasure μ] {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
@@ -1094,23 +1094,23 @@ 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 α) [ProbabilityMeasure μ] {f : α → E}
+ (hpq : p ≤ q) (μ : Measure α) [IsProbabilityMeasure μ] {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 μ] :
+theorem snorm'_le_snormEssSup (hq_pos : 0 < q) {f : α → F} [IsProbabilityMeasure μ] :
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 μ :=
+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 μ :=
(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}
+theorem snorm'_lt_top_of_snorm'_lt_top_of_exponent_le {p q : ℝ} [IsFiniteMeasure μ] {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
@@ -1173,7 +1173,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∞} [FiniteMeasure μ] {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
by_cases hp0 : p = 0
@@ -113,7 +113,7 @@ def Memℒp {α} {_ : MeasurableSpace α} (f : α → E) (p : ℝ≥0∞)
AEStronglyMeasurable f μ ∧ snorm f p μ < ∞
#align measure_theory.mem_ℒp MeasureTheory.Memℒp
--- Porting note: Lean can't generate an equation lemma for this.
+-- Porting note: TODO Delete this when leanprover/lean4#2243 is fixed.
theorem memℒp_def {α} {_ : MeasurableSpace α} (f : α → E) (p : ℝ≥0∞) (μ : Measure α) :
Memℒp f p μ ↔ (AEStronglyMeasurable f μ ∧ snorm f p μ < ∞) :=
Iff.rfl
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