Skip to content

Commit cfe6624

Browse files
committed
Remove some unnecessary use of unitfE
1 parent 45743de commit cfe6624

File tree

2 files changed

+29
-35
lines changed

2 files changed

+29
-35
lines changed

reals/constructive_ereal.v

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3309,21 +3309,21 @@ move=> x0; apply/(iffP idP) => [xy r /andP[r0 r1]|h].
33093309
move: x0 xy; rewrite le_eqVlt => /predU1P[<-|x0 xy]; first by rewrite mule0.
33103310
by rewrite (le_trans _ xy)// gee_pMl// ltW.
33113311
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.
33233313
- by rewrite leey.
33243314
- by have := h _ h01.
33253315
- by have := h _ h01; rewrite mulr_infty sgrV gtr0_sg // mul1e.
33263316
- 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.
33273327
Qed.
33283328

33293329
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).
33823382
Proof.
33833383
move=> r0; apply/idP/idP.
33843384
- 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.
33863386
- 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.
33883388
Qed.
33893389

33903390
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).
33943394
Proof.
33953395
move=> r0; apply/idP/idP.
33963396
- 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.
33983398
- 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.
34003400
Qed.
34013401

34023402
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 :=
42894289

42904290
Lemma contract_lt1 r : (`|contract r%:E| < 1)%R.
42914291
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.
42944293
by rewrite [ltRHS]gtr0_norm ?ltrDr// ltr_pwDl.
42954294
Qed.
42964295

@@ -4338,25 +4337,23 @@ move=> r; rewrite inE le_eqVlt => /orP[|r1].
43384337
by [rewrite expand1|rewrite expandN1].
43394338
rewrite /expand 2!leNgt ltrNl; case/ltr_normlP : (r1) => -> -> /=.
43404339
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.
43434342
by rewrite subrK mulf_neq0 // invr_eq0 subr_eq0 eq_sym lt_eqF // ltr_normlW.
43444343
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.
43494347
wlog : r r1 r_pneq0 r_nneq0 / (0 <= r)%R => wlog_r0.
43504348
have [r0|r0] := lerP 0 r; first by rewrite wlog_r0.
43514349
move: (wlog_r0 (- r)%R).
43524350
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.
43544352
rewrite /contract !ger0_norm //; last first.
43554353
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.
43604357
Qed.
43614358

43624359
Lemma le_contract : {mono contract : x y / (x <= y)%O}.

reals/reals.v

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -700,13 +700,10 @@ have [/andP[a b] c] : x *+ n < m%:~R <= 1 + x *+ n /\ 1 + x *+ n < y *+ n.
700700
split; [apply/andP; split|] => //; first by rewrite -lerBlDl.
701701
by move: nyx; rewrite mulrnDl -ltrBrDr mulNrn.
702702
have n_gt0 : n != 0%N by apply: contraTN nyx => /eqP ->; rewrite mulr0n ltr10.
703-
exists (m%:Q / n%:Q); rewrite in_itv /=; apply/andP; split.
704-
rewrite rmorphM/= (@rmorphV _ _ _ n%:~R); first by rewrite unitfE // intr_eq0.
705-
rewrite ltr_pdivlMr /=; first by rewrite ltr0q ltr0z ltz_nat lt0n.
706-
by rewrite mulrC // !ratr_int mulr_natl.
707-
rewrite rmorphM /= (@rmorphV _ _ _ n%:~R); first by rewrite unitfE // intr_eq0.
708-
rewrite ltr_pdivrMr /=; first by rewrite ltr0q ltr0z ltz_nat lt0n.
709-
by rewrite 2!ratr_int mulr_natr (le_lt_trans _ c).
703+
exists (m%:Q / n%:Q); rewrite in_itv /=.
704+
rewrite fmorph_div !rmorph_int ltr_pdivlMr/=; first by rewrite ltr0n lt0n.
705+
rewrite ltr_pdivrMr; first by rewrite ltr0n lt0n.
706+
by rewrite !mulr_natr nxm (le_lt_trans _ c).
710707
Qed.
711708

712709
End rat_in_itvoo.

0 commit comments

Comments
 (0)