Module mathcomp.analysis.measure_theory.measurable_structure
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 reals.
Unset SsrOldRewriteGoalsOrder.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Import ProperNotations.
Import Order.TTheory GRing.Theory Num.Theory.
Reserved Notation "'s<|' D , G '|>'" (at level 40, G, D at next level).
Reserved Notation "'s<<' A '>>'".
Reserved Notation "'d<<' D '>>'".
Reserved Notation "mu .-measurable" (format "mu .-measurable").
Reserved Notation "G .-sigma" (format "G .-sigma").
Reserved Notation "G .-sigma.-measurable" (format "G .-sigma.-measurable").
Reserved Notation "f .-preimage" (format "f .-preimage").
Reserved Notation "f .-preimage.-measurable" (format "f .-preimage.-measurable").
Reserved Notation "'<<l' D , G '>>'" (format "'<<l' D , G '>>'").
Reserved Notation "'<<l' G '>>'" (format "'<<l' G '>>'").
Reserved Notation "'<<d' G '>>'" (format "'<<d' G '>>'").
Reserved Notation "'<<s' D , G '>>'" (format "'<<s' D , G '>>'").
Reserved Notation "'<<s' G '>>'" (format "'<<s' G '>>'").
Reserved Notation "'<<r' G '>>'" (format "'<<r' G '>>'").
Reserved Notation "'<<sr' G '>>'" (format "'<<sr' G '>>'").
Reserved Notation "'<<M' G '>>'" (format "'<<M' G '>>'").
Reserved Notation "p .-prod" (format "p .-prod").
Reserved Notation "p .-prod.-measurable" (format "p .-prod.-measurable").
Inductive
Source code
Source code
Declare Scope measure_display_scope.
Delimit Scope measure_display_scope with mdisp.
Bind Scope measure_display_scope with measure_display.
Local Open Scope classical_set_scope.
Local Open Scope ring_scope.
Section set_systems.
Context {} ( : set_system T -> Prop) ( : set T) ( : set_system T).
Definition
Source code
Definition
setC_closed : forall {T : Type}, set_system T -> Prop setC_closed is not universe polymorphic Arguments setC_closed {T}%_type_scope G setC_closed is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.setC_closed Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 158, characters 11-22
Source code
Definition
setSD_closed : forall {T : Type}, set_system T -> Prop setSD_closed is not universe polymorphic Arguments setSD_closed {T}%_type_scope G setSD_closed is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.setSD_closed Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 159, characters 11-23
Source code
Definition
setD_closed : forall {T : Type}, set_system T -> Prop setD_closed is not universe polymorphic Arguments setD_closed {T}%_type_scope G setD_closed is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.setD_closed Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 160, characters 11-22
Source code
Definition
setY_closed : forall {T : Type}, set_system T -> Prop setY_closed is not universe polymorphic Arguments setY_closed {T}%_type_scope G setY_closed is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.setY_closed Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 161, characters 11-22
Source code
forall ( : set I) , finite_set D -> (forall , D i -> G (A_ i)) ->
G (\bigcap_( in D) (A_ i)).
Definition
fin_bigcap_closed : forall {T : Type}, set_system T -> Prop fin_bigcap_closed is not universe polymorphic Arguments fin_bigcap_closed {T}%_type_scope G fin_bigcap_closed is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.fin_bigcap_closed Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 163, characters 11-28
Source code
forall ( : set I) , finite_set D -> D !=set0 ->
(forall , D i -> G (A_ i)) ->
G (\bigcap_( in D) (A_ i)).
Definition
finN0_bigcap_closed : forall {T : Type}, set_system T -> Prop finN0_bigcap_closed is not universe polymorphic Arguments finN0_bigcap_closed {T}%_type_scope G finN0_bigcap_closed is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.finN0_bigcap_closed Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 167, characters 11-30
Source code
forall ( : set I) , finite_set D -> (forall , D i -> G (A_ i)) ->
G (\bigcup_( in D) (A_ i)).
Definition
fin_bigcup_closed : forall {T : Type}, set_system T -> Prop fin_bigcup_closed is not universe polymorphic Arguments fin_bigcup_closed {T}%_type_scope G fin_bigcup_closed is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.fin_bigcup_closed Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 172, characters 11-28
Source code
[/\ finite_set D, D `<=` G, A `\` B = \bigcup_( in D) X & trivIset D id].
Lemma
Source code
Proof.
by move=> X ->; apply: mD.
by move=> X Y -> ->.
Qed.
Definition
semi_setD_closed : forall {T : Type}, set_system T -> Prop semi_setD_closed is not universe polymorphic Arguments semi_setD_closed {T}%_type_scope G semi_setD_closed is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.semi_setD_closed Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 176, characters 11-27
Source code
forall , nondecreasing_seq F -> (forall , G (F i)) -> G (\bigcup_ (F i)).
Definition
ndseq_closed : forall {T : Type}, set_system T -> Prop ndseq_closed is not universe polymorphic Arguments ndseq_closed {T}%_type_scope G ndseq_closed is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.ndseq_closed Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 186, characters 11-23
Source code
forall , nonincreasing_seq F -> (forall , G (F i)) -> G (\bigcap_ (F i)).
Definition
niseq_closed : forall {T : Type}, set_system T -> Prop niseq_closed is not universe polymorphic Arguments niseq_closed {T}%_type_scope G niseq_closed is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.niseq_closed Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 189, characters 11-23
Source code
forall : (set T)^nat, trivIset setT F -> (forall , G (F n)) ->
G (\bigcup_ F k).
Definition
trivIset_closed : forall {T : Type}, set_system T -> Prop trivIset_closed is not universe polymorphic Arguments trivIset_closed {T}%_type_scope G trivIset_closed is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.trivIset_closed Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 192, characters 11-26
Source code
forall ( : set I) ( : I -> set T), finite_set D -> trivIset D F ->
(forall , D i -> G (F i)) -> G (\bigcup_( in D) F k).
Definition
fin_trivIset_closed : forall {T : Type}, set_system T -> Prop fin_trivIset_closed is not universe polymorphic Arguments fin_trivIset_closed {T}%_type_scope G fin_trivIset_closed is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.fin_trivIset_closed Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 196, characters 11-30
Source code
Definition
setring : forall {T : Type}, set_system T -> Prop setring is not universe polymorphic Arguments setring {T}%_type_scope G setring is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.setring Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 200, characters 11-18
Source code
(forall : (set T)^nat, (forall , G (A n)) -> G (\bigcup_ A k))].
Definition
sigma_ring : forall {T : Type}, set_system T -> Prop sigma_ring is not universe polymorphic Arguments sigma_ring {T}%_type_scope G sigma_ring is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.sigma_ring Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 202, characters 11-21
Source code
[/\ G set0, (forall , G A -> G (D `\` A)) &
(forall : (set T)^nat, (forall , G (A n)) -> G (\bigcup_ A k))].
Definition
sigma_algebra : forall {T : Type}, set T -> set_system T -> Prop sigma_algebra is not universe polymorphic Arguments sigma_algebra {T}%_type_scope D%_classical_set_scope G sigma_algebra is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.sigma_algebra Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 205, characters 11-24
Source code
dynkin : forall {T : Type}, set_system T -> Prop dynkin is not universe polymorphic Arguments dynkin {T}%_type_scope G dynkin is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.dynkin Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 209, characters 11-17
Source code
[/\ forall , G A -> A `<=` D, G D, setSD_closed & ndseq_closed].
Definition
lambda_system : forall {T : Type}, set T -> set_system T -> Prop lambda_system is not universe polymorphic Arguments lambda_system {T}%_type_scope D%_classical_set_scope G lambda_system is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.lambda_system Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 214, characters 11-24
Source code
End set_systems.
#[deprecated(since="mathcomp-analysis 1.9.0", note="renamed `setD_closed`")]
Notation
Source code
#[deprecated(since="mathcomp-analysis 1.9.0", note="renamed `setD_semi_setD_closed`")]
Notation
Source code
Lemma
Source code
sigma_ring [set | X `<=` D].
Proof.
by move=> F FA/=; apply: bigcup_sub => i _; exact: FA.
by move=> U V + VA; apply: subset_trans; exact: subDsetl.
Qed.
Lemma
Source code
lambda_system D [set | X `<=` D].
Proof.
- by move=> A B BA + BD; apply: subset_trans; exact: subDsetl.
- by move=> /= F _ FD; exact: bigcup_sub.
Qed.
Notation
Source code
classical_set_scope.
Notation
Source code
Notation
Source code
Notation
Source code
classical_set_scope.
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Section lambda_system_smallest.
Variables ( : Type) ( : set T) ( : set_system T).
Hypothesis : forall , G A -> A `<=` D.
Lemma
Source code
Proof.
- have monoH := powerset_lambda_system D.
by case: (monoH) => + _ _ _; apply; exact: MA.
- by case: monoE.
- by apply setDE => //; [exact: MA|exact: MB].
- by move=> F ndF MF E [[EsubD ED setDE ndE] CE]; apply ndE=> // n; exact: MF.
Qed.
End lambda_system_smallest.
Lemma
Source code
(G set0 /\ setU_closed G) <-> fin_bigcup_closed G.
Proof.
have G0 : G set0 by have := GU void set0 point; rewrite bigcup0//; apply.
by split=> // A B GA GB; rewrite -bigcup2inE; apply: GU => // -[|[|[]]].
elim/Pchoice: I => I in D DF A GA *; rewrite -bigsetU_fset_set// big_seq.
by elim/big_ind: _ => // i; rewrite in_fset_set// inE => /GA.
Qed.
Lemma
Source code
setI_closed G <-> finN0_bigcap_closed G.
Proof.
by rewrite -bigcap2inE; apply: GI => // [|[|[|[]]]]; first by exists 0%N.
elim/Pchoice: I => I in D DF i Di A GA *.
have finDDi : finite_set (D `\ i) by exact: finite_setD.
rewrite (bigcap_setD1 i)// -bigsetI_fset_set// big_seq.
elim/big_rec: _ => // [|j B]; first by rewrite setIT; apply: GA.
rewrite in_fset_set// inE => -[Dj /eqP nij] GAB.
by rewrite setICA; apply: GI => //; apply: GA.
Qed.
Lemma
Source code
setD_closed G <-> (setI_closed G /\ setSD_closed G).
Proof.
Notation
Source code
Lemma
Source code
( : I -> set_system T) ( : set I) :
(forall , J n -> sigma_algebra D (F n)) ->
sigma_algebra D (\bigcap_( in J) F i).
Proof.
- by have [_ mGiC _] := mG i Ji; exact/mGiC/AJ.
- by have [_ _ mGiU] := mG i Ji; apply: mGiU => j; exact: GH.
Qed.
Lemma
Source code
(forall , C X -> X `<=` U) ->
sigma_algebra U C <->
[/\ C U, setSD_closed C, ndseq_closed C & setI_closed C].
Proof.
- by rewrite -(setD0 U); apply: CD.
- move=> A B BA CA CB; rewrite (_ : A `\` B = U `\` ((U `\` A) `|` B)); last first.
by apply CD; rewrite -bigcup2E; apply: CU => -[|[|[|]]] //=; exact: CD.
rewrite setDUr setDD [in RHS]setDE setIACA setIid -setDE setIidr//.
by rewrite setDE; apply: subIset; left; apply: C_subU.
- by move=> F ndF DF; exact: CU.
- move=> A B DA DB; rewrite (_ : A `&` B = U `\` ((U `\` A) `|` (U `\` B))); last first.
by apply CD; rewrite -bigcup2E; apply: CU => -[|[|[|]]] //; exact: CD.
rewrite setDUr !setDD setIACA setIid (@setIidr _ U)//.
by apply: subIset; left; exact: C_subU.
- by rewrite -(setDv U); exact: DC.
- by move=> A CA; apply: DC => //; exact: C_subU.
- move=> F DF.
rewrite [X in C X](_ : _ = \bigcup_ \big[setU/set0]_( < i.+1) F j).
rewrite predeqE => x; split => [[n _ Fnx]|[n _]].
by exists n => //; rewrite big_ord_recr /=; right.
by rewrite -bigcup_mkord => -[m /=]; rewrite ltnS => _ Fmx; exists m.
apply: DU; first by move=> *; exact/subsetPset/subset_bigsetU.
elim=> [|n ih]; first by rewrite big_ord_recr /= big_ord0 set0U; exact: DF.
have CU : setU_closed C.
move=> A B DA DB; rewrite (_ : A `|` B = U `\` ((U `\` A) `&` (U `\` B))).
by rewrite setDIr// !setDD (setIidr (C_subU _ DA)) (setIidr (C_subU _ _)).
apply DC => //; last by apply: DI; apply: DC => //; exact: C_subU.
by apply: subIset; left; apply: subIset; left.
by rewrite big_ord_recr; exact: CU.
Qed.
Section generated_sigma_algebra.
Context { : Type} ( : set T) ( : set_system T).
Implicit Type M : set_system T.
Lemma
Source code
Proof.
by apply: (PD); apply: GA.
by apply: (PU) => n; apply: GA.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
(forall , <<s D, G >> (A i)) -> <<s D, G >> (\bigcup_ (A i)).
Proof.
End generated_sigma_algebra.
#[global] Hint Resolve smallest_sigma_algebra : core.
Section generated_setring.
Context { : Type} ( : set_system T).
Implicit Type M : set_system T.
Lemma
Source code
Proof.
by apply: (PU); [apply: GA|apply: GB].
by apply: (PDI); [apply: GA|apply: GB].
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
End generated_setring.
#[global] Hint Resolve smallest_setring setring0 : core.
#[deprecated(since="mathcomp-analysis 1.9.0", note="renamed `setringD`")]
Notation
Source code
Lemma
Source code
(forall , <<s D, G >> X -> X `<=` D) ->
lambda_system D <<s D, G >>.
Proof.
by move=> /(sigma_algebraP sDGD) [sT sD snd sI]; split.
Qed.
Lemma
Source code
Proof.
- by apply: (CDI); [exact: GA|exact: GB].
- by apply: (CU) => n; exact: GA.
Qed.
Source code
Proof.
rewrite -(@setD_bigcup _ _ F _ O)//; apply: (GDI); first exact: GF.
by rewrite bigcup_mkcond; apply: GU => n; case: ifPn => // _; exact: GDI.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Source code
setring G -> monotone G -> sigma_ring G.
Proof.
rewrite -bigcup_bigsetU_bigcup; apply: ndG.
by move=> *; exact/subsetPset/subset_bigsetU.
by elim=> [|n ih]; rewrite big_ord_recr/= ?big_ord0 ?set0U//; exact: GU.
Qed.
Lemma
Source code
Proof.
have {}GC : <<M G >> `<=` C by exact: smallest_sub.
- by apply: (ndC) => // i; apply: (GC); exact: GF.
- by apply: (niC) => // i; apply: (GC); exact: GF.
Qed.
Section g_monotone_g_sigma_ring.
Variables ( : Type) ( : set_system T).
Hypothesis
Source code
Source code
Proof.
pose K := [set | [/\ M (E `\` F), M (F `\` E) & M (E `|` F)] ].
have KP E F : K(F) E -> K(E) F by move=> [] *; split; rewrite 1?setUC.
have K_monotone F : monotone (K(F)).
split.
move=> /= H ndH KFH; split.
- rewrite setD_bigcupl; apply: (g_monotone_monotone G).1.
by move=> m n mn; apply/subsetPset; apply: setSD; exact/subsetPset/ndH.
by move=> i; have [] := KFH i.
- rewrite setDE setC_bigcup -bigcapIr//; apply: (g_monotone_monotone G).2.
move=> m n mn; apply/subsetPset.
by apply: setDS; exact/subsetPset/ndH.
by move=> i; have [] := KFH i.
- rewrite -bigcupUl//; apply: (g_monotone_monotone G).1.
move=> m n mn; apply/subsetPset.
by apply: setSU; exact/subsetPset/ndH.
by move=> i; have [] := KFH i.
move=> /= H niH KFH; split.
- rewrite setDE -bigcapIl//; apply: (g_monotone_monotone G).2.
move=> m n mn; apply/subsetPset; apply: setSI; exact/subsetPset/niH.
by move=> i; have [] := KFH i.
- rewrite setDE setC_bigcap setI_bigcupr; apply: (g_monotone_monotone G).1.
move=> m n mn; apply/subsetPset.
by apply: setIS; apply: subsetC; exact/subsetPset/niH.
by move=> i; have [] := KFH i.
- rewrite setU_bigcapl//; apply: (g_monotone_monotone G).2.
move=> m n mn; apply/subsetPset.
by apply: setSU; exact/subsetPset/niH.
by move=> i; have [] := KFH i.
have G_KF F : G F -> G `<=` K(F).
case: ringG => _ GU GDI GF A GA; split.
- by apply: sub_gen_smallest; exact: GDI.
- by apply: sub_gen_smallest; exact: GDI.
- by apply: sub_gen_smallest; exact: GU.
have GM_KF F : G F -> M `<=` K(F).
by move=> GF; apply: smallest_sub => //; exact: G_KF.
have MG_KF F : M F -> G `<=` K(F).
by move=> MF A GA; rewrite /K/=; split; have /KP[] := GM_KF _ GA _ MF.
have MM_KF F : M F -> M `<=` K(F).
by move=> MF; apply: smallest_sub => //; exact: MG_KF.
split.
- by apply: sub_gen_smallest; case: ringG.
- by move=> A B GA GB; have [] := MM_KF _ GB _ GA.
- by move=> A B GA GB; have [] := MM_KF _ GB _ GA.
Qed.
Lemma
Source code
Proof.
by apply: smallest_sub; [exact: g_sigma_ring_monotone|
exact: sub_g_sigma_ring].
apply: smallest_sub; last exact: sub_smallest.
apply: setring_monotone_sigma_ring; last exact: g_monotone_monotone.
exact: g_monotone_setring.
Qed.
End g_monotone_g_sigma_ring.
Corollary
Source code
setring R -> R `<=` G -> <<sr R>> `<=` G.
Proof.
Section smallest_lambda_system.
Variables ( : Type) ( : set_system T) (
Source code
Hypothesis
Source code
Lemma
Source code
<<l D, G >> = <<s D, G >>.
Proof.
apply: smallest_sub; first exact: g_sigma_algebra_lambda_system.
exact: sub_sigma_algebra.
suff: setI_closed <<l D, G >>.
move=> IH; apply: smallest_sub => //.
by apply/sigma_algebraP; case: lambdaDG.
pose H := <<l D, G >>.
pose H_ := [set | H X /\ H (X `&` A)].
have setDH_ A : setSD_closed (H_ A).
move=> X Y XY [HX HXA] [HY HYA]; case: lambdaDG => h _ setDH _; split.
exact: setDH.
rewrite (_ : _ `&` _ = (X `&` A) `\` (Y `&` A)).
rewrite predeqE => x; split=> [[[? ?] ?]|]; first by split => // -[].
by move=> [[? ?] YAx]; split => //; split => //; apply: contra_not YAx.
by apply: setDH => //; exact: setSI.
have ndH_ A : ndseq_closed (H_ A).
move=> F ndF H_AF; split.
by case: lambdaDG => h _ _; apply => // => n; have [] := H_AF n.
rewrite setI_bigcupl; case: lambdaDG => h _ _; apply => //.
by move=> m n mn; apply/subsetPset; apply: setSI; apply/subsetPset/ndF.
by move=> n; have [] := H_AF n.
have GGH_ X : G X -> G `<=` H_ X.
move=> GX; rewrite /H_ => A GA; split; first exact: sub_smallest GA.
by apply: (@sub_smallest _ _ _ G) => //; exact: setIG.
have HD X : H X -> X `<=` D by move=> ?; case: lambdaDG => + _ _ _; apply.
have GHH_ X : G X -> H `<=` H_ X.
move=> GX; apply: smallest_sub; last exact: GGH_.
split => //; first by move=> A [HA _]; case: lambdaDG => + _ _ _; exact.
have XD : X `<=` D by apply: HD; exact: (@sub_smallest _ _ _ G).
rewrite /H_ /= setIidr//; split; [by case: lambdaDG|].
exact: (@sub_smallest _ _ _ G).
have HGH_ X : H X -> G `<=` H_ X.
move=> *; split; [|by rewrite setIC; apply GHH_].
exact: (@sub_smallest _ _ _ G).
have HHH_ X : H X -> H `<=` H_ X.
move=> HX; apply: smallest_sub; last exact: HGH_.
split=> //.
- by move=> ? [? ?]; case: lambdaDG => + _ _ _; exact.
- have XD : X `<=` D := HD _ HX.
by rewrite /H_/= setIidr//; split => //; case: lambdaDG.
by move=> *; apply HHH_.
Qed.
End smallest_lambda_system.
Section lambda_system_subset.
Variables ( : Type) ( : set_system T) (
Source code
Variables ( : set_system T) ( : lambda_system D H) ( : G `<=` H).
Source code
<<s D, G >> `<=` H.
Proof.
rewrite -(@smallest_lambda_system _ _ setIG D) //; last exact: smallest_sub.
apply: lambda_system_smallest => A GA.
by apply: sDGD; exact: sub_sigma_algebra.
Qed.
End lambda_system_subset.
Section dynkin.
Variable : Type.
Implicit Types G D : set_system T.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
(forall , G (F n)) -> G (\bigcup_ F k))
Proof.
End dynkin.
Section dynkin_lemmas.
Variable : Type.
Implicit Types D G : set_system T.
Lemma
Source code
Proof.
- move=> A B BA GA GB; rewrite setDE -(setCK (_ `&` _)) setCI; apply: (setCG).
rewrite setCK -bigcup2E; apply trG.
+ by rewrite -trivIset_bigcup2 setIC; apply subsets_disjoint.
+ by move=> [|[//|n]]; [exact: setCG|rewrite /bigcup2 -setCT; apply: setCG].
- move=> F ndF GF; rewrite -eq_bigcup_seqD; apply: (trG).
exact: trivIset_seqD.
move=> [/=|n]; first exact: GF.
rewrite /seqD setDE -(setCK (_ `&` _)) setCI; apply: (setCG).
rewrite setCK -bigcup2E; apply: trG.
+ rewrite -trivIset_bigcup2 setIC; apply subsets_disjoint.
exact/subsetPset/ndF/ltnW.
+ move=> [|[|]]; rewrite /bigcup2 /=; [exact/setCG/GF|exact/GF|].
by move=> _; rewrite -setCT; apply: setCG.
- by move=> A B; rewrite -setTD; apply: setDG.
- move=> F tF GF; pose A := \big[setU/set0]_( < i.+1) F k.
rewrite -bigcup_bigsetU_bigcup.
apply: ndG; first by move=> a b ab; exact/subsetPset/subset_bigsetU.
elim=> /= => [|n ih].
by rewrite /A big_ord_recr /= big_ord0 set0U; exact: GF.
rewrite /A /= big_ord_recr /= -/(A n).
rewrite (_ : _ `|` _ = ~` (~` A n `\` F n.+1)).
by rewrite setDE setCI !setCK.
rewrite -setTD; apply: (setDG) => //; apply: (setDG) => //; last first.
by rewrite -setTD; apply: setDG.
apply/disjoints_subset; rewrite setIC.
by apply: (@trivIset_bigsetUI _ predT) => //; rewrite /predT /= trueE.
Qed.
Lemma
Source code
Proof.
- by move=> Y sGY D /= [dD GD]; exact/(dynkinC dD)/(sGY D).
- by move=> F tF gGF D /= [dD GD]; apply dD => // k; exact: gGF.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
sigma_algebra setT G.
Proof.
- by rewrite -setCT; exact/(dynkinC dG)/(dynkinT dG).
- by move=> A GA; rewrite setTD; exact: (dynkinC dG).
- rewrite seqDU_bigcup_eq; apply/(dynkinU dG) => //.
move=> n; rewrite /seqDU setDE; apply GI => //.
rewrite -bigcup_mkord setC_bigcup bigcap_mkord.
apply: big_ind => //; first by case: dG.
by move=> i _; exact/(dynkinC dG).
Qed.
Lemma
Source code
setI_closed G -> <<d G >> = <<s G >>.
Proof.
by apply: sub_smallest2l; exact: sigma_algebra_dynkin.
pose delta ( : set T) := [set | <<d G >> (E `&` D)].
have ddelta ( : set T) : <<d G >> D -> dynkin (delta D).
move=> dGD; split; first by rewrite /delta /= setTI.
- move=> E DE; rewrite /delta /=.
have -> : (~` E) `&` D = ~` ((E `&` D) `|` (~` D)).
by rewrite -[LHS]setU0 -(setICl D) -setIUl -setCI -{2}(setCK D) -setCU.
have : <<d G >> ((E `&` D) `|` ~` D).
rewrite -bigcup2E => S [dS GS]; apply: (dynkinU dS).
move=> [|[|i]] [|[|j]] => // _ _; rewrite /bigcup2 /=.
+ by rewrite -setIA setICr setI0 => /set0P; rewrite eqxx.
+ by rewrite setI0 => /set0P; rewrite eqxx.
+ by rewrite setICA setICl setI0 => /set0P; rewrite eqxx.
+ by rewrite setI0 => /set0P; rewrite eqxx.
+ by rewrite set0I => /set0P; rewrite eqxx.
+ by rewrite set0I => /set0P; rewrite eqxx.
+ by rewrite set0I => /set0P; rewrite eqxx.
move=> [|[|n]] //; rewrite /bigcup2 /=; [exact: DE| |].
+ suff: <<d G >> (~` D) by exact.
by move=> F [dF GF]; apply: (dynkinC dF) => //; exact: dGD.
+ by rewrite -setCT; apply/(dynkinC dS)/(dynkinT dS).
by move=> dGEDD S /= [+ GS] => dS; apply/(dynkinC dS); exact: dGEDD.
- move=> F tF deltaDF; rewrite /delta /= => S /= [dS GS].
rewrite setI_bigcupl; apply: (dynkinU dS) => //.
by under eq_fun do rewrite setIC; exact: trivIset_setIl.
by move=> n; exact: deltaDF.
have GdG : G `<=` <<d G >> by move=> ? ? ? [_]; apply.
have Gdelta A : G A -> G `<=` delta A.
by move=> ? ? ?; rewrite /delta /= => ? [?]; apply; exact/GI.
have GdGdelta A : G A -> <<d G >> `<=` delta A.
move=> ?; apply: smallest_sub => //; last exact: Gdelta.
by apply/ddelta; exact: GdG.
have dGGI A B : <<d G >> A -> G B -> <<d G >> (A `&` B).
by move=> ? ?; apply: GdGdelta.
have dGGdelta A : <<d G >> A -> G `<=` delta A.
by move=> ? ? ?; rewrite /delta /= setIC; exact: dGGI.
have dGdGdelta A : <<d G >> A -> <<d G >> `<=` delta A.
by move=> ?; exact: smallest_sub (ddelta _ _) (dGGdelta _ _).
have dGdGdG A B : <<d G >> A -> <<d G >> B -> <<d G >> (A `&` B).
by move=> ? ?; exact: dGdGdelta.
apply: smallest_sub => //; apply: dynkin_setI_sigma_algebra => //.
exact: g_dynkin_dynkin.
Qed.
End dynkin_lemmas.
Section trace.
Variable ( : Type).
Implicit Types (G : set_system T) (A D : set T).
Definition
monotone : forall {T : Type}, set_system T -> Prop monotone is not universe polymorphic Arguments monotone {T}%_type_scope G monotone is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.monotone Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 217, characters 11-19
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
by move=> X [A0 GA0 <-]; exact: subIsetr.
Qed.
Lemma
Source code
Proof.
- by exists set0; rewrite ?set0I//; have [] := smallest_sigma_ring G.
- move=> _ _ [A0 GA0] <- [A1 GA1] <-.
exists (A0 `\` A1); first by have [_ + _] := smallest_sigma_ring G; exact.
by rewrite -setIDA setDIr setDv setU0 setIDAC setIDA.
- move=> F GAF.
pose f := sval (cid2 (GAF n)).
pose Hf := (svalP (cid2 (GAF n))).1.
pose H := (svalP (cid2 (GAF n))).2.
exists (\bigcup_ f k).
by have [_ _] := smallest_sigma_ring G; apply => n; exact: Hf.
by rewrite setI_bigcupl; apply: eq_bigcupr => i _; exact: H.
Qed.
Source code
Proof.
have D_sigma_ring : sigma_ring D.
split.
- exists set0; first by have [] := smallest_sigma_ring (strace G A).
exists set0; first by have [] := smallest_sigma_ring G.
by rewrite set0D setU0.
- move=> _ _ [B0 GAB0] [C0 GC0] <- [B1 GAB1] [C1 GC1] <-.
exists (B0 `\` B1).
by have [_ + _] := smallest_sigma_ring (strace G A); exact.
exists (C0 `\` C1); first by have [_ + _] := smallest_sigma_ring G; exact.
apply/esym; rewrite setDUD.
transitivity (((B0 `\` B1) `&` (B0 `\` (C1 `\` A))) `|`
((C0 `\` (A `|` B1)) `&` (C0 `\` C1))).
congr setU; first by rewrite setDUr.
apply/seteqP; split => [x [[C0x Ax]]|x].
move=> /not_orP[B1x /not_andP[C1x|//]].
by split=> //; split => // -[].
move=> [[C0x /not_orP[Ax B1x] [_ C1x]]].
by split=> // -[//|[]].
transitivity (((B0 `\` B1) `&` B0) `|`
((C0 `\` A ) `&` (C0 `\` C1))).
apply/seteqP; split => [x [[[B0x B1x] [_ /not_andP[C1x|]]]|
[[C0x /not_orP[Ax B1x]] [_ C1x]]]|
x [[[B0x B1x] _]|[[C0x Ax] [_ C1x]]]].
+ by left; split.
+ by move=> /contrapT Ax; left.
+ by right; split.
+ left; split => //; split => // -[] _; apply.
exact: (g_sigma_ring_strace GAB0).
+ right; split => //; split => // -[//|B1x]; apply: Ax.
exact: (g_sigma_ring_strace GAB1).
+ congr setU; first by rewrite setDE setIAC setIid.
by rewrite setDDl setDUr setIC.
- move=> F DF.
pose f := sval (cid2 (DF n)).
pose Hf := (svalP (cid2 (DF n))).1.
pose g := sval (cid2 (svalP (cid2 (DF n))).2).
pose Hg := (svalP (cid2 (svalP (cid2 (DF n))).2)).1.
exists (\bigcup_ f n).
have [_ _] := smallest_sigma_ring (strace G A).
by apply => n; exact: Hf.
exists (\bigcup_ g n).
have [_ _] := smallest_sigma_ring G.
by apply => n; exact: Hg.
pose H := (svalP (cid2 (svalP (cid2 (DF n))).2)).2.
by rewrite setD_bigcupl -bigcupU; apply: eq_bigcupr => k _; exact: H.
apply/seteqP; split => [|].
have GD : G `<=` D.
move=> E GE; exists (E `&` A).
by apply: sub_g_sigma_ring; exists E.
by exists E; [exact: sub_g_sigma_ring|exact: setUIDK].
have {}GD : <<sr G >> `<=` D by exact: smallest_sub GD.
have GDA : strace <<sr G >> A `<=` strace D A by exact: subset_strace.
suff: strace D A = <<sr strace G A >> by move=> <-.
apply/seteqP; split.
move=> _ [_ [gA HgA [g Hg] <-] <-].
by rewrite setIUl setDKI setU0 setIidl//; exact: (g_sigma_ring_strace HgA).
move=> X HX; exists X.
exists X => //; exists set0; rewrite ?set0D ?setU0//.
by have [] := smallest_sigma_ring G.
by rewrite setIidl//; exact: (g_sigma_ring_strace HX).
have : strace G A `<=` strace <<sr G>> A.
by move=> X [Y GY <-]; exists Y => //; exact: sub_smallest GY.
by apply: smallest_sub; exact: strace_sigma_ring.
Qed.
Lemma
Source code
sigma_algebra setT G -> sigma_algebra D (strace G D).
Proof.
- move=> S [A mA ADS]; have mCA := GC _ mA.
have : strace G D (D `&` ~` A).
by rewrite setIC; exists (setT `\` A) => //; rewrite setTD.
rewrite -setDE => trDA.
have DADS : D `\` A = D `\` S by rewrite -ADS !setDE setCI setIUr setICr setU0.
by rewrite DADS in trDA.
- move=> S mS; have /choice[M GM] : forall , exists , G A /\ S n = A `&` D.
by move=> n; have [A mA ADSn] := mS n; exists A.
exists (\bigcup_ (M i)); first by apply GU => i; exact: (GM i).1.
by rewrite setI_bigcupl; apply eq_bigcupr => i _; rewrite (GM i).2.
Qed.
End trace.
.
Source code
Source code
Source code
Source code
measurable : set_system T ;
measurable0 : measurable set0 ;
measurableI : setI_closed measurable;
semi_measurableD : semi_setD_closed measurable;
}.
Source code
Source code
Source code
.
Source code
Source code
Source code
{ of Choice T & isSemiRingOfSets d T}.
Arguments measurable {d}%_measure_display_scope {s} _%_classical_set_scope.
Lemma
Source code
( : T1 * T2 -> set T) ( : T1 * T2) :
measurable (G x) <-> measurable (curry G x.1 x.2).
Proof.
Notation
Source code
Notation
Source code
(@measurable default_measure_display) : classical_set_scope.
.
Source code
Source code
Source code
Source code
measurableU : @setU_closed T measurable
}.
Source code
Source code
Source code
.
Source code
Source code
Source code
{ of SemiRingOfSets d T & SemiRingOfSets_isRingOfSets d T }.
.
Source code
Source code
Source code
Source code
measurableT : measurable [set: T]
}.
Source code
Source code
Source code
.
Source code
Source code
Source code
{ of RingOfSets d T & RingOfSets_isAlgebraOfSets d T }.
.
Source code
Source code
Source code
Source code
bigcupT_measurable : forall : (set T)^nat, (forall , measurable (F i)) ->
measurable (\bigcup_ (F i))
}.
.
Source code
Source code
Source code
Let : @setU_closed T measurable.
Proof.
by apply: bigcupT_measurable => -[//|[//|/= _]]; exact: measurable0.
Qed.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
{ of SemiRingOfSets d T & hasMeasurableCountableUnion d T}.
.
Source code
Source code
Source code
Source code
measurable : set_system T ;
measurable0 : measurable set0 ;
measurableD : setD_closed measurable ;
bigcupT_measurable : forall : (set T)^nat, (forall , measurable (F i)) ->
measurable (\bigcup_ (F i))
}.
.
Source code
Source code
Source code
Let : measurable set0
Proof.
Let : setI_closed measurable.
Proof.
Let : semi_setD_closed measurable.
Proof.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
{ of AlgebraOfSets d T & hasMeasurableCountableUnion d T }.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Source code
measurable : set_system T ;
measurable0 : measurable set0 ;
measurableU : setU_closed measurable;
measurableD : setD_closed measurable;
}.
.
Source code
Source code
Source code
Implicit Types (A B C D : set T).
Lemma : setI_closed measurable.
Proof.
Lemma : semi_setD_closed measurable.
Proof.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
& Choice T := {
measurable : set_system T ;
measurable_nonempty : measurable !=set0 ;
measurable_setY : setY_closed measurable ;
measurable_setI : setI_closed measurable }.
.
Source code
Source code
Source code
Let : measurable set0.
Proof.
Let : setU_closed measurable.
Proof.
by apply: measurable_setY; [exact: measurable_setY|exact: measurable_setI].
Qed.
Let : setD_closed measurable.
Proof.
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
measurable : set_system T ;
measurable0 : measurable set0 ;
measurableU : setU_closed measurable;
measurableC : setC_closed measurable
}.
.
Source code
Source code
Source code
Lemma : setD_closed measurable.
Proof.
by do ?[apply: measurableU | apply: measurableC].
Qed.
.
Source code
Source code
Source code
Source code
measurable measurable0 measurableU mD.
Lemma
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
measurable : set_system T ;
measurableT : measurable [set: T] ;
measurableD : setD_closed measurable
}.
.
Source code
Source code
Source code
Let : measurable set0.
Proof.
Let : setU_closed measurable.
Proof.
rewrite -(setCK A) -setCD -!setTD; apply: measurableD; first exact: measurableT.
by do 2 apply: measurableD => //; exact: measurableT.
Qed.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
measurable : set_system T ;
measurable0 : measurable set0 ;
measurableC : forall , measurable A -> measurable (~` A) ;
measurable_bigcup : forall : (set T)^nat, (forall , measurable (F i)) ->
measurable (\bigcup_ (F i))
}.
.
Source code
Source code
Source code
Obligation Tactic := idtac.
Lemma : setU_closed measurable.
Proof.
by apply: measurable_bigcup => -[//|[//|i]]; exact: measurable0.
Qed.
Lemma : setC_closed measurable
Proof.
.
Source code
Source code
Source code
measurable measurable0 mU mC.
.
Source code
Source code
Source code
.
Source code
#[global] Hint Extern 0 (measurable set0) => solve [apply: measurable0] : core.
#[global] Hint Extern 0 (measurable setT) => solve [apply: measurableT] : core.
Section ringofsets_lemmas.
Context ( : ringOfSetsType d).
Implicit Types A B : set T.
Lemma
Source code
(forall , P i -> measurable (F i)) ->
measurable (\big[setU/set0]_( <- r | P i) F i).
Proof.
Lemma
Source code
finite_set D ->
(forall , D i -> measurable (F i)) ->
measurable (\bigcup_( in D) F i).
Proof.
rewrite -bigsetU_fset_set// big_seq; apply: bigsetU_measurable => i.
by rewrite in_fset_set ?inE// => *; apply: Fm.
Qed.
Lemma
Source code
Proof.
by apply: fin_bigcup_measurable.
Qed.
Lemma
Source code
(forall , measurable (F n)) -> forall , measurable (seqDU F n).
Proof.
End ringofsets_lemmas.
Section algebraofsets_lemmas.
Context ( : algebraOfSetsType d).
Implicit Types A B : set T.
Lemma
Source code
Proof.
Lemma
Source code
(forall , P i -> measurable (F i)) ->
measurable (\big[setI/setT]_( <- r | P i) F i).
Proof.
by apply: bigsetU_measurable => i Pi; apply/measurableC/mF.
Qed.
Lemma
Source code
finite_set D ->
(forall , D i -> measurable (F i)) ->
measurable (\bigcap_( in D) F i).
Proof.
rewrite -bigsetI_fset_set// big_seq; apply: bigsetI_measurable => i.
by rewrite in_fset_set ?inE// => *; apply: Fm.
Qed.
Lemma
Source code
measurable (A `\` B).
Proof.
by rewrite setIUr setICr set0U.
Qed.
End algebraofsets_lemmas.
Section sigmaring_lemmas.
Context ( : sigmaRingType d).
Implicit Types (A B : set T) (F : (set T)^nat) (P : set nat).
Lemma
Source code
(forall , P k -> measurable (F k)) -> measurable (\bigcup_( in P) F i).
Proof.
by case: ifP => //; rewrite inE; exact: PF.
Qed.
Lemma
Source code
(forall , P k -> measurable (F k)) -> measurable (\bigcap_( in P) F i).
Proof.
apply: measurableD; first exact: PF.
by apply: bigcup_measurable => k/= [Pk kj]; apply: measurableD; exact: PF.
Qed.
Lemma
Source code
(forall , measurable (F k)) -> measurable (\bigcap_ F i).
Proof.
Lemma
Source code
{ : set U} : countable P -> (forall , P i -> measurable (F i)) ->
measurable (\bigcup_( in P) F i).
Proof.
by rewrite bigcup0.
by rewrite bigcup_image; apply: bigcupT_measurable=>// i; exact: mF.
Qed.
Lemma
Source code
P !=set0 -> countable P -> (forall , P k -> measurable (F k)) ->
measurable (\bigcap_( in P) F i).
Proof.
by rewrite P0/= in Pj.
by rewrite bigcap_image; apply: bigcap_measurable=>// k _; exact: mF.
Qed.
End sigmaring_lemmas.
Lemma
Source code
( : set_system T) :
@measurable _ T = <<s G >> ->
setI_closed G ->
P [set: T] ->
G `<=` P ->
(forall , measurable S -> P S -> P (~` S)) ->
(forall : (set T)^nat,
(forall , measurable (F n)) ->
trivIset [set: nat] F ->
(forall , P (F n)) -> P (\bigcup_ F k)) ->
(forall , <<s G >> S -> P S).
Proof.
suff: <<s G >> `<=` [set | measurable A /\ P A] by move=> /(_ _ sGA)[].
apply: lambda_system_subset; [by []| | |by []].
- apply/dynkin_lambda_system; split => //.
+ by move=> B [mB PB]; split; [exact: measurableC|exact: PsetC].
+ move=> F tF Hm; split.
by apply: bigcup_measurable => k _; apply Hm.
by apply: Pbigcup => //; apply Hm.
- move=> B GB; split; last exact: GP.
by rewrite GE; exact: sub_gen_smallest.
Qed.
Lemma
Source code
(forall : T, measurable [set t]) -> countable A -> measurable A.
Proof.
rewrite -(injpinv_image (cst r) injf).
rewrite [X in _ X](_ : _ = \bigcup_( in f @` A) [set 'pinv_(cst r) A f x]).
by rewrite eqEsubset; split=> [_ [_ [s As <-]] <-|_ [_ [s As <-]] ->];
exists (f s).
by apply: bigcup_measurable => _ /= [s As <-].
Qed.
Context ( : sigmaRingType d).
Lemma
Source code
lambda_system D [set | measurable X /\ X `<=` D].
Proof.
- by move=> A /=[].
- by split.
- move=> B A AB/= [mB BD] [mA AD]; split; first exact: measurableD.
by apply: subset_trans BD; exact: subDsetl.
- move=> /= F _ mFD; split.
by apply: bigcup_measurable => i _; exact: (mFD _).1.
by apply: bigcup_sub => i _; exact: (mFD _).2.
Qed.
End sigma_ring_lambda_system.
Lemma
Source code
( : U -> set T) : countable [set: U] ->
(forall , measurable (F i)) -> measurable (\bigcup_ F i).
Proof.
move=> /countable_bijP[B] /ppcard_eqP[f] Fm.
rewrite (reindex_bigcup f^-1%FUN setT)//=; last exact: bigcupT_measurable.
exact: (@subl_surj _ _ B).
Qed.
Lemma
Source code
(forall , measurable (F i)) -> measurable (\bigcup_ F i).
Proof.
Section measurable_lemmas.
Context ( : measurableType d).
Implicit Types (A B : set T) (F : (set T)^nat) (P : set nat).
Lemma
Source code
sigma_algebra D (@measurable d T).
Proof.
Lemma
Source code
(forall , P k -> measurable (F k)) -> measurable (\bigcap_( in P) F i).
Proof.
by apply: bigcup_measurable => k Pk; exact/measurableC/PF.
Qed.
End measurable_lemmas.
Section discrete_measurable.
Context { : Type}.
Definition
strace : forall [T : Type], set_system T -> set T -> set (set T) strace is not universe polymorphic Arguments strace [T]%_type_scope G D%_classical_set_scope _ strace is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.strace Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 739, characters 11-17
Source code
Lemma
Source code
Proof.
Lemma
Source code
discrete_measurable X -> discrete_measurable (~` X).
Proof.
Lemma
Source code
(forall , discrete_measurable (F i)) ->
discrete_measurable (\bigcup_ F i).
Proof.
End discrete_measurable.
.
Source code
Source code
Source code
unit discrete_measurable discrete_measurable0
discrete_measurableC discrete_measurableU.
.
Source code
Source code
Source code
bool discrete_measurable discrete_measurable0
discrete_measurableC discrete_measurableU.
.
Source code
Source code
Source code
nat discrete_measurable discrete_measurable0
discrete_measurableC discrete_measurableU.
Definition
discrete_measurable : forall {T : Type}, set_system T discrete_measurable is not universe polymorphic Arguments discrete_measurable {T}%_type_scope _ discrete_measurable is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.discrete_measurable Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 1276, characters 11-30
Source code
Proof.
Definition
sigma_display : forall {T : Type}, set_system T -> measure_display sigma_display is not universe polymorphic Arguments sigma_display {T}%_type_scope _ sigma_display is opaque Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.sigma_display Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 1303, characters 11-24
Source code
Section g_salgebra_instance.
Variables ( : choiceType) ( : set_system T).
Lemma
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
(g_sigma_algebraType G)
<<s G >> (@sigma_algebra0 _ setT G) (@sigma_algebraC)
(@sigma_algebra_bigcup _ setT G).
End g_salgebra_instance.
.
Source code
Source code
Source code
Pointed.on (g_sigma_algebraType G).
Notation
Source code
Notation
Source code
(measurable : set_system (g_sigma_algebraType G)) : classical_set_scope.
Lemma
Source code
sigma_algebra setT G -> G.-sigma.-measurable = G.
Proof.
Section measurability.
Lemma
Source code
( : set aT) ( : aT -> rT) :
sigma_algebra setT G -> sigma_algebra D (preimage_set_system D f G).
Proof.
- move=> A; rewrite /preimage_set_system /= => -[B mB <-{A}].
exists (~` B); first by rewrite -setTD; exact: hC.
rewrite predeqE => x; split=> [[Dx Bfx]|[Dx]]; first by split => // -[] _ /Bfx.
by move=> /not_andP[].
- move=> F; rewrite /preimage_set_system /= => mF.
have {}mF n : exists , G x /\ D `&` f @^-1` x = F n.
by have := mF n => -[B mB <-]; exists B.
have [F' mF'] := @choice _ _ (fun => G y /\ D `&` f @^-1` y = F x) mF.
exists (\bigcup_ (F' k)); first by apply: hU => n; exact: (mF' n).1.
rewrite preimage_bigcup setI_bigcupr; apply: eq_bigcupr => i _.
exact: (mF' i).2.
Qed.
Definition
g_sigma_algebraType : forall {T : Type}, set_system T -> Type g_sigma_algebraType is not universe polymorphic Arguments g_sigma_algebraType {T}%_type_scope G g_sigma_algebraType is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.g_sigma_algebraType Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 1306, characters 11-30
Source code
Proof.
Definition
preimage_display : forall {T T' : Type}, (T -> T') -> measure_display preimage_display is not universe polymorphic Arguments preimage_display {T T'}%_type_scope _%_function_scope preimage_display is opaque Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.preimage_display Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 1353, characters 11-27
Source code
( : measurableType d') ( : T -> T') : Type := T.
Definition
g_sigma_algebra_preimageType : forall [d' : measure_display] [T : choiceType] [T' : measurableType d'], (T -> T') -> Type g_sigma_algebra_preimageType is not universe polymorphic Arguments g_sigma_algebra_preimageType [d']%_measure_display_scope [T T'] f%_function_scope g_sigma_algebra_preimageType is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.g_sigma_algebra_preimageType Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 1356, characters 11-39
Source code
( : measurableType d') ( : T -> T') :=
preimage_set_system setT f (@measurable _ T').
Section preimage_generated_sigma_algebra.
Context {} ( : choiceType) ( : measurableType d').
Variable : T -> T'.
Let
Source code
Proof.
by exists set0 => //; rewrite preimage_set0 setI0.
Qed.
Let
Source code
g_sigma_algebra_preimage f A -> g_sigma_algebra_preimage f (~` A).
Proof.
by exists (~` B); [exact: measurableC|rewrite !setTI preimage_setC].
Qed.
Let
Source code
(forall , g_sigma_algebra_preimage f (F i)) ->
g_sigma_algebra_preimage f (\bigcup_ (F i)).
Proof.
pose g := fun => sval (cid2 (mF i)).
pose mg := fun => svalP (cid2 (mF i)).
exists (\bigcup_ g i).
by apply: bigcup_measurable => k; case: (mg k).
rewrite setTI /g preimage_bigcup; apply: eq_bigcupr => k _.
by case: (mg k) => _; rewrite setTI.
Qed.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
(g_sigma_algebra_preimageType f) (g_sigma_algebra_preimage f)
preimage_set0 preimage_setC preimage_bigcup.
End preimage_generated_sigma_algebra.
Notation
Source code
Notation
Source code
(measurable : set_system (g_sigma_algebra_preimageType f)) : classical_set_scope.
Lemma
Source code
( : set_system aT) :
sigma_algebra D G -> sigma_algebra setT (image_set_system D f G).
Proof.
- by rewrite /= preimage_set0 setI0.
- move=> A /= GfAD; rewrite setTD -preimage_setC -setDE.
rewrite (_ : _ `\` _ = D `\` (D `&` f @^-1` A)); last exact: GC.
rewrite predeqE => x; split=> [[Dx fAx]|[Dx fADx]].
by split => // -[] _ /fAx.
by split => //; exact: contra_not fADx.
- by move=> F /= mF; rewrite preimage_bigcup setI_bigcupr; exact: GU.
Qed.
Lemma
Source code
( : aT -> rT) ( : set_system rT) :
<<s D, preimage_set_system D f G' >> =
preimage_set_system D f (G'.-sigma.-measurable).
Proof.
have mG : sigma_algebra D
(preimage_set_system D f (G'.-sigma.-measurable)).
exact/sigma_algebra_preimage/sigma_algebra_measurable.
have subset_preimage : preimage_set_system D f G' `<=`
preimage_set_system D f (G'.-sigma.-measurable).
by move=> A [B CCB <-{A}]; exists B => //; exact: sub_sigma_algebra.
exact: smallest_sub.
have G'pre A' : G' A' -> (preimage_set_system D f G') (D `&` f @^-1` A').
by move=> ?; exists A'.
pose I : set_system aT := <<s D, preimage_set_system D f G' >>.
have G'sfun : G' `<=` image_set_system D f I.
by move=> A' /G'pre[B G'B h]; apply: sub_sigma_algebra; exists B.
have sG'sfun : <<s G' >> `<=` image_set_system D f I.
apply: smallest_sub => //; apply: sigma_algebra_image.
exact: smallest_sigma_algebra.
by move=> _ [B mB <-]; exact: sG'sfun.
Qed.
End measurability.
Lemma
Source code
Source code
( : Monoid.com_law idx) ( : I -> set T) ( : set T -> R) :
finite_set D -> trivIset D A -> F set0 = idx ->
\big[op/idx]_( <- fset_set D) F (A i) =
\big[op/idx]_( <- (A @` fset_set D)%fset) F X.
Proof.
move=> Dfin Atriv F0; symmetry.
pose D' := [fset in fset_set D | A i != set0]%fset.
transitivity (\big[op/idx]_( <- (A @` D')%fset) F X).
apply: perm_big_supp; rewrite uniq_perm ?filter_uniq//=.
move=> X; rewrite !mem_filter; case: (eqVneq (F X) idx) => //= FXNidx.
apply/imfsetP/imfsetP=> -[i/=]; rewrite ?(inE, in_fset_set)//=.
move=> Di XAi; exists i; rewrite // !(inE, in_fset_set)//=.
by rewrite (mem_set Di)/= -XAi; apply: contra_neq FXNidx => ->.
by move=> /andP[Di AiN0] XAi; exists i; rewrite ?in_fset_set.
rewrite big_imfset//=.
move=> i j; rewrite !(inE, in_fset_set)//= => /andP[+ +] /andP[+ +].
rewrite !inE => Di /set0P[x Aix] Dj _ Aij.
by apply: (Atriv _ _ Di Dj); exists x; split=> //; rewrite -Aij.
apply: perm_big_supp; rewrite uniq_perm ?filter_uniq//= => i.
rewrite !mem_filter; case: (eqVneq (F (A i)) idx) => //= FAiidx.
rewrite !(in_fset_set, inE)//=; case: (boolP (i \in D)) => //= Di.
by apply: contra_neq FAiidx => ->.
Qed.
Section covering.
Context { : Type}.
Implicit Type (C : forall , set_system I).
Implicit Type (P : forall , set I -> set (I -> set T)).
Definition
g_sigma_algebra_preimage : forall [d' : measure_display] [T : choiceType] [T' : measurableType d'], (T -> T') -> set_system T g_sigma_algebra_preimage is not universe polymorphic Arguments g_sigma_algebra_preimage [d']%_measure_display_scope [T T'] f%_function_scope _ g_sigma_algebra_preimage is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.g_sigma_algebra_preimage Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 1359, characters 11-35
Source code
[set : set T | exists , [/\ C I D, P I D A & X = \bigcup_( in D) A i]].
Lemma
Source code
covered_by C P `<=` covered_by C P'.
Proof.
Lemma
Source code
covered_by C P (\bigcup_( in D) A i).
Proof.
Lemma
Source code
(forall ( : set I) , (forall , D i -> A i = set0) -> P I D A) ->
(forall ( : pointedType) , finite_set D -> P I D A ->
P nat `I_#|` fset_set D| (A \o nth point (fset_set D))) ->
covered_by (@finite_set) P =
[set : set T | exists , [/\ P nat `I_n A & X = \bigcup_( < n) A i]].
Proof.
by move=> [n [A [Am ->]]]; exists nat, `I_n, A; split.
case; elim/Ppointed=> I [D [A [Dfin Am ->]]].
exists 0%N, (fun=> set0); split; first by rewrite II0; apply: P0.
by rewrite //= emptyE II0 !bigcup0.
exists #|`fset_set D|, (A \o nth point (fset_set D)).
split; first exact: Pc.
by rewrite -bigsetU_fset_set// (big_nth point) big_mkord bigcup_mkord.
Qed.
Lemma
Source code
(forall ( : set I) , (forall , D i -> A i = set0) -> P I D A) ->
(forall ( : choiceType) ( : set I) ( : I -> set T) ( : nat -> I),
set_surj [set: nat] D f ->
P I D A -> P nat [set: nat] (A \o f)) ->
covered_by (@countable) P =
[set : set T | exists , [/\ P nat [set: nat] A & X = \bigcup_ A i]].
Proof.
by move=> [A [Am ->]]; exists nat, [set: nat], A; split.
case; elim/Ppointed=> I [D [A [Dcnt Am ->]]].
exists (fun=> set0); split; first exact: P0.
by rewrite emptyE bigcup_set0 bigcup0.
have /pfcard_geP[->|[f]] := Dcnt.
exists (fun=> set0); split; first exact: P0.
by rewrite !bigcup_set0 bigcup0.
pose g := [splitsurjfun of split f].
exists (A \o g); split=> /=; first exact: Pc Am.
apply/predeqP=> x; split=> [[i Di Aix]|[n _ Afnx]].
by exists (g^-1%FUN i) => //=; rewrite invK// inE.
by exists (g n) => //; apply: funS.
Qed.
End covering.
Lemma
Source code
( : T1 -> T2 -> set T) ( : T1 * T2) :
measurable (G x.1 x.2) <-> measurable (uncurry G x).
Proof.
Section g_sigma_algebra_cross.
Source code
sigma_algebra [set: T] A -> sigma_algebra [set: T] B ->
(forall , sigma_algebra [set: T] Z -> A `<=` Z <-> B `<=` Z)
<-> A = B.
Proof.
Lemma
Source code
( : set_system T2) :
<<s X `x` <<s Y >> >> = <<s X `x` Y >>.
Proof.
move=> Z mZ.
rewrite smallest_sub_iff//=.
rewrite {1}/cross12/= subUset -g_sigma_preimageE//.
rewrite smallest_sub_iff//= -subUset -[_ `|` _]/(cross12 X Y)//.
by rewrite smallest_sub_iff.
Qed.
End g_sigma_algebra_cross.
Definition
covered_by : forall {T : Type}, (forall I : Type, set_system I) -> (forall I : Type, set I -> set (I -> set T)) -> set (set T) covered_by is not universe polymorphic Arguments covered_by {T}%_type_scope (C P)%_function_scope _ covered_by is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.covered_by Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 1477, characters 11-21
Source code
( : semiRingOfSetsType d1) ( : semiRingOfSetsType d2) ( : Type)
( : T -> T1) ( : T -> T2) := <<s cross f1 f2 measurable measurable >>.
#[deprecated(since="mathcomp-analysis 1.9.0",
note="renamed to `g_sigma_preimageU`")]
Notation
Source code
Section product_lemma.
Context ( : semiRingOfSetsType d1) ( : semiRingOfSetsType d2).
Variables ( : choiceType) ( : T -> T1) ( : T -> T2).
Variables ( : Type) ( : T3 -> T).
Lemma
Source code
preimage_set_system setT g (g_sigma_preimageU f1 f2).
Proof.
rewrite predeqE => C; split.
- move=> [[A mA <-{C}]|[A mA <-{C}]].
+ by exists (f1 @^-1` A) => //; left; exists A => //; rewrite setTI.
+ by exists (f2 @^-1` A) => //; right; exists A => //; rewrite setTI.
- move=> [A [[B mB <-{A} <-{C}]|[B mB <-{A} <-{C}]]].
+ by left; rewrite !setTI; exists B => //; rewrite setTI.
+ by right; rewrite !setTI; exists B => //; rewrite setTI.
Qed.
End product_lemma.
#[deprecated(since="mathcomp-analysis 1.9.0",
note="renamed to `g_sigma_preimageU_comp`")]
Notation
Source code
Definition
g_sigma_preimageU : forall [d1 d2 : measure_display] [T1 : semiRingOfSetsType d1] [T2 : semiRingOfSetsType d2] [T : Type], (T -> T1) -> (T -> T2) -> set (set T) g_sigma_preimageU is not universe polymorphic Arguments g_sigma_preimageU [d1 d2]%_measure_display_scope [T1 T2] [T]%_type_scope (f1 f2)%_function_scope _ g_sigma_preimageU is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.g_sigma_preimageU Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 1563, characters 11-28
Source code
(measure_display * measure_display) -> measure_display.
Proof.
Section product_salgebra_instance.
Context {} {} { : semiRingOfSetsType d1} { : semiRingOfSetsType d2}.
Let := @fst T1 T2.
Let := @snd T1 T2.
Let
Source code
Proof.
Let
Source code
g_sigma_preimageU f1 f2 (~` A).
Proof.
Let
Source code
(forall , g_sigma_preimageU f1 f2 (F i)) ->
g_sigma_preimageU f1 f2 (\bigcup_ (F i)).
Proof.
.
Source code
Source code
Source code
Source code
(T1 * T2)%type (g_sigma_preimageU f1 f2)
(prod_salgebra_set0) (prod_salgebra_setC) (prod_salgebra_bigcup).
End product_salgebra_instance.
Notation
Source code
Notation
Source code
((p.-prod).-measurable : set_system (_ * _)) :
classical_set_scope.
.
Source code
Source code
(
Source code
Measurable.on (X * Y)%type.
Lemma
Source code
( : semiRingOfSetsType d1) ( : semiRingOfSetsType d2)
( : set T1) ( : set T2) :
measurable A -> measurable B -> measurable (A `*` B).
Proof.
rewrite -(setIT A) -(setTI B) setXI setXT setTX; apply: measurableI.
- by apply: sub_sigma_algebra; left; exists A => //; rewrite setTI.
- by apply: sub_sigma_algebra; right; exists B => //; rewrite setTI.
Qed.
Lemma
Source code
( : set_system T2) : X [set: T1] -> Y [set: T2] ->
<<s rectangle X Y >> = <<s X `x` Y >>.
Proof.
- rewrite smallest_sub_iff//= => _ [A1 X1] [A2 X2] <-.
rewrite (_ : _ `*` _ = fst @^-1` A1 `&` snd @^-1` A2)//.
apply: (@measurableI _ (@g_sigma_algebraType _ (X `x` Y))).
+ by apply: sub_sigma_algebra; left; exists A1 => //; rewrite setTI.
+ by apply: sub_sigma_algebra; right; exists A2 => //; rewrite setTI.
- apply: sigma_algebra_sub => A [|].
+ rewrite /preimage_set_system/= => -[A1 XA1 <-{A}].
by rewrite -setXT setTI; exact: rectangle_setX.
+ rewrite /preimage_set_system/= => -[A1 XA1 <-{A}].
by rewrite -setTX setTI; exact: rectangle_setX.
Qed.
Section product_salgebra_algebraOfSetsType.
Context ( : algebraOfSetsType d1) ( : algebraOfSetsType d2).
Let := @measurable _ T1.
Let := @measurable _ T2.
Lemma
Source code
(d1, d2).-prod.-measurable = <<s rectangle M1 M2 >>.
Proof.
End product_salgebra_algebraOfSetsType.
#[deprecated(since="mathcomp-analysis 1.17.0", use=prod_measurable_rectangle)]
Notation
Source code
Section product_salgebra_g_measurableTypeR.
Context ( : algebraOfSetsType d1) ( : choiceType) ( : set_system T2).
Hypothesis
Source code
#[deprecated(since="mathcomp-analysis 1.17.0")]
Lemma
Source code
@measurable _ (T1 * g_sigma_algebraType C2)%type
= <<s rectangle (@measurable _ T1) C2 >>.
Proof.
rewrite predeqE => X; split=> [[A mA] [B mB] <-{X}|[A C1A] [B C2B] <-{X}].
by exists A => //; exists B => //; exact: setTC2.
by exists A => //; exists B => //; exact: sub_sigma_algebra.
Qed.
End product_salgebra_g_measurableTypeR.
Section product_salgebra_g_measurableType.
Variables ( : choiceType) ( : set_system T1) ( : set_system T2).
Hypotheses (
Source code
Source code
#[deprecated(since="mathcomp-analysis 1.17.0")]
Lemma
Source code
@measurable _ (g_sigma_algebraType C1 * g_sigma_algebraType C2)%type =
<<s rectangle C1 C2 >>.
Proof.
rewrite predeqE => X; split=> [[A mA] [B mB] <-{X}|[A C1A] [B C2B] <-{X}].
by exists A; [exact: setTC1|exists B => //; exact: setTC2].
by exists A; [exact: sub_sigma_algebra|exists B => //; exact: sub_sigma_algebra].
Qed.
End product_salgebra_g_measurableType.
Definition
measure_prod_display : measure_display * measure_display -> measure_display measure_prod_display is not universe polymorphic measure_prod_display is opaque Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.measure_prod_display Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 1593, characters 11-31
Source code
( : nat) ( : 'I_n -> aT -> rT) : set_system aT :=
<<s \big[setU/set0]_( < n) preimage_set_system setT (f i) measurable >>.
Lemma
Source code
{ : choiceType} ( : 'I_n -> T -> T1) { : Type} ( : T2 -> T) :
g_sigma_preimage (fun => f i \o g) =
preimage_set_system [set: T2] g (g_sigma_preimage f).
Proof.
case: n => [|n] in f *; first by rewrite !big_ord0 preimage_set_system0.
rewrite predeqE => B; split.
- rewrite -bigcup_mkord_ord => -[i Ii [A mA <-{B}]].
have iE : Ordinal Ii = inord i by apply/val_inj => /=; rewrite inordK.
exists (f (inord i) @^-1` A) => //.
rewrite -bigcup_mkord_ord; exists i => //.
by exists A => //; rewrite -iE setTI.
- move=> [C].
rewrite -bigcup_mkord_ord => -[i Ii [A mA <-{C}]] <-{B}.
rewrite -bigcup_mkord_ord; exists i => //.
by exists A => //; rewrite !setTI -comp_preimage.
Qed.
Definition
g_sigma_preimage : forall [d : measure_display] [rT : semiRingOfSetsType d] [aT : Type] [n : nat], ('I_n -> aT -> rT) -> set_system aT g_sigma_preimage is not universe polymorphic Arguments g_sigma_preimage [d]%_measure_display_scope [rT] [aT]%_type_scope [n]%_nat_scope f%_function_scope _ g_sigma_preimage is transparent Expands to: Constant mathcomp.analysis.measure_theory.measurable_structure.g_sigma_preimage Declared in library mathcomp.analysis.measure_theory.measurable_structure, line 1706, characters 11-27
Source code
Proof.
Section measurable_tuple.
Context {} { : sigmaRingType d}.
Variable : nat.
Let
Source code
Let
Source code
Proof.
Let
Source code
Proof.
Let
Source code
g_sigma_preimage coors (\bigcup_ (F i)).
Proof.
.
Source code
Source code
Source code
(n.-tuple T) (g_sigma_preimage coors) tuple_set0 tuple_setC tuple_bigcup.
End measurable_tuple.