Skip to content

Commit 0872610

Browse files
committed
addressed Alessandro's comments
1 parent 892d435 commit 0872610

File tree

5 files changed

+46
-59
lines changed

5 files changed

+46
-59
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,11 @@
9292
`integrable_XMonemX_restrict`, `integral_XMonemX_restrict`
9393
+ definition `beta_fun`
9494
+ lemmas `EFin_beta_fun`, `beta_fun_sym`, `beta_fun0n`, `beta_fun00`,
95-
`beta_fun1S`, `beta_fun11`, `beta_funSSS`, `beta_funSS`, `beta_fun_fact`
95+
`beta_fun1Sn`, `beta_fun11`, `beta_funSSnSm`, `beta_funSnSm`, `beta_fun_fact`
9696
+ lemmas `beta_funE`, `beta_fun_gt0`, `beta_fun_ge0`
9797
+ definition `beta_pdf`
9898
+ lemmas `measurable_beta_pdf`, `beta_pdf_ge0`, `beta_pdf_le_beta_funV`,
9999
`integrable_beta_pdf`, `bounded_beta_pdf_01`
100-
+ lemma `invr_nonneg_proof`, definition `invr_nonneg`
101100
+ definition `beta_prob`
102101
+ lemmas `integral_beta_pdf`, `beta_prob01`, `beta_prob_fin_num`,
103102
`beta_prob_dom`, `beta_prob_uniform`,
@@ -113,7 +112,7 @@
113112

114113

115114
- in `unstable.v`:
116-
+ lemmas `leq_prod2`, `leq_fact2`, `normr_onem`
115+
+ lemmas `leq_Mprod_prodD`, `leq_fact2`, `normr_onem`
117116

118117
### Changed
119118

classical/unstable.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ elim: r => [|a l]; first by rewrite !big_nil exp1n.
7676
by rewrite !big_cons; case: ifPn => // Pa <-; rewrite expnMn.
7777
Qed.
7878

79-
Lemma leq_prod2 (x y n m : nat) : (n <= x)%N -> (m <= y)%N ->
79+
Lemma leq_Mprod_prodD (x y n m : nat) : (n <= x)%N -> (m <= y)%N ->
8080
(\prod_(m <= i < y) i * \prod_(n <= i < x) i <= \prod_(n + m <= i < x + y) i)%N.
8181
Proof.
8282
move=> nx my; rewrite big_addn -addnBA//.
@@ -102,7 +102,7 @@ rewrite [leqRHS](_ : _ =
102102
by rewrite -fact_split// ltnS leq_add.
103103
rewrite mulnA mulnC leq_mul2l; apply/orP; right.
104104
do 2 rewrite -addSn -addnS.
105-
exact: leq_prod2.
105+
exact: leq_Mprod_prodD.
106106
Qed.
107107

108108
Section max_min.

theories/derive.v

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1268,7 +1268,7 @@ Proof. by have /derivableP := @derivable_id x v; rewrite derive_val. Qed.
12681268
End derive_id.
12691269

12701270
Lemma derive1_onem {R : numFieldType} :
1271-
(fun x => 1 - x : R^o)^`()%classic = cst (-1).
1271+
(fun x => `1-x : R^o)^`()%classic = cst (-1).
12721272
Proof.
12731273
by apply/funext => x; rewrite derive1E deriveB// derive_id derive_cst sub0r.
12741274
Qed.
@@ -1338,26 +1338,13 @@ rewrite scalerA -scalerDl mulrCA -[f x * _]exprS.
13381338
by rewrite [in LHS]mulr_natl exprfctE -mulrSr mulr_natl.
13391339
Qed.
13401340

1341-
(*Global Instance is_deriveX f n x v (df : R) :
1342-
is_derive x v f df -> is_derive x v (f ^+ n.+1) ((n.+1%:R * f x ^+n) *: df).
1343-
Proof.
1344-
move=> dfx; elim: n => [|n ihn]; first by rewrite expr1 expr0 mulr1 scale1r.
1345-
rewrite exprS; apply: is_derive_eq.
1346-
rewrite scalerA -scalerDl mulrCA -[f x * _]exprS.
1347-
by rewrite [in LHS]mulr_natl exprfctE -mulrSr mulr_natl.
1348-
Qed.*)
1349-
13501341
Lemma derivableX f n x v : derivable f x v -> derivable (f ^+ n) x v.
13511342
Proof. by case: n => [_|n /derivableP]; [rewrite expr0|]. Qed.
13521343

13531344
Lemma deriveX f n x v : derivable f x v ->
13541345
'D_v (f ^+ n) x = (n%:R * f x ^+ n.-1) *: 'D_v f x.
13551346
Proof. by move=> /derivableP df; rewrite derive_val. Qed.
13561347

1357-
(*Lemma deriveX f n x v : derivable f x v ->
1358-
'D_v (f ^+ n.+1) x = (n.+1%:R * f x ^+ n) *: 'D_v f x.
1359-
Proof. by move=> /derivableP df; rewrite derive_val. Qed.*)
1360-
13611348
Fact der_inv f x v : f x != 0 -> derivable f x v ->
13621349
(fun h => h^-1 *: (((fun y => (f y)^-1) \o shift x) (h *: v) - (f x)^-1)) @
13631350
0^' --> - (f x) ^-2 *: 'D_v f x.

theories/ftc.v

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1802,11 +1802,11 @@ Lemma integration_by_substitution_onem (G : R -> R) (r : R) :
18021802
(0 < r <= 1)%R ->
18031803
{within `[0%R, r], continuous G} ->
18041804
(\int[mu]_(x in `[0%R, r]) (G x)%:E =
1805-
\int[mu]_(x in `[(1 - r)%R, 1%R]) (G (1 - x))%:E).
1805+
\int[mu]_(x in `[`1-r, 1%R]) (G `1-x)%:E).
18061806
Proof.
18071807
move=> r01 cG.
1808-
have := @integration_by_substitution_decreasing R (fun x => 1 - x)%R G (1 - r) 1.
1809-
rewrite subKr subrr => -> //.
1808+
have := @integration_by_substitution_decreasing R onem G `1-r 1.
1809+
rewrite onemK onem1 => -> //.
18101810
- by apply: eq_integral => x xr; rewrite !fctE derive1_onem opprK mulr1.
18111811
- by rewrite ltrBlDl ltrDr; case/andP : r01.
18121812
- by move=> x y _ _ xy; rewrite ler_ltB.
@@ -1815,18 +1815,18 @@ rewrite subKr subrr => -> //.
18151815
- by rewrite derive1_onem; exact: is_cvg_cst.
18161816
- split => /=.
18171817
+ by move=> x xr1; exact: derivableB.
1818-
+ apply: cvg_at_right_filter; rewrite subKr.
1819-
apply: (@continuous_comp_cvg _ R^o R^o _ (fun x => 1 - x)%R)=> //=.
1820-
by move=> x; apply: (@continuousB _ R^o) => //; exact: cvg_cst.
1821-
by under eq_fun do rewrite subKr; exact: cvg_id.
1822-
+ by apply: cvg_at_left_filter; apply: (@cvgB _ R^o) => //; exact: cvg_cst.
1818+
+ apply: cvg_at_right_filter; rewrite onemK.
1819+
apply: (@continuous_comp_cvg _ _ _ _ onem)=> //=.
1820+
by move=> x; apply: continuousB => //; exact: cvg_cst.
1821+
by under eq_fun do rewrite -/(onem _) onemK; exact: cvg_id.
1822+
+ by apply: cvg_at_left_filter; apply: cvgB => //; exact: cvg_cst.
18231823
Qed.
18241824

18251825
Lemma Rintegration_by_substitution_onem (G : R -> R) (r : R) :
18261826
(0 < r <= 1)%R ->
18271827
{within `[0%R, r], continuous G} ->
1828-
(\int[mu]_(x in `[0%R, r]) (G x) =
1829-
\int[mu]_(x in `[(1 - r)%R, 1%R]) (G (1 - x)))%R.
1828+
(\int[mu]_(x in `[0, r]) (G x) =
1829+
\int[mu]_(x in `[`1-r, 1]) (G `1-x))%R.
18301830
Proof.
18311831
by move=> r01 cG; rewrite [in LHS]/Rintegral integration_by_substitution_onem.
18321832
Qed.

theories/probability.v

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2176,7 +2176,6 @@ by apply/seteqP; split => /= x /=; rewrite in_itv/= andbT.
21762176
Qed.
21772177

21782178
(**md lemmas about the function $x \mapsto (1 - x)^n$ *)
2179-
(* TODO: move? *)
21802179
Section about_onemXn.
21812180
Context {R : realType}.
21822181
Implicit Types x y : R.
@@ -2315,9 +2314,11 @@ rewrite -restrict_EFin; apply/integrable_restrict => //=.
23152314
by rewrite setTI; exact: integrable_XMonemX.
23162315
Qed.
23172316

2317+
Local Open Scope ereal_scope.
2318+
23182319
Lemma integral_XMonemX_restrict U a b :
2319-
(\int[mu]_(x in U) (XMonemX a b \_ `[0, 1] x)%:E =
2320-
\int[mu]_(x in U `&` `[0%R, 1%R]) (XMonemX a b x)%:E)%E.
2320+
\int[mu]_(x in U) (XMonemX a b \_ `[0, 1] x)%:E =
2321+
\int[mu]_(x in U `&` `[0%R, 1%R]) (XMonemX a b x)%:E.
23212322
Proof.
23222323
rewrite [RHS]integral_mkcondr /=; apply: eq_integral => x xU /=.
23232324
by rewrite restrict_EFin.
@@ -2333,8 +2334,10 @@ Local Notation XMonemX := (@XMonemX R).
23332334

23342335
Definition beta_fun a b : R := \int[mu]_x (XMonemX a.-1 b.-1 \_`[0,1]) x.
23352336

2337+
Local Open Scope ereal_scope.
2338+
23362339
Lemma EFin_beta_fun a b :
2337-
((beta_fun a b)%:E = \int[mu]_x (XMonemX a.-1 b.-1 \_`[0,1] x)%:E)%E.
2340+
(beta_fun a b)%:E = \int[mu]_x (XMonemX a.-1 b.-1 \_`[0,1] x)%:E.
23382341
Proof.
23392342
rewrite fineK//; apply: integrable_fin_num => //=.
23402343
under eq_fun.
@@ -2344,10 +2347,12 @@ under eq_fun.
23442347
by apply/integrable_restrict => //=; rewrite setTI; exact: integrable_XMonemX.
23452348
Qed.
23462349

2350+
Local Close Scope ereal_scope.
2351+
23472352
Lemma beta_fun_sym a b : beta_fun a b = beta_fun b a.
23482353
Proof.
23492354
rewrite -[LHS]Rintegral_mkcond Rintegration_by_substitution_onem//=.
2350-
- rewrite subrr -[RHS]Rintegral_mkcond; apply: eq_Rintegral => x x01.
2355+
- rewrite onem1 -[RHS]Rintegral_mkcond; apply: eq_Rintegral => x x01.
23512356
by rewrite XMonemXC.
23522357
- by rewrite ltr01 lexx.
23532358
- exact: within_continuous_XMonemX.
@@ -2368,17 +2373,17 @@ rewrite Rintegral_cst//= mul1r lebesgue_measure_itv/= lte_fin ltr01.
23682373
by rewrite oppr0 adde0.
23692374
Qed.
23702375

2371-
Lemma beta_fun1S b : beta_fun 1 b.+1 = b.+1%:R^-1.
2376+
Lemma beta_fun1Sn b : beta_fun 1 b.+1 = b.+1%:R^-1.
23722377
Proof.
23732378
rewrite /beta_fun -Rintegral_mkcond.
23742379
under eq_Rintegral do rewrite XMonemX0n.
23752380
by rewrite Rintegral_onemXn.
23762381
Qed.
23772382

23782383
Lemma beta_fun11 : beta_fun 1 1 = 1.
2379-
Proof. by rewrite (beta_fun1S O) invr1. Qed.
2384+
Proof. by rewrite (beta_fun1Sn O) invr1. Qed.
23802385

2381-
Lemma beta_funSSS a b :
2386+
Lemma beta_funSSnSm a b :
23822387
beta_fun a.+2 b.+1 = a.+1%:R / b.+1%:R * beta_fun a.+1 b.+2.
23832388
Proof.
23842389
rewrite -[LHS]Rintegral_mkcond.
@@ -2408,12 +2413,12 @@ transitivity (a.+1%:R / b.+1%:R * \int[mu]_(x in `[0, 1]) XMonemX a b.+1 x).
24082413
by rewrite Rintegral_mkcond.
24092414
Qed.
24102415

2411-
Lemma beta_funSS a b : beta_fun a.+1 b.+1 =
2416+
Lemma beta_funSnSm a b : beta_fun a.+1 b.+1 =
24122417
a`!%:R / (\prod_(b.+1 <= i < (a + b).+1) i)%:R * beta_fun 1 (a + b).+1.
24132418
Proof.
24142419
elim: a b => [b|a ih b].
24152420
by rewrite fact0 mul1r add0n /index_iota subnn big_nil invr1 mul1r.
2416-
rewrite beta_funSSS [in LHS]ih !mulrA; congr *%R; last by rewrite addSnnS.
2421+
rewrite beta_funSSnSm [in LHS]ih !mulrA; congr *%R; last by rewrite addSnnS.
24172422
rewrite -mulrA mulrCA 2!mulrA.
24182423
rewrite -natrM (mulnC a`!) -factS -mulrA -invfM; congr (_ / _).
24192424
rewrite big_add1 [in RHS]big_nat_recl/=; last by rewrite addSn ltnS leq_addl.
@@ -2423,7 +2428,7 @@ Qed.
24232428
Lemma beta_fun_fact a b :
24242429
beta_fun a.+1 b.+1 = (a`! * b`!)%:R / (a + b).+1`!%:R.
24252430
Proof.
2426-
rewrite beta_funSS beta_fun1S natrM -!mulrA; congr *%R.
2431+
rewrite beta_funSnSm beta_fun1Sn natrM -!mulrA; congr *%R.
24272432
(* (b+1 b+2 ... b+1 b+a)^-1 / (a+b+1) = b! / (a+b+1)! *)
24282433
rewrite factS [in RHS]mulnC natrM invfM mulrA; congr (_ / _).
24292434
rewrite -(@invrK _ b`!%:R) -invfM; congr (_^-1).
@@ -2502,23 +2507,23 @@ Qed.
25022507

25032508
Local Notation mu := lebesgue_measure.
25042509

2505-
Let int_beta_pdf01 : (\int[mu]_(x in `[0%R, 1%R]) (beta_pdf x)%:E =
2506-
\int[mu]_x (beta_pdf x)%:E :> \bar R)%E.
2510+
Local Open Scope ereal_scope.
2511+
2512+
Let int_beta_pdf01 : \int[mu]_(x in `[0%R, 1%R]) (beta_pdf x)%:E =
2513+
\int[mu]_x (beta_pdf x)%:E :> \bar R.
25072514
Proof.
25082515
rewrite integral_mkcond/=; apply: eq_integral => /=x _.
25092516
by rewrite /beta_pdf/= !patchE; case: ifPn => [->//|_]; rewrite mul0r.
25102517
Qed.
25112518

2519+
Local Close Scope ereal_scope.
2520+
25122521
Lemma integrable_beta_pdf : mu.-integrable [set: _] (EFin \o beta_pdf).
25132522
Proof.
25142523
apply/integrableP; split.
25152524
by apply/measurable_EFinP; exact: measurable_beta_pdf.
2516-
under eq_integral.
2517-
move=> /= x _.
2518-
rewrite ger0_norm//; last by rewrite beta_pdf_ge0.
2519-
over.
2520-
simpl.
2521-
rewrite -int_beta_pdf01.
2525+
under eq_integral=> /= x _ do rewrite ger0_norm ?beta_pdf_ge0//.
2526+
rewrite /= -int_beta_pdf01.
25222527
apply: (@le_lt_trans _ _ (\int[mu]_(x in `[0%R, 1%R]) (beta_fun a b)^-1%:E)%E).
25232528
apply: ge0_le_integral => //=.
25242529
- by move=> x _; rewrite lee_fin beta_pdf_ge0.
@@ -2547,14 +2552,6 @@ Unshelve. all: by end_near. Qed.
25472552

25482553
End beta_pdf.
25492554

2550-
(* TODO: move? *)
2551-
Lemma invr_nonneg_proof (R : numDomainType) (p : {nonneg R}) :
2552-
(0 <= (p%:num)^-1)%R.
2553-
Proof. by rewrite invr_ge0. Qed.
2554-
2555-
Definition invr_nonneg (R : numDomainType) (p : {nonneg R}) :=
2556-
NngNum (invr_nonneg_proof p).
2557-
25582555
Section beta.
25592556
Local Open Scope ring_scope.
25602557
Context {R : realType}.
@@ -2611,7 +2608,7 @@ HB.instance Definition _ := isMeasure.Build _ _ _ beta_num
26112608
beta_num0 beta_num_ge0 beta_num_sigma_additive.
26122609

26132610
Definition beta_prob :=
2614-
@mscale _ _ _ (invr_nonneg (NngNum (beta_fun_ge0 a b))) beta_num.
2611+
mscale ((NngNum (beta_fun_ge0 a b))%:num^-1)%:nng beta_num.
26152612

26162613
HB.instance Definition _ := Measure.on beta_prob.
26172614

@@ -2686,20 +2683,24 @@ rewrite /XMonemX !expr0 mul1r.
26862683
by rewrite /uniform_pdf x10 subr0 invr1.
26872684
Qed.
26882685

2686+
Local Open Scope ereal_scope.
2687+
26892688
Lemma integral_beta_prob_bernoulli_prob_lty {R : realType} a b (f : R -> R) U :
26902689
measurable_fun setT f ->
26912690
(forall x, x \in `[0, 1]%R -> 0 <= f x <= 1)%R ->
2692-
(\int[beta_prob a b]_x `|bernoulli_prob (f x) U| < +oo :> \bar R)%E.
2691+
\int[beta_prob a b]_x `|bernoulli_prob (f x) U| < +oo.
26932692
Proof.
26942693
move=> mf /= f01.
2695-
apply: (@le_lt_trans _ _ (\int[beta_prob a b]_x cst 1 x))%E.
2694+
apply: (@le_lt_trans _ _ (\int[beta_prob a b]_x cst 1 x)).
26962695
apply: ge0_le_integral => //=.
26972696
apply: measurableT_comp => //=.
26982697
by apply: (measurableT_comp (measurable_bernoulli_prob2 _)).
26992698
by move=> x _; rewrite gee0_abs// probability_le1.
27002699
by rewrite integral_cst//= mul1e -ge0_fin_numE// beta_prob_fin_num.
27012700
Qed.
27022701

2702+
Local Close Scope ereal_scope.
2703+
27032704
Lemma integral_beta_prob_bernoulli_prob_onemX_lty {R : realType} n a b U :
27042705
(\int[beta_prob a b]_x `|bernoulli_prob (`1-x ^+ n) U| < +oo :> \bar R)%E.
27052706
Proof.

0 commit comments

Comments
 (0)