Library mathcomp.analysis.lebesgue_measure
(* mathcomp analysis (c) 2017 Inria and AIST. License: CeCILL-C. *)
From mathcomp Require Import all_ssreflect ssralg ssrnum ssrint interval.
From mathcomp Require Import finmap fingroup perm rat.
Require Import boolp reals ereal classical_sets signed topology numfun.
Require Import mathcomp_extra functions normedtype.
From HB Require Import structures.
Require Import sequences esum measure fsbigop cardinality set_interval.
Require Import realfun.
From mathcomp Require Import all_ssreflect ssralg ssrnum ssrint interval.
From mathcomp Require Import finmap fingroup perm rat.
Require Import boolp reals ereal classical_sets signed topology numfun.
Require Import mathcomp_extra functions normedtype.
From HB Require Import structures.
Require Import sequences esum measure fsbigop cardinality set_interval.
Require Import realfun.
Lebesgue Measure
This file contains a formalization of the Lebesgue measure using the
Caratheodory's theorem available in measure.v and further develops the
theory of measurable functions.
Main reference:
The modules RGenOInfty, RGenInftyO, RGenCInfty, RGenOpens provide proofs
of equivalence between the sigma-algebra generated by list of intervals
and the sigma-algebras generated by open rays, closed rays, and open
intervals.
The modules ErealGenOInfty and ErealGenCInfty provide proofs of
equivalence between emeasurable and the sigmaa-algebras generated open
rays and closed rays.
- Daniel Li, Intégration et applications, 2016
- Achim Klenke, Probability Theory 2nd edition, 2014
Set Implicit Arguments.
Import Order.TTheory GRing.Theory Num.Def Num.Theory.
Import numFieldTopology.Exports.
Local Open Scope classical_set_scope.
Local Open Scope ring_scope.
Section hlength.
Local Open Scope ereal_scope.
Variable R : realType.
Implicit Types i j : interval R.
Definition itvs : Type := R.
Definition hlength (A : set itvs) : \bar R := let i := Rhull A in i.2 - i.1.
Lemma hlength0 : hlength (set0 : set R) = 0.
Lemma hlength_singleton (r : R) : hlength `[r, r] = 0.
Lemma hlength_setT : hlength setT = +oo%E :> \bar R.
Lemma hlength_itv i : hlength [set` i] = if i.2 > i.1 then i.2 - i.1 else 0.
Lemma hlength_finite_fin_num i : neitv i → hlength [set` i] < +oo →
((i.1 : \bar R) \is a fin_num) ∧ ((i.2 : \bar R) \is a fin_num).
Lemma finite_hlengthE i : neitv i → hlength [set` i] < +oo →
hlength [set` i] = (fine i.2)%:E - (fine i.1)%:E.
Lemma hlength_infty_bnd b r :
hlength [set` Interval -oo%O (BSide b r)] = +oo :> \bar R.
Lemma hlength_bnd_infty b r :
hlength [set` Interval (BSide b r) +oo%O] = +oo :> \bar R.
Lemma pinfty_hlength i : hlength [set` i] = +oo →
(∃ s r, i = Interval -oo%O (BSide s r) ∨ i = Interval (BSide s r) +oo%O)
∨ i = `]-oo, +oo[.
Lemma hlength_ge0 i : 0 ≤ hlength [set` i].
Local Hint Extern 0 (0%:E ≤ hlength _) ⇒ solve[apply: hlength_ge0] : core.
Lemma hlength_Rhull (A : set R) : hlength [set` Rhull A] = hlength A.
Lemma le_hlength_itv i j : {subset i ≤ j} → hlength [set` i] ≤ hlength [set` j].
Lemma le_hlength : {homo hlength : A B / (A `<=` B) >-> A ≤ B}.
End hlength.
Arguments hlength {R}.
#[global] Hint Extern 0 (0%:E ≤ hlength _) ⇒ solve[apply: hlength_ge0] : core.
Section itv_semiRingOfSets.
Variable R : realType.
Implicit Types (I J K : set R).
Definition ocitv := [set `]x.1, x.2]%classic | x in [set: R × R]].
Lemma is_ocitv a b : ocitv `]a, b]%classic.
Hint Extern 0 (ocitv _) ⇒ solve [apply: is_ocitv] : core.
Lemma ocitv0 : ocitv set0.
Hint Resolve ocitv0 : core.
Lemma ocitvP X : ocitv X ↔ X = set0 ∨ exists2 x, x.1 < x.2 & X = `]x.1, x.2]%classic.
Lemma ocitvD : semi_setD_closed ocitv.
Lemma ocitvI : setI_closed ocitv.
Definition itvs_semiRingOfSets := [the semiRingOfSetsType of itvs].
Lemma hlength_ge0' (I : set itvs) : (0 ≤ hlength I)%E.
Unused
Lemma hlength_semi_additive2 : semi_additive2 hlength.
Proof.
move=> I J /ocitvP[| [a a12] ] ->; first by rewrite set0U hlength0 add0e.
move=> /ocitvP[| [b b12] ] ->; first by rewrite setU0 hlength0 adde0.
rewrite -subset0 => + ab0 => /ocitvP[| [x x12] abx].
by rewrite setU_eq0 => - [-> -> ]; rewrite setU0 hlength0 adde0.
rewrite abx !hlength_itv//= ?lte_fin a12 b12 x12/= -!EFinB -EFinD.
wlog ab1 : a a12 b b12 ab0 abx / a.1 <= b.1 => [hwlog| ].
have /orP[ab1|ba1] := le_total a.1 b.1; first by apply: hwlog.
by rewrite [in RHS]addrC; apply: hwlog => //; rewrite (setIC, setUC).
have := ab0; rewrite subset0 -set_itv_meet/=.
rewrite /Order.join /Order.meet/= ?(andbF, orbF)/= ?(meetEtotal, joinEtotal).
rewrite -negb_or le_total/=; set c := minr _ ; set d := maxr _ .
move=> /eqP/neitvP/=; rewrite bnd_simp/= /d/c (max_idPr _)// => /negP.
rewrite -leNgt le_minl orbC lt_geF//= => {c} {d} a2b1.
have ab i j : i \in ` ]a.1, a.2] -> j \in ` ]b.1, b.2] -> i <= j.
by move=> ia jb; rewrite (le_le_trans _ a2b1) ?(itvP ia) ?(itvP jb).
have /(congr1 sup) := abx; rewrite sup_setU// ?sup_itv_bounded// => bx.
have /(congr1 inf) := abx; rewrite inf_setU// ?inf_itv_bounded// => ax.
rewrite -{}ax -{x}bx in abx x12 *.
case: ltgtP a2b1 => // a2b1 _; last first.
by rewrite a2b1 [in RHS]addrC subrKA.
exfalso; pose c := (a.2 + b.1) / 2%:R.
have /predeqP/(_ c) [ /(_ )/Box[ ]#] := abx.
apply: subset_itv_oo_oc; have := mid_in_itvoo a2b1.
by apply/subitvP; rewrite subitvE ?bnd_simp/= ?ltW.
apply/not_orP; rewrite /= !in_itv/=.
by rewrite lt_geF ?midf_lt//= andbF le_gtF ?midf_le//= ltW.
Qed.
Lemma hlength_semi_additive : semi_additive hlength.
Canonical hlength_measure : {additive_measure set itvs → \bar R}
:= AdditiveMeasure (AdditiveMeasure.Axioms (@hlength0 _)
(@hlength_ge0') hlength_semi_additive).
Hint Extern 0 (measurable _) ⇒ solve [apply: is_ocitv] : core.
Lemma hlength_sigma_sub_additive : sigma_sub_additive hlength.
Lemma hlength_sigma_finite : sigma_finite [set: itvs] hlength.
Let gitvs := g_measurableType ocitv.
Definition lebesgue_measure : {measure set gitvs → \bar R} :=
Hahn_ext_measure hlength_sigma_sub_additive.
End itv_semiRingOfSets.
Arguments lebesgue_measure {R}.
Section lebesgue_measure.
Variable R : realType.
Let gitvs := g_measurableType (@ocitv R).
Lemma lebesgue_measure_unique (mu : {measure set gitvs → \bar R}) :
(∀ X, ocitv X → hlength X = mu X) →
∀ X, measurable X → lebesgue_measure X = mu X.
End lebesgue_measure.
Section ps_infty.
Context {T : Type}.
Local Open Scope ereal_scope.
Inductive ps_infty : set \bar T → Prop :=
| ps_infty0 : ps_infty set0
| ps_ninfty : ps_infty [set -oo]
| ps_pinfty : ps_infty [set +oo]
| ps_inftys : ps_infty [set -oo; +oo].
Lemma ps_inftyP (A : set \bar T) : ps_infty A ↔ A `<=` [set -oo; +oo].
Lemma setCU_Efin (A : set T) (B : set \bar T) : ps_infty B →
~` (EFin @` A) `&` ~` B = (EFin @` ~` A) `|` ([set -oo%E; +oo%E] `&` ~` B).
End ps_infty.
Section salgebra_ereal.
Variables (R : realType) (G : set (set R)).
Let measurableTypeR := g_measurableType G.
Let measurableR : set (set R) := @measurable measurableTypeR.
Definition emeasurable : set (set \bar R) :=
[set EFin @` A `|` B | A in measurableR & B in ps_infty].
Lemma emeasurable0 : emeasurable set0.
Lemma emeasurableC (X : set \bar R) : emeasurable X → emeasurable (~` X).
Lemma bigcupT_emeasurable (F : (set \bar R)^nat) :
(∀ i, emeasurable (F i)) → emeasurable (\bigcup_i (F i)).
Definition ereal_isMeasurable : isMeasurable (\bar R) :=
isMeasurable.Build _ (Pointed.class _)
emeasurable0 emeasurableC bigcupT_emeasurable.
End salgebra_ereal.
Section puncture_ereal_itv.
Variable R : realDomainType.
Implicit Types (y : R) (b : bool).
Local Open Scope ereal_scope.
Lemma punct_eitv_bnd_pinfty b y : [set` Interval (BSide b y%:E) +oo%O] =
EFin @` [set` Interval (BSide b y) +oo%O] `|` [set +oo].
Lemma punct_eitv_ninfty_bnd b y : [set` Interval -oo%O (BSide b y%:E)] =
[set -oo%E] `|` EFin @` [set x | x \in Interval -oo%O (BSide b y)].
Lemma punct_eitv_setTR : range (@EFin R) `|` [set +oo] = [set¬ -oo].
Lemma punct_eitv_setTL : range (@EFin R) `|` [set -oo] = [set¬ +oo].
End puncture_ereal_itv.
Lemma set1_bigcap_oc (R : realType) (r : R) :
[set r] = \bigcap_i `]r - i.+1%:R^-1, r]%classic.
Lemma itv_bnd_open_bigcup (R : realType) b (r s : R) :
[set` Interval (BSide b r) (BLeft s)] =
\bigcup_n [set` Interval (BSide b r) (BRight (s - n.+1%:R^-1))].
Lemma itv_open_bnd_bigcup (R : realType) b (r s : R) :
[set` Interval (BRight s) (BSide b r)] =
\bigcup_n [set` Interval (BLeft (s + n.+1%:R^-1)) (BSide b r)].
Lemma itv_bnd_infty_bigcup (R : realType) b (x : R) :
[set` Interval (BSide b x) +oo%O] =
\bigcup_i [set` Interval (BSide b x) (BRight (x + i%:R))].
Lemma itv_infty_bnd_bigcup (R : realType) b (x : R) :
[set` Interval -oo%O (BSide b x)] =
\bigcup_i [set` Interval (BLeft (x - i%:R)) (BSide b x)].
Section salgebra_R_ssets.
Variable R : realType.
Definition measurableTypeR :=
g_measurableType (@measurable (@itvs_semiRingOfSets R)).
Definition measurableR : set (set R) := @measurable measurableTypeR.
HB.instance (Real.sort R) R_isMeasurable.
Lemma measurable_set1 (r : R) : measurable [set r].
#[local] Hint Resolve measurable_set1 : core.
Lemma measurable_itv (i : interval R) : measurable [set` i].
NB: Until we dropped support for Coq 8.12, we were using
HB.instance (\bar (Real.sort R))
(ereal_isMeasurable (@measurable (@itvs_semiRingOfSets R))).
This was producing a warning but the alternative was failing with Coq 8.12 with
the following message (according to the CI):
# [redundant-canonical-projection,typechecker]
# forall (T : measurableType) (f : T -> R), measurable_fun setT f
# : Prop
# File "./theories/lebesgue_measure.v", line 4508, characters 0-88:
# Error: Anomaly "Uncaught exception Failure("sep_last")."
# Please report at http://coq.inria.fr/bugs/.
Lemma measurable_EFin (A : set R) : measurableR A → measurable (EFin @` A).
Lemma emeasurable_set1 (x : \bar R) : measurable [set x].
#[local] Hint Resolve emeasurable_set1 : core.
Lemma itv_cpinfty_pinfty : `[+oo%E, +oo[%classic = [set +oo%E] :> set (\bar R).
Lemma itv_opinfty_pinfty : `]+oo%E, +oo[%classic = set0 :> set (\bar R).
Lemma itv_cninfty_pinfty : `[-oo%E, +oo[%classic = setT :> set (\bar R).
Lemma itv_oninfty_pinfty :
`]-oo%E, +oo[%classic = ~` [set -oo]%E :> set (\bar R).
Lemma emeasurable_itv_bnd_pinfty b (y : \bar R) :
measurable [set` Interval (BSide b y) +oo%O].
Lemma emeasurable_itv_ninfty_bnd b (y : \bar R) :
measurable [set` Interval -oo%O (BSide b y)].
Definition elebesgue_measure' : set \bar R → \bar R :=
fun S ⇒ lebesgue_measure (fine @` (S `\` [set -oo; +oo]%E)).
Lemma elebesgue_measure'0 : elebesgue_measure' set0 = 0%E.
Lemma measurable_fine (X : set \bar R) : measurable X →
measurable [set fine x | x in X `\` [set -oo; +oo]%E].
Lemma elebesgue_measure'_ge0 X : (0 ≤ elebesgue_measure' X)%E.
Lemma semi_sigma_additive_elebesgue_measure' :
semi_sigma_additive elebesgue_measure'.
Definition elebesgue_measure_isMeasure : is_measure elebesgue_measure' :=
Measure.Axioms elebesgue_measure'0 elebesgue_measure'_ge0
semi_sigma_additive_elebesgue_measure'.
Definition elebesgue_measure : {measure set \bar R → \bar R} :=
Measure.Pack _ elebesgue_measure_isMeasure.
End salgebra_R_ssets.
#[global]
Hint Extern 0 (measurable [set _]) ⇒ solve [apply: measurable_set1|
apply: emeasurable_set1] : core.
Section lebesgue_measure_itv.
Variable R : realType.
Let lebesgue_measure_itvoc (a b : R) :
(lebesgue_measure `]a, b] = hlength `]a, b])%classic.
Let lebesgue_measure_itvoo_subr1 (a : R) :
lebesgue_measure `]a - 1, a[%classic = 1%E.
Lemma lebesgue_measure_set1 (a : R) : lebesgue_measure [set a] = 0%E.
Let lebesgue_measure_itvoo (a b : R) :
(lebesgue_measure `]a, b[ = hlength `]a, b[)%classic.
Let lebesgue_measure_itvcc (a b : R) :
(lebesgue_measure `[a, b] = hlength `[a, b])%classic.
Let lebesgue_measure_itvco (a b : R) :
(lebesgue_measure `[a, b[ = hlength `[a, b[)%classic.
Let lebesgue_measure_itv_bnd (x y : bool) (a b : R) :
lebesgue_measure [set` (Interval (BSide x a) (BSide y b))] =
hlength [set` (Interval (BSide x a) (BSide y b))].
Let limnatR : lim (fun k ⇒ (k%:R)%:E : \bar R) = +oo%E.
Let lebesgue_measure_itv_bnd_infty x (a : R) :
lebesgue_measure [set` Interval (BSide x a) +oo%O] = +oo%E.
Let lebesgue_measure_itv_infty_bnd y (b : R) :
lebesgue_measure [set` Interval -oo%O (BSide y b)] = +oo%E.
Lemma lebesgue_measure_itv (i : interval R) :
lebesgue_measure [set` i] = hlength [set` i].
End lebesgue_measure_itv.
Lemma lebesgue_measure_rat (R : realType) :
lebesgue_measure (range ratr : set R) = 0%E.
Section measurable_fun_measurable.
Local Open Scope ereal_scope.
Variables (T : measurableType) (R : realType) (D : set T) (f : T → \bar R).
Hypotheses (mD : measurable D) (mf : measurable_fun D f).
Implicit Types y : \bar R.
Lemma emeasurable_fun_c_infty y : measurable (D `&` [set x | y ≤ f x]).
Lemma emeasurable_fun_o_infty y : measurable (D `&` [set x | y < f x]).
Lemma emeasurable_fun_infty_o y : measurable (D `&` [set x | f x < y]).
Lemma emeasurable_fun_infty_c y : measurable (D `&` [set x | f x ≤ y]).
Lemma emeasurable_fin_num : measurable (D `&` [set x | f x \is a fin_num]).
Lemma emeasurable_neq y : measurable (D `&` [set x | f x != y]).
End measurable_fun_measurable.
Module RGenOInfty.
Section rgenoinfty.
Variable R : realType.
Implicit Types x y z : R.
Definition G := [set A | ∃ x, A = `]x, +oo[%classic].
Let T := g_measurableType G.
Lemma measurable_itv_bnd_infty b x :
@measurable T [set` Interval (BSide b x) +oo%O].
Lemma measurable_itv_bounded a b x : a != +oo%O →
@measurable T [set` Interval a (BSide b x)].
Lemma measurableE :
@measurable (g_measurableType (measurable : set (set (itvs R)))) =
@measurable T.
End rgenoinfty.
End RGenOInfty.
Module RGenInftyO.
Section rgeninftyo.
Variable R : realType.
Implicit Types x y z : R.
Definition G := [set A | ∃ x, A = `]-oo, x[%classic].
Let T := g_measurableType G.
Lemma measurable_itv_bnd_infty b x :
@measurable T [set` Interval -oo%O (BSide b x)].
Lemma measurable_itv_bounded a b x : a != -oo%O →
@measurable T [set` Interval (BSide b x) a].
Lemma measurableE :
@measurable (g_measurableType (measurable : set (set (itvs R)))) =
@measurable T.
End rgeninftyo.
End RGenInftyO.
Module RGenCInfty.
Section rgencinfty.
Variable R : realType.
Implicit Types x y z : R.
Definition G : set (set R) := [set A | ∃ x, A = `[x, +oo[%classic].
Let T := g_measurableType G.
Lemma measurable_itv_bnd_infty b x :
@measurable T [set` Interval (BSide b x) +oo%O].
Lemma measurable_itv_bounded a b y : a != +oo%O →
@measurable T [set` Interval a (BSide b y)].
Lemma measurableE :
@measurable (g_measurableType (measurable : set (set (itvs R)))) =
@measurable T.
End rgencinfty.
End RGenCInfty.
Module RGenOpens.
Section rgenopens.
Variable R : realType.
Implicit Types x y z : R.
Definition G := [set A | ∃ x y, A = `]x, y[%classic].
Let T := g_measurableType G.
Lemma measurable_itv_bnd_infty b x :
@measurable T [set` Interval (BSide b x) +oo%O].
Lemma measurable_itv_infty_bnd b x :
@measurable T [set` Interval -oo%O (BSide b x)].
Lemma measurable_itv_bounded a x b y :
@measurable T [set` Interval (BSide a x) (BSide b y)].
Lemma measurableE :
@measurable (g_measurableType (measurable : set (set (itvs R)))) =
@measurable T.
End rgenopens.
End RGenOpens.
Section erealwithrays.
Variable R : realType.
Implicit Types (x y z : \bar R) (r s : R).
Local Open Scope ereal_scope.
Lemma EFin_itv_bnd_infty b r : EFin @` [set` Interval (BSide b r) +oo%O] =
[set` Interval (BSide b r%:E) +oo%O] `\ +oo.
Lemma EFin_itv r : [set s | r%:E < s%:E] = `]r, +oo[%classic.
Lemma preimage_EFin_setT : @EFin R @^-1` [set x | x \in `]-oo%E, +oo[] = setT.
Lemma eitv_c_infty r : `[r%:E, +oo[%classic =
\bigcap_k `](r - k.+1%:R^-1)%:E, +oo[%classic :> set _.
Lemma eitv_infty_c r : `]-oo, r%:E]%classic =
\bigcap_k `]-oo, (r%:E + k.+1%:R^-1%:E)]%classic :> set _.
Lemma eset1_ninfty :
[set -oo] = \bigcap_k `]-oo, (-k%:R%:E)[%classic :> set (\bar R).
Lemma eset1_pinfty :
[set +oo] = \bigcap_k `]k%:R%:E, +oo[%classic :> set (\bar R).
End erealwithrays.
Module ErealGenOInfty.
Section erealgenoinfty.
Variable R : realType.
Implicit Types (x y z : \bar R) (r s : R).
Local Open Scope ereal_scope.
Definition G := [set A : set \bar R | ∃ x, A = `]x, +oo[%classic].
Let T := g_measurableType G.
Lemma measurable_set1_ninfty : @measurable T [set -oo].
Lemma measurable_set1_pinfty : @measurable T [set +oo].
Lemma measurableE : emeasurable (measurable : set (set (itvs R))) = @measurable T.
End erealgenoinfty.
End ErealGenOInfty.
Module ErealGenCInfty.
Section erealgencinfty.
Variable R : realType.
Implicit Types (x y z : \bar R) (r s : R).
Local Open Scope ereal_scope.
Definition G := [set A : set \bar R | ∃ x, A = `[x, +oo[%classic].
Let T := g_measurableType G.
Lemma measurable_set1_ninfty : @measurable T [set -oo].
Lemma measurable_set1_pinfty : @measurable T [set +oo].
Lemma measurableE : emeasurable (measurable : set (set (itvs R))) = @measurable T.
End erealgencinfty.
End ErealGenCInfty.
Section trace.
Variable (T : Type).
Implicit Types (G : set (set T)) (A D : set T).
intended as a trace sigma-algebra
Definition strace G D := [set x `&` D | x in G].
Lemma stracexx G D : G D → strace G D D.
Lemma sigma_algebra_strace G D :
sigma_algebra setT G → sigma_algebra D (strace G D).
End trace.
Lemma strace_measurable (T : measurableType) (A : set T) : measurable A →
strace measurable A `<=` measurable.
Lemma stracexx G D : G D → strace G D D.
Lemma sigma_algebra_strace G D :
sigma_algebra setT G → sigma_algebra D (strace G D).
End trace.
Lemma strace_measurable (T : measurableType) (A : set T) : measurable A →
strace measurable A `<=` measurable.
more properties of measurable functions
Lemma is_interval_measurable (R : realType) (I : set R) :
is_interval I → measurable I.
Section coutinuous_measurable.
Variable R : realType.
Lemma open_measurable (U : set R) : open U → measurable U.
Lemma continuous_measurable_fun (f : R → R) : continuous f →
measurable_fun setT f.
End coutinuous_measurable.
Section standard_measurable_fun.
Lemma measurable_fun_normr (R : realType) (D : set R) :
measurable_fun D (@normr _ R).
End standard_measurable_fun.
Section measurable_fun_realType.
Variables (T : measurableType) (R : realType).
Implicit Types (D : set T) (f g : T → R).
Lemma measurable_funD D f g :
measurable_fun D f → measurable_fun D g → measurable_fun D (f \+ g).
Lemma measurable_funrM D f (k : R) : measurable_fun D f →
measurable_fun D (fun x ⇒ k × f x).
Lemma measurable_funN D f : measurable_fun D f → measurable_fun D (-%R \o f).
Lemma measurable_funB D f g : measurable_fun D f →
measurable_fun D g → measurable_fun D (f \- g).
Lemma measurable_fun_exprn D n f :
measurable_fun D f → measurable_fun D (fun x ⇒ f x ^+ n).
Lemma measurable_fun_sqr D f :
measurable_fun D f → measurable_fun D (fun x ⇒ f x ^+ 2).
Lemma measurable_funM D f g :
measurable_fun D f → measurable_fun D g → measurable_fun D (f \* g).
Lemma measurable_fun_max D f g :
measurable_fun D f → measurable_fun D g → measurable_fun D (f \max g).
Lemma measurable_fun_sups D (h : (T → R)^nat) n :
(∀ t, D t → has_ubound (range (h ^~ t))) →
(∀ m, measurable_fun D (h m)) →
measurable_fun D (fun x ⇒ sups (h ^~ x) n).
Lemma measurable_fun_infs D (h : (T → R)^nat) n :
(∀ t, D t → has_lbound (range (h ^~ t))) →
(∀ n, measurable_fun D (h n)) →
measurable_fun D (fun x ⇒ infs (h ^~ x) n).
Lemma measurable_fun_lim_sup D (h : (T → R)^nat) :
(∀ t, D t → has_ubound (range (h ^~ t))) →
(∀ t, D t → has_lbound (range (h ^~ t))) →
(∀ n, measurable_fun D (h n)) →
measurable_fun D (fun x ⇒ lim_sup (h ^~ x)).
Lemma measurable_fun_cvg D (h : (T → R)^nat) f :
(∀ m, measurable_fun D (h m)) → (∀ x, D x → h ^~ x --> f x) →
measurable_fun D f.
End measurable_fun_realType.
Section standard_emeasurable_fun.
Variable R : realType.
Lemma measurable_fun_EFin (D : set R) : measurable_fun D EFin.
Lemma measurable_fun_abse (D : set (\bar R)) : measurable_fun D abse.
Lemma emeasurable_fun_minus (D : set (\bar R)) :
measurable_fun D (-%E : \bar R → \bar R).
End standard_emeasurable_fun.
#[global] Hint Extern 0 (measurable_fun _ abse) ⇒
solve [exact: measurable_fun_abse] : core.
#[global] Hint Extern 0 (measurable_fun _ EFin) ⇒
solve [exact: measurable_fun_EFin] : core.
NB: real-valued function
Lemma EFin_measurable_fun (T : measurableType) (R : realType) (D : set T)
(g : T → R) :
measurable_fun D (EFin \o g) ↔ measurable_fun D g.
Section emeasurable_fun.
Local Open Scope ereal_scope.
Variables (T : measurableType) (R : realType).
Implicit Types (D : set T).
Lemma measurable_fun_einfs D (f : (T → \bar R)^nat) :
(∀ n, measurable_fun D (f n)) →
∀ n, measurable_fun D (fun x ⇒ einfs (f ^~ x) n).
Lemma measurable_fun_esups D (f : (T → \bar R)^nat) :
(∀ n, measurable_fun D (f n)) →
∀ n, measurable_fun D (fun x ⇒ esups (f ^~ x) n).
Lemma emeasurable_fun_max D (f g : T → \bar R) :
measurable_fun D f → measurable_fun D g →
measurable_fun D (fun x ⇒ maxe (f x) (g x)).
Lemma emeasurable_funN D (f : T → \bar R) :
measurable_fun D f → measurable_fun D (\- f).
Lemma emeasurable_fun_funepos D (f : T → \bar R) :
measurable_fun D f → measurable_fun D f^\+.
Lemma emeasurable_fun_funeneg D (f : T → \bar R) :
measurable_fun D f → measurable_fun D f^\-.
Lemma emeasurable_fun_min D (f g : T → \bar R) :
measurable_fun D f → measurable_fun D g →
measurable_fun D (fun x ⇒ mine (f x) (g x)).
Lemma measurable_fun_elim_sup D (f : (T → \bar R)^nat) :
(∀ n, measurable_fun D (f n)) →
measurable_fun D (fun x ⇒ elim_sup (f ^~ x)).
Lemma emeasurable_fun_cvg D (f_ : (T → \bar R)^nat) (f : T → \bar R) :
(∀ m, measurable_fun D (f_ m)) →
(∀ x, D x → f_ ^~ x --> f x) → measurable_fun D f.
End emeasurable_fun.
Arguments emeasurable_fun_cvg {T R D} f_.
(g : T → R) :
measurable_fun D (EFin \o g) ↔ measurable_fun D g.
Section emeasurable_fun.
Local Open Scope ereal_scope.
Variables (T : measurableType) (R : realType).
Implicit Types (D : set T).
Lemma measurable_fun_einfs D (f : (T → \bar R)^nat) :
(∀ n, measurable_fun D (f n)) →
∀ n, measurable_fun D (fun x ⇒ einfs (f ^~ x) n).
Lemma measurable_fun_esups D (f : (T → \bar R)^nat) :
(∀ n, measurable_fun D (f n)) →
∀ n, measurable_fun D (fun x ⇒ esups (f ^~ x) n).
Lemma emeasurable_fun_max D (f g : T → \bar R) :
measurable_fun D f → measurable_fun D g →
measurable_fun D (fun x ⇒ maxe (f x) (g x)).
Lemma emeasurable_funN D (f : T → \bar R) :
measurable_fun D f → measurable_fun D (\- f).
Lemma emeasurable_fun_funepos D (f : T → \bar R) :
measurable_fun D f → measurable_fun D f^\+.
Lemma emeasurable_fun_funeneg D (f : T → \bar R) :
measurable_fun D f → measurable_fun D f^\-.
Lemma emeasurable_fun_min D (f g : T → \bar R) :
measurable_fun D f → measurable_fun D g →
measurable_fun D (fun x ⇒ mine (f x) (g x)).
Lemma measurable_fun_elim_sup D (f : (T → \bar R)^nat) :
(∀ n, measurable_fun D (f n)) →
measurable_fun D (fun x ⇒ elim_sup (f ^~ x)).
Lemma emeasurable_fun_cvg D (f_ : (T → \bar R)^nat) (f : T → \bar R) :
(∀ m, measurable_fun D (f_ m)) →
(∀ x, D x → f_ ^~ x --> f x) → measurable_fun D f.
End emeasurable_fun.
Arguments emeasurable_fun_cvg {T R D} f_.