Module mathcomp.analysis.ess_sup_inf
From HB Require Import structures.From mathcomp Require Import boot order algebra.
From mathcomp Require Import boolp classical_sets functions cardinality.
From mathcomp Require Import reals ereal topology normedtype sequences.
From mathcomp Require Import measure lebesgue_measure measurable_realfun.
Unset SsrOldRewriteGoalsOrder.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Import Order.TTheory GRing.Theory Num.Def Num.Theory.
Import numFieldNormedType.Exports.
Local Open Scope classical_set_scope.
Local Open Scope ring_scope.
Local Open Scope ereal_scope.
Section essential_supremum.
Context { : semiRingOfSetsType d} { : realType}.
Variable : {measure set T -> \bar R}.
Implicit Type f : T -> \bar R.
Definition
ess_sup : forall [d : measure_display] {T : semiRingOfSetsType d} {R : realType}, measure T R -> (T -> \bar R) -> \bar R ess_sup is not universe polymorphic Arguments ess_sup [d]%_measure_display_scope {T R} mu f%_function_scope ess_sup is transparent Expands to: Constant mathcomp.analysis.ess_sup_inf.ess_sup Declared in library mathcomp.analysis.ess_sup_inf, line 36, characters 11-18
Source code
Lemma
Source code
Proof.
End essential_supremum.
Section essential_supremum_lemmas.
Context { : measurableType d} { : realType}.
Variable : {measure set T -> \bar R}.
Implicit Types (f g : T -> \bar R) (h k : T -> R) (x y : \bar R) (r : R).
Lemma
Source code
(\forall \ae mu, f x <= y) <-> mu (f @^-1` `]y, +oo[) = 0.
Proof.
by rewrite -[_ @^-1` _]setTI; apply/f_meas=> //; exact/emeasurable_itv.
have setCfVroo : f @^-1` `]y, +oo[ = ~` [set | f x <= y].
by apply: setC_inj; rewrite preimage_setC setCitv/= set_itvxx setU0 setCK.
split.
move=> [N [dN muN0 inN]]; rewrite (subset_measure0 _ dN)// => x.
by rewrite setCfVroo; apply: inN.
set N := (X in mu X) => muN0; exists N; rewrite -setCfVroo.
by split => //; exact: fVroo_meas.
Qed.
Local Notation
Source code
Lemma
Source code
ess_sup f = ereal_inf [set | mu (f @^-1` `]y, +oo[) = 0].
Proof.
Lemma
Source code
Proof.
have [->|IN0] := eqVneq I set0.
by rewrite ereal_inf0; apply: nearW => ?; rewrite leey.
have [u uI uinf] := ereal_inf_seq IN0.
rewrite -(cvg_lim _ uinf)//; near=> x.
rewrite lime_ge//; first by apply/cvgP: uinf.
by apply: nearW; near: x; apply/ae_foralln => n; apply: uI.
Unshelve. all: by end_near. Qed.
Lemma
Source code
Proof.
- by move=> [z fz zy]; near do apply: le_trans zy.
- by move=> fy; exists y.
by rewrite -ess_supEae//; exact: ess_sup_ge.
Unshelve. all: by end_near. Qed.
Lemma
Source code
Proof.
near do rewrite (le_trans (near fg _ _))//=.
exact: ess_sup_ge.
Unshelve. all: by end_near. Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
by apply/ess_supP => //; apply: nearW.
have ae_proper := ae_properfilter_algebraOfSetsType muT_gt0.
by near (almost_everywhere mu) => y; near: y; apply: ess_sup_ge.
Unshelve. all: by end_near. Qed.
Lemma
Source code
(\forall \ae mu, f x = y) -> ess_sup f = y.
Proof.
Lemma
Source code
(\forall \ae mu, a <= f x) -> a <= ess_sup f.
Proof.
Lemma
Source code
Proof.
Lemma
Source code
f = \0 %[ae mu] -> ess_sup (abse \o f) = 0.
Proof.
by apply/ess_supP => /=; near do rewrite (near f0 _ _)//= normr0//.
by rewrite -[0]ess_sup_cst// le_ess_sup//=; near=> x; rewrite abse_ge0.
Unshelve. all: by end_near. Qed.
Lemma
Source code
ess_sup (cst r%:E \* f) = r%:E * ess_sup f.
Proof.
gen have esc_le : r f r_ge0 r_gt0 /
ess_sup (cst r%:E \* f) <= r%:E * ess_sup f.
by apply/ess_supP; near do rewrite /cst/= lee_pmul2l//; apply/ess_supP.
apply/eqP; rewrite eq_le esc_le// -lee_pdivlMl//=.
apply: le_trans (esc_le _ _ _ _); rewrite ?invr_gt0 ?invr_ge0//.
by under eq_fun do rewrite muleA -EFinM mulVf ?mul1e ?gt_eqF//.
Unshelve. all: by end_near. Qed.
Lemma
Source code
ess_sup (cst r%:E \* f) = r%:E * ess_sup f.
Proof.
by under eq_fun do rewrite mul0e; rewrite mul0e ess_sup_cst.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
ess_sup (abse \o (f \+ g)) <= ess_sup (abse \o f) + ess_sup (abse \o g).
Proof.
End essential_supremum_lemmas.
Arguments ess_sup_ae_cst {d T R mu f}.
Arguments ess_supP {d T R mu f y}.
Section real_essential_supremum.
Context { : semiRingOfSetsType d} { : realType}.
Variable : {measure set T -> \bar R}.
Implicit Types f : T -> R.
Notation
Source code
End real_essential_supremum.
Section real_essential_supremum_lemmas.
Context { : measurableType d} { : realType}.
Variable : {measure set T -> \bar R}.
Implicit Types (f : T -> R) (r : R).
Notation
Source code
Lemma
Source code
exists , \forall \ae mu, (f x <= M)%R.
Proof.
by move=> /ess_sup_eqNyP fNy; exists 0%:R; apply: filterS fNy.
have supf_fin : ess_supr f \is a fin_num by case: ess_sup ltfy supfNy.
by exists (fine (ess_supr f)); near do rewrite -lee_fin fineK//; apply/ess_supP.
Unshelve. all: by end_near. Qed.
Lemma
Source code
Proof.
Lemma
Source code
ess_supr (cst r \* f)%R = r%:E * ess_supr f.
Proof.
Lemma
Source code
x <= ess_supr f.
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
ess_supr (normr \o (f \+ g)%R) <= ess_supr (normr \o f) + ess_supr (normr \o g).
Proof.
End real_essential_supremum_lemmas.
Notation
Source code
Section essential_infimum.
Context { : semiRingOfSetsType d} { : realType}.
Variable : {measure set T -> \bar R}.
Implicit Types f : T -> \bar R.
Definition
ess_inf : forall [d : measure_display] {T : semiRingOfSetsType d} {R : realType}, measure T R -> (T -> \bar R) -> constructive_ereal_extended__canonical__Order_POrder ess_inf is not universe polymorphic Arguments ess_inf [d]%_measure_display_scope {T R} mu f%_function_scope ess_inf is transparent Expands to: Constant mathcomp.analysis.ess_sup_inf.ess_inf Declared in library mathcomp.analysis.ess_sup_inf, line 240, characters 11-18
Source code
Lemma
Source code
Proof.
End essential_infimum.
Section essential_infimum_lemmas.
Context { : measurableType d} { : realType}.
Variable : {measure set T -> \bar R}.
Implicit Types (f : T -> \bar R) (x y : \bar R) (r : R).
Local Notation
Source code
Local Notation
Source code
Lemma
Source code
Proof.
apply/seteqP; split=> [y /= y_le|_ [/= y y_ge <-]].
by exists (- y); rewrite ?oppeK//=; apply: filterS y_le => x; rewrite leeN2.
by apply: filterS y_ge => x; rewrite leeNl.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
near do rewrite (le_trans _ (near fg _ _))//=.
exact: ess_inf_le.
Unshelve. all: by end_near. Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
(\forall \ae mu, f x = y) -> ess_inf f = y.
Proof.
Lemma
Source code
(\forall \ae mu, y <= f x) -> y <= ess_inf f.
Proof.
Lemma
Source code
Proof.
Lemma
Source code
ess_inf (cst r%:E \* f) = r%:E * ess_inf f.
Proof.
by under eq_fun do rewrite mul0e; rewrite mul0e ess_inf_cst.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
End essential_infimum_lemmas.
Arguments ess_inf_ae_cst {d T R mu f}.
Arguments ess_infP {d T R mu f y}.
Section real_essential_infimum.
Context { : measurableType d} { : realType}.
Variable : {measure set T -> \bar R}.
Implicit Types (f : T -> R) (x : \bar R) (r : R).
Notation
Source code
Lemma
Source code
exists , \forall \ae mu, (f x >= M)%R.
Proof.
by move=> /ess_inf_eqyP fNy; exists 0%:R; apply: filterS fNy.
have inff_fin : ess_infr f \is a fin_num by case: ess_inf ltfy inffNy.
by exists (fine (ess_infr f)); near do rewrite -lee_fin fineK//; apply/ess_infP.
Unshelve. all: by end_near. Qed.
Lemma
Source code
ess_infr (cst r \* f)%R = r%:E * ess_infr f.
Proof.
Lemma
Source code
x <= ess_infr f.
Proof.
Lemma
Source code
Lemma
Source code
Proof.
End real_essential_infimum.
Notation
Source code