Skip to content

Commit 358b5ff

Browse files
authored
Merge pull request #84 from proux01/reworder
Port to new rewrite goals order
2 parents 1d3c71a + cdbb036 commit 358b5ff

9 files changed

Lines changed: 102 additions & 104 deletions

File tree

theories/cauchyreals.v

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ From mathcomp Require Import ssreflect ssrfun ssrbool eqtype ssrnat seq choice.
55
From mathcomp Require Import fintype bigop binomial order perm ssralg poly.
66
From mathcomp Require Import polydiv ssrnum ssrint rat matrix mxpoly polyXY.
77
From 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.
9393
rewrite (ger0_norm r_ge0) ler_norml opprD.
9494
rewrite (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.
9797
Qed.
9898

9999
Lemma poly_bound_gt0 p a r : 0 < poly_bound p a r.
@@ -120,7 +120,7 @@ rewrite le0r=> /orP[/eqP->|r_gt0 hx hy].
120120
rewrite mulrA mulrDr mulr1 ler_wpDl ?mulr_ge0 ?normr_ge0 //=.
121121
by rewrite exprn_ge0 ?le_max ?mulr_ge0 ?ger0E ?ltW.
122122
rewrite -{1}(addNKr x y) [- _ + _]addrC /= -mulrA.
123-
rewrite nderiv_taylor; last exact: mulrC.
123+
rewrite nderiv_taylor; first exact: mulrC.
124124
have [->|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.
@@ -148,9 +148,9 @@ Qed.
148148
Lemma poly_accr_bound_gt0 p a r : 0 < poly_accr_bound p a r.
149149
Proof.
150150
rewrite /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.
154154
Qed.
155155

156156
Lemma poly_accr_bound_ge0 p a r : 0 <= poly_accr_bound p a r.
@@ -191,8 +191,8 @@ Proof.
191191
rewrite /norm_poly2; have [->|p0] := eqVneq p 0.
192192
by rewrite /map_poly poly_def !(size_poly0, big_ord0).
193193
rewrite /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.
196196
Qed.
197197

198198
End polyXY_order_extra.
@@ -210,9 +210,9 @@ Definition poly_accr_bound2 (p : {poly F}) (a r : F) : F
210210
Lemma poly_accr_bound2_gt0 p a r : 0 < poly_accr_bound2 p a r.
211211
Proof.
212212
rewrite /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.
216216
Qed.
217217

218218
Lemma poly_accr_bound2_ge0 p a r : 0 <= poly_accr_bound2 p a r.
@@ -232,17 +232,17 @@ move=> neq_xy hx hy.
232232
rewrite mulrA mulrDr mulr1 ler_wpDl ?mulr_ge0 ?normr_ge0 //=.
233233
by rewrite exprn_ge0 ?le_max ?mulr_ge0 ?ger0E ?ltW.
234234
rewrite -{1}(addNKr x y) [- _ + _]addrC /= -mulrA.
235-
rewrite nderiv_taylor; last exact: mulrC.
235+
rewrite nderiv_taylor; first exact: mulrC.
236236
have [->|p_neq0] := eqVneq p 0.
237237
by rewrite derivC !horner0 size_poly0 !(big_ord0, subrr, mul0r) normr0 !mulr0.
238238
rewrite -[size _]prednK ?lt0n ?size_poly_eq0 //.
239239
rewrite big_ord_recl expr0 mulr1 nderivn0 /= -size_deriv.
240240
have [->|p'_neq0] := eqVneq p^`() 0.
241241
by rewrite horner0 size_poly0 !big_ord0 addr0 !(subrr, mul0r) normr0 !mulr0.
242242
rewrite -[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.
244244
rewrite 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.
246246
rewrite mulrAC -expr2 mulrC mulr_suml.
247247
have := le_trans (ler_norm_sum _ _ _); apply.
248248
rewrite 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.
14721472
rewrite /poly_bound.
14731473
pose f (q : {poly F}) (k : nat) := `|q^`N(j.+1)`_k| * (`|a| + `|r|) ^+ k.
14741474
rewrite 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.
14781478
rewrite 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].
14841484
rewrite !coef_sum.
14851485
rewrite (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.
15191519
rewrite ler_wpM2l ?exprn_ge0 ?le_max ?ler01 // lerD //.
15201520
pose 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.
15241524
rewrite 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).
15971597
apply: 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]| < _).

theories/complex.v

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ From mathcomp Require Import ssreflect ssrfun ssrbool eqtype ssrnat seq div.
55
From mathcomp Require Import choice fintype tuple bigop binomial order ssralg.
66
From mathcomp Require Import zmodp poly ssrnum ssrint archimedean rat matrix.
77
From mathcomp Require Import mxalgebra mxpoly closed_field polyrcf realalg.
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 files defines the extension R[i] of a real field R, *)
@@ -341,7 +341,7 @@ rewrite [u]lock [v]lock !addrA; set x := (a ^+ 2 + _ + _ + _).
341341
rewrite -[_ + locked u]addrA [leLHS]addrC addKr -!lock addrC.
342342
have [huv|] := ger0P (u + v); last first.
343343
by move=> /ltW /le_trans -> //; rewrite pmulrn_lge0 // mulr_ge0 ?sqrtr_ge0.
344-
rewrite -(@ler_pXn2r _ 2) -?topredE //=; last first.
344+
rewrite -(@ler_pXn2r _ 2) -?topredE //=.
345345
by rewrite ?(pmulrn_lge0, mulr_ge0, sqrtr_ge0) //.
346346
rewrite -mulr_natl !exprMn !sqr_sqrtr ?(ler_wpDr, sqr_ge0) //.
347347
rewrite -mulrnDl -[in leLHS]mulr_natl !exprMn ler_pM2l ?exprn_gt0 ?ltr0n //.
@@ -670,7 +670,7 @@ congr (_ +i* _); set u := if _ then _ else _.
670670
by rewrite opprK -mulr2n -[a *+ 2]mulr_natl [_*a]mulrC mulfK.
671671
rewrite mulrCA -mulrA -mulrDr [sqrtr _ * _]mulrC.
672672
rewrite -mulr2n -sqrtrM // mulrAC !mulrA ?[_ * (_ - _)]mulrC -subr_sqr.
673-
rewrite sqr_sqrtr; last first.
673+
rewrite sqr_sqrtr.
674674
by rewrite ler_wpDr // exprn_even_ge0.
675675
rewrite [_^+2 + _]addrC addrK -mulrA -expr2 sqrtrM ?exprn_even_ge0 //.
676676
rewrite !sqrtr_sqr -(mulr_natr (_ * _)).
@@ -826,7 +826,7 @@ rewrite /skew_vec /= !mxvec_delta !mxE !eqxx /=.
826826
have /(_ _ _ (_, _) (_, _)) /= eq_mviE :=
827827
inj_eq (bij_inj (onT_bij (curry_mxvec_bij _ _))).
828828
rewrite eq_mviE xpair_eqE -!val_eqE /= eq_sym andbb.
829-
rewrite ltn_eqF // subr0 mulr1 summxE big1.
829+
rewrite ltn_eqF // subr0 mulr1 summxE big1; last first.
830830
rewrite [w as X in X *m _]mx11_scalar => ->.
831831
by rewrite mul_scalar_mx scale0r submx0.
832832
move=> [i' j'] /= /andP[lt_j'i'].
@@ -841,7 +841,7 @@ Hint Resolve skew_direct_sum : core.
841841
Lemma rank_skew : \rank skew = (n * n.-1)./2.
842842
Proof.
843843
rewrite /skew (mxdirectP _) //= -bin2 -triangular_sum big_mkord.
844-
rewrite (eq_bigr (fun _ => 1%N)); last first.
844+
rewrite (eq_bigr (fun _ => 1%N)).
845845
move=> [i j] /= lt_ij; rewrite genmxE.
846846
apply/eqP; rewrite eqn_leq rank_leq_row /= lt0n mxrank_eq0.
847847
rewrite /skew_vec /= !mxvec_delta /= subr_eq0.
@@ -857,8 +857,8 @@ apply: eq_bigr => [] [[|i] Hi] _ /=; first by rewrite big1.
857857
rewrite (eq_bigl _ _ (fun _ => ltnS _ _)).
858858
have [n_eq0|n_gt0] := posnP n; first by move: Hi (Hi); rewrite {1}n_eq0.
859859
rewrite -[n]prednK // big_ord_narrow_leq /=.
860-
by rewrite -ltnS prednK // (leq_trans _ Hi).
861-
by rewrite sum_nat_const card_ord muln1.
860+
by rewrite sum_nat_const card_ord muln1.
861+
by rewrite -ltnS prednK // (leq_trans _ Hi).
862862
Qed.
863863

864864
Lemma skewP (M : 'rV_(n * n)) :
@@ -891,9 +891,9 @@ rewrite (bigID (fun ij => (ij.2 : 'I__) < (ij.1 : 'I__))%N) /=; congr (_ + _).
891891
apply: eq_bigr => [] [i j] /= lt_ij.
892892
by rewrite !linearZ linearB /= ?mxvecK trmx_delta scalerN scalerBr.
893893
rewrite (bigID (fun ij => (ij.1 : 'I__) == (ij.2 : 'I__))%N) /=.
894-
rewrite big1 ?add0r; last first.
894+
rewrite big1 ?add0r.
895895
by move=> [i j] /= /andP[_ /eqP ->]; rewrite linearZ /= trmx_delta subrr.
896-
rewrite (@reindex_inj _ _ _ _ (fun ij => (ij.2, ij.1))) /=; last first.
896+
rewrite (@reindex_inj _ _ _ _ (fun ij => (ij.2, ij.1))) /=.
897897
by move=> [? ?] [? ?] [] -> ->.
898898
apply: eq_big => [] [i j] /=; first by rewrite -leqNgt ltn_neqAle andbC.
899899
by rewrite !linearZ linearB /= ?mxvecK trmx_delta scalerN scalerBr.
@@ -1055,7 +1055,7 @@ have [] // := IHn _ (if d %| \rank Z then W else Z) _ _ [:: f' & sf'].
10551055
move=> v v_neq0 Hv; exists (v *m row_base V).
10561056
by rewrite mul_mx_rowfree_eq0 ?row_base_free.
10571057
move=> g Hg; have [|b] := Hv (restrict V g); first by rewrite -map_cons map_f.
1058-
rewrite eigenspace_restrict //; first by exists b.
1058+
rewrite eigenspace_restrict //; last by exists b.
10591059
by move: Hg; rewrite in_cons => /orP [/eqP -> //|/sf_stabV].
10601060
Qed.
10611061

theories/mxtens.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
(* Distributed under the terms of CeCILL-B. *)
33
From mathcomp Require Import ssreflect ssrfun ssrbool eqtype ssrnat seq div.
44
From mathcomp Require Import choice fintype bigop ssralg zmodp matrix.
5-
Set SsrOldRewriteGoalsOrder. (* change Set to Unset when porting the file, then remove the line when requiring MathComp >= 2.6 *)
5+
Unset SsrOldRewriteGoalsOrder. (* remove the line when requiring MathComp >= 2.6 *)
66

77
Set Implicit Arguments.
88
Unset Strict Implicit.

theories/ordered_qelim.v

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ From HB Require Import structures.
55
From mathcomp Require Import ssreflect ssrfun ssrbool eqtype ssrnat seq div.
66
From mathcomp Require Import choice fintype bigop finset order fingroup.
77
From mathcomp Require Import ssralg zmodp poly ssrnum.
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
Set Implicit Arguments.
1111
Unset Strict Implicit.
@@ -546,7 +546,7 @@ elim: t r0 m => /=; try do [
546546
by elim: r1 m => //= u r1 IHr1 m; rewrite IHr1].
547547
move=> t1 IH r m letm /IH {IH} /(_ letm) {letm}.
548548
case: to_rterm => t1' r1 /= [def_r ub_t1' ub_r1 <-].
549-
rewrite size_rcons addnS leqnn -{1}cats1 takel_cat ?def_r; last first.
549+
rewrite size_rcons addnS leqnn -{1}cats1 takel_cat ?def_r.
550550
by rewrite -def_r size_take geq_minr.
551551
elim: r1 m ub_r1 ub_t1' {def_r} => /= [|u r1 IHr1] m => [_|[->]].
552552
by rewrite addn0 eqxx.
@@ -760,13 +760,13 @@ elim: leq1 eq1 lt1 oc2 => [|t1 leq1 ih] eq1 lt1 [eq2 neq2 lt2 leq2] /=.
760760
rewrite map_cat /= mem_cat -!map_comp; set f := fun _ => _.
761761
rewrite -/f in ih; case/orP.
762762
case/mapP=> [[y1 y2]] yin ye.
763-
move: (ih eq1 lt1 (f (y1, y2))); rewrite mem_map //; last first.
763+
move: (ih eq1 lt1 (f (y1, y2))); rewrite mem_map //.
764764
by move=> [u1 u2] [v1 v2]; rewrite /f /=; case=> -> ->.
765765
move/(_ yin); move: ye; rewrite /f /=; case=> -> -> -> -> /= h.
766766
move=> u; rewrite in_cons (h u) !mem_cat in_cons.
767767
by rewrite orbC !orbA; set x := _ || (u \in lt1); rewrite orbAC.
768768
case/mapP=> [[y1 y2]] yin ye.
769-
move: (ih eq1 lt1 (f (y1, y2))); rewrite mem_map //; last first.
769+
move: (ih eq1 lt1 (f (y1, y2))); rewrite mem_map //.
770770
by move=> [u1 u2] [v1 v2]; rewrite /f /=; case=> -> ->.
771771
move/(_ yin); move: ye; rewrite /f /=; case=> -> -> -> -> /= h u.
772772
rewrite !mem_cat !in_cons orbA orbCA -!orbA; move: (h u); rewrite !mem_cat=> ->.
@@ -849,15 +849,15 @@ elim: neq1 lt1 oc2 => [|t1 neq1 ih] lt1 [eq2 neq2 lt2 leq2] /=.
849849
rewrite map_cat /= mem_cat -!map_comp; set f := fun _ => _.
850850
rewrite -/f in ih; case/orP.
851851
case/mapP=> y yin ye.
852-
move: (ih lt1 (f y)); rewrite mem_map //; last first.
852+
move: (ih lt1 (f y)); rewrite mem_map //.
853853
by move=> u v; rewrite /f /=; case.
854854
move/(_ yin); move: ye; rewrite /f /=; case=> -> -> -> -> /= h.
855855
move=> u. rewrite !mem_cat !in_cons orbAC orbC mem_cat -!orbA.
856856
case/orP; first by move->; rewrite !orbT.
857857
rewrite !orbA [_ || (_ \in eq1)]orbC; move: (h u); rewrite !mem_cat=> hu.
858858
by move/hu; do 2!(case/orP; last by move->; rewrite !orbT); move->.
859859
case/mapP=> y yin ye.
860-
move: (ih lt1 (f y)); rewrite mem_map //; last first.
860+
move: (ih lt1 (f y)); rewrite mem_map //.
861861
by move=> u v; rewrite /f /=; case.
862862
move/(_ yin); move: ye; rewrite /f /=; case=> -> -> -> -> /= h.
863863
move=> u; rewrite !mem_cat !in_cons orbAC orbC mem_cat -!orbA.

theories/polyorder.v

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
(* Distributed under the terms of CeCILL-B. *)
33
From mathcomp Require Import ssreflect ssrfun ssrbool eqtype ssrnat seq choice.
44
From mathcomp Require Import fintype ssralg zmodp poly polydiv ssrnum interval.
5-
Set SsrOldRewriteGoalsOrder. (* change Set to Unset when porting the file, then remove the line when requiring MathComp >= 2.6 *)
5+
Unset SsrOldRewriteGoalsOrder. (* remove the line when requiring MathComp >= 2.6 *)
66

77
Import GRing.Theory Num.Theory Pdiv.Idomain.
88

@@ -85,7 +85,7 @@ Lemma root_muN p x : p != 0 ->
8585
(('X - x%:P)^+(\mu_x p).+1 %| p) = false.
8686
Proof.
8787
move=> pn0; case: (mu_spec x pn0)=> q qn0 hp /=.
88-
rewrite {2}hp exprS dvdp_mul2r; last first.
88+
rewrite {2}hp exprS dvdp_mul2r.
8989
by rewrite expf_neq0 // polyXsubC_eq0.
9090
apply: negbTE; rewrite -eqp_div_XsubC; apply: contra qn0.
9191
by move/eqP->; rewrite rootM root_XsubC eqxx orbT.
@@ -124,7 +124,7 @@ Qed.
124124
Lemma cofactor_XsubC_mu x p n :
125125
~~ root p x -> \mu_x (p * ('X - x%:P) ^+ n) = n.
126126
Proof.
127-
move=> p0; apply/eqP; rewrite eq_sym -muP//; last first.
127+
move=> p0; apply/eqP; rewrite eq_sym -muP//.
128128
apply: contra p0; rewrite mulf_eq0 expf_eq0 polyXsubC_eq0 andbF orbF.
129129
by move/eqP->; rewrite root0.
130130
rewrite dvdp_mulIr /= exprS dvdp_mul2r -?root_factor_theorem //.
@@ -147,7 +147,7 @@ Qed.
147147

148148
Lemma mu_XsubC x : \mu_x ('X - x%:P) = 1%N.
149149
Proof.
150-
apply/eqP; rewrite eq_sym -muP; last by rewrite polyXsubC_eq0.
150+
apply/eqP; rewrite eq_sym -muP; first by rewrite polyXsubC_eq0.
151151
by rewrite expr1 dvdpp/= -{2}[_ - _]expr1 dvdp_Pexp2l // size_XsubC.
152152
Qed.
153153

@@ -181,11 +181,11 @@ have qn0: q != 0 by move: mupq; apply: contraL; move/eqP->; rewrite mu0 ltn0.
181181
case: (mu_spec x pn0)=> [qqp qqp0] hp.
182182
case: (mu_spec x qn0)=> [qqq qqq0] hq.
183183
rewrite hp hq -(subnK (ltnW mupq)).
184-
rewrite mu_mul ?mulf_eq0; last first.
184+
rewrite mu_mul ?mulf_eq0.
185185
rewrite expf_eq0 polyXsubC_eq0 andbF orbF.
186186
by apply: contra qqp0; move/eqP->; rewrite root0.
187187
rewrite mu_exp mu_XsubC mul1n [\mu_x qqp]muNroot // add0n.
188-
rewrite exprD mulrA -mulrDl mu_mul; last first.
188+
rewrite exprD mulrA -mulrDl mu_mul.
189189
by rewrite mulrDl -mulrA -exprD subnK 1?ltnW // -hp -hq.
190190
rewrite muNroot ?add0n ?mu_exp ?mu_XsubC ?mul1n //.
191191
rewrite rootE !hornerE ?horner_exp ?hornerXsubC subrr.
@@ -204,8 +204,8 @@ move=> hn.
204204
case p0: (p == 0); first by rewrite (eqP p0) div0p mu0 sub0n.
205205
case: (@mu_spec p x); rewrite ?p0 // => q hq hp.
206206
rewrite {1}hp -{1}(subnK hn) exprD mulrA.
207-
rewrite Pdiv.IdomainMonic.mulpK; last by apply: monic_exp; apply: monicXsubC.
208-
rewrite mu_mul ?mulf_eq0 ?expf_eq0 ?polyXsubC_eq0 ?andbF ?orbF; last first.
207+
rewrite Pdiv.IdomainMonic.mulpK; first by apply: monic_exp; apply: monicXsubC.
208+
rewrite mu_mul ?mulf_eq0 ?expf_eq0 ?polyXsubC_eq0 ?andbF ?orbF.
209209
by apply: contra hq; move/eqP->; rewrite root0.
210210
by rewrite mu_exp muNroot // add0n mu_XsubC mul1n.
211211
Qed.
@@ -237,7 +237,7 @@ Lemma derivn_poly0 : forall (p : {poly R}) n, (size p <= n)%N = (p^`(n) == 0).
237237
Proof.
238238
move=> p n; apply/idP/idP.
239239
move=> Hpn; apply/eqP; apply/polyP=>i; rewrite coef_derivn.
240-
rewrite nth_default; first by rewrite mul0rn coef0.
240+
rewrite nth_default; last by rewrite mul0rn coef0.
241241
by apply: leq_trans Hpn _; apply leq_addr.
242242
elim: n {-2}n p (leqnn n) => [m | n ihn [| m]] p.
243243
- by rewrite leqn0; move/eqP->; rewrite derivn0 leqn0 -size_poly_eq0.
@@ -265,6 +265,3 @@ by move=> x p p0 rpx; rewrite mu_deriv // subn1 addn1 prednK // mu_gt0.
265265
Qed.
266266

267267
End PolyrealIdomain.
268-
269-
270-

0 commit comments

Comments
 (0)