Skip to content

Commit 88e1e00

Browse files
authored
ports from the sampling branch (#1657)
* ports from the sampling branch - rm dead code in hoelder.v - reestablish the notation for mmt_gen_fun - small technical lemmas from the sampling branch
1 parent ecc270f commit 88e1e00

File tree

4 files changed

+77
-68
lines changed

4 files changed

+77
-68
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,12 @@
9191
- in `lebesgue_integrable.v`:
9292
+ lemma `integral_sum`
9393

94+
- in `constructive_ereal.v`:
95+
+ lemmas `abse_prod`
96+
97+
- in `hoelder.v`:
98+
+ lemmas `Lnorm_abse`, `Lfun_norm`
99+
94100
### Changed
95101

96102
- in `convex.v`:

reals/constructive_ereal.v

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(* mathcomp analysis (c) 2017 Inria and AIST. License: CeCILL-C. *)
1+
(* mathcomp analysis (c) 2025 Inria and AIST. License: CeCILL-C. *)
22
(* -------------------------------------------------------------------- *)
33
(* Copyright (c) - 2015--2016 - IMDEA Software Institute *)
44
(* Copyright (c) - 2015--2018 - Inria *)
@@ -2599,14 +2599,21 @@ move=> [x| |] [y| |] //=; first by rewrite normrM.
25992599
- by rewrite -abseN -muleNN abseN -EFinN xoo normrN.
26002600
Qed.
26012601

2602+
Lemma abse_prod {I : Type} (r : seq I) (P : pred I) (F : I -> \bar R) :
2603+
`|\prod_(i <- r | P i) F i| = \prod_(i <- r | P i) `|F i|.
2604+
Proof.
2605+
elim/big_ind2 : _ => //; first by rewrite abse1.
2606+
by move=> ? ? ? ? <- <-; rewrite abseM.
2607+
Qed.
2608+
26022609
Lemma fine_max :
26032610
{in fin_num &, {mono @fine R : x y / maxe x y >-> (Num.max x y)%:E}}.
26042611
Proof.
26052612
by move=> [x| |] [y| |]//= _ _; apply/esym; have [ab|ba] := leP x y;
26062613
[apply/max_idPr; rewrite lee_fin|apply/max_idPl; rewrite lee_fin ltW].
26072614
Qed.
26082615

2609-
Lemma EFin_bigmax {I : Type} (s : seq I) (P : I -> bool) (F : I -> R) r :
2616+
Lemma EFin_bigmax {I : Type} (s : seq I) (P : I -> bool) (F : I -> R) r :
26102617
\big[maxe/r%:E]_(i <- s | P i) (F i)%:E =
26112618
(\big[Num.max/r]_(i <- s | P i) F i)%:E.
26122619
Proof. by rewrite (big_morph _ EFin_max erefl). Qed.

theories/hoelder.v

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(* mathcomp analysis (c) 2017 Inria and AIST. License: CeCILL-C. *)
1+
(* mathcomp analysis (c) 2025 Inria and AIST. License: CeCILL-C. *)
22
From HB Require Import structures.
33
From mathcomp Require Import all_ssreflect ssralg ssrnum ssrint interval finmap.
44
From mathcomp Require Import mathcomp_extra unstable boolp interval_inference.
@@ -95,7 +95,7 @@ Qed.
9595

9696
Lemma Lnorm1 f : 'N_1[f] = \int[mu]_x `|f x|.
9797
Proof.
98-
rewrite unlock invr1// poweRe1//; under eq_integral do [rewrite poweRe1//=] => //.
98+
rewrite unlock invr1 ?poweRe1//; under eq_integral do [rewrite poweRe1//] => //.
9999
exact: integral_ge0.
100100
Qed.
101101

@@ -109,10 +109,9 @@ move=> r0; rewrite unlock -poweRrM mulVf// poweRe1//.
109109
by apply: integral_ge0 => x _; exact: poweR_ge0.
110110
Qed.
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].
113113
Proof.
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.
116115
rewrite unlock /Lnorm NfE; case: p => /= [r|//|//].
117116
by under eq_integral => x _ do rewrite abseN.
118117
Qed.
@@ -130,29 +129,22 @@ rewrite unlock; move: p => [r/=|/=|//]; first exact: poweR_ge0.
130129
- by case: ifPn => // muT0; apply/ess_infP/nearW => x /=.
131130
Qed.
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].
135134
Proof.
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.
164156
Lemma powR_Lnorm f r : r != 0%R -> 'N_r%:E[f] `^ r = \int[mu]_x `| f x | `^ r.
165157
Proof. 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.
172167
Notation "'N[ mu ]_ p [ f ]" := (Lnorm mu p f) : ereal_scope.
168+
#[global] Hint Extern 0 (0 <= Lnorm _ _ _) => solve [apply: Lnorm_ge0] : core.
173169

174170
Section lnorm.
175171
Context d {T : measurableType d} {R : realType}.
@@ -185,15 +181,6 @@ Qed.
185181

186182
End 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-
197184
Section hoelder_conjugate.
198185
Context d (T : measurableType d) (R : realType).
199186
Variables (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].
433420
Proof.
434421
move=> 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.
439426
have {f0}fpos : 0 < 'N_p%:E[f] by rewrite lt0e f0 Lnorm_ge0.
440427
have {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.
443430
pose F := normalized p f; pose G := normalized q g.
444431
rewrite [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

10731060
Definition 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+
10751071
Lemma 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).

theories/probability.v

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
(* mathcomp analysis (c) 2022 Inria and AIST. License: CeCILL-C. *)
1+
(* mathcomp analysis (c) 2025 Inria and AIST. License: CeCILL-C. *)
22
From HB Require Import structures.
3-
From mathcomp Require Import all_ssreflect.
4-
From mathcomp Require Import ssralg poly ssrnum ssrint interval archimedean finmap.
3+
From mathcomp Require Import all_ssreflect ssralg.
4+
From mathcomp Require Import poly ssrnum ssrint interval archimedean finmap.
55
From mathcomp Require Import mathcomp_extra unstable boolp classical_sets.
66
From mathcomp Require Import functions cardinality fsbigop.
77
From mathcomp Require Import exp numfun lebesgue_measure lebesgue_integral.
@@ -21,27 +21,26 @@ From mathcomp Require Import ftc gauss_integral hoelder.
2121
(* `lebesgue_integral.v`. *)
2222
(* *)
2323
(* ``` *)
24-
(* {RV P >-> T'} == random variable: a measurable function to the *)
25-
(* measurableType T' from the measured space *)
26-
(* characterized by the probability P *)
27-
(* distribution P X == measure image of the probability measure P by the *)
28-
(* random variable X : {RV P -> T'} *)
29-
(* P as type probability T R with T of type *)
30-
(* measurableType. *)
31-
(* Declared as an instance of probability measure. *)
32-
(* 'E_P[X] == expectation of the real measurable function X *)
33-
(* covariance X Y == covariance between real random variable X and Y *)
34-
(* 'V_P[X] == variance of the real random variable X *)
35-
(* 'M_ X == moment generating function of the random variable *)
36-
(* X *)
37-
(* {dmfun T >-> R} == type of discrete real-valued measurable functions *)
38-
(* {dRV P >-> R} == real-valued discrete random variable *)
39-
(* dRV_dom X == domain of the discrete random variable X *)
40-
(* dRV_enum X == bijection between the domain and the range of X *)
41-
(* pmf X r := fine (P (X @^-1` [set r])) *)
42-
(* cdf X r == cumulative distribution function of X *)
43-
(* := distribution P X `]-oo, r] *)
44-
(* enum_prob X k == probability of the kth value in the range of X *)
24+
(* {RV P >-> T'} == random variable: a measurable function to the *)
25+
(* measurableType T' from the measured space *)
26+
(* characterized by the probability P *)
27+
(* distribution P X == measure image of the probability measure P by the *)
28+
(* random variable X : {RV P -> T'} *)
29+
(* P as type probability T R with T of type *)
30+
(* measurableType. *)
31+
(* Declared as an instance of probability measure. *)
32+
(* 'E_P[X] == expectation of the real measurable function X *)
33+
(* covariance X Y == covariance between real random variable X and Y *)
34+
(* 'V_P[X] == variance of the real random variable X *)
35+
(* 'M_ X == moment generating function of the random variable X *)
36+
(* {dmfun T >-> R} == type of discrete real-valued measurable functions *)
37+
(* {dRV P >-> R} == real-valued discrete random variable *)
38+
(* dRV_dom X == domain of the discrete random variable X *)
39+
(* dRV_enum X == bijection between the domain and the range of X *)
40+
(* pmf X r := fine (P (X @^-1` [set r])) *)
41+
(* cdf X r == cumulative distribution function of X *)
42+
(* := distribution P X `]-oo, r] *)
43+
(* enum_prob X k == probability of the kth value in the range of X *)
4544
(* ``` *)
4645
(* *)
4746
(* ``` *)
@@ -618,6 +617,10 @@ Qed.
618617
End variance.
619618
Notation "'V_ P [ X ]" := (variance P X).
620619

620+
Definition mmt_gen_fun d (T : measurableType d) (R : realType)
621+
(P : probability T R) (X : T -> R) (t : R) := ('E_P[expR \o t \o* X])%E.
622+
Notation "'M_ X t" := (mmt_gen_fun X t).
623+
621624
Section markov_chebyshev_cantelli.
622625
Local Open Scope ereal_scope.
623626
Context d (T : measurableType d) (R : realType) (P : probability T R).
@@ -639,11 +642,8 @@ apply: (le_trans (@le_integral_comp_abse _ _ _ P _ measurableT (EFin \o X)
639642
- by rewrite unlock.
640643
Qed.
641644

642-
Definition mmt_gen_fun (X : T -> R) (t : R) := 'E_P[expR \o t \o* X].
643-
Local Notation "'M_ X t" := (mmt_gen_fun X t).
644-
645645
Lemma chernoff (X : {RV P >-> R}) (r a : R) : (0 < r)%R ->
646-
P [set x | X x >= a]%R <= 'M_X r * (expR (- (r * a)))%:E.
646+
P [set x | X x >= a]%R <= 'M_P X r * (expR (- (r * a)))%:E.
647647
Proof.
648648
move=> t0; rewrite /mmt_gen_fun.
649649
have -> : expR \o r \o* X = (normr \o normr) \o (expR \o r \o* X).

0 commit comments

Comments
 (0)