@@ -209,11 +209,11 @@ 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") /=.
@@ -226,31 +226,31 @@ Qed.
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,9 +260,8 @@ 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") /=.
@@ -271,7 +270,7 @@ rewrite !integral_dirac//= !indicE !in_setT/= !mul1e.
271270rewrite !letin'E !integral_measure_add//= !ge0_integral_mscale//= /onem.
272271rewrite !integral_dirac//= !indicE !in_setT/= !mul1e !diracE.
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,9 +282,8 @@ 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.
@@ -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.
@@ -447,8 +426,8 @@ under eq_integral.
447426 over.
448427rewrite !integral_measure_add //=; last by move=> b _; rewrite integral_ge0.
449428rewrite !ge0_integral_mscale //=; last 2 first.
450- by move=> b _; rewrite integral_ge0.
451- by move=> b _; rewrite integral_ge0.
429+ by move=> b _; exact: integral_ge0.
430+ by move=> b _; exact: integral_ge0.
452431rewrite !integral_dirac// !indicE !in_setT !mul1e.
453432rewrite iteE/= !ge0_integral_mscale//=.
454433rewrite ger0_norm//.
0 commit comments