Skip to content

Commit 8dd352a

Browse files
authored
Merge pull request #1567 from pi8027/cleanup_20250411
Cleanup
2 parents 3ae40ee + 2cd6603 commit 8dd352a

File tree

7 files changed

+51
-76
lines changed

7 files changed

+51
-76
lines changed

classical/unstable.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ Proof.
6565
apply: canRL (mulfK _) _ => //; rewrite ?pnatr_eq0//.
6666
case: lerP => _; (* TODO: ring *) rewrite [2%:R]mulr2n mulrDr mulr1.
6767
by rewrite addrCA addrK.
68-
by rewrite addrCA addrAC subrr add0r.
68+
by rewrite (addrC (x + y)) subrKA.
6969
Qed.
7070

7171
Lemma minr_absE (x y : R) : Num.min x y = (x + y - `|x - y|) / 2%:R.

experimental_reals/distr.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ Definition mflip (xt : R) :=
335335
Lemma isd_mflip xt : isdistr (mflip xt).
336336
Proof. apply/isdistr_finP; split=> [b|].
337337
+ by case: b; rewrite ?subr_ge0 cp01_clamp.
338-
+ by rewrite /index_enum !unlock /= addr0 addrCA subrr addr0.
338+
+ by rewrite /index_enum !unlock /= addr0 addrC subrK.
339339
Qed.
340340

341341
Definition dflip (xt : R) := locked (mkdistr (isd_mflip xt)).
@@ -1133,7 +1133,7 @@ Qed.
11331133

11341134
Lemma pr_and A B mu : \P_[mu] [predI A & B] =
11351135
\P_[mu] A + \P_[mu] B - \P_[mu] [predU A & B].
1136-
Proof. by rewrite pr_or opprB addrCA subrr addr0. Qed.
1136+
Proof. by rewrite pr_or subKr. Qed.
11371137

11381138
Lemma ler_pr_or A B mu :
11391139
\P_[mu] [predU A & B] <= \P_[mu] A + \P_[mu] B.

experimental_reals/realseq.v

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ have gt0_e: 0 < e by rewrite subr_gt0.
122122
move=> x y; rewrite !inE/= /eclamp pmulr_rle0 // invr_le0.
123123
rewrite lern0 /= !ltr_distl => /andP[_ lt1] /andP[lt2 _].
124124
apply/(lt_trans lt1)/(le_lt_trans _ lt2).
125-
by rewrite lerBrDl addrCA -splitr /e addrCA subrr addr0.
125+
by rewrite lerBrDl addrCA -splitr /e addrC subrK.
126126
Qed.
127127

128128
Lemma separable {R : realType} (l1 l2 : \bar R) :
@@ -303,9 +303,8 @@ Lemma ncvgM u v lu lv : ncvg u lu%:E -> ncvg v lv%:E ->
303303
Proof.
304304
move=> cu cv; pose a := u \- lu%:S; pose b := v \- lv%:S.
305305
have eq: (u \* v) =1 (lu * lv)%:S \+ ((lu%:S \* b) \+ (a \* v)).
306-
move=> n; rewrite {}/a {}/b /= [u n+_]addrC [(_+_)*(v n)]mulrDl.
307-
rewrite !addrA -[LHS]add0r; congr (_ + _); rewrite mulrDr.
308-
by rewrite !(mulrN, mulNr) (addrCA (lu * lv)) subrr addr0 subrr.
306+
move=> n; rewrite {}/a {}/b /=.
307+
by rewrite addrC mulrBr addrAC subrK addrC mulrBl subrK.
309308
apply/(ncvg_eq eq); rewrite -[X in X%:E]addr0; apply/ncvgD.
310309
by apply/ncvgC. rewrite -[X in X%:E]addr0; apply/ncvgD.
311310
+ apply/ncvgMr; first rewrite -[X in X%:E](subrr lv).
@@ -388,7 +387,7 @@ case: l1 l2 => [l1||] [l2||] //=; first last.
388387
move=> lt_12; pose e := l2 - l1 => /(_ (B l2 e)).
389388
case=> K cv; exists K => n /cv; rewrite !inE eclamp_id ?subr_gt0 //.
390389
rewrite ltr_distl => /andP[] /(le_lt_trans _) h _; apply: h.
391-
by rewrite {cv}/e opprB addrCA subrr addr0.
390+
by rewrite {cv}/e subKr.
392391
Qed.
393392

394393
Lemma ncvg_lt (u : nat -> R) (l1 l2 : \bar R) :

experimental_reals/realsum.v

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -465,8 +465,7 @@ apply/eqP; case: (x =P _) => // /eqP /lt_total /orP[]; last first.
465465
move=> lt_xS; pose e := psum S - x.
466466
have ge0_e: 0 < e by rewrite subr_gt0.
467467
case: (sup_adherent ge0_e (summable_sup smS)) => y.
468-
case=> /= J ->; rewrite /e /psum (asboolT smS).
469-
rewrite opprB addrCA subrr addr0 => lt_xSJ.
468+
case=> /= J ->; rewrite /e /psum (asboolT smS) subKr => lt_xSJ.
470469
pose k := \max_(j : J) (val j); have lt_x_uSk: x < u k.+1.
471470
apply/(lt_le_trans lt_xSJ); rewrite /u big_ord_mkfset.
472471
rewrite (eq_bigr (S \o val)) => /= [j _|]; first by rewrite ger0_norm.

reals/reals.v

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,7 @@ Qed.
281281
Lemma sup_le_ub {E} x : E !=set0 -> (ubound E) x -> sup E <= x.
282282
Proof.
283283
move=> hasE leEx; set y := sup E; pose z := (x + y) / 2%:R.
284-
have Dz: 2%:R * z = x + y.
285-
by rewrite mulrCA divff ?mulr1 // pnatr_eq0.
284+
have Dz: 2%:R * z = x + y by rewrite mulrC divfK// pnatr_eq0.
286285
have ubE : has_sup E by split => //; exists x.
287286
have [/downP [t Et lezt] | leyz] := sup_total z ubE.
288287
rewrite -(lerD2l x) -Dz -mulr2n -[leRHS]mulr_natl.
@@ -334,8 +333,7 @@ have e2pos : 0 < eps / 2%:R by rewrite divr_gt0// ltr0n.
334333
have [r Ar supBr] := sup_adherent e2pos supA.
335334
have [s Bs supAs] := sup_adherent e2pos supB.
336335
have := ltrD supBr supAs.
337-
rewrite -addrA [-_+_]addrC -addrA -opprD -splitr addrA /= opprD opprK addrA.
338-
rewrite subrr add0r; apply/negP; rewrite -leNgt.
336+
rewrite -addrACA -opprD -splitr subKr; apply/negP; rewrite -leNgt.
339337
by apply: sup_upper_bound => //; exists r => //; exists s.
340338
Qed.
341339

theories/derive.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ rewrite (_ : g = g1 + g2) ?funeqE // -(addr0 (_ _ v)); apply: cvgD.
325325
rewrite -(scale1r (_ _ v)); apply: cvgZr_tmp => /= X [e e0].
326326
rewrite /ball_ /= => eX.
327327
apply/nbhs_ballP.
328-
by exists e => //= x _ x0; apply eX; rewrite mulVr // ?unitfE //= subrr normr0.
328+
by exists e => //= x _ x0; apply eX; rewrite mulVf//= subrr normr0.
329329
rewrite /g2.
330330
have [->|v0] := eqVneq v 0.
331331
rewrite (_ : (fun _ => _) = cst 0); first exact: cvg_cst.
@@ -340,7 +340,7 @@ rewrite ltr_pdivlMr ?normr_gt0 // => jvi j0.
340340
rewrite add0r normrN normrZ -ltr_pdivlMl ?normr_gt0 ?invr_neq0 //.
341341
have /Hi/le_lt_trans -> // : ball 0 i (j *: v).
342342
by rewrite -ball_normE/= add0r normrN (le_lt_trans _ jvi) // normrZ.
343-
rewrite -(mulrC e) -mulrA -ltr_pdivlMl // mulrA mulVr ?unitfE ?gt_eqF //.
343+
rewrite -(mulrC e) -mulrA -ltr_pdivlMl // mulrA mulVf ?gt_eqF//.
344344
rewrite normrV ?unitfE // div1r invrK ltr_pdivrMl; last first.
345345
by rewrite pmulr_rgt0 // normr_gt0.
346346
rewrite normrZ mulrC -mulrA.

theories/ereal.v

Lines changed: 39 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ have sSoo : supremums S +oo.
399399
by move=> /= y /(_ _ Spoo); rewrite leye_eq => /eqP ->.
400400
case: xgetP.
401401
by move=> _ -> sSxget; move: (is_subset1_supremums sSoo sSxget).
402-
by move/(_ +oo) => gSoo; exfalso; exact: gSoo.
402+
by move=> /(_ +oo); exact: contra_notP.
403403
Qed.
404404

405405
Definition ereal_sup S := supremum -oo S.
@@ -1175,15 +1175,13 @@ Qed.
11751175
Lemma ball_ereal_ball_fin_lt r r' (e : {posnum R}) :
11761176
let e' := (r - fine (expand (contract r%:E - e%:num)))%R in
11771177
ball r e' r' -> (r' < r)%R ->
1178-
(`|contract r%:E - (e)%:num| < 1)%R ->
1178+
(`|contract r%:E - e%:num| < 1)%R ->
11791179
ereal_ball r%:E e%:num r'%:E.
11801180
Proof.
11811181
move=> e' re'r' rr' X; rewrite /ereal_ball.
11821182
rewrite gtr0_norm ?subr_gt0// ?lt_contract ?lte_fin//.
1183-
move: re'r'.
1184-
rewrite /ball /= gtr0_norm // ?subr_gt0// /e'.
1185-
rewrite -ltrBlDl addrAC subrr add0r ltrNl opprK -lte_fin.
1186-
rewrite fine_expand // lt_expandLR ?inE ?ltW//.
1183+
move: re'r'; rewrite /ball /= gtr0_norm ?subr_gt0// /e'.
1184+
rewrite ltrD2l ltrN2 -lte_fin fine_expand// lt_expandLR ?inE ?ltW//.
11871185
by rewrite ltrBlDl addrC -ltrBlDl.
11881186
Qed.
11891187

@@ -1318,12 +1316,12 @@ Lemma nbhs_fin_inbound r (e : {posnum R}) (A : set (\bar R)) :
13181316
ereal_ball r%:E e%:num `<=` A -> nbhs r%:E A.
13191317
Proof.
13201318
move=> reA.
1321-
have [|reN1] := boolP (contract r%:E - e%:num == -1)%R.
1319+
have [/eqP|reN1] := eqVneq (contract r%:E - e%:num)%R (-1)%R.
13221320
rewrite subr_eq addrC => /eqP reN1.
1323-
have [re1|] := boolP (contract r%:E + e%:num == 1)%R.
1324-
move/eqP : reN1; rewrite -(eqP re1) opprD addrCA subrr addr0 -subr_eq0.
1325-
rewrite opprK -mulr2n mulrn_eq0 orFb contract_eq0 => /eqP[r0].
1326-
move: re1; rewrite r0 contract0 add0r => /eqP e1.
1321+
have [re1|] := eqVneq (contract r%:E + e%:num)%R 1%R.
1322+
move/eqP : reN1; rewrite -re1 opprD addrC subrK -subr_eq0 opprK.
1323+
rewrite -mulr2n mulrn_eq0 orFb contract_eq0 => /eqP[r0].
1324+
move: re1; rewrite r0 contract0 add0r => e1.
13271325
apply/nbhs_ballP; exists 1%R => //= r'; rewrite /ball /= sub0r normrN => r'1.
13281326
apply: reA.
13291327
by rewrite /ereal_ball r0 contract0 sub0r normrN e1 contract_lt1.
@@ -1338,10 +1336,9 @@ have [|reN1] := boolP (contract r%:E - e%:num == -1)%R.
13381336
have [rr'|r'r] := lerP (contract r%:E) (contract r'%:E).
13391337
apply: contract_ereal_ball_fin_le; last exact/ltW.
13401338
by rewrite -lee_fin -(contractK r%:E) -(contractK r'%:E) le_expand.
1341-
apply: contract_ereal_ball_fin_lt; last first.
1342-
by rewrite reN1 addrAC subrr add0r.
1339+
apply: contract_ereal_ball_fin_lt; last by rewrite reN1 lerBlDl.
13431340
rewrite -lte_fin -(contractK r%:E) -(contractK r'%:E).
1344-
by rewrite lt_expand // inE; exact: contract_le1.
1341+
by rewrite lt_expand // inE contract_le1.
13451342
exact: contract_ereal_ball_pinfty.
13461343
have : nbhs r%:E (setT `\ -oo) by apply/nbhs_ballP; exists 1%R => /=.
13471344
move=> /nbhs_ballP[_/posnumP[e']] /=; rewrite /ball /= => h.
@@ -1351,9 +1348,9 @@ move: reN1; rewrite eq_sym neq_lt => /orP[reN1|reN1].
13511348
by apply: (@nbhs_fin_out_above _ e) => //; rewrite re1.
13521349
move: re1; rewrite neq_lt => /orP[re1|re1].
13531350
have ? : (`|contract r%:E - e%:num| < 1)%R.
1354-
rewrite ltr_norml reN1 andTb ltrBlDl.
1351+
rewrite ltr_norml reN1/= -/(contract _%:E) ltrBlDl.
13551352
rewrite (@lt_le_trans _ _ 1%R) // ?lerDr//.
1356-
by case/ltr_normlP : (contract_lt1 r).
1353+
by rewrite (le_lt_trans (ler_norm _))// contract_lt1.
13571354
have ? : (`|contract r%:E + e%:num| < 1)%R.
13581355
rewrite ltr_norml re1 andbT -(addr0 (-1)) ler_ltD //.
13591356
by move: (contract_le1 r%:E); rewrite ler_norml => /andP[].
@@ -1372,10 +1369,9 @@ move: reN1; rewrite eq_sym neq_lt => /orP[reN1|reN1].
13721369
move=> rr'; apply: ball_ereal_ball_fin_le => //.
13731370
by apply: le_ball re'r'; rewrite ge_min lexx orbT.
13741371
move: re'r'; rewrite /ball /= lt_min => /andP[].
1375-
rewrite gtr0_norm ?subr_gt0 // -ltrBlDl addrAC subrr add0r ltrNl.
1376-
rewrite opprK -lte_fin fine_expand // => r'e'r _.
1372+
rewrite gtr0_norm ?subr_gt0// ltrD2l ltrN2 -lte_fin fine_expand// => re'r _.
13771373
exact: expand_ereal_ball_fin_lt.
1378-
by apply :(@nbhs_fin_out_above _ e) => //; rewrite ltW.
1374+
by apply: (@nbhs_fin_out_above _ e) => //; rewrite ltW.
13791375
have [re1|re1] := ltrP 1 (contract r%:E + e%:num).
13801376
exact: (@nbhs_fin_out_above_below _ e).
13811377
move: re1; rewrite le_eqVlt => /orP[re1|re1].
@@ -1428,11 +1424,10 @@ rewrite predeq2E => x A; split.
14281424
have : (contract (r%:E - e%:num%:E) < contract r'%:E)%R.
14291425
move: re'r'; rewrite /e' lt_min => /andP[+ _].
14301426
rewrite /e' ltrBrDl addrC -ltrBrDl => /lt_le_trans.
1431-
by apply; rewrite opprB addrCA subrr addr0.
1427+
by apply; rewrite opprB addrC subrK.
14321428
rewrite -lt_expandRL ?inE ?contract_le1 // !contractK lte_fin.
14331429
rewrite ltrBlDr addrC -ltrBlDr => ->; rewrite andbT.
1434-
rewrite (@lt_le_trans _ _ 0%R)// 1?ltrNl 1?oppr0// subr_ge0.
1435-
by rewrite -lee_fin -le_contract.
1430+
by rewrite (@lt_le_trans _ _ 0%R)// subr_ge0 -lee_fin -le_contract.
14361431
apply: reA; rewrite /ball /= ltr_norml//.
14371432
rewrite ltr0_norm ?subr_lt0// opprB in re'r'.
14381433
apply/andP; split; last first.
@@ -1449,26 +1444,20 @@ rewrite predeq2E => x A; split.
14491444
have [cr0|cr0] := lerP 0 (contract r%:E).
14501445
move: re'2; rewrite ler0_norm; last first.
14511446
by rewrite subr_le0; case/ler_normlP : (contract_le1 r%:E).
1452-
rewrite opprB ltrBrDl addrCA subrr addr0 => h.
1453-
exfalso.
1454-
move: h; apply/negP; rewrite -leNgt.
1455-
by case/ler_normlP : (contract_le1 (r%:E + e%:num%:E)).
1447+
rewrite opprB ltrBrDl addrC subrK ltNge; apply: contraNP => _.
1448+
by rewrite (le_trans (ler_norm _))// contract_le1.
14561449
move: re'2; rewrite ler0_norm; last first.
14571450
by rewrite subr_le0; case/ler_normlP : (contract_le1 r%:E).
1458-
rewrite opprB ltrBrDl addrCA subrr addr0 => h.
1459-
exfalso.
1460-
move: h; apply/negP; rewrite -leNgt.
1461-
by case/ler_normlP : (contract_le1 (r%:E + e%:num%:E)).
1451+
rewrite opprB ltrBrDl addrC subrK ltNge; apply: contraNP => _.
1452+
by rewrite (le_trans (ler_norm _))// contract_le1.
14621453
* move=> /xsectionP/=; rewrite /ereal_ball [contract -oo]/= opprK.
14631454
rewrite lt_min => /andP[re'1 _].
14641455
move: re'1.
14651456
rewrite ger0_norm; last first.
14661457
rewrite addrC -lerBlDl add0r.
14671458
by move: (contract_le1 r%:E); rewrite ler_norml => /andP[].
1468-
rewrite ltrD2l => h.
1469-
exfalso.
1470-
move: h; apply/negP; rewrite -leNgt -lerNl.
1471-
by move: (contract_le1 (r%:E - e%:num%:E)); rewrite ler_norml => /andP[].
1459+
rewrite ltrD2l ltNge; apply: contraNP => _.
1460+
by rewrite lerNl lerNnormlW// contract_le1.
14721461
+ exists (diag (1 - contract M%:E))%R; rewrite /diag.
14731462
exists (1 - contract M%:E)%R => //=.
14741463
by rewrite subr_gt0 (le_lt_trans _ (contract_lt1 M)) // ler_norm.
@@ -1480,41 +1469,31 @@ rewrite predeq2E => x A; split.
14801469
rewrite ltrBlDr addrC addrCA addrC -ltrBlDr subrr subr_gt0 in rM1.
14811470
by rewrite -lte_fin -lt_contract.
14821471
* by rewrite /ereal_ball /= subrr normr0 => h; exact: MA.
1483-
* rewrite /ereal_ball /= opprK => h {MA}.
1484-
exfalso.
1485-
move: h; apply/negP.
1486-
rewrite -leNgt [in leRHS]ger0_norm // lerBlDr.
1487-
rewrite -/(contract M%:E) addrC -lerBlDr opprD addrA subrr sub0r.
1488-
by move: (contract_le1 M%:E); rewrite ler_norml => /andP[].
1472+
* rewrite /ereal_ball /= opprK ltNge; apply: contraNP => _.
1473+
rewrite [in leRHS]ger0_norm // lerD2l.
1474+
by rewrite -/(contract M%:E) lerNl lerNnormlW// contract_le1.
14891475
+ exists (diag (1 + contract M%:E)%R); rewrite /diag.
14901476
exists (1 + contract M%:E)%R => //=.
1491-
rewrite -ltrBlDl sub0r.
1492-
by move: (contract_lt1 M); rewrite ltr_norml => /andP[].
1477+
by rewrite -/(contract M%:E) -ltrBlDl sub0r ltrNnormlW// contract_lt1.
14931478
case=> [r| |] /xsectionP/=.
14941479
* rewrite /ereal_ball => /= rM1.
14951480
apply: MA; rewrite lte_fin.
14961481
rewrite ler0_norm in rM1; last first.
1497-
rewrite lerBlDl addr0 ltW //.
1498-
by move: (contract_lt1 r); rewrite ltr_norml => /andP[].
1499-
rewrite opprB opprK -ltrBlDl addrK in rM1.
1500-
by rewrite -lte_fin -lt_contract.
1501-
* rewrite /ereal_ball /= -opprD normrN => h {MA}.
1502-
exfalso.
1503-
move: h; apply/negP.
1504-
rewrite -leNgt [in leRHS]ger0_norm// -lerBlDr addrAC.
1505-
rewrite subrr add0r -/(contract M%:E).
1506-
by rewrite (le_trans _ (ltW (contract_lt1 M))) // ler_norm.
1507-
* rewrite /ereal_ball /= => _; exact: MA.
1482+
by rewrite subr_le0 -/(contract r%:E) lerNnormlW// contract_le1.
1483+
move: rM1; rewrite opprB opprK -ltrBlDl addrK.
1484+
by rewrite -!/(contract _%:E) lt_contract lte_fin.
1485+
* rewrite /ereal_ball/= -opprD normrN ger0_norm// ltrD2l.
1486+
by rewrite -/(contract M%:E) ltNge (le_trans (ler_norm _))// contract_le1.
1487+
* by rewrite /ereal_ball /= => _; exact: MA.
15081488
- case: x => [r [E [_/posnumP[e] reA] sEA] | [E [_/posnumP[e] reA] sEA] |
15091489
[E [_/posnumP[e] reA] sEA]] //=.
15101490
+ by apply: (@nbhs_fin_inbound _ e) => ? ?; exact/sEA/xsectionP/reA.
1511-
+ have [|] := boolP (e%:num <= 1)%R.
1512-
by move/nbhs_oo_up_e1; apply => ? ?; exact/sEA/xsectionP/reA.
1513-
by rewrite -ltNge => /nbhs_oo_up_1e; apply => ? ?; exact/sEA/xsectionP/reA.
1514-
+ have [|] := boolP (e%:num <= 1)%R.
1515-
move/nbhs_oo_down_e1; apply => ? ?; apply: sEA.
1516-
by rewrite /xsection/= inE; exact: reA.
1517-
by rewrite -ltNge =>/nbhs_oo_down_1e; apply => ? ?; exact/sEA/xsectionP/reA.
1491+
+ have [|] := lerP e%:num 1%R.
1492+
* by move/nbhs_oo_up_e1; apply => x ex; exact/sEA/xsectionP/reA.
1493+
* by move/nbhs_oo_up_1e; apply => x ex; exact/sEA/xsectionP/reA.
1494+
+ have [|] := lerP e%:num 1%R.
1495+
* by move/nbhs_oo_down_e1; apply => x ex; exact/sEA/xsectionP/reA.
1496+
* by move/nbhs_oo_down_1e; apply => x ex; exact/sEA/xsectionP/reA.
15181497
Qed.
15191498

15201499
HB.instance Definition _ := Nbhs_isPseudoMetric.Build R (\bar R)

0 commit comments

Comments
 (0)