@@ -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].
517519Proof .
518520move=> 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.
526529Qed .
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.
549535Proof .
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.
563544Qed .
564545
565546Lemma chebyshev (X : {RV P >-> R}) (eps : R) : (0 < eps)%R ->
0 commit comments