Skip to content

Commit 8c33df2

Browse files
committed
axiom about composition of RVs proved
1 parent a1ea08a commit 8c33df2

File tree

1 file changed

+69
-91
lines changed

1 file changed

+69
-91
lines changed

theories/sampling.v

+69-91
Original file line numberDiff line numberDiff line change
@@ -440,10 +440,73 @@ Qed.
440440
HB.instance Definition _ :=
441441
isMeasurableFun.Build _ _ _ _ bool_to_real measurable_bool_to_real.
442442

443+
HB.instance Definition _ := MeasurableFun.on bool_to_real.
444+
443445
Definition btr : {RV P >-> R} := bool_to_real.
444446

445447
End bool_to_real.
446448

449+
Section independent_RVs_btr.
450+
Context {R : realType} d (T : measurableType d).
451+
Variable P : probability T R.
452+
Local Open Scope ring_scope.
453+
454+
Lemma independent_RVs_btr
455+
(I : set nat) (X : nat -> {mfun T >-> bool}) :
456+
independent_RVs P I X -> independent_RVs P I (fun i : nat => btr P (X i)).
457+
Proof.
458+
move=> PIX; split.
459+
- move=> i Ii.
460+
rewrite /g_sigma_algebra_preimage/= /preimage_set_system/= => _ [A mA <-].
461+
by rewrite setTI; exact/measurable_sfunP.
462+
- move=> J JI E/= JEfX; apply PIX => // j jJ.
463+
have := JEfX _ jJ; rewrite !inE.
464+
rewrite /g_sigma_algebra_preimage /preimage_set_system/= => -[A mA <-].
465+
by exists ((fun x => x%:R) @^-1` A).
466+
Qed.
467+
468+
End independent_RVs_btr.
469+
470+
Section mfunM.
471+
Context {d} (T : measurableType d) {R : realType}.
472+
473+
HB.instance Definition _ (f g : {mfun T >-> R}) :=
474+
@isMeasurableFun.Build d _ _ _ (f \* g)%R (measurable_funM (@measurable_funP _ _ _ _ f) ((@measurable_funP _ _ _ _ g))).
475+
476+
End mfunM.
477+
478+
Section move.
479+
480+
Lemma sumr_map {R : realType} U d (T : measurableType d) (l : seq U) Q
481+
(f : U -> {mfun T >-> R}) (x : T) :
482+
(\sum_(i <- l | Q i) f i) x = \sum_(i <- l | Q i) f i x.
483+
Proof. by elim/big_ind2 : _ => //= _ g _ h <- <-. Qed.
484+
485+
Lemma prodr_map {R : realType} U d (T : measurableType d) (l : seq U) Q
486+
(f : U -> {mfun T >-> R}) (x : T) :
487+
(\prod_(i <- l | Q i) f i) x = \prod_(i <- l | Q i) f i x.
488+
Proof. by elim/big_ind2 : _ => //= _ h _ g <- <-. Qed.
489+
490+
Definition sumrfct {R : realType} d {T : measurableType d} (s : seq {mfun T >-> R}) : T -> R :=
491+
fun x => \sum_(f <- s) f x.
492+
493+
Lemma measurable_sumrfct {R : realType} d {T : measurableType d} (s : seq {mfun T >-> R}) :
494+
measurable_fun setT (sumrfct s).
495+
Proof.
496+
apply/measurable_EFinP => /=; apply/measurableT_comp => //.
497+
exact: measurable_sum.
498+
Qed.
499+
500+
HB.instance Definition _ {R : realType} d {T : measurableType d} (s : seq {mfun T >-> R}) :=
501+
isMeasurableFun.Build _ _ _ _ (sumrfct s) (measurable_sumrfct s).
502+
503+
Lemma sum_mfunE {R : realType} d {T : measurableType d} (s : seq {mfun T >-> R}) x :
504+
((\sum_(f <- s) f) x = sumrfct s x)%R.
505+
Proof. by rewrite/sumrfct; elim/big_ind2 : _ => //= u a v b <- <-. Qed.
506+
507+
508+
End move.
509+
447510
Section bernoulli.
448511

449512
Local Open Scope ereal_scope.
@@ -549,32 +612,6 @@ transitivity (\sum_(i < n) p%:E).
549612
by rewrite sumEFin big_const_ord iter_addr addr0 mulrC mulr_natr.
550613
Qed.
551614

552-
Definition sumrfct (s : seq {mfun T >-> R}) := (fun x => \sum_(f <- s) f x)%R.
553-
554-
Lemma measurable_sumrfct s : measurable_fun setT (sumrfct s).
555-
Proof.
556-
rewrite /sumrfct.
557-
pose n := size s.
558-
apply/measurable_EFinP => /=.
559-
have -> : (EFin \o (fun x : T => (\sum_(f <- s) f x)%R)) = (fun x : T => \sum_(i < n) (s`_i x)%:E)%R.
560-
apply: funext => x /=.
561-
rewrite sumEFin.
562-
congr (_%:E).
563-
rewrite big_tnth//.
564-
apply: eq_bigr => i _ /=.
565-
by rewrite (tnth_nth 0%R).
566-
apply: emeasurable_sum => i.
567-
by apply/measurable_EFinP.
568-
Qed.
569-
570-
HB.about isMeasurableFun.Build.
571-
HB.instance Definition _ s :=
572-
isMeasurableFun.Build _ _ _ _ (sumrfct s) (measurable_sumrfct s).
573-
574-
Lemma sumrfctE' (s : seq {mfun T >-> R}) x :
575-
((\sum_(f <- s) f) x = sumrfct s x)%R.
576-
Proof. by rewrite/sumrfct; elim/big_ind2 : _ => //= u a v b <- <-. Qed.
577-
578615
Lemma bernoulli_trial_ge0 (X : {dRV P >-> bool}^nat) n : is_bernoulli_trial n X ->
579616
(forall t, 0 <= bernoulli_trial n X t)%R.
580617
Proof.
@@ -583,55 +620,23 @@ rewrite /bernoulli_trial.
583620
have -> : (\sum_(i < n) btr P (X i))%R = (\sum_(s <- map (btr P \o X) (iota 0 n)) s)%R.
584621
by rewrite big_map -[in RHS](subn0 n) big_mkord.
585622
have -> : (\sum_(s <- [seq (btr P \o X) i | i <- iota 0 n]) s)%R t = (\sum_(s <- [seq (btr P \o X) i | i <- iota 0 n]) s t)%R.
586-
by rewrite sumrfctE'.
623+
by rewrite sum_mfunE.
587624
rewrite big_map.
588625
by apply: sumr_ge0 => i _/=; rewrite /bool_to_real/= ler0n.
589626
Qed.
590627

591628
(* this seems to be provable like in https://www.cs.purdue.edu/homes/spa/courses/pg17/mu-book.pdf page 65 *)
592629
Axiom taylor_ln_le : forall (delta : R), ((1 + delta) * ln (1 + delta) >= delta + delta^+2 / 3)%R.
593630

594-
Lemma expR_prod d' {U : measurableType d'} (X : seq {mfun U >-> R}) (f : {mfun U >-> R} -> R) :
595-
(\prod_(x <- X) expR (f x) = expR (\sum_(x <- X) f x))%R.
596-
Proof.
597-
elim: X => [|h t ih]; first by rewrite !big_nil expR0.
598-
by rewrite !big_cons ih expRD.
599-
Qed.
600-
601-
Lemma expR_sum U l Q (f : U -> R) : (expR (\sum_(i <- l | Q i) f i) = \prod_(i <- l | Q i) expR (f i))%R.
602-
Proof.
603-
elim: l; first by rewrite !big_nil expR0.
604-
move=> a l ih.
605-
rewrite !big_cons.
606-
case: ifP => //= aQ.
607-
by rewrite expRD ih.
608-
Qed.
609-
610-
Lemma sumr_map U d' (V : measurableType d') (l : seq U) Q (f : U -> {mfun V >-> R}) (x : V) :
611-
((\sum_(i <- l | Q i) f i) x = \sum_(i <- l | Q i) f i x)%R.
612-
Proof.
613-
elim: l; first by rewrite !big_nil.
614-
move=> a l ih.
615-
rewrite !big_cons.
616-
case: ifP => aQ//=.
617-
by rewrite -ih.
618-
Qed.
619-
620-
Lemma prodr_map U d' (V : measurableType d') (l : seq U) Q (f : U -> {mfun V >-> R}) (x : V) :
621-
((\prod_(i <- l | Q i) f i) x = \prod_(i <- l | Q i) f i x)%R.
622-
Proof.
623-
elim: l; first by rewrite !big_nil.
624-
move=> a l ih.
625-
rewrite !big_cons.
626-
case: ifP => aQ//=.
627-
by rewrite -ih.
628-
Qed.
629-
630631
Lemma independent_mmt_gen_fun (X : {dRV P >-> bool}^nat) n t :
631632
let mmtX (i : nat) : {RV P >-> R} := expR \o t \o* (btr P (X i)) in
632633
independent_RVs P `I_n X -> independent_RVs P `I_n mmtX.
633634
Proof.
634-
Admitted. (* from Reynald's PR, independent_RVs2_comp, "when applying a function, the sigma algebra only gets smaller" *)
635+
rewrite /= => PnX.
636+
apply: independent_RVs_comp => //.
637+
apply: independent_RVs_scale => //=.
638+
exact: independent_RVs_btr.
639+
Qed.
635640

636641
Lemma expectation_prod_independent_RVs (X : {RV P >-> R}^nat) n :
637642
independent_RVs P `I_n X ->
@@ -695,9 +700,6 @@ rewrite -EFinD; congr (_ + _)%:E; rewrite mulrC//.
695700
by rewrite expR0 mulr1.
696701
Qed.
697702

698-
Lemma iter_mule (n : nat) (x y : \bar R) : iter n ( *%E x) y = (x ^+ n * y)%E.
699-
Proof. by elim: n => [|n ih]; rewrite ?mul1e// [LHS]/= ih expeS muleA. Qed.
700-
701703
Lemma binomial_mmt_gen_fun (X_ : {dRV P >-> bool}^nat) n (t : R) :
702704
is_bernoulli_trial n X_ ->
703705
let X := bernoulli_trial n X_ : {RV P >-> R} in
@@ -712,16 +714,6 @@ rewrite big_const iter_mule mule1 cardT size_enum_ord -EFin_expe powR_mulrn//.
712714
by rewrite addr_ge0// ?subr_ge0// mulr_ge0// expR_ge0.
713715
Qed.
714716

715-
(* TODO: add to the PR by reynald that adds the \prod notation to master *)
716-
Lemma prod_EFin U l Q (f : U -> R) : \prod_(i <- l | Q i) ((f i)%:E) = (\prod_(i <- l | Q i) f i)%:E.
717-
Proof.
718-
elim: l; first by rewrite !big_nil.
719-
move=> a l ih.
720-
rewrite !big_cons.
721-
case: ifP => //= aQ.
722-
by rewrite EFinM ih.
723-
Qed.
724-
725717
Lemma mmt_gen_fun_expectation (X_ : {dRV P >-> bool}^nat) (t : R) n :
726718
(0 <= t)%R ->
727719
is_bernoulli_trial n X_ ->
@@ -803,12 +795,6 @@ rewrite le_eqVlt; apply/orP; left; apply/eqP; congr (expR _)%:E.
803795
by rewrite opprD addrA subrr add0r mulrC mulrN mulNr mulrA.
804796
Qed.
805797

806-
(* TODO: move *)
807-
Lemma ln_div : {in Num.pos &, {morph ln (R:=R) : x y / (x / y)%R >-> (x - y)%R}}.
808-
Proof.
809-
by move=> x y; rewrite !posrE => x0 y0; rewrite lnM ?posrE ?invr_gt0// lnV ?posrE.
810-
Qed.
811-
812798
Lemma norm_expR : normr \o expR = (expR : R -> R).
813799
Proof. by apply/funext => x /=; rewrite ger0_norm ?expR_ge0. Qed.
814800

@@ -910,14 +896,6 @@ rewrite -mulrN -mulrA [in leRHS]mulrC expRM ge0_ler_powR// ?nnegrE.
910896
Qed.
911897
Local Open Scope ereal_scope.
912898

913-
Lemma measurable_fun_le D (f g : T -> R) : d.-measurable D -> measurable_fun D f ->
914-
measurable_fun D g -> measurable (D `&` [set x | f x <= g x]%R).
915-
Proof.
916-
move=> mD mf mg.
917-
under eq_set => x do rewrite -lee_fin.
918-
apply: emeasurable_fun_le => //; apply: measurableT_comp => //.
919-
Qed.
920-
921899
(* Rajani -> corollary 2.7 / mu-book -> corollary 4.7 *)
922900
Corollary bernoulli_trial_inequality4 (X : {dRV P >-> bool}^nat) (delta : R) n :
923901
is_bernoulli_trial n X -> (0 < delta < 1)%R ->

0 commit comments

Comments
 (0)