@@ -59,7 +59,7 @@ Lemma letin'_sample_bernoulli d d' (T : measurableType d)
5959Proof .
6060rewrite letin'E/=.
6161rewrite 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.
6363Qed .
6464
6565Section 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.
8383Proof .
84- move=> mU; rewrite letin'E retE integral_dirac ?indicT ?mul1e//.
84+ move=> mU; rewrite letin'E retE integral_dirac ?diracT ?mul1e//.
8585exact: (measurableT_comp (measurable_kernel k _ mU)).
8686Qed .
8787
@@ -209,48 +209,48 @@ Definition sample_pair_syntax : exp _ [::] _ :=
209209Lemma 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.
217217Proof .
218218rewrite !execP_letin !execP_sample !execD_bernoulli execP_return /=.
219219rewrite execD_pair !exp_var'E (execD_var_erefl "x") (execD_var_erefl "y") /=.
220220rewrite letin'E integral_measure_add//= !ge0_integral_mscale//= /onem.
221- rewrite !integral_dirac//= !indicE !in_setT/= !mul1e.
221+ rewrite !integral_dirac//= !diracT !mul1e.
222222rewrite !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.
224224Qed .
225225
226226Lemma exec_sample_pair0_TandT :
227227 @execP R [::] _ sample_pair_syntax0 tt [set (true, true)] = (1 / 6)%:E.
228228Proof .
229- rewrite exec_sample_pair0 mem_set//; do 3 rewrite memNset//=.
229+ rewrite exec_sample_pair0 !diracE mem_set//; do 3 rewrite memNset//=.
230230by rewrite /= !mule0 mule1 !add0e mule0 adde0; congr (_%:E); lra.
231231Qed .
232232
233233Lemma exec_sample_pair0_TandF :
234234 @execP R [::] _ sample_pair_syntax0 tt [set (true, false)] = (1 / 3)%:E.
235235Proof .
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//.
237237by rewrite /= !mule0 mule1 !add0e mule0 adde0; congr (_%:E); lra.
238238Qed .
239239
240240Lemma exec_sample_pair0_TandT' :
241241 @execP R [::] _ sample_pair_syntax0 tt [set p | p.1 && p.2] = (1 / 6)%:E.
242242Proof .
243- rewrite exec_sample_pair0 mem_set//; do 3 rewrite memNset//=.
243+ rewrite exec_sample_pair0 !diracE mem_set//; do 3 rewrite memNset//=.
244244by rewrite /= !mule0 mule1 !add0e mule0 adde0; congr (_%:E); lra.
245245Qed .
246246
247247Lemma exec_sample_pair_TorT :
248248 (projT1 (execD sample_pair_syntax)) tt [set p | p.1 || p.2] = (2 / 3)%:E.
249249Proof .
250250rewrite execD_normalize_pt normalizeE/= exec_sample_pair0.
251- do 4 rewrite mem_set//=.
251+ rewrite !diracE; do 4 rewrite mem_set//=.
252252rewrite 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//=.
254254by rewrite !mule1; congr (_%:E); field.
255255Qed .
256256
@@ -260,18 +260,17 @@ Definition sample_and_syntax0 : @exp R _ [::] _ :=
260260 return #{"x"} && #{"y"}].
261261
262262Lemma 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.
266265Proof .
267266rewrite !execP_letin !execP_sample !execD_bernoulli execP_return /=.
268267rewrite (@execD_bin _ _ binop_and) !exp_var'E (execD_var_erefl "x") (execD_var_erefl "y") /=.
269268rewrite letin'E integral_measure_add//= !ge0_integral_mscale//= /onem.
270- rewrite !integral_dirac//= !indicE !in_setT/= !mul1e.
269+ rewrite !integral_dirac//= !diracT !mul1e.
271270rewrite !letin'E !integral_measure_add//= !ge0_integral_mscale//= /onem.
272- rewrite !integral_dirac//= !indicE !in_setT/= ! mul1e !diracE .
271+ rewrite !integral_dirac//= !diracT ! mul1e.
273272rewrite muleDr// -addeA; congr (_ + _)%E.
274- by rewrite !muleA; congr (_%:E); congr (_ * _); field.
273+ by rewrite !muleA; congr (_%:E); congr (_ * _); field.
275274rewrite -muleDl// !muleA -muleDl//.
276275by congr (_%:E); congr (_ * _); field.
277276Qed .
@@ -283,19 +282,18 @@ Definition sample_bernoulli_and3 : @exp R _ [::] _ :=
283282 return #{"x"} && #{"y"} && #{"z"}].
284283
285284Lemma 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.
289287Proof .
290288rewrite !execP_letin !execP_sample !execD_bernoulli execP_return /=.
291289rewrite !(@execD_bin _ _ binop_and) !exp_var'E.
292290rewrite (execD_var_erefl "x") (execD_var_erefl "y") (execD_var_erefl "z") /=.
293291rewrite letin'E integral_measure_add//= !ge0_integral_mscale//= /onem.
294- rewrite !integral_dirac//= !indicE !in_setT/= !mul1e.
292+ rewrite !integral_dirac//= !diracT !mul1e.
295293rewrite !letin'E !integral_measure_add//= !ge0_integral_mscale//= /onem.
296- rewrite !integral_dirac//= !indicE !in_setT/= !mul1e.
294+ rewrite !integral_dirac//= !diracT !mul1e.
297295rewrite !letin'E !integral_measure_add//= !ge0_integral_mscale//= /onem.
298- rewrite !integral_dirac//= !indicE !in_setT/= ! mul1e !diracE .
296+ rewrite !integral_dirac//= !diracT ! mul1e.
299297rewrite !muleDr// -!addeA.
300298by congr (_ + _)%E; rewrite ?addeA !muleA -?muleDl//;
301299congr (_ * _)%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-
329308End sample_pair.
330309
331310Section bernoulli_examples.
@@ -357,24 +336,23 @@ rewrite !integral_measure_add //=; last by move=> b _; rewrite integral_ge0.
357336rewrite !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.
361340rewrite iteE/= !ge0_integral_mscale//=.
362341rewrite ger0_norm//.
363342rewrite !integral_indic//= !iteE/= /mscale/=.
364- rewrite setTI diracE !in_setT !mule1.
343+ rewrite setTI !diracT !mule1.
365344rewrite ger0_norm//.
366345rewrite -EFinD/= eqe ifF; last first.
367346 by apply/negbTE/negP => /orP[/eqP|//]; rewrite /onem; lra.
368347rewrite !letin'E/= !iteE/=.
369348rewrite !ge0_integral_mscale//=.
370349rewrite ger0_norm//.
371- rewrite !integral_dirac//= !indicE !in_setT /= !mul1e ger0_norm//.
350+ rewrite !integral_dirac//= !diracT !mul1e ger0_norm//.
372351rewrite exp_var'E (execD_var_erefl "x")/=.
373352rewrite /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.
378356Qed .
379357
380358Definition bernoulli12_score := [Normalize
@@ -400,25 +378,25 @@ rewrite !integral_measure_add //=; last by move=> b _; rewrite integral_ge0.
400378rewrite !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.
404382rewrite iteE/= !ge0_integral_mscale//=.
405383rewrite ger0_norm//.
406384rewrite !integral_indic//= !iteE/= /mscale/=.
407- rewrite setTI diracE !in_setT !mule1.
385+ rewrite setTI !diracT !mule1.
408386rewrite ger0_norm//.
409387rewrite -EFinD/= eqe ifF; last first.
410388 apply/negbTE/negP => /orP[/eqP|//].
411389 by rewrite /onem; lra.
412390rewrite !letin'E/= !iteE/=.
413391rewrite !ge0_integral_mscale//=.
414392rewrite ger0_norm//.
415- rewrite !integral_dirac//= !indicE !in_setT /= !mul1e ger0_norm//.
393+ rewrite !integral_dirac//= !diracT !mul1e ger0_norm//.
416394rewrite exp_var'E (execD_var_erefl "x")/=.
417395rewrite /bernoulli/= measure_addE/= /mscale/= !mul1r.
418396rewrite 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.
422400Qed .
423401
424402(* https://dl.acm.org/doi/pdf/10.1145/2933575.2935313 (Sect. 4) *)
@@ -447,26 +425,26 @@ under eq_integral.
447425 over.
448426rewrite !integral_measure_add //=; last by move=> b _; rewrite integral_ge0.
449427rewrite !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.
453431rewrite iteE/= !ge0_integral_mscale//=.
454432rewrite 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.
457435rewrite ger0_norm//.
458436rewrite -EFinD/= eqe ifF; last first.
459437 apply/negbTE/negP => /orP[/eqP|//].
460438 by rewrite /onem; lra.
461439rewrite !letin'E/= !iteE/=.
462440rewrite !ge0_integral_mscale//=.
463441rewrite ger0_norm//.
464- rewrite !integral_dirac//= !indicE !in_setT /= !mul1e ger0_norm//.
442+ rewrite !integral_dirac//= !diracT !mul1e ger0_norm//.
465443rewrite /bernoulli/= measure_addE/= /mscale/= !mul1r.
466444rewrite 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.
470448Qed .
471449
472450End bernoulli_examples.
@@ -494,7 +472,7 @@ Proof.
494472apply/eq_sfkernel => x U.
495473rewrite letin'E/= /sample; unlock.
496474rewrite integral_measure_add//= ge0_integral_mscale//= ge0_integral_mscale//=.
497- rewrite integral_dirac//= integral_dirac//= !indicT /= !mul1e.
475+ rewrite ! integral_dirac//= !diracT /= !mul1e.
498476by rewrite /mscale/= iteE//= iteE//= fail'E mule0 adde0 ger0_norm.
499477Qed .
500478
0 commit comments