1- (* mathcomp analysis (c) 2017 Inria and AIST. License: CeCILL-C. *)
1+ (* mathcomp analysis (c) 2025 Inria and AIST. License: CeCILL-C. *)
22From HB Require Import structures.
33From mathcomp Require Import all_ssreflect ssralg ssrnum ssrint interval finmap.
44From mathcomp Require Import mathcomp_extra unstable boolp interval_inference.
9595
9696Lemma Lnorm1 f : 'N_1[f] = \int[mu]_x `|f x|.
9797Proof .
98- rewrite unlock invr1// poweRe1//; under eq_integral do [rewrite poweRe1//= ] => //.
98+ rewrite unlock invr1 ? poweRe1//; under eq_integral do [rewrite poweRe1//] => //.
9999exact: integral_ge0.
100100Qed .
101101
@@ -109,10 +109,9 @@ move=> r0; rewrite unlock -poweRrM mulVf// poweRe1//.
109109by apply: integral_ge0 => x _; exact: poweR_ge0.
110110Qed .
111111
112- Lemma oppe_Lnorm f p : 'N_p[\- f]%E = 'N_p[f].
112+ Lemma oppe_Lnorm f p : 'N_p[\- f] = 'N_p[f].
113113Proof .
114- have NfE : abse \o (\- f) = abse \o f.
115- by apply/funext => x /=; rewrite abseN.
114+ have NfE : abse \o (\- f) = abse \o f by apply/funext => x /=; rewrite abseN.
116115rewrite unlock /Lnorm NfE; case: p => /= [r|//|//].
117116by under eq_integral => x _ do rewrite abseN.
118117Qed .
@@ -130,29 +129,22 @@ rewrite unlock; move: p => [r/=|/=|//]; first exact: poweR_ge0.
130129- by case: ifPn => // muT0; apply/ess_infP/nearW => x /=.
131130Qed .
132131
133- Lemma Lnorm_eq0_eq0 f p :
134- measurable_fun setT f -> (0 < p)%E -> 'N_p[f] = 0 -> f = \0 %[ae mu].
132+ Lemma Lnorm_eq0_eq0 f p : measurable_fun [set: T] f -> 0 < p ->
133+ 'N_p[f] = 0 -> f = \0 %[ae mu].
135134Proof .
136- rewrite unlock /Lnorm => mf.
137- case: p => [r||//].
135+ rewrite unlock /Lnorm => mf; case: p => [r||//].
138136- rewrite lte_fin => r0 /poweR_eq0_eq0 => /(_ (integral_ge0 _ _)) h.
139- have : \int[mu]_x `|f x| `^ r = 0.
140- by apply: h => x _; rewrite poweR_ge0.
141- move=> H.
142- have {H} : \int[mu]_x `| `|f x| `^ r | = 0%R.
137+ have : \int[mu]_x `| `|f x| `^ r | = 0%R.
143138 under eq_integral.
144- move=> x _.
145- rewrite gee0_abs; last by rewrite poweR_ge0.
146- over.
147- exact: H.
148- have mp : measurable_fun [set: T] (fun x : T => `|f x| `^ r).
139+ move=> x _; rewrite gee0_abs; last by rewrite poweR_ge0. over.
140+ by apply: h => x _; rewrite poweR_ge0.
141+ have mp : measurable_fun [set: T] (fun x => `|f x| `^ r).
149142 apply: (@measurableT_comp _ _ _ _ _ _ (fun x => x `^ r)) => //=.
150- by apply (measurableT_comp (measurable_poweR _)) => // .
143+ exact: (measurableT_comp (measurable_poweR _)).
151144 exact: measurableT_comp.
152145 move/(ae_eq_integral_abs mu measurableT mp).
153146 apply: filterS => x/= /[apply].
154- move=> /poweR_eq0_eq0 /eqP => /(_ (abse_ge0 _)).
155- by rewrite abse_eq0 => /eqP.
147+ by move=> /poweR_eq0_eq0 /eqP => /(_ (abse_ge0 _)); rewrite abse_eq0 => /eqP.
156148- case: ifPn => [mu0 _|].
157149 move=> /abs_sup_eq0_ae_eq/=.
158150 by apply: filterS => x/= /(_ I) /eqP + _ => /eqP.
@@ -164,12 +156,16 @@ Qed.
164156Lemma powR_Lnorm f r : r != 0%R -> 'N_r%:E[f] `^ r = \int[mu]_x `| f x | `^ r.
165157Proof . by move=> r0; rewrite poweR_Lnorm. Qed .
166158
167- End Lnorm_properties.
168-
169- #[global]
170- Hint Extern 0 (0 <= Lnorm _ _ _) => solve [apply: Lnorm_ge0] : core.
159+ Lemma Lnorm_abse f p : 'N_p[abse \o f] = 'N_p[f].
160+ Proof .
161+ rewrite unlock/=; have -> : abse \o (abse \o f) = abse \o f.
162+ by apply: funext => x/=; rewrite abse_id.
163+ by case: p => [r|//|//]; under eq_integral => x _ do rewrite abse_id.
164+ Qed .
171165
166+ End Lnorm_properties.
172167Notation "'N[ mu ]_ p [ f ]" := (Lnorm mu p f) : ereal_scope.
168+ #[global] Hint Extern 0 (0 <= Lnorm _ _ _) => solve [apply: Lnorm_ge0] : core.
173169
174170Section lnorm.
175171Context d {T : measurableType d} {R : realType}.
@@ -185,15 +181,6 @@ Qed.
185181
186182End lnorm.
187183
188- Section ereal.
189- Context {R : realFieldType}.
190- Implicit Type x y : \bar R.
191- Local Open Scope ereal_scope.
192-
193-
194-
195- End ereal.
196-
197184Section hoelder_conjugate.
198185Context d (T : measurableType d) (R : realType).
199186Variables (mu : {measure set T -> \bar R}).
@@ -432,14 +419,14 @@ Lemma hoelder (f g : T -> R) p q :
432419 'N_1[(f \* g)%R] <= 'N_p%:E[f] * 'N_q%:E[g].
433420Proof .
434421move=> mf mg p0 q0 pq.
435- have [f0|f0] := eqVneq 'N_p%:E[f] 0%E ; first exact: hoelder0.
436- have [g0|g0] := eqVneq 'N_q%:E[g] 0%E .
422+ have [f0|f0] := eqVneq 'N_p%:E[f] 0; first exact: hoelder0.
423+ have [g0|g0] := eqVneq 'N_q%:E[g] 0.
437424 rewrite muleC; apply: le_trans; last by apply: hoelder0 => //; rewrite addrC.
438425 by under eq_Lnorm do rewrite /= mulrC.
439426have {f0}fpos : 0 < 'N_p%:E[f] by rewrite lt0e f0 Lnorm_ge0.
440427have {g0}gpos : 0 < 'N_q%:E[g] by rewrite lt0e g0 Lnorm_ge0.
441- have [foo|foo] := eqVneq 'N_p%:E[f] +oo%E ; first by rewrite foo gt0_mulye ?leey.
442- have [goo|goo] := eqVneq 'N_q%:E[g] +oo%E ; first by rewrite goo gt0_muley ?leey.
428+ have [foo|foo] := eqVneq 'N_p%:E[f] +oo; first by rewrite foo gt0_mulye ?leey.
429+ have [goo|goo] := eqVneq 'N_q%:E[g] +oo; first by rewrite goo gt0_muley ?leey.
443430pose F := normalized p f; pose G := normalized q g.
444431rewrite [leLHS](_ : _ = 'N_1[(F \* G)%R] * 'N_p%:E[f] * 'N_q%:E[g]); last first.
445432 rewrite !Lnorm1; under [in RHS]eq_integral.
@@ -1072,6 +1059,15 @@ Definition LType1 := LType mu (@lexx _ _ 1%E).
10721059
10731060Definition LType2 := LType mu (lee1n 2).
10741061
1062+ Lemma Lfun_norm (f : T -> R) : f \in Lfun mu 1 -> normr \o f \in Lfun mu 1.
1063+ Proof .
1064+ case/andP; rewrite !inE/= => mf finf; apply/andP; split.
1065+ by rewrite inE/=; exact: measurableT_comp.
1066+ rewrite inE/=/finite_norm.
1067+ under [X in ('N[_]__[X])%E]eq_fun => x do rewrite -abse_EFin.
1068+ by rewrite Lnorm_abse.
1069+ Qed .
1070+
10751071Lemma Lfun_integrable (f : T -> R) r :
10761072 1 <= r -> f \in Lfun mu r%:E ->
10771073 mu.-integrable setT (fun x => (`|f x| `^ r)%:E).
0 commit comments