@@ -41,71 +41,7 @@ Local Open Scope classical_set_scope.
4141Local Open Scope ring_scope.
4242Local Open Scope ereal_scope.
4343
44- (* PR 516 in progress *)
45- HB.mixin Record isProbability d (T : measurableType d)
46- (R : realType) (P : set T -> \bar R) of isMeasure d R T P :=
47- { probability_setT : P setT = 1%E }.
48-
49- #[short(type=probability)]
50- HB.structure Definition Probability d (T : measurableType d) (R : realType) :=
51- {P of isProbability d T R P & isMeasure d R T P }.
52-
53- Section probability_lemmas.
54- Context d (T : measurableType d) (R : realType) (P : probability T R).
55-
56- Lemma probability_le1 (A : set T) : measurable A -> (P A <= 1)%E.
57- Proof .
58- move=> mA; rewrite -(@probability_setT _ _ _ P).
59- by apply: le_measure => //; rewrite ?in_setE.
60- Qed .
61-
62- End probability_lemmas.
63- (* /PR 516 in progress *)
64-
6544(* TODO: PR *)
66- Lemma setT0 (T : pointedType) : setT != set0 :> set T.
67- Proof . by apply/eqP => /seteqP[] /(_ point) /(_ Logic.I). Qed .
68-
69- Lemma set_unit (A : set unit) : A = set0 \/ A = setT.
70- Proof .
71- have [->|/set0P[[] Att]] := eqVneq A set0; [by left|right].
72- by apply/seteqP; split => [|] [].
73- Qed .
74-
75- Lemma set_boolE (B : set bool) : [\/ B == [set true], B == [set false], B == set0 | B == setT].
76- Proof .
77- have [Bt|Bt] := boolP (true \in B).
78- have [Bf|Bf] := boolP (false \in B).
79- have -> : B = setT.
80- by apply/seteqP; split => // -[] _; [rewrite inE in Bt| rewrite inE in Bf].
81- by apply/or4P; rewrite eqxx/= !orbT.
82- have -> : B = [set true].
83- apply/seteqP; split => -[]//=.
84- by rewrite notin_set in Bf.
85- by rewrite inE in Bt.
86- by apply/or4P; rewrite eqxx.
87- have [Bf|Bf] := boolP (false \in B).
88- have -> : B = [set false].
89- apply/seteqP; split => -[]//=.
90- by rewrite notin_set in Bt.
91- by rewrite inE in Bf.
92- by apply/or4P; rewrite eqxx/= orbT.
93- have -> : B = set0.
94- apply/seteqP; split => -[]//=.
95- by rewrite notin_set in Bt.
96- by rewrite notin_set in Bf.
97- by apply/or4P; rewrite eqxx/= !orbT.
98- Qed .
99-
100- Lemma xsection_preimage_snd (X Y Z : Type ) (f : Y -> Z) (A : set Z) (x : X) :
101- xsection ((f \o snd) @^-1` A) x = f @^-1` A.
102- Proof . by apply/seteqP; split; move=> y/=; rewrite /xsection/= inE. Qed .
103-
104- Lemma measurable_curry (T1 T2 : Type ) d (T : semiRingOfSetsType d)
105- (G : T1 * T2 -> set T) (x : T1 * T2) :
106- measurable (G x) <-> measurable (curry G x.1 x.2).
107- Proof . by case: x. Qed .
108-
10945Lemma emeasurable_itv1 (R : realType) (i : nat) :
11046 measurable (`[(i%:R)%:E, (i.+1%:R)%:E[%classic : set \bar R).
11147Proof .
@@ -117,109 +53,6 @@ apply: measurableU.
11753exact: emeasurable_itv_bnd_pinfty.
11854Qed .
11955
120- Lemma measurable_fun_fst d1 d2 (T1 : measurableType d1)
121- (T2 : measurableType d2) : measurable_fun setT (@fst T1 T2).
122- Proof .
123- by have /prod_measurable_funP[] := @measurable_fun_id _ [the measurableType _ of (T1 * T2)%type] setT.
124- Qed .
125-
126- Lemma measurable_fun_snd d1 d2 (T1 : measurableType d1)
127- (T2 : measurableType d2) : measurable_fun setT (@snd T1 T2).
128- Proof .
129- by have /prod_measurable_funP[] := @measurable_fun_id _ [the measurableType _ of (T1 * T2)%type] setT.
130- Qed .
131-
132- Definition swap (T1 T2 : Type) (x : T1 * T2) := (x.2, x.1).
133-
134- Lemma measurable_fun_swap d d' (X : measurableType d) (Y : measurableType d') :
135- measurable_fun [set: X * Y] (@swap X Y).
136- Proof .
137- by apply/prod_measurable_funP => /=; split;
138- [exact: measurable_fun_snd|exact: measurable_fun_fst].
139- Qed .
140-
141- Section measurable_fun_pair.
142- Context d d2 d3 (X : measurableType d) (Y : measurableType d2)
143- (Z : measurableType d3).
144-
145- Lemma measurable_fun_pair (f : X -> Y) (g : X -> Z) :
146- measurable_fun setT f -> measurable_fun setT g ->
147- measurable_fun setT (fun x => (f x, g x)).
148- Proof . by move=> mf mg; apply/prod_measurable_funP. Qed .
149-
150- End measurable_fun_pair.
151-
152- Section measurable_fun_comp.
153- Context d1 d2 d3 (T1 : measurableType d1)
154- (T2 : measurableType d2) (T3 : measurableType d3).
155-
156- (* NB: this generalizes MathComp-Analysis' measurable_fun_comp *)
157- Lemma measurable_fun_comp' F (f : T2 -> T3) E (g : T1 -> T2) :
158- measurable F ->
159- g @` E `<=` F ->
160- measurable_fun F f -> measurable_fun E g -> measurable_fun E (f \o g).
161- Proof .
162- move=> mF FgE mf mg /= mE A mA.
163- rewrite comp_preimage.
164- rewrite [X in measurable X](_ : _ = E `&` g @^-1` (F `&` f @^-1` A)); last first.
165- apply/seteqP; split=> [|? [?] []//].
166- by move=> x/= [Ex Afgx]; split => //; split => //; exact: FgE.
167- by apply/mg => //; exact: mf.
168- Qed .
169-
170- End measurable_fun_comp.
171-
172- Lemma measurable_fun_if_pair d d' (X : measurableType d)
173- (Y : measurableType d') (x y : X -> Y) :
174- measurable_fun setT x -> measurable_fun setT y ->
175- measurable_fun setT (fun tb => if tb.2 then x tb.1 else y tb.1).
176- Proof .
177- move=> mx my.
178- have {}mx : measurable_fun [set: X * bool] (x \o fst).
179- by apply: measurable_fun_comp => //; exact: measurable_fun_fst.
180- have {}my : measurable_fun [set: X * bool] (y \o fst).
181- by apply: measurable_fun_comp => //; exact: measurable_fun_fst.
182- by apply: measurable_fun_ifT => //=; exact: measurable_fun_snd.
183- Qed .
184-
185- Lemma measurable_fun_opp (R : realType) : measurable_fun [set: R] -%R.
186- Proof .
187- apply: continuous_measurable_fun.
188- by have := @opp_continuous R [the normedModType R of R^o].
189- Qed .
190-
191- Lemma integral_eq0 d (T : measurableType d) (R : realType)
192- (mu : {measure set T -> \bar R}) (D : set T) f :
193- (forall x, D x -> f x = 0) -> \int[mu]_(x in D) f x = 0.
194- Proof .
195- move=> f0; under eq_integral.
196- by move=> x /[1!inE] /f0 ->; over.
197- by rewrite integral0.
198- Qed .
199-
200- Lemma dirac0 d (T : measurableType d) (R : realFieldType) (a : T) :
201- \d_a set0 = 0%E :> \bar R.
202- Proof . by rewrite /dirac indic0. Qed .
203-
204- Lemma diracT d (T : measurableType d) (R : realFieldType) (a : T) :
205- \d_a setT = 1%E :> \bar R.
206- Proof . by rewrite /dirac indicT. Qed .
207-
208- Section fubini_tonelli.
209- Local Open Scope ereal_scope.
210- Context d1 d2 (T1 : measurableType d1) (T2 : measurableType d2) (R : realType).
211- Variables (m1 : {measure set T1 -> \bar R}) (m2 : {measure set T2 -> \bar R}).
212- Hypotheses (sm1 : sigma_finite setT m1) (sm2 : sigma_finite setT m2).
213- Variables (f : T1 * T2 -> \bar R) (f0 : forall xy, 0 <= f xy).
214- Variables (mf : measurable_fun setT f).
215-
216- Lemma fubini_tonelli :
217- \int[m1]_x \int[m2]_y f (x, y) = \int[m2]_y \int[m1]_x f (x, y).
218- Proof . by rewrite -fubini_tonelli1// fubini_tonelli2. Qed .
219-
220- End fubini_tonelli.
221- (* /TODO: PR *)
222-
22356Definition sfinite_measure d (T : measurableType d) (R : realType)
22457 (mu : set T -> \bar R) :=
22558 exists2 s : {measure set T -> \bar R}^nat,
@@ -684,10 +517,10 @@ Lemma measurable_fun_xsection_integral
684517Proof .
685518move=> h.
686519rewrite (_ : (fun x => _) =
687- (fun x => elim_sup (fun n => \int[l x]_y (k_ n (x, y))%:E))); last first.
520+ (fun x => lim_esup (fun n => \int[l x]_y (k_ n (x, y))%:E))); last first.
688521 apply/funext => x.
689522 transitivity (lim (fun n => \int[l x]_y (k_ n (x, y))%:E)); last first.
690- rewrite is_cvg_elim_supE //.
523+ rewrite is_cvg_lim_esupE //.
691524 apply: ereal_nondecreasing_is_cvg => m n mn.
692525 apply: ge0_le_integral => //.
693526 - by move=> y _; rewrite lee_fin.
@@ -711,7 +544,7 @@ rewrite [X in measurable_fun _ X](_ : _ = (fun x => \sum_(r \in range (k_ n))
711544 - by apply: eq_integral => y _; rewrite -fsumEFin.
712545 - move=> r.
713546 apply/EFin_measurable_fun/measurable_funrM/measurable_fun_prod1 => /=.
714- rewrite (_ : \1_ _ = mindic R (measurable_sfunP (k_ n) r ))//.
547+ rewrite (_ : \1_ _ = mindic R (measurable_sfunP (k_ n) (measurable_set1 r) ))//.
715548 exact/measurable_funP.
716549 - by move=> m y _; rewrite nnfun_muleindic_ge0.
717550apply: emeasurable_fun_fsum => // r.
@@ -721,11 +554,11 @@ rewrite [X in measurable_fun _ X](_ : _ = (fun x => r%:E *
721554 have [r0|r0] := leP 0%R r.
722555 rewrite ge0_integralM//; last by move=> y _; rewrite lee_fin.
723556 apply/EFin_measurable_fun/measurable_fun_prod1 => /=.
724- rewrite (_ : \1_ _ = mindic R (measurable_sfunP (k_ n) r ))//.
557+ rewrite (_ : \1_ _ = mindic R (measurable_sfunP (k_ n) (measurable_set1 r) ))//.
725558 exact/measurable_funP.
726- rewrite integral_eq0 ; last first.
559+ rewrite integral0_eq ; last first.
727560 by move=> y _; rewrite preimage_nnfun0// indic0 mule0.
728- by rewrite integral_eq0 ?mule0// => y _; rewrite preimage_nnfun0// indic0.
561+ by rewrite integral0_eq ?mule0// => y _; rewrite preimage_nnfun0// indic0.
729562apply/measurable_funeM.
730563rewrite (_ : (fun x => _) = (fun x => l x (xsection (k_ n @^-1` [set r]) x))).
731564 exact/h.
@@ -788,7 +621,7 @@ Let measurable_fun_kdirac U : measurable U ->
788621 measurable_fun setT (kdirac mf ^~ U).
789622Proof .
790623move=> mU; apply/EFin_measurable_fun.
791- by rewrite (_ : (fun x => _) = mindic R mU \o f)//; exact/measurable_fun_comp .
624+ by rewrite (_ : (fun x => _) = mindic R mU \o f)//; exact/measurable_funT_comp .
792625Qed .
793626
794627HB.instance Definition _ := isKernel.Build _ _ _ _ _ (kdirac mf)
832665Definition pset : set (set (probability T R)) :=
833666 [set mset U r | r in `[0%R,1%R] & U in measurable].
834667
835- Definition pprobability : measurableType pset.-sigma := [the measurableType _ of salgebraType pset].
668+ Definition pprobability : measurableType pset.-sigma :=
669+ [the measurableType _ of salgebraType pset].
836670
837671End dist_salgebra_instance.
838672
@@ -904,12 +738,8 @@ exists (fun n => [the _.-ker _ ~> _ of kadd (f1 n) (f2 n)]).
904738 exists (r1 + r2)%R => x/=.
905739 by rewrite /msum !big_ord_recr/= big_ord0 add0e EFinD lte_add.
906740move=> x U mU.
907- rewrite /kadd/=.
908- rewrite -/(measure_add (k1 x) (k2 x)) measure_addE.
909- rewrite /mseries.
910- rewrite hk1//= hk2//= /mseries.
911- rewrite -nneseriesD//.
912- apply: eq_eseries => n _.
741+ rewrite /kadd/= -/(measure_add (k1 x) (k2 x)) measure_addE hk1//= hk2//=.
742+ rewrite /mseries -nneseriesD//; apply: eq_eseries => n _ /=.
913743by rewrite -/(measure_add (f1 n x) (f2 n x)) measure_addE.
914744Qed .
915745
@@ -963,7 +793,7 @@ Lemma measurable_fun_eq_cst d d' (T : measurableType d)
963793 measurable_fun setT (fun t => f t setT == k).
964794Proof .
965795move=> _ /= B mB; rewrite setTI.
966- have [/eqP->|/eqP->|/eqP->|/eqP->] := set_boolE B.
796+ have [/eqP->|/eqP->|/eqP->|/eqP->] := set_bool B.
967797- exact: measurable_eq_cst.
968798- rewrite (_ : _ @^-1` _ = [set b | f b setT != k]); last first.
969799 by apply/seteqP; split => [t /negbT//|t /negbTE].
@@ -996,7 +826,7 @@ case: ifPn => [_|_]; first exact: measure_semi_sigma_additive.
996826rewrite (_ : (fun _ => _) = ((fun n => \sum_(0 <= i < n) f x (F i)) \*
997827 cst ((fine (f x setT))^-1)%:E)); last first.
998828 by apply/funext => n; rewrite -ge0_sume_distrl.
999- by apply: ereal_cvgMr => //; exact: measure_semi_sigma_additive.
829+ by apply: cvgeMr => //; exact: measure_semi_sigma_additive.
1000830Qed .
1001831
1002832HB.instance Definition _ x := isMeasure.Build _ _ _ (mnormalize x)
@@ -1045,14 +875,14 @@ apply: measurable_fun_if => //.
1045875- apply: emeasurable_funM.
1046876 by have := measurable_kernel f U mU; exact: measurable_funS.
1047877 apply/EFin_measurable_fun.
1048- apply: (@measurable_fun_comp' _ _ _ _ _ _ [set r : R | r != 0%R]) => //.
878+ apply: (@measurable_fun_comp _ _ _ _ _ _ [set r : R | r != 0%R]) => //.
1049879 + exact: open_measurable.
1050880 + move=> /= r [t] [] [_ ft0] ftoo ftr; apply/eqP => r0.
1051881 move: (ftr); rewrite r0 => /eqP; rewrite fine_eq0 ?ft0//.
1052882 by rewrite ge0_fin_numE// lt_neqAle leey ftoo.
1053883 + apply: open_continuous_measurable_fun => //; apply/in_setP => x /= x0.
1054884 exact: inv_continuous.
1055- + apply: measurable_fun_comp => /=; first exact: measurable_fun_fine.
885+ + apply: measurable_funT_comp => /=; first exact: measurable_fun_fine.
1056886 by have := measurable_kernel f _ measurableT; exact: measurable_funS.
1057887Qed .
1058888
@@ -1173,8 +1003,8 @@ Variable k : R.-sfker [the measurableType _ of (X * Y)%type] ~> Z.
11731003
11741004Import KCOMP_FINITE_KERNEL.
11751005
1176- Lemma mkcomp_sfinite : exists k_ : (R.-fker X ~> Z)^nat, forall x U, measurable U ->
1177- (l \; k) x U = kseries k_ x U.
1006+ Lemma mkcomp_sfinite : exists k_ : (R.-fker X ~> Z)^nat,
1007+ forall x U, measurable U -> (l \; k) x U = kseries k_ x U.
11781008Proof .
11791009have [k_ hk_] := sfinite k; have [l_ hl_] := sfinite l.
11801010have [kl hkl] : exists kl : (R.-fker X ~> Z) ^nat, forall x U,
@@ -1241,7 +1071,7 @@ Let k_2_ge0 n x : (0 <= k_2 n x)%R. Proof. by []. Qed.
12411071HB.instance Definition _ n := @IsNonNegFun.Build _ _ _ (k_2_ge0 n).
12421072
12431073Let mk_2 n : measurable_fun setT (k_2 n).
1244- Proof . by apply: measurable_fun_comp => //; exact: measurable_fun_snd. Qed .
1074+ Proof . by apply: measurable_funT_comp => //; exact: measurable_fun_snd. Qed .
12451075
12461076HB.instance Definition _ n := @IsMeasurableFun.Build _ _ _ _ (mk_2 n).
12471077
@@ -1322,7 +1152,7 @@ under [in RHS]eq_integral.
13221152 over.
13231153rewrite /= ge0_integral_fsum//; last 2 first.
13241154 - move=> r; apply: measurable_funeM.
1325- have := measurable_kernel k (f @^-1` [set r]) (measurable_sfunP f r ).
1155+ have := measurable_kernel k (f @^-1` [set r]) (measurable_sfunP f (measurable_set1 r) ).
13261156 by move=> /measurable_fun_prod1; exact.
13271157 - move=> n y _.
13281158 have := mulemu_ge0 (fun n => f @^-1` [set n]).
@@ -1333,12 +1163,12 @@ rewrite (integralM_indic _ (fun r => f @^-1` [set r]))//; last first.
13331163rewrite /= integral_kcomp_indic; last exact/measurable_sfunP.
13341164have [r0|r0] := leP 0%R r.
13351165 rewrite ge0_integralM//; last first.
1336- have := measurable_kernel k (f @^-1` [set r]) (measurable_sfunP f r ).
1166+ have := measurable_kernel k (f @^-1` [set r]) (measurable_sfunP f (measurable_set1 r) ).
13371167 by move/measurable_fun_prod1; exact.
13381168 by congr (_ * _); apply eq_integral => y _; rewrite integral_indic// setIT.
1339- rewrite integral_eq0 ?mule0; last first.
1340- by move=> y _; rewrite integral_eq0 // => z _; rewrite preimage_nnfun0// indic0.
1341- by rewrite integral_eq0 // => y _; rewrite preimage_nnfun0// measure0 mule0.
1169+ rewrite integral0_eq ?mule0; last first.
1170+ by move=> y _; rewrite integral0_eq // => z _; rewrite preimage_nnfun0// indic0.
1171+ by rewrite integral0_eq // => y _; rewrite preimage_nnfun0// measure0 mule0.
13421172Qed .
13431173
13441174Lemma integral_kcomp x f : (forall z, 0 <= f z) -> measurable_fun setT f ->
0 commit comments