Skip to content

Commit 5d96668

Browse files
committed
minor fixes, updates, rebases
1 parent e57a806 commit 5d96668

File tree

8 files changed

+95
-131
lines changed

8 files changed

+95
-131
lines changed

coq-mathcomp-analysis.opam

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ depends: [
2222
"coq-mathcomp-solvable" { (>= "2.0.0") | (= "dev") }
2323
"coq-mathcomp-field"
2424
"coq-mathcomp-bigenough" { (>= "1.0.0") }
25-
"coq-mathcomp-algebra-tactics" { (>= "1.1.1") }
25+
"coq-mathcomp-algebra-tactics" { (>= "1.2.0") }
26+
"coq-mathcomp-zify" { (>= "1.4.0") }
2627
]
2728

2829
tags: [

theories/lang_syntax.v

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
Require Import String.
22
From HB Require Import structures.
33
From mathcomp Require Import all_ssreflect ssralg ssrnum ssrint interval.
4-
From mathcomp.classical Require Import mathcomp_extra boolp classical_sets.
5-
From mathcomp.classical Require Import functions cardinality fsbigop.
4+
From mathcomp Require Import mathcomp_extra boolp classical_sets.
5+
From mathcomp Require Import functions cardinality fsbigop.
66
Require Import signed reals ereal topology normedtype sequences esum measure.
77
Require Import lebesgue_measure numfun lebesgue_integral kernel prob_lang.
88
Require Import lang_syntax_util.
@@ -89,7 +89,7 @@ Proof. done. Qed.
8989
Let mswap_sigma_additive x : semi_sigma_additive (mswap x).
9090
Proof. exact: measure_semi_sigma_additive. Qed.
9191

92-
HB.instance Definition _ x := isMeasure.Build _ R _
92+
HB.instance Definition _ x := isMeasure.Build _ _ R
9393
(mswap x) (mswap0 x) (mswap_ge0 x) (@mswap_sigma_additive x).
9494

9595
Definition mkswap : _ -> {measure set Z -> \bar R} :=
@@ -185,24 +185,22 @@ Let T0 z : (T' z) set0 = 0. Proof. by []. Qed.
185185
Let T_ge0 z x : 0 <= (T' z) x. Proof. by []. Qed.
186186
Let T_semi_sigma_additive z : semi_sigma_additive (T' z).
187187
Proof. exact: measure_semi_sigma_additive. Qed.
188-
HB.instance Definition _ z := @isMeasure.Build _ R X (T' z) (T0 z) (T_ge0 z)
188+
HB.instance Definition _ z := @isMeasure.Build _ X R (T' z) (T0 z) (T_ge0 z)
189189
(@T_semi_sigma_additive z).
190190

191191
Let sfinT z : sfinite_measure (T' z). Proof. exact: sfinite_kernel_measure. Qed.
192-
HB.instance Definition _ z := @Measure_isSFinite_subdef.Build _ X R
193-
(T' z) (sfinT z).
192+
HB.instance Definition _ z := @isSFinite.Build _ X R (T' z) (sfinT z).
194193

195194
Definition U' z : set Y -> \bar R := u z.
196195
Let U0 z : (U' z) set0 = 0. Proof. by []. Qed.
197196
Let U_ge0 z x : 0 <= (U' z) x. Proof. by []. Qed.
198197
Let U_semi_sigma_additive z : semi_sigma_additive (U' z).
199198
Proof. exact: measure_semi_sigma_additive. Qed.
200-
HB.instance Definition _ z := @isMeasure.Build _ R Y (U' z) (U0 z) (U_ge0 z)
199+
HB.instance Definition _ z := @isMeasure.Build _ Y R (U' z) (U0 z) (U_ge0 z)
201200
(@U_semi_sigma_additive z).
202201

203202
Let sfinU z : sfinite_measure (U' z). Proof. exact: sfinite_kernel_measure. Qed.
204-
HB.instance Definition _ z := @Measure_isSFinite_subdef.Build _ Y R
205-
(U' z) (sfinU z).
203+
HB.instance Definition _ z := @isSFinite.Build _ Y R (U' z) (sfinU z).
206204

207205
Lemma letin'C z A : measurable A ->
208206
letin' t
@@ -271,7 +269,7 @@ Inductive typ :=
271269
| Pair : typ -> typ -> typ
272270
| Prob : typ -> typ.
273271

274-
Canonical stype_eqType := Equality.Pack (@gen_eqMixin typ).
272+
HB.instance Definition _ := gen_eqMixin typ.
275273

276274
Fixpoint measurable_of_typ (t : typ) : {d & measurableType d} :=
277275
match t with

theories/lang_syntax_examples.v

Lines changed: 41 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ Lemma letin'_sample_bernoulli d d' (T : measurableType d)
5959
Proof.
6060
rewrite letin'E/=.
6161
rewrite ge0_integral_measure_sum// 2!big_ord_recl/= big_ord0 adde0/=.
62-
by rewrite !ge0_integral_mscale//= !integral_dirac//= indicT 2!mul1e.
62+
by rewrite !ge0_integral_mscale//= !integral_dirac//= !diracT 2!mul1e.
6363
Qed.
6464

6565
Section letin'_return.
@@ -81,7 +81,7 @@ Lemma letin'_retk (f : X -> Y) (mf : measurable_fun setT f)
8181
(k : R.-sfker Y * X ~> Z) x U :
8282
measurable U -> letin' (ret mf) k x U = k (f x, x) U.
8383
Proof.
84-
move=> mU; rewrite letin'E retE integral_dirac ?indicT ?mul1e//.
84+
move=> mU; rewrite letin'E retE integral_dirac ?diracT ?mul1e//.
8585
exact: (measurableT_comp (measurable_kernel k _ mU)).
8686
Qed.
8787

@@ -209,48 +209,48 @@ Definition sample_pair_syntax : exp _ [::] _ :=
209209
Lemma exec_sample_pair0 (A : set (bool * bool)) :
210210
@execP R [::] _ sample_pair_syntax0 tt A =
211211
((1 / 2)%:E *
212-
((1 / 3)%:E * ((true, true) \in A)%:R%:E +
213-
(1 - 1 / 3)%:E * ((true, false) \in A)%:R%:E) +
212+
((1 / 3)%:E * \d_(true, true) A +
213+
(1 - 1 / 3)%:E * \d_(true, false) A) +
214214
(1 - 1 / 2)%:E *
215-
((1 / 3)%:E * ((false, true) \in A)%:R%:E +
216-
(1 - 1 / 3)%:E * ((false, false) \in A)%:R%:E))%E.
215+
((1 / 3)%:E * \d_(false, true) A +
216+
(1 - 1 / 3)%:E * \d_(false, false) A))%E.
217217
Proof.
218218
rewrite !execP_letin !execP_sample !execD_bernoulli execP_return /=.
219219
rewrite execD_pair !exp_var'E (execD_var_erefl "x") (execD_var_erefl "y") /=.
220220
rewrite letin'E integral_measure_add//= !ge0_integral_mscale//= /onem.
221-
rewrite !integral_dirac//= !indicE !in_setT/= !mul1e.
221+
rewrite !integral_dirac//= !diracT !mul1e.
222222
rewrite !letin'E !integral_measure_add//= !ge0_integral_mscale//= /onem.
223-
by rewrite !integral_dirac//= !indicE !in_setT/= !mul1e !diracE.
223+
by rewrite !integral_dirac//= !diracT !mul1e.
224224
Qed.
225225

226226
Lemma exec_sample_pair0_TandT :
227227
@execP R [::] _ sample_pair_syntax0 tt [set (true, true)] = (1 / 6)%:E.
228228
Proof.
229-
rewrite exec_sample_pair0 mem_set//; do 3 rewrite memNset//=.
229+
rewrite exec_sample_pair0 !diracE mem_set//; do 3 rewrite memNset//=.
230230
by rewrite /= !mule0 mule1 !add0e mule0 adde0; congr (_%:E); lra.
231231
Qed.
232232

233233
Lemma exec_sample_pair0_TandF :
234234
@execP R [::] _ sample_pair_syntax0 tt [set (true, false)] = (1 / 3)%:E.
235235
Proof.
236-
rewrite exec_sample_pair0 memNset// mem_set//; do 2 rewrite memNset//.
236+
rewrite exec_sample_pair0 !diracE memNset// mem_set//; do 2 rewrite memNset//.
237237
by rewrite /= !mule0 mule1 !add0e mule0 adde0; congr (_%:E); lra.
238238
Qed.
239239

240240
Lemma exec_sample_pair0_TandT' :
241241
@execP R [::] _ sample_pair_syntax0 tt [set p | p.1 && p.2] = (1 / 6)%:E.
242242
Proof.
243-
rewrite exec_sample_pair0 mem_set//; do 3 rewrite memNset//=.
243+
rewrite exec_sample_pair0 !diracE mem_set//; do 3 rewrite memNset//=.
244244
by rewrite /= !mule0 mule1 !add0e mule0 adde0; congr (_%:E); lra.
245245
Qed.
246246

247247
Lemma exec_sample_pair_TorT :
248248
(projT1 (execD sample_pair_syntax)) tt [set p | p.1 || p.2] = (2 / 3)%:E.
249249
Proof.
250250
rewrite execD_normalize_pt normalizeE/= exec_sample_pair0.
251-
do 4 rewrite mem_set//=.
251+
rewrite !diracE; do 4 rewrite mem_set//=.
252252
rewrite eqe ifF; last by apply/negbTE/negP => /orP[/eqP|//]; lra.
253-
rewrite exec_sample_pair0; do 3 rewrite mem_set//; rewrite memNset//=.
253+
rewrite exec_sample_pair0 !diracE; do 3 rewrite mem_set//; rewrite memNset//=.
254254
by rewrite !mule1; congr (_%:E); field.
255255
Qed.
256256

@@ -260,18 +260,17 @@ Definition sample_and_syntax0 : @exp R _ [::] _ :=
260260
return #{"x"} && #{"y"}].
261261

262262
Lemma exec_sample_and0 (A : set bool) :
263-
@execP R [::] _ sample_and_syntax0 tt A =
264-
((1 / 6)%:E * (true \in A)%:R%:E +
265-
(1 - 1 / 6)%:E * (false \in A)%:R%:E)%E.
263+
@execP R [::] _ sample_and_syntax0 tt A = ((1 / 6)%:E * \d_true A +
264+
(1 - 1 / 6)%:E * \d_false A)%E.
266265
Proof.
267266
rewrite !execP_letin !execP_sample !execD_bernoulli execP_return /=.
268267
rewrite (@execD_bin _ _ binop_and) !exp_var'E (execD_var_erefl "x") (execD_var_erefl "y") /=.
269268
rewrite letin'E integral_measure_add//= !ge0_integral_mscale//= /onem.
270-
rewrite !integral_dirac//= !indicE !in_setT/= !mul1e.
269+
rewrite !integral_dirac//= !diracT !mul1e.
271270
rewrite !letin'E !integral_measure_add//= !ge0_integral_mscale//= /onem.
272-
rewrite !integral_dirac//= !indicE !in_setT/= !mul1e !diracE.
271+
rewrite !integral_dirac//= !diracT !mul1e.
273272
rewrite muleDr// -addeA; congr (_ + _)%E.
274-
by rewrite !muleA; congr (_%:E); congr (_ * _); field.
273+
by rewrite !muleA; congr (_%:E); congr (_ * _); field.
275274
rewrite -muleDl// !muleA -muleDl//.
276275
by congr (_%:E); congr (_ * _); field.
277276
Qed.
@@ -283,19 +282,18 @@ Definition sample_bernoulli_and3 : @exp R _ [::] _ :=
283282
return #{"x"} && #{"y"} && #{"z"}].
284283

285284
Lemma exec_sample_bernoulli_and3 t U :
286-
execP sample_bernoulli_and3 t U =
287-
((1 / 8)%:E * (true \in U)%:R%:E +
288-
(1 - 1 / 8)%:E * (false \in U)%:R%:E)%E.
285+
execP sample_bernoulli_and3 t U = ((1 / 8)%:E * \d_true U +
286+
(1 - 1 / 8)%:E * \d_false U)%E.
289287
Proof.
290288
rewrite !execP_letin !execP_sample !execD_bernoulli execP_return /=.
291289
rewrite !(@execD_bin _ _ binop_and) !exp_var'E.
292290
rewrite (execD_var_erefl "x") (execD_var_erefl "y") (execD_var_erefl "z") /=.
293291
rewrite letin'E integral_measure_add//= !ge0_integral_mscale//= /onem.
294-
rewrite !integral_dirac//= !indicE !in_setT/= !mul1e.
292+
rewrite !integral_dirac//= !diracT !mul1e.
295293
rewrite !letin'E !integral_measure_add//= !ge0_integral_mscale//= /onem.
296-
rewrite !integral_dirac//= !indicE !in_setT/= !mul1e.
294+
rewrite !integral_dirac//= !diracT !mul1e.
297295
rewrite !letin'E !integral_measure_add//= !ge0_integral_mscale//= /onem.
298-
rewrite !integral_dirac//= !indicE !in_setT/= !mul1e !diracE.
296+
rewrite !integral_dirac//= !diracT !mul1e.
299297
rewrite !muleDr// -!addeA.
300298
by congr (_ + _)%E; rewrite ?addeA !muleA -?muleDl//;
301299
congr (_ * _)%E; congr (_%:E); field.
@@ -307,25 +305,6 @@ Definition sample_add_syntax0 : @exp R _ [::] _ :=
307305
let "z" := Sample {exp_bernoulli (1 / 2)%:nng (p1S 1)} in
308306
return #{"x"} && #{"y"} && #{"z"}].
309307

310-
Lemma exec_sample_bernoulli_and3 t U :
311-
execP sample_bernoulli_and3 t U =
312-
((1 / 8)%:E * (true \in U)%:R%:E +
313-
(1 - 1 / 8)%:E * (false \in U)%:R%:E)%E.
314-
Proof.
315-
rewrite !execP_letin !execP_sample !execD_bernoulli execP_return /=.
316-
rewrite !(@execD_bin _ _ binop_and) !exp_var'E.
317-
rewrite (execD_var_erefl "x") (execD_var_erefl "y") (execD_var_erefl "z") /=.
318-
rewrite letin'E integral_measure_add//= !ge0_integral_mscale//= /onem.
319-
rewrite !integral_dirac//= !indicE !in_setT/= !mul1e.
320-
rewrite !letin'E !integral_measure_add//= !ge0_integral_mscale//= /onem.
321-
rewrite !integral_dirac//= !indicE !in_setT/= !mul1e.
322-
rewrite !letin'E !integral_measure_add//= !ge0_integral_mscale//= /onem.
323-
rewrite !integral_dirac//= !indicE !in_setT/= !mul1e !diracE.
324-
rewrite !muleDr// -!addeA.
325-
by congr (_ + _)%E; rewrite ?addeA !muleA -?muleDl//;
326-
congr (_ * _)%E; congr (_%:E); field.
327-
Qed.
328-
329308
End sample_pair.
330309

331310
Section bernoulli_examples.
@@ -357,24 +336,23 @@ rewrite !integral_measure_add //=; last by move=> b _; rewrite integral_ge0.
357336
rewrite !ge0_integral_mscale //=; last 2 first.
358337
by move=> b _; rewrite integral_ge0.
359338
by move=> b _; rewrite integral_ge0.
360-
rewrite !integral_dirac// !indicE !in_setT !mul1e.
339+
rewrite !integral_dirac// !diracT !mul1e.
361340
rewrite iteE/= !ge0_integral_mscale//=.
362341
rewrite ger0_norm//.
363342
rewrite !integral_indic//= !iteE/= /mscale/=.
364-
rewrite setTI diracE !in_setT !mule1.
343+
rewrite setTI !diracT !mule1.
365344
rewrite ger0_norm//.
366345
rewrite -EFinD/= eqe ifF; last first.
367346
by apply/negbTE/negP => /orP[/eqP|//]; rewrite /onem; lra.
368347
rewrite !letin'E/= !iteE/=.
369348
rewrite !ge0_integral_mscale//=.
370349
rewrite ger0_norm//.
371-
rewrite !integral_dirac//= !indicE !in_setT /= !mul1e ger0_norm//.
350+
rewrite !integral_dirac//= !diracT !mul1e ger0_norm//.
372351
rewrite exp_var'E (execD_var_erefl "x")/=.
373352
rewrite /bernoulli/= measure_addE/= /mscale/= !mul1r.
374-
rewrite muleDl//; congr (_ + _)%E;
375-
rewrite -!EFinM;
376-
congr (_%:E);
377-
by rewrite indicE /onem; case: (_ \in _); field.
353+
by rewrite muleDl//; congr (_ + _)%E;
354+
rewrite -!EFinM; congr (_%:E);
355+
rewrite !indicT !indicE /onem /=; case: (_ \in _); field.
378356
Qed.
379357

380358
Definition bernoulli12_score := [Normalize
@@ -400,25 +378,25 @@ rewrite !integral_measure_add //=; last by move=> b _; rewrite integral_ge0.
400378
rewrite !ge0_integral_mscale //=; last 2 first.
401379
by move=> b _; rewrite integral_ge0.
402380
by move=> b _; rewrite integral_ge0.
403-
rewrite !integral_dirac// !indicE !in_setT !mul1e.
381+
rewrite !integral_dirac// !diracT !mul1e.
404382
rewrite iteE/= !ge0_integral_mscale//=.
405383
rewrite ger0_norm//.
406384
rewrite !integral_indic//= !iteE/= /mscale/=.
407-
rewrite setTI diracE !in_setT !mule1.
385+
rewrite setTI !diracT !mule1.
408386
rewrite ger0_norm//.
409387
rewrite -EFinD/= eqe ifF; last first.
410388
apply/negbTE/negP => /orP[/eqP|//].
411389
by rewrite /onem; lra.
412390
rewrite !letin'E/= !iteE/=.
413391
rewrite !ge0_integral_mscale//=.
414392
rewrite ger0_norm//.
415-
rewrite !integral_dirac//= !indicE !in_setT /= !mul1e ger0_norm//.
393+
rewrite !integral_dirac//= !diracT !mul1e ger0_norm//.
416394
rewrite exp_var'E (execD_var_erefl "x")/=.
417395
rewrite /bernoulli/= measure_addE/= /mscale/= !mul1r.
418396
rewrite muleDl//; congr (_ + _)%E;
419397
rewrite -!EFinM;
420398
congr (_%:E);
421-
by rewrite indicE /onem; case: (_ \in _); field.
399+
by rewrite !indicT !indicE /onem /=; case: (_ \in _); field.
422400
Qed.
423401

424402
(* https://dl.acm.org/doi/pdf/10.1145/2933575.2935313 (Sect. 4) *)
@@ -447,26 +425,26 @@ under eq_integral.
447425
over.
448426
rewrite !integral_measure_add //=; last by move=> b _; rewrite integral_ge0.
449427
rewrite !ge0_integral_mscale //=; last 2 first.
450-
by move=> b _; rewrite integral_ge0.
451-
by move=> b _; rewrite integral_ge0.
452-
rewrite !integral_dirac// !indicE !in_setT !mul1e.
428+
by move=> b _; exact: integral_ge0.
429+
by move=> b _; exact: integral_ge0.
430+
rewrite !integral_dirac// !diracT !mul1e.
453431
rewrite iteE/= !ge0_integral_mscale//=.
454432
rewrite ger0_norm//.
455-
rewrite !integral_indic//= !iteE/= /mscale/=.
456-
rewrite setTI diracE !in_setT !mule1.
433+
rewrite !integral_cst//= !diracT !(mule1,mul1e).
434+
rewrite !iteE/= /mscale/= !diracT !mule1.
457435
rewrite ger0_norm//.
458436
rewrite -EFinD/= eqe ifF; last first.
459437
apply/negbTE/negP => /orP[/eqP|//].
460438
by rewrite /onem; lra.
461439
rewrite !letin'E/= !iteE/=.
462440
rewrite !ge0_integral_mscale//=.
463441
rewrite ger0_norm//.
464-
rewrite !integral_dirac//= !indicE !in_setT /= !mul1e ger0_norm//.
442+
rewrite !integral_dirac//= !diracT !mul1e ger0_norm//.
465443
rewrite /bernoulli/= measure_addE/= /mscale/= !mul1r.
466444
rewrite muleDl//; congr (_ + _)%E;
467445
rewrite -!EFinM;
468446
congr (_%:E);
469-
by rewrite indicE /onem; case: (_ \in _); field.
447+
by rewrite !indicT !indicE /onem /=; case: (_ \in _); field.
470448
Qed.
471449

472450
End bernoulli_examples.
@@ -494,7 +472,7 @@ Proof.
494472
apply/eq_sfkernel => x U.
495473
rewrite letin'E/= /sample; unlock.
496474
rewrite integral_measure_add//= ge0_integral_mscale//= ge0_integral_mscale//=.
497-
rewrite integral_dirac//= integral_dirac//= !indicT/= !mul1e.
475+
rewrite !integral_dirac//= !diracT/= !mul1e.
498476
by rewrite /mscale/= iteE//= iteE//= fail'E mule0 adde0 ger0_norm.
499477
Qed.
500478

theories/lang_syntax_toy.v

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Require Import String Classical.
22
From HB Require Import structures.
33
From mathcomp Require Import all_ssreflect ssralg.
4-
From mathcomp.classical Require Import mathcomp_extra boolp.
4+
From mathcomp Require Import mathcomp_extra boolp.
55
Require Import signed reals topology normedtype.
66
Require Import lang_syntax_util.
77

@@ -36,7 +36,7 @@ Variables (R : realType).
3636

3737
Inductive typ := Real | Unit.
3838

39-
Canonical typ_eqType := Equality.Pack (@gen_eqMixin typ).
39+
HB.instance Definition _ := gen_eqMixin typ.
4040

4141
Definition iter_pair (l : list Type) : Type :=
4242
foldr (fun x y => (x * y)%type) unit l.
@@ -169,7 +169,7 @@ Implicit Types str : string.
169169

170170
Inductive typ := Real | Unit | Pair : typ -> typ -> typ.
171171

172-
Canonical typ_eqType := Equality.Pack (@gen_eqMixin typ).
172+
HB.instance Definition _ := gen_eqMixin typ.
173173

174174
Fixpoint mtyp (t : typ) : Type :=
175175
match t with

theories/lang_syntax_util.v

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ Require Import signed.
88
(* Shared by lang_syntax_*.v files *)
99
(******************************************************************************)
1010

11-
Definition string_eqMixin := @EqMixin string String.eqb eqb_spec.
12-
Canonical string_eqType := EqType string string_eqMixin.
11+
HB.instance Definition _ := hasDecEq.Build string eqb_spec.
1312

1413
Ltac inj_ex H := revert H;
1514
match goal with

0 commit comments

Comments
 (0)