@@ -3309,21 +3309,21 @@ move=> x0; apply/(iffP idP) => [xy r /andP[r0 r1]|h].
3309
3309
move: x0 xy; rewrite le_eqVlt => /predU1P[<-|x0 xy]; first by rewrite mule0.
3310
3310
by rewrite (le_trans _ xy)// gee_pMl// ltW.
3311
3311
have h01 : (0 < (2^-1 : R) < 1)%R by rewrite invr_gt0 ?invf_lt1 ?ltr0n ?ltr1n.
3312
- move: x y => [x||] [y||] // in x0 h *.
3313
- - move: (x0); rewrite lee_fin le_eqVlt => /predU1P[<-|{}x0].
3314
- by rewrite (le_trans _ (h _ h01))// mule_ge0// lee_fin.
3315
- have y0 : (0 < y)%R.
3316
- by rewrite -lte_fin (lt_le_trans _ (h _ h01))// mule_gt0// lte_fin.
3317
- rewrite lee_fin leNgt; apply/negP => yx.
3318
- have /h : (0 < (y + x) / (2 * x) < 1)%R.
3319
- apply/andP; split; first by rewrite divr_gt0 // ?addr_gt0// ?mulr_gt0.
3320
- by rewrite ltr_pdivrMr ?mulr_gt0// mul1r mulr_natl mulr2n ltrD2r.
3321
- rewrite -(EFinM _ x) lee_fin invrM ?unitfE// ?gt_eqF// -mulrA mulrAC.
3322
- by rewrite mulVr ?unitfE ?gt_eqF// mul1r; apply/negP; rewrite -ltNge midf_lt.
3312
+ move: x y => [x||] [y||] // in x0 h *; last 4 first.
3323
3313
- by rewrite leey.
3324
3314
- by have := h _ h01.
3325
3315
- by have := h _ h01; rewrite mulr_infty sgrV gtr0_sg // mul1e.
3326
3316
- by have := h _ h01; rewrite mulr_infty sgrV gtr0_sg // mul1e.
3317
+ move: (x0); rewrite lee_fin le_eqVlt => /predU1P[<-|{}x0].
3318
+ by rewrite (le_trans _ (h _ h01))// mule_ge0// lee_fin.
3319
+ have y0 : (0 < y)%R.
3320
+ by rewrite -lte_fin (lt_le_trans _ (h _ h01))// mule_gt0// lte_fin.
3321
+ rewrite lee_fin leNgt; apply/negP => yx.
3322
+ have /h : (0 < (y + x) / (2 * x) < 1)%R.
3323
+ apply/andP; split; first by rewrite divr_gt0 // ?addr_gt0// ?mulr_gt0.
3324
+ by rewrite ltr_pdivrMr ?mulr_gt0// mul1r mulr_natl mulr2n ltrD2r.
3325
+ rewrite -EFinM lee_fin invfM -mulrA divfK ?gt_eqF//.
3326
+ by apply/negP; rewrite -ltNge midf_lt.
3327
3327
Qed .
3328
3328
3329
3329
Lemma lte_pdivrMl r x y : (0 < r)%R -> (r^-1%:E * y < x) = (y < r%:E * x).
@@ -3382,9 +3382,9 @@ Lemma lee_pdivrMl r x y : (0 < r)%R -> (r^-1%:E * y <= x) = (y <= r%:E * x).
3382
3382
Proof .
3383
3383
move=> r0; apply/idP/idP.
3384
3384
- rewrite le_eqVlt => /predU1P[<-|]; last by rewrite lte_pdivrMl// => /ltW.
3385
- by rewrite muleA -EFinM divrr ?mul1e// unitfE gt_eqF.
3385
+ by rewrite muleA -EFinM divff ?mul1e// gt_eqF.
3386
3386
- rewrite le_eqVlt => /predU1P[->|]; last by rewrite -lte_pdivrMl// => /ltW.
3387
- by rewrite muleA -EFinM mulVr ?mul1e// unitfE gt_eqF.
3387
+ by rewrite muleA -EFinM mulVf ?mul1e// gt_eqF.
3388
3388
Qed .
3389
3389
3390
3390
Lemma lee_pdivrMr r x y : (0 < r)%R -> (y * r^-1%:E <= x) = (y <= x * r%:E).
@@ -3394,9 +3394,9 @@ Lemma lee_pdivlMl r y x : (0 < r)%R -> (x <= r^-1%:E * y) = (r%:E * x <= y).
3394
3394
Proof .
3395
3395
move=> r0; apply/idP/idP.
3396
3396
- rewrite le_eqVlt => /predU1P[->|]; last by rewrite lte_pdivlMl// => /ltW.
3397
- by rewrite muleA -EFinM divrr ?mul1e// unitfE gt_eqF.
3397
+ by rewrite muleA -EFinM divff ?mul1e// gt_eqF.
3398
3398
- rewrite le_eqVlt => /predU1P[<-|]; last by rewrite -lte_pdivlMl// => /ltW.
3399
- by rewrite muleA -EFinM mulVr ?mul1e// unitfE gt_eqF.
3399
+ by rewrite muleA -EFinM mulVf ?mul1e// gt_eqF.
3400
3400
Qed .
3401
3401
3402
3402
Lemma lee_pdivlMr r x y : (0 < r)%R -> (x <= y * r^-1%:E) = (x * r%:E <= y).
@@ -4289,8 +4289,7 @@ Definition contract x : R :=
4289
4289
4290
4290
Lemma contract_lt1 r : (`|contract r%:E| < 1)%R.
4291
4291
Proof .
4292
- rewrite normrM normrV ?unitfE //.
4293
- rewrite ltr_pdivrMr // ?mul1r//; last by rewrite gtr0_norm.
4292
+ rewrite normrM normfV// ltr_pdivrMr // ?mul1r//; last by rewrite gtr0_norm.
4294
4293
by rewrite [ltRHS]gtr0_norm ?ltrDr// ltr_pwDl.
4295
4294
Qed .
4296
4295
@@ -4338,25 +4337,23 @@ move=> r; rewrite inE le_eqVlt => /orP[|r1].
4338
4337
by [rewrite expand1|rewrite expandN1].
4339
4338
rewrite /expand 2!leNgt ltrNl; case/ltr_normlP : (r1) => -> -> /=.
4340
4339
have r_pneq0 : (1 + r / (1 - r) != 0)%R.
4341
- rewrite -[X in (X + _)%R](@divrr _ (1 - r)%R) -?mulrDl; last first.
4342
- by rewrite unitfE subr_eq0 eq_sym lt_eqF // ltr_normlW.
4340
+ rewrite -[X in (X + _)%R](@divff _ (1 - r)%R) -?mulrDl; last first.
4341
+ by rewrite subr_eq0 eq_sym lt_eqF // ltr_normlW.
4343
4342
by rewrite subrK mulf_neq0 // invr_eq0 subr_eq0 eq_sym lt_eqF // ltr_normlW.
4344
4343
have r_nneq0 : (1 - r / (1 + r) != 0)%R.
4345
- rewrite -[X in (X + _)%R](@divrr _ (1 + r)%R) -?mulrBl; last first.
4346
- by rewrite unitfE addrC addr_eq0 gt_eqF // ltrNnormlW.
4347
- rewrite addrK mulf_neq0 // invr_eq0 addr_eq0 -eqr_oppLR eq_sym gt_eqF //.
4348
- exact: ltrNnormlW.
4344
+ rewrite -[X in (X + _)%R](@divff _ (1 + r)%R) -?mulrBl; last first.
4345
+ by rewrite addrC addr_eq0 gt_eqF // ltrNnormlW.
4346
+ by rewrite addrK mulf_neq0// invr_eq0 addr_eq0 -eqr_oppLR lt_eqF// ltrNnormlW.
4349
4347
wlog : r r1 r_pneq0 r_nneq0 / (0 <= r)%R => wlog_r0.
4350
4348
have [r0|r0] := lerP 0 r; first by rewrite wlog_r0.
4351
4349
move: (wlog_r0 (- r)%R).
4352
4350
rewrite !(normrN, opprK, mulNr) oppr_ge0 => /(_ r1 r_nneq0 r_pneq0 (ltW r0)).
4353
- by move/eqP; rewrite eqr_opp => /eqP .
4351
+ by move/oppr_inj .
4354
4352
rewrite /contract !ger0_norm //; last first.
4355
4353
by rewrite divr_ge0 // subr_ge0 (le_trans _ (ltW r1)) // ler_norm.
4356
- apply: (@mulIr _ (1 + r / (1 - r))%R); first by rewrite unitfE.
4357
- rewrite -(mulrA (r / _)) mulVr ?unitfE // mulr1.
4358
- rewrite -[X in (X + _ / _)%R](@divrr _ (1 - r)%R) -?mulrDl ?subrK ?div1r //.
4359
- by rewrite unitfE subr_eq0 eq_sym lt_eqF // ltr_normlW.
4354
+ apply: (@mulIf _ (1 + r / (1 - r))%R); rewrite // divfK//.
4355
+ rewrite -[X in (X + _ / _)%R](@divff _ (1 - r)%R) -?mulrDl ?subrK ?div1r //.
4356
+ by rewrite subr_eq0 eq_sym lt_eqF // ltr_normlW.
4360
4357
Qed .
4361
4358
4362
4359
Lemma le_contract : {mono contract : x y / (x <= y)%O}.
0 commit comments