Skip to main content
fpvandoorn/carleson
Source indexedtheorem · leanprover/lean4:v4.32.0

MeasureTheory.eLorentzNorm_add_le''

Carleson.ToMathlib.MeasureTheory.Function.LorentzSeminorm.TriangleInequality · Carleson/ToMathlib/MeasureTheory/Function/LorentzSeminorm/TriangleInequality.lean:32 to 89

Mathematical statement

Exact Lean statement

theorem eLorentzNorm_add_le'' :
    eLorentzNorm (f + g) p q μ ≤ 2 ^ p.toReal⁻¹ * LpAddConst q * (eLorentzNorm f p q μ + eLorentzNorm g p q μ)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
theorem eLorentzNorm_add_le'' :    eLorentzNorm (f + g) p q μ  2 ^ p.toReal⁻¹ * LpAddConst q * (eLorentzNorm f p q μ + eLorentzNorm g p q μ) := by  unfold eLorentzNorm  split_ifs with p_zero p_top q_zero q_top  · simp  · simp  · unfold LpAddConst    simp only [p_top, toReal_top, _root_.inv_zero, rpow_zero, q_top, Set.mem_Ioo, zero_lt_top,      not_top_lt, and_false, ↓reduceIte, mul_one, one_mul]    exact eLpNormEssSup_add_le  · simp only [p_top, toReal_top, _root_.inv_zero, rpow_zero, one_mul]    rw [ mul_add,  mul_assoc, ENNReal.mul_top]    · gcongr      exact eLpNormEssSup_add_le    unfold LpAddConst    split_ifs <;> simp  rw [eLorentzNorm'_eq p_zero p_top]  calc _    _  eLpNorm (fun (t : 0)  ↑t ^ p⁻¹.toReal * (rearrangement f (t / 2) μ + rearrangement g (t / 2) μ))          q (volume.withDensity (fun (t : 0)  t⁻¹)) := by      apply eLpNorm_mono_enorm      intro t      simp only [ENNReal.toReal_inv, enorm_eq_self]      gcongr      convert! rearrangement_add_le      simp    _  LpAddConst q * (eLpNorm (fun (t : 0)  ↑t ^ p⁻¹.toReal * rearrangement f (t / 2) μ) q (volume.withDensity (fun (t : 0)  t⁻¹))        + eLpNorm (fun (t : 0)  ↑t ^ p⁻¹.toReal * rearrangement g (t / 2) μ) q (volume.withDensity (fun (t : 0)  t⁻¹))) := by      simp_rw [mul_add ( _ ^ _)]      apply eLpNorm_add_le' (by fun_prop) (by fun_prop)    _ = LpAddConst q * 2 ^ p.toReal⁻¹ * (eLpNorm (fun (t : 0)  ↑t ^ p⁻¹.toReal * rearrangement f t μ) q (volume.withDensity (fun (t : 0)  t⁻¹))        + eLpNorm (fun (t : 0)  ↑t ^ p⁻¹.toReal * rearrangement g t μ) q (volume.withDensity (fun (t : 0)  t⁻¹))) := by      rw [mul_assoc]      congr      rw [ eLpNorm_withDensity_scale_constant' (a := 2) (by fun_prop) (by norm_num)]      nth_rw 2 [ eLpNorm_withDensity_scale_constant' (a := 2) (by fun_prop) (by norm_num)]      simp only [coe_mul, coe_ofNat]      conv in (2 * _) ^ p⁻¹.toReal => rw [ENNReal.mul_rpow_of_nonneg _ _ (by simp)]      conv in (2 * _) ^ p⁻¹.toReal => rw [ENNReal.mul_rpow_of_nonneg _ _ (by simp)]      have :  {f : α  ε}, (fun (t : 0)  2 ^ p⁻¹.toReal * t ^ p⁻¹.toReal * rearrangement f (2 * t / 2) μ)          = (2 : 0∞) ^ p⁻¹.toReal • fun (t : 0)  t ^ p⁻¹.toReal * rearrangement f (2 * t / 2) μ := by        intro f        ext t        simp only [toReal_inv, Pi.smul_apply, smul_eq_mul]        ring      rw [this, this, eLpNorm_const_smul'' (by simp), eLpNorm_const_smul'' (by simp),  mul_add]      congr      · simp      all_goals      · ext t        congr        rw [mul_div_assoc]        apply ENNReal.mul_div_cancel          <;> norm_num    _ = 2 ^ p.toReal⁻¹ * LpAddConst q * (eLorentzNorm' f p q μ + eLorentzNorm' g p q μ) := by      rw [mul_comm (LpAddConst q)]      symm; congr <;>      · exact eLorentzNorm'_eq p_zero p_top