Module mathcomp.analysis.lebesgue_integral_theory.simple_functions
From HB Require Import structures.From mathcomp Require Import boot order ssralg ssrnum ssrint interval.
From mathcomp Require Import interval_inference archimedean finmap.
From mathcomp Require Import mathcomp_extra boolp classical_sets functions.
From mathcomp Require Import cardinality reals fsbigop ereal topology tvs.
From mathcomp Require Import normedtype sequences real_interval esum measure.
From mathcomp Require Import lebesgue_measure numfun realfun measurable_realfun.
Reserved Notation "{ 'nnfun' aT >-> T }"
(at level 0, format "{ 'nnfun' aT >-> T }").
Reserved Notation "[ 'nnfun' 'of' f ]"
(at level 0, format "[ 'nnfun' 'of' f ]").
Reserved Notation "{ 'nnsfun' aT >-> T }"
(at level 0, format "{ 'nnsfun' aT >-> T }").
Reserved Notation "[ 'nnsfun' 'of' f ]"
(at level 0, format "[ 'nnsfun' 'of' f ]").
Reserved Notation "{ 'sfun' aT >-> T }"
(at level 0, format "{ 'sfun' aT >-> T }").
Reserved Notation "[ 'sfun' 'of' f ]"
(at level 0, format "[ 'sfun' 'of' f ]").
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.
Module
Source code
Import MeasurableR.
.
Source code
Source code
Source code
Source code
{ of @isMeasurableFun d _ aT rT f & @FiniteImage aT rT f}.
End HBSimple.
Notation
Source code
Notation
Source code
Module
Source code
Import HBSimple.
.
Source code
Source code
Source code
(
Source code
{ of @SimpleFun d _ _ f & @NonNegFun aT rT f}.
End HBNNSimple.
Notation
Source code
Notation
Source code
Section sfun_pred.
Context {} { : sigmaRingType d} { : realType}.
Import MeasurableR.
Definition
sfun : forall {d : measure_display} {aT : sigmaRingType d} {rT : realType}, {pred aT -> rT} sfun is not universe polymorphic Arguments sfun {d}%_measure_display_scope {aT rT} _ sfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.sfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 99, characters 11-15
Source code
Definition
sfun_key : forall {d : measure_display} {aT : sigmaRingType d} {rT : realType}, pred_key (T:=aT -> rT) sfun sfun_key is not universe polymorphic Arguments sfun_key {d}%_measure_display_scope {aT rT} sfun_key is opaque Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.sfun_key Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 100, characters 11-19
Source code
Proof.
sfun_keyed : forall {d : measure_display} {aT : sigmaRingType d} {rT : realType}, keyed_pred sfun_key sfun_keyed is not universe polymorphic Arguments sfun_keyed {d}%_measure_display_scope {aT rT} sfun_keyed is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.sfun_keyed Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 101, characters 10-20
Source code
Lemma
Source code
Proof.
Source code
Proof.
Section sfun.
Context {} { : measurableType d} { : realType}.
Notation := {sfun aT >-> rT}.
Notation
Source code
Section Sub.
Context ( : aT -> rT) ( : f \in sfun).
Import MeasurableR.
Definition
sfun_Sub1_subproof : forall {d : measure_display} {aT : measurableType d} {rT : realType} [f : aT -> rT], f \in sfun -> isMeasurableFun.axioms_ d lebesgue_display aT rT f sfun_Sub1_subproof is not universe polymorphic Arguments sfun_Sub1_subproof {d}%_measure_display_scope {aT rT} [f]%_function_scope fP sfun_Sub1_subproof is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.sfun_Sub1_subproof Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 113, characters 11-29
Source code
@isMeasurableFun.Build d _ aT rT f (set_mem (sub_sfun_mfun fP)).
Source code
Source code
Source code
Source code
Definition
sfun_Sub2_subproof : forall {d : measure_display} {aT : measurableType d} {rT : realType} [f : aT -> rT], f \in sfun -> FiniteImage.axioms_ aT rT f sfun_Sub2_subproof is not universe polymorphic Arguments sfun_Sub2_subproof {d}%_measure_display_scope {aT rT} [f]%_function_scope fP sfun_Sub2_subproof is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.sfun_Sub2_subproof Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 116, characters 11-29
Source code
@FiniteImage.Build aT rT f (set_mem (sub_sfun_fimfun fP)).
Import HBSimple.
Source code
Source code
Source code
Source code
Definition
sfun_Sub : forall {d : measure_display} {aT : measurableType d} {rT : realType} [f : aT -> rT], f \in sfun -> {sfun aT >-> rT} sfun_Sub is not universe polymorphic Arguments sfun_Sub {d}%_measure_display_scope {aT rT} [f]%_function_scope fP sfun_Sub is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.sfun_Sub Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 122, characters 11-19
Source code
End Sub.
Lemma
Source code
(forall ( : f \in sfun), K (sfun_Sub Pf)) -> forall : T, K u.
Proof.
have -> : Pf1 = set_mem (sub_sfun_mfun Pf) by [].
have -> : Pf2 = set_mem (sub_sfun_fimfun Pf) by [].
exact: Ksub.
Qed.
Import HBSimple.
Lemma
Source code
Proof.
.
Source code
Source code
Source code
Lemma
Source code
.
Source code
Source code
Source code
Import MeasurableR.
.
Source code
Source code
Source code
Definition
cst_sfun : forall {d : measure_display} {aT : measurableType d} {rT : realType}, rT -> {sfun aT >-> rT} cst_sfun is not universe polymorphic Arguments cst_sfun {d}%_measure_display_scope {aT rT} x%_ring_scope cst_sfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.cst_sfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 151, characters 11-19
Source code
Lemma
Source code
Proof.
End sfun.
Lemma
Source code
Proof.
Source code
Proof.
Source code
Proof.
Source code
k *: f = k \*: f.
Proof.
Definition
fctWE : (forall (T : Type) (K : pzRingType) (f g : T -> K), (f + g)%R = (f \+ g)%R) * (forall (T : Type) (K : pzRingType) (f : T -> K), (- f)%R = (\- f)%R) * (forall (T : Type) (K : pzRingType) (f g : T -> K), (f * g)%R = (f \* g)%R) * (forall (T : Type) (K : pzRingType) (L : lmodType K) (k : K) (f : T -> L), (k *: f)%R = (k \*: f)%R) fctWE is not universe polymorphic fctWE is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.fctWE Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 168, characters 11-16
Source code
Section ring.
Context ( : measurableType d) ( : realType).
Lemma
Source code
Proof.
.
Source code
Source code
Source code
sfun_subring_closed.
.
Source code
Source code
Source code
Implicit Types (f g : {sfun aT >-> rT}).
Import HBSimple.
Lemma
Source code
Proof.
Source code
Proof.
Source code
Proof.
Source code
Proof.
Source code
Proof.
Source code
Proof.
Source code
(\sum_( <- r | P i) f i) x = \sum_( <- r | P i) f i x.
Proof.
Source code
(\sum_( <- r | P i) f i) x = \sum_( <- r | P i) f i x.
Proof.
Source code
Import MeasurableR.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Import HBSimple.
.
Source code
Source code
Source code
@FImFun aT rT (mindic _ mD) := FImFun.on (mindic _ mD).
Definition
indic_sfun : forall {d : measure_display} {aT : measurableType d} {rT : realType} (D : set aT), d.-measurable%classic D -> {sfun aT >-> rT} indic_sfun is not universe polymorphic Arguments indic_sfun {d}%_measure_display_scope {aT rT} D%_classical_set_scope mD indic_sfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.indic_sfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 214, characters 11-21
Source code
mindic rT mD.
.
Source code
Source code
Source code
Definition
scale_sfun : forall [d : measure_display] [aT : measurableType d] [rT : realType], rT -> {sfun aT >-> rT} -> {sfun aT >-> rT} scale_sfun is not universe polymorphic Arguments scale_sfun [d]%_measure_display_scope [aT rT] k%_ring_scope f scale_sfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.scale_sfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 218, characters 11-21
Source code
End ring.
Arguments indic_sfun {d aT rT} _.
Lemma
Source code
t < 0 -> f @^-1` [set t] = set0.
Proof.
Lemma
Source code
x != 0 -> (cst x \* f) @^-1` [set y] = f @^-1` [set y / x].
Proof.
Section simple_bounded.
Context ( : sigmaRingType d) ( : realType).
Import HBSimple.
Lemma
Source code
Proof.
exists (fine (\big[maxe/-oo%E]_( <- r) `|i|%:E)).
split; rewrite ?num_real// => x mx z _; apply/ltW/(le_lt_trans _ mx).
have ? : f z \in r by have := imageT f z; rewrite fr.
rewrite -[leLHS]/(fine `|f z|%:E) fine_le//.
(* TODO: generalize the statement of bigmaxe_fin_num *)
have := @bigmaxe_fin_num _ (map normr r) `|f z|.
by rewrite big_map => ->//; apply/mapP; exists (f z).
by rewrite (unstable.bigmax_sup_seq _ _ (lexx _)).
Qed.
End simple_bounded.
Section nnsfun_functions.
Context ( : measurableType d) ( : realType).
Import HBNNSimple.
Import MeasurableR.
Lemma
Source code
Proof.
Source code
Source code
Source code
(cst_nnfun_subproof x).
Definition
cst_nnsfun : forall [d : measure_display] (T : measurableType d) [R : realType], {nonneg R}%R -> {nnsfun T >-> R} cst_nnsfun is not universe polymorphic Arguments cst_nnsfun [d]%_measure_display_scope T [R] r cst_nnsfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.cst_nnsfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 268, characters 11-21
Source code
Definition
nnsfun0 : forall {d : measure_display} {T : measurableType d} {R : realType}, {nnsfun T >-> R} nnsfun0 is not universe polymorphic Arguments nnsfun0 {d}%_measure_display_scope {T R} nnsfun0 is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.nnsfun0 Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 270, characters 11-18
Source code
Lemma
Source code
Proof.
.
Source code
Source code
Source code
(indic_nnfun_subproof D).
.
Source code
Source code
Source code
@NonNegFun T R (mindic R mD) := NonNegFun.on (mindic R mD).
End nnsfun_functions.
Arguments nnsfun0 {d T R}.
Section nnfun_bin.
Variables ( : Type) ( : numDomainType) ( : {nnfun T >-> R}).
Lemma
Source code
.
Source code
Source code
Source code
Lemma
Source code
.
Source code
Source code
Source code
Lemma
Source code
.
Source code
Source code
Source code
End nnfun_bin.
Section nnsfun_bin.
Context ( : measurableType d) ( : realType).
Variables : {nnsfun T >-> R}.
Import HBNNSimple.
Import MeasurableR.
.
Source code
Source code
Source code
Definition
add_nnsfun : forall {d : measure_display} {T : measurableType d} {R : realType}, {nnsfun T >-> R} -> {nnsfun T >-> R} -> {nnsfun T >-> R} add_nnsfun is not universe polymorphic Arguments add_nnsfun {d}%_measure_display_scope {T R} f g add_nnsfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.add_nnsfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 309, characters 11-21
Source code
.
Source code
Source code
Source code
Definition
mul_nnsfun : forall {d : measure_display} {T : measurableType d} {R : realType}, {nnsfun T >-> R} -> {nnsfun T >-> R} -> {nnsfun T >-> R} mul_nnsfun is not universe polymorphic Arguments mul_nnsfun {d}%_measure_display_scope {T R} f g mul_nnsfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.mul_nnsfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 312, characters 11-21
Source code
.
Source code
Source code
Source code
Definition
max_nnsfun : forall {d : measure_display} {T : measurableType d} {R : realType}, {nnsfun T >-> R} -> {nnsfun T >-> R} -> {nnsfun T >-> R} max_nnsfun is not universe polymorphic Arguments max_nnsfun {d}%_measure_display_scope {T R} f g max_nnsfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.max_nnsfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 315, characters 11-21
Source code
Definition
indic_nnsfun : forall [d : measure_display] [T : measurableType d] (R : realType) [A : set T], d.-measurable%classic A -> {nnsfun T >-> R} indic_nnsfun is not universe polymorphic Arguments indic_nnsfun [d]%_measure_display_scope [T] R [A]%_classical_set_scope mA indic_nnsfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.indic_nnsfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 317, characters 11-23
Source code
End nnsfun_bin.
Arguments add_nnsfun {d T R} _ _.
Arguments mul_nnsfun {d T R} _ _.
Arguments max_nnsfun {d T R} _ _.
Definition
scale_nnsfun : forall [d : measure_display] [T : measurableType d] [R : realType], {nnsfun T >-> R} -> forall [k : R], (0 <= k)%R -> {nnsfun T >-> R} scale_nnsfun is not universe polymorphic Arguments scale_nnsfun [d]%_measure_display_scope [T R] f [k]%_ring_scope k0 scale_nnsfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.scale_nnsfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 324, characters 11-23
Source code
( : {nnsfun T >-> R}) ( : R) ( : 0 <= k) :=
mul_nnsfun (cst_nnsfun T (NngNum k0)) f.
Definition
proj_nnsfun : forall [d : measure_display] [T : measurableType d] [R : realType], {nnsfun T >-> R} -> forall [A : set T], d.-measurable%classic A -> {nnsfun T >-> R} proj_nnsfun is not universe polymorphic Arguments proj_nnsfun [d]%_measure_display_scope [T R] f [A]%_classical_set_scope mA proj_nnsfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.proj_nnsfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 328, characters 11-22
Source code
( : {nnsfun T >-> R}) ( : set T) ( : measurable A) :=
mul_nnsfun f (indic_nnsfun R mA).
Section mrestrict.
Import HBNNSimple.
Lemma
Source code
( : measurable A) : f \_ A = proj_nnsfun f mA.
End mrestrict.
Section nnsfun_iter.
Context ( : measurableType d) ( : realType) ( : set T).
Variable : {nnsfun T >-> R}^nat.
Definition
sum_nnsfun : forall [d : measure_display] [T : measurableType d] [R : realType], {nnsfun T >-> R} ^nat -> nat -> {nnsfun T >-> R} sum_nnsfun is not universe polymorphic Arguments sum_nnsfun [d]%_measure_display_scope [T R] f n%_nat_scope sum_nnsfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.sum_nnsfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 348, characters 11-21
Source code
Import HBNNSimple.
Lemma
Source code
Proof.
Definition
bigmax_nnsfun : forall [d : measure_display] [T : measurableType d] [R : realType], {nnsfun T >-> R} ^nat -> nat -> {nnsfun T >-> R} bigmax_nnsfun is not universe polymorphic Arguments bigmax_nnsfun [d]%_measure_display_scope [T R] f n%_nat_scope bigmax_nnsfun is transparent Expands to: Constant mathcomp.analysis.lebesgue_integral_theory.simple_functions.bigmax_nnsfun Declared in library mathcomp.analysis.lebesgue_integral_theory.simple_functions, line 355, characters 11-24
Source code
Lemma
Source code
Proof.
End nnsfun_iter.
Section nnsfun_cover.
Local Open Scope ereal_scope.
Context ( : measurableType d) ( : realType).
Variable : {nnsfun T >-> R}.
Import HBNNSimple.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
End nnsfun_cover.
Section measure_fsbig.
Local Open Scope ereal_scope.
Context ( : measurableType d) ( : realType).
Variable : {measure set T -> \bar R}.
Lemma
Source code
finite_set A ->
(forall , A i -> measurable (F i)) -> trivIset A F ->
m (\big[setU/set0]_( \in A) F i) = \sum_( \in A) m (F i).
Proof.
Import HBNNSimple.
Import MeasurableR.
Lemma
Source code
\sum_( \in range g) m (f @^-1` [set x] `&` (g @^-1` [set i])) =
m (f @^-1` [set x] `&` \big[setU/set0]_( \in range g) (g @^-1` [set i])).
Proof.
- by move=> i Ai; apply: measurableI.
- exact/trivIset_setIl/trivIset_preimage1.
- by rewrite !fsbig_finite//= big_distrr.
Qed.
Lemma
Source code
\sum_( \in range g) m (g @^-1` [set i] `&` (f @^-1` [set x])) =
m (\big[setU/set0]_( \in range g) (g @^-1` [set i]) `&` f @^-1` [set x]).
Proof.
End measure_fsbig.
Section mulem_ge0.
Local Open Scope ereal_scope.
Let
Source code
0 <= f x -> ((x < 0)%R -> f x = 0) -> 0 <= x%:E * f x.
Proof.
Lemma
Source code
( : {nnfun T >-> R}) : 0 <= r%:E * (\1_(f @^-1` [set r]) z)%:E.
Proof.
Lemma
Source code
( : {measure set T -> \bar R}) ( : R -> set T) :
((x < 0)%R -> A x = set0) -> 0 <= x%:E * mu (A x).
Global Arguments mulemu_ge0 {d T R mu x} A.
Import HBNNSimple.
Lemma
Source code
( : {measure set T -> \bar R}) ( : {nnsfun T >-> R}) :
0 <= x%:E * mu (f @^-1` [set x]).
Proof.
End mulem_ge0.