@@ -103,7 +103,7 @@ Context {T : Type} {n1 n2} (t1 : n1.-tuple T) (t2 : n2.-tuple T).
103103
104104Lemma tnth_cons (x : T) (l : seq T) (i : 'I_(size l)) :
105105 tnth (in_tuple (x :: l)) (lift ord0 i) = tnth (in_tuple l) i.
106- Proof . by rewrite /tnth/=; apply/set_nth_default . Qed .
106+ Proof . exact/set_nth_default/(valP i) . Qed .
107107
108108Lemma tnth_lshift i : tnth [tuple of t1 ++ t2] (lshift n2 i) = tnth t1 i.
109109Proof .
@@ -527,14 +527,6 @@ Lemma poly_XnsubC_over {R : ringType} n c (S : subringClosed R) :
527527 c \in S -> 'X^n - c%:P \is a polyOver S.
528528Proof . by move=> cS; rewrite rpredB ?rpredX ?polyOverX ?polyOverC. Qed .
529529
530- Lemma polyOver_mulr_2closed [R : ringType] [S : {pred R}]
531- [addS : addrPred S] (kS : keyed_pred addS) :
532- GRing.mulr_2closed kS -> GRing.mulr_2closed (polyOver kS).
533- Proof .
534- move=> SM u vz /polyOverP uS /polyOverP vS; apply/polyOverP => i.
535- by rewrite coefM rpred_sum // => j _; apply/SM.
536- Qed .
537-
538530Lemma lead_coef_prod {R : idomainType} (ps : seq {poly R}) :
539531 lead_coef (\prod_(p <- ps) p) = \prod_(p <- ps) lead_coef p.
540532Proof . by apply/big_morph/lead_coef1; apply: lead_coefM. Qed .
@@ -849,7 +841,7 @@ Proof.
849841move=> fgU fgx y /Fadjoin_poly_eq <-.
850842move: (Fadjoin_poly U x y) (Fadjoin_polyOver U x y) => p /polyOverP pU.
851843rewrite -(coefK p) horner_poly 2!rmorph_sum/=; apply/eq_bigr => i _.
852- by rewrite 2!rmorphM /= fgU// 2!rmorphX /= fgx.
844+ by rewrite 2!rmorphM /= fgU// 2!rmorphXn /= fgx.
853845Qed .
854846
855847Lemma ahom_eq_adjoin_seq [F0 : fieldType] [K : fieldExtType F0]
@@ -1351,12 +1343,12 @@ move: (galTrace_ne_0 K E) => [b [bE tb]].
13511343remember (\dim_K E) as n.
13521344have ordx: #[x]%g = n by rewrite orderE -DgalE -(galois_dim Egal).
13531345move: (expg_order x); rewrite ordx => xord.
1354- move: (Egal) => /galois_subW/ field_dimS/ltn_divRL/[dup]/(_ 0%N).
1346+ move: (Egal) => /andP[]/[dup] KE / field_dimS/ltn_divRL/[dup]/(_ 0%N) + + _ .
13551347rewrite mul0n adim_gt0 => dimgt0 /(_ 1%N); rewrite mul1n => dimgt1.
13561348case: n => [|n] in Heqn ordx xord *; first by move: dimgt0; rewrite -Heqn.
13571349case: n => [|n] in Heqn ordx xord *.
13581350 move: dimgt1; rewrite -Heqn ltnn => /esym/negbT; rewrite -leqNgt => dimEK.
1359- move: (eqEdim K E); rewrite dimEK (galois_subW Egal) => /=/eqP KE.
1351+ move: (eqEdim K E); rewrite dimEK KE => /=/eqP {} KE.
13601352 move: normEa1; rewrite /galTrace.
13611353 have ->: \sum_(x0 in ('Gal(E / K))%g) x0 a = \sum_(x0 in ('Gal(E / K))%g) a.
13621354 apply/eq_bigr => f fgal.
@@ -1616,22 +1608,22 @@ case: (Q a) => /=; first by rewrite IHr Monoid.mulmA.
16161608by rewrite IHr Monoid.mulmCA.
16171609Qed .
16181610
1619- Lemma bigA_distr_bigA2 (R : Type) (zero one : R) (times : Monoid.mul_law zero)
1620- (plus : Monoid.add_law zero times ) (I : finType) (F G : I -> R) :
1621- \big[times /one]_i plus (F i) (G i) =
1622- \big[plus /zero]_(J in {set I}) \big[times /one]_i (if i \in J then F i else G i).
1611+ Lemma bigA_distr_bigA2 (R : Type) (zero one : R) (mul : Monoid.mul_law zero)
1612+ (add : Monoid.add_law zero mul ) (I : finType) (F G : I -> R) :
1613+ \big[mul /one]_i add (F i) (G i) =
1614+ \big[add /zero]_(J in {set I}) \big[mul /one]_i (if i \in J then F i else G i).
16231615Proof .
1624- transitivity (\big[times/one]_i \big[plus/zero]_(b : bool) if b then F i else G i); first by apply: eq_bigr => i _; rewrite big_bool .
1616+ under eq_bigr => i _ do rewrite -(big_bool _ (fun b => if b then F i else G i)) .
16251617rewrite bigA_distr_bigA.
16261618set f := fun J : {set I} => val J.
1627- transitivity (\big[plus/zero]_(f0 in (imset f (mem setT))) \big[times/one]_i (if f0 i then F i else G i)).
1619+ transitivity (\big[add/zero]_(f0 in (imset f (mem setT)))
1620+ \big[mul/one]_i (if f0 i then F i else G i)).
16281621 suff <-: setT = imset f (mem setT) by apply: congr_big=>// i; rewrite in_setT.
16291622 apply/esym/eqP; rewrite -subTset; apply/subsetP => b _.
16301623 by apply/imsetP; exists (FinSet b).
1631- rewrite big_imset; last by case => g; case => h _ _; rewrite /f/= => ->.
1632- apply: congr_big=>//; case => g; first by rewrite in_setT.
1633- move=>_; apply: eq_bigr => i _; congr (if _ then _ else _).
1634- by rewrite SetDef.pred_of_setE.
1624+ rewrite big_imset; last by case=> g; case=> h _ _; rewrite /f => /= ->.
1625+ apply: congr_big => //; case=> g; first exact: in_setT.
1626+ by move=> _; apply: eq_bigr => i _; congr (if _ then _ else _); rewrite unlock.
16351627Qed .
16361628
16371629Lemma coefn_prod_XsubC {R : comRingType} (ps : seq R) (n : nat) :
@@ -1650,13 +1642,13 @@ rewrite coef_sum.
16501642transitivity (\sum_(I in {set 'I_(size ps)}) if #|I| == (size ps - n)%N then \prod_(i < size ps | i \in I) - (tnth (Tuple (eqxx (size ps))) i) else 0).
16511643 apply: eq_bigr => I _.
16521644 rewrite big_if/= big_const iter_mulr_1.
1653- rewrite -(rmorph_prod (@polyC_rmorphism R))/= coefCM coefXn.
1645+ rewrite -(rmorph_prod (@polyC R))/= coefCM coefXn.
16541646 rewrite -[#|I| == _](eqn_add2l n) addnBA// [(_ + (size ps))%N]addnC -addnBA// subnn addn0 [(n + _)%N]addnC.
16551647 rewrite -[in X in _ = if _ == X then _ else _](card_ord (size ps)) -(cardC I) eqn_add2l.
16561648 by case: (n == #|[predC I]|); rewrite ?mulr1 ?mulr0.
16571649rewrite -big_mkcond mulr_sumr/=; apply: eq_bigr => I /eqP cardI.
16581650rewrite prodrN cardI; congr GRing.mul; apply: eq_bigr => i _.
1659- by rewrite (tnth_nth (GRing.zero R)) -psE.
1651+ by rewrite (tnth_nth (@ GRing.zero R)) -psE.
16601652Qed .
16611653
16621654Lemma coefPn_prod_XsubC {R : comRingType} (ps : seq R) :
@@ -1678,7 +1670,7 @@ rewrite big_imset/=; last by move=> i j _ _; rewrite/f => ij; apply/set1P; rewri
16781670have psE: ps = tval (Tuple (eqxx (size ps))) by [].
16791671rewrite [in RHS]psE -(map_tnth_enum (Tuple _)) big_map enumT.
16801672apply: congr_big => // i; first by rewrite in_setT.
1681- by move=>_; rewrite big_set1 (tnth_nth (GRing.zero R)) -psE.
1673+ by move=>_; rewrite big_set1 (tnth_nth (@ GRing.zero R)) -psE.
16821674Qed .
16831675
16841676Lemma coefP0_prod_XsubC {R : comRingType} (ps : seq R) :
@@ -1695,7 +1687,7 @@ rewrite big_set1.
16951687have psE: ps = tval (Tuple (eqxx (size ps))) by [].
16961688rewrite [in RHS]psE -(map_tnth_enum (Tuple _)) big_map enumT.
16971689apply: congr_big => // i; first by rewrite in_setT.
1698- by move=>_; rewrite (tnth_nth (GRing.zero R)) -psE.
1690+ by move=>_; rewrite (tnth_nth (@ GRing.zero R)) -psE.
16991691Qed .
17001692
17011693
0 commit comments