@@ -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
542545End completed_lebesgue_stieltjes_measure.
543546Arguments 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.
0 commit comments