Skip to content

Commit 45796d1

Browse files
Add section: cdf of lebesgue stieltjes measure (#1639)
* add section cdf_of_lebesgue_stieltjes_mesure --------- Co-authored-by: Reynald Affeldt <reynald.affeldt@aist.go.jp>
1 parent f669994 commit 45796d1

5 files changed

Lines changed: 155 additions & 48 deletions

File tree

CHANGELOG_UNRELEASED.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,14 @@
112112

113113
- in `lebesgue_integral_definition.v`:
114114
+ lemmas `le_measure_sintegral`, `ge0_le_measure_integral`
115+
- in `probability.v`:
116+
+ lemma `cdf_lebesgue_stieltjes_id`
117+
118+
- in `real_interval.v`:
119+
+ lemma `itvNybndEbigcup`
120+
121+
- in `lebesgue_stieltjes_measure.v`:
122+
+ mixin `isCumulativeBounded`, structure `CumulativeBounded` with type `cumulative_bounded`
115123

116124
### Changed
117125

@@ -238,6 +246,9 @@
238246
`LspaceType` to `ae_eq_op`, `ae_eq_op_refl`, `ae_eq_op_sym`, `ae_eq_op_trans`, `aeEqMfun`
239247
* renamed lemma `LequivP` to `ae_eqP`
240248

249+
- moved from `measurable_realfun.v` to `lebesgue_stieltjes_measure.v`:
250+
+ definitions `measurableTypeR`, `measurableR`
251+
+ lemmas `measurable_set1`, `measurable_itv`
241252

242253
### Renamed
243254

reals/real_interval.v

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,15 @@ rewrite in_itv /= andbT => xy; exists (trunc y).+1 => //=.
167167
by rewrite in_itv /= xy /= truncnS_gt.
168168
Qed.
169169

170+
Lemma itvNybndEbigcup b x : [set` Interval -oo%O (BSide b x)] =
171+
\bigcup_k [set` Interval (BRight (- k%:R)) (BSide b x)].
172+
Proof.
173+
rewrite predeqE => y; split=> /=; last first.
174+
by move=> [n _]/=; rewrite in_itv => /andP[ny yx]; rewrite in_itv.
175+
rewrite in_itv /= => yx; exists (trunc `|y|).+1 => //=; rewrite in_itv/=.
176+
by rewrite yx /= andbT ltrNl (le_lt_trans (ler_norm _))// normrN truncnS_gt.
177+
Qed.
178+
170179
Lemma itvoyEbigcup x :
171180
`]x, +oo[%classic = \bigcup_k `[x + k.+1%:R^-1, +oo[%classic.
172181
Proof.

theories/lebesgue_stieltjes_measure.v

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ From mathcomp Require Import realfun.
3636
(* f is a cumulative function. *)
3737
(* completed_lebesgue_stieltjes_measure f == the completed Lebesgue-Stieltjes *)
3838
(* measure *)
39+
(* cumulative_bounded R l r == type of cumulative functions f such that *)
40+
(* f @ -oo --> l and f @ +oo --> r *)
41+
(* The HB class is CumulativeBounded. *)
3942
(* ``` *)
4043
(* *)
4144
(******************************************************************************)
@@ -541,3 +544,102 @@ HB.instance Definition _ (f : cumulative R) :=
541544

542545
End completed_lebesgue_stieltjes_measure.
543546
Arguments completed_lebesgue_stieltjes_measure {R}.
547+
548+
Section salgebra_R_ssets.
549+
Variable R : realType.
550+
551+
Definition measurableTypeR := g_sigma_algebraType (R.-ocitv.-measurable).
552+
Definition measurableR : set (set R) :=
553+
(R.-ocitv.-measurable).-sigma.-measurable.
554+
555+
HB.instance Definition _ := Pointed.on R.
556+
HB.instance Definition R_isMeasurable :
557+
isMeasurable default_measure_display R :=
558+
@isMeasurable.Build _ measurableTypeR measurableR
559+
measurable0 (@measurableC _ _) (@bigcupT_measurable _ _).
560+
(*HB.instance (Real.sort R) R_isMeasurable.*)
561+
562+
Lemma measurable_set1 (r : R) : measurable [set r].
563+
Proof.
564+
rewrite set1_bigcap_oc; apply: bigcap_measurable => // k _.
565+
by apply: sub_sigma_algebra; exact/is_ocitv.
566+
Qed.
567+
#[local] Hint Resolve measurable_set1 : core.
568+
569+
Lemma measurable_itv (i : interval R) : measurable [set` i].
570+
Proof.
571+
have moc (a b : R) : measurable `]a, b].
572+
by apply: sub_sigma_algebra; apply: is_ocitv.
573+
have mopoo (x : R) : measurable `]x, +oo[.
574+
by rewrite itv_bndy_bigcup_BRight; exact: bigcup_measurable.
575+
have mnooc (x : R) : measurable `]-oo, x].
576+
by rewrite -setCitvr; exact/measurableC.
577+
have ooE (a b : R) : `]a, b[%classic = `]a, b] `\ b.
578+
case: (boolP (a < b)) => ab; last by rewrite !set_itv_ge ?set0D.
579+
by rewrite -setUitv1// setUDK// => x [->]; rewrite /= in_itv/= ltxx andbF.
580+
have moo (a b : R) : measurable `]a, b[.
581+
by rewrite ooE; exact: measurableD.
582+
have mcc (a b : R) : measurable `[a, b].
583+
case: (boolP (a <= b)) => ab; last by rewrite set_itv_ge.
584+
by rewrite -setU1itv//; apply/measurableU.
585+
have mco (a b : R) : measurable `[a, b[.
586+
case: (boolP (a < b)) => ab; last by rewrite set_itv_ge.
587+
by rewrite -setU1itv//; apply/measurableU.
588+
have oooE (b : R) : `]-oo, b[%classic = `]-oo, b] `\ b.
589+
by rewrite -setUitv1// setUDK// => x [->]; rewrite /= in_itv/= ltxx.
590+
case: i => [[[] a|[]] [[] b|[]]] => //; do ?by rewrite set_itv_ge.
591+
- by rewrite -setU1itv//; exact/measurableU.
592+
- by rewrite oooE; exact/measurableD.
593+
- by rewrite set_itvNyy.
594+
Qed.
595+
#[local] Hint Resolve measurable_itv : core.
596+
597+
End salgebra_R_ssets.
598+
#[global]
599+
Hint Extern 0 (measurable [set _]) => solve [apply: measurable_set1] : core.
600+
#[global]
601+
Hint Extern 0 (measurable [set` _] ) => exact: measurable_itv : core.
602+
603+
HB.mixin Record isCumulativeBounded (R : numFieldType) (l r : R) (f : R -> R) := {
604+
cumulativeNy0 : f @ -oo --> l ;
605+
cumulativey1 : f @ +oo --> r }.
606+
607+
#[short(type=cumulativeBounded)]
608+
HB.structure Definition CumulativeBounded (R : numFieldType) (l r : R) :=
609+
{ f of isCumulativeBounded R l r f & Cumulative R f}.
610+
611+
Arguments cumulativeNy0 {R l r} s.
612+
Arguments cumulativey1 {R l r} s.
613+
614+
Section probability_measure_of_lebesgue_stieltjes_mesure.
615+
Context {R : realType} (f : cumulativeBounded (0:R) (1:R)).
616+
Local Open Scope measure_display_scope.
617+
618+
Let T := g_sigma_algebraType R.-ocitv.-measurable.
619+
Let lsf := lebesgue_stieltjes_measure f.
620+
621+
Let lebesgue_stieltjes_setT : lsf setT = 1%E.
622+
Proof.
623+
rewrite -(bigcup_itvT false false).
624+
pose I n : set R := `]- (n%:R), n%:R]%classic.
625+
have : (lsf \o I) n @[n --> \oo] --> 1%E.
626+
have -> : lsf \o I = (fun n => (f n%:R)%:E - (f (- n%:R))%:E)%E.
627+
apply/funext=> n; rewrite /= /lsf/= /lebesgue_stieltjes_measure.
628+
rewrite /measure_extension measurable_mu_extE/=; last exact: is_ocitv.
629+
by rewrite wlength_itv_bnd// ge0_cp.
630+
rewrite -(sube0 1); apply: cvgeB => //.
631+
- by apply/cvg_EFin; [near=> F
632+
|exact/(cvg_comp _ _ (@cvgr_idn R))/cumulativey1].
633+
- apply/cvg_EFin; [by near=> F|apply: (cvg_ninftyP _ _).1 => //].
634+
exact: cumulativeNy0.
635+
by apply: (cvg_comp _ _ (@cvgr_idn R)); rewrite ninfty.
636+
have : (lsf \o I) n @[n --> \oo] --> lsf (\bigcup_n I n).
637+
apply: nondecreasing_cvg_mu; rewrite /I//; first exact: bigcup_measurable.
638+
by move=> *; apply/subsetPset/subset_itv; rewrite leBSide/= ?lerN2 ler_nat.
639+
exact: cvg_unique.
640+
Unshelve. all: end_near. Qed.
641+
642+
HB.instance Definition _ := @Measure_isProbability.Build _ _ _
643+
(lebesgue_stieltjes_measure f) lebesgue_stieltjes_setT.
644+
645+
End probability_measure_of_lebesgue_stieltjes_mesure.

theories/measurable_realfun.v

Lines changed: 1 addition & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -183,52 +183,6 @@ End puncture_ereal_itv.
183183
Section salgebra_R_ssets.
184184
Variable R : realType.
185185

186-
Definition measurableTypeR := g_sigma_algebraType (R.-ocitv.-measurable).
187-
Definition measurableR : set (set R) :=
188-
(R.-ocitv.-measurable).-sigma.-measurable.
189-
190-
HB.instance Definition _ := Pointed.on R.
191-
HB.instance Definition R_isMeasurable :
192-
isMeasurable default_measure_display R :=
193-
@isMeasurable.Build _ measurableTypeR measurableR
194-
measurable0 (@measurableC _ _) (@bigcupT_measurable _ _).
195-
(*HB.instance (Real.sort R) R_isMeasurable.*)
196-
197-
Lemma measurable_set1 (r : R) : measurable [set r].
198-
Proof.
199-
rewrite set1_bigcap_oc; apply: bigcap_measurable => // k _.
200-
by apply: sub_sigma_algebra; exact/is_ocitv.
201-
Qed.
202-
#[local] Hint Resolve measurable_set1 : core.
203-
204-
Lemma measurable_itv (i : interval R) : measurable [set` i].
205-
Proof.
206-
have moc (a b : R) : measurable `]a, b].
207-
by apply: sub_sigma_algebra; apply: is_ocitv.
208-
have mopoo (x : R) : measurable `]x, +oo[.
209-
by rewrite itv_bndy_bigcup_BRight; exact: bigcup_measurable.
210-
have mnooc (x : R) : measurable `]-oo, x].
211-
by rewrite -setCitvr; exact/measurableC.
212-
have ooE (a b : R) : `]a, b[%classic = `]a, b] `\ b.
213-
case: (boolP (a < b)) => ab; last by rewrite !set_itv_ge ?set0D.
214-
by rewrite -setUitv1// setUDK// => x [->]; rewrite /= in_itv/= ltxx andbF.
215-
have moo (a b : R) : measurable `]a, b[.
216-
by rewrite ooE; exact: measurableD.
217-
have mcc (a b : R) : measurable `[a, b].
218-
case: (boolP (a <= b)) => ab; last by rewrite set_itv_ge.
219-
by rewrite -setU1itv//; apply/measurableU.
220-
have mco (a b : R) : measurable `[a, b[.
221-
case: (boolP (a < b)) => ab; last by rewrite set_itv_ge.
222-
by rewrite -setU1itv//; apply/measurableU.
223-
have oooE (b : R) : `]-oo, b[%classic = `]-oo, b] `\ b.
224-
by rewrite -setUitv1// setUDK// => x [->]; rewrite /= in_itv/= ltxx.
225-
case: i => [[[] a|[]] [[] b|[]]] => //; do ?by rewrite set_itv_ge.
226-
- by rewrite -setU1itv//; exact/measurableU.
227-
- by rewrite oooE; exact/measurableD.
228-
- by rewrite set_itvNyy.
229-
Qed.
230-
#[local] Hint Resolve measurable_itv : core.
231-
232186
Lemma measurable_fun_itv_bndo_bndc (a : itv_bound R) (b : R)
233187
(f : R -> R) :
234188
measurable_fun [set` Interval a (BLeft b)] f ->
@@ -387,8 +341,7 @@ Qed.
387341

388342
End salgebra_R_ssets.
389343
#[global]
390-
Hint Extern 0 (measurable [set _]) => solve [apply: measurable_set1|
391-
apply: emeasurable_set1] : core.
344+
Hint Extern 0 (measurable [set _]) => solve [apply: emeasurable_set1] : core.
392345
#[global]
393346
Hint Extern 0 (measurable [set` _] ) => exact: measurable_itv : core.
394347

theories/probability.v

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,38 @@ Unshelve. all: by end_near. Qed.
247247

248248
End cumulative_distribution_function.
249249

250+
Section cdf_of_lebesgue_stieltjes_mesure.
251+
Context {R : realType} (f : cumulativeBounded (0:R) (1:R)).
252+
Local Open Scope measure_display_scope.
253+
254+
Let T := g_sigma_algebraType R.-ocitv.-measurable.
255+
Let lsf := lebesgue_stieltjes_measure f.
256+
257+
Let idTR : T -> R := idfun.
258+
259+
#[local] HB.instance Definition _ :=
260+
@isMeasurableFun.Build _ _ T R idTR (@measurable_id _ _ setT).
261+
262+
Lemma cdf_lebesgue_stieltjes_id r : cdf (idTR : {RV lsf >-> R}) r = (f r)%:E.
263+
Proof.
264+
rewrite /= preimage_id itvNybndEbigcup.
265+
have : lsf `]-n%:R, r] @[n --> \oo] --> (f r)%:E.
266+
suff : ((f r)%:E - (f (-n%:R))%:E)%E @[n --> \oo] --> (f r)%:E.
267+
apply: cvg_trans; apply: near_eq_cvg; near=> n.
268+
rewrite /lsf /lebesgue_stieltjes_measure /measure_extension/=.
269+
rewrite measurable_mu_extE/= ?wlength_itv_bnd//; last exact: is_ocitv.
270+
by rewrite lerNl; near: n; exact: nbhs_infty_ger.
271+
rewrite -[X in _ --> X](sube0 (f r)%:E); apply: (cvgeB _ (cvg_cst _ )) => //.
272+
apply: (cvg_comp _ _ (cvg_comp _ _ _ (cumulativeNy0 f))) => //.
273+
by apply: (cvg_comp _ _ cvgr_idn); rewrite ninfty.
274+
have : lsf `]- n%:R, r] @[n --> \oo] --> lsf (\bigcup_n `]-n%:R, r]%classic).
275+
apply: nondecreasing_cvg_mu; rewrite /I//; first exact: bigcup_measurable.
276+
by move=> *; apply/subsetPset/subset_itv; rewrite leBSide//= lerN2 ler_nat.
277+
exact: cvg_unique.
278+
Unshelve. all: by end_near. Qed.
279+
280+
End cdf_of_lebesgue_stieltjes_mesure.
281+
250282
HB.lock Definition expectation {d} {T : measurableType d} {R : realType}
251283
(P : probability T R) (X : T -> R) := (\int[P]_w (X w)%:E)%E.
252284
Canonical expectation_unlockable := Unlockable expectation.unlock.

0 commit comments

Comments
 (0)