Skip to content

Commit bebe25f

Browse files
committed
Merge branch 'holder-triple-inequalities' of https://github.com/j-loreaux/mathlib4 into holder-triple-inequalities
2 parents bb42f77 + ed85ab6 commit bebe25f

1 file changed

Lines changed: 26 additions & 29 deletions

File tree

Mathlib/Analysis/MeanInequalities.lean

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -502,26 +502,23 @@ theorem inner_le_Lp_mul_Lq (f g : ι → ℝ≥0) {p q : ℝ} (hpq : p.HolderCon
502502
· simp_rw [g', div_rpow, ← sum_div, ← rpow_mul, one_div, inv_mul_cancel₀ hpq.symm.ne_zero,
503503
rpow_one, div_self hg.ne']
504504

505-
/-- **Hölder inequality**: The (`r`-power of the) `L^r` norm of two functions is bounded by the
506-
product of (the `r`-powers of) their `L^p` and `L^q` norms when `p`, `q`, and `r` form a
507-
`Real.HolderTriple`. -/
505+
/-- **Hölder inequality**: The (`r`-power of the) `L^r` norm of the product of two functions is
506+
bounded by the product of (the `r`-powers of) their `L^p` and `L^q` norms when `p`, `q`, and `r`
507+
form a `Real.HolderTriple`. -/
508508
theorem Lr_rpow_le_Lp_mul_Lq (f g : ι → ℝ≥0) {p q r : ℝ} (hpqr : p.HolderTriple q r) :
509509
∑ i ∈ s, (f i * g i) ^ r ≤ (∑ i ∈ s, f i ^ p) ^ (r / p) * (∑ i ∈ s, g i ^ q) ^ (r / q) := by
510-
have := hpqr.holderConjugate_div_div
511-
have hp := hpqr.pos
512-
have hq := hpqr.symm.pos
513-
have hr := hpqr.pos'
514-
calc ∑ i ∈ s, (f i * g i) ^ r
515-
_ = ∑ i ∈ s, (f i) ^ r * (g i) ^ r := s.sum_congr rfl fun i hi ↦ mul_rpow ..
516-
_ ≤ (∑ i ∈ s, f i ^ p) ^ (r / p) * (∑ i ∈ s, g i ^ q) ^ (r / q) := by
517-
apply inner_le_Lp_mul_Lq s _ _ this |>.trans_eq
518-
congr! 2
519-
all_goals try simp only [fieldEq]
520-
all_goals
521-
refine s.sum_congr rfl fun i hi ↦ by simp [← rpow_mul, ← mul_div_assoc, hr.ne']
522-
523-
/-- **Hölder inequality**: The `L^r` norm of two functions is bounded by the
524-
product of their `L^p` and `L^q` norms when `p`, `q`, and `r` form a `Real.HolderTriple`. -/
510+
have := hpqr.holderConjugate_div_div
511+
calc ∑ i ∈ s, (f i * g i) ^ r
512+
_ = ∑ i ∈ s, (f i) ^ r * (g i) ^ r := s.sum_congr rfl fun i hi ↦ mul_rpow ..
513+
_ ≤ (∑ i ∈ s, f i ^ p) ^ (r / p) * (∑ i ∈ s, g i ^ q) ^ (r / q) := by
514+
apply inner_le_Lp_mul_Lq s _ _ this |>.trans_eq
515+
congr! 2
516+
all_goals try simp only [fieldEq]
517+
all_goals
518+
refine s.sum_congr rfl fun i hi ↦ by simp [← rpow_mul, ← mul_div_assoc, hpqr.pos'.ne']
519+
520+
/-- **Hölder inequality**: The `L^r` norm of the product of two functions is bounded by the
521+
product of their `L^p` and `L^q` norms when `p`, `q`, and `r` form a `Real.HolderTriple`. -/
525522
theorem Lr_le_Lp_mul_Lq (f g : ι → ℝ≥0) {p q r : ℝ} (hpqr : p.HolderTriple q r) :
526523
(∑ i ∈ s, (f i * g i) ^ r) ^ (1 / r) ≤
527524
(∑ i ∈ s, f i ^ p) ^ (1 / p) * (∑ i ∈ s, g i ^ q) ^ (1 / q) := by
@@ -549,10 +546,10 @@ lemma inner_le_weight_mul_Lp (s : Finset ι) {p : ℝ} (hp : 1 ≤ p) (w f : ι
549546
have hp₁ : 1 - p⁻¹ ≠ 0 := by simp [sub_eq_zero, hp.ne']
550547
simp [mul_rpow, div_inv_eq_mul, one_mul, one_div, hp₀, hp₁]
551548

552-
/-- **Hölder inequality**: The (`r`-power of the) `L^r` norm of two functions is bounded by the
553-
product of (the `r`-powers of) their `L^p` and `L^q` norms when `p`, `q`, and `r` form a
554-
`Real.HolderTriple`. A version for `NNReal`-valued functions. For an alternative version,
555-
convenient if the infinite sums are already expressed as powers, see `inner_le_Lp_mul_Lq_hasSum`. -/
549+
/-- **Hölder inequality**: The (`r`-power of the) `L^r` norm of the product of two functions is
550+
bounded by the product of (the `r`-powers of) their `L^p` and `L^q` norms when `p`, `q`, and `r`
551+
form a `Real.HolderTriple`. A version for `NNReal`-valued functions. For an alternative version,
552+
convenient if the infinite sums are already expressed as powers, see `inner_le_Lp_mul_Lq_hasSum`. -/
556553
theorem summable_and_Lr_rpow_le_Lp_mul_Lq_tsum {f g : ι → ℝ≥0} {p q r : ℝ}
557554
(hpqr : p.HolderTriple q r) (hf : Summable fun i => f i ^ p) (hg : Summable fun i => g i ^ q) :
558555
(Summable fun i => (f i * g i) ^ r) ∧
@@ -875,13 +872,13 @@ theorem Lr_le_Lp_mul_Lq_tsum_of_nonneg (hpqr : p.HolderTriple q r) (hf : ∀ i,
875872
-- It's really inconvenient that `positivity` can't use `∀` hypotheses.
876873
have hf' : 0 ≤ ∑' i, f i ^ p := tsum_nonneg fun i ↦ rpow_nonneg (hf i) p
877874
have hg' : 0 ≤ ∑' i, g i ^ q := tsum_nonneg fun i ↦ rpow_nonneg (hg i) q
878-
obtain ⟨hp, hq, hr⟩ := hpqr.all_pos
879-
convert rpow_le_rpow_iff (tsum_nonneg fun i ↦ rpow_nonneg (mul_nonneg (hf i) (hg i)) r)
880-
(by apply mul_nonneg; all_goals apply rpow_nonneg; assumption)
881-
(inv_eq_one_div r ▸ inv_pos.mpr hpqr.pos') |>.mpr <|
882-
Lr_rpow_le_Lp_mul_Lq_tsum_of_nonneg hpqr hf hg hf_sum hg_sum using 1
883-
rw [mul_rpow (rpow_nonneg hf' _) (rpow_nonneg hg' _), ← Real.rpow_mul hg', ← Real.rpow_mul hf']
884-
field_simp
875+
have hr := hpqr.pos'
876+
convert rpow_le_rpow_iff (tsum_nonneg fun i ↦ rpow_nonneg (mul_nonneg (hf i) (hg i)) r)
877+
(by apply mul_nonneg; all_goals apply rpow_nonneg; assumption)
878+
(inv_eq_one_div r ▸ inv_pos.mpr hr) |>.mpr <|
879+
Lr_rpow_le_Lp_mul_Lq_tsum_of_nonneg hpqr hf hg hf_sum hg_sum using 1
880+
rw [mul_rpow (rpow_nonneg hf' _) (rpow_nonneg hg' _), ← Real.rpow_mul hg', ← Real.rpow_mul hf']
881+
field_simp
885882

886883
theorem inner_le_Lp_mul_Lq_tsum_of_nonneg (hpq : p.HolderConjugate q) (hf : ∀ i, 0 ≤ f i)
887884
(hg : ∀ i, 0 ≤ g i) (hf_sum : Summable fun i => f i ^ p) (hg_sum : Summable fun i => g i ^ q) :

0 commit comments

Comments
 (0)