@@ -408,7 +408,7 @@ Section insn2.
408408Context d d' (X : measurableType d) (Y : measurableType d') (R : realType).
409409
410410Definition ret (f : X -> Y) (mf : measurable_fun setT f)
411- : R.-sfker X ~> Y := [the R.-sfker _ ~> _ of kdirac mf].
411+ : R.-pker X ~> Y := [the R.-pker _ ~> _ of kdirac mf].
412412
413413Definition sample (P : pprobability Y R) : R.-pker X ~> Y :=
414414 [the R.-pker _ ~> _ of kprobability (measurable_fun_cst P)].
@@ -632,6 +632,35 @@ Qed.
632632
633633End letin_ite.
634634
635+ Section letinA.
636+ Context d d' d1 d2 d3 (X : measurableType d) (Y : measurableType d')
637+ (T1 : measurableType d1) (T2 : measurableType d2) (T3 : measurableType d3)
638+ (R : realType).
639+ Import Notations.
640+ Variables (t : R.-sfker X ~> T1)
641+ (u : R.-sfker [the measurableType _ of (X * T1)%type] ~> T2)
642+ (v : R.-sfker [the measurableType _ of (X * T2)%type] ~> Y)
643+ (v' : R.-sfker [the measurableType _ of (X * T1 * T2)%type] ~> Y)
644+ (vv' : forall y, v =1 fun xz => v' (xz.1, y, xz.2)).
645+
646+ Lemma letinA x A : measurable A ->
647+ letin t (letin u v') x A
648+ =
649+ (letin (letin t u) v) x A.
650+ Proof .
651+ move=> mA.
652+ rewrite !letinE.
653+ under eq_integral do rewrite letinE.
654+ rewrite integral_kcomp; [|by []|].
655+ - apply: eq_integral => y _.
656+ apply: eq_integral => z _.
657+ by rewrite (vv' y).
658+ have /measurable_fun_prod1 := @measurable_kernel _ _ _ _ _ v _ mA.
659+ exact.
660+ Qed .
661+
662+ End letinA.
663+
635664Section letinC.
636665Context d d1 d' (X : measurableType d) (Y : measurableType d1)
637666 (Z : measurableType d') (R : realType).
@@ -677,12 +706,18 @@ Section constants.
677706Variable R : realType.
678707Local Open Scope ring_scope.
679708
680- Lemma onem12 : `1- (1 / 2%:R) = (1%:R / 2%:R)%:nng%:num :> R.
681- Proof . by rewrite /onem/= {1}(splitr 1) addrK. Qed .
709+ Lemma onem1S n : `1- (1 / n.+1%:R) = (n%:R / n.+1%:R)%:nng%:num :> R.
710+ Proof .
711+ by rewrite /onem/= -{1}(@divrr _ n.+1%:R) ?unitfE// -mulrBl -natr1 addrK.
712+ Qed .
682713
683- Lemma p12 : (1 / 2 %:R)%:nng%:num <= 1 :> R.
714+ Lemma p1S n : (1 / n.+1 %:R)%:nng%:num <= 1 :> R.
684715Proof . by rewrite ler_pdivr_mulr//= mul1r ler1n. Qed .
685716
717+ Lemma p12 : (1 / 2%:R)%:nng%:num <= 1 :> R. Proof . by rewrite p1S. Qed .
718+
719+ Lemma p14 : (1 / 4%:R)%:nng%:num <= 1 :> R. Proof . by rewrite p1S. Qed .
720+
686721Lemma onem27 : `1- (2 / 7%:R) = (5%:R / 7%:R)%:nng%:num :> R.
687722Proof . by apply/eqP; rewrite subr_eq/= -mulrDl -natrD divrr// unitfE. Qed .
688723
@@ -691,6 +726,7 @@ Proof. by rewrite /= lter_pdivr_mulr// mul1r ler_nat. Qed.
691726
692727End constants.
693728Arguments p12 {R}.
729+ Arguments p14 {R}.
694730Arguments p27 {R}.
695731
696732Section poisson.
@@ -833,7 +869,8 @@ Definition bernoulli_and : R.-sfker T ~> mbool :=
833869 (ret (measurable_fun_mand var2of3 var3of3)))).
834870
835871Lemma bernoulli_andE t U :
836- bernoulli_and t U = (1 / 4 * \1_U true)%:E + (3 / 4 * \1_U false)%:E.
872+ bernoulli_and t U =
873+ sample [the probability _ _ of bernoulli p14] t U.
837874Proof .
838875rewrite /bernoulli_and.
839876rewrite !letin_sample_bernoulli//=.
@@ -844,12 +881,14 @@ rewrite !muleA.
844881rewrite -addeA.
845882rewrite -muleDl//.
846883rewrite -!EFinM.
847- rewrite !onem12 /= -splitr mulr1.
884+ rewrite !onem1S /= -splitr mulr1.
848885have -> : (1 / 2 * (1 / 2) = 1 / 4 :> R)%R.
849886 by rewrite mulf_div mulr1// -natrM.
850- congr (_ + (_ * _)%:E).
887+ rewrite /bernoulli/= measure_addE/= /mscale/= -!EFinM.
888+ congr( _ + (_ * _)%:E).
851889have -> : (1 / 2 = 2 / 4 :> R)%R.
852890 by apply/eqP; rewrite eqr_div// ?pnatr_eq0// mul1r -natrM.
891+ rewrite onem1S//.
853892by rewrite -mulrDl.
854893Qed .
855894
@@ -968,4 +1007,3 @@ by rewrite addr_gt0// mulr_gt0//= ?divr_gt0// ?ltr0n// exp_density_gt0 ?ltr0n.
9681007Qed .
9691008
9701009End staton_bus_exponential.
971-
0 commit comments