Skip to content

Commit e61a644

Browse files
expR_ge1Dxn (math-comp#1638)
* expR_ge1Dxn
1 parent 6e62b37 commit e61a644

File tree

2 files changed

+30
-17
lines changed

2 files changed

+30
-17
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@
6666
+ definition `exponential_prob`
6767
+ lemmas `derive1_exponential_pdf`, `exponential_prob_itv0c`,
6868
`integral_exponential_pdf`, `integrable_exponential_pdf`
69+
- in `exp.v`
70+
+ lemma `expR_ge1Dxn`
6971

7072
### Changed
7173

theories/exp.v

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -170,9 +170,9 @@ rewrite -mulrA mulrC -mulrA mulr_natl -[X in _ *+ X]subn0 -sumr_const_nat.
170170
apply ler_sum_nat => i /=.
171171
case: n => //= n ni.
172172
rewrite normrM.
173-
pose d := (n.-1 - i)%nat.
174-
rewrite -[(n - i)%nat]prednK ?subn_gt0// predn_sub -/d.
175-
rewrite -(subnK (_ : i <= n.-1)%nat) -/d; last first.
173+
pose d := (n.-1 - i)%N.
174+
rewrite -[(n - i)%N]prednK ?subn_gt0// predn_sub -/d.
175+
rewrite -(subnK (_ : i <= n.-1)%N) -/d; last first.
176176
by rewrite -ltnS prednK// (leq_ltn_trans _ ni).
177177
rewrite addnC exprD mulrAC -mulrA.
178178
apply: ler_pM => //.
@@ -182,7 +182,7 @@ apply: le_trans (_ : d.+1%:R * K ^+ d <= _); last first.
182182
by rewrite ler_nat ltnS /d -subn1 -subnDA leq_subr.
183183
rewrite (le_trans (ler_norm_sum _ _ _))//.
184184
rewrite mulr_natl -[X in _ *+ X]subn0 -sumr_const_nat ler_sum_nat//= => j jd1.
185-
rewrite -[in leRHS](subnK (_ : j <= d)%nat) -1?ltnS // addnC exprD normrM.
185+
rewrite -[in leRHS](subnK (_ : j <= d)%N) -1?ltnS // addnC exprD normrM.
186186
by rewrite ler_pM// normrX lerXn2r// qualifE/= (le_trans _ zLK).
187187
Qed.
188188

@@ -319,23 +319,33 @@ rewrite -addn1 series_addn series_exp_coeff0 big_add1 big1 ?addr0//.
319319
by move=> i _; rewrite /exp_coeff /= expr0n mul0r.
320320
Unshelve. all: by end_near. Qed.
321321

322-
Local Lemma expR_ge1Dx_subproof x : 0 <= x -> 1 + x <= expR x.
322+
Lemma expR_ge1Dxn x n : 0 <= x -> 1 + x ^+ n.+1 / n.+1`!%:R <= expR x.
323323
Proof.
324324
move=> x_ge0; rewrite /expR.
325-
pose f (x : R) i := (i == 0%nat)%:R + x *+ (i == 1%nat).
326-
have F n : (1 < n)%nat -> \sum_(0 <= i < n) (f x i) = 1 + x.
327-
move=> /subnK<-.
328-
by rewrite addn2 !big_nat_recl //= /f /= mulr1n !mulr0n big1 ?add0r ?addr0.
329-
have -> : 1 + x = limn (series (f x)).
330-
by apply/esym/lim_near_cst => //; near=> n; apply: F; near: n.
331-
apply: ler_lim; first by apply: is_cvg_near_cst; near=> n; apply: F; near: n.
325+
pose f n (x : R) i := (i == 0)%:R + x ^+ n / n`!%:R *+ (i == n).
326+
have F m : (n.+1 < m)%N ->
327+
\sum_(0 <= i < m) (f n.+1 x i) = 1 + x ^+ n.+1 / n.+1`!%:R.
328+
move=> n1m.
329+
rewrite (@big_cat_nat _ _ _ n.+2)//= big_nat_recr// big_nat_recl//=.
330+
rewrite big_nat_cond big1 ?addr0; last first.
331+
by move=> i /[!andbT] /[!leq0n]/= ni; rewrite /f/= lt_eqF//= add0r.
332+
rewrite big_nat_cond big1 ?addr0; last first.
333+
move=> i /[!andbT] /andP[ni mi]; rewrite /f !gtn_eqF//= ?add0r//.
334+
exact: ltn_trans ni.
335+
by rewrite /f/= add0r mulr0n addr0 eqxx 2!mulr1n.
336+
rewrite [leLHS](_ : _ = limn (series (f n.+1 x))); last first.
337+
by apply/esym/(@lim_near_cst R^o) => //; near=> k; apply: F; near: k.
338+
apply: ler_lim; first by apply: is_cvg_near_cst; near=> k; apply: F; near: k.
332339
exact: is_cvg_series_exp_coeff.
333-
by near=> n; apply: ler_sum => -[|[|i]] _;
334-
rewrite /f /exp_coeff /= !(mulr0n, mulr1n, expr0, expr1, divr1, addr0, add0r)
335-
// exp_coeff_ge0.
340+
near=> k; apply: ler_sum => -[|[|i]] _; rewrite /f /exp_coeff/= ?add0r.
341+
- by rewrite !(mulr0n, expr0, addr0, divr1).
342+
- case: n F; first by rewrite !(mulr0n, mulr1n, expr0, addr0, add0r, divr1).
343+
by move=> n F; rewrite mulr0n expr1 divr1.
344+
- rewrite eqSS; case: eqP => [->|_]; rewrite ?mulr1n//.
345+
by rewrite mulr0n divr_ge0// exprn_ge0.
336346
Unshelve. all: by end_near. Qed.
337347

338-
Lemma exp_coeffE x : exp_coeff x = (fun n => (fun n => (n`!%:R)^-1) n * x ^+ n).
348+
Lemma exp_coeffE x : exp_coeff x = fun n => (fun n => (n`!%:R)^-1) n * x ^+ n.
339349
Proof. by apply/funext => i; rewrite /exp_coeff /= mulrC. Qed.
340350

341351
Import GRing.Theory.
@@ -386,7 +396,8 @@ Proof. by rewrite -[X in _ X * _ = _]addr0 expRxDyMexpx expR0. Qed.
386396

387397
Lemma pexpR_gt1 x : 0 < x -> 1 < expR x.
388398
Proof.
389-
by move=> x0; rewrite (lt_le_trans _ (expR_ge1Dx_subproof (ltW x0)))// ltrDl.
399+
move=> x0; rewrite (lt_le_trans _ (expR_ge1Dxn 0%N (ltW x0)))// ltrDl.
400+
by rewrite expr1 divr1.
390401
Qed.
391402

392403
Lemma expR_gt0 x : 0 < expR x.

0 commit comments

Comments
 (0)