@@ -951,12 +951,12 @@ case pr1 : (root p r1); case/monotonic_rootN => hrootsl; last 2 first.
951
951
by rewrite -[s]cat0s; apply: (cat_roots_on hr1)=> //; rewrite pr1.
952
952
- case: hrootsl=> r hr; exists (r::s); constructor=> //=.
953
953
by rewrite -cat1s; apply: (cat_roots_on hr1)=> //; rewrite pr1.
954
- rewrite path_min_sorted // => y; rewrite -hroot; case/andP => hy _ .
955
- rewrite (@ltr_trans _ r1) ?(itvP hy) //.
954
+ rewrite path_min_sorted //; first [move => y | apply/allP => y] .
955
+ rewrite -hroot; case/andP=> hy _; rewrite (@ltr_trans _ r1) ?(itvP hy) //.
956
956
by rewrite (itvP (roots_on_in hr (mem_head _ _))).
957
957
- exists (r1::s); constructor=> //=; last first.
958
- rewrite path_min_sorted=> // y; rewrite -hroot .
959
- by case/andP; move/itvP->.
958
+ rewrite path_min_sorted //; first [move=> y | apply/allP => y] .
959
+ by rewrite -hroot; case/andP; move/itvP->.
960
960
move=> x; rewrite in_cons; case exr1: (x == r1)=> /=.
961
961
by rewrite (eqP exr1) pr1 andbT.
962
962
rewrite -hroot; case px: root; rewrite ?(andbT, andbF) //.
@@ -966,7 +966,8 @@ case pr1 : (root p r1); case/monotonic_rootN => hrootsl; last 2 first.
966
966
- case: hrootsl => r0 hrootsl.
967
967
move/min_roots_on:hrootsl; case=> // hr0 har0 pr0 hr0r1.
968
968
exists [:: r0, r1 & s]; constructor=> //=; last first.
969
- rewrite (itvP hr0) /= path_min_sorted // => y.
969
+ rewrite (itvP hr0) /=.
970
+ rewrite path_min_sorted //; first [move=> y | apply/allP => y].
970
971
by rewrite -hroot; case/andP; move/itvP->.
971
972
move=> y; rewrite !in_cons (itv_splitU2 hr1) (itv_splitU2 hr0).
972
973
case eyr0: (y == r0); rewrite ?(orbT, orbF, orTb, orFb).
@@ -999,8 +1000,9 @@ Hint Resolve sorted_roots.
999
1000
1000
1001
Lemma path_roots p a b : path <%R a (roots p a b).
1001
1002
Proof .
1002
- case: rootsP=> //= p0 hp sp; rewrite path_min_sorted //.
1003
- by move=> y; rewrite -hp; case/andP; move/itvP->.
1003
+ case: rootsP=> //= p0 hp sp.
1004
+ rewrite path_min_sorted //; first [move=> y | apply/allP => y].
1005
+ by rewrite -hp; case/andP; move/itvP->.
1004
1006
Qed .
1005
1007
Hint Resolve path_roots.
1006
1008
@@ -1139,7 +1141,7 @@ case/and3P=> hx hax; rewrite (eqP hax) in rax sax.
1139
1141
case: rootsP p0=> // p0 rxb sxb _.
1140
1142
case/andP=> px0 hxb; rewrite (eqP hxb) in rxb sxb.
1141
1143
rewrite [_ :: _](@roots_uniq p a b) //; last first.
1142
- rewrite /= path_min_sorted // => y.
1144
+ rewrite /= path_min_sorted //; first [move => y | apply/allP => y] .
1143
1145
by rewrite -(eqP hxb); move/roots_in; move/itvP->.
1144
1146
move=> y; rewrite (itv_splitU2 hx) !andb_orl in_cons.
1145
1147
case hy: (y == x); first by rewrite (eqP hy) px0 orbT.
@@ -1171,9 +1173,9 @@ case/and3P=> hx hax; rewrite (eqP hax) in rax sax.
1171
1173
case: rootsP p0=> // p0 rxb sxb _.
1172
1174
case/andP=> px0 hxb; rewrite (eqP hxb) in rxb sxb.
1173
1175
rewrite [rcons _ _](@roots_uniq p a b) //; last first.
1174
- rewrite -[rcons _ _]revK rev_sorted rev_rcons /= path_min_sorted .
1175
- by rewrite -rev_sorted revK.
1176
- move=> y; rewrite mem_rev; rewrite -(eqP hxb).
1176
+ rewrite -[rcons _ _]revK rev_sorted rev_rcons /=.
1177
+ rewrite path_min_sorted; [ by rewrite -rev_sorted revK|] .
1178
+ first [ move=> y | apply/allP => y] ; rewrite mem_rev; rewrite -(eqP hxb).
1177
1179
by move/roots_in; move/itvP->.
1178
1180
move=> y; rewrite (itv_splitU2 hx) mem_rcons in_cons !andb_orl.
1179
1181
case hy: (y == x); first by rewrite (eqP hy) px0 orbT.
@@ -1388,15 +1390,15 @@ Qed.
1388
1390
Lemma gdcop_eq0 p q : (gdcop p q == 0) = (q == 0) && (p != 0).
1389
1391
Proof .
1390
1392
case: (eqVneq q 0) => [-> | q0].
1391
- rewrite gdcop0 /= eqxx /= .
1392
- by case: (eqVneq p 0) => [-> | pn0]; rewrite ?(negPf pn0) eqxx ?oner_eq0.
1393
+ rewrite gdcop0 /=.
1394
+ by have [|] := (boolP (p == 0)) => [p0 | pn0] /= ; rewrite ?eqxx ?oner_eq0.
1393
1395
rewrite /gdcop; move: {-1}(size q) (leqnn (size q))=> k hk.
1394
- case: (eqVneq p 0) => [-> | p0].
1395
- rewrite eqxx andbF; apply: negPf.
1396
+ case (eqVneq p 0) => [-> | p0].
1397
+ rewrite ? eqxx andbF; apply: negPf.
1396
1398
elim: k q q0 {hk} => [|k ihk] q q0 /=; first by rewrite eqxx oner_eq0.
1397
1399
case: ifP => _ //.
1398
1400
by apply: ihk; rewrite gcdp0 divpp ?q0 // polyC_eq0; apply/lc_expn_scalp_neq0.
1399
- rewrite p0 (negPf q0) /= ; apply: negPf.
1401
+ rewrite ?(negbTE q0) andFb ; apply: negPf.
1400
1402
elim: k q q0 hk => [|k ihk] /= q q0 hk.
1401
1403
by move: hk q0; rewrite leqn0 size_poly_eq0; move->.
1402
1404
case: ifP=> cpq; first by rewrite (negPf q0).
0 commit comments