Module mathcomp.analysis.lebesgue_stieltjes_measure
From HB Require Import structures.From mathcomp Require Import boot order finmap ssralg ssrnum ssrint interval.
From mathcomp Require Import archimedean.
#[warning="-warn-library-file-internal-analysis"]
From mathcomp Require Import unstable.
From mathcomp Require Import boolp classical_sets functions fsbigop cardinality.
From mathcomp Require Import reals ereal interval_inference topology numfun.
From mathcomp Require Import normedtype sequences esum real_interval measure.
From mathcomp Require Import realfun.
Unset SsrOldRewriteGoalsOrder.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Import Order.TTheory GRing.Theory Num.Def Num.Theory.
Import numFieldTopology.Exports.
Local Open Scope classical_set_scope.
Local Open Scope ring_scope.
Reserved Notation "R .-ocitv" (at level 1, format "R .-ocitv").
Reserved Notation "R .-ocitv.-measurable"
(at level 2, format "R .-ocitv.-measurable").
Reserved Notation "R .-open" (at level 1, format "R .-open").
Reserved Notation "R .-open.-measurable"
(at level 2, format "R .-open.-measurable").
Notation
Source code
(forall , f%function @ at_right x --> f%function x).
Lemma
Source code
( : R -> U) : continuous f -> right_continuous f.
Proof.
.
Source code
Source code
Source code
Source code
(f : R -> U) := {
cumulative_is_nondecreasing : nondecreasing f ;
cumulative_is_right_continuous : right_continuous f }.
Source code
Source code
.
Source code
Source code
Source code
(
Source code
Arguments cumulative_is_nondecreasing {R d U} _.
Arguments cumulative_is_right_continuous {R d U} _.
Lemma
Source code
( : cumulative R R) :
e > 0 -> exists : {posnum R}, f (a + d%:num) <= f a + e.
Proof.
move=> /(_ a) /(@cvgr_dist_lt _ R^o) /(_ _ e0)[] _ /posnumP[d] => h.
exists (PosNum [gt0 of (d%:num / 2)]) => //=.
move: h => /(_ (a + d%:num / 2)) /=.
rewrite opprD addNKr normrN ger0_norm// ltr_pdivrMr// ltr_pMr// 2!ltrDl.
rewrite ltr01 divr_gt0// => /(_ erefl erefl).
rewrite ler0_norm.
by rewrite subr_le0 (cumulative_is_nondecreasing f)// lerDl.
by rewrite opprB ltrBlDl; exact: ltW.
Qed.
Section id_is_cumulative.
Context { : realFieldType}.
Let
Source code
Proof.
Let
Source code
Proof.
.
Source code
Source code
Source code
End id_is_cumulative.
.
Source code
Source code
Source code
Source code
cumulativeNy : f @ -oo --> l ;
cumulativey : f @ +oo --> r }.
Source code
Source code
.
Source code
Source code
Source code
Source code
{ of isCumulativeBounded R l r f & Cumulative R f}.
Arguments cumulativeNy {R l r} s.
Arguments cumulativey {R l r} s.
Section itv_semiRingOfSets.
Context ( : realType).
Implicit Types (I J K : set R).
Definition
ocitv_type : realType -> Type ocitv_type is not universe polymorphic Arguments ocitv_type R ocitv_type is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.ocitv_type Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 166, characters 11-21
Source code
Definition
ocitv : forall [R : realType], set (set R) ocitv is not universe polymorphic Arguments ocitv [R] _ ocitv is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.ocitv Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 168, characters 11-16
Source code
Lemma
Source code
Hint Extern 0 (ocitv _) => solve [apply: is_ocitv] : core.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
case: (boolP (x.1 < x.2)) => x12; first by right; exists x.
by left; rewrite set_itv_ge.
Qed.
Lemma
Source code
Proof.
rewrite setD0; exists [set `]a.1, a.2]%classic].
by split=> [//|? ->//||? ? -> ->//]; rewrite bigcup_set1.
rewrite setDE setCitv/= setIUr -!set_itvI.
rewrite /Order.meet/= /Order.meet/= /Order.join/=
?(andbF, orbF)/= ?(meetEtotal, joinEtotal).
rewrite -negb_or le_total/=; set c := minr _ _; set d := maxr _ _.
have inside : a.1 < c -> d < a.2 -> `]a.1, c] `&` `]d, a.2] = set0.
rewrite -subset0 lt_min gt_max => /andP[a12 ab1] /andP[_ ba2] x /= [].
have b1a2 : b.1 <= a.2 by rewrite ltW// (lt_trans ltb).
have a1b2 : a.1 <= b.2 by rewrite ltW// (lt_trans _ ltb).
rewrite /c /d (min_idPr _)// (max_idPr _)// !in_itv /=.
move=> /andP[a1x xb1] /andP[b2x xa2].
by have := lt_le_trans b2x xb1; case: ltgtP ltb.
exists ((if a.1 < c then [set `]a.1, c]%classic] else set0) `|`
(if d < a.2 then [set `]d, a.2]%classic] else set0)); split.
- by rewrite finite_setU; do! case: ifP.
- by move=> ? []; case: ifP => ? // ->//=.
- by rewrite bigcup_setU; congr (_ `|` _);
case: ifPn => ?; rewrite ?bigcup_set1 ?bigcup_set0// set_itv_ge.
- move=> I J/=; case: ifP => //= ac; case: ifP => //= da [] // -> []// ->.
by rewrite inside// => -[].
by rewrite setIC inside// => -[].
Qed.
Lemma
Source code
Proof.
Definition
ocitv_display : Type -> measure_display ocitv_display is not universe polymorphic Arguments ocitv_display _%_type_scope ocitv_display is opaque Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.ocitv_display Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 220, characters 11-24
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
ocitv_type ocitv ocitv0 ocitvI ocitvD.
End itv_semiRingOfSets.
Notation
Source code
Notation
Source code
classical_set_scope.
Module
Source code
Section measurableRocitv.
Context { : realType}.
Definition
MeasurableRocitv.measurableTypeR : realType -> Type MeasurableRocitv.measurableTypeR is not universe polymorphic Arguments MeasurableRocitv.measurableTypeR R MeasurableRocitv.measurableTypeR is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.MeasurableRocitv.measurableTypeR Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 237, characters 11-26
Source code
Definition
MeasurableRocitv.lebesgue_display : realType -> measure_display MeasurableRocitv.lebesgue_display is not universe polymorphic Arguments MeasurableRocitv.lebesgue_display {R} MeasurableRocitv.lebesgue_display is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.MeasurableRocitv.lebesgue_display Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 239, characters 11-27
Source code
Definition
MeasurableRocitv.measurableR : forall {R : realType}, set_system R MeasurableRocitv.measurableR is not universe polymorphic Arguments MeasurableRocitv.measurableR {R} _ MeasurableRocitv.measurableR is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.MeasurableRocitv.measurableR Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 241, characters 11-22
Source code
.
Source code
Source code
Source code
Measurable.on measurableTypeR.
Source code
.
Source code
Source code
Source code
Lemma
Source code
Proof.
by apply: sub_sigma_algebra; exact/is_ocitv.
Qed.
Lemma
Source code
Proof.
by apply: sub_sigma_algebra; apply: is_ocitv.
have mopoo ( : R) : measurable `]x, +oo[.
by rewrite itv_bndy_bigcup_BRight; exact: bigcup_measurable.
have mnooc ( : R) : measurable `]-oo, x].
by rewrite -setCitvr; exact/measurableC.
have ooE ( : R) : `]a, b[%classic = `]a, b] `\ b.
by rewrite setDitv1r.
have moo ( : R) : measurable `]a, b[ by rewrite ooE; exact: measurableD.
have mcc ( : R) : measurable `[a, b].
case: (boolP (a <= b)) => ab; last by rewrite set_itv_ge.
by rewrite -setU_1itvob//; apply/measurableU.
have mco ( : R) : measurable `[a, b[.
case: (boolP (a < b)) => ab; last by rewrite set_itv_ge.
by rewrite -setU_1itvob//; apply/measurableU.
have oooE ( : R) : `]-oo, b[%classic = `]-oo, b] `\ b.
by rewrite setDitv1r.
case: i => [[[] a|[]] [[] b|[]]] => //; do ?by rewrite set_itv_ge.
- by rewrite -setU_1itvob//; exact/measurableU.
- by rewrite oooE; exact/measurableD.
- by rewrite set_itvNyy.
Qed.
End measurableRocitv.
Arguments measurableTypeR : clear implicits.
#[global]
Hint Extern 0 (measurable (_ @^-1` [set _])) =>
solve [apply: measurable_funPTI; exact: measurable_set1] : core.
#[global]
Hint Extern 0 (measurable [set _]) => solve [apply: measurable_set1] : core.
#[global]
Hint Extern 0 (measurable [set` _] ) => exact: measurable_itv : core.
End MeasurableRocitv.
Module
Source code
Section rgenoinfty.
Context ( : realType).
Implicit Types x y z : R.
Definition
RGenOInfty.G : forall [R : realType], set (set R) RGenOInfty.G is not universe polymorphic Arguments RGenOInfty.G [R] _ RGenOInfty.G is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.RGenOInfty.G Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 298, characters 11-12
Source code
Lemma
Source code
G.-sigma.-measurable [set` Interval (BSide b x) +oo%O].
Proof.
rewrite itvcyEbigcap; apply: bigcapT_measurable => k.
by apply: sub_sigma_algebra; eexists; reflexivity.
Qed.
Lemma
Source code
G.-sigma.-measurable [set` Interval a (BSide b x)].
Proof.
by rewrite set_itv_splitD; apply: measurableD => //;
exact: measurable_itv_bnd_infty.
by rewrite -setCitvr; apply: measurableC; exact: measurable_itv_bnd_infty.
Qed.
Lemma
Source code
Proof.
apply: smallest_sub; first exact: smallest_sigma_algebra.
by move=> I [x _ <-]; exact: measurable_itv_bounded.
by apply: smallest_sub; [exact: smallest_sigma_algebra|move=> A' /= [x ->]].
Qed.
End rgenoinfty.
End RGenOInfty.
Module
Source code
Section rgeninftyo.
Context ( : realType).
Implicit Types x y z : R.
Definition
RGenInftyO.G : forall [R : realType], set (set R) RGenInftyO.G is not universe polymorphic Arguments RGenInftyO.G [R] _ RGenInftyO.G is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.RGenInftyO.G Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 333, characters 11-12
Source code
Lemma
Source code
G.-sigma.-measurable [set` Interval -oo%O (BSide b x)].
Proof.
rewrite -setCitvr itvoyEbigcup; apply/measurableC/bigcupT_measurable => n.
rewrite -setCitvl; apply: measurableC.
by apply: sub_sigma_algebra; eexists; reflexivity.
Qed.
Lemma
Source code
G.-sigma.-measurable [set` Interval (BSide b x) a].
Proof.
by rewrite set_itv_splitD; apply/measurableD => //;
rewrite -setCitvl; apply: measurableC; exact: measurable_itv_bnd_infty.
by rewrite -setCitvl; apply: measurableC; exact: measurable_itv_bnd_infty.
Qed.
Lemma
Source code
Proof.
apply: smallest_sub; first exact: smallest_sigma_algebra.
by move=> I [x _ <-]; exact: measurable_itv_bounded.
by apply: smallest_sub; [exact: smallest_sigma_algebra|move=> A' /= [x ->]].
Qed.
End rgeninftyo.
End RGenInftyO.
Module
Source code
Section rgencinfty.
Context ( : realType).
Implicit Types x y z : R.
Definition
RGenCInfty.G : forall [R : realType], set_system R RGenCInfty.G is not universe polymorphic Arguments RGenCInfty.G [R] _ RGenCInfty.G is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.RGenCInfty.G Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 369, characters 11-12
Source code
Lemma
Source code
G.-sigma.-measurable [set` Interval (BSide b x) +oo%O].
Proof.
rewrite itvoyEbigcup; apply: bigcupT_measurable => k.
by apply: sub_sigma_algebra; eexists; reflexivity.
Qed.
Lemma
Source code
G.-sigma.-measurable [set` Interval a (BSide b y)].
Proof.
rewrite set_itv_splitD.
by apply: measurableD; exact: measurable_itv_bnd_infty.
by rewrite -setCitvr; apply: measurableC; exact: measurable_itv_bnd_infty.
Qed.
Lemma
Source code
Proof.
apply: smallest_sub; first exact: smallest_sigma_algebra.
by move=> I [x _ <-]; exact: measurable_itv_bounded.
by apply: smallest_sub; [exact: smallest_sigma_algebra|move=> A' /= [x ->]].
Qed.
End rgencinfty.
End RGenCInfty.
Module
Source code
Section rgenopens.
Context ( : realType).
Implicit Types x y z : R.
Definition
RGenOpens.G : forall [R : realType], set (set R) RGenOpens.G is not universe polymorphic Arguments RGenOpens.G [R] _ RGenOpens.G is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.RGenOpens.G Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 404, characters 11-12
Source code
Local Lemma
Source code
Proof.
Local Lemma
Source code
Proof.
Lemma
Source code
G.-sigma.-measurable [set` Interval (BSide b x) +oo%O].
Proof.
rewrite itvcyEbigcap; apply: bigcapT_measurable => k.
exact: measurable_itv_o_infty.
Qed.
Lemma
Source code
G.-sigma.-measurable [set` Interval -oo%O (BSide b x)].
Proof.
Lemma
Source code
G.-sigma.-measurable [set` Interval (BSide a x) (BSide b y)].
Proof.
apply: measurableC; apply: measurableU; try solve[
exact: measurable_itv_infty_bnd|exact: measurable_itv_bnd_infty].
Qed.
Lemma
Source code
Proof.
apply: smallest_sub; first exact: smallest_sigma_algebra.
by move=> I [x _ <-]; exact: measurable_itv_bounded.
by apply: smallest_sub; [exact: smallest_sigma_algebra|move=> A' /= [x [y ->]]].
Qed.
End rgenopens.
End RGenOpens.
Module
Source code
Section rgenopensets.
Context ( : realType).
Implicit Types a b : R.
Import MeasurableRocitv.
Lemma
Source code
Proof.
apply: sigma_algebra_subl=> U.
- by rewrite /RGenOpens.G/= => -[a [b ->]]; exact: sub_sigma_algebra.
- move=> oU; rewrite (open_disjoint_itv_bigcup oU).
apply: sigma_algebra_bigcup => k.
have /is_intervalP -> := @open_disjoint_itv_is_interval _ U oU k.
exact: measurable_itv.
Qed.
End rgenopensets.
End RGenOpenSets.
Section open.
Context { : realType}.
Definition
open_type : realType -> Type open_type is not universe polymorphic Arguments open_type {R} open_type is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.open_type Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 471, characters 11-20
Source code
.
Source code
Source code
Source code
Let
Source code
Let
Source code
Proof.
Let
Source code
Proof.
Let
Source code
measurable (\bigcup_ (F i)).
Proof.
.
Source code
Source code
Source code
open_type measurable measurable0 measurableC measurable_bigcup.
End open.
Notation
Source code
Notation
Source code
classical_set_scope.
Module
Source code
Section measurableRopen.
Context { : realType}.
Definition
MeasurableRopen.measurableTypeR : realType -> Type MeasurableRopen.measurableTypeR is not universe polymorphic Arguments MeasurableRopen.measurableTypeR R MeasurableRopen.measurableTypeR is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.MeasurableRopen.measurableTypeR Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 500, characters 11-26
Source code
Definition
MeasurableRopen.lebesgue_display : realType -> measure_display MeasurableRopen.lebesgue_display is not universe polymorphic Arguments MeasurableRopen.lebesgue_display {R} MeasurableRopen.lebesgue_display is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.MeasurableRopen.lebesgue_display Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 502, characters 11-27
Source code
Definition
MeasurableRopen.measurableR : forall {R : realType}, set_system R MeasurableRopen.measurableR is not universe polymorphic Arguments MeasurableRopen.measurableR {R} _ MeasurableRopen.measurableR is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.MeasurableRopen.measurableR Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 504, characters 11-22
Source code
.
Source code
Source code
Source code
Measurable.on measurableTypeR.
Source code
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
rewrite /MeasurableRocitv.lebesgue_display.
by rewrite RGenOpenSets.measurableE.
Qed.
End measurableRopen.
Arguments measurableTypeR : clear implicits.
#[global]
Hint Extern 0 (measurable (_ @^-1` [set _])) =>
solve [apply: measurable_funPTI; exact: measurable_set1] : core.
#[global]
Hint Extern 0 (measurable [set _]) => solve [apply: measurable_set1] : core.
#[global]
Hint Extern 0 (measurable [set` _] ) => exact: measurable_itv : core.
Lemma
Source code
( : {mfun aT >-> rT}) ( : rT) :
measurable D -> measurable (D `&` f @^-1` [set y]).
Proof.
Notation
Source code
#[global] Hint Extern 0 (measurable (_ `&` _ @^-1` [set _])) =>
solve [apply: measurable_funP1; assumption] : core.
Section ocitv_measure.
Context { : realType} ( : measure (measurableTypeR R) R).
Definition
ocitv_measure : forall {R : realType}, measure (MeasurableRopen.measurableTypeR R) R -> set (measurableTypeR R) -> \bar R ocitv_measure is not universe polymorphic Arguments ocitv_measure {R} mu _%_classical_set_scope ocitv_measure is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.MeasurableRopen.ocitv_measure Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 549, characters 11-24
Source code
mu.
Let
Source code
Proof.
Let
Source code
Proof.
Let
Source code
Proof.
- move=> i; apply: H1; split => //=; first exact: sigma_algebra_measurable.
by rewrite -RGenOpenSets.measurableE; exact: sub_sigma_algebra.
- by rewrite -RGenOpenSets.measurableE.
Qed.
.
Source code
Source code
Source code
measure0 measure_ge0 measure_semi_sigma_additive.
Lemma
Source code
Proof.
End ocitv_measure.
End MeasurableRopen.
Module
Source code
Export MeasurableRopen.
End MeasurableR.
Section wlength.
Context { : realType} ( : R -> R).
Import MeasurableR.
Local Open Scope ereal_scope.
Implicit Types i j : interval R.
Let : \bar R -> \bar R := er_map f.
Definition
wlength : forall {R : realType}, (R -> R) -> set (ocitv_type R) -> \bar R wlength is not universe polymorphic Arguments wlength {R} f%_function_scope A%_classical_set_scope wlength is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.wlength Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 589, characters 11-18
Source code
let := Rhull A in g i.2 - g i.1.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
rewrite le_eqVlt => /orP[|/lt_ereal_bnd i12]; last first.
rewrite -wlength0; congr (wlength _).
by apply/eqP/negPn; rewrite -/(neitv _) neitvE -leNgt (ltW i12).
case: i => -[ba a|[|]] [bb b|[|]] //=.
- rewrite /= => /eqP[->{b}]; move: ba bb => -[] []; try
by rewrite set_itvE wlength0.
by rewrite wlength_singleton.
- by move=> _; rewrite set_itvE wlength0.
- by move=> _; rewrite set_itvE wlength0.
Qed.
Lemma
Source code
((i.1 : \bar R) \is a fin_num) /\ ((i.2 : \bar R) \is a fin_num).
Proof.
by move=> _; rewrite wlength_itv /= ltry.
by move=> _; rewrite wlength_itv /= ltNye.
by move=> _; rewrite wlength_itv.
Qed.
Lemma
Source code
wlength [set` i] = (fine (g i.2))%:E - (fine (g i.1))%:E.
Proof.
rewrite fineK.
by rewrite /g; move: i2f; case: (ereal_of_itv_bound i.2).
rewrite fineK.
by rewrite /g; move: i1f; case: (ereal_of_itv_bound i.1).
rewrite wlength_itv; case: ifPn => //; rewrite -leNgt le_eqVlt => /predU1P[->|].
by rewrite subee// /g; move: i1f; case: (ereal_of_itv_bound i.1).
by move/lt_ereal_bnd/ltW; rewrite leNgt; move: i0 => /neitvP => ->.
Qed.
Lemma
Source code
wlength [set` Interval (BSide x a) (BSide y b)] = (f b - f a)%:E.
Proof.
Lemma
Source code
wlength [set` Interval -oo%O (BSide b r)] = +oo :> \bar R.
Proof.
Lemma
Source code
wlength [set` Interval (BSide b r) +oo%O] = +oo :> \bar R.
Proof.
Lemma
Source code
(exists , i = Interval -oo%O (BSide s r) \/ i = Interval (BSide s r) +oo%O)
\/ i = `]-oo, +oo[.
Proof.
- by case: ifPn.
- by left; exists ba, a; right.
- by left; exists bb, b; left.
- by right.
Qed.
Lemma
Source code
Source code
0 <= wlength [set` i].
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Source code
{subset i <= j} -> wlength [set` i] <= wlength [set` j].
Proof.
have [->|/set0P I0] := eqVneq I set0; first by rewrite wlength0 wlength_itv_ge0.
have [J0|/set0P J0] := eqVneq J set0.
by move/subset_itvP; rewrite -/J J0 subset0 -/I => ->.
move=> /subset_itvP ij; apply: leeB => /=.
have [ui|ui] := asboolP (has_ubound I).
have [uj /=|uj] := asboolP (has_ubound J); last by rewrite leey.
by rewrite lee_fin ndf// supS.
have [uj /=|//] := asboolP (has_ubound J).
by move: ui; have := subset_has_ubound ij uj.
have [lj /=|lj] := asboolP (has_lbound J); last by rewrite leNye.
have [li /=|li] := asboolP (has_lbound I); last first.
by move: li; have := subset_has_lbound ij lj.
by rewrite lee_fin; exact/ndf/infS.
Qed.
Lemma
Source code
Source code
{homo wlength : / A `<=` B >-> A <= B}.
Proof.
End wlength.
Section wlength_extension.
Context { : realType}.
Lemma
Source code
measure_function.semi_additive (wlength f).
Proof.
move=> Itriv [[/= a1 a2] _] /esym /[dup] + ->.
rewrite wlength_itv ?lte_fin/= -EFinB.
case: ifPn => a12; last first.
pose I := `](b i).1, (b i).2]%classic.
rewrite set_itv_ge//= -(bigcup_mkord _ I) /I => /bigcup0P I0.
by under eq_bigr => i _ do rewrite I0//= wlength0; rewrite big1.
set A := `]a1, a2]%classic.
rewrite -bigcup_pred; set P := xpredT; rewrite (eq_bigl P)//.
move: P => P; have [p] := ubnP #|P|; elim: p => // p IHp in P a2 a12 A *.
rewrite ltnS => cP /esym AE.
have : A a2 by rewrite /A /= in_itv/= lexx andbT.
rewrite AE/= => -[i /= Pi] a2bi.
case: (boolP ((b i).1 < (b i).2)) => bi; last by rewrite itv_ge in a2bi.
have {}a2bi : a2 = (b i).2.
apply/eqP; rewrite eq_le (itvP a2bi)/=.
suff: A (b i).2 by move=> /itvP->.
by rewrite AE; exists i=> //=; rewrite in_itv/= lexx andbT.
rewrite {a2}a2bi in a12 A AE *.
rewrite (bigD1 i)//= wlength_itv ?lte_fin/= bi !EFinD -addeA.
congr (_ + _)%E; apply/eqP; rewrite addeC -sube_eq// 1?adde_defC//.
rewrite ?EFinN oppeK addeC; apply/eqP.
have [a1bi|a1bi] := eqVneq a1 (b i).1.
rewrite {a1}a1bi in a12 A AE {IHp} *; rewrite subee ?big1// => j.
move=> /andP[Pj Nji]; rewrite wlength_itv ?lte_fin/=; case: ifPn => bj//.
exfalso; have /trivIsetP/(_ j i I I Nji) := Itriv.
pose m := ((b j).1 + (b j).2) / 2%:R.
have mbj : `](b j).1, (b j).2]%classic m.
by rewrite /= !in_itv/= ?(midf_lt, midf_le)//= ltW.
rewrite -subset0 => /(_ m); apply; split=> //.
by suff: A m by []; rewrite AE; exists j.
have a1b2 j : P j -> (b j).1 < (b j).2 -> a1 <= (b j).2.
move=> Pj bj; suff /itvP-> : A (b j).2 by [].
by rewrite AE; exists j => //=; rewrite ?in_itv/= bj/=.
have a1b j : P j -> (b j).1 < (b j).2 -> a1 <= (b j).1.
move=> Pj bj; case: ltP=> // bj1a.
suff : A a1 by rewrite /A/= in_itv/= ltxx.
by rewrite AE; exists j; rewrite //= in_itv/= bj1a//= a1b2.
have bbi2 j : P j -> (b j).1 < (b j).2 -> (b j).2 <= (b i).2.
move=> Pj bj; suff /itvP-> : A (b j).2 by [].
by rewrite AE; exists j => //=; rewrite ?in_itv/= bj/=.
apply/IHp.
- by rewrite lt_neqAle a1bi/= a1b.
- rewrite (leq_trans _ cP)// -(cardID (pred1 i) P).
rewrite [X in (_ < X + _)%N](@eq_card _ _ (pred1 i)).
by move=> j; rewrite !inE andbC; case: eqVneq => // ->.
rewrite ?card1 ?ltnS// subset_leq_card//.
by apply/fintype.subsetP => j; rewrite -topredE/= !inE andbC.
apply/seteqP; split=> /= [x [j/= /andP[Pj Nji]]|x/= xabi].
case: (boolP ((b j).1 < (b j).2)) => bj; last by rewrite itv_ge.
apply: subitvP; rewrite subitvE ?bnd_simp a1b//= leNgt.
have /trivIsetP/(_ j i I I Nji) := Itriv.
rewrite -subset0 => /(_ (b j).2); apply: contra_notN => /= bi1j2.
by rewrite !in_itv/= bj !lexx bi1j2 bbi2.
have: A x.
rewrite /A/= in_itv/= (itvP xabi)/= ltW//.
by rewrite (le_lt_trans _ bi) ?(itvP xabi).
rewrite AE => -[j /= Pj xbj].
exists j => //=.
apply/andP; split=> //; apply: contraTneq xbj => ->.
by rewrite in_itv/= le_gtF// (itvP xabi).
Qed.
Lemma
Source code
(0 <= wlength f I)%E.
Proof.
#[local] Hint Extern 0 (0%:E <= wlength _ _) => solve[apply: wlength_ge0] : core.
.
Source code
Source code
Source code
isContent.Build _ _ R (wlength f)
(wlength_ge0 f)
(wlength_semi_additive f).
Hint Extern 0 (measurable _) => solve [apply: is_ocitv] : core.
Lemma
Source code
( : nat -> R) : (forall , i \in D -> a i <= b i) ->
`]a0, b0] `<=` \big[setU/set0]_( <- D) `]a i, b i]%classic ->
f b0 - f a0 <= \sum_( <- D) (f (b i) - f (a i)).
Proof.
apply (@le_trans _ _ 0).
by rewrite subr_le0 cumulative_is_nondecreasing// ltW.
rewrite big_seq sumr_ge0// => i iD.
by rewrite subr_ge0 cumulative_is_nondecreasing// Dab.
have mab k : [set` D] k -> R.-ocitv.-measurable `]a k, b k]%classic by [].
move: h; rewrite -bigcup_fset.
move/(content_sub_fsum (wlength f) (finite_fset D) mab (is_ocitv a0 b0)) => /=.
rewrite wlength_itv_bnd// -lee_fin => /le_trans; apply.
rewrite -sumEFin fsbig_finite//= set_fsetK// big_seq [in leRHS]big_seq.
by apply: lee_sum => i iD; rewrite wlength_itv_bnd// Dab.
Qed.
Lemma
Source code
measurable_subset_sigma_subadditive (wlength f).
Proof.
rewrite /subset_sigma_subadditive wlength_itv ?lte_fin/= -EFinB => lebig.
case: ifPn => a12; last by rewrite nneseries_esum ?esum_ge0.
wlog wlogh : b A AE lebig / forall , (b n).1 <= (b n).2.
move=> /= h.
set A' := fun => if (b n).1 >= (b n).2 then set0 else A n.
set b' := fun => if (b n).1 >= (b n).2 then (0, 0) else b n.
rewrite [leRHS](_ : _ = \sum_( <oo) wlength f (A' n))%E.
apply: (@eq_eseriesr _ (wlength f \o A) (wlength f \o A')) => k.
rewrite /= /A' AE; case: ifPn => // bn.
by rewrite set_itv_ge//= bnd_simp -leNgt.
apply: (h b').
- move=> k; rewrite /A'; case: ifPn => // bk.
by rewrite set_itv_ge//= bnd_simp -leNgt /b' bk.
- by rewrite AE /b' (negbTE bk).
- apply: (subset_trans lebig); apply subset_bigcup => k _.
rewrite /A' AE; case: ifPn => bk //.
by rewrite subset0 set_itv_ge//= bnd_simp -leNgt.
- by move=> k; rewrite /b'; case: ifPn => //; rewrite -ltNge => /ltW.
apply/lee_addgt0Pr => _/posnumP[e].
rewrite [e%:num]splitr [in leRHS]EFinD addeA -leeBlDr//.
apply: le_trans (epsilon_trick _ _ _) => //=.
have [c ce] := nondecreasing_right_continuousP a.1 f [gt0 of e%:num / 2].
have [D De] : exists : nat -> {posnum R}, forall ,
f ((b i).2 + (D i)%:num) <= f ((b i).2) + (e%:num / 2) / 2 ^ i.+1.
suff : forall , exists : {posnum R},
f ((b i).2 + di%:num) <= f ((b i).2) + (e%:num / 2) / 2 ^ i.+1.
by move/choice => -[g hg]; exists g.
by move=> k; apply nondecreasing_right_continuousP.
have acbd : `[ a.1 + c%:num / 2, a.2] `<=`
\bigcup_ `](b i).1, (b i).2 + (D i)%:num[%classic.
apply: (@subset_trans _ `]a.1, a.2]).
move=> r; rewrite /= !in_itv/= => /andP [+ ->].
by rewrite andbT; apply: lt_le_trans; rewrite ltrDl.
apply: (subset_trans lebig) => r [n _ Anr]; exists n => //.
move: Anr; rewrite AE /= !in_itv/= => /andP [->]/= /le_lt_trans.
by apply; rewrite ltrDl.
have := @segment_compact _ (a.1 + c%:num / 2) a.2; rewrite compact_cover.
have obd k : [set: nat] k -> open `](b k).1, ((b k).2 + (D k)%:num)[%classic.
by move=> _; exact: interval_open.
move=> /(_ _ _ _ obd acbd){obd acbd}.
case=> X _ acXbd.
rewrite /cover in acXbd.
rewrite -EFinD.
apply: (@le_trans _ _ (\sum_( <- X) (wlength f `](b i).1, (b i).2]%classic) +
\sum_( <- X) (f ((b i).2 + (D i)%:num)%R - f (b i).2)%:E)%E).
apply: (@le_trans _ _ (f a.2 - f (a.1 + c%:num / 2))%:E).
rewrite lee_fin -addrA -opprD lerB// (le_trans _ ce)//.
rewrite cumulative_is_nondecreasing//.
by rewrite lerD2l ler_pdivrMr// ler_pMr// ler1n.
apply: (@le_trans _ _
(\sum_( <- X) (f ((b i).2 + (D i)%:num) - f (b i).1)%:E)%E).
rewrite sumEFin lee_fin cumulative_content_sub_fsum//.
by move=> k kX; rewrite (@le_trans _ _ (b k).2)// lerDl.
apply: subset_trans.
exact/(subset_trans _ acXbd)/subset_itv_oc_cc.
move=> x [k kX] kx; rewrite -bigcup_fset; exists k => //.
by move: x kx; exact: subset_itv_oo_oc.
rewrite addeC -big_split/=; apply: lee_sum => k _.
by rewrite !(EFinB, wlength_itv_bnd)// addeA subeK.
rewrite -big_split/= nneseries_esum//; first by move=> k _; rewrite adde_ge0.
rewrite esum_ge//=; first by move=> n _; rewrite adde_ge0.
exists [set` X] => //; rewrite fsbig_finite//= set_fsetK.
rewrite big_seq [in X in (_ <= X)%E]big_seq; apply: lee_sum => k kX.
by rewrite AE leeD2l// lee_fin lerBlDl natrX De.
Qed.
.
Source code
Source code
Source code
Content_SigmaSubAdditive_isMeasure.Build _ _ _
(wlength f) (wlength_sigma_subadditive f).
Lemma
Source code
sigma_finite [set: (ocitv_type R)] (wlength f).
Proof.
Definition
ocitv_lebesgue_stieltjes_measure : forall {R : realType}, cumulative R R -> set (g_sigma_algebraType (R.-ocitv).-measurable%classic) -> \bar R ocitv_lebesgue_stieltjes_measure is not universe polymorphic Arguments ocitv_lebesgue_stieltjes_measure {R} f _%_classical_set_scope ocitv_lebesgue_stieltjes_measure is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.ocitv_lebesgue_stieltjes_measure Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 893, characters 11-43
Source code
measure_extension (wlength f).
.
Source code
Source code
Source code
Measure.on (ocitv_lebesgue_stieltjes_measure f).
Let
Source code
sigma_finite setT (ocitv_lebesgue_stieltjes_measure f).
Proof.
by move=> [X bX fX]; exists X.
Qed.
.
Source code
Source code
Source code
@Measure_isSigmaFinite.Build _ _ _ (ocitv_lebesgue_stieltjes_measure f)
(ocitv_sigmaT_finite_lebesgue_stieltjes_measure f).
Definition
lebesgue_stieltjes_measure : forall {R : realType}, cumulative R R -> set (g_sigma_algebraType topology_structure.open) -> \bar R lebesgue_stieltjes_measure is not universe polymorphic Arguments lebesgue_stieltjes_measure {R} f _%_classical_set_scope lebesgue_stieltjes_measure is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.lebesgue_stieltjes_measure Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 909, characters 11-37
Source code
set (g_sigma_algebraType (@open R)) -> \bar R :=
measure_extension (wlength f).
Let
Source code
Proof.
Let
Source code
Proof.
Let
Source code
semi_sigma_additive (lebesgue_stieltjes_measure f).
Proof.
rewrite RGenOpenSets.measurableE//=.
Qed.
.
Source code
Source code
Source code
isMeasure.Build _ _ _ (lebesgue_stieltjes_measure f)
(lsm0 f) (lsm_ge0 f) (@lsm_semi_sigma_additive f).
Let
Source code
sigma_finite setT (lebesgue_stieltjes_measure f).
Proof.
by move=> [X bX fX]; exists X=>// i; rewrite -RGenOpenSets.measurableE.
Qed.
.
Source code
Source code
Source code
@Measure_isSigmaFinite.Build _ _ _ (lebesgue_stieltjes_measure f)
(sigmaT_finite_lebesgue_stieltjes_measure f).
End wlength_extension.
Arguments lebesgue_stieltjes_measure {R}.
Section lebesgue_stieltjes_measure_unique.
Context { : realType} ( : cumulative R R).
Import MeasurableR.
Let
Source code
( : {measure set (MeasurableRocitv.measurableTypeR R) -> \bar R}) :
(forall , ocitv X -> lebesgue_stieltjes_measure f X = mu X) ->
forall : set R, measurable A -> lebesgue_stieltjes_measure f A = mu A.
Proof.
apply: measure_extension_unique => //=.
- exact: wlength_sigma_finite.
- by move=> X mX; rewrite -muE// -measurable_mu_extE.
- by rewrite RGenOpenSets.measurableE.
Qed.
Lemma
Source code
( : {measure set (MeasurableRopen.measurableTypeR R) -> \bar R}) :
(forall , ocitv X -> lebesgue_stieltjes_measure f X = mu X) ->
forall : set R, measurable A -> lebesgue_stieltjes_measure f A = mu A.
Proof.
End lebesgue_stieltjes_measure_unique.
Section completed_lebesgue_stieltjes_measure.
Context { : realType}.
Definition
completed_lebesgue_stieltjes_measure : forall {R : realType} (f : cumulative R R), set (caratheodory_type (R:=R) (T:=lebesgue_stieltjes_measure_ocitv_type__canonical__measurable_structure_SemiRingOfSets R) (wlength f)^*%mu) -> \bar R completed_lebesgue_stieltjes_measure is not universe polymorphic Arguments completed_lebesgue_stieltjes_measure {R} f _%_classical_set_scope completed_lebesgue_stieltjes_measure is transparent Expands to: Constant mathcomp.analysis.lebesgue_stieltjes_measure.completed_lebesgue_stieltjes_measure Declared in library mathcomp.analysis.lebesgue_stieltjes_measure, line 974, characters 11-47
Source code
@completed_measure_extension _ _ _ (wlength f).
.
Source code
Source code
Source code
Measure.on (@completed_lebesgue_stieltjes_measure f).
Let
Source code
sigma_finite setT (@completed_lebesgue_stieltjes_measure f).
Proof.
.
Source code
Source code
Source code
@Measure_isSigmaFinite.Build _ _ _
(@completed_lebesgue_stieltjes_measure f)
(sigmaT_finite_completed_lebesgue_stieltjes_measure f).
End completed_lebesgue_stieltjes_measure.
Arguments completed_lebesgue_stieltjes_measure {R}.
Section probability_measure_of_lebesgue_stieltjes_mesure.
Context { : realType} ( : cumulativeBounded (0:R) (1:R)).
Local Open Scope measure_display_scope.
Let
Source code
Let
Source code
Proof.
pose I : set R := `]- (n%:R), n%:R]%classic.
have : (lsf \o I) n @[ --> \oo] --> 1%E.
have -> : lsf \o I = (fun => (f n%:R)%:E - (f (- n%:R))%:E)%E.
apply/funext=> n; rewrite /= /lsf/= /lebesgue_stieltjes_measure.
rewrite /measure_extension measurable_mu_extE/=; first exact: is_ocitv.
by rewrite wlength_itv_bnd// ge0_cp.
rewrite -(sube0 1); apply: cvgeB => //.
- by apply/cvg_EFin; [near=> F
|exact/(cvg_comp _ _ (@cvgr_idn R))/cumulativey].
- apply/cvg_EFin; [by near=> F|apply: (cvg_ninftyP _ _).1 => //].
exact: cumulativeNy.
by apply: (cvg_comp _ _ (@cvgr_idn R)); rewrite ninfty.
have : (lsf \o I) n @[ --> \oo] --> lsf (\bigcup_ I n).
apply: nondecreasing_cvg_measure; rewrite /I//; first exact: bigcup_measurable.
by move=> *; apply/subsetPset/subset_itv; rewrite leBSide/= ?lerN2 ler_nat.
exact: cvg_unique.
Unshelve. all: end_near. Qed.
.
Source code
Source code
Source code
(lebesgue_stieltjes_measure f) lebesgue_stieltjes_setT.
End probability_measure_of_lebesgue_stieltjes_mesure.