Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 0ac9f83

Browse files
committed
feat(analysis/mean_inequalities): Minkowski inequality for infinite sums (#10984)
A few versions of the Minkowski inequality for `tsum` and `has_sum`.
1 parent 1a780f6 commit 0ac9f83

File tree

2 files changed

+109
-6
lines changed

2 files changed

+109
-6
lines changed

src/analysis/mean_inequalities.lean

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,51 @@ begin
377377
((is_greatest_Lp s g hpq).2 ⟨φ, hφ, rfl⟩)
378378
end
379379

380+
/-- Minkowski inequality: the `L_p` seminorm of the infinite sum of two vectors is less than or
381+
equal to the infinite sum of the `L_p`-seminorms of the summands, if these infinite sums both
382+
exist. A version for `nnreal`-valued functions. For an alternative version, convenient if the
383+
infinite sums are already expressed as `p`-th powers, see `Lp_add_le_has_sum_of_nonneg`. -/
384+
theorem Lp_add_le_tsum {f g : ι → ℝ≥0} {p : ℝ} (hp : 1 ≤ p) (hf : summable (λ i, (f i) ^ p))
385+
(hg : summable (λ i, (g i) ^ p)) :
386+
summable (λ i, (f i + g i) ^ p) ∧
387+
(∑' i, (f i + g i) ^ p) ^ (1 / p) ≤ (∑' i, (f i) ^ p) ^ (1 / p) + (∑' i, (g i) ^ p) ^ (1 / p) :=
388+
begin
389+
have pos : 0 < p := lt_of_lt_of_le zero_lt_one hp,
390+
have H₁ : ∀ s : finset ι, ∑ i in s, (f i + g i) ^ p
391+
≤ ((∑' i, (f i)^p) ^ (1/p) + (∑' i, (g i)^p) ^ (1/p)) ^ p,
392+
{ intros s,
393+
rw ← nnreal.rpow_one_div_le_iff pos,
394+
refine le_trans (Lp_add_le s f g hp) (add_le_add _ _);
395+
rw nnreal.rpow_le_rpow_iff (one_div_pos.mpr pos);
396+
refine sum_le_tsum _ (λ _ _, zero_le _) _,
397+
exacts [hf, hg] },
398+
have bdd : bdd_above (set.range (λ s, ∑ i in s, (f i + g i) ^ p)),
399+
{ refine ⟨((∑' i, (f i)^p) ^ (1/p) + (∑' i, (g i)^p) ^ (1/p)) ^ p, _⟩,
400+
rintros a ⟨s, rfl⟩,
401+
exact H₁ s },
402+
have H₂ : summable _ := (has_sum_of_is_lub _ (is_lub_csupr bdd)).summable,
403+
refine ⟨H₂, _⟩,
404+
rw nnreal.rpow_one_div_le_iff pos,
405+
refine tsum_le_of_sum_le H₂ H₁,
406+
end
407+
408+
/-- Minkowski inequality: the `L_p` seminorm of the infinite sum of two vectors is less than or
409+
equal to the infinite sum of the `L_p`-seminorms of the summands, if these infinite sums both
410+
exist. A version for `nnreal`-valued functions. For an alternative version, convenient if the
411+
infinite sums are not already expressed as `p`-th powers, see `Lp_add_le_tsum_of_nonneg`. -/
412+
theorem Lp_add_le_has_sum {f g : ι → ℝ≥0} {A B : ℝ≥0} {p : ℝ} (hp : 1 ≤ p)
413+
(hf : has_sum (λ i, (f i) ^ p) (A ^ p)) (hg : has_sum (λ i, (g i) ^ p) (B ^ p)) :
414+
∃ C, C ≤ A + B ∧ has_sum (λ i, (f i + g i) ^ p) (C ^ p) :=
415+
begin
416+
have hp' : p ≠ 0 := (lt_of_lt_of_le zero_lt_one hp).ne',
417+
obtain ⟨H₁, H₂⟩ := Lp_add_le_tsum hp hf.summable hg.summable,
418+
have hA : A = (∑' (i : ι), f i ^ p) ^ (1 / p) := by rw [hf.tsum_eq, rpow_inv_rpow_self hp'],
419+
have hB : B = (∑' (i : ι), g i ^ p) ^ (1 / p) := by rw [hg.tsum_eq, rpow_inv_rpow_self hp'],
420+
refine ⟨(∑' i, (f i + g i) ^ p) ^ (1 / p), _, _⟩,
421+
{ simpa [hA, hB] using H₂ },
422+
{ simpa only [rpow_self_rpow_inv hp'] using H₁.has_sum }
423+
end
424+
380425
end nnreal
381426

382427
namespace real
@@ -441,14 +486,49 @@ by convert rpow_sum_le_const_mul_sum_rpow s f hp using 2; apply sum_congr rfl; i
441486
simp only [abs_of_nonneg, hf i hi]
442487

443488
/-- Minkowski inequality: the `L_p` seminorm of the sum of two vectors is less than or equal
444-
to the sum of the `L_p`-seminorms of the summands. A version for `real`-valued nonnegative
489+
to the sum of the `L_p`-seminorms of the summands. A version for ``-valued nonnegative
445490
functions. -/
446491
theorem Lp_add_le_of_nonneg (hp : 1 ≤ p) (hf : ∀ i ∈ s, 0 ≤ f i) (hg : ∀ i ∈ s, 0 ≤ g i) :
447492
(∑ i in s, (f i + g i) ^ p) ^ (1 / p) ≤
448493
(∑ i in s, (f i) ^ p) ^ (1 / p) + (∑ i in s, (g i) ^ p) ^ (1 / p) :=
449494
by convert Lp_add_le s f g hp using 2 ; [skip, congr' 1, congr' 1];
450495
apply sum_congr rfl; intros i hi; simp only [abs_of_nonneg, hf i hi, hg i hi, add_nonneg]
451496

497+
/-- Minkowski inequality: the `L_p` seminorm of the infinite sum of two vectors is less than or
498+
equal to the infinite sum of the `L_p`-seminorms of the summands, if these infinite sums both
499+
exist. A version for `ℝ`-valued functions. For an alternative version, convenient if the infinite
500+
sums are already expressed as `p`-th powers, see `Lp_add_le_has_sum_of_nonneg`. -/
501+
theorem Lp_add_le_tsum_of_nonneg (hp : 1 ≤ p) (hf : ∀ i, 0 ≤ f i) (hg : ∀ i, 0 ≤ g i)
502+
(hf_sum : summable (λ i, (f i) ^ p)) (hg_sum : summable (λ i, (g i) ^ p)) :
503+
summable (λ i, (f i + g i) ^ p) ∧
504+
(∑' i, (f i + g i) ^ p) ^ (1 / p) ≤ (∑' i, (f i) ^ p) ^ (1 / p) + (∑' i, (g i) ^ p) ^ (1 / p) :=
505+
begin
506+
lift f to (ι → ℝ≥0) using hf,
507+
lift g to (ι → ℝ≥0) using hg,
508+
norm_cast at *,
509+
exact nnreal.Lp_add_le_tsum hp hf_sum hg_sum,
510+
end
511+
512+
/-- Minkowski inequality: the `L_p` seminorm of the infinite sum of two vectors is less than or
513+
equal to the infinite sum of the `L_p`-seminorms of the summands, if these infinite sums both
514+
exist. A version for `ℝ`-valued functions. For an alternative version, convenient if the infinite
515+
sums are not already expressed as `p`-th powers, see `Lp_add_le_tsum_of_nonneg`. -/
516+
theorem Lp_add_le_has_sum_of_nonneg (hp : 1 ≤ p) (hf : ∀ i, 0 ≤ f i) (hg : ∀ i, 0 ≤ g i) {A B : ℝ}
517+
(hA : 0 ≤ A) (hB : 0 ≤ B) (hfA : has_sum (λ i, (f i) ^ p) (A ^ p))
518+
(hgB : has_sum (λ i, (g i) ^ p) (B ^ p)) :
519+
∃ C, 0 ≤ C ∧ C ≤ A + B ∧ has_sum (λ i, (f i + g i) ^ p) (C ^ p) :=
520+
begin
521+
lift f to (ι → ℝ≥0) using hf,
522+
lift g to (ι → ℝ≥0) using hg,
523+
lift A to ℝ≥0 using hA,
524+
lift B to ℝ≥0 using hB,
525+
norm_cast at hfA hgB,
526+
obtain ⟨C, hC₁, hC₂⟩ := nnreal.Lp_add_le_has_sum hp hfA hgB,
527+
use C,
528+
norm_cast,
529+
exact ⟨zero_le _, hC₁, hC₂⟩,
530+
end
531+
452532
end real
453533

454534
namespace ennreal

src/analysis/special_functions/pow.lean

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -889,6 +889,12 @@ lemma rpow_sub' (x : ℝ≥0) {y z : ℝ} (h : y - z ≠ 0) :
889889
x ^ (y - z) = x ^ y / x ^ z :=
890890
nnreal.eq $ real.rpow_sub' x.2 h
891891

892+
lemma rpow_inv_rpow_self {y : ℝ} (hy : y ≠ 0) (x : ℝ≥0) : (x ^ y) ^ (1 / y) = x :=
893+
by field_simp [← rpow_mul]
894+
895+
lemma rpow_self_rpow_inv {y : ℝ} (hy : y ≠ 0) (x : ℝ≥0) : (x ^ (1 / y)) ^ y = x :=
896+
by field_simp [← rpow_mul]
897+
892898
lemma inv_rpow (x : ℝ≥0) (y : ℝ) : (x⁻¹) ^ y = (x ^ y)⁻¹ :=
893899
nnreal.eq $ real.inv_rpow x.2 y
894900

@@ -921,11 +927,10 @@ lemma rpow_le_rpow_iff {x y : ℝ≥0} {z : ℝ} (hz : 0 < z) : x ^ z ≤ y ^ z
921927
real.rpow_le_rpow_iff x.2 y.2 hz
922928

923929
lemma le_rpow_one_div_iff {x y : ℝ≥0} {z : ℝ} (hz : 0 < z) : x ≤ y ^ (1 / z) ↔ x ^ z ≤ y :=
924-
begin
925-
nth_rewrite 0 ←rpow_one x,
926-
nth_rewrite 0 ←@_root_.mul_inv_cancel _ _ z hz.ne',
927-
rw [rpow_mul, ←one_div, @rpow_le_rpow_iff _ _ (1/z) (by simp [hz])],
928-
end
930+
by rw [← rpow_le_rpow_iff hz, rpow_self_rpow_inv hz.ne']
931+
932+
lemma rpow_one_div_le_iff {x y : ℝ≥0} {z : ℝ} (hz : 0 < z) : x ^ (1 / z) ≤ y ↔ x ≤ y ^ z :=
933+
by rw [← rpow_le_rpow_iff hz, rpow_self_rpow_inv hz.ne']
929934

930935
lemma rpow_lt_rpow_of_exponent_lt {x : ℝ≥0} {y z : ℝ} (hx : 1 < x) (hyz : y < z) : x^y < x^z :=
931936
real.rpow_lt_rpow_of_exponent_lt hx hyz
@@ -976,6 +981,24 @@ begin
976981
exact nnreal.rpow_le_rpow_of_exponent_ge h hx h_one_le,
977982
end
978983

984+
lemma rpow_left_injective {x : ℝ} (hx : x ≠ 0) : function.injective (λ y : ℝ≥0, y^x) :=
985+
λ y z hyz, by simpa only [rpow_inv_rpow_self hx] using congr_arg (λ y, y ^ (1 / x)) hyz
986+
987+
lemma rpow_eq_rpow_iff {x y : ℝ≥0} {z : ℝ} (hz : z ≠ 0) : x ^ z = y ^ z ↔ x = y :=
988+
(rpow_left_injective hz).eq_iff
989+
990+
lemma rpow_left_surjective {x : ℝ} (hx : x ≠ 0) : function.surjective (λ y : ℝ≥0, y^x) :=
991+
λ y, ⟨y ^ x⁻¹, by simp_rw [←rpow_mul, _root_.inv_mul_cancel hx, rpow_one]⟩
992+
993+
lemma rpow_left_bijective {x : ℝ} (hx : x ≠ 0) : function.bijective (λ y : ℝ≥0, y^x) :=
994+
⟨rpow_left_injective hx, rpow_left_surjective hx⟩
995+
996+
lemma eq_rpow_one_div_iff {x y : ℝ≥0} {z : ℝ} (hz : z ≠ 0) : x = y ^ (1 / z) ↔ x ^ z = y :=
997+
by rw [← rpow_eq_rpow_iff hz, rpow_self_rpow_inv hz]
998+
999+
lemma rpow_one_div_eq_iff {x y : ℝ≥0} {z : ℝ} (hz : z ≠ 0) : x ^ (1 / z) = y ↔ x = y ^ z :=
1000+
by rw [← rpow_eq_rpow_iff hz, rpow_self_rpow_inv hz]
1001+
9791002
lemma pow_nat_rpow_nat_inv (x : ℝ≥0) {n : ℕ} (hn : 0 < n) :
9801003
(x ^ n) ^ (n⁻¹ : ℝ) = x :=
9811004
by { rw [← nnreal.coe_eq, coe_rpow, nnreal.coe_pow], exact real.pow_nat_rpow_nat_inv x.2 hn }

0 commit comments

Comments
 (0)