Skip to content

Commit 1ec2b66

Browse files
committed
upd wrt recent PRs, compat with Coq 8.15
1 parent 35312f9 commit 1ec2b66

File tree

2 files changed

+73
-89
lines changed

2 files changed

+73
-89
lines changed

theories/kernel.v

Lines changed: 31 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -101,35 +101,12 @@ Lemma xsection_preimage_snd (X Y Z : Type) (f : Y -> Z) (A : set Z) (x : X) :
101101
xsection ((f \o snd) @^-1` A) x = f @^-1` A.
102102
Proof. by apply/seteqP; split; move=> y/=; rewrite /xsection/= inE. Qed.
103103

104-
Canonical unit_pointedType := PointedType unit tt.
105-
106-
Section discrete_measurable_unit.
107-
108-
Definition discrete_measurable_unit : set (set unit) := [set: set unit].
109-
110-
Let discrete_measurable0 : discrete_measurable_unit set0. Proof. by []. Qed.
111-
112-
Let discrete_measurableC X :
113-
discrete_measurable_unit X -> discrete_measurable_unit (~` X).
114-
Proof. by []. Qed.
115-
116-
Let discrete_measurableU (F : (set unit)^nat) :
117-
(forall i, discrete_measurable_unit (F i)) ->
118-
discrete_measurable_unit (\bigcup_i F i).
119-
Proof. by []. Qed.
120-
121-
HB.instance Definition _ := @isMeasurable.Build default_measure_display unit
122-
(Pointed.class _) discrete_measurable_unit discrete_measurable0
123-
discrete_measurableC discrete_measurableU.
124-
125-
End discrete_measurable_unit.
126-
127104
Lemma measurable_curry (T1 T2 : Type) d (T : semiRingOfSetsType d)
128105
(G : T1 * T2 -> set T) (x : T1 * T2) :
129106
measurable (G x) <-> measurable (curry G x.1 x.2).
130107
Proof. by case: x. Qed.
131108

132-
Lemma emeasurable_itv (R : realType) (i : nat) :
109+
Lemma emeasurable_itv1 (R : realType) (i : nat) :
133110
measurable (`[(i%:R)%:E, (i.+1%:R)%:E[%classic : set \bar R).
134111
Proof.
135112
rewrite -[X in measurable X]setCK.
@@ -143,13 +120,13 @@ Qed.
143120
Lemma measurable_fun_fst d1 d2 (T1 : measurableType d1)
144121
(T2 : measurableType d2) : measurable_fun setT (@fst T1 T2).
145122
Proof.
146-
by have /prod_measurable_funP[] := @measurable_fun_id _ (T1 * T2)%type setT.
123+
by have /prod_measurable_funP[] := @measurable_fun_id _ [the measurableType _ of (T1 * T2)%type] setT.
147124
Qed.
148125

149126
Lemma measurable_fun_snd d1 d2 (T1 : measurableType d1)
150127
(T2 : measurableType d2) : measurable_fun setT (@snd T1 T2).
151128
Proof.
152-
by have /prod_measurable_funP[] := @measurable_fun_id _ (T1 * T2)%type setT.
129+
by have /prod_measurable_funP[] := @measurable_fun_id _ [the measurableType _ of (T1 * T2)%type] setT.
153130
Qed.
154131

155132
Definition swap (T1 T2 : Type) (x : T1 * T2) := (x.2, x.1).
@@ -243,10 +220,6 @@ Proof. by rewrite -fubini_tonelli1// fubini_tonelli2. Qed.
243220
End fubini_tonelli.
244221
(* /TODO: PR *)
245222

246-
Definition finite_measure d (T : measurableType d) (R : realType)
247-
(mu : set T -> \bar R) :=
248-
mu setT < +oo.
249-
250223
Definition sfinite_measure d (T : measurableType d) (R : realType)
251224
(mu : set T -> \bar R) :=
252225
exists2 s : {measure set T -> \bar R}^nat,
@@ -274,7 +247,7 @@ Lemma sfinite_fubini :
274247
Proof.
275248
have [s1 fm1 m1E] := sfm1.
276249
have [s2 fm2 m2E] := sfm2.
277-
rewrite [LHS](eq_measure_integral (mseries s1 0)); last first.
250+
rewrite [LHS](eq_measure_integral [the measure _ _ of mseries s1 0]); last first.
278251
by move=> A mA _; rewrite m1E.
279252
transitivity (\int[mseries s1 0]_x \int[mseries s2 0]_y f (x, y)).
280253
by apply eq_integral => x _; apply: eq_measure_integral => ? ? _; rewrite m2E.
@@ -352,7 +325,7 @@ Context d d' (X : measurableType d) (Y : measurableType d') (R : realType).
352325
Variable k : (R.-ker X ~> Y)^nat.
353326

354327
Definition kseries : X -> {measure set Y -> \bar R} :=
355-
fun x => mseries (k ^~ x) 0.
328+
fun x => [the measure _ _ of mseries (k ^~ x) 0].
356329

357330
Lemma measurable_fun_kseries (U : set Y) :
358331
measurable U ->
@@ -441,7 +414,7 @@ HB.factory Record Kernel_isFinite d d' (X : measurableType d)
441414
Section kzero.
442415
Context d d' (X : measurableType d) (Y : measurableType d') (R : realType).
443416

444-
Definition kzero : X -> {measure set Y -> \bar R} := fun _ : X => mzero.
417+
Definition kzero : X -> {measure set Y -> \bar R} := fun _ : X => [the measure _ _ of mzero].
445418

446419
Let measurable_fun_kzero U : measurable U ->
447420
measurable_fun setT (kzero ^~ U).
@@ -463,7 +436,7 @@ Lemma sfinite_finite :
463436
forall x U, measurable U -> k x U = mseries (k_ ^~ x) 0 U.
464437
Proof.
465438
exists (fun n => if n is O then [the _.-ker _ ~> _ of k] else
466-
@kzero _ _ X Y R).
439+
[the _.-ker _ ~> _ of @kzero _ _ X Y R]).
467440
by case => [|_]; [exact: measure_uub|exact: kzero_uub].
468441
move=> t U mU/=; rewrite /mseries.
469442
rewrite (nneseries_split 1%N)// big_ord_recl/= big_ord0 adde0.
@@ -503,7 +476,7 @@ HB.instance Definition _ n :=
503476
Lemma sfinite : exists s : (R.-fker X ~> Y)^nat,
504477
forall x U, measurable U -> k x U = kseries s x U.
505478
Proof.
506-
by exists s => x U mU; rewrite /s /= /s; by case: cid2 => ? ? ->.
479+
by exists (fun n => [the _.-fker _ ~> _ of s n]) => x U mU; rewrite /s /= /s; by case: cid2 => ? ? ->.
507480
Qed.
508481

509482
End sfinite.
@@ -703,7 +676,7 @@ Variable k : X * Y -> \bar R.
703676

704677
Lemma measurable_fun_xsection_integral
705678
(l : X -> {measure set Y -> \bar R})
706-
(k_ : ({nnsfun (X * Y)%type >-> R})^nat)
679+
(k_ : ({nnsfun [the measurableType _ of (X * Y)%type] >-> R})^nat)
707680
(ndk_ : nondecreasing_seq (k_ : (X * Y -> R)^nat))
708681
(k_k : forall z, EFin \o (k_ ^~ z) --> k z) :
709682
(forall n r, measurable_fun setT (fun x => l x (xsection (k_ n @^-1` [set r]) x))) ->
@@ -738,7 +711,8 @@ rewrite [X in measurable_fun _ X](_ : _ = (fun x => \sum_(r \in range (k_ n))
738711
- by apply: eq_integral => y _; rewrite -fsumEFin.
739712
- move=> r.
740713
apply/EFin_measurable_fun/measurable_funrM/measurable_fun_prod1 => /=.
741-
by rewrite (_ : \1_ _ = mindic R (measurable_sfunP (k_ n) r)).
714+
rewrite (_ : \1_ _ = mindic R (measurable_sfunP (k_ n) r))//.
715+
exact/measurable_funP.
742716
- by move=> m y _; rewrite nnfun_muleindic_ge0.
743717
apply: emeasurable_fun_fsum => // r.
744718
rewrite [X in measurable_fun _ X](_ : _ = (fun x => r%:E *
@@ -747,7 +721,8 @@ rewrite [X in measurable_fun _ X](_ : _ = (fun x => r%:E *
747721
have [r0|r0] := leP 0%R r.
748722
rewrite ge0_integralM//; last by move=> y _; rewrite lee_fin.
749723
apply/EFin_measurable_fun/measurable_fun_prod1 => /=.
750-
by rewrite (_ : \1_ _ = mindic R (measurable_sfunP (k_ n) r)).
724+
rewrite (_ : \1_ _ = mindic R (measurable_sfunP (k_ n) r))//.
725+
exact/measurable_funP.
751726
rewrite integral_eq0; last first.
752727
by move=> y _; rewrite preimage_nnfun0// indic0 mule0.
753728
by rewrite integral_eq0 ?mule0// => y _; rewrite preimage_nnfun0// indic0.
@@ -805,7 +780,7 @@ Variable f : X -> Y.
805780

806781
Definition kdirac (mf : measurable_fun setT f)
807782
: X -> {measure set Y -> \bar R} :=
808-
fun x => dirac (f x).
783+
fun x => [the measure _ _ of dirac (f x)].
809784

810785
Hypothesis mf : measurable_fun setT f.
811786

@@ -831,7 +806,7 @@ Arguments kdirac {d d' X Y R f}.
831806
Section dist_salgebra_instance.
832807
Context d (T : measurableType d) (R : realType).
833808

834-
Let p0 : probability T R := dirac point.
809+
Let p0 : probability T R := [the probability _ _ of dirac point].
835810

836811
Definition prob_pointed := Pointed.Class
837812
(Choice.Class gen_eqMixin (Choice.Class gen_eqMixin gen_choiceMixin)) p0.
@@ -857,7 +832,7 @@ Qed.
857832
Definition pset : set (set (probability T R)) :=
858833
[set mset U r | r in `[0%R,1%R] & U in measurable].
859834

860-
Definition pprobability : measurableType pset.-sigma := salgebraType pset.
835+
Definition pprobability : measurableType pset.-sigma := [the measurableType _ of salgebraType pset].
861836

862837
End dist_salgebra_instance.
863838

@@ -898,7 +873,7 @@ Context d d' (X : measurableType d) (Y : measurableType d') (R : realType).
898873
Variables k1 k2 : R.-ker X ~> Y.
899874

900875
Definition kadd : X -> {measure set Y -> \bar R} :=
901-
fun x => measure_add (k1 x) (k2 x).
876+
fun x => [the measure _ _ of measure_add (k1 x) (k2 x)].
902877

903878
Let measurable_fun_kadd U : measurable U ->
904879
measurable_fun setT (kadd ^~ U).
@@ -922,7 +897,7 @@ Let sfinite_kadd : exists2 k_ : (R.-ker _ ~> _)^nat, forall n, measure_fam_uub (
922897
kadd k1 k2 x U = mseries (k_ ^~ x) 0 U.
923898
Proof.
924899
have [f1 hk1] := sfinite k1; have [f2 hk2] := sfinite k2.
925-
exists (fun n => kadd (f1 n) (f2 n)).
900+
exists (fun n => [the _.-ker _ ~> _ of kadd (f1 n) (f2 n)]).
926901
move=> n.
927902
have [r1 f1r1] := measure_uub (f1 n).
928903
have [r2 f2r2] := measure_uub (f2 n).
@@ -1046,7 +1021,7 @@ Context d d' (X : measurableType d) (Y : measurableType d') (R : realType).
10461021
Variable f : R.-ker X ~> Y.
10471022

10481023
Definition knormalize (P : probability Y R) : X -> {measure set Y -> \bar R} :=
1049-
mnormalize f P.
1024+
fun x => [the measure _ _ of mnormalize f P x].
10501025

10511026
Variable P : probability Y R.
10521027

@@ -1113,7 +1088,7 @@ Section kcomp_is_measure.
11131088
Context d1 d2 d3 (X : measurableType d1) (Y : measurableType d2)
11141089
(Z : measurableType d3) (R : realType).
11151090
Variable l : R.-ker X ~> Y.
1116-
Variable k : R.-ker (X * Y)%type ~> Z.
1091+
Variable k : R.-ker [the measurableType _ of (X * Y)%type] ~> Z.
11171092

11181093
Local Notation "l \; k" := (kcomp l k).
11191094

@@ -1139,7 +1114,7 @@ Qed.
11391114
HB.instance Definition _ x := isMeasure.Build _ R _
11401115
((l \; k) x) (kcomp0 x) (kcomp_ge0 x) (@kcomp_sigma_additive x).
11411116

1142-
Definition mkcomp : X -> {measure set Z -> \bar R} := l \; k.
1117+
Definition mkcomp : X -> {measure set Z -> \bar R} := fun x => [the measure _ _ of (l \; k) x].
11431118

11441119
End kcomp_is_measure.
11451120

@@ -1150,7 +1125,7 @@ Module KCOMP_FINITE_KERNEL.
11501125
Section kcomp_finite_kernel_kernel.
11511126
Context d d' d3 (X : measurableType d) (Y : measurableType d')
11521127
(Z : measurableType d3) (R : realType) (l : R.-fker X ~> Y)
1153-
(k : R.-ker (X * Y)%type ~> Z).
1128+
(k : R.-ker [the measurableType _ of (X * Y)%type] ~> Z).
11541129

11551130
Lemma measurable_fun_kcomp_finite U :
11561131
measurable U -> measurable_fun setT ((l \; k) ^~ U).
@@ -1168,7 +1143,7 @@ Section kcomp_finite_kernel_finite.
11681143
Context d d' d3 (X : measurableType d) (Y : measurableType d')
11691144
(Z : measurableType d3) (R : realType).
11701145
Variable l : R.-fker X ~> Y.
1171-
Variable k : R.-fker (X * Y)%type ~> Z.
1146+
Variable k : R.-fker [the measurableType _ of (X * Y)%type] ~> Z.
11721147

11731148
Let mkcomp_finite : measure_fam_uub (l \; k).
11741149
Proof.
@@ -1194,7 +1169,7 @@ Section kcomp_sfinite_kernel.
11941169
Context d d' d3 (X : measurableType d) (Y : measurableType d')
11951170
(Z : measurableType d3) (R : realType).
11961171
Variable l : R.-sfker X ~> Y.
1197-
Variable k : R.-sfker (X * Y)%type ~> Z.
1172+
Variable k : R.-sfker [the measurableType _ of (X * Y)%type] ~> Z.
11981173

11991174
Import KCOMP_FINITE_KERNEL.
12001175

@@ -1206,10 +1181,10 @@ have [kl hkl] : exists kl : (R.-fker X ~> Z) ^nat, forall x U,
12061181
\esum_(i in setT) (l_ i.2 \; k_ i.1) x U = \sum_(i <oo) kl i x U.
12071182
have /ppcard_eqP[f] : ([set: nat] #= [set: nat * nat])%card.
12081183
by rewrite card_eq_sym; exact: card_nat2.
1209-
exists (fun i => l_ (f i).2 \; k_ (f i).1) => x U.
1184+
exists (fun i => [the _.-fker _ ~> _ of l_ (f i).2 \; k_ (f i).1]) => x U.
12101185
by rewrite (reindex_esum [set: nat] _ f)// nneseries_esum// fun_true.
12111186
exists kl => x U mU.
1212-
transitivity ((kseries l_ \; kseries k_) x U).
1187+
transitivity (([the _.-ker _ ~> _ of kseries l_] \; [the _.-ker _ ~> _ of kseries k_]) x U).
12131188
rewrite /= /kcomp [in RHS](eq_measure_integral (l x)); last first.
12141189
by move=> *; rewrite hl_.
12151190
by apply: eq_integral => y _; rewrite hk_.
@@ -1239,7 +1214,7 @@ Section kcomp_sfinite_kernel.
12391214
Context d d' d3 (X : measurableType d) (Y : measurableType d')
12401215
(Z : measurableType d3) (R : realType).
12411216
Variable l : R.-sfker X ~> Y.
1242-
Variable k : R.-sfker (X * Y)%type ~> Z.
1217+
Variable k : R.-sfker [the measurableType _ of (X * Y)%type] ~> Z.
12431218

12441219
HB.instance Definition _ :=
12451220
isKernel.Build _ _ X Z R (l \; k) (measurable_fun_mkcomp_sfinite l k).
@@ -1283,7 +1258,8 @@ Lemma measurable_fun_preimage_integral (l : X -> {measure set Y -> \bar R}) :
12831258
(forall n r, measurable_fun setT (l ^~ (k_ n @^-1` [set r]))) ->
12841259
measurable_fun setT (fun x => \int[l x]_z k z).
12851260
Proof.
1286-
move=> h; apply: (measurable_fun_xsection_integral (k \o snd) l k_2) => /=.
1261+
move=> h; apply: (measurable_fun_xsection_integral (k \o snd) l
1262+
(fun n => [the {nnsfun _ >-> _} of k_2 n])) => /=.
12871263
- by rewrite /k_2 => m n mn; apply/lefP => -[x y] /=; exact/lefP/ndk_.
12881264
- by move=> [x y]; exact: k_k.
12891265
- move=> n r _ /= B mB.
@@ -1310,7 +1286,7 @@ Qed.
13101286
Section integral_kcomp.
13111287
Context d d2 d3 (X : measurableType d) (Y : measurableType d2)
13121288
(Z : measurableType d3) (R : realType).
1313-
Variables (l : R.-sfker X ~> Y) (k : R.-sfker (X * Y)%type ~> Z).
1289+
Variables (l : R.-sfker X ~> Y) (k : R.-sfker [the measurableType _ of (X * Y)%type] ~> Z).
13141290

13151291
Let integral_kcomp_indic x E (mE : measurable E) :
13161292
\int[(l \; k) x]_z (\1_E z)%:E = \int[l x]_y (\int[k (x, y)]_z (\1_E z)%:E).
@@ -1351,7 +1327,7 @@ rewrite /= ge0_integral_fsum//; last 2 first.
13511327
- move=> n y _.
13521328
have := mulemu_ge0 (fun n => f @^-1` [set n]).
13531329
by apply; exact: preimage_nnfun0.
1354-
apply eq_fsbigr => r _.
1330+
apply: eq_fsbigr => r _.
13551331
rewrite (integralM_indic _ (fun r => f @^-1` [set r]))//; last first.
13561332
exact: preimage_nnfun0.
13571333
rewrite /= integral_kcomp_indic; last exact/measurable_sfunP.

0 commit comments

Comments
 (0)