Skip to content

Commit 3953151

Browse files
committed
gen sample
1 parent d934def commit 3953151

File tree

2 files changed

+59
-10
lines changed

2 files changed

+59
-10
lines changed

theories/kernel.v

Lines changed: 57 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,30 @@ Qed.
6060
End probability_lemmas.
6161
(* /PR 516 in progress *)
6262

63+
(* PR 765 in progress *)
64+
Require Import set_interval.
65+
66+
Module ErealGenInftyO.
67+
Section erealgeninftyo.
68+
Variable R : realType.
69+
70+
Definition G := [set A : set \bar R | exists x, A = `]-oo, x[%classic].
71+
72+
Lemma measurableE : emeasurable (R.-ocitv.-measurable) = G.-sigma.-measurable.
73+
Proof.
74+
rewrite ErealGenCInfty.measurableE eqEsubset; split => A.
75+
apply: smallest_sub; first exact: smallest_sigma_algebra.
76+
move=> _ [x ->]; rewrite -[X in _.-measurable X]setCK; apply: measurableC.
77+
by apply: sub_sigma_algebra; exists x; rewrite setCitvr.
78+
apply: smallest_sub; first exact: smallest_sigma_algebra.
79+
move=> x Gx; rewrite -(setCK x); apply: measurableC; apply: sub_sigma_algebra.
80+
by case: Gx => y ->; exists y; rewrite setCitvl.
81+
Qed.
82+
83+
End erealgeninftyo.
84+
End ErealGenInftyO.
85+
(* /PR 765 in progress *)
86+
6387
(* TODO: PR*)
6488
Lemma setT0 (T : pointedType) : setT != set0 :> set T.
6589
Proof. by apply/eqP => /seteqP[] /(_ point) /(_ Logic.I). Qed.
@@ -925,23 +949,48 @@ End dist_salgebra_instance.
925949

926950
Section kprobability.
927951
Variables (d d' : _) (X : measurableType d) (Y : measurableType d').
928-
Variables (R : realType) (P : probability Y R).
952+
Variables (R : realType) (P : X -> pprobability Y R).
953+
954+
Definition kprobability (mP : measurable_fun setT P)
955+
: X -> {measure set Y -> \bar R} := P.
929956

930-
Definition kprobability
931-
: X -> {measure set Y -> \bar R} := fun=> P.
957+
Hypothesis mP : measurable_fun setT P.
932958

933959
Let measurable_fun_kprobability U : measurable U ->
934-
measurable_fun setT (kprobability ^~ U).
935-
Proof. by move=> mU; exact: measurable_fun_cst. Qed.
960+
measurable_fun setT (kprobability mP ^~ U).
961+
Proof.
962+
move=> mU.
963+
apply: (measurability (ErealGenInftyO.measurableE R)) => A /= -[B [x ->]].
964+
rewrite setTI => <-; case: x => [r| |]; last 2 first.
965+
- rewrite (_ : _ @^-1` _ = setT)//; apply/seteqP; split => // x _ /=.
966+
by rewrite in_itv/= (le_lt_trans (probability_le1 _ _)) ?ltey.
967+
- rewrite (_ : _ @^-1` _ = set0)//; apply/seteqP; split => // x /=.
968+
by rewrite in_itv/=; apply/negP; rewrite -leNgt leNye.
969+
rewrite (_ : _ @^-1` _ = (fun x => P x U < r%:E)); last first.
970+
by apply/funext => x; rewrite /= in_itv.
971+
rewrite [X in measurable X](_ : _ = P @^-1` [set mu | mu U < r%:E]) //.
972+
have [r0|r0] := leP 0%R r; last first.
973+
rewrite [X in _ @^-1` X](_ : _ = set0) ?preimage_set0//.
974+
apply/seteqP; split => // x/=.
975+
by apply/negP; rewrite -leNgt (@le_trans _ _ 0)// lee_fin ltW.
976+
have [r1|r1] := leP r 1%R; last first.
977+
rewrite [X in _ @^-1` X](_ : _ = setT) ?preimage_setT//.
978+
apply/seteqP; split => // x/= _.
979+
by rewrite (le_lt_trans (probability_le1 _ _)).
980+
move: mP => /(_ measurableT)/(_ [set mu | mu U < r%:E]).
981+
rewrite setTI; apply; apply: sub_sigma_algebra; exists r => /=.
982+
by rewrite in_itv/= r0.
983+
by exists U.
984+
Qed.
936985

937986
HB.instance Definition _ :=
938-
@isKernel.Build _ _ X Y R kprobability measurable_fun_kprobability.
987+
@isKernel.Build _ _ X Y R (kprobability mP) measurable_fun_kprobability.
939988

940-
Let kprobability_prob x : kprobability x setT = 1.
989+
Let kprobability_prob x : kprobability mP x setT = 1.
941990
Proof. by rewrite /kprobability/= probability_setT. Qed.
942991

943992
HB.instance Definition _ :=
944-
@Kernel_isProbability.Build _ _ X Y R kprobability kprobability_prob.
993+
@Kernel_isProbability.Build _ _ X Y R (kprobability mP) kprobability_prob.
945994

946995
End kprobability.
947996

theories/prob_lang.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,8 +411,8 @@ Variable R : realType.
411411
Definition ret (f : X -> Y) (mf : measurable_fun setT f) :=
412412
locked [the R.-sfker X ~> Y of kdirac mf].
413413

414-
Definition sample (P : probability Y R) :=
415-
locked [the R.-pker X ~> Y of kprobability P] .
414+
Definition sample (P : pprobability Y R) :=
415+
locked [the R.-pker X ~> Y of kprobability (measurable_fun_cst P)] .
416416

417417
Definition normalize (k : R.-sfker X ~> Y) P x :=
418418
locked [the probability _ _ of mnormalize k P x].

0 commit comments

Comments
 (0)