Skip to content

Commit 9d4b9ae

Browse files
committed
structure cumulative01
1 parent 520b912 commit 9d4b9ae

4 files changed

Lines changed: 105 additions & 73 deletions

File tree

CHANGELOG_UNRELEASED.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,9 @@
221221
`LspaceType` to `ae_eq_op`, `ae_eq_op_refl`, `ae_eq_op_sym`, `ae_eq_op_trans`, `aeEqMfun`
222222
* renamed lemma `LequivP` to `ae_eqP`
223223

224+
- moved from `measurable_realfun.v` to `lebesgue_stieltjes_measure.v`:
225+
+ definitions `measurableTypeR`, `measurableR`
226+
+ lemmas `measurable_set1`, `measurable_itv`
224227

225228
### Renamed
226229

theories/lebesgue_stieltjes_measure.v

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,3 +541,102 @@ HB.instance Definition _ (f : cumulative R) :=
541541

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

250250
Section cdf_of_lebesgue_stieltjes_mesure.
251-
Context {R : realType} (f : cumulative R)
252-
(f_y1 : f @ +oo --> (1:R)) (f_Ny0 : f @ -oo --> (0:R)).
251+
Context {R : realType} (f : cumulative01 R).
253252
Local Open Scope measure_display_scope.
254253

255254
Let T := g_sigma_algebraType R.-ocitv.-measurable.
256255
Let lsf := lebesgue_stieltjes_measure f.
257256

258-
Let lebesgue_stieltjes_setT : lsf setT = 1%E.
259-
Proof.
260-
rewrite -(bigcup_itvT false false).
261-
pose I n : set R := `]- (n%:R), n%:R]%classic.
262-
have : (lsf \o I) n @[n --> \oo] --> 1%E.
263-
have -> : lsf \o I = (fun n => (f n%:R)%:E - (f (- n%:R))%:E)%E.
264-
apply/funext=> n; rewrite /= /lsf/= /lebesgue_stieltjes_measure.
265-
rewrite /measure_extension measurable_mu_extE/=; last exact: is_ocitv.
266-
by rewrite wlength_itv_bnd// ge0_cp.
267-
rewrite -(sube0 1); apply: cvgeB => //.
268-
- by apply/cvg_EFin; [near=> F|exact/(cvg_comp _ _ (@cvgr_idn R))/f_y1].
269-
- apply/cvg_EFin; [by near=> F|apply: (cvg_ninftyP _ _).1 => //].
270-
by apply: (cvg_comp _ _ (@cvgr_idn R)); rewrite ninfty.
271-
have : (lsf \o I) n @[n --> \oo] --> lsf (\bigcup_n I n).
272-
apply: nondecreasing_cvg_mu; rewrite /I//; first exact: bigcup_measurable.
273-
by move=> *; apply/subsetPset/subset_itv; rewrite leBSide/= ?lerN2 ler_nat.
274-
exact: cvg_unique.
275-
Unshelve. all: end_near. Qed.
276-
277-
HB.instance Definition _ := @Measure_isProbability.Build _ _ _
278-
(lebesgue_stieltjes_measure f) lebesgue_stieltjes_setT.
279-
280257
Let idTR : T -> R := idfun.
281258

282259
#[local] HB.instance Definition _ :=
@@ -292,7 +269,7 @@ have : lsf `]-n%:R, r] @[n --> \oo] --> (f r)%:E.
292269
rewrite measurable_mu_extE/= ?wlength_itv_bnd//; last exact: is_ocitv.
293270
by rewrite lerNl; near: n; exact: nbhs_infty_ger.
294271
rewrite -[X in _ --> X](sube0 (f r)%:E); apply: (cvgeB _ (cvg_cst _ )) => //.
295-
apply: (cvg_comp _ _ (cvg_comp _ _ _ f_Ny0)) => //.
272+
apply: (cvg_comp _ _ (cvg_comp _ _ _ (cumulativeNy0 f))) => //.
296273
by apply: (cvg_comp _ _ cvgr_idn); rewrite ninfty.
297274
have : lsf `]- n%:R, r] @[n --> \oo] --> lsf (\bigcup_n `]-n%:R, r]%classic).
298275
apply: nondecreasing_cvg_mu; rewrite /I//; first exact: bigcup_measurable.

0 commit comments

Comments
 (0)