Skip to content

Commit b966de6

Browse files
committed
rebase
1 parent 65e1296 commit b966de6

5 files changed

Lines changed: 32 additions & 38 deletions

File tree

.nix/config.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
## select an entry to build in the following `bundles` set
3333
## defaults to "default"
34-
default-bundle = "coq8.20+mcmathcomp-2.3.0";
34+
default-bundle = "coq-9.0";
3535

3636
## write one `bundles.name` attribute set per
3737
## alternative configuration

theories/abel.v

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -319,10 +319,10 @@ Section Abel.
319319

320320
Lemma radical_aimg (F0 : fieldType) (L L' : splittingFieldType F0)
321321
(iota : 'AHom(L, L')) (U : {vspace L})
322-
(x : Falgebra.vect_ringType L) (n : nat) :
322+
(x : L) (n : nat) :
323323
radical (iota @: U) (iota x) n = radical U x n.
324324
Proof.
325-
rewrite /radical (fmorph_char (ahom_rmorphism iota))/=-rmorphX/= -rmorphB/=.
325+
rewrite /radical (fmorph_char iota)/=-rmorphXn/= -rmorphB/=.
326326
have inE: forall y, iota y \in (iota @: U)%VS = (y \in U).
327327
move=> y; apply/idP/idP.
328328
by move=> /memv_imgP [u uU] /fmorph_inj ->.
@@ -409,7 +409,7 @@ have [n0 | n_ne0] := boolP (n%:R == 0 :> L).
409409
have apF : a ^+ p - a \in F by rewrite rpredB// rpredX.
410410
apply/fixedFieldP => // h /[!GE]/cycleP[+ ->].
411411
elim=> [|m IHm]; first by rewrite expg0 gal_id.
412-
rewrite expgSr galM// IHm rmorphB/= rmorphX/= ga -Frobenius_autE.
412+
rewrite expgSr galM// IHm rmorphB/= rmorphXn/= ga -Frobenius_autE.
413413
by rewrite rmorphD/= rmorph1 !Frobenius_autE opprD addrACA subrr add0r.
414414
exists n; rewrite part_pnat_id -?natf_neq0// in wroot.
415415
have [|x [xF xN0]] := Hilbert's_theorem_90 ggen (subvP EF _ wE) _.
@@ -428,7 +428,7 @@ rewrite -(galois_fixedField galEF).
428428
have xnF : x ^+ n \in F by rewrite rpredX.
429429
apply/fixedFieldP => //= h /[!GE]/cycleP[+ ->].
430430
elim=> [|m IHm]; first by rewrite expg0 gal_id.
431-
rewrite expgSr galM// IHm rmorphX/= gx exprMn exprVn.
431+
rewrite expgSr galM// IHm rmorphXn/= gx exprMn exprVn.
432432
by rewrite (prim_expr_order wroot) invr1 mul1r.
433433
Qed.
434434

@@ -768,14 +768,14 @@ suff: solvable_ext 1 <<1 & rs>>.
768768
rewrite -(solvable_ext_aimg iota).
769769
have nE: ((\dim <<1 & rs>>%AS)`_[char L']^' = n`_[char F]^')%N.
770770
apply/eq_partn/eq_negn => x.
771-
by rewrite -(char_lalg L); apply/fmorph_char/ahom_rmorphism.
771+
by rewrite -(char_lalg L); apply/fmorph_char/iota.
772772
apply/(@AbelGalois _ _ w) => //.
773773
- by rewrite limgS// sub1v.
774774
- rewrite -aimg_normalClosure //= aimg1 dimv1 divn1 dim_aimg/=.
775775
by rewrite normalClosure_id ?sub1v// nE.
776776
have /= := solrs L' (map iota rs) _ w.
777777
rewrite -(aimg1 iota) -!aimg_adjoin_seq dim_aimg.
778-
apply => //; have := pE; rewrite -(eqp_map [rmorphism of iota]).
778+
apply => //; have := pE; rewrite -(eqp_map iota).
779779
by rewrite -map_poly_comp/= (eq_map_poly (rmorph_alg _)) map_prod_XsubC.
780780
by rewrite nE.
781781
Qed.
@@ -802,7 +802,7 @@ apply: classic_bind (@classic_fieldExtFor _ _ (p : {poly F^o}) p_neq0).
802802
exists S, rs; split => //=; first by rewrite -(eq_map_poly iotaF).
803803
by apply: (sol_p S rs); rewrite -(eq_map_poly iotaF).
804804
move=> L rs prs; apply: sol_p => -[M [rs' [prs']]].
805-
pose K := [fieldExtType F of subvs_of <<1 & rs>>%VS].
805+
pose K : fieldExtType _ := subvs_of <<1 & rs>>%VS.
806806
pose rsK := map (vsproj <<1 & rs>>%VS) rs.
807807
have pKrs : p ^^ in_alg K %= \prod_(x <- rsK) ('X - x%:P).
808808
rewrite -(eqp_map vsval)/= map_prod_XsubC/= -map_poly_comp/=.
@@ -859,7 +859,7 @@ have splitL : SplittingField.axiom L.
859859
exists rs => //; suff <- : limg f = 1%VS by [].
860860
apply/eqP; rewrite eqEsubv sub1v andbT; apply/subvP => v.
861861
by move=> /memv_imgP[u _ ->]; rewrite fF/= rpredZ// rpred1.
862-
pose S := SplittingFieldType F L splitL.
862+
pose S : splittingFieldType _ := HB.pack L (FieldExt_isSplittingField.Build _ L splitL).
863863
pose d := ((\dim <<1 & (rs : seq S)>>)`_[char F]^')%N.
864864
have /classic_cycloSplitting-/(_ S) : d%:R != 0 :> F by apply: natf_partn_ne0.
865865
apply/classic_bind => -[C [w [g wg w_prim]]]; apply/classicW.
@@ -1755,7 +1755,7 @@ elim: f => //= [x|c|u f1 IHf1|b f1 IHf1 f2 IHf2] in k {r fr} als1 als1E *.
17551755
+ rewrite (Fadjoin_idP _); first exact: rext_refl.
17561756
by have /fmorph_inj-> := IHl; rewrite rpredV.
17571757
+ rewrite (Fadjoin_idP _); first exact: rext_refl.
1758-
by have := IHl; rewrite -rmorphX => /fmorph_inj->; rewrite rpredX.
1758+
by have := IHl; rewrite -rmorphXn => /fmorph_inj->; rewrite rpredX.
17591759
apply/(@rext_r _ _ _ n.+1)/radicalP; left; split.
17601760
by apply/negP; rewrite pnatr_eq0.
17611761
have /(congr1 ((@GRing.exp _)^~ n.+1)) := IHl.

theories/xmathcomp/artin_scheier.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ have lcLHS : lead_coef ('X^p - 'X - (x ^+ p - x)%:P) = 1.
4949
rewrite [LHS](@all_roots_prod_XsubC _ _ rs).
5050
- by rewrite lcLHS scale1r big_map big_enum.
5151
- by rewrite size_tuple ?size_addl ?size_opp// size_polyXn.
52-
- apply/allP => y /mapP[/= i _ ->]; rewrite rootE !hornerE hornerXn.
52+
- apply/allP => y /mapP[/= i _ ->]; rewrite rootE !hornerE ?hornerXn.
5353
rewrite -!Frobenius_autE rmorphD rmorph_nat.
5454
by rewrite opprD addrACA subrr addr0 subrr.
5555
- by rewrite uniq_rootsE/= map_inj_uniq ?enum_uniq// => i j /addrI/ZprI; apply.
@@ -74,7 +74,7 @@ Lemma ArtinSchreier_galois : galois E <<E; x>>.
7474
Proof.
7575
apply/splitting_galoisField; exists ('X^p - 'X - (x ^+ p - x)%:P); split.
7676
- exact ArtinSchreier_polyOver.
77-
- rewrite /separable_poly derivB derivC subr0 derivB derivXn derivX -scaler_nat.
77+
- rewrite unlock derivB derivC subr0 derivB derivXn derivX -scaler_nat.
7878
rewrite charf0// scale0r add0r -(@coprimepZr _ (-1)) ?oppr_eq0 ?oner_eq0//.
7979
by rewrite scaleNr scale1r opprK coprimep1.
8080
- by apply: ArtinSchreier_splitting.

theories/xmathcomp/map_gal.v

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ Import AEnd_FinGroup.
2020
Variables (F0 : fieldType) (L : splittingFieldType F0).
2121
Implicit Types (K E F : {subfield L}).
2222

23+
Lemma galois_subW E F : galois E F -> (E <= F)%VS. Proof. by case/andP. Qed.
24+
2325
Lemma galois_normalW E F : galois E F -> (normalField E F)%VS.
2426
Proof. by case/and3P. Qed.
2527

theories/xmathcomp/various.v

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ Context {T : Type} {n1 n2} (t1 : n1.-tuple T) (t2 : n2.-tuple T).
103103

104104
Lemma 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

108108
Lemma tnth_lshift i : tnth [tuple of t1 ++ t2] (lshift n2 i) = tnth t1 i.
109109
Proof.
@@ -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.
528528
Proof. 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-
538530
Lemma lead_coef_prod {R : idomainType} (ps : seq {poly R}) :
539531
lead_coef (\prod_(p <- ps) p) = \prod_(p <- ps) lead_coef p.
540532
Proof. by apply/big_morph/lead_coef1; apply: lead_coefM. Qed.
@@ -849,7 +841,7 @@ Proof.
849841
move=> fgU fgx y /Fadjoin_poly_eq <-.
850842
move: (Fadjoin_poly U x y) (Fadjoin_polyOver U x y) => p /polyOverP pU.
851843
rewrite -(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.
853845
Qed.
854846

855847
Lemma ahom_eq_adjoin_seq [F0 : fieldType] [K : fieldExtType F0]
@@ -1351,12 +1343,12 @@ move: (galTrace_ne_0 K E) => [b [bE tb]].
13511343
remember (\dim_K E) as n.
13521344
have ordx: #[x]%g = n by rewrite orderE -DgalE -(galois_dim Egal).
13531345
move: (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) + + _.
13551347
rewrite mul0n adim_gt0 => dimgt0 /(_ 1%N); rewrite mul1n => dimgt1.
13561348
case: n => [|n] in Heqn ordx xord *; first by move: dimgt0; rewrite -Heqn.
13571349
case: 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.
16161608
by rewrite IHr Monoid.mulmCA.
16171609
Qed.
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).
16231615
Proof.
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)).
16251617
rewrite bigA_distr_bigA.
16261618
set 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.
16351627
Qed.
16361628

16371629
Lemma coefn_prod_XsubC {R : comRingType} (ps : seq R) (n : nat) :
@@ -1650,13 +1642,13 @@ rewrite coef_sum.
16501642
transitivity (\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.
16571649
rewrite -big_mkcond mulr_sumr/=; apply: eq_bigr => I /eqP cardI.
16581650
rewrite 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.
16601652
Qed.
16611653

16621654
Lemma 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
16781670
have psE: ps = tval (Tuple (eqxx (size ps))) by [].
16791671
rewrite [in RHS]psE -(map_tnth_enum (Tuple _)) big_map enumT.
16801672
apply: 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.
16821674
Qed.
16831675

16841676
Lemma coefP0_prod_XsubC {R : comRingType} (ps : seq R) :
@@ -1695,7 +1687,7 @@ rewrite big_set1.
16951687
have psE: ps = tval (Tuple (eqxx (size ps))) by [].
16961688
rewrite [in RHS]psE -(map_tnth_enum (Tuple _)) big_map enumT.
16971689
apply: 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.
16991691
Qed.
17001692

17011693

0 commit comments

Comments
 (0)