Skip to content

Commit 02ba384

Browse files
committed
beta distribution
1 parent 6a6ada7 commit 02ba384

File tree

5 files changed

+959
-24
lines changed

5 files changed

+959
-24
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@
5252
- in `lebesgue_integral_differentiation.v`:
5353
+ lemma `nicely_shrinking_fin_num`
5454

55+
- in `pseudometric_normed_Zmodule.v`:
56+
+ lemma `continuous_comp_cvg`
57+
58+
- in `derive.v`:
59+
+ lemma `derive1_onem`
60+
61+
- in `ftc.v`:
62+
+ lemmas `integration_by_substitution_onem`, `Rintegration_by_substitution_onem`
63+
5564
### Changed
5665

5766
- in `convex.v`:
@@ -126,6 +135,12 @@
126135
+ HB class `UniformZmodule` moved to `PreUniformZmodule`
127136
+ HB class `UniformLmodule` moved to `PreUniformLmodule`
128137

138+
- in `probability.v`:
139+
+ `bernoulli` -> `bernoulli_prob`
140+
+ `bernoulli_probE` -> `bernoulliE`
141+
+ `integral_bernoulli_prob` -> `integral_bernoulli_prob`
142+
+ `measurable_bernoulli` -> `measurable_bernoulli_prob`
143+
+ `measurable_bernoulli2` -> `measurable_bernoulli_prob2`
129144

130145
### Generalized
131146

theories/derive.v

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,6 +1267,12 @@ Proof. by have /derivableP := @derivable_id x v; rewrite derive_val. Qed.
12671267

12681268
End derive_id.
12691269

1270+
Lemma derive1_onem {R : numFieldType} :
1271+
(fun x => 1 - x : R^o)^`()%classic = cst (-1).
1272+
Proof.
1273+
by apply/funext => x; rewrite derive1E deriveB// derive_id derive_cst sub0r.
1274+
Qed.
1275+
12701276
Section Derive_lemmasVR.
12711277
Variables (R : numFieldType) (V : normedModType R).
12721278
Implicit Types (f g : V -> R) (x v : V).
@@ -1322,21 +1328,37 @@ by rewrite deriveM // !derive_val.
13221328
Qed.
13231329

13241330
Global Instance is_deriveX f n x v (df : R) :
1325-
is_derive x v f df -> is_derive x v (f ^+ n.+1) ((n.+1%:R * f x ^+n) *: df).
1331+
is_derive x v f df -> is_derive x v (f ^+ n) ((n%:R * f x ^+ n.-1) *: df).
13261332
Proof.
1333+
case: n => [fdf|n].
1334+
rewrite expr0 mul0r scale0r.
1335+
exact: is_derive_cst.
13271336
move=> dfx; elim: n => [|n ihn]; first by rewrite expr1 expr0 mulr1 scale1r.
13281337
rewrite exprS; apply: is_derive_eq.
13291338
rewrite scalerA -scalerDl mulrCA -[f x * _]exprS.
13301339
by rewrite [in LHS]mulr_natl exprfctE -mulrSr mulr_natl.
13311340
Qed.
13321341

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

13361354
Lemma deriveX f n x v : derivable f x v ->
1337-
'D_v (f ^+ n.+1) x = (n.+1%:R * f x ^+ n) *: 'D_v f x.
1355+
'D_v (f ^+ n) x = (n%:R * f x ^+ n.-1) *: 'D_v f x.
13381356
Proof. by move=> /derivableP df; rewrite derive_val. Qed.
13391357

1358+
(*Lemma deriveX f n x v : derivable f x v ->
1359+
'D_v (f ^+ n.+1) x = (n.+1%:R * f x ^+ n) *: 'D_v f x.
1360+
Proof. by move=> /derivableP df; rewrite derive_val. Qed.*)
1361+
13401362
Fact der_inv f x v : f x != 0 -> derivable f x v ->
13411363
(fun h => h^-1 *: (((fun y => (f y)^-1) \o shift x) (h *: v) - (f x)^-1)) @
13421364
0^' --> - (f x) ^-2 *: 'D_v f x.
@@ -1412,15 +1434,22 @@ rewrite (_ : _ ^~ _ = (fun x => x * x ^+ n)); last first.
14121434
by apply: derivableM; first exact: derivable_id.
14131435
Qed.
14141436

1415-
Lemma exp_derive {R : numFieldType} n x v :
1437+
(*Lemma exp_derive {R : numFieldType} n x v :
14161438
'D_v (@GRing.exp R ^~ n.+1) x = n.+1%:R *: x ^+ n *: v.
14171439
Proof.
14181440
have /= := @deriveX R R id n x v (@derivable_id _ _ _ _).
14191441
by rewrite fctE => ->; rewrite derive_id.
1442+
Qed.*)
1443+
1444+
Lemma exp_derive {R : numFieldType} n x v :
1445+
'D_v (@GRing.exp R ^~ n) x = n%:R *: x ^+ n.-1 *: v.
1446+
Proof.
1447+
have /= := @deriveX R R id n x v (@derivable_id _ _ _ _).
1448+
by rewrite fctE => ->; rewrite derive_id.
14201449
Qed.
14211450

14221451
Lemma exp_derive1 {R : numFieldType} n x :
1423-
(@GRing.exp R ^~ n.+1)^`() x = n.+1%:R *: x ^+ n.
1452+
(@GRing.exp R ^~ n)^`() x = n%:R *: x ^+ n.-1.
14241453
Proof. by rewrite derive1E exp_derive [LHS]mulr1. Qed.
14251454

14261455
Lemma EVT_max (R : realType) (f : R -> R) (a b : R) : (* TODO : Filter not infered *)

theories/ftc.v

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1793,6 +1793,46 @@ Qed.
17931793

17941794
End integration_by_substitution.
17951795

1796+
Section integration_by_substitution_onem.
1797+
Context {R : realType}.
1798+
Let mu := (@lebesgue_measure R).
1799+
Local Open Scope ereal_scope.
1800+
1801+
Lemma integration_by_substitution_onem (G : R -> R) (r : R) :
1802+
(0 < r <= 1)%R ->
1803+
{within `[0%R, r], continuous G} ->
1804+
(\int[mu]_(x in `[0%R, r]) (G x)%:E =
1805+
\int[mu]_(x in `[(1 - r)%R, 1%R]) (G (1 - x))%:E).
1806+
Proof.
1807+
move=> r01 cG.
1808+
have := @integration_by_substitution_decreasing R (fun x => 1 - x)%R G (1 - r) 1.
1809+
rewrite subKr subrr => -> //.
1810+
- by apply: eq_integral => x xr; rewrite !fctE derive1_onem opprK mulr1.
1811+
- by rewrite ltrBlDl ltrDr; case/andP : r01.
1812+
- by move=> x y _ _ xy; rewrite ler_ltB.
1813+
- by rewrite derive1_onem; move=> ? ?; exact: cvg_cst.
1814+
- by rewrite derive1_onem; exact: is_cvg_cst.
1815+
- by rewrite derive1_onem; exact: is_cvg_cst.
1816+
- split => /=.
1817+
+ 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.
1823+
Qed.
1824+
1825+
Lemma Rintegration_by_substitution_onem (G : R -> R) (r : R) :
1826+
(0 < r <= 1)%R ->
1827+
{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.
1830+
Proof.
1831+
by move=> r01 cG; rewrite [in LHS]/Rintegral integration_by_substitution_onem.
1832+
Qed.
1833+
1834+
End integration_by_substitution_onem.
1835+
17961836
Section ge0_integralT_even.
17971837
Context {R : realType}.
17981838
Let mu := @lebesgue_measure R.

theories/normedtype_theory/pseudometric_normed_Zmodule.v

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,20 @@ Arguments cvgr_neq0 {R V T F FF f}.
805805
#[global] Hint Extern 0 (ProperFilter _^'+) =>
806806
(apply: at_right_proper_filter) : typeclass_instances.
807807

808+
Lemma continuous_comp_cvg {R : numFieldType} (U V : pseudoMetricNormedZmodType R)
809+
(f : U -> V) (g : R -> U) (r : R) (l : V) : continuous f ->
810+
(f \o g) x @[x --> r] --> l -> f x @[x --> g r] --> l.
811+
Proof.
812+
move=> cf fgl; apply/(@cvgrPdist_le _ V) => /= e e0.
813+
have e20 : 0 < e / 2 by rewrite divr_gt0.
814+
move/(@cvgrPdist_le _ V) : fgl => /(_ _ e20) fgl.
815+
have /(@cvgrPdist_le _ V) /(_ _ e20) fgf := cf (g r).
816+
rewrite !near_simpl/=; near=> t.
817+
rewrite -(@subrK _ (f (g r)) l) -(addrA (_ + _)) (le_trans (ler_normD _ _))//.
818+
rewrite (splitr e) lerD//; last by near: t.
819+
by case: fgl => d /= d0; apply; rewrite /ball_/= subrr normr0.
820+
Unshelve. all: by end_near. Qed.
821+
808822
Section closure_left_right_open.
809823
Variable R : realFieldType.
810824
Implicit Types z : R.

0 commit comments

Comments
 (0)