@@ -5,7 +5,7 @@ From mathcomp Require Import ssreflect ssrfun ssrbool eqtype ssrnat seq choice.
55From mathcomp Require Import fintype bigop binomial order perm ssralg poly.
66From mathcomp Require Import polydiv ssrnum ssrint rat matrix mxpoly polyXY.
77From mathcomp Require Import bigenough polyorder.
8- Set SsrOldRewriteGoalsOrder. (* change Set to Unset when porting the file, then remove the line when requiring MathComp >= 2.6 *)
8+ Unset SsrOldRewriteGoalsOrder. (* remove the line when requiring MathComp >= 2.6 *)
99
1010(************************************************************************** *)
1111(* This is a standalone construction of Cauchy reals over an arbitrary *)
@@ -92,8 +92,8 @@ rewrite ler_wpM2l //.
9292 by rewrite ?mulr_ge0 ?exprn_ge0 ?ler_maxr ?addr_ge0 ?normr_ge0 // ltrW.
9393rewrite (ger0_norm r_ge0) ler_norml opprD.
9494rewrite (le_trans _ lx) ?(le_trans ux) // lerD2r.
95- by rewrite ler_normr lexx.
96- by rewrite lerNl ler_normr lexx orbT .
95+ by rewrite lerNl ler_normr lexx orbT .
96+ by rewrite ler_normr lexx.
9797Qed .
9898
9999Lemma poly_bound_gt0 p a r : 0 < poly_bound p a r.
@@ -120,7 +120,7 @@ rewrite le0r=> /orP[/eqP->|r_gt0 hx hy].
120120rewrite mulrA mulrDr mulr1 ler_wpDl ?mulr_ge0 ?normr_ge0 //=.
121121 by rewrite exprn_ge0 ?le_max ?mulr_ge0 ?ger0E ?ltW.
122122rewrite -{1}(addNKr x y) [- _ + _]addrC /= -mulrA.
123- rewrite nderiv_taylor; last exact: mulrC.
123+ rewrite nderiv_taylor; first exact: mulrC.
124124have [->|p_neq0] := eqVneq p 0.
125125 rewrite size_poly0 big_ord0 horner0 subr0 normr0 mulr_ge0 ?normr_ge0 //.
126126 by rewrite big_ord0 mulr0 lexx.
148148Lemma poly_accr_bound_gt0 p a r : 0 < poly_accr_bound p a r.
149149Proof .
150150rewrite /poly_accr_bound pmulr_rgt0 //.
151- rewrite ltr_wpDr ?ltr01 // .
152- by rewrite sumr_ge0 // => i; rewrite poly_bound_ge0 .
153- by rewrite exprn_gt0 // lt_max ltr01 pmulr_rgt0 ?ltr0n .
151+ by rewrite exprn_gt0 // lt_max ltr01 pmulr_rgt0 ?ltr0n .
152+ rewrite ltr_wpDr ?ltr01 // .
153+ by rewrite sumr_ge0 // => i; rewrite poly_bound_ge0 .
154154Qed .
155155
156156Lemma poly_accr_bound_ge0 p a r : 0 <= poly_accr_bound p a r.
@@ -191,8 +191,8 @@ Proof.
191191rewrite /norm_poly2; have [->|p0] := eqVneq p 0.
192192 by rewrite /map_poly poly_def !(size_poly0, big_ord0).
193193rewrite /map_poly size_poly_eq // -size_poly_eq0 size_poly_eq //.
194- by rewrite -lead_coefE size_poly_eq0 lead_coef_eq0.
195- by rewrite -! lead_coefE normr_eq0 ! lead_coef_eq0.
194+ by rewrite -! lead_coefE normr_eq0 ! lead_coef_eq0.
195+ by rewrite -lead_coefE size_poly_eq0 lead_coef_eq0.
196196Qed .
197197
198198End polyXY_order_extra.
@@ -210,9 +210,9 @@ Definition poly_accr_bound2 (p : {poly F}) (a r : F) : F
210210Lemma poly_accr_bound2_gt0 p a r : 0 < poly_accr_bound2 p a r.
211211Proof .
212212rewrite /poly_accr_bound pmulr_rgt0 //.
213- rewrite ltr_wpDr ?ltr01 // .
214- by rewrite sumr_ge0 // => i; rewrite poly_bound_ge0 .
215- by rewrite exprn_gt0 // lt_max ltr01 pmulr_rgt0 ?ltr0n .
213+ by rewrite exprn_gt0 // lt_max ltr01 pmulr_rgt0 ?ltr0n .
214+ rewrite ltr_wpDr ?ltr01 // .
215+ by rewrite sumr_ge0 // => i; rewrite poly_bound_ge0 .
216216Qed .
217217
218218Lemma poly_accr_bound2_ge0 p a r : 0 <= poly_accr_bound2 p a r.
@@ -232,17 +232,17 @@ move=> neq_xy hx hy.
232232rewrite mulrA mulrDr mulr1 ler_wpDl ?mulr_ge0 ?normr_ge0 //=.
233233 by rewrite exprn_ge0 ?le_max ?mulr_ge0 ?ger0E ?ltW.
234234rewrite -{1}(addNKr x y) [- _ + _]addrC /= -mulrA.
235- rewrite nderiv_taylor; last exact: mulrC.
235+ rewrite nderiv_taylor; first exact: mulrC.
236236have [->|p_neq0] := eqVneq p 0.
237237 by rewrite derivC !horner0 size_poly0 !(big_ord0, subrr, mul0r) normr0 !mulr0.
238238rewrite -[size _]prednK ?lt0n ?size_poly_eq0 //.
239239rewrite big_ord_recl expr0 mulr1 nderivn0 /= -size_deriv.
240240have [->|p'_neq0] := eqVneq p^`() 0.
241241 by rewrite horner0 size_poly0 !big_ord0 addr0 !(subrr, mul0r) normr0 !mulr0.
242242rewrite -[size _]prednK ?lt0n ?size_poly_eq0 // big_ord_recl expr1.
243- rewrite addrAC subrr add0r mulrDl mulfK; last by rewrite subr_eq0 eq_sym.
243+ rewrite addrAC subrr add0r mulrDl mulfK; first by rewrite subr_eq0 eq_sym.
244244rewrite nderivn1 addrAC subrr add0r mulr_sumr normrM normfV.
245- rewrite ler_pdivrMr ?normr_gt0; last by rewrite subr_eq0 eq_sym.
245+ rewrite ler_pdivrMr ?normr_gt0; first by rewrite subr_eq0 eq_sym.
246246rewrite mulrAC -expr2 mulrC mulr_suml.
247247have := le_trans (ler_norm_sum _ _ _); apply.
248248rewrite ler_sum // => i _ /=; rewrite /bump /= !add1n.
@@ -921,7 +921,7 @@ exists_big_modulus m F.
921921 move=> e i j e_gt0 hi hj.
922922 have /andP[xi_neq0 xj_neq0] : (x i != 0) && (x j != 0).
923923 by rewrite -!normr_gt0 !(lt_le_trans _ (lbound0_of x_neq0)) ?lbound_gt0.
924- rewrite -(@ltr_pM2r _ `|x i * x j|); last by rewrite normr_gt0 mulf_neq0.
924+ rewrite -(@ltr_pM2r _ `|x i * x j|); first by rewrite normr_gt0 mulf_neq0.
925925 rewrite -normrM !mulrBl mulrA mulVf // mulrCA mulVf // mul1r mulr1.
926926 apply: lt_le_trans (_ : e * d ^+ 2 <= _).
927927 by apply: cauchymodP; rewrite // !pmulr_rgt0 ?lbound_gt0.
@@ -1367,7 +1367,7 @@ pose_big_enough i.
13671367 exists i => //; left; split; last first.
13681368 move=> y hy; have := (@poly_accr_bound1P _ p^`() 0 (1 + ubound x) (x i) y).
13691369 rewrite ?subr0 ler_wpDl ?ler01 ?uboundP //.
1370- rewrite (le_trans (_ : _ <= r + `|x i|)) ?subr0; last 2 first .
1370+ rewrite (le_trans (_ : _ <= r + `|x i|)) ?subr0.
13711371 + rewrite (monoRL (addrNK _) (lerD2r _)).
13721372 by rewrite (le_trans (lerB_dist _ _)).
13731373 + by rewrite lerD ?ge_min ?lexx ?uboundP.
@@ -1386,11 +1386,11 @@ pose_big_enough i.
13861386 have := (@poly_accr_bound1P _ p^`() 0 (1 + ubound x) (x i) z).
13871387 have := @poly_accr_bound2P _ p 0 (1 + ubound x) z y; rewrite eq_sym !subr0.
13881388 rewrite neq_yz ?ler01 ?ubound_ge0=> // /(_ isT).
1389- rewrite (le_trans (_ : _ <= r + `|x i|)); last 2 first .
1389+ rewrite (le_trans (_ : _ <= r + `|x i|)).
13901390 + rewrite (monoRL (addrNK _) (lerD2r _)).
13911391 by rewrite (le_trans (lerB_dist _ _)).
13921392 + by rewrite lerD ?ge_min ?lexx ?uboundP.
1393- rewrite (le_trans (_ : _ <= r + `|x i|)); last 2 first .
1393+ rewrite (le_trans (_ : _ <= r + `|x i|)).
13941394 + rewrite (monoRL (addrNK _) (lerD2r _)).
13951395 by rewrite (le_trans (lerB_dist _ _)).
13961396 + by rewrite lerD ?ge_min ?lexx ?uboundP.
@@ -1472,7 +1472,7 @@ Proof.
14721472rewrite /poly_bound.
14731473pose f (q : {poly F}) (k : nat) := `|q^`N(j.+1)`_k| * (`|a| + `|r|) ^+ k.
14741474rewrite lerD //=.
1475- rewrite (big_ord_widen (sizeY q) (f q.[(z i)%:P])); last first .
1475+ rewrite (big_ord_widen (sizeY q) (f q.[(z i)%:P])).
14761476 rewrite size_nderivn leq_subLR (leq_trans (max_size_evalC _ _)) //.
14771477 by rewrite leq_addl.
14781478rewrite big_mkcond /= ler_sum // /f => k _.
@@ -1483,7 +1483,7 @@ rewrite !(@big_morph _ _ (fun p => p^`N(j.+1)) 0 +%R);
14831483 do ?[by rewrite raddf0|by move=> x y /=; rewrite raddfD].
14841484rewrite !coef_sum.
14851485rewrite (le_trans (ler_norm_sum _ _ _)) //.
1486- rewrite ger0_norm; last first .
1486+ rewrite ger0_norm.
14871487 rewrite sumr_ge0=> //= l _.
14881488 rewrite coef_nderivn mulrn_wge0 ?natr_ge0 //.
14891489 rewrite -polyC_exp coefMC coef_norm_poly2 mulr_ge0 ?normr_ge0 //.
@@ -1518,7 +1518,7 @@ apply: le_trans (_ : u * vi <= _).
15181518 by rewrite max_size_evalC.
15191519rewrite ler_wpM2l ?exprn_ge0 ?le_max ?ler01 // lerD //.
15201520pose f j := poly_bound q.[(z i)%:P]^`N(j.+1) a r.
1521- rewrite (big_ord_widen (sizeY q).-1 f); last first .
1521+ rewrite (big_ord_widen (sizeY q).-1 f).
15221522 rewrite -subn1 leq_subLR add1n (leq_trans _ (leqSpred _)) //.
15231523 by rewrite max_size_evalC.
15241524rewrite big_mkcond /= ler_sum // /f => k _.
@@ -1596,7 +1596,7 @@ have [||[u v] /= [hu hv] hpq] := @div_annihilant_in_ideal _ p q.
15961596+ by rewrite (@has_root_creal_size_gt1 y).
15971597apply: eq_crealP; exists_big_modulus m F.
15981598 move=> e i e_gt0 hi /=; rewrite subr0.
1599- rewrite (hpq (y i)) mulrCA divff ?mulr1; last first .
1599+ rewrite (hpq (y i)) mulrCA divff ?mulr1.
16001600 by rewrite -normr_gt0 (lt_le_trans _ (lbound0_of y_neq0)) ?lbound_gt0.
16011601 rewrite split_norm_add // normrM.
16021602 apply: le_lt_trans (_ : (ubound u.[y, x / y_neq0]) * `|p.[x i]| < _).
0 commit comments