Module mathcomp.analysis.measure_theory.measure_function
From HB Require Import structures.From mathcomp Require Import boot order algebra finmap.
#[warning="-warn-library-file-internal-analysis"]
From mathcomp Require Import unstable.
From mathcomp Require Import boolp classical_sets functions cardinality fsbigop.
From mathcomp Require Import reals interval_inference ereal topology normedtype.
From mathcomp Require Import sequences esum.
From mathcomp Require Import measurable_structure measurable_function.
Reserved Notation "{ 'content' 'set' T '->' '\bar' R }"
(T at level 37, format "{ 'content' 'set' T '->' '\bar' R }").
Reserved Notation "{ 'measure' 'set' T '->' '\bar' R }"
(T at level 37, format "{ 'measure' 'set' T '->' '\bar' R }").
Reserved Notation "d .-ring" (format "d .-ring").
Reserved Notation "d .-ring.-measurable" (format "d .-ring.-measurable").
Reserved Notation "{ 'sfinite_measure' 'set' T '->' '\bar' R }"
(T at level 37, format "{ 'sfinite_measure' 'set' T '->' '\bar' R }").
Reserved Notation "{ 'sigma_finite_content' 'set' T '->' '\bar' R }"
(T at level 37,
format "{ 'sigma_finite_content' 'set' T '->' '\bar' R }").
Reserved Notation "{ 'sigma_finite_measure' 'set' T '->' '\bar' R }"
(T at level 37,
format "{ 'sigma_finite_measure' 'set' T '->' '\bar' R }").
Reserved Notation "{ 'finite_measure' 'set' T '->' '\bar' R }"
(T at level 37, format "{ 'finite_measure' 'set' T '->' '\bar' R }").
Unset SsrOldRewriteGoalsOrder.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Import ProperNotations.
Import Order.TTheory GRing.Theory Num.Theory.
Local Open Scope classical_set_scope.
Local Open Scope ring_scope.
Section additivity.
Context ( : numFieldType) ( : semiRingOfSetsType d)
( : set T -> \bar R).
Definition
semi_additive2 : forall [d : measure_display] [R : numFieldType] [T : semiRingOfSetsType d], (set T -> \bar R) -> Prop semi_additive2 is not universe polymorphic Arguments semi_additive2 [d]%_measure_display_scope [R T] mu%_function_scope semi_additive2 is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.semi_additive2 Declared in library mathcomp.analysis.measure_theory.measure_function, line 147, characters 11-25
Source code
measurable (A `|` B) ->
A `&` B = set0 -> mu (A `|` B) = mu A + mu B.
Definition
semi_additive : forall [U V : GRing.BaseAddUMagma.Exports.baseAddUMagmaType], (U -> V) -> Prop semi_additive is not universe polymorphic Arguments semi_additive [U V] f%_function_scope semi_additive is transparent Expands to: Constant mathcomp.algebra.algebraic_hierarchy.ssralg.GRing.Theory.semi_additive Declared in library mathcomp.algebra.algebraic_hierarchy.ssralg, line 788, characters 11-24
Source code
(forall : nat, measurable (F k)) -> trivIset setT F ->
measurable (\big[setU/set0]_( < n) F k) ->
mu (\big[setU/set0]_( < n) F i) = \sum_( < n) mu (F i).
Definition
semi_sigma_additive : forall [d : measure_display] [R : numFieldType] [T : semiRingOfSetsType d], (set T -> \bar R) -> Prop semi_sigma_additive is not universe polymorphic Arguments semi_sigma_additive [d]%_measure_display_scope [R T] mu%_function_scope semi_sigma_additive is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.semi_sigma_additive Declared in library mathcomp.analysis.measure_theory.measure_function, line 156, characters 11-30
Source code
forall , (forall : nat, measurable (F i)) -> trivIset setT F ->
measurable (\bigcup_ F n) ->
(fun => \sum_(0 <= < n) mu (F i)) @ \oo --> mu (\bigcup_ F n).
Definition
additive2 : forall [d : measure_display] [R : numFieldType] [T : semiRingOfSetsType d], (set T -> \bar R) -> Prop additive2 is not universe polymorphic Arguments additive2 [d]%_measure_display_scope [R T] mu%_function_scope additive2 is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.additive2 Declared in library mathcomp.analysis.measure_theory.measure_function, line 161, characters 11-20
Source code
A `&` B = set0 -> mu (A `|` B) = mu A + mu B.
Definition
additive : forall [U V : GRing.Zmodule.Exports.zmodType], (U -> V) -> Prop additive is not universe polymorphic Arguments additive [U V] f%_function_scope additive is transparent Expands to: Constant mathcomp.algebra.algebraic_hierarchy.ssralg.GRing.Theory.additive Declared in library mathcomp.algebra.algebraic_hierarchy.ssralg, line 791, characters 11-19
Source code
forall , (forall : nat, measurable (F i)) -> trivIset setT F ->
forall , mu (\big[setU/set0]_( < n) F i) = \sum_( < n) mu (F i).
Definition
sigma_additive : forall [d : measure_display] [R : numFieldType] [T : semiRingOfSetsType d], (set T -> \bar R) -> Prop sigma_additive is not universe polymorphic Arguments sigma_additive [d]%_measure_display_scope [R T] mu%_function_scope sigma_additive is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.sigma_additive Declared in library mathcomp.analysis.measure_theory.measure_function, line 168, characters 11-25
Source code
forall , (forall : nat, measurable (F i)) -> trivIset setT F ->
(fun => \sum_(0 <= < n) mu (F i)) @ \oo --> mu (\bigcup_ F n).
Definition
subadditive : forall [d : measure_display] [R : numFieldType] [T : semiRingOfSetsType d], (set T -> \bar R) -> Prop subadditive is not universe polymorphic Arguments subadditive [d]%_measure_display_scope [R T] mu%_function_scope subadditive is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.subadditive Declared in library mathcomp.analysis.measure_theory.measure_function, line 172, characters 11-22
Source code
(forall , `I_n k -> measurable (F k)) -> measurable A ->
A `<=` \big[setU/set0]_( < n) F k ->
(mu A <= \sum_( < n) mu (F k))%E.
Definition
subset_sigma_subadditive : forall {T : Type} {R : numFieldType}, (set T -> \bar R) -> set T -> (set T) ^nat -> Prop subset_sigma_subadditive is not universe polymorphic Arguments subset_sigma_subadditive {T}%_type_scope {R} mu%_function_scope A%_classical_set_scope F subset_sigma_subadditive is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.subset_sigma_subadditive Declared in library mathcomp.analysis.measure_theory.measure_function, line 177, characters 11-35
Source code
( : set T -> \bar R) ( : set T) ( : (set T)^nat) :=
A `<=` \bigcup_ F n -> (mu A <= \sum_( <oo) mu (F n))%E.
Definition
measurable_subset_sigma_subadditive : forall [d : measure_display] [R : numFieldType] [T : semiRingOfSetsType d], (set T -> \bar R) -> Prop measurable_subset_sigma_subadditive is not universe polymorphic Arguments measurable_subset_sigma_subadditive [d]%_measure_display_scope [R T] mu%_function_scope measurable_subset_sigma_subadditive is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.measurable_subset_sigma_subadditive Declared in library mathcomp.analysis.measure_theory.measure_function, line 181, characters 11-46
Source code
forall ( : set T) ( : nat -> set T),
(forall , measurable (F n)) -> measurable A ->
subset_sigma_subadditive mu A F.
Lemma
Source code
Proof.
move=> /(amx (bigcup2 A B))->.
- by move=> [|[|[]]]//=.
- by move=> [|[|i]] [|[|j]]/= _ _; rewrite ?(AB, setI0, set0I, setIC) => -[].
- by rewrite !(big_ord_recl, big_ord0)/= adde0.
Qed.
End additivity.
Section ring_additivity.
Context ( : numFieldType) ( : ringOfSetsType d) ( : set T -> \bar R).
Lemma
Source code
Proof.
by rewrite sa //; exact: bigsetU_measurable.
Qed.
Lemma
Source code
Proof.
by rewrite amu //; exact: measurableU.
Qed.
Lemma
Source code
Proof.
rewrite semi_additiveE semi_additive2E => muU A Am Atriv n.
elim: n => [|n IHn]; rewrite ?(big_ord_recr, big_ord0) ?mu0//=.
rewrite muU ?IHn//=; first by apply: bigsetU_measurable.
rewrite -bigcup_mkord -subset0 => x [[/= m + Amx] Anx].
by rewrite (Atriv m n) ?ltnn//=; exists x.
Qed.
End ring_additivity.
Lemma
Source code
( : realFieldType) ( : set T -> \bar R) :
mu set0 = 0 -> semi_sigma_additive mu -> semi_additive mu.
Proof.
have := samu (fun => if (i < n)%N then A i else set0).
rewrite (bigcup_splitn n) bigcup0 ?setU0.
by move=> i _; rewrite -ltn_subRL subnn.
under eq_bigr do rewrite ltn_ord.
move=> /(_ _ _ UAm)/(@cvg_lim _) <-//.
- by move=> i; case: ifP.
- move=> i j _ _; do 2![case: ifP] => ? ?; do ?by rewrite (setI0, set0I) => -[].
by move=> /Atriv; apply.
apply: lim_near_cst => //=; near=> i.
have /subnKC<- : (n <= i)%N by near: i; exists n.
transitivity (\sum_( < n + (i - n)) mu (if (j < n)%N then A j else set0)).
by rewrite big_mkord.
rewrite big_split_ord/=; under eq_bigr do rewrite ltn_ord.
by rewrite [X in _ + X]big1 ?adde0// => ?; rewrite -ltn_subRL subnn.
Unshelve. all: by end_near. Qed.
Lemma
Source code
( : numFieldType) ( : sigmaRingType d) ( : set T -> \bar R) :
semi_sigma_additive mu = sigma_additive mu.
Proof.
by apply: amu => //; exact: bigcupT_measurable.
Qed.
Lemma
Source code
( : realFieldType) ( : sigmaRingType d) ( : set T -> \bar R) :
mu set0 = 0 -> sigma_additive mu -> additive mu.
Proof.
exact: semi_sigma_additive_is_additive.
Qed.
.
Source code
Source code
Source code
(
Source code
measure_ge0 : forall , (0 <= mu x)%E ;
measure_semi_additive : semi_additive mu }.
.
Source code
Source code
Source code
(
Source code
& isContent d T R mu }.
Notation
Source code
Notation
Source code
Arguments measure_ge0 {d T R} _.
Section content_signed.
Context ( : semiRingOfSetsType d) ( : numFieldType).
Variable : {content set T -> \bar R}.
Lemma
Source code
Itv.spec (@ext_num_sem R) (Itv.Real `[0%Z, +oo[) (mu S).
Proof.
- by rewrite real_fine -real_leNye; apply: le_trans (measure_ge0 _ _).
- by rewrite /= bnd_simp measure_ge0.
- by rewrite bnd_simp.
Qed.
Canonical
content_inum : forall [d : measure_display] [T : semiRingOfSetsType d] [R : numFieldType], {content set T -> \bar R}%R -> set T -> Itv.def ext_num_sem (Itv.Real `[0%Z, +oo[%R) content_inum is not universe polymorphic Arguments content_inum [d]%_measure_display_scope [T R] mu S%_classical_set_scope content_inum is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.content_inum Declared in library mathcomp.analysis.measure_theory.measure_function, line 291, characters 10-22
Source code
End content_signed.
Section content_on_semiring_of_sets.
Context ( : semiRingOfSetsType d) ( : numFieldType)
( : {content set T -> \bar R}).
Lemma
Source code
Proof.
exact: trivIset_set0.
Qed.
Lemma
Source code
Proof.
Hint Resolve measure0 : core.
Hint Resolve measure_ge0 : core.
Hint Resolve measure_semi_additive : core.
Lemma
Source code
(forall ( : 'I_n), measurable (F k)) ->
trivIset setT F ->
measurable (\big[setU/set0]_( < n) F k) ->
mu (\big[setU/set0]_( < n) F i) = \sum_( < n) mu (F i).
Proof.
have FE ( : 'I_n) : F i = (F' \o val) i by rewrite /F'/= valK/=.
rewrite (eq_bigr (F' \o val))// (eq_bigr (mu \o F' \o val))//.
by move=> i _; rewrite FE.
rewrite -measure_semi_additive//.
- by move=> k; rewrite /F'; case: insubP => /=.
- apply/trivIsetP=> i j _ _; rewrite /F'.
do 2?[case: insubP; rewrite ?(set0I, setI0)//= => ? _ <-].
by move/trivIsetP: tF; apply.
- by rewrite (eq_bigr (F' \o val)) in mUF.
Qed.
Lemma
Source code
(forall , (k < n)%N -> measurable (F k)) ->
trivIset `I_n F ->
measurable (\big[setU/set0]_( < n) F k) ->
mu (\big[setU/set0]_( < n) F i) = \sum_( < n) mu (F i).
Proof.
by move=> k; apply: mF.
by rewrite trivIset_comp// ?(image_eq [surjfun of val])//; apply: 'inj_val.
Qed.
Lemma
Source code
finite_set D ->
trivIset D F ->
(forall , D i -> measurable (F i)) ->
measurable (\bigcup_( in D) F i) ->
mu (\bigcup_( in D) F i) = \sum_( \in D) mu (F i).
Proof.
by rewrite !emptyE => *; rewrite fsbig_set0 bigcup0.
move=> [n /ppcard_eqP[f]] Ftriv Fm UFm.
rewrite -(image_eq [surjfun of f^-1%FUN])/= in UFm Ftriv *.
rewrite bigcup_image fsbig_image//= bigcup_mkord -fsbig_ord/= in UFm *.
rewrite (@measure_semi_additive_ord_I (F \o f^-1))//= 1?trivIset_comp//.
by move=> k kn; apply: Fm; exact: funS.
Qed.
Lemma
Source code
Proof.
End content_on_semiring_of_sets.
Arguments measure0 {d T R} _.
#[global] Hint Extern 0
(is_true (0%R <= (_ : {content set _ -> \bar _}) _)%E) =>
solve [apply: measure_ge0] : core.
#[global] Hint Extern 0
(is_true (0%:E <= (_ : {content set _ -> \bar _}) _)%E) =>
solve [apply: measure_ge0] : core.
#[global] Hint Extern 0
((_ : {content set _ -> \bar _}) set0 = 0%R)%E =>
solve [apply: measure0] : core.
#[global]
Hint Resolve measure_semi_additive2 measure_semi_additive : core.
Section content_on_ring_of_sets.
Context ( : realFieldType)( : ringOfSetsType d)
( : {content set T -> \bar R}).
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
finite_set D ->
trivIset D F ->
(forall , D i -> measurable (F i)) ->
mu (\bigcup_( in D) F i) = \sum_( \in D) mu (F i).
Proof.
Lemma
Source code
(forall : 'I_n, P i -> measurable (F i)) -> trivIset P F ->
mu (\big[setU/set0]_( < n | P i) F i) = (\sum_( < n | P i) mu (F i))%E.
Proof.
- by move=> k; case: ifP => //; apply: mF.
- by rewrite -patch_pred trivIset_restr setIT.
- by apply: bigsetU_measurable=> k _; case: ifP => //; apply: mF.
- by apply: eq_bigr => i _; rewrite (fun_if mu) measure0.
Qed.
Lemma
Source code
(forall : 'I_n, measurable (F i)) -> trivIset setT F ->
mu (\big[setU/set0]_( < n | P i) F i) = (\sum_( < n | P i) mu (F i))%E.
Proof.
Lemma
Source code
(forall , i \in A -> measurable (F i)) -> trivIset [set` A] F ->
mu (\big[setU/set0]_( <- A) F i) = (\sum_( <- A) mu (F i))%E.
Proof.
End content_on_ring_of_sets.
#[global]
Hint Resolve measureU measure_bigsetU : core.
.
Source code
Source code
Source code
Source code
(R : numFieldType) (mu : set T -> \bar R) & Content d mu := {
measure_semi_sigma_additive : semi_sigma_additive mu }.
Source code
Source code
.
Source code
Source code
Source code
Source code
(R : numFieldType) :=
{ of Content d mu & Content_isMeasure d T R mu }.
Notation
Source code
: ring_scope.
Section measure_signed.
Context ( : numFieldType) ( : semiRingOfSetsType d).
Variable : {measure set T -> \bar R}.
Lemma
Source code
Itv.spec (@ext_num_sem R) (Itv.Real `[0%Z, +oo[) (mu S).
Proof.
- by rewrite real_fine -real_leNye; apply: le_trans (measure_ge0 _ _).
- by rewrite /= bnd_simp measure_ge0.
- by rewrite bnd_simp.
Qed.
Canonical
measure_inum : forall [d : measure_display] [R : numFieldType] [T : semiRingOfSetsType d], measure T R -> set T -> Itv.def ext_num_sem (Itv.Real `[0%Z, +oo[%R) measure_inum is not universe polymorphic Arguments measure_inum [d]%_measure_display_scope [R T] mu S%_classical_set_scope measure_inum is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.measure_inum Declared in library mathcomp.analysis.measure_theory.measure_function, line 457, characters 10-22
Source code
End measure_signed.
.
Source code
Source code
Source code
Source code
(mu : set T -> \bar R) := {
measure0 : mu set0 = 0 ;
measure_ge0 : forall , (0 <= mu x)%E ;
measure_semi_sigma_additive : semi_sigma_additive mu }.
.
Source code
Source code
Source code
(mu : set T -> \bar R) & isMeasure _ T R mu.
Let
Source code
Proof.
- exact: measure0.
- exact: measure_semi_sigma_additive.
Qed.
.
Source code
Source code
Source code
measure_ge0 semi_additive_mu.
.
Source code
Source code
Source code
measure_semi_sigma_additive.
.
Source code
Lemma
Source code
( : {measure set T -> \bar R}) :
(m1 = m2 :> (set T -> \bar R)) -> m1 = m2.
Proof.
Section measure_lemmas.
Context ( : realFieldType) ( : semiRingOfSetsType d).
Variable : {measure set T -> \bar R}.
Lemma
Source code
trivIset setT A -> measurable (\bigcup_ A n) ->
mu (\bigcup_ A n) = (\sum_( <oo) mu (A i))%E.
Proof.
End measure_lemmas.
#[global] Hint Extern 0 (_ set0 = 0%R)%E => solve [apply: measure0] : core.
#[global] Hint Extern 0 (is_true (0%:E <= _)) => solve [apply: measure_ge0] : core.
Section measure_lemmas.
Context ( : realFieldType) ( : sigmaRingType d).
Variable : {measure set T -> \bar R}.
Lemma
Source code
Proof.
Lemma
Source code
trivIset D F -> mu (\bigcup_( in D) F n) = (\sum_( <oo | i \in D) mu (F i))%E.
Proof.
- by move=> i; case: ifPn => // /set_mem; exact: mF.
- by move/trivIset_mkcond : tF.
- by rewrite -bigcup_mkcond; exact: bigcup_measurable.
- by rewrite [in RHS]eseries_mkcond; apply: eq_eseriesr => n _; case: ifPn.
Qed.
End measure_lemmas.
Arguments measure_bigcup {d R T} _ _.
#[global] Hint Extern 0 (sigma_additive _) =>
solve [apply: measure_sigma_additive] : core.
Section measure_sum.
Local Open Scope ereal_scope.
Context ( : sigmaRingType d) ( : realType).
Variables ( : {measure set T -> \bar R}^nat) ( : nat).
Definition
msum : forall {d : measure_display} {T : sigmaRingType d} {R : realType}, (measure T R) ^nat -> nat -> set T -> \bar R msum is not universe polymorphic Arguments msum {d}%_measure_display_scope {T R} m n%_nat_scope A%_classical_set_scope msum is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.msum Declared in library mathcomp.analysis.measure_theory.measure_function, line 536, characters 11-15
Source code
Let
Source code
Let
Source code
Let
Source code
Proof.
.
Source code
Source code
Source code
msum0 msum_ge0 msum_sigma_additive.
End measure_sum.
Arguments msum {d T R}.
Section measure_zero.
Local Open Scope ereal_scope.
Context {} { : sigmaRingType d} { : realFieldType}.
Definition
mzero : forall {d : measure_display} {T : sigmaRingType d} {R : realFieldType}, set T -> \bar R mzero is not universe polymorphic Arguments mzero {d}%_measure_display_scope {T R} A%_classical_set_scope mzero is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.mzero Declared in library mathcomp.analysis.measure_theory.measure_function, line 561, characters 11-16
Source code
Let
Source code
Proof.
Let
Source code
Proof.
Let
Source code
Proof.
.
Source code
Source code
Source code
mzero0 mzero_ge0 mzero_sigma_additive.
End measure_zero.
Arguments mzero {d T R}.
Lemma
Source code
( : {measure set T -> \bar R}^nat) :
msum m_ 0 = mzero.
Section measure_add.
Local Open Scope ereal_scope.
Context ( : sigmaRingType d) ( : realType).
Variables ( : {measure set T -> \bar R}).
Definition
measure_add : forall [d : measure_display] [T : sigmaRingType d] [R : realType], measure T R -> measure T R -> set T -> \bar R measure_add is not universe polymorphic Arguments measure_add [d]%_measure_display_scope [T R] m1 m2 A%_classical_set_scope measure_add is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.measure_add Declared in library mathcomp.analysis.measure_theory.measure_function, line 589, characters 11-22
Source code
Lemma
Source code
Proof.
End measure_add.
Section measure_scale.
Local Open Scope ereal_scope.
Context ( : sigmaRingType d) ( : realFieldType).
Variables ( : {nonneg R}) ( : {measure set T -> \bar R}).
Definition
mscale : forall {d : measure_display} {T : sigmaRingType d} {R : realFieldType}, {nonneg R}%R -> measure T R -> set T -> \bar R mscale is not universe polymorphic Arguments mscale {d}%_measure_display_scope {T R} r m A%_classical_set_scope mscale is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.mscale Declared in library mathcomp.analysis.measure_theory.measure_function, line 601, characters 11-17
Source code
Let
Source code
Let
Source code
Let
Source code
Proof.
(fun => (r%:num)%:E * \sum_(0 <= < n) m (F i))).
by apply/funext => k; rewrite ge0_sume_distrr.
rewrite /mscale; have [->|r0] := eqVneq r%:num 0%R.
rewrite mul0e [X in X @ \oo --> _](_ : _ = cst 0)//.
by under eq_fun do rewrite mul0e.
by apply: cvgeZl => //; exact: measure_semi_sigma_additive.
Qed.
.
Source code
Source code
Source code
mscale0 mscale_ge0 mscale_sigma_additive.
End measure_scale.
Arguments mscale {d T R}.
Section measure_series.
Local Open Scope ereal_scope.
Context ( : sigmaRingType d) ( : realType).
Variables ( : {measure set T -> \bar R}^nat) ( : nat).
Definition
mseries : forall {d : measure_display} {T : sigmaRingType d} {R : realType}, (measure T R) ^nat -> nat -> set T -> \bar R mseries is not universe polymorphic Arguments mseries {d}%_measure_display_scope {T R} m n%_nat_scope A%_classical_set_scope mseries is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.mseries Declared in library mathcomp.analysis.measure_theory.measure_function, line 630, characters 11-18
Source code
Let
Source code
Proof.
Let
Source code
Proof.
Let
Source code
Proof.
lim ((fun => \sum_(0 <= < n) mseries (F i)) @ \oo)).
rewrite [in LHS]/mseries.
transitivity (\sum_(n <= <oo) \sum_( <oo) m k (F i)).
rewrite 2!ereal_series.
apply: (@eq_eseriesr _ (fun => m k (\bigcup_ F n0))) => i ni.
exact: measure_semi_bigcup.
rewrite ereal_series nneseries_interchange//.
apply: (@eq_eseriesr _ (fun => \sum_( <oo | (n <= i)%N) m i (F j))
(fun => \sum_(n <= <oo) m k (F i))).
by move=> i _; rewrite ereal_series.
apply: is_cvg_ereal_nneg_natsum => k _.
by rewrite /mseries ereal_series; exact: nneseries_ge0.
Qed.
.
Source code
Source code
Source code
mseries0 mseries_ge0 mseries_sigma_additive.
End measure_series.
Arguments mseries {d T R}.
Definition
pushforward : forall {d1 d2 : measure_display} {T1 : sigmaRingType d1} {T2 : sigmaRingType d2} {R : realFieldType}, (set T1 -> \bar R) -> (T1 -> T2) -> set T2 -> \bar R pushforward is not universe polymorphic Arguments pushforward {d1 d2}%_measure_display_scope {T1 T2 R} (m f)%_function_scope A%_classical_set_scope pushforward is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.pushforward Declared in library mathcomp.analysis.measure_theory.measure_function, line 661, characters 11-22
Source code
( : realFieldType) ( : set T1 -> \bar R) ( : T1 -> T2)
:= fun => m (f @^-1` A).
Arguments pushforward {d1 d2 T1 T2 R}.
Section pushforward_measure.
Local Open Scope ereal_scope.
Context ( : measurableType d) ( : measurableType d')
( : realFieldType).
Variables ( : {measure set T1 -> \bar R}) ( : T1 -> T2).
Hypothesis : measurable_fun [set: T1] f.
Let
Source code
Proof.
Let
Source code
Proof.
Let
Source code
Proof.
apply: measure_semi_sigma_additive.
- by move=> n; rewrite -[X in measurable X]setTI; exact: mf.
- apply/trivIsetP => /= i j _ _ ij; rewrite -preimage_setI.
by move/trivIsetP : tF => /(_ _ _ _ _ ij) ->//; rewrite preimage_set0.
- by rewrite -preimage_bigcup -[X in measurable X]setTI; exact: mf.
Qed.
.
Source code
Source code
Source code
(pushforward m f) pushforward0 pushforward_ge0 pushforward_sigma_additive.
End pushforward_measure.
Module
Source code
Definition
SetRing.type : Type -> Type SetRing.type is not universe polymorphic Arguments SetRing.type T%_type_scope SetRing.type is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.SetRing.type Declared in library mathcomp.analysis.measure_theory.measure_function, line 695, characters 11-15
Source code
Definition
SetRing.display : measure_display -> measure_display SetRing.display is not universe polymorphic Arguments SetRing.display _%_measure_display_scope SetRing.display is opaque Expands to: Constant mathcomp.analysis.measure_theory.measure_function.SetRing.display Declared in library mathcomp.analysis.measure_theory.measure_function, line 696, characters 11-18
Source code
Proof.
Section SetRing.
Local Open Scope ereal_scope.
Context { : semiRingOfSetsType d}.
Notation := (type T).
Source code
.
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
(@setring0 T measurable) (@setringU T measurable) (@setringD T measurable).
Local Notation
Source code
Local Notation
Source code
((d%mdisp.-ring).-measurable : set_system (type _)).
Local Definition
SetRing.measurable_fin_trivIset not a defined object.
Source code
[set | exists : set_system T,
[/\ A = \bigcup_( in B) X, forall : set T, B X -> measurable X,
finite_set B & trivIset B id]].
Lemma
Source code
Proof.
move=> _ [B [-> Bm Bfin Btriv]]; apply: fin_bigcup_measurable => //.
by move=> i Di; apply: sub_gen_smallest; apply: Bm.
have mdW A : measurable A -> measurable_fin_trivIset A.
move=> Am; exists [set A]; split; do ?by [rewrite bigcup_set1|move=> ? ->|].
by move=> ? ? -> ->.
have mdI : setI_closed measurable_fin_trivIset.
move=> _ _ [A [-> Am Afin Atriv]] [B [-> Bm Bfin Btriv]].
rewrite setI_bigcupl; under eq_bigcupr do rewrite setI_bigcupr.
rewrite -bigcup_setX -(bigcup_image _ _ id).
eexists; split; [reflexivity | | exact/finite_image/finite_setX |].
by move=> _ [X [? ?] <-]; apply: measurableI; [apply: Am|apply: Bm].
apply: trivIset_sets => -[a b] [a' b']/= [Xa Xb] [Xa' Xb']; rewrite setIACA.
by move=> [x [Ax Bx]]; rewrite (Atriv a a') 1?(Btriv b b')//; exists x.
have mdisj_bigcap : finN0_bigcap_closed measurable_fin_trivIset.
exact/finN0_bigcap_closedP/mdI.
have mDbigcup I ( : set I) ( : set T) ( : I -> set T) : finite_set D ->
measurable A -> (forall , D i -> measurable (B i)) ->
measurable_fin_trivIset (A `\` \bigcup_( in D) B i).
have [->|/set0P D0] := eqVneq D set0.
by rewrite bigcup0// setD0 => *; apply: mdW.
move=> Dfin Am Bm; rewrite setD_bigcupr//; apply: mdisj_bigcap=> // i Di.
by have [F [Ffin Fm -> ?]] := semi_measurableD A (B i) Am (Bm _ Di); exists F.
have mdU : fin_trivIset_closed measurable_fin_trivIset.
elim/Pchoice=> I D F Dfin Ftriv Fm.
have /(_ _ (set_mem _))/cid-/(all_sig_cond_dep (fun=> set0))
[G /(_ _ (mem_set _))GP] := Fm _ _.
under eq_bigcupr => i Di do case: (GP i Di) => ->.
rewrite -bigcup_setX_dep -(bigcup_image _ _ id); eexists; split=> //.
- by move=> _ [i [Di Gi] <-]; have [_ + _ _] := GP i.1 Di; apply.
- by apply: finite_image; apply: finite_setXR=> // i Di; have [] := GP i Di.
apply: trivIset_sets => -[i X] [j Y] /= [Di Gi] [Dj Gj] XYN0.
suff eqij : i = j.
by rewrite {i}eqij in Di Gi *; have [_ _ _ /(_ _ _ _ _ XYN0)->] := GP j Dj.
apply: Ftriv => //; have [-> _ _ _] := GP j Dj; have [-> _ _ _] := GP i Di.
by case: XYN0 => [x [Xx Yx]]; exists x; split; [exists X|exists Y].
have mdDI : setD_closed measurable_fin_trivIset.
move=> A B mA mB; have [F [-> Fm Ffin Ftriv]] := mA.
have [F' [-> F'm F'fin F'triv]] := mB.
have [->|/set0P F'N0] := eqVneq F' set0.
by rewrite bigcup_set0 setD0; exists F.
rewrite setD_bigcupl; apply: mdU => //; first by apply: trivIset_setIr.
move=> X DX; rewrite setD_bigcupr//; apply: mdisj_bigcap => //.
move=> Y DY; case: (semi_measurableD X Y); [exact: Fm|exact: F'm|].
by move=> G [Gfin Gm -> Gtriv]; exists G.
apply: smallest_sub => //; split=> //; first by apply: mdW.
move=> A B mA mB; rewrite -(setUIDK B A) setUA [X in X `|` _]setUidl//.
rewrite -bigcup2inE; apply: mdU => //; last by move=> [|[]]// _; apply: mdDI.
by move=> [|[]]// [|[]]//= _ _ []; rewrite setDE ?setIA => X [] []//.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
[/\ finite_set B,
(forall , B X -> X !=set0),
trivIset B id,
(forall : set T, X \in B -> measurable X) &
A = \bigcup_( in B) X].
Proof.
exists (B `&` [set | X != set0]); split.
- by apply: sub_finite_set Bfin; exact: subIsetl.
- by move=> ?/= [_ /set0P].
- by move=> X Y/= [XB _] [YB _]; exact: Btriv.
- by move=> X/= /[!inE] -[] /Bm.
rewrite bigcup_mkcondr; apply: eq_bigcupr => X Bx; case: ifPn => //.
by rewrite notin_setE/= => /negP/negPn/eqP.
Qed.
Definition
SetRing.decomp : forall [d : measure_display] {T : semiRingOfSetsType d}, set (SetRing.type T) -> set_system T SetRing.decomp is not universe polymorphic Arguments SetRing.decomp [d]%_measure_display_scope {T} A%_classical_set_scope _ SetRing.decomp is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.SetRing.decomp Declared in library mathcomp.analysis.measure_theory.measure_function, line 791, characters 11-17
Source code
if A == set0 then [set set0] else
if pselect (measurable A) is left mA then projT1 (cid (ring_finite_set mA))
else [set A].
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
A !=set0 -> (forall , decomp A X -> X !=set0).
Proof.
Lemma
Source code
Proof.
Lemma
Source code
measurable A -> X \in decomp A -> measurable X.
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
case: pselect=> //= Am; last by apply/set0P; exists A.
case: cid=> //= D [_ _ _ _ Aeq]; apply: contra_neq AN0; rewrite Aeq => ->.
by rewrite bigcup_set0.
Qed.
Definition
SetRing.measure : forall [d : measure_display] {T : semiRingOfSetsType d} [R : numDomainType], (set T -> \bar R) -> set (SetRing.type T) -> \bar R SetRing.measure is not universe polymorphic Arguments SetRing.measure [d]%_measure_display_scope {T} [R] mu%_function_scope A%_classical_set_scope SetRing.measure is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.SetRing.measure Declared in library mathcomp.analysis.measure_theory.measure_function, line 853, characters 11-18
Source code
( : set rT) : \bar R := \sum_( \in decomp A) mu X.
Section content.
Context { : realFieldType} ( : {content set T -> \bar R}).
Local Notation
Source code
Arguments big_trivIset {I D T R idx op} A F.
Lemma
Source code
finite_set D -> trivIset D F -> (forall , i \in D -> measurable (F i)) ->
Rmu (\bigcup_( in D) F i) = \sum_( \in D) mu (F i).
Proof.
have mUD : measurable (\bigcup_( in D) F i : set rT).
apply: fin_bigcup_measurable => // *; apply: sub_gen_smallest.
exact/Fm/mem_set.
have [->|/set0P[i0 Di0]] := eqVneq D set0.
by rewrite bigcup_set0 decomp_set0 fsbig_set0 fsbig_set1.
set E := decomp _; have Em X := decomp_measurable mUD X.
transitivity (\sum_( \in E) \sum_( \in D) mu (X `&` F i)).
apply: eq_fsbigr => /= X XE; have XDF : X = \bigcup_( in D) (X `&` F i).
by rewrite -setI_bigcupr setIidl//; exact: decomp_sub.
rewrite [in LHS]XDF content_fin_bigcup//; first exact: trivIset_setIl.
- by move=> i /mem_set Di; apply: measurableI; [exact: Em|exact: Fm].
- by rewrite -XDF; exact: Em.
rewrite exchange_fsbig //; first exact: decomp_finite_set.
apply: eq_fsbigr => i Di; have Feq : F i = \bigcup_( in E) (X `&` F i).
rewrite -setI_bigcupl setIidr// cover_decomp.
by apply/bigcup_sup; exact: set_mem.
rewrite -content_fin_bigcup -?Feq//; [exact/decomp_finite_set| | |exact/Fm].
- exact/trivIset_setIr/decomp_triv.
- by move=> X /= XE; apply: measurableI; [apply: Em; rewrite inE | exact: Fm].
Qed.
Lemma
Source code
Proof.
by rewrite Rmu_fin_bigcup// ?fsbig_set1// => -[].
Qed.
Let
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
move=> /ring_finite_set[/= {}B [? _ Btriv Bm ->]].
rewrite -subset0 => coverAB0.
have AUBfin : finite_set (A `|` B) by rewrite finite_setU.
have AUBtriv : trivIset (A `|` B) id.
move=> X Y [] ABX [] ABY; do ?by [exact: Atriv|exact: Btriv].
by move=> [u [Xu Yu]]; case: (coverAB0 u); split; [exists X|exists Y].
by move=> [u [Xu Yu]]; case: (coverAB0 u); split; [exists Y|exists X].
rewrite -bigcup_setU !Rmu_fin_bigcup//=.
by move=> X /set_mem [|] /mem_set ?; [exact: Am|exact: Bm].
rewrite fsbigU//= => [X /= [XA XB]]; have [->//|/set0P[x Xx]] := eqVneq X set0.
by case: (coverAB0 x); split; exists X.
Qed.
Source code
.
Source code
Source code
Source code
End content.
End SetRing.
Module
Source code
HB.reexport.
HB.reexport SetRing.
End Exports.
End SetRing.
Export SetRing.Exports.
Notation
Source code
Notation
Source code
((d%mdisp.-ring).-measurable : set_system (SetRing.type _)) : classical_set_scope.
Lemma
Source code
( : {content set T -> \bar R}) :
{in measurable &, {homo mu : / A `<=` B >-> (A <= B)%E}}.
Proof.
by rewrite leye_eq => /eqP ->; rewrite leey.
rewrite -[leRHS]SetRing.RmuE// -[B](setDUK AB) measureU/= ?setDIK//.
- exact: sub_gen_smallest.
- by apply: measurableD; exact: sub_gen_smallest.
- by rewrite SetRing.RmuE ?leeDl.
Qed.
Lemma
Source code
( : {content set T -> \bar R}) ( : set T) :
(mu A <= 0)%E = (mu A == 0)%E.
Proof.
Section more_content_semiring_lemmas.
Context ( : realFieldType) ( : semiRingOfSetsType d).
Variable : {content set T -> \bar R}.
Lemma
Source code
Proof.
have XE : X = \big[setU/set0]_( < n) B i.
rewrite -big_distrl/= setIidr// => x /XA/=.
by rewrite -!bigcup_mkord => -[k nk Ax]; exists k; rewrite // patchT ?inE.
have Bm i : measurable (B i).
case: (ltnP i n) => ltin; last by rewrite /B patchC ?inE ?set0I//= leq_gtF.
by rewrite /B ?patchT ?inE//; apply: measurableI => //; apply: Am.
have subBA i : B i `<=` A i.
by rewrite /B/patch; case: ifP; rewrite // set0I//= => _ ?.
have subDUB i : seqDU B i `<=` A i by move=> x [/subBA].
have DUBm i : measurable (seqDU B i : set (SetRing.type T)).
apply: measurableD; first exact: sub_gen_smallest.
by apply: bigsetU_measurable => ? _; apply: sub_gen_smallest.
have DU0 i : (i >= n)%N -> seqDU B i = set0.
move=> leni; rewrite -subset0 => x []; rewrite /B patchC ?inE/= ?leq_gtF//.
by case.
rewrite -SetRing.RmuE// XE bigsetU_seqDU measure_bigsetU//.
rewrite [leRHS](big_ord_widen n (mu \o A))//= [leRHS]big_mkcond/=.
rewrite lee_sum => // i _; case: ltnP => ltin; last by rewrite DU0 ?measure0.
rewrite -[leRHS]SetRing.RmuE; first exact: Am.
by rewrite le_measure ?inE//=; last by apply: sub_gen_smallest; apply: Am.
Qed.
Lemma
Source code
finite_set D ->
(forall , D i -> measurable (A_ i)) ->
measurable A ->
A `<=` \bigcup_( in D) A_ i -> (mu A <= \sum_( \in D) mu (A_ i))%E.
Proof.
rewrite !emptyE bigcup_set0// subset0 => _ _ _ ->.
by rewrite measure0 fsbig_set0.
move=> Dfin A_m Am Asub; have [n /ppcard_eqP[f]] := Dfin.
rewrite (reindex_fsbig f^-1%FUN `I_n)//= -fsbig_ord.
rewrite (@content_subadditive A (A_ \o f^-1%FUN))//=.
by move=> i ltin; apply: A_m; apply: funS.
rewrite (fsbig_ord _ _ (A_ \o f^-1%FUN))/= -(reindex_fsbig _ _ D)//=.
by rewrite fsbig_setU.
Qed.
End more_content_semiring_lemmas.
Section content_ring_lemmas.
Local Open Scope ereal_scope.
Context ( : realType) ( : ringOfSetsType d).
Variable : {content set T -> \bar R}.
Lemma
Source code
(forall , measurable (A i)) -> measurable (\bigcup_ A i) ->
trivIset [set: nat] A -> \sum_( <oo) mu (A i) <= mu (\bigcup_ A i).
Proof.
near=> n; rewrite big_mkord -measure_bigsetU//= le_measure ?inE//=.
- exact: bigsetU_measurable.
- by rewrite -bigcup_mkord; apply: bigcup_sub => i lein; apply: bigcup_sup.
Unshelve. all: by end_near. Qed.
Lemma
Source code
measurable_subset_sigma_subadditive mu -> semi_sigma_additive mu.
Proof.
End content_ring_lemmas.
Section ring_sigma_subadditive_content.
Local Open Scope ereal_scope.
Context ( : realType) ( : semiRingOfSetsType d)
( : {content set T -> \bar R}).
Local Notation
Source code
Import SetRing.
Lemma
Source code
measurable_subset_sigma_subadditive mu ->
measurable_subset_sigma_subadditive Rmu.
Proof.
rewrite /Rmu -(eq_eseriesr (fun _ _ => esum_fset _ _))//.
by move=> *; exact: decomp_finite_set.
rewrite nneseries_esum ?esum_esum//=; first by move=> *; rewrite esum_ge0.
set K := _ `*`` _.
have /ppcard_eqP[f] : (K #= [set: nat])%card.
apply: cardXR_eq_nat => [|i].
by rewrite (_ : [set _ | true] = setT)//; exact/predeqP.
split; first by apply/finite_set_countable; exact: decomp_finite_set.
exact/set0P/decompN0.
have {Dsub} : D `<=` \bigcup_( in K) k.2.
apply: (subset_trans Dsub); apply: bigcup_sub => i _.
rewrite -[A i]cover_decomp; apply: bigcup_sub => X/= XAi.
by move=> x Xx; exists (i, X).
rewrite -(image_eq [bij of f^-1%FUN])/=.
rewrite (esum_set_image _ f^-1)//= bigcup_image => Dsub.
have DXsub X : X \in decomp D -> X `<=` \bigcup_ ((f^-1%FUN i).2 `&` X).
move=> XD; rewrite -setI_bigcupl -[Y in Y `<=` _](setIidr (decomp_sub XD)).
by apply: setSI.
have mf i : measurable ((f^-1)%function i).2.
have [_ /mem_set/decomp_measurable] := 'invS_f (I : setT i).
by apply; exact: Am.
have mfD i X : X \in decomp D -> measurable (((f^-1)%FUN i).2 `&` X : set T).
by move=> XD; apply: measurableI; [exact: mf|exact: (decomp_measurable _ XD)].
apply: (@le_trans _ _
(\sum_( <oo) \sum_( <- fset_set (decomp D)) mu ((f^-1%FUN i).2 `&` X))).
rewrite nneseries_sum// fsbig_finite/=; first exact: decomp_finite_set.
rewrite [leLHS]big_seq [leRHS]big_seq.
rewrite lee_sum// => X /[!in_fset_set]; first exact: decomp_finite_set.
move=> XD; have Xm := decomp_measurable Dm XD.
by apply: muS => // [i|]; [exact: mfD|exact: DXsub].
apply: lee_lim => /=; do ?apply: is_cvg_nneseries=> //.
by move=> n _ _; exact: sume_ge0.
near=> n; rewrite [n in _ <= n]big_mkcond; apply: lee_sum => i _.
rewrite ifT ?inE//.
under eq_big_seq.
move=> x; rewrite in_fset_set=> [|xD]; first exact: decomp_finite_set.
rewrite -RmuE//; first exact: mfD.
over.
rewrite -fsbig_finite/=; first exact: decomp_finite_set.
rewrite -measure_fin_bigcup//=.
- exact: decomp_finite_set.
- by apply: trivIset_setIl; apply: decomp_triv.
- by move=> X /= XD; apply: sub_gen_smallest; apply: mfD; rewrite inE.
rewrite -setI_bigcupr (cover_decomp D) -[leRHS]RmuE// ?le_measure ?inE//.
by apply: measurableI => //; apply: sub_gen_smallest; apply: mf.
by apply: sub_gen_smallest; apply: mf.
Unshelve. all: by end_near. Qed.
Lemma
Source code
measurable_subset_sigma_subadditive mu -> semi_sigma_additive Rmu.
Proof.
Lemma
Source code
measurable_subset_sigma_subadditive mu -> semi_sigma_additive mu.
Proof.
have Fringmeas i : d.-ring.-measurable (F i) by apply: measurable_subring.
have := Rmu_sigmadd F Fringmeas Ftriv (measurable_subring cupFmeas).
rewrite SetRing.RmuE//.
by under eq_fun do under eq_bigr do rewrite SetRing.RmuE//=.
Qed.
End ring_sigma_subadditive_content.
Source code
Source code
.
Source code
Source code
Source code
Source code
(T : semiRingOfSetsType d) (mu : set T -> \bar R) & Content d mu := {
measure_sigma_subadditive : measurable_subset_sigma_subadditive mu }.
.
Source code
Source code
Source code
(mu : set T -> \bar R) & Content_SigmaSubAdditive_isMeasure d R T mu.
.
Source code
Source code
Source code
(semiring_sigma_additive (measure_sigma_subadditive)).
.
Source code
Section more_premeasure_ring_lemmas.
Local Open Scope ereal_scope.
Context ( : realType) ( : semiRingOfSetsType d).
Variable : {measure set T -> \bar R}.
Import SetRing.
Lemma
Source code
Proof.
have XE : X = \bigcup_ B i by rewrite -setI_bigcupl setIidr.
have Bm i : measurable (B i) by rewrite /B; apply: measurableI.
have subBA i : B i `<=` A i by rewrite /B.
have subDUB i : seqDU B i `<=` A i by move=> x [/subBA].
have DUBm i : measurable (seqDU B i : set (SetRing.type T)).
by apply: measurableD => //;
do 1?apply: bigsetU_measurable => *; apply: sub_gen_smallest.
rewrite XE; move: (XE); rewrite seqDU_bigcup_eq.
under eq_bigcupr do rewrite -[seqDU B _]cover_decomp//.
rewrite -bigcup_setX_dep; set K := _ `*`` _.
have /ppcard_eqP[f] : (K #= [set: nat])%card.
apply: cardXR_eq_nat=> // i; split; last by apply/set0P; rewrite decompN0.
exact/finite_set_countable/decomp_finite_set.
pose f' := f^-1%FUN; rewrite -(image_eq [bij of f'])/= bigcup_image/=.
pose g := (f' n).2; have fVtriv : trivIset [set: nat] g.
move=> i j _ _; rewrite /g.
have [/= _ f'iB] : K (f' i) by apply: funS.
have [/= _ f'jB] : K (f' j) by apply: funS.
have [f'ij|f'ij] := eqVneq (f' i).1 (f' j).1.
move=> /(decomp_triv f'iB)/=; rewrite f'ij => /(_ f'jB) f'ij2.
apply: 'inj_f'; rewrite ?inE//= -!/(f' _); move: f'ij f'ij2.
by case: (f' i) (f' j) => [? ?] [? ?]//= -> ->.
move=> [x [f'ix f'jx]]; have Bij := @trivIset_seqDU _ B (f' i).1 (f' j).1 I I.
rewrite Bij ?eqxx// in f'ij; exists x; split.
- by move/mem_set : f'iB => /decomp_sub; apply.
- by move/mem_set : f'jB => /decomp_sub; apply.
have g_inj : set_inj [set | g i != set0] g.
by apply: trivIset_inj=> [i /set0P//|]; apply: sub_trivIset fVtriv.
move=> XEbig; rewrite measure_semi_bigcup//= -?XEbig//.
move=> i; have [/= _ /mem_set] : K (f' i) by apply: funS.
exact: decomp_measurable.
rewrite [leLHS](_ : _ = \sum_( <oo | g i != set0) mu (g i)).
rewrite !nneseries_esum// esum_mkcond [RHS]esum_mkcond; apply: eq_esum.
move=> i _; rewrite ifT ?inE//=; case: ifPn => //.
by rewrite notin_setE /= -/(g _) => /negP/negPn/eqP ->.
rewrite -(esum_pred_image mu g)//.
rewrite [leLHS](_ : _ = \esum_( in range g) mu X).
rewrite esum_mkcond [RHS]esum_mkcond; apply: eq_esum.
move=> Y _; case: ifPn; rewrite ?(inE, notin_setE)/=.
by move=> [i giN0 giY]; rewrite ifT// ?inE//=; exists i.
move=> Ngx; case: ifPn; rewrite ?(inE, notin_setE)//=.
move=> [i _ giY]; apply: contra_not_eq Ngx; rewrite -giY => mugi.
by exists i => //; apply: contra_neq mugi => ->; rewrite measure0.
have -> : range g = \bigcup_ (decomp (seqDU B i)).
apply/predeqP => /= Y; split => [[n _ gnY]|[n _ /= YBn]].
have [/= _ f'nB] : K (f' n) by apply: funS.
by exists (f' n).1 => //=; rewrite -gnY.
by exists (f (n, Y)) => //; rewrite /g /f' funK//= inE.
rewrite esum_bigcup//.
move=> i j /=.
have [->|/set0P DUBiN0] := eqVneq (seqDU B i) set0.
rewrite decomp_set0 ?set_fset1 => /negP[].
apply/eqP/predeqP=> x; split=> [[Y/=->]|->]//; first by rewrite measure0.
by exists set0.
have [->|/set0P DUBjN0] := eqVneq (seqDU B j) set0.
rewrite decomp_set0 ?set_fset1 => _ /negP[].
apply/eqP/predeqP=> x; split=> [[Y/=->]|->]//=; first by rewrite measure0.
by exists set0.
move=> _ _ [Y /= [/[dup] +]].
move=> /mem_set /decomp_sub YBi /mem_set + /mem_set /decomp_sub YBj.
move=> /(decomp_neq0 DUBiN0) [y Yy].
apply: (@trivIset_seqDU _ B) => //; exists y.
by split => //; [exact: YBi|exact: YBj].
rewrite nneseries_esumT//.
apply: le_esum => /=; first by move=> i _; exact: esum_ge0.
move=> // i _.
rewrite [leLHS](_ : _ = \sum_( \in decomp (seqDU B i)) mu j).
by rewrite esum_fset//; exact: decomp_finite_set.
rewrite -SetRing.Rmu_fin_bigcup//=.
- exact: decomp_finite_set.
- exact: decomp_triv.
- by move=> ?; exact: decomp_measurable.
rewrite -[leRHS]SetRing.RmuE// le_measure//; last by rewrite cover_decomp.
- rewrite inE; apply: fin_bigcup_measurable; first exact: decomp_finite_set.
move=> j /mem_set jdec; apply: sub_gen_smallest.
exact: decomp_measurable jdec.
- by rewrite inE; apply: sub_gen_smallest; exact: Am.
Qed.
End more_premeasure_ring_lemmas.
Lemma
Source code
( : {measure set T -> \bar R}) ( : set T) ( : nat -> set T) :
(forall , measurable (F n)) -> measurable A ->
A `<=` \bigcup_( in ~` `I_N) F n ->
(mu A <= \sum_(N <= <oo) mu (F n))%E.
Proof.
rewrite (@eq_eseriesr _ _ (fun => mu (if (N <= n)%N then F n else set0))).
by move=> o _; rewrite (fun_if mu) measure0.
apply: measure_sigma_subadditive => //.
by move=> n; case: ifPn.
move: AF; rewrite bigcup_mkcond.
by under eq_bigcupr do rewrite mem_not_I.
Qed.
Section ring_sigma_content.
Context ( : realType) ( : semiRingOfSetsType d)
( : {measure set T -> \bar R}).
Local Notation
Source code
Import SetRing.
Let
Source code
Proof.
.
Source code
Source code
Source code
ring_sigma_content.
End ring_sigma_content.
Definition
fin_num_fun : forall [d : measure_display] [T : semiRingOfSetsType d] [R : numDomainType], (set T -> \bar R) -> Prop fin_num_fun is not universe polymorphic Arguments fin_num_fun [d]%_measure_display_scope [T R] mu%_function_scope fin_num_fun is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.fin_num_fun Declared in library mathcomp.analysis.measure_theory.measure_function, line 1261, characters 11-22
Source code
( : set T -> \bar R) := forall , measurable U -> mu U \is a fin_num.
Lemma
Source code
( : set T -> \bar R) : fin_num_fun mu -> (mu setT < +oo)%E.
Proof.
Lemma
Source code
( : realFieldType) ( : {measure set T -> \bar R}) :
(mu setT < +oo)%E -> fin_num_fun mu.
Proof.
by rewrite (le_lt_trans _ h)//= le_measure// inE.
Qed.
Definition
sfinite_measure : forall [d : measure_display] [T : sigmaRingType d] [R : realType], (set T -> \bar R) -> Prop sfinite_measure is not universe polymorphic Arguments sfinite_measure [d]%_measure_display_scope [T R] mu%_function_scope sfinite_measure is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.sfinite_measure Declared in library mathcomp.analysis.measure_theory.measure_function, line 1276, characters 11-26
Source code
( : set T -> \bar R) :=
exists2 : {measure set T -> \bar R}^nat,
forall , fin_num_fun (s n) &
forall , measurable U -> mu U = mseries s 0 U.
Definition
sigma_finite : forall [d : measure_display] [T : semiRingOfSetsType d] [R : numDomainType], set T -> (set T -> \bar R) -> Prop sigma_finite is not universe polymorphic Arguments sigma_finite [d]%_measure_display_scope [T R] A%_classical_set_scope mu%_function_scope sigma_finite is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.sigma_finite Declared in library mathcomp.analysis.measure_theory.measure_function, line 1282, characters 11-23
Source code
( : set T) ( : set T -> \bar R) :=
exists2 : (set T)^nat, A = \bigcup_( : nat) F i &
forall , measurable (F i) /\ (mu (F i) < +oo)%E.
Lemma
Source code
( : realFieldType) ( : set T -> \bar R) : (mu set0 < +oo)%E ->
fin_num_fun mu -> sigma_finite setT mu.
Proof.
by rewrite -bigcup_mkcondr setTI bigcup_const//; exists 0%N.
by move=> n; split; case: ifPn => // _; rewrite fin_num_fun_lty.
Qed.
Definition
mrestr : forall [d : measure_display] [T : sigmaRingType d] [R : realFieldType] [D : set T], (set T -> \bar R) -> d.-measurable%classic D -> set T -> \bar R mrestr is not universe polymorphic Arguments mrestr [d]%_measure_display_scope [T R] [D]%_classical_set_scope f%_function_scope mD X%_classical_set_scope mrestr is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.mrestr Declared in library mathcomp.analysis.measure_theory.measure_function, line 1296, characters 11-17
Source code
( : set T -> \bar R) ( : measurable D) := fun => f (X `&` D).
Section measure_restr.
Context ( : sigmaRingType d) ( : realFieldType).
Variables ( : {measure set T -> \bar R}) ( : set T) ( : measurable D).
Local Notation
Source code
Let
Source code
Let
Source code
Proof.
Let
Source code
Proof.
have mFD i : measurable (FD i) by exact: measurableI.
have tFD : trivIset setT FD.
apply/trivIsetP => i j _ _ ij.
move/trivIsetP : tF => /(_ i j Logic.I Logic.I ij).
by rewrite /FD setIACA => ->; rewrite set0I.
by rewrite /restr setI_bigcupl; exact: measure_sigma_additive.
Qed.
.
Source code
Source code
Source code
restr0 restr_ge0 restr_sigma_additive.
End measure_restr.
Lemma
Source code
( : realType) ( : {measure set T -> \bar R}) :
sigma_finite setT mu -> sfinite_measure mu.
Proof.
have mDF k : measurable (seqDU F k).
apply: measurableD; first exact: (mF k).1.
by apply: bigsetU_measurable => i _; exact: (mF i).1.
exists (fun => mrestr mu (mDF k)) => [n|U mU].
- apply: lty_fin_num_fun => //=.
rewrite /mrestr setTI (@le_lt_trans _ _ (mu (F n)))//.
+ apply: le_measure; last exact: subDsetl.
* rewrite inE; apply: measurableD; first exact: (mF n).1.
by apply: bigsetU_measurable => i _; exact: (mF i).1.
* by rewrite inE; exact: (mF n).1.
+ exact: (mF n).2.
rewrite /mseries/= /mrestr/=; apply/esym/cvg_lim => //.
rewrite -[X in _ --> mu X]setIT UF seqDU_bigcup_eq setI_bigcupr.
apply: (@measure_sigma_additive _ _ _ mu (fun => U `&` seqDU F k)).
by move=> i; exact: measurableI.
exact/trivIset_setIl/trivIset_seqDU.
Qed.
.
Source code
Source code
Source code
Source code
(mu : set T -> \bar R) := {
s_finite : sfinite_measure mu }.
.
Source code
Source code
Source code
Source code
{ of @Measure _ T R mu & isSFinite _ T R mu }.
Arguments s_finite {d T R} _.
Notation
Source code
(SFiniteMeasure.type T R) : ring_scope.
.
Source code
Source code
Source code
Source code
(mu : set T -> \bar R) := { sigma_finiteT : sigma_finite setT mu }.
Source code
Source code
Source code
.
Source code
Source code
Source code
{ of @Content d T R mu & isSigmaFinite d T R mu }.
Arguments sigma_finiteT {d T R} s.
#[global] Hint Resolve sigma_finiteT : core.
Notation
Source code
(sigma_finite_content T R) : ring_scope.
Source code
Source code
Source code
.
Source code
Source code
Source code
{ of @SFiniteMeasure d T R mu & isSigmaFinite d T R mu }.
Notation
Source code
(sigma_finite_measure T R) : ring_scope.
.
Source code
Source code
Source code
Source code
(R : realType) (mu : set T -> \bar R) & isMeasure _ _ _ mu :=
{ sigma_finiteT : sigma_finite setT mu }.
.
Source code
Source code
Source code
mu & @Measure_isSigmaFinite d T R mu.
Lemma
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Lemma
Source code
sigma_finite setT (@mzero d T R).
Proof.
.
Source code
Source code
Source code
@isSigmaFinite.Build d T R mzero (@sigma_finite_mzero d T R).
Lemma
Source code
sfinite_measure (@mzero d T R).
Proof.
.
Source code
Source code
Source code
@isSFinite.Build d T R mzero (@sfinite_mzero d T R).
.
Source code
Source code
Source code
Source code
(k : set T -> \bar R) := { fin_num_measure : fin_num_fun k }.
#[deprecated(since="mathcomp-analysis 1.17.0", use=isFinNumFun)]
Notation
Source code
Module
Source code
#[deprecated(since="mathcomp-analysis 1.17.0", use=isFinNumFun)]
Notation
Source code
End isFinite.
.
Source code
Source code
Source code
Source code
(R : numFieldType) := { of isFinNumFun _ T R k }.
.
Source code
Source code
Source code
Source code
{ of @SigmaFiniteMeasure _ _ _ k & isFinNumFun _ T R k }.
Arguments fin_num_measure {d T R} _.
Notation
Source code
(FiniteMeasure.type T R) : ring_scope.
.
Source code
Source code
Source code
Source code
(R : realType) (k : set T -> \bar R)
& isMeasure _ _ _ k := { fin_num_measure : fin_num_fun k }.
.
Source code
Source code
Source code
& Measure_isFinite d T R k.
Let
Source code
Proof.
by apply: fin_num_fun_sigma_finite; [rewrite measure0|exact: fin_num_measure].
Qed.
.
Source code
Source code
Source code
Let
Source code
Proof.
.
Source code
Source code
Source code
Let
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
Section finite_restr.
Context ( : measurableType d) ( : realType).
Variables ( : {finite_measure set T -> \bar R}) ( : set T).
Hypothesis : measurable D.
Local Notation
Source code
Let
Source code
Proof.
rewrite !ge0_fin_numE//=; apply: le_lt_trans.
by rewrite /mrestr; apply: le_measure => //; rewrite inE//=; exact: measurableI.
Qed.
.
Source code
Source code
Source code
End finite_restr.
Section finite_mscale.
Context ( : measurableType d) ( : realType).
Variables ( : {finite_measure set T -> \bar R}) ( : {nonneg R}).
Local Notation
Source code
Let
Source code
Proof.
.
Source code
Source code
Source code
End finite_mscale.
.
Source code
Source code
Source code
Source code
(R : realType) (k : set T -> \bar R) & isMeasure _ _ _ k := {
s_finite : exists : {finite_measure set T -> \bar R}^nat,
forall , measurable U -> k U = mseries s 0 U }.
.
Source code
Source code
Source code
k & Measure_isSFinite d T R k.
Let
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
Section sfinite_measure.
Local Open Scope ereal_scope.
Context ( : measurableType d) ( : realType)
( : {sfinite_measure set T -> \bar R}).
Let : (set T -> \bar R)^nat := let: exist2 x _ _ := cid2 (s_finite mu) in x.
Let : s n set0 = 0.
Let
Source code
Let
Source code
Proof.
.
Source code
Source code
Source code
(@s_semi_sigma_additive n).
Let
Source code
.
Source code
Source code
Source code
Definition
sfinite_measure_seq : forall [d : measure_display] [T : measurableType d] [R : realType], {sfinite_measure set T -> \bar R}%R -> ({finite_measure set T -> \bar R}%R) ^nat sfinite_measure_seq is not universe polymorphic Arguments sfinite_measure_seq [d]%_measure_display_scope [T R] mu _ sfinite_measure_seq is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.sfinite_measure_seq Declared in library mathcomp.analysis.measure_theory.measure_function, line 1536, characters 11-30
Source code
Lemma
Source code
mu U = mseries sfinite_measure_seq O U.
End sfinite_measure.
Definition
mfrestr : forall [d : measure_display] [T : measurableType d] [R : realFieldType] [D : set T] [f : set T -> \bar R], d.-measurable%classic D -> (f D < +oo)%E -> set T -> \bar R mfrestr is not universe polymorphic Arguments mfrestr [d]%_measure_display_scope [T R] [D]%_classical_set_scope [f]%_function_scope mD _ X%_classical_set_scope mfrestr is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.mfrestr Declared in library mathcomp.analysis.measure_theory.measure_function, line 1546, characters 11-18
Source code
( : set T -> \bar R) ( : measurable D) & (f D < +oo)%E :=
mrestr f mD.
Section measure_frestr.
Local Open Scope ereal_scope.
Context ( : measurableType d) ( : realType).
Variables ( : {measure set T -> \bar R}) ( : set T) ( : measurable D).
Hypothesis
Source code
Local Notation
Source code
.
Source code
Source code
Source code
Let
Source code
Proof.
by rewrite (le_lt_trans _ moo)// le_measure// ?inE//; exact: measurableI.
Qed.
.
Source code
Source code
Source code
End measure_frestr.
Section content_semiRingOfSetsType.
Local Open Scope ereal_scope.
Context ( : semiRingOfSetsType d) ( : realFieldType).
Variables ( : {content set T -> \bar R}) ( : set T).
Hypotheses ( : measurable A) ( : measurable B).
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
End content_semiRingOfSetsType.
Section content_ringOfSetsType.
Local Open Scope ereal_scope.
Context ( : ringOfSetsType d) ( : realFieldType).
Variable : {content set T -> \bar R}.
Implicit Types A B : set T.
Lemma
Source code
mu A = mu (A `\` B) + mu (A `&` B).
Proof.
- exact: measurableD.
- exact: measurableI.
- by apply: measurableU; [exact: measurableD |exact: measurableI].
- by rewrite setDE setIACA setICl setI0.
- by rewrite -setDDr setDv setD0.
Qed.
Lemma
Source code
mu A < +oo -> mu (A `\` B) = mu A - mu (A `&` B).
Proof.
rewrite (measureDI mA mB) addeK// fin_numE 1?gt_eqF 1?lt_eqF//.
by rewrite (lt_le_trans _ (measure_ge0 _ _)).
by rewrite (le_lt_trans _ mAoo)// le_measure // ?inE//; exact: measurableI.
Qed.
Lemma
Source code
mu (A `|` B) <= mu A + mu B.
Proof.
rewrite (le_trans (@content_subadditive _ _ _ mu _ (bigcup2 A B) 2%N _ _ _))//.
by move=> -[//|[//|[|]]].
by apply: bigsetU_measurable => -[] [//|[//|[|]]].
by rewrite big_ord_recr/= big_ord_recr/= big_ord0 add0e.
Qed.
End content_ringOfSetsType.
Section measureU.
Local Open Scope ereal_scope.
Context ( : ringOfSetsType d) ( : realFieldType).
Variable : {measure set T -> \bar R}.
Lemma
Source code
mu (A `|` B) = mu A + mu B - mu (A `&` B).
Proof.
Lemma
Source code
mu (A `|` B) = mu A + mu B - mu (A `&` B).
Lemma
Source code
mu A = 0 -> mu B = 0 -> mu (A `|` B) = 0.
Proof.
by apply/eqP; rewrite oppe_eq0 -measure_le0/= -A0 measureIl.
Qed.
Lemma
Source code
mu (A `|` B) = mu A.
Proof.
by rewrite (@subset_measure0 _ _ _ _ (A `&` B) B) ?sube0//; exact: measurableI.
Qed.
End measureU.
Lemma
Source code
(
Source code
measurable A -> measurable B ->
mu A = mu' A -> mu B = mu' B -> mu (A `&` B) = mu' (A `&` B) ->
mu (A `|` B) = mu' (A `|` B).
Proof.
by rewrite !measureUfinl/= ?muA ?muB ?muAB.
rewrite leye_eq => /eqP mu'A; transitivity (+oo : \bar R)%E; apply/eqP.
by rewrite -leye_eq -mu'A -muA le_measure ?inE//=; apply: measurableU.
by rewrite eq_sym -leye_eq -mu'A le_measure ?inE//=; apply: measurableU.
Qed.
Section measure_continuity.
Local Open Scope ereal_scope.
Lemma
Source code
( : {measure set T -> \bar R}) ( : (set T) ^nat) :
(forall , measurable (F i)) -> measurable (\bigcup_ F n) ->
nondecreasing_seq F ->
mu \o F @ \oo --> mu (\bigcup_ F n).
Proof.
have Binter : trivIset setT (seqD F) := trivIset_seqD ndF.
have FBE : forall , F n.+1 = F n `|` seqD F n.+1 := setU_seqD ndF.
have FE n : \big[setU/set0]_( < n.+1) (seqD F) i = F n :=
nondecreasing_bigsetU_seqD n ndF.
rewrite -eq_bigcup_seqD.
have mB i : measurable (seqD F i) by elim: i => * //=; exact: measurableD.
apply: cvg_trans (measure_semi_sigma_additive _ mB Binter _); last first.
by rewrite eq_bigcup_seqD.
apply: (@cvg_trans _ (\sum_( < n.+1) mu (seqD F i) @[ --> \oo])).
rewrite [X in _ --> X @ \oo](_ : _ = mu \o F) // funeqE => n.
by rewrite -measure_semi_additive ?FE// => -[|].
move=> S [n _] nS; exists n => // m nm.
under eq_fun do rewrite -(big_mkord predT (mu \o seqD F)).
exact/(nS m.+1)/(leq_trans nm).
Qed.
Lemma
Source code
( : {measure set T -> \bar R}) ( : (set T) ^nat) :
mu (F 0%N) < +oo ->
(forall , measurable (F i)) -> measurable (\bigcap_ F n) ->
nonincreasing_seq F -> mu \o F @ \oo --> mu (\bigcap_ F n).
Proof.
have ? : mu (F 0%N) \is a fin_num by rewrite ge0_fin_numE.
have F0E r : mu (F 0%N) - (mu (F 0%N) - r) = r.
by rewrite oppeB ?addeA ?subee ?add0e// fin_num_adde_defr.
rewrite -[x in _ --> x] F0E.
have -> : mu \o F = fun => mu (F 0%N) - (mu (F 0%N) - mu (F n)).
by apply: funext => n; rewrite F0E.
apply: cvgeB; rewrite ?fin_num_adde_defr//.
have -> : \bigcap_ F n = F 0%N `&` \bigcap_ F n.
by rewrite setIidr//; exact: bigcap_inf.
rewrite -measureD // setDE setC_bigcap setI_bigcupr -[x in bigcup _ x]/G.
have -> : (fun => mu (F 0%N) - mu (F n)) = mu \o G.
by apply: funext => n /=; rewrite measureD// setIidr//; exact/subsetPset/niF.
apply: nondecreasing_cvg_measure.
- by move=> ?; apply: measurableD; exact: mF.
- rewrite -setI_bigcupr; apply: measurableI; first exact: mF.
by rewrite -@setC_bigcap; exact: measurableC.
- by move=> n m NM; apply/subsetPset; apply: setDS; apply/subsetPset/niF.
Qed.
Lemma
Source code
{ : {measure set M -> \bar R}} ( : (set M)^nat)
( : forall , measurable (A i)) :
mu (\bigcup_( < n) A i) @[-->\oo] --> mu (\bigcup_ A n).
Proof.
under eq_bigcupr do rewrite -bigcup_mkord.
apply: nondecreasing_cvg_measure => [i||n m nm]; [exact: bigcup_measurable|
by apply: bigcup_measurable => ? ?; exact: bigcup_measurable|].
by apply/subsetPset => x [i/= i_n Aix]; exists i => //=; exact: leq_trans nm.
Qed.
Lemma
Source code
{ : {measure set M -> \bar R}} ( : (set M)^nat)
( : forall , measurable (A i)) :
mu (A 0%N) \is a fin_num ->
mu (\bigcap_( < n.+1) A i) @[-->\oo] --> mu (\bigcap_ A n).
Proof.
rewrite [\bigcap_ A n] (_:_ = \bigcap_ (\bigcap_( < n.+1) A i)).
by rewrite eqEsubset/bigcap; split=> [a/= + j _ i _|a/= aIa i _];
[exact|exact: (aIa i.+1)].
apply: nonincreasing_cvg_measure.
- by rewrite bigcap_mkord big_ord1 -ge0_fin_numE.
- by move=> i; exact: bigcap_measurableType.
- by apply: bigcap_measurableType=> k _; exact: bigcap_measurableType.
- by move=> n m nm; apply/subsetPset=> x + i/= i_n; apply; exact: leq_trans nm.
Qed.
End measure_continuity.
#[deprecated(since="mathcomp-analysis 1.17.0", use=nondecreasing_cvg_measure)]
Notation
Source code
#[deprecated(since="mathcomp-analysis 1.17.0", use=nonincreasing_cvg_measure)]
Notation
Source code
Section g_sigma_algebra_measure_unique_trace.
Context ( : realType) ( : measurableType d).
Variables ( : set_system T) ( : set T) ( : measurable D).
Let := [set | G X /\ X `<=` D] .
Hypotheses ( : H `<=` measurable) (
Source code
Variables : {measure set T -> \bar R}.
Hypothesis
Source code
Hypotheses (
Source code
Source code
Lemma
Source code
(forall , (<<s D, H >>) X -> X `<=` D) -> forall , <<s D, H >> X ->
m1 X = m2 X.
Proof.
have HE : H `<=` E.
by move=> X HX; rewrite /E /=; split; [exact: Hm|exact: m1m2|case: HX].
have setDE : setSD_closed E.
move=> A B BA [mA m1m2A AD] [mB m1m2B BD]; split; first exact: measurableD.
- rewrite measureD//.
by rewrite (le_lt_trans _ m1oo)//; apply: le_measure => // /[!inE].
rewrite setIidr//= m1m2A m1m2B measureD// ?setIidr//.
by rewrite (le_lt_trans _ m1oo)//= -m1m2A; apply: le_measure => // /[!inE].
- by rewrite setDE; apply: subIset; left.
have ndE : ndseq_closed E.
move=> A ndA EA; split; have mA n : measurable (A n) by have [] := EA n.
- exact: bigcupT_measurable.
- transitivity (limn (m1 \o A)).
apply/esym/cvg_lim=>//.
exact/(nondecreasing_cvg_measure mA _ ndA)/bigcupT_measurable.
transitivity (limn (m2 \o A)).
by apply/congr_lim/funext => n; have [] := EA n.
apply/cvg_lim => //.
exact/(nondecreasing_cvg_measure mA _ ndA)/bigcupT_measurable.
- by apply: bigcup_sub => n; have [] := EA n.
have sDHE : <<s D, H >> `<=` E.
by apply: lambda_system_subset => //; split => //; [move=> ? []|split].
by move=> X /sDHE[].
Qed.
End g_sigma_algebra_measure_unique_trace.
Arguments g_sigma_algebra_measure_unique_trace {d R T} G D.
Definition
lim_sup_set : forall [T : Type], (set T) ^nat -> set T lim_sup_set is not universe polymorphic Arguments lim_sup_set [T]%_type_scope F _ lim_sup_set is transparent Expands to: Constant mathcomp.analysis.measure_theory.measure_function.lim_sup_set Declared in library mathcomp.analysis.measure_theory.measure_function, line 1802, characters 11-22
Source code
Section borel_cantelli_realFieldType.
Context {} { : measurableType d} { : realFieldType}
( : {measure set T -> \bar R}).
Implicit Types F : (set T)^nat.
Local Open Scope ereal_scope.
Lemma
Source code
mu (lim_sup_set F) <= mu (\bigcup_( >= n) F k).
Proof.
- by apply: bigcap_measurable => // k _; exact: bigcup_measurable.
- exact: bigcup_measurable.
- exact: bigcap_inf.
Qed.
Lemma
Source code
mu (\bigcup_( >= 0) F k) < +oo ->
mu (\bigcup_( >= n) F k) @[ --> \oo] --> mu (lim_sup_set F).
Proof.
- by move=> i; apply: bigcup_measurable => k /= _; exact: mF.
- apply: bigcap_measurable => // k _.
by apply: bigcup_measurable => j /= _; exact: mF.
- move=> m n mn; apply/subsetPset => t [k /= nk Akt].
by exists k => //=; rewrite (leq_trans mn).
Qed.
End borel_cantelli_realFieldType.
Arguments lim_sup_set_cvg {d T R} mu F.
Section borel_cantelli.
Context ( : measurableType d) { : realType} ( : {measure set T -> \bar R}).
Implicit Types F : (set T)^nat.
Local Open Scope ereal_scope.
Lemma
Source code
\sum_( <oo) mu (F n) < +oo -> mu (lim_sup_set F) = 0.
Proof.
have /cvg_lim <- // : (\sum_(i <= <oo) mu (F n))%E @[ --> \oo] --> 0%E.
exact: nneseries_tail_cvg.
apply: lime_ge; first by apply/cvg_ex; exists 0; exact: nneseries_tail_cvg.
apply: nearW => n; rewrite (le_trans (lim_sup_set_ub mu n mF))//.
by apply: measure_sigma_subadditive_tail => //;
[exact: bigcup_measurable|rewrite -setC_I].
Qed.
End borel_cantelli.
Section boole_inequality.
Context ( : realFieldType) ( : ringOfSetsType d).
Variable : {content set T -> \bar R}.
Theorem
Source code
(forall , (i < n)%N -> measurable (A i)) ->
(mu (\big[setU/set0]_( < n) A i) <= \sum_( < n) mu (A i))%E.
Proof.
End boole_inequality.
Notation
Source code
Section sigma_finite_lemma.
Context ( : ringOfSetsType d) ( : realFieldType) ( : set T)
( : {content set T -> \bar R}).
Lemma
Source code
exists , [/\ A = \bigcup_ F i,
nondecreasing_seq F & forall , measurable (F i) /\ mu (F i) < +oo]%E.
Proof.
exists (fun => \big[setU/set0]_( < n.+1) F i); split.
- rewrite AUF; apply/seteqP; split.
by apply: subset_bigcup => i _; exact: bigsetU_sup.
by apply: bigcup_sub => i _; exact: bigsetU_bigcup.
- by move=> i j ij; exact/subsetPset/subset_bigsetU.
- move=> i; split; first by apply: bigsetU_measurable => j _; exact: (mF j).1.
rewrite (le_lt_trans (Boole_inequality _ _))//.
by move=> j _; exact: (mF _).1.
by apply/lte_sum_pinfty => j _; exact: (mF j).2.
Qed.
End sigma_finite_lemma.
Section generalized_boole_inequality.
Context ( : ringOfSetsType d) ( : realType).
Variable : {measure set T -> \bar R}.
Theorem
Source code
(forall , measurable (A i)) -> measurable (\bigcup_ A n) ->
(mu (\bigcup_ A n) <= \sum_( <oo) mu (A i))%E.
Proof.
End generalized_boole_inequality.
Notation
Source code
Section g_sigma_algebra_measure_unique.
Context ( : realType) ( : measurableType d).
Variable : set_system T.
Hypothesis : G `<=` measurable.
Variable : (set T)^nat.
Hypotheses : forall , G (g i).
Hypothesis
Source code
Variables : {measure set T -> \bar R}.
Lemma
Source code
(forall , <<s G >> A -> m1 (g n `&` A) = m2 (g n `&` A)) ->
forall , <<s G >> A -> m1 A = m2 A.
Proof.
move=> sGm1m2; pose g' := \bigcup_( < k) g i.
have sGm := smallest_sub (@sigma_algebra_measurable _ T _ measurableT) Gm.
have Gg' i : <<s G >> (g' i).
apply: (@fin_bigcup_measurable _ GT) => //.
by move=> n _; apply: sub_sigma_algebra.
have sG'm1m2 n A : <<s G >> A -> m1 (g' n `&` A) = m2 (g' n `&` A).
move=> sGA; rewrite setI_bigcupl bigcup_mkord.
elim: n => [|n IHn] in A sGA *; rewrite (big_ord0, big_ord_recr) ?measure0//=.
have sGgA i : <<s G >> (g i `&` A).
by apply: (@measurableI _ GT) => //; exact: sub_sigma_algebra.
apply: eq_measureU; rewrite ?sGm1m2 ?IHn//; last first.
- by rewrite -big_distrl -setIA big_distrl/= IHn// setICA setIid.
- exact/sGm.
- by apply: bigsetU_measurable => i _; apply/sGm.
have g'_cover : \bigcup_ (g' k) = setT.
by rewrite -subTset -g_cover => x [k _ gx]; exists k.+1 => //; exists k => /=.
have nd_g' : nondecreasing_seq g'.
move=> m n lemn; rewrite subsetEset => x [k km gx]; exists k => //=.
exact: leq_trans lemn.
move=> A gA.
have -> : A = \bigcup_ (g' n `&` A) by rewrite -setI_bigcupl g'_cover setTI.
transitivity (lim (m1 (g' n `&` A) @[ --> \oo])).
apply/esym/cvg_lim => //; apply: nondecreasing_cvg_measure.
- by move=> n; apply: measurableI; exact/sGm.
- by apply: bigcupT_measurable => k; apply: measurableI; exact/sGm.
- by move=> ? ? ?; apply/subsetPset; apply: setSI; exact/subsetPset/nd_g'.
transitivity (lim (m2 (g' n `&` A) @[ --> \oo])).
by apply/congr_lim/funext => x; apply: sG'm1m2 => //; exact/sGm.
apply/cvg_lim => //; apply: nondecreasing_cvg_measure.
- by move=> k; apply: measurableI => //; exact/sGm.
- by apply: bigcupT_measurable => k; apply: measurableI; exact/sGm.
- by move=> a b ab; apply/subsetPset; apply: setSI; exact/subsetPset/nd_g'.
Qed.
Hypothesis
Source code
Hypothesis
Source code
Hypothesis
Source code
Lemma
Source code
Proof.
have G_E n : G_ n = [set g n `&` C | in G].
rewrite eqEsubset; split.
by move=> X [GX Xgn] /=; exists X => //; rewrite setIidr.
by rewrite /G_ => X [Y GY <-{X}]; split; [exact: setIG|apply: subIset; left].
have gIsGE n : [set g n `&` A | in <<s G >>] =
<<s g n, preimage_set_system (g n) id G >>.
rewrite g_sigma_preimageE eqEsubset; split.
by move=> _ /= [Y sGY <-]; exists Y => //; rewrite preimage_id setIC.
by move=> _ [Y mY <-] /=; exists Y => //; rewrite preimage_id setIC.
have preimg_gGE n : preimage_set_system (g n) id G = G_ n.
rewrite eqEsubset; split => [_ [Y GY <-]|].
by rewrite preimage_id G_E /=; exists Y => //; rewrite setIC.
by move=> X [GX Xgn]; exists X => //; rewrite preimage_id setIidr.
apply: g_sigma_algebra_measure_unique_cover => //.
move=> n A sGA; apply: (g_sigma_algebra_measure_unique_trace G (g n)) => //.
- exact: Gm.
- by move=> ? [? _]; exact/Gm.
- by move=> ? ? [? ?] [? ?]; split; [exact: setIG|apply: subIset; tauto].
- exact: m1m2.
- by move=> ? [? ?]; exact: m1m2.
- move=> X; rewrite -/(G_ n) -preimg_gGE -gIsGE.
by case=> B sGB <-{X}; apply: subIset; left.
- by rewrite -/(G_ n) -preimg_gGE -gIsGE; exists A.
Qed.
End g_sigma_algebra_measure_unique.
Arguments g_sigma_algebra_measure_unique {d R T} G.
Lemma
Source code
{ : realType} ( : set_system T) :
G `<=` d.-measurable ->
setI_closed G ->
forall : {finite_measure set T -> \bar R},
m1 [set: T] = m2 [set: T] ->
(forall : set T, G A -> m1 A = m2 A) ->
forall : set T, <<s G >> E -> m1 E = m2 E.
Proof.
apply: (@g_sigma_algebra_measure_unique _ _ _
(G `|` [set setT]) _ (fun=> setT)) => //.
- by move=> A [/Gm//|/= ->].
- by right.
- by rewrite bigcup_const.
- exact: setI_closed_setT.
- by move=> B [/m1m2|/= ->].
- by move=> n; apply: fin_num_fun_lty; exact: fin_num_measure.
- by move: E sGE; apply: smallest_sub => // C GC; apply: sub_gen_smallest; left.
Qed.
Section measure_unique.
Context ( : realType) ( : measurableType d).
Variables ( : set_system T) ( : (set T)^nat).
Hypotheses ( : measurable = <<s G >>) (
Source code
Hypothesis : forall , G (g i).
Hypothesis
Source code
Variables : {measure set T -> \bar R}.
Hypothesis
Source code
Hypothesis
Source code
Lemma
Source code
Proof.
by rewrite mG; exact: sub_sigma_algebra.
Qed.
End measure_unique.
Arguments measure_unique {d R T} G g.