@@ -9,7 +9,7 @@ Require Import prob_lang lang_syntax_util lang_syntax lang_syntax_examples.
99From mathcomp Require Import ring lra.
1010
1111(**md************************************************************************* *)
12- (* # Edd 's table game example *)
12+ (* # Eddy 's table game example *)
1313(* *)
1414(* ref: *)
1515(* - Chung-chieh Shan, Equational reasoning for probabilistic programming, *)
@@ -185,7 +185,7 @@ apply: (@le_lt_trans _ _ (\int[lebesgue_measure]_(x in `[0%R, 1%R]) (beta_nat_pd
185185 by apply/EFin_measurable_fun; exact: measurable_beta_nat_pdf.
186186 - move=> x _ /=; rewrite patchE; case: ifPn => // _.
187187 by rewrite lee_fin beta_nat_pdf_ge0.
188- - apply: (measurable_restrict (E := setT) _ _ _ _).1 => //.
188+ - apply/ (measurable_restrict _ _ _) => //.
189189 apply/measurable_funTS/measurableT_comp => //.
190190 exact: measurable_beta_nat_pdf.
191191 - move=> x _.
@@ -276,7 +276,7 @@ rewrite (@execD_bin _ _ binop_minus) !execD_real/= !execD_nat.
276276rewrite !exp_var'E !(execD_var_erefl "p") !(execD_var_erefl "a2")/=.
277277rewrite !letin'E/=.
278278move: r01 => /andP[r0 r1].
279- by apply/integral_binomial_bernoulli /andP.
279+ by apply/integral_binomial_prob /andP.
280280Qed .
281281
282282Lemma casino12 : execD casino1 = execD casino2.
@@ -443,7 +443,7 @@ transitivity (\int[beta_nat 6 4]_(y in `[0%R, 1%R]%classic : set R)
443443 rewrite patchE; case: ifPn => //.
444444 rewrite /beta_nat_pdf /ubeta_nat_pdf notin_setE/= in_itv/= => /negP/negbTE ->.
445445 by rewrite mul0r mule0.
446- have := (@beta_nat_bernE R 6 4 0 3 U) isT isT.
446+ have := (@beta_nat_bernoulliE R 6 4 0 3 U) isT isT.
447447rewrite /beta_nat_bernoulli /ubeta_nat_pdf /=.
448448under eq_integral.
449449 move=> x.
@@ -468,7 +468,7 @@ have f1 x : x \in (`[0%R, 1%R]%classic : set R) -> (f x <= 1)%R.
468468 by move => /f01/andP[].
469469under eq_integral => x.
470470 move=> x01.
471- rewrite bernoulliE_ext //=; last first.
471+ rewrite bernoulliE //=; last first.
472472 by rewrite subr_ge0 f1//= lerBlDr addrC -lerBlDr subrr f0.
473473 over.
474474rewrite /=.
@@ -501,8 +501,7 @@ rewrite [X in _ + X = _]ge0_integralZr//=; last 2 first.
501501 by apply/EFin_measurable_fun; exact: measurable_beta_nat_pdf.
502502 by move=> x x01; rewrite mule_ge0// lee_fin// ?f0// ?inE// beta_nat_pdf_ge0.
503503under [in RHS]eq_integral => x x01.
504- rewrite bernoulliE_ext//=; last first.
505- by rewrite f0//= f1.
504+ rewrite bernoulliE//=; last by rewrite f0//= f1.
506505 rewrite muleDl//.
507506 over.
508507rewrite /= ge0_integralD//=; last 4 first.
@@ -653,7 +652,7 @@ rewrite (@execD_bin _ _ binop_minus) execD_pow/= (@execD_bin _ _ binop_minus).
653652rewrite !execD_real/= exp_var'E (execD_var_erefl "p")/=.
654653transitivity (\int[beta_nat 6 4]_y bernoulli (1 - (1 - y) ^+ 3) U : \bar R)%E.
655654 by rewrite /beta_nat_bernoulli !letin'E/= /onem.
656- rewrite bernoulliE_ext //=; last lra.
655+ rewrite bernoulliE //=; last lra.
657656rewrite integral_beta_nat//; last first.
658657 by have := @integral_beta_bernoulli_onem_lty R _ _ _ U.
659658 apply: (measurableT_comp (measurable_bernoulli2 _)) => //.
@@ -678,28 +677,17 @@ rewrite (@integral_bernoulli_beta_nat_pdf (fun x => (1 - x) ^+ 3)%R U (1 / 11))/
678677 rewrite [RHS]integral_beta_nat//; last 2 first.
679678 apply: (measurableT_comp (measurable_bernoulli2 _)) => //.
680679 apply: measurable_fun_if => //.
681- apply: measurable_and => //.
682- apply: (measurable_fun_bool true) => //=.
683- rewrite (_ : _ @^-1` _ = `[0%R, +oo[%classic)//.
684- by apply/seteqP; split => [z|z] /=; rewrite in_itv/= andbT.
685- apply: (measurable_fun_bool true) => //=.
686- by rewrite (_ : _ @^-1` _ = `]-oo, 1%R]%classic).
680+ by apply: measurable_and => //; exact: measurable_fun_ler.
687681 apply: measurable_funTS; apply: measurable_funM => //.
688- apply: measurable_fun_pow => //.
689- by apply: measurable_funB => //.
682+ by apply: measurable_fun_pow => //; exact: measurable_funB.
690683 rewrite (le_lt_trans _ (integral_beta_bernoulli_expn_lty 3 6 4 U))//.
691684 rewrite integral_mkcond /=; apply: ge0_le_integral => //=.
692685 by move=> z _; rewrite patchE expr0 mul1r; case: ifPn.
693- apply: (measurable_restrict _ _ _ _).1 => //.
686+ apply/ (measurable_restrict _ _ _) => //.
694687 apply: measurable_funTS; apply: measurableT_comp => //=.
695688 apply: (measurableT_comp (measurable_bernoulli2 _)) => //=.
696689 apply: measurable_fun_if => //=.
697- apply: measurable_and => //.
698- apply: (measurable_fun_bool true) => //=.
699- rewrite (_ : _ @^-1` _ = `[0%R, +oo[%classic)//.
700- by apply/seteqP; split => [z|z] /=; rewrite in_itv/= andbT.
701- apply: (measurable_fun_bool true) => //=.
702- by rewrite (_ : _ @^-1` _ = `]-oo, 1%R]%classic).
690+ by apply: measurable_and => //; exact: measurable_fun_ler.
703691 apply: measurable_funTS; apply: measurable_funM => //.
704692 by apply: measurable_fun_pow => //; exact: measurable_funB.
705693 by apply/measurableT_comp => //; exact: measurable_bernoulli_expn.
@@ -709,7 +697,7 @@ rewrite (@integral_bernoulli_beta_nat_pdf (fun x => (1 - x) ^+ 3)%R U (1 / 11))/
709697 apply: eq_integral => z z01.
710698 rewrite inE/= in_itv/= in z01.
711699 by rewrite z01 expr0 mul1r.
712- rewrite beta_nat_bernE //= bernoulliE_ext //=; last first.
700+ rewrite beta_nat_bernoulliE //= bernoulliE //=; last first.
713701 by rewrite div_beta_nat_norm_ge0// div_beta_nat_norm_le1.
714702 rewrite probability_setT.
715703 by congr (_ * _ + _ * _)%:E; rewrite /onem;
@@ -730,20 +718,20 @@ rewrite !execP_sample !execD_bernoulli !execD_real/=.
730718apply: funext=> x.
731719apply: eq_probability=> /= y.
732720rewrite !normalizeE/=.
733- rewrite !bernoulliE_ext //=; [|lra..].
721+ rewrite !bernoulliE //=; [|lra..].
734722rewrite !diracT !mule1 -EFinD add_onemK onee_eq0/=.
735723rewrite !letin'E.
736724under eq_integral.
737725 move=> x0 _ /=.
738- rewrite !bernoulliE_ext //=; [|lra..].
726+ rewrite !bernoulliE //=; [|lra..].
739727 rewrite !diracT !mule1 -EFinD add_onemK.
740728 over.
741729rewrite !ge0_integral_mscale//= (ger0_norm (ltW p0))//.
742730rewrite integral_dirac// !diracT !indicT /= !mule1.
743731rewrite gt_eqF ?lte_fin//=.
744732rewrite integral_dirac//= diracT !mul1e !mulr1.
745733rewrite addrCA subrr addr0 invr1 mule1.
746- rewrite !bernoulliE_ext //=; [|lra..].
734+ rewrite !bernoulliE //=; [|lra..].
747735by rewrite muleAC -EFinM divff// ?gt_eqF// mul1r EFinD.
748736Qed .
749737
0 commit comments