Skip to content

Commit 5aadc65

Browse files
committed
fixes #1074
1 parent 9d7fe77 commit 5aadc65

File tree

2 files changed

+28
-36
lines changed

2 files changed

+28
-36
lines changed

theories/lebesgue_integral.v

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,17 @@ Lemma mfun_cst x : @cst_mfun x =1 cst x. Proof. by []. Qed.
155155
HB.instance Definition _ := @isMeasurableFun.Build _ _ rT
156156
(@normr rT rT) (@measurable_normr rT setT).
157157

158+
HB.instance Definition _ :=
159+
isMeasurableFun.Build _ _ _ (@expR rT) (@measurable_expR rT).
160+
161+
162+
Lemma measurableT_comp_subproof (f : {mfun rT >-> rT}) (g : {mfun aT >-> rT}) :
163+
measurable_fun setT (f \o g).
164+
Proof. apply: measurableT_comp. exact. apply: @measurable_funP _ _ _ g. Qed.
165+
166+
HB.instance Definition _ (f : {mfun rT >-> rT}) (g : {mfun aT >-> rT}) :=
167+
isMeasurableFun.Build _ _ _ (f \o g) (measurableT_comp_subproof _ _).
168+
158169
End mfun.
159170

160171
Section ring.

theories/probability.v

Lines changed: 17 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@ Require Import exp numfun lebesgue_measure lebesgue_integral.
2121
(* 'E_P[X] == expectation of the real measurable function X *)
2222
(* covariance X Y == covariance between real random variable X and Y *)
2323
(* 'V_P[X] == variance of the real random variable X *)
24+
(* mmt_gen_fun X == moment generating function of the random variable *)
25+
(* X *)
2426
(* {dmfun T >-> R} == type of discrete real-valued measurable functions *)
2527
(* {dRV P >-> R} == real-valued discrete random variable *)
2628
(* dRV_dom X == domain of the discrete random variable X *)
27-
(* dRV_eunm X == bijection between the domain and the range of X *)
29+
(* dRV_enum X == bijection between the domain and the range of X *)
2830
(* pmf X r := fine (P (X @^-1` [set r])) *)
2931
(* enum_prob X k == probability of the kth value in the range of X *)
3032
(* *)
@@ -516,50 +518,29 @@ Lemma markov (X : {RV P >-> R}) (f : R -> R) (eps : R) :
516518
'E_P[f \o (fun x => `| x |%R) \o X].
517519
Proof.
518520
move=> e0 mf f0 f_nd; rewrite -(setTI [set _ | _]).
519-
apply: (le_trans (@le_integral_comp_abse d T R P setT measurableT (EFin \o X)
521+
apply: (le_trans (@le_integral_comp_abse _ _ _ P _ measurableT (EFin \o X)
520522
eps (er_map f) _ _ _ _ e0)) => //=.
521523
- exact: measurable_er_map.
522524
- by case => //= r _; exact: f0.
523-
- by move=> [x| |] [y| |]; rewrite !set_interval.set_itvE !inE ?lee_fin => //= x0 y0 xy; rewrite ?f_nd ?leey.
525+
- move=> [x| |] [y| |]; rewrite !inE/= !in_itv/= ?andbT ?lee_fin ?leey//.
526+
by move=> ? ? ?; rewrite f_nd.
524527
- exact/EFin_measurable_fun.
525528
- by rewrite unlock.
526529
Qed.
527530

528-
Definition mgf (X : {RV P >-> R}) (t : R) := 'E_P[expR \o t \o* X].
531+
Definition mmt_gen_fun (X : {RV P >-> R}) (t : R) := 'E_P[expR \o t \o* X].
529532

530-
HB.instance Definition _ := isMeasurableFun.Build _ _ _ (@expR R) (@measurable_expR R).
531-
532-
Lemma measurableT_comp_subproof d1 (T1 : measurableType d1) (f : {mfun R >-> R}) (g : {mfun T1 >-> R}) :
533-
measurable_fun setT (f \o g).
534-
Proof. apply: measurableT_comp. exact. apply: @measurable_funP _ _ _ g. Qed.
535-
536-
HB.instance Definition _ (d1 : measure_display) (T1 : measurableType d1)
537-
(f : {mfun R >-> R}) (g : {mfun T1 >-> R}) := isMeasurableFun.Build _ _ _ (f \o g) (@measurableT_comp_subproof _ _ _ _).
538-
539-
Lemma ge0_ler_normr :
540-
{in Num.nneg &, {mono (@normr _ R) : x y / x <= y}}%R.
541-
Proof. by move=> x y; rewrite !nnegrE => x0 y0; rewrite !ger0_norm. Qed.
542-
543-
Lemma lt0_ger_normr :
544-
{in Num.neg &, {mono (@normr _ R) : x y / x <= y >-> x >= y}}%R.
545-
Proof. by move=> x y; rewrite !negrE => x0 y0; rewrite !ler0_norm ?lter_oppE// ?ltW. Qed.
546-
547-
Lemma chernoff (X : {RV P >-> R}) (t a : R) : (0 < t)%R ->
548-
P [set x | X x >= a]%R * (expR (t * a))%:E <= mgf X t.
533+
Lemma chernoff (X : {RV P >-> R}) (r a : R) : (0 < r)%R ->
534+
P [set x | X x >= a]%R * (expR (r * a))%:E <= mmt_gen_fun X r.
549535
Proof.
550-
move=> t0.
551-
rewrite /= /mgf.
552-
have h : (0 < `| expR (t * a) |)%R by rewrite normr_gt0 gt_eqF ?expR_gt0.
553-
pose Y : {RV P >-> R} := [the {mfun T >-> R} of expR \o (t \o* X)].
554-
have := @markov Y normr (`| expR (t * a)|)%R h (@measurable_normr _ _) (fun r => normr_ge0 r) (monoW_in ge0_ler_normr).
555-
rewrite normr_id.
556-
rewrite ger0_norm ?expR_ge0//.
557-
under eq_set => x.
558-
rewrite /Y /= ger0_norm ?expR_ge0// lee_fin ler_expR.
559-
rewrite mulrC (@ler_pmul2r _ t)//. over.
560-
rewrite /= muleC.
561-
suff -> : (normr \o [eta normr]) \o (expR \o t \o* X) = (expR \o t \o* X) => //.
562-
by apply: funext => x /=; rewrite normr_id ger0_norm ?expR_ge0.
536+
move=> t0; rewrite /mmt_gen_fun; have -> : expR \o r \o* X =
537+
(normr \o normr) \o [the {mfun T >-> R} of expR \o r \o* X].
538+
by apply: funext => t /=; rewrite normr_id ger0_norm ?expR_ge0.
539+
rewrite (le_trans _ (markov _ (expR_gt0 (r * a)) _ _ _))//; last first.
540+
exact: (monoW_in (@ger0_le_norm _)).
541+
rewrite ger0_norm ?expR_ge0// muleC lee_pmul2l// ?lte_fin ?expR_gt0//.
542+
rewrite [X in _ <= P X](_ : _ = [set x | a <= X x]%R)//; apply: eq_set => t/=.
543+
by rewrite ger0_norm ?expR_ge0// lee_fin ler_expR mulrC ler_pmul2r.
563544
Qed.
564545

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

0 commit comments

Comments
 (0)