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

Commit 64ddb12

Browse files
RemyDegennesgouezel
andcommitted
feat(analysis/mean_inequalities): add Hölder's inequality for the Lebesgue integral of ennreal and nnreal functions (#5267)
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr>
1 parent 3996bd4 commit 64ddb12

File tree

5 files changed

+219
-2
lines changed

5 files changed

+219
-2
lines changed

src/analysis/mean_inequalities.lean

Lines changed: 179 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
/-
22
Copyright (c) 2019 Yury Kudryashov. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
4-
Authors: Yury Kudryashov, Sébastien Gouëzel
4+
Authors: Yury Kudryashov, Sébastien Gouëzel, Rémy Degenne
55
-/
66
import analysis.convex.specific_functions
77
import analysis.special_functions.pow
88
import data.real.conjugate_exponents
99
import tactic.nth_rewrite
10+
import measure_theory.integration
1011

1112
/-!
1213
# Mean value inequalities
@@ -79,6 +80,12 @@ There are at least two short proofs of this inequality. In one proof we prenorma
7980
then apply Young's inequality to each $a_ib_i$. We use a different proof deducing this inequality
8081
from the generalized mean inequality for well-chosen vectors and weights.
8182
83+
Hölder's inequality for the Lebesgue integral of ennreal and nnreal functions: we prove
84+
`∫ (f * g) ∂μ ≤ (∫ f^p ∂μ) ^ (1/p) * (∫ g^q ∂μ) ^ (1/q)` for `p`, `q` conjugate real exponents
85+
and `α→(e)nnreal` functions in two cases,
86+
* `ennreal.lintegral_mul_le_Lp_mul_Lq` : ennreal functions,
87+
* `nnreal.lintegral_mul_le_Lp_mul_Lq` : nnreal functions.
88+
8289
### Minkowski's inequality
8390
8491
The inequality says that for `p ≥ 1` the function
@@ -522,3 +529,174 @@ begin
522529
end
523530

524531
end ennreal
532+
533+
section lintegral
534+
/-!
535+
### Hölder's inequality for the Lebesgue integral of ennreal and nnreal functions
536+
537+
We prove `∫ (f * g) ∂μ ≤ (∫ f^p ∂μ) ^ (1/p) * (∫ g^q ∂μ) ^ (1/q)` for `p`, `q`
538+
conjugate real exponents and `α→(e)nnreal` functions in several cases, the first two being useful
539+
only to prove the more general results:
540+
* `ennreal.lintegral_mul_le_one_of_lintegral_rpow_eq_one` : ennreal functions for which the
541+
integrals on the right are equal to 1,
542+
* `ennreal.lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_ne_top` : ennreal functions for which the
543+
integrals on the right are neither ⊤ nor 0,
544+
* `ennreal.lintegral_mul_le_Lp_mul_Lq` : ennreal functions,
545+
* `nnreal.lintegral_mul_le_Lp_mul_Lq` : nnreal functions.
546+
-/
547+
548+
open measure_theory
549+
variables {α : Type*} [measurable_space α] {μ : measure α}
550+
551+
namespace ennreal
552+
553+
lemma lintegral_mul_le_one_of_lintegral_rpow_eq_one {p q : ℝ} (hpq : p.is_conjugate_exponent q)
554+
{f g : α → ennreal} (hf : measurable f) (hg : measurable g)
555+
(hf_norm : ∫⁻ a, (f a)^p ∂μ = 1) (hg_norm : ∫⁻ a, (g a)^q ∂μ = 1) :
556+
∫⁻ a, (f * g) a ∂μ ≤ 1 :=
557+
begin
558+
calc ∫⁻ (a : α), ((f * g) a) ∂μ
559+
≤ ∫⁻ (a : α), ((f a)^p / ennreal.of_real p + (g a)^q / ennreal.of_real q) ∂μ :
560+
lintegral_mono (λ a, young_inequality (f a) (g a) hpq)
561+
... = 1 :
562+
begin
563+
simp_rw [div_def],
564+
rw lintegral_add,
565+
{ rw [lintegral_mul_const _ hf.ennreal_rpow_const, lintegral_mul_const _ hg.ennreal_rpow_const,
566+
hf_norm, hg_norm, ←ennreal.div_def, ←ennreal.div_def, hpq.inv_add_inv_conj_ennreal], },
567+
{ exact hf.ennreal_rpow_const.ennreal_mul measurable_const, },
568+
{ exact hg.ennreal_rpow_const.ennreal_mul measurable_const, },
569+
end
570+
end
571+
572+
/-- Function multiplied by the inverse of its p-seminorm `(∫⁻ f^p ∂μ) ^ 1/p`-/
573+
def fun_mul_inv_snorm (f : α → ennreal) (p : ℝ) (μ : measure α) : α → ennreal :=
574+
λ a, (f a) * ((∫⁻ c, (f c) ^ p ∂μ) ^ (1 / p))⁻¹
575+
576+
lemma fun_eq_fun_mul_inv_snorm_mul_snorm {p : ℝ} (f : α → ennreal)
577+
(hf_nonzero : ∫⁻ a, (f a) ^ p ∂μ ≠ 0) (hf_top : ∫⁻ a, (f a) ^ p ∂μ ≠ ⊤) {a : α} :
578+
f a = (fun_mul_inv_snorm f p μ a) * (∫⁻ c, (f c)^p ∂μ)^(1/p) :=
579+
by simp [fun_mul_inv_snorm, mul_assoc, inv_mul_cancel, hf_nonzero, hf_top]
580+
581+
lemma fun_mul_inv_snorm_rpow {p : ℝ} (hp0 : 0 < p) {f : α → ennreal} {a : α} :
582+
(fun_mul_inv_snorm f p μ a) ^ p = (f a)^p * (∫⁻ c, (f c) ^ p ∂μ)⁻¹ :=
583+
begin
584+
rw [fun_mul_inv_snorm, mul_rpow_of_nonneg _ _ (le_of_lt hp0)],
585+
suffices h_inv_rpow : ((∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p))⁻¹ ^ p = (∫⁻ (c : α), f c ^ p ∂μ)⁻¹,
586+
by rw h_inv_rpow,
587+
rw [inv_rpow_of_pos hp0, ←rpow_mul, div_eq_mul_inv, one_mul,
588+
_root_.inv_mul_cancel (ne_of_lt hp0).symm, rpow_one],
589+
end
590+
591+
lemma lintegral_rpow_fun_mul_inv_snorm_eq_one {p : ℝ} (hp0_lt : 0 < p) {f : α → ennreal}
592+
(hf : measurable f) (hf_nonzero : ∫⁻ a, (f a)^p ∂μ ≠ 0) (hf_top : ∫⁻ a, (f a)^p ∂μ ≠ ⊤) :
593+
∫⁻ c, (fun_mul_inv_snorm f p μ c)^p ∂μ = 1 :=
594+
begin
595+
simp_rw fun_mul_inv_snorm_rpow hp0_lt,
596+
rw [lintegral_mul_const _ hf.ennreal_rpow_const, mul_inv_cancel hf_nonzero hf_top],
597+
end
598+
599+
/-- Hölder's inequality in case of finite non-zero integrals -/
600+
lemma lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_ne_top {p q : ℝ} (hpq : p.is_conjugate_exponent q)
601+
{f g : α → ennreal} (hf : measurable f) (hg : measurable g)
602+
(hf_nontop : ∫⁻ a, (f a)^p ∂μ ≠ ⊤) (hg_nontop : ∫⁻ a, (g a)^q ∂μ ≠ ⊤)
603+
(hf_nonzero : ∫⁻ a, (f a)^p ∂μ ≠ 0) (hg_nonzero : ∫⁻ a, (g a)^q ∂μ ≠ 0) :
604+
∫⁻ a, (f * g) a ∂μ ≤ (∫⁻ a, (f a)^p ∂μ)^(1/p) * (∫⁻ a, (g a)^q ∂μ)^(1/q) :=
605+
begin
606+
let npf := (∫⁻ (c : α), (f c) ^ p ∂μ) ^ (1/p),
607+
let nqg := (∫⁻ (c : α), (g c) ^ q ∂μ) ^ (1/q),
608+
calc ∫⁻ (a : α), (f * g) a ∂μ
609+
= ∫⁻ (a : α), ((fun_mul_inv_snorm f p μ * fun_mul_inv_snorm g q μ) a)
610+
* (npf * nqg) ∂μ :
611+
begin
612+
refine lintegral_congr (λ a, _),
613+
rw [pi.mul_apply, fun_eq_fun_mul_inv_snorm_mul_snorm f hf_nonzero hf_nontop,
614+
fun_eq_fun_mul_inv_snorm_mul_snorm g hg_nonzero hg_nontop, pi.mul_apply],
615+
ring,
616+
end
617+
... ≤ npf * nqg :
618+
begin
619+
rw lintegral_mul_const' (npf * nqg) _ (by simp [hf_nontop, hg_nontop, hf_nonzero, hg_nonzero]),
620+
nth_rewrite 1 ←one_mul (npf * nqg),
621+
refine mul_le_mul _ (le_refl (npf * nqg)),
622+
have hf1 := lintegral_rpow_fun_mul_inv_snorm_eq_one hpq.pos hf hf_nonzero hf_nontop,
623+
have hg1 := lintegral_rpow_fun_mul_inv_snorm_eq_one hpq.symm.pos hg hg_nonzero hg_nontop,
624+
exact lintegral_mul_le_one_of_lintegral_rpow_eq_one hpq (hf.ennreal_mul measurable_const)
625+
(hg.ennreal_mul measurable_const) hf1 hg1,
626+
end
627+
end
628+
629+
lemma ae_eq_zero_of_lintegral_rpow_eq_zero {p : ℝ} (hp0_lt : 0 < p) {f : α → ennreal}
630+
(hf : measurable f) (hf_zero : ∫⁻ a, (f a)^p ∂μ = 0) :
631+
f =ᵐ[μ] 0 :=
632+
begin
633+
rw lintegral_eq_zero_iff hf.ennreal_rpow_const at hf_zero,
634+
refine filter.eventually.mp hf_zero (filter.eventually_of_forall (λ x, _)),
635+
dsimp only,
636+
rw [pi.zero_apply, rpow_eq_zero_iff],
637+
intro hx,
638+
cases hx,
639+
{ exact hx.left, },
640+
{ exfalso,
641+
linarith, },
642+
end
643+
644+
lemma lintegral_mul_eq_zero_of_lintegral_rpow_eq_zero {p : ℝ} (hp0_lt : 0 < p)
645+
{f g : α → ennreal} (hf : measurable f) (hf_zero : ∫⁻ a, (f a)^p ∂μ = 0) :
646+
∫⁻ a, (f * g) a ∂μ = 0 :=
647+
begin
648+
rw ←@lintegral_zero_fun α _ μ,
649+
refine lintegral_congr_ae _,
650+
suffices h_mul_zero : f * g =ᵐ[μ] 0 * g , by rwa zero_mul at h_mul_zero,
651+
have hf_eq_zero : f =ᵐ[μ] 0, from ae_eq_zero_of_lintegral_rpow_eq_zero hp0_lt hf hf_zero,
652+
exact filter.eventually_eq.mul hf_eq_zero (ae_eq_refl g),
653+
end
654+
655+
lemma lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_eq_top {p q : ℝ} (hp0_lt : 0 < p) (hq0 : 0 ≤ q)
656+
{f g : α → ennreal} (hf_top : ∫⁻ a, (f a)^p ∂μ = ⊤) (hg_nonzero : ∫⁻ a, (g a)^q ∂μ ≠ 0) :
657+
∫⁻ a, (f * g) a ∂μ ≤ (∫⁻ a, (f a)^p ∂μ) ^ (1/p) * (∫⁻ a, (g a)^q ∂μ) ^ (1/q) :=
658+
begin
659+
refine le_trans le_top (le_of_eq _),
660+
have hp0_inv_lt : 0 < 1/p, by simp [hp0_lt],
661+
rw [hf_top, ennreal.top_rpow_of_pos hp0_inv_lt],
662+
simp [hq0, hg_nonzero],
663+
end
664+
665+
/-- Hölder's inequality for functions `α → ennreal`. The integral of the product of two functions
666+
is bounded by the product of their `ℒp` and `ℒq` seminorms when `p` and `q` are conjugate
667+
exponents. -/
668+
theorem lintegral_mul_le_Lp_mul_Lq (μ : measure α) {p q : ℝ} (hpq : p.is_conjugate_exponent q)
669+
{f g : α → ennreal} (hf : measurable f) (hg : measurable g) :
670+
∫⁻ a, (f * g) a ∂μ ≤ (∫⁻ a, (f a)^p ∂μ) ^ (1/p) * (∫⁻ a, (g a)^q ∂μ) ^ (1/q) :=
671+
begin
672+
by_cases hf_zero : ∫⁻ a, (f a) ^ p ∂μ = 0,
673+
{ refine le_trans (le_of_eq _) (zero_le _),
674+
exact lintegral_mul_eq_zero_of_lintegral_rpow_eq_zero hpq.pos hf hf_zero, },
675+
by_cases hg_zero : ∫⁻ a, (g a) ^ q ∂μ = 0,
676+
{ refine le_trans (le_of_eq _) (zero_le _),
677+
rw mul_comm,
678+
exact lintegral_mul_eq_zero_of_lintegral_rpow_eq_zero hpq.symm.pos hg hg_zero, },
679+
by_cases hf_top : ∫⁻ a, (f a) ^ p ∂μ = ⊤,
680+
{ exact lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_eq_top hpq.pos hpq.symm.nonneg hf_top hg_zero, },
681+
by_cases hg_top : ∫⁻ a, (g a) ^ q ∂μ = ⊤,
682+
{ rw [mul_comm, mul_comm ((∫⁻ (a : α), (f a) ^ p ∂μ) ^ (1 / p))],
683+
exact lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_eq_top hpq.symm.pos hpq.nonneg hg_top hf_zero, },
684+
-- non-⊤ non-zero case
685+
exact ennreal.lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_ne_top hpq hf hg hf_top hg_top hf_zero
686+
hg_zero,
687+
end
688+
689+
end ennreal
690+
691+
/-- Hölder's inequality for functions `α → nnreal`. The integral of the product of two functions
692+
is bounded by the product of their `ℒp` and `ℒq` seminorms when `p` and `q` are conjugate
693+
exponents. -/
694+
theorem nnreal.lintegral_mul_le_Lp_mul_Lq {p q : ℝ} (hpq : p.is_conjugate_exponent q)
695+
{f g : α → nnreal} (hf : measurable f) (hg : measurable g) :
696+
∫⁻ a, (f * g) a ∂μ ≤ (∫⁻ a, (f a)^p ∂μ)^(1/p) * (∫⁻ a, (g a)^q ∂μ)^(1/q) :=
697+
begin
698+
simp_rw [pi.mul_apply, ennreal.coe_mul],
699+
exact ennreal.lintegral_mul_le_Lp_mul_Lq μ hpq hf.ennreal_coe hg.ennreal_coe,
700+
end
701+
702+
end lintegral

src/analysis/special_functions/pow.lean

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,6 +1003,13 @@ begin
10031003
{ exact ((continuous_subtype_val.comp continuous_fst).prod_mk continuous_snd).continuous_at }
10041004
end
10051005

1006+
lemma of_real_rpow_of_nonneg {x y : ℝ} (hx : 0 ≤ x) :
1007+
nnreal.of_real (x ^ y) = (nnreal.of_real x) ^ y :=
1008+
begin
1009+
nth_rewrite 0 ← nnreal.coe_of_real x hx,
1010+
rw [←nnreal.coe_rpow, nnreal.of_real_coe],
1011+
end
1012+
10061013
end nnreal
10071014

10081015
section measurability_nnreal
@@ -1296,6 +1303,21 @@ begin
12961303
exact mul_rpow_of_ne_zero h.1 h.2 z
12971304
end
12981305

1306+
lemma inv_rpow_of_pos {x : ennreal} {y : ℝ} (hy : 0 < y) : (x⁻¹) ^ y = (x ^ y)⁻¹ :=
1307+
begin
1308+
by_cases h0 : x = 0,
1309+
{ rw [h0, zero_rpow_of_pos hy, inv_zero, top_rpow_of_pos hy], },
1310+
by_cases h_top : x = ⊤,
1311+
{ rw [h_top, top_rpow_of_pos hy, inv_top, zero_rpow_of_pos hy], },
1312+
rw ←coe_to_nnreal h_top,
1313+
have h : x.to_nnreal ≠ 0,
1314+
{ rw [ne.def, to_nnreal_eq_zero_iff],
1315+
simp [h0, h_top], },
1316+
rw [←coe_inv h, coe_rpow_of_nonneg _ (le_of_lt hy), coe_rpow_of_nonneg _ (le_of_lt hy), ←coe_inv],
1317+
{ rw coe_eq_coe,
1318+
exact nnreal.inv_rpow x.to_nnreal y, },
1319+
{ simp [h], },
1320+
end
12991321

13001322
lemma rpow_le_rpow {x y : ennreal} {z : ℝ} (h₁ : x ≤ y) (h₂ : 0 ≤ z) : x^z ≤ y^z :=
13011323
begin

src/data/real/conjugate_exponents.lean

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Copyright (c) 2020 Sébastien Gouëzel. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Sébastien Gouëzel, Yury Kudryashov
55
-/
6-
import data.real.nnreal
6+
import data.real.ennreal
77

88
/-!
99
# Real conjugate exponents
@@ -91,6 +91,11 @@ lemma inv_add_inv_conj_nnreal : 1 / nnreal.of_real p + 1 / nnreal.of_real q = 1
9191
by rw [←nnreal.of_real_one, ←nnreal.of_real_div' h.nonneg, ←nnreal.of_real_div' h.symm.nonneg,
9292
←nnreal.of_real_add h.one_div_nonneg h.symm.one_div_nonneg, h.inv_add_inv_conj]
9393

94+
lemma inv_add_inv_conj_ennreal : 1 / ennreal.of_real p + 1 / ennreal.of_real q = 1 :=
95+
by rw [←ennreal.of_real_one, ←ennreal.of_real_div_of_pos h.pos,
96+
←ennreal.of_real_div_of_pos h.symm.pos,
97+
←ennreal.of_real_add h.one_div_nonneg h.symm.one_div_nonneg, h.inv_add_inv_conj]
98+
9499
end is_conjugate_exponent
95100

96101
lemma is_conjugate_exponent_iff {p q : ℝ} (h : 1 < p) :

src/data/real/ennreal.lean

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1243,6 +1243,16 @@ lemma of_real_mul {p q : ℝ} (hp : 0 ≤ p) :
12431243
ennreal.of_real (p * q) = (ennreal.of_real p) * (ennreal.of_real q) :=
12441244
by { simp only [ennreal.of_real, coe_mul.symm, coe_eq_coe], exact nnreal.of_real_mul hp }
12451245

1246+
lemma of_real_inv_of_pos {x : ℝ} (hx : 0 < x) :
1247+
(ennreal.of_real x)⁻¹ = ennreal.of_real x⁻¹ :=
1248+
by rw [ennreal.of_real, ennreal.of_real, ←@coe_inv (nnreal.of_real x) (by simp [hx]), coe_eq_coe,
1249+
nnreal.of_real_inv.symm]
1250+
1251+
lemma of_real_div_of_pos {x y : ℝ} (hy : 0 < y) :
1252+
ennreal.of_real (x / y) = ennreal.of_real x / ennreal.of_real y :=
1253+
by rw [div_def, of_real_inv_of_pos hy, mul_comm, ←of_real_mul (inv_nonneg.mpr (le_of_lt hy)),
1254+
div_eq_mul_inv, mul_comm]
1255+
12461256
lemma to_real_of_real_mul (c : ℝ) (a : ennreal) (h : 0 ≤ c) :
12471257
ennreal.to_real ((ennreal.of_real c) * a) = c * ennreal.to_real a :=
12481258
begin

src/measure_theory/integration.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,6 +1041,8 @@ calc (∫⁻ a, f a + g a ∂μ) =
10411041

10421042
lemma lintegral_zero : (∫⁻ a:α, 0 ∂μ) = 0 := by simp
10431043

1044+
lemma lintegral_zero_fun : (∫⁻ a:α, (0 : α → ennreal) a ∂μ) = 0 := by simp
1045+
10441046
@[simp] lemma lintegral_smul_measure (c : ennreal) (f : α → ennreal) :
10451047
∫⁻ a, f a ∂ (c • μ) = c * ∫⁻ a, f a ∂μ :=
10461048
by simp only [lintegral, supr_subtype', simple_func.lintegral_smul, ennreal.mul_supr, smul_eq_mul]

0 commit comments

Comments
 (0)