Skip to content

Commit 07fd301

Browse files
Minkowski (math-comp#1000)
* Minkowski's inequality and accessory lemmas --------- Co-authored-by: Alessandro Bruni <alessandro.bruni@gmail.com> Co-authored-by: Reynald Affeldt <reynald.affeldt@aist.go.jp>
1 parent 93d24ff commit 07fd301

5 files changed

Lines changed: 239 additions & 16 deletions

File tree

CHANGELOG_UNRELEASED.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,15 @@
8888
+ lemmas `expeR_eq0`, `expeRD`, `expeR_ge1Dx`
8989
+ lemmas `ltr_expeR`, `ler_expeR`, `expeR_inj`, `expeR_total`
9090

91+
- in `exp.v`:
92+
+ lemmas `mulr_powRB1`, `fin_num_poweR`, `poweRN`, `poweR_lty`, `lty_poweRy`, `gt0_ler_poweR`
93+
94+
- in `mathcomp_extra.v`:
95+
+ lemma `onemV`
96+
97+
- in `hoelder.v`:
98+
+ lemmas `powR_Lnorm`, `minkowski`
99+
91100
### Changed
92101

93102
- in `hoelder.v`:

classical/mathcomp_extra.v

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,8 @@ Arguments big_rmcond_in {R idx op I r} P.
469469
(* MathComp > 1.15.0 additions *)
470470
(*******************************)
471471

472+
Reserved Notation "`1- x" (format "`1- x", at level 2).
473+
472474
Section onem.
473475
Variable R : numDomainType.
474476
Implicit Types r : R.
@@ -518,6 +520,9 @@ Qed.
518520
End onem.
519521
Notation "`1- r" := (onem r) : ring_scope.
520522

523+
Lemma onemV (F : numFieldType) (x : F) : x != 0 -> `1-(x^-1) = (x - 1) / x.
524+
Proof. by move=> ?; rewrite mulrDl divff// mulN1r. Qed.
525+
521526
Lemma lez_abs2 (a b : int) : 0 <= a -> a <= b -> (`|a| <= `|b|)%N.
522527
Proof. by case: a => //= n _; case: b. Qed.
523528

theories/exp.v

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,7 @@ End Ln.
694694

695695
Section PowR.
696696
Variable R : realType.
697-
Implicit Types a x : R.
697+
Implicit Types a x y z r : R.
698698

699699
Definition powR a x := if a == 0 then (x == 0)%:R else expR (x * ln a).
700700

@@ -781,7 +781,7 @@ move=> /andP[a0 a1] r1.
781781
by rewrite (le_trans (ger_powR _ r1)) ?powRr1 ?a0// ltW.
782782
Qed.
783783

784-
Lemma ge0_ler_powR (r : R) : 0 <= r ->
784+
Lemma ge0_ler_powR r : 0 <= r ->
785785
{in Num.nneg &, {homo powR ^~ r : x y / x <= y >-> x <= y}}.
786786
Proof.
787787
rewrite le_eqVlt => /predU1P[<- x y _ _ _|]; first by rewrite !powRr0.
@@ -793,7 +793,7 @@ move=> /predU1P[->//|xy]; first by rewrite eqxx.
793793
by apply/orP; right; rewrite /powR !gt_eqF// ltr_expR ltr_pM2l// ltr_ln.
794794
Qed.
795795

796-
Lemma gt0_ltr_powR (r : R) : 0 < r ->
796+
Lemma gt0_ltr_powR r : 0 < r ->
797797
{in Num.nneg &, {homo powR ^~ r : x y / x < y >-> x < y}}.
798798
Proof.
799799
move=> r0 x y x0 y0 xy; have := ge0_ler_powR (ltW r0) x0 y0 (ltW xy).
@@ -823,7 +823,7 @@ move=> x1 y0 r1.
823823
by rewrite (powRM _ (le_trans _ x1))// ler_wpM2r ?powR_ge0// le1r_powR// x0.
824824
Qed.
825825

826-
Lemma powRrM (x y z : R) : x `^ (y * z) = (x `^ y) `^ z.
826+
Lemma powRrM x y z : x `^ (y * z) = (x `^ y) `^ z.
827827
Proof.
828828
rewrite /powR mulf_eq0; have [_|xN0] := eqVneq x 0.
829829
by case: (y == 0); rewrite ?eqxx//= oner_eq0 ln1 mulr0 expR0.
@@ -841,6 +841,12 @@ have [->|] := eqVneq r 0; first by rewrite mul1r add0r.
841841
by rewrite implybF mul0r => _ /negPf ->.
842842
Qed.
843843

844+
Lemma mulr_powRB1 x p : 0 <= x -> 0 < p -> x * x `^ (p - 1) = x `^ p.
845+
Proof.
846+
rewrite le_eqVlt => /predU1P[<- p0|x0 p0]; first by rewrite mul0r powR0 ?gt_eqF.
847+
by rewrite -{1}(powRr1 (ltW x0))// -powRD addrCA subrr addr0// gt_eqF.
848+
Qed.
849+
844850
Lemma powRN x r : x `^ (- r) = (x `^ r)^-1.
845851
Proof.
846852
have [r0|r0] := eqVneq r 0%R; first by rewrite r0 oppr0 powRr0 invr1.
@@ -956,6 +962,9 @@ Proof.
956962
by move: x => [x'| |]//= x0; rewrite ?powRr1// (negbTE (oner_neq0 _)).
957963
Qed.
958964

965+
Lemma poweRN x r : x \is a fin_num -> x `^ (- r) = (fine x `^ r)^-1%:E.
966+
Proof. by case: x => // x xf; rewrite poweR_EFin powRN. Qed.
967+
959968
Lemma poweRNyr r : r != 0%R -> -oo `^ r = 0.
960969
Proof. by move=> r0 /=; rewrite (negbTE r0). Qed.
961970

@@ -965,6 +974,16 @@ Proof. by case: x => [x| |] //=; case: ifP. Qed.
965974
Lemma eqy_poweR x r : (0 < r)%R -> x = +oo -> x `^ r = +oo.
966975
Proof. by move: x => [| |]//= r0 _; rewrite gt_eqF. Qed.
967976

977+
Lemma poweR_lty x r : x < +oo -> x `^ r < +oo.
978+
Proof.
979+
by move: x => [x| |]//=; rewrite ?ltry//; case: ifPn => // _; rewrite ltry.
980+
Qed.
981+
982+
Lemma lty_poweRy x r : r != 0%R -> x `^ r < +oo -> x < +oo.
983+
Proof.
984+
by move=> r0; move: x => [x| | _]//=; rewrite ?ltry// (negbTE r0).
985+
Qed.
986+
968987
Lemma poweR0r r : r != 0%R -> 0 `^ r = 0.
969988
Proof. by move=> r0; rewrite poweR_EFin powR0. Qed.
970989

@@ -998,6 +1017,21 @@ Qed.
9981017
Lemma poweR_eq0_eq0 x r : 0 <= x -> x `^ r = 0 -> x = 0.
9991018
Proof. by move=> + /eqP => /poweR_eq0-> /andP[/eqP]. Qed.
10001019

1020+
Lemma gt0_ler_poweR r : (0 <= r)%R ->
1021+
{in `[0, +oo] &, {homo poweR ^~ r : x y / x <= y >-> x <= y}}.
1022+
Proof.
1023+
move=> r0 + y; case=> //= [x /[1!in_itv]/= /andP[xint _]| _ _].
1024+
- case: y => //= [y /[1!in_itv]/= /andP[yint _] xy| _ _].
1025+
+ by rewrite !lee_fin ge0_ler_powR.
1026+
+ by case: eqP => [->|]; rewrite ?powRr0 ?leey.
1027+
- by rewrite leye_eq => /eqP ->.
1028+
Qed.
1029+
1030+
Lemma fin_num_poweR x r : x \is a fin_num -> x `^ r \is a fin_num.
1031+
Proof.
1032+
by move=> xfin; rewrite ge0_fin_numE ?poweR_lty ?ltey_eq ?xfin// poweR_ge0.
1033+
Qed.
1034+
10011035
Lemma poweRM x y r : 0 <= x -> 0 <= y -> (x * y) `^ r = x `^ r * y `^ r.
10021036
Proof.
10031037
have [->|rN0] := eqVneq r 0%R; first by rewrite !poweRe0 mule1.

theories/hoelder.v

Lines changed: 186 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,15 @@ Reserved Notation "'N_ p [ F ]"
3535

3636
Declare Scope Lnorm_scope.
3737

38-
Local Open Scope ereal_scope.
39-
4038
HB.lock Definition Lnorm {d} {T : measurableType d} {R : realType}
4139
(mu : {measure set T -> \bar R}) (p : \bar R) (f : T -> R) :=
4240
match p with
43-
| p%:E => if p == 0%R then
41+
| p%:E => (if p == 0%R then
4442
mu (f @^-1` (setT `\ 0%R))
4543
else
46-
(\int[mu]_x (`|f x| `^ p)%:E) `^ p^-1
47-
| +oo => if mu [set: T] > 0 then ess_sup mu (normr \o f) else 0
48-
| -oo => 0
44+
(\int[mu]_x (`|f x| `^ p)%:E) `^ p^-1)%E
45+
| +oo%E => (if mu [set: T] > 0 then ess_sup mu (normr \o f) else 0)%E
46+
| -oo%E => 0%E
4947
end.
5048
Canonical locked_Lnorm := Unlockable Lnorm.unlock.
5149
Arguments Lnorm {d T R} mu p f.
@@ -87,7 +85,15 @@ under eq_integral => x _ do rewrite ger0_norm ?powR_ge0//.
8785
by rewrite fp//; apply: integral_ge0 => t _; rewrite lee_fin powR_ge0.
8886
Qed.
8987

88+
Lemma powR_Lnorm f r : r != 0%R ->
89+
'N_r%:E[f] `^ r = \int[mu]_x (`| f x | `^ r)%:E.
90+
Proof.
91+
move=> r0; rewrite unlock (negbTE r0) -poweRrM mulVf// poweRe1//.
92+
by apply: integral_ge0 => x _; rewrite lee_fin// powR_ge0.
93+
Qed.
94+
9095
End Lnorm_properties.
96+
9197
#[global]
9298
Hint Extern 0 (0 <= Lnorm _ _ _) => solve [apply: Lnorm_ge0] : core.
9399

@@ -96,7 +102,7 @@ Notation "'N[ mu ]_ p [ f ]" := (Lnorm mu p f).
96102
Section lnorm.
97103
(* l-norm is just L-norm applied to counting *)
98104
Context d {T : measurableType d} {R : realType}.
99-
105+
Local Open Scope ereal_scope.
100106
Local Notation "'N_ p [ f ]" := (Lnorm [the measure _ _ of counting] p f).
101107

102108
Lemma Lnorm_counting p (f : R^nat) : (0 < p)%R ->
@@ -186,8 +192,8 @@ have [f0|f0] := eqVneq 'N_p%:E[f] 0%E; first exact: hoelder0.
186192
have [g0|g0] := eqVneq 'N_q%:E[g] 0%E.
187193
rewrite muleC; apply: le_trans; last by apply: hoelder0 => //; rewrite addrC.
188194
by under eq_Lnorm do rewrite /= mulrC.
189-
have {f0}fpos : 0 < 'N_p%:E[f] by rewrite lt_neqAle eq_sym f0// Lnorm_ge0.
190-
have {g0}gpos : 0 < 'N_q%:E[g] by rewrite lt_neqAle eq_sym g0// Lnorm_ge0.
195+
have {f0}fpos : 0 < 'N_p%:E[f] by rewrite lt0e f0 Lnorm_ge0.
196+
have {g0}gpos : 0 < 'N_q%:E[g] by rewrite lt0e g0 Lnorm_ge0.
191197
have [foo|foo] := eqVneq 'N_p%:E[f] +oo%E; first by rewrite foo gt0_mulye ?leey.
192198
have [goo|goo] := eqVneq 'N_q%:E[g] +oo%E; first by rewrite goo gt0_muley ?leey.
193199
pose F := normalized p f; pose G := normalized q g.
@@ -296,8 +302,7 @@ have [->|w10] := eqVneq w1 0.
296302
by rewrite !mul0r powR0// gt_eqF.
297303
by rewrite ge1r_powRZ// /w2 lt_neqAle eq_sym w20/=; apply/andP.
298304
have [->|w20] := eqVneq w2 0.
299-
rewrite !mul0r !addr0 ge1r_powRZ// onem_le1// andbT.
300-
by rewrite lt_neqAle eq_sym onem_ge0// andbT.
305+
by rewrite !mul0r !addr0 ge1r_powRZ// onem_le1// andbT lt0r w10 onem_ge0.
301306
have [->|p_neq1] := eqVneq p 1.
302307
by rewrite !powRr1// addr_ge0// mulr_ge0// /w2 ?onem_ge0.
303308
have {p_neq1} {}p1 : 1 < p by rewrite lt_neqAle eq_sym p_neq1.
@@ -330,3 +335,173 @@ by rewrite {2}/w1 {2}/w2 subrK powR1 mulr1.
330335
Qed.
331336

332337
End convex_powR.
338+
339+
Section minkowski.
340+
Context d (T : measurableType d) (R : realType).
341+
Variable mu : {measure set T -> \bar R}.
342+
Implicit Types (f g : T -> R) (p : R).
343+
344+
Let convex_powR_abs_half f g p x : 1 <= p ->
345+
`| 2^-1 * f x + 2^-1 * g x | `^ p <=
346+
2^-1 * `| f x | `^ p + 2^-1 * `| g x | `^ p.
347+
Proof.
348+
move=> p1; rewrite (@le_trans _ _ ((2^-1 * `| f x | + 2^-1 * `| g x |) `^ p))//.
349+
rewrite ge0_ler_powR ?nnegrE ?(le_trans _ p1)//.
350+
by rewrite (le_trans (ler_normD _ _))// 2!normrM ger0_norm.
351+
rewrite {1 3}(_ : 2^-1 = 1 - 2^-1); last by rewrite {2}(splitr 1) div1r addrK.
352+
rewrite (@convex_powR _ _ p1 (@Itv.mk _ _ _ _)) ?inE/= ?in_itv/= ?normr_ge0//.
353+
by rewrite /Itv.itv_cond/= in_itv/= invr_ge0 ler0n invf_le1 ?ler1n.
354+
Qed.
355+
356+
Let measurableT_comp_powR f p :
357+
measurable_fun setT f -> measurable_fun setT (fun x => f x `^ p)%R.
358+
Proof. exact: (@measurableT_comp _ _ _ _ _ _ (@powR R ^~ p)). Qed.
359+
360+
Local Notation "'N_ p [ f ]" := (Lnorm mu p f).
361+
Local Open Scope ereal_scope.
362+
363+
Let minkowski1 f g p : measurable_fun setT f -> measurable_fun setT g ->
364+
'N_1[(f \+ g)%R] <= 'N_1[f] + 'N_1[g].
365+
Proof.
366+
move=> mf mg.
367+
rewrite !Lnorm1 -ge0_integralD//; [|by do 2 apply: measurableT_comp..].
368+
rewrite ge0_le_integral//.
369+
- by do 2 apply: measurableT_comp => //; exact: measurable_funD.
370+
- by move=> x _; rewrite lee_fin.
371+
- by apply/measurableT_comp/measurable_funD; exact/measurableT_comp.
372+
- by move=> x _; rewrite lee_fin ler_normD.
373+
Qed.
374+
375+
Let minkowski_lty f g p :
376+
measurable_fun setT f -> measurable_fun setT g -> (1 <= p)%R ->
377+
'N_p%:E[f] < +oo -> 'N_p%:E[g] < +oo -> 'N_p%:E[(f \+ g)%R] < +oo.
378+
Proof.
379+
move=> mf mg p1 Nfoo Ngoo.
380+
have p0 : p != 0%R by rewrite gt_eqF// (lt_le_trans _ p1).
381+
have h x : (`| f x + g x | `^ p <=
382+
2 `^ (p - 1) * (`| f x | `^ p + `| g x | `^ p))%R.
383+
have := convex_powR_abs_half (fun x => 2 * f x)%R (fun x => 2 * g x)%R x p1.
384+
rewrite !normrM (@ger0_norm _ 2)// !mulrA mulVf// !mul1r => /le_trans; apply.
385+
rewrite !powRM// !mulrA -powR_inv1// -powRD ?pnatr_eq0 ?implybT//.
386+
by rewrite (addrC _ p) -mulrDr.
387+
rewrite unlock (gt_eqF (lt_le_trans _ p1))// poweR_lty//.
388+
pose x := \int[mu]_x (2 `^ (p - 1) * (`|f x| `^ p + `|g x| `^ p))%:E.
389+
apply: (@le_lt_trans _ _ x).
390+
rewrite ge0_le_integral//=.
391+
- by move=> t _; rewrite lee_fin// powR_ge0.
392+
- apply/EFin_measurable_fun/measurableT_comp_powR/measurableT_comp => //.
393+
exact: measurable_funD.
394+
- by move=> t _; rewrite lee_fin mulr_ge0 ?addr_ge0 ?powR_ge0.
395+
- by apply/EFin_measurable_fun/measurable_funM/measurable_funD => //;
396+
exact/measurableT_comp_powR/measurableT_comp.
397+
- by move=> ? _; rewrite lee_fin.
398+
rewrite {}/x; under eq_integral do rewrite EFinM.
399+
rewrite ge0_integralZl_EFin ?powR_ge0//; last 2 first.
400+
- by move=> x _; rewrite lee_fin addr_ge0// powR_ge0.
401+
- by apply/EFin_measurable_fun/measurable_funD => //;
402+
exact/measurableT_comp_powR/measurableT_comp.
403+
rewrite lte_mul_pinfty ?lee_fin ?powR_ge0//.
404+
under eq_integral do rewrite EFinD.
405+
rewrite ge0_integralD//; last 4 first.
406+
- by move=> x _; rewrite lee_fin powR_ge0.
407+
- exact/EFin_measurable_fun/measurableT_comp_powR/measurableT_comp.
408+
- by move=> x _; rewrite lee_fin powR_ge0.
409+
- exact/EFin_measurable_fun/measurableT_comp_powR/measurableT_comp.
410+
by rewrite lte_add_pinfty// -powR_Lnorm ?(gt_eqF (lt_trans _ p1))// poweR_lty.
411+
Qed.
412+
413+
Lemma minkowski f g p :
414+
measurable_fun setT f -> measurable_fun setT g -> (1 <= p)%R ->
415+
'N_p%:E[(f \+ g)%R] <= 'N_p%:E[f] + 'N_p%:E[g].
416+
Proof.
417+
move=> mf mg; rewrite le_eqVlt => /predU1P[<-|p1]; first exact: minkowski1.
418+
have [->|Nfoo] := eqVneq 'N_p%:E[f] +oo.
419+
by rewrite addye ?leey// -ltNye (lt_le_trans _ (Lnorm_ge0 _ _ _)).
420+
have [->|Ngoo] := eqVneq 'N_p%:E[g] +oo.
421+
by rewrite addey ?leey// -ltNye (lt_le_trans _ (Lnorm_ge0 _ _ _)).
422+
have Nfgoo : 'N_p%:E[(f \+ g)%R] < +oo.
423+
by rewrite minkowski_lty// ?ltW// ltey; [exact: Nfoo|exact: Ngoo].
424+
suff : 'N_p%:E[(f \+ g)%R] `^ p <= ('N_p%:E[f] + 'N_p%:E[g]) *
425+
'N_p%:E[(f \+ g)%R] `^ p * (fine 'N_p%:E[(f \+ g)%R])^-1%:E.
426+
have [-> _|Nfg0] := eqVneq 'N_p%:E[(f \+ g)%R] 0.
427+
by rewrite adde_ge0 ?Lnorm_ge0.
428+
rewrite lee_pdivl_mulr ?fine_gt0// ?lt0e ?Nfg0 ?Lnorm_ge0//.
429+
rewrite -{1}(@fineK _ ('N_p%:E[(f \+ g)%R] `^ p)); last first.
430+
by rewrite fin_num_poweR// ge0_fin_numE// Lnorm_ge0.
431+
rewrite -(invrK (fine _)) lee_pdivr_mull; last first.
432+
rewrite invr_gt0 fine_gt0// (poweR_lty _ Nfgoo) andbT poweR_gt0//.
433+
by rewrite lt0e Nfg0 Lnorm_ge0.
434+
rewrite fineK ?ge0_fin_numE ?Lnorm_ge0// => /le_trans; apply.
435+
rewrite lee_pdivr_mull; last first.
436+
by rewrite fine_gt0// poweR_lty// andbT poweR_gt0// lt0e Nfg0 Lnorm_ge0.
437+
by rewrite fineK// 1?muleC// fin_num_poweR// ge0_fin_numE ?Lnorm_ge0.
438+
have p0 : (0 < p)%R by exact: (lt_trans _ p1).
439+
rewrite powR_Lnorm ?gt_eqF//.
440+
under eq_integral => x _ do rewrite -mulr_powRB1//.
441+
apply: (@le_trans _ _
442+
(\int[mu]_x ((`|f x| + `|g x|) * `|f x + g x| `^ (p - 1))%:E)).
443+
rewrite ge0_le_integral//.
444+
- by move=> ? _; rewrite lee_fin mulr_ge0// powR_ge0.
445+
- apply: measurableT_comp => //; apply: measurable_funM.
446+
exact/measurableT_comp/measurable_funD.
447+
exact/measurableT_comp_powR/measurableT_comp/measurable_funD.
448+
- by move=> ? _; rewrite lee_fin mulr_ge0// powR_ge0.
449+
- apply/measurableT_comp => //; apply: measurable_funM.
450+
by apply/measurable_funD => //; exact: measurableT_comp.
451+
exact/measurableT_comp_powR/measurableT_comp/measurable_funD.
452+
- by move=> ? _; rewrite lee_fin ler_wpM2r// ?powR_ge0// ler_normD.
453+
under eq_integral=> ? _ do rewrite mulrDl EFinD.
454+
rewrite ge0_integralD//; last 4 first.
455+
- by move=> x _; rewrite lee_fin mulr_ge0// powR_ge0.
456+
- apply: measurableT_comp => //; apply: measurable_funM.
457+
exact: measurableT_comp.
458+
exact/measurableT_comp_powR/measurableT_comp/measurable_funD.
459+
- by move=> x _; rewrite lee_fin mulr_ge0// powR_ge0.
460+
- apply: measurableT_comp => //; apply: measurable_funM.
461+
exact: measurableT_comp.
462+
exact/measurableT_comp_powR/measurableT_comp/measurable_funD.
463+
rewrite [leRHS](_ : _ = ('N_p%:E[f] + 'N_p%:E[g]) *
464+
(\int[mu]_x (`|f x + g x| `^ p)%:E) `^ `1-(p^-1)).
465+
rewrite muleDl; last 2 first.
466+
- rewrite fin_num_poweR// -powR_Lnorm ?gt_eqF// fin_num_poweR//.
467+
by rewrite ge0_fin_numE ?Lnorm_ge0.
468+
- by rewrite ge0_adde_def// inE Lnorm_ge0.
469+
apply: lee_add.
470+
- pose h := (@powR R ^~ (p - 1) \o normr \o (f \+ g))%R; pose i := (f \* h)%R.
471+
rewrite [leLHS](_ : _ = 'N_1[i]%R); last first.
472+
rewrite Lnorm1; apply: eq_integral => x _.
473+
by rewrite normrM (ger0_norm (powR_ge0 _ _)).
474+
rewrite [X in _ * X](_ : _ = 'N_(p / (p - 1))%:E[h]); last first.
475+
rewrite unlock mulf_eq0 gt_eqF//= invr_eq0 subr_eq0 (gt_eqF p1).
476+
rewrite onemV ?gt_eqF// invf_div; apply: congr2; last by [].
477+
apply: eq_integral => x _; congr EFin.
478+
rewrite norm_powR// normr_id -powRrM mulrCA divff ?mulr1//.
479+
by rewrite subr_eq0 gt_eqF.
480+
apply: (@hoelder _ _ _ _ _ _ p (p / (p - 1))) => //.
481+
+ exact/measurableT_comp_powR/measurableT_comp/measurable_funD.
482+
+ by rewrite divr_gt0// subr_gt0.
483+
+ by rewrite invf_div -onemV ?gt_eqF// addrCA subrr addr0.
484+
- pose h := (fun x => `|f x + g x| `^ (p - 1))%R; pose i := (g \* h)%R.
485+
rewrite [leLHS](_ : _ = 'N_1[i]); last first.
486+
rewrite Lnorm1; apply: eq_integral => x _ .
487+
by rewrite normrM norm_powR// normr_id.
488+
rewrite [X in _ * X](_ : _ = 'N_((1 - p^-1)^-1)%:E[h])//; last first.
489+
rewrite unlock invrK invr_eq0 subr_eq0 eq_sym invr_eq1 (gt_eqF p1).
490+
apply: congr2; last by [].
491+
apply: eq_integral => x _; congr EFin.
492+
rewrite -/(onem p^-1) onemV ?gt_eqF// norm_powR// normr_id -powRrM.
493+
by rewrite invf_div mulrCA divff ?subr_eq0 ?gt_eqF// ?mulr1.
494+
apply: (le_trans (@hoelder _ _ _ _ _ _ p (1 - p^-1)^-1 _ _ _ _ _)) => //.
495+
+ exact/measurableT_comp_powR/measurableT_comp/measurable_funD.
496+
+ by rewrite invr_gt0 onem_gt0// invf_lt1.
497+
+ by rewrite invrK addrCA subrr addr0.
498+
rewrite -muleA; congr (_ * _).
499+
under [X in X * _]eq_integral=> x _ do rewrite mulr_powRB1 ?subr_gt0//.
500+
rewrite poweRD; last by rewrite poweRD_defE gt_eqF ?implyFb// subr_gt0 invf_lt1.
501+
rewrite poweRe1; last by apply: integral_ge0 => x _; rewrite lee_fin powR_ge0.
502+
congr (_ * _); rewrite poweRN.
503+
- by rewrite unlock gt_eqF// fine_poweR.
504+
- by rewrite -powR_Lnorm ?gt_eqF// fin_num_poweR// ge0_fin_numE ?Lnorm_ge0.
505+
Qed.
506+
507+
End minkowski.

theories/probability.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ rewrite (le_trans _ (markov _ (expR_gt0 (r * a)) _ _ _))//; last first.
541541
exact: (monoW_in (@ger0_le_norm _)).
542542
rewrite ger0_norm ?expR_ge0// muleC lee_pmul2l// ?lte_fin ?expR_gt0//.
543543
rewrite [X in _ <= P X](_ : _ = [set x | a <= X x]%R)//; apply: eq_set => t/=.
544-
by rewrite ger0_norm ?expR_ge0// lee_fin ler_expR mulrC ler_pmul2r.
544+
by rewrite ger0_norm ?expR_ge0// lee_fin ler_expR mulrC ler_pM2r.
545545
Qed.
546546

547547
Lemma chebyshev (X : {RV P >-> R}) (eps : R) : (0 < eps)%R ->

0 commit comments

Comments
 (0)