Skip to content

Commit 7baee5f

Browse files
committed
letinA
1 parent dc6b4ba commit 7baee5f

File tree

2 files changed

+51
-34
lines changed

2 files changed

+51
-34
lines changed

theories/kernel.v

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -41,27 +41,6 @@ Local Open Scope classical_set_scope.
4141
Local Open Scope ring_scope.
4242
Local Open Scope ereal_scope.
4343

44-
(* PR 516 in progress *)
45-
HB.mixin Record isProbability d (T : measurableType d)
46-
(R : realType) (P : set T -> \bar R) of isMeasure d R T P :=
47-
{ probability_setT : P setT = 1%E }.
48-
49-
#[short(type=probability)]
50-
HB.structure Definition Probability d (T : measurableType d) (R : realType) :=
51-
{P of isProbability d T R P & isMeasure d R T P }.
52-
53-
Section probability_lemmas.
54-
Context d (T : measurableType d) (R : realType) (P : probability T R).
55-
56-
Lemma probability_le1 (A : set T) : measurable A -> (P A <= 1)%E.
57-
Proof.
58-
move=> mA; rewrite -(@probability_setT _ _ _ P).
59-
by apply: le_measure => //; rewrite ?in_setE.
60-
Qed.
61-
62-
End probability_lemmas.
63-
(* /PR 516 in progress *)
64-
6544
(* TODO: PR*)
6645
Lemma setT0 (T : pointedType) : setT != set0 :> set T.
6746
Proof. by apply/eqP => /seteqP[] /(_ point) /(_ Logic.I). Qed.
@@ -684,10 +663,10 @@ Lemma measurable_fun_xsection_integral
684663
Proof.
685664
move=> h.
686665
rewrite (_ : (fun x => _) =
687-
(fun x => elim_sup (fun n => \int[l x]_y (k_ n (x, y))%:E))); last first.
666+
(fun x => lim_esup (fun n => \int[l x]_y (k_ n (x, y))%:E))); last first.
688667
apply/funext => x.
689668
transitivity (lim (fun n => \int[l x]_y (k_ n (x, y))%:E)); last first.
690-
rewrite is_cvg_elim_supE//.
669+
rewrite is_cvg_lim_esupE//.
691670
apply: ereal_nondecreasing_is_cvg => m n mn.
692671
apply: ge0_le_integral => //.
693672
- by move=> y _; rewrite lee_fin.
@@ -996,7 +975,7 @@ case: ifPn => [_|_]; first exact: measure_semi_sigma_additive.
996975
rewrite (_ : (fun _ => _) = ((fun n => \sum_(0 <= i < n) f x (F i)) \*
997976
cst ((fine (f x setT))^-1)%:E)); last first.
998977
by apply/funext => n; rewrite -ge0_sume_distrl.
999-
by apply: ereal_cvgMr => //; exact: measure_semi_sigma_additive.
978+
by apply: cvgeMr => //; exact: measure_semi_sigma_additive.
1000979
Qed.
1001980

1002981
HB.instance Definition _ x := isMeasure.Build _ _ _ (mnormalize x)
@@ -1173,8 +1152,8 @@ Variable k : R.-sfker [the measurableType _ of (X * Y)%type] ~> Z.
11731152

11741153
Import KCOMP_FINITE_KERNEL.
11751154

1176-
Lemma mkcomp_sfinite : exists k_ : (R.-fker X ~> Z)^nat, forall x U, measurable U ->
1177-
(l \; k) x U = kseries k_ x U.
1155+
Lemma mkcomp_sfinite : exists k_ : (R.-fker X ~> Z)^nat,
1156+
forall x U, measurable U -> (l \; k) x U = kseries k_ x U.
11781157
Proof.
11791158
have [k_ hk_] := sfinite k; have [l_ hl_] := sfinite l.
11801159
have [kl hkl] : exists kl : (R.-fker X ~> Z) ^nat, forall x U,

theories/prob_lang.v

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ Section insn2.
408408
Context d d' (X : measurableType d) (Y : measurableType d') (R : realType).
409409

410410
Definition 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

413413
Definition 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

633633
End 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+
635664
Section letinC.
636665
Context d d1 d' (X : measurableType d) (Y : measurableType d1)
637666
(Z : measurableType d') (R : realType).
@@ -677,12 +706,18 @@ Section constants.
677706
Variable R : realType.
678707
Local 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.
684715
Proof. 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+
686721
Lemma onem27 : `1- (2 / 7%:R) = (5%:R / 7%:R)%:nng%:num :> R.
687722
Proof. 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

692727
End constants.
693728
Arguments p12 {R}.
729+
Arguments p14 {R}.
694730
Arguments p27 {R}.
695731

696732
Section poisson.
@@ -833,7 +869,8 @@ Definition bernoulli_and : R.-sfker T ~> mbool :=
833869
(ret (measurable_fun_mand var2of3 var3of3)))).
834870

835871
Lemma 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.
837874
Proof.
838875
rewrite /bernoulli_and.
839876
rewrite !letin_sample_bernoulli//=.
@@ -844,12 +881,14 @@ rewrite !muleA.
844881
rewrite -addeA.
845882
rewrite -muleDl//.
846883
rewrite -!EFinM.
847-
rewrite !onem12/= -splitr mulr1.
884+
rewrite !onem1S/= -splitr mulr1.
848885
have -> : (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).
851889
have -> : (1 / 2 = 2 / 4 :> R)%R.
852890
by apply/eqP; rewrite eqr_div// ?pnatr_eq0// mul1r -natrM.
891+
rewrite onem1S//.
853892
by rewrite -mulrDl.
854893
Qed.
855894

@@ -968,4 +1007,3 @@ by rewrite addr_gt0// mulr_gt0//= ?divr_gt0// ?ltr0n// exp_density_gt0 ?ltr0n.
9681007
Qed.
9691008

9701009
End staton_bus_exponential.
971-

0 commit comments

Comments
 (0)