diff options
| author | Cyril Cohen | 2017-11-23 16:33:36 +0100 |
|---|---|---|
| committer | Cyril Cohen | 2018-02-06 13:54:37 +0100 |
| commit | fafd4dac5315e1d4e071b0044a50a16360b31964 (patch) | |
| tree | 5b66c3d67e2b146e3a8013496379b96dd60dc75a /mathcomp | |
| parent | 835467324db450c8fb8971e477cc4d82fa3e861b (diff) | |
running semi-automated linting on the whole library
Diffstat (limited to 'mathcomp')
122 files changed, 903 insertions, 898 deletions
diff --git a/mathcomp/algebra/finalg.v b/mathcomp/algebra/finalg.v index 0cf29b2..3a50934 100644 --- a/mathcomp/algebra/finalg.v +++ b/mathcomp/algebra/finalg.v @@ -883,7 +883,7 @@ Section ClassDef. Variable R : ringType. Record class_of M := - Class { base : GRing.Lmodule.class_of R M ; mixin : mixin_of M base }. + Class { base : GRing.Lmodule.class_of R M; mixin : mixin_of M base }. Definition base2 R (c : class_of R) := Zmodule.Class (mixin c). Local Coercion base : class_of >-> GRing.Lmodule.class_of. Local Coercion base2 : class_of >-> Zmodule.class_of. @@ -1144,7 +1144,7 @@ Section ClassDef. Variable R : unitRingType. Record class_of M := - Class { base : GRing.UnitAlgebra.class_of R M ; mixin : mixin_of M base }. + Class { base : GRing.UnitAlgebra.class_of R M; mixin : mixin_of M base }. Definition base2 M (c : class_of M) := Algebra.Class (mixin c). Definition base3 M (c : class_of M) := @UnitRing.Class _ (base c) (mixin c). @@ -1155,27 +1155,27 @@ Local Coercion base3 : class_of >-> UnitRing.class_of. Structure type (phR : phant R) := Pack {sort; _ : class_of sort; _ : Type}. Local Coercion sort : type >-> Sortclass. Variables (phR : phant R) (cT : type phR). -Definition pack := gen_pack (Pack phR) Class (@GRing.UnitAlgebra.class R phR). +Definition pack := gen_pack (Pack phR) Class (@GRing.UnitAlgebra.class R phR). Definition class := let: Pack _ c _ as cT' := cT return class_of cT' in c. Let xT := let: Pack T _ _ := cT in T. Notation xclass := (class : class_of xT). -Definition eqType := @Equality.Pack cT xclass xT. -Definition choiceType := @Choice.Pack cT xclass xT. -Definition countType := @Countable.Pack cT (fin_ xclass) xT. -Definition finType := @Finite.Pack cT (fin_ xclass) xT. -Definition zmodType := @GRing.Zmodule.Pack cT xclass xT. -Definition finZmodType := @Zmodule.Pack cT xclass xT. -Definition ringType := @GRing.Ring.Pack cT xclass xT. -Definition finRingType := @Ring.Pack cT xclass xT. +Definition eqType := @Equality.Pack cT xclass xT. +Definition choiceType := @Choice.Pack cT xclass xT. +Definition countType := @Countable.Pack cT (fin_ xclass) xT. +Definition finType := @Finite.Pack cT (fin_ xclass) xT. +Definition zmodType := @GRing.Zmodule.Pack cT xclass xT. +Definition finZmodType := @Zmodule.Pack cT xclass xT. +Definition ringType := @GRing.Ring.Pack cT xclass xT. +Definition finRingType := @Ring.Pack cT xclass xT. Definition unitRingType := @GRing.UnitRing.Pack cT xclass xT. -Definition finUnitRingType := @UnitRing.Pack cT xclass xT. -Definition lmodType := @GRing.Lmodule.Pack R phR cT xclass xT. -Definition finLmodType := @Lmodule.Pack R phR cT xclass xT. -Definition lalgType := @GRing.Lalgebra.Pack R phR cT xclass xT. -Definition finLalgType := @Lalgebra.Pack R phR cT xclass xT. -Definition algType := @GRing.Algebra.Pack R phR cT xclass xT. -Definition finAlgType := @Algebra.Pack R phR cT xclass xT. +Definition finUnitRingType := @UnitRing.Pack cT xclass xT. +Definition lmodType := @GRing.Lmodule.Pack R phR cT xclass xT. +Definition finLmodType := @Lmodule.Pack R phR cT xclass xT. +Definition lalgType := @GRing.Lalgebra.Pack R phR cT xclass xT. +Definition finLalgType := @Lalgebra.Pack R phR cT xclass xT. +Definition algType := @GRing.Algebra.Pack R phR cT xclass xT. +Definition finAlgType := @Algebra.Pack R phR cT xclass xT. Definition unitAlgType := @GRing.UnitAlgebra.Pack R phR cT xclass xT. Definition join_finType := @Finite.Pack unitAlgType (fin_ xclass) xT. @@ -1200,7 +1200,7 @@ Definition finGroupType := fin_group baseFinGroupType zmodType. Definition join_baseFinGroupType := base_group unitAlgType zmodType finType. Definition join_finGroupType := fin_group join_baseFinGroupType zmodType. -End ClassDef. +End ClassDef. Module Exports. Coercion base : class_of >-> GRing.UnitAlgebra.class_of. @@ -1290,7 +1290,7 @@ End FinRing. Import FinRing. Export Zmodule.Exports Ring.Exports ComRing.Exports. Export UnitRing.Exports UnitsGroupExports ComUnitRing.Exports. -Export IntegralDomain.Exports Field.Exports DecField.Exports. +Export IntegralDomain.Exports Field.Exports DecField.Exports. Export Lmodule.Exports Lalgebra.Exports Algebra.Exports UnitAlgebra.Exports. Notation "{ 'unit' R }" := (unit_of (Phant R)) diff --git a/mathcomp/algebra/intdiv.v b/mathcomp/algebra/intdiv.v index 7c99443..a85b3ec 100644 --- a/mathcomp/algebra/intdiv.v +++ b/mathcomp/algebra/intdiv.v @@ -223,7 +223,7 @@ Proof. by move=> d_gt0; rewrite !lerNgt ltz_divLR. Qed. Lemma divz_ge0 m d : d > 0 -> ((m %/ d)%Z >= 0) = (m >= 0). Proof. by case: d m => // d [] n d_gt0; rewrite (divz_nat, divNz_nat). Qed. -Lemma divzMA_ge0 m n p : n >= 0 -> (m %/ (n * p) = (m %/ n)%Z %/ p)%Z. +Lemma divzMA_ge0 m n p : n >= 0 -> (m %/ (n * p) = (m %/ n)%Z %/ p)%Z. Proof. case: n => // [[|n]] _; first by rewrite mul0r !divz0 div0z. wlog p_gt0: p / p > 0; last case: p => // p in p_gt0 *. @@ -457,7 +457,7 @@ Lemma Qint_dvdz (m d : int) : (d %| m)%Z -> ((m%:~R / d%:~R : rat) \is a Qint). Proof. case/dvdzP=> z ->; rewrite rmorphM /=; case: (altP (d =P 0)) => [->|dn0]. by rewrite mulr0 mul0r. -by rewrite mulfK ?intr_eq0 // rpred_int. +by rewrite mulfK ?intr_eq0 // rpred_int. Qed. Lemma Qnat_dvd (m d : nat) : (d %| m)%N -> ((m%:R / d%:R : rat) \is a Qnat). @@ -934,7 +934,7 @@ wlog [j a'Mij]: m n M i Da le_mn / {j | ~~ (a %| M i j)%Z}; last first. have uU: U \in unitmx. rewrite unitmxE det_ublock det1 (expand_det_col _ 0) big_ord_recl big_ord1. do 2!rewrite /cofactor [row' _ _]mx11_scalar !mxE det_scalar1 /=. - rewrite mulr1 mul1r mulN1r opprK -[_ + _](mulzK _ nz_b) mulrDl. + rewrite mulr1 mul1r mulN1r opprK -[_ + _](mulzK _ nz_b) mulrDl. by rewrite -!mulrA !divzK ?dvdz_gcdl ?dvdz_gcdr // Db divzz nz_b unitr1. have{Db} Db: M1 i 0 = b. rewrite /M1 -(lshift0 n 1) [U]block_mxEh mul_mx_row row_mxEl. @@ -952,9 +952,9 @@ move=> {A leA IHa} IHa; wlog Di: i M Da / i = 0; last rewrite {i}Di in Da. by rewrite mulmxA -perm_mxM tperm2 perm_mx1 mul1mx. without loss /forallP a_dvM0: / [forall j, a %| M 0 j]%Z. have [_|] := altP forallP; first exact; rewrite negb_forall => /existsP/sigW. - by move/IHa=> IH _; apply: IH. + by move/IHa=> IH _; apply: IH. without loss{Da a_dvM0} Da: M / forall j, M 0 j = a. - pose Uur := col' 0 (\row_j (1 - (M 0 j %/ a)%Z)). + pose Uur := col' 0 (\row_j (1 - (M 0 j %/ a)%Z)). pose U : 'M_(1 + n) := block_mx 1 Uur 0 1%:M; pose M1 := M *m U. have uU: U \in unitmx by rewrite unitmxE det_ublock !det1 mulr1. case/(_ (M *m U)) => [j | L uL [R uR [d dvD dM]]]. diff --git a/mathcomp/algebra/interval.v b/mathcomp/algebra/interval.v index 56dec94..e269752 100644 --- a/mathcomp/algebra/interval.v +++ b/mathcomp/algebra/interval.v @@ -230,7 +230,7 @@ Definition bound_in_itv := (boundl_in_itv, boundr_in_itv). Lemma itvP : forall (x : R) (i : interval R), (x \in i) -> itv_rewrite i x. Proof. -move=> x [[[] a|] [[] b|]]; move/itv_dec=> //= [hl hu];do ?[split=> //; +move=> x [[[] a|] [[] b|]]; move/itv_dec=> //= [hl hu]; do ?[split=> //; do ?[by rewrite ltrW | by rewrite ltrWN | by rewrite ltrNW | by rewrite (ltr_geF, ler_gtF)]]; rewrite ?(bound_in_itv) /le_boundl /le_boundr //=; do ? @@ -254,7 +254,7 @@ Lemma subitvP : forall (i2 i1 : interval R), (subitv i1 i2) -> {subset i1 <= i2}. Proof. by move=> [[[] a2|] [[] b2|]] [[[] a1|] [[] b1|]]; - rewrite /subitv //; case/andP=> /= ha hb; move=> x hx; rewrite ?inE; + rewrite /subitv //; case/andP=> /= ha hb x hx; rewrite ?inE; rewrite ?(ler_trans ha) ?(ler_lt_trans ha) ?(ltr_le_trans ha) //; rewrite ?(ler_trans _ hb) ?(ltr_le_trans _ hb) ?(ler_lt_trans _ hb) //; rewrite ?(itvP hx) //. diff --git a/mathcomp/algebra/matrix.v b/mathcomp/algebra/matrix.v index dfa8474..aecbce9 100644 --- a/mathcomp/algebra/matrix.v +++ b/mathcomp/algebra/matrix.v @@ -864,7 +864,7 @@ Section VecMatrix. Variables m n : nat. -Lemma mxvec_cast : #|{:'I_m * 'I_n}| = (m * n)%N. +Lemma mxvec_cast : #|{:'I_m * 'I_n}| = (m * n)%N. Proof. by rewrite card_prod !card_ord. Qed. Definition mxvec_index (i : 'I_m) (j : 'I_n) := @@ -973,7 +973,7 @@ Proof. by apply/matrixP=> i j; rewrite !(castmxE, mxE). Qed. Lemma map_conform_mx m' n' (B : 'M_(m', n')) : (conform_mx B A)^f = conform_mx B^f A^f. Proof. -move: B; have [[<- <-] B|] := eqVneq (m, n) (m', n'). +move: B; have [[<- <-] B|] := eqVneq (m, n) (m', n'). by rewrite !conform_mx_id. by rewrite negb_and => neq_mn B; rewrite !nonconform_mx. Qed. @@ -1197,7 +1197,7 @@ Lemma nz_row_eq0 m n (A : 'M_(m, n)) : (nz_row A == 0) = (A == 0). Proof. rewrite /nz_row; symmetry; case: pickP => [i /= nzAi | Ai0]. by rewrite (negbTE nzAi); apply: contraTF nzAi => /eqP->; rewrite row0 eqxx. -by rewrite eqxx; apply/eqP/row_matrixP=> i; move/eqP: (Ai0 i) ->; rewrite row0. +by rewrite eqxx; apply/eqP/row_matrixP=> i; move/eqP: (Ai0 i) ->; rewrite row0. Qed. End MatrixZmodule. @@ -1755,7 +1755,7 @@ Lemma mul_pid_mx m n p q r : (pid_mx q : 'M_(m, n)) *m (pid_mx r : 'M_(n, p)) = pid_mx (minn n (minn q r)). Proof. apply/matrixP=> i k; rewrite !mxE !leq_min. -have [le_n_i | lt_i_n] := leqP n i. +have [le_n_i | lt_i_n] := leqP n i. rewrite andbF big1 // => j _. by rewrite -pid_mx_minh !mxE leq_min ltnNge le_n_i andbF mul0r. rewrite (bigD1 (Ordinal lt_i_n)) //= big1 ?addr0 => [|j]. @@ -1903,7 +1903,7 @@ move=> a A B; apply/row_matrixP; case/mxvec_indexP=> i j. rewrite linearP /= !rowE !mul_rV_lin /= vec_mx_delta -linearP mulmxDr. congr (mxvec (_ + _)); apply/row_matrixP=> k. rewrite linearZ /= !row_mul rowE mul_delta_mx_cond. -by case: (k == i); [rewrite -!rowE linearZ | rewrite !mul0mx raddf0]. +by case: (k == i); [rewrite -!rowE linearZ | rewrite !mul0mx raddf0]. Qed. Canonical lin_mulmxr_additive := Additive lin_mulmxr_is_linear. Canonical lin_mulmxr_linear := Linear lin_mulmxr_is_linear. @@ -2810,7 +2810,7 @@ Proof. exact: map_unitmx. Qed. Lemma map_invmx n (A : 'M_n) : (invmx A)^f = invmx A^f. Proof. rewrite /invmx map_unitmx (fun_if ((map_mx f) n n)). -by rewrite map_mxZ map_mx_adj det_map_mx fmorphV. +by rewrite map_mxZ map_mx_adj det_map_mx fmorphV. Qed. Lemma map_mx_inv n' (A : 'M_n'.+1) : A^-1^f = A^f^-1. diff --git a/mathcomp/algebra/mxalgebra.v b/mathcomp/algebra/mxalgebra.v index 1b6200e..463f07b 100644 --- a/mathcomp/algebra/mxalgebra.v +++ b/mathcomp/algebra/mxalgebra.v @@ -658,7 +658,7 @@ Qed. Lemma submx_full m1 m2 n (A : 'M_(m1, n)) (B : 'M_(m2, n)) : row_full B -> (A <= B)%MS. Proof. -by rewrite submxE /cokermx =>/eqnP->; rewrite /copid_mx pid_mx_1 subrr !mulmx0. +by rewrite submxE /cokermx => /eqnP->; rewrite /copid_mx pid_mx_1 subrr !mulmx0. Qed. Lemma row_fullP m n (A : 'M_(m, n)) : @@ -700,7 +700,7 @@ Lemma row_full_unit n (A : 'M_n) : row_full A = (A \in unitmx). Proof. exact: row_free_unit. Qed. Lemma mxrank_unit n (A : 'M_n) : A \in unitmx -> \rank A = n. -Proof. by rewrite -row_full_unit =>/eqnP. Qed. +Proof. by rewrite -row_full_unit => /eqnP. Qed. Lemma mxrank1 n : \rank (1%:M : 'M_n) = n. Proof. by apply: mxrank_unit; apply: unitmx1. Qed. @@ -1114,7 +1114,7 @@ Lemma sub_sumsmxP P m n (A : 'M_(m, n)) (B_ : I -> 'M_n) : (A <= \sum_(i | P i) B_ i)%MS. Proof. apply: (iffP idP) => [| [u_ ->]]; last first. - by apply: summx_sub_sums => i _; apply: submxMl. + by apply: summx_sub_sums => i _; apply: submxMl. elim: {P}_.+1 {-2}P A (ltnSn #|P|) => // b IHb P A. case: (pickP P) => [i Pi | P0 _]; last first. rewrite big_pred0 //; move/submx0null->. @@ -1202,7 +1202,7 @@ Lemma mxrank_Frobenius m n p q (A : 'M_(m, n)) B (C : 'M_(p, q)) : Proof. rewrite -{2}(mulmx_base (A *m B)) -mulmxA (eqmxMfull _ (col_base_full _)). set C2 := row_base _ *m C. -rewrite -{1}(subnK (rank_leq_row C2)) -(mxrank_ker C2) addnAC leq_add2r. +rewrite -{1}(subnK (rank_leq_row C2)) -(mxrank_ker C2) addnAC leq_add2r. rewrite addnC -{1}(mulmx_base B) -mulmxA eqmxMfull //. set C1 := _ *m C; rewrite -{2}(subnKC (rank_leq_row C1)) leq_add2l -mxrank_ker. rewrite -(mxrankMfree _ (row_base_free (A *m B))). @@ -1466,7 +1466,7 @@ apply/eqP; set K := kermx B; set C := (A :&: K)%MS. rewrite -(eqmxMr B (eq_row_base A)); set K' := _ *m B. rewrite -{2}(subnKC (rank_leq_row K')) -mxrank_ker eqn_add2l. rewrite -(mxrankMfree _ (row_base_free A)) mxrank_leqif_sup. - rewrite sub_capmx -(eq_row_base A) submxMl. + rewrite sub_capmx -(eq_row_base A) submxMl. by apply/sub_kermxP; rewrite -mulmxA mulmx_ker. have /submxP[C' defC]: (C <= row_base A)%MS by rewrite eq_row_base capmxSl. rewrite defC submxMr //; apply/sub_kermxP. @@ -1573,7 +1573,7 @@ Proof. move=> dxUV sWU; apply/eqP; rewrite -subr_eq0 -submx0 -dxUV. rewrite sub_capmx addmx_sub ?eqmx_opp ?proj_mx_sub //= -eqmx_opp opprB. by rewrite proj_mx_compl_sub // (submx_trans sWU) ?addsmxSl. -Qed. +Qed. Lemma proj_mx_0 m n U V (W : 'M_(m, n)) : (U :&: V = 0)%MS -> (W <= V)%MS -> W *m proj_mx U V = 0. @@ -1845,7 +1845,7 @@ Proof. rewrite /TIsum; apply: (iffP eqnP) => /= [dxS i Pi | dxS]. set Si' := (\sum_(j | _) unwrap (S_ j))%MS. have: mxdirect (unwrap (S_ i) + Si') by apply/eqnP; rewrite /= -!(bigD1 i). - by rewrite mxdirect_addsE => /and3P[-> _ /eqP]. + by rewrite mxdirect_addsE => /and3P[-> _ /eqP]. elim: _.+1 {-2 4}P (subxx P) (ltnSn #|P|) => // m IHm Q; move/subsetP=> sQP. case: (pickP Q) => [i Qi | Q0]; last by rewrite !big_pred0 ?mxrank0. rewrite (cardD1x Qi) !((bigD1 i) Q) //=. diff --git a/mathcomp/algebra/mxpoly.v b/mathcomp/algebra/mxpoly.v index eeece16..4d043ea 100644 --- a/mathcomp/algebra/mxpoly.v +++ b/mathcomp/algebra/mxpoly.v @@ -147,7 +147,7 @@ Proof. move=> p_nc q_nc; pose dp := (size p).-1; pose dq := (size q).-1. pose S := Sylvester_mx p q; pose dS := (dq + dp)%N. have dS_gt0: dS > 0 by rewrite /dS /dq -(subnKC q_nc). -pose j0 := Ordinal dS_gt0. +pose j0 := Ordinal dS_gt0. pose Ss0 := col_mx (p *: \col_(i < dq) 'X^i) (q *: \col_(i < dp) 'X^i). pose Ss := \matrix_(i, j) (if j == j0 then Ss0 i 0 else (S i j)%:P). pose u ds s := \sum_(i < ds) cofactor Ss (s i) j0 * 'X^i. @@ -325,13 +325,13 @@ apply: leq_trans (_ : #|[pred j | s j == j]|.+1 <= n.-1). - by rewrite size_poly1. - apply: leq_trans (size_mul_leq _ _) _. by rewrite -subn1 -addnS leq_subLR addnA leq_add. - rewrite !mxE eq_sym !inE; case: (s j == j); first by rewrite polyseqXsubC. + rewrite !mxE eq_sym !inE; case: (s j == j); first by rewrite polyseqXsubC. by rewrite sub0r size_opp size_polyC leq_b1. rewrite -{8}[n]card_ord -(cardC (pred2 (s i) i)) card2 nfix_i !ltnS. apply: subset_leq_card; apply/subsetP=> j; move/(_ =P j)=> fix_j. rewrite !inE -{1}fix_j (inj_eq (@perm_inj _ s)) orbb. by apply: contraNneq nfix_i => <-; rewrite fix_j. -Qed. +Qed. Lemma size_char_poly : size char_poly = n.+1. Proof. @@ -356,7 +356,7 @@ have ->: \tr A = \sum_(x <- diagA) x by rewrite big_map enumT. rewrite -size_diagA {}/p; elim: diagA => [|x d IHd]. by rewrite !big_nil mulr1 coefX oppr0. rewrite !big_cons coefXM mulrBl coefB IHd opprD addrC; congr (- _ + _). -rewrite mul_polyC coefZ [size _]/= -(size_prod_XsubC _ id) -lead_coefE. +rewrite mul_polyC coefZ [size _]/= -(size_prod_XsubC _ id) -lead_coefE. by rewrite (monicP _) ?monic_prod_XsubC ?mulr1. Qed. @@ -591,7 +591,7 @@ Variables (d n : nat) (A : 'M[aR]_n). Lemma map_rVpoly (u : 'rV_d) : fp (rVpoly u) = rVpoly u^f. Proof. apply/polyP=> k; rewrite coef_map !coef_rVpoly. -by case: (insub k) => [i|]; rewrite /= ?rmorph0 // mxE. +by case: (insub k) => [i|]; rewrite /= ?rmorph0 // mxE. Qed. Lemma map_poly_rV p : (poly_rV p)^f = poly_rV (fp p) :> 'rV_d. @@ -817,7 +817,7 @@ rewrite polySpred ?monic_neq0 // -/m1 big_ord_recr /= -lead_coefE. rewrite opprD addrC (monicP mon_p) mul1r subrK !mulrN -mulNr !mulr_sumr. apply: Msum => j _; rewrite mulrA mulrACA -exprD; apply: IHn. by rewrite -addnS addnC addnBA // leq_subLR leq_add. -by rewrite -mulN1r; do 2!apply: (genM) => //; apply: genR. +by rewrite -mulN1r; do 2!apply: (genM) => //; apply: genR. Qed. Lemma integral_root_monic u p : diff --git a/mathcomp/algebra/poly.v b/mathcomp/algebra/poly.v index 56493dd..5e684a1 100644 --- a/mathcomp/algebra/poly.v +++ b/mathcomp/algebra/poly.v @@ -564,7 +564,7 @@ pose dp := (size p).-1; pose dq := (size q).-1. have [-> | nz_p] := eqVneq p 0; first by rewrite lead_coef0 !mul0r coef0. have [-> | nz_q] := eqVneq q 0; first by rewrite lead_coef0 !mulr0 coef0. have ->: (size p + size q).-2 = (dp + dq)%N. - by do 2! rewrite polySpred // addSn addnC. + by do 2!rewrite polySpred // addSn addnC. have lt_p_pq: dp < (dp + dq).+1 by rewrite ltnS leq_addr. rewrite coefM (bigD1 (Ordinal lt_p_pq)) ?big1 ?simp ?addKn //= => i. rewrite -val_eqE neq_ltn /= => /orP[lt_i_p | gt_i_p]; last first. @@ -1271,7 +1271,7 @@ End OnePrimitive. Lemma prim_root_exp_coprime n z k : n.-primitive_root z -> n.-primitive_root (z ^+ k) = coprime k n. Proof. -move=> prim_z;have n_gt0 := prim_order_gt0 prim_z. +move=> prim_z; have n_gt0 := prim_order_gt0 prim_z. apply/idP/idP=> [prim_zk | co_k_n]. set d := gcdn k n; have dv_d_n: (d %| n)%N := dvdn_gcdr _ _. rewrite /coprime -/d -(eqn_pmul2r n_gt0) mul1n -{2}(gcdnMl n d). diff --git a/mathcomp/algebra/polydiv.v b/mathcomp/algebra/polydiv.v index b5e1068..b6f8936 100644 --- a/mathcomp/algebra/polydiv.v +++ b/mathcomp/algebra/polydiv.v @@ -235,7 +235,7 @@ have -> /= : (size r).-1 < size q + j. by rewrite -{1}[_.-1]add0n ltn_add2r. move: (hj); rewrite leq_eqVlt; case/orP. move/eqP<-; rewrite -{1}(prednK sq) -{3}(prednK sr) subSS. - rewrite subKn; first by rewrite coefMC !lead_coefE subrr. + rewrite subKn; first by rewrite coefMC !lead_coefE subrr. by move: hsrq; rewrite -{1}(prednK sq) -{1}(prednK sr) ltnS. move=> {hj} hj; move: (hj); rewrite prednK // coefMC; move/leq_sizeP=> -> //. suff: size q <= j - (size r - size q). @@ -573,7 +573,7 @@ Lemma redivp_eq q r : size r < size d -> redivp (q * d + r) d = (k, q, r). Proof. case: (monic_comreg mond)=> Hc Hr; move/(redivp_eq Hc Hr q). -by rewrite (eqP mond); move=> -> /=; rewrite expr1n !mulr1. +by rewrite (eqP mond) => -> /=; rewrite expr1n !mulr1. Qed. Lemma rdivp_eq p : @@ -670,7 +670,7 @@ Qed. Lemma rdvdpP p : reflect (exists qq, p = qq * d) (rdvdp d p). Proof. case: (monic_comreg mond)=> Hc Hr; apply: (iffP idP). - case: rdvdp_eqP=> // k qq; rewrite (eqP mond) expr1n mulr1; move=> -> _. + case: rdvdp_eqP=> // k qq; rewrite (eqP mond) expr1n mulr1 => -> _. by exists qq. by case=> [qq]; move/eq_rdvdp. Qed. @@ -892,7 +892,7 @@ rewrite unlock ud redivp_def; constructor => //. have hn0 : (lead_coef d ^+ rscalp m d)%:P != 0. by rewrite polyC_eq0; apply: expf_neq0. apply: (mulfI hn0); rewrite !mulrA -exprVn !polyC_exp -exprMn -polyC_mul. - by rewrite divrr // expr1n mul1r -polyC_exp mul_polyC rdivp_eq. + by rewrite divrr // expr1n mul1r -polyC_exp mul_polyC rdivp_eq. move=> dn0; rewrite size_scale ?ltn_rmodp // -exprVn expf_eq0 negb_and. by rewrite invr_eq0 cdn0 orbT. Qed. @@ -905,7 +905,7 @@ move=> hsrd hu; rewrite unlock hu; case et: (redivp _ _) => [[s qq] rr]. have cdn0 : lead_coef d != 0. by move: hu; case d0: (lead_coef d == 0) => //; rewrite (eqP d0) unitr0. move: (et); rewrite RingComRreg.redivp_eq //; last by apply/rregP. -rewrite et /=; case => e1 e2; rewrite -!mul_polyC -!exprVn !polyC_exp. +rewrite et /=; case=> e1 e2; rewrite -!mul_polyC -!exprVn !polyC_exp. suff h x y: x * (lead_coef d ^+ s)%:P = y -> ((lead_coef d)^-1)%:P ^+ s * y = x. by congr (_, _, _); apply: h. have hn0 : (lead_coef d)%:P ^+ s != 0 by apply: expf_neq0; rewrite polyC_eq0. @@ -1030,7 +1030,7 @@ Qed. Lemma divp1 m : m %/ 1 = m. Proof. -by rewrite divpE lead_coefC unitr1 Ring.rdivp1 expr1n invr1 scale1r. +by rewrite divpE lead_coefC unitr1 Ring.rdivp1 expr1n invr1 scale1r. Qed. Lemma modp0 p : p %% 0 = p. @@ -1225,7 +1225,7 @@ rewrite /dvdp; apply/idPn=> m_nz. have: p1 * q != 0 by rewrite -E1 -mul_polyC mulf_neq0 // polyC_eq0. rewrite mulf_eq0; case/norP=> p1_nz q_nz. have := (ltn_modp p q); rewrite q_nz -(size_scale (p %% q) cn0) E1. -by rewrite size_mul // polySpred // ltnNge leq_addl. +by rewrite size_mul // polySpred // ltnNge leq_addl. Qed. Lemma dvdpp d : d %| d. @@ -1258,7 +1258,7 @@ Hint Resolve dvdp_mull dvdp_mulr. Lemma dvdp_mul d1 d2 m1 m2 : d1 %| m1 -> d2 %| m2 -> d1 * d2 %| m1 * m2. Proof. case: (eqVneq d1 0) => [-> |d1n0]; first by move/dvd0pP->; rewrite !mul0r dvdpp. -case: (eqVneq d2 0) => [-> |d2n0]; first by move => _ /dvd0pP ->; rewrite !mulr0. +case: (eqVneq d2 0) => [-> |d2n0]; first by move=> _ /dvd0pP ->; rewrite !mulr0. rewrite dvdp_eq; set c1 := _ ^+ _; set q1 := _ %/ _; move/eqP=> Hq1. rewrite dvdp_eq; set c2 := _ ^+ _; set q2 := _ %/ _; move/eqP=> Hq2. apply: (@eq_dvdp (c1 * c2) (q1 * q2)). @@ -1341,11 +1341,11 @@ Proof. by apply: dvdp_mull; apply: dvdpp. Qed. Lemma dvdp_mul2r r p q : r != 0 -> (p * r %| q * r) = (p %| q). Proof. -move => nzr. +move=> nzr. case: (eqVneq p 0) => [-> | pn0]. by rewrite mul0r !dvd0p mulf_eq0 (negPf nzr) orbF. case: (eqVneq q 0) => [-> | qn0]; first by rewrite mul0r !dvdp0. -apply/idP/idP; last by move => ?; rewrite dvdp_mul ?dvdpp. +apply/idP/idP; last by move=> ?; rewrite dvdp_mul ?dvdpp. rewrite dvdp_eq; set c := _ ^+ _; set x := _ %/ _; move/eqP=> Hx. apply: (@eq_dvdp c x). by rewrite expf_neq0 // lead_coef_eq0 mulf_neq0. @@ -1388,7 +1388,7 @@ Lemma dvdp_exp_sub p q k l: p != 0 -> (p ^+ k %| q * p ^+ l) = (p ^+ (k - l) %| q). Proof. move=> pn0; case: (leqP k l)=> hkl. - move:(hkl); rewrite -subn_eq0; move/eqP->; rewrite expr0 dvd1p. + move: (hkl); rewrite -subn_eq0; move/eqP->; rewrite expr0 dvd1p. apply: dvdp_mull; case: (ltnP 1%N (size p)) => sp. by rewrite dvdp_Pexp2l. move: sp; case esp: (size p) => [|sp]. @@ -1532,7 +1532,7 @@ have n0q : q != 0. by case abs: (q == 0) => //; move: hq; rewrite (eqP abs) eqp01. rewrite -size_poly_eq1 eqn_leq -{1}(eqP sizeq) dvdp_leq //=. case p0 : (size p == 0%N); last by rewrite neq0_lt0n. -by move: dpq; rewrite size_poly_eq0 in p0; rewrite (eqP p0) dvd0p (negbTE n0q). +by move: dpq; rewrite size_poly_eq0 in p0; rewrite (eqP p0) dvd0p (negbTE n0q). Qed. Lemma eqp_dvdr q p d: p %= q -> d %| p = (d %| q). @@ -1558,10 +1558,10 @@ Lemma dvdp_opp d p : d %| (- p) = (d %| p). Proof. by apply: eqp_dvdr; rewrite -scaleN1r eqp_scale ?oppr_eq0 ?oner_eq0. Qed. Lemma eqp_mul2r r p q : r != 0 -> (p * r %= q * r) = (p %= q). -Proof. by move => nz_r; rewrite /eqp !dvdp_mul2r. Qed. +Proof. by move=> nz_r; rewrite /eqp !dvdp_mul2r. Qed. Lemma eqp_mul2l r p q: r != 0 -> (r * p %= r * q) = (p %= q). -Proof. by move => nz_r; rewrite /eqp !dvdp_mul2l. Qed. +Proof. by move=> nz_r; rewrite /eqp !dvdp_mul2l. Qed. Lemma eqp_mull r p q: (q %= r) -> (p * q %= p * r). Proof. @@ -1570,7 +1570,7 @@ by rewrite scalerAr e -scalerAr. Qed. Lemma eqp_mulr q p r : (p %= q) -> (p * r %= q * r). -Proof. by move=> epq; rewrite ![_ * r]mulrC eqp_mull. Qed. +Proof. by move=> epq; rewrite ![_ * r]mulrC eqp_mull. Qed. Lemma eqp_exp p q k : p %= q -> p ^+ k %= q ^+ k. Proof. @@ -1598,7 +1598,7 @@ case (q =P 0)=> [->|]; [|move/eqP => Hq]. case (p =P 0)=> [->|]; [|move/eqP => Hp]. by rewrite size_poly0 eq_sym size_poly_eq0; move/eqP->; rewrite eqpxx. move: pq; rewrite dvdp_eq; set c := _ ^+ _; set x := _ %/ _; move/eqP=> eqpq. -move:(eqpq); move/(congr1 (size \o (@polyseq R)))=> /=. +move: (eqpq); move/(congr1 (size \o (@polyseq R)))=> /=. have cn0 : c != 0 by rewrite expf_neq0 // lead_coef_eq0. rewrite (@eqp_size _ q); last by apply: eqp_scale. rewrite size_mul ?p0 // => [-> HH|]; last first. @@ -1608,7 +1608,7 @@ suff: size x == 1%N. case/size_poly1P=> y H1y H2y. by apply/eqpP; exists (y, c); rewrite ?H1y // eqpq H2y mul_polyC. case: (size p) HH (size_poly_eq0 p)=> [|n]; first by case: eqP Hp. -by rewrite addnS -add1n eqn_add2r;move/eqP->. +by rewrite addnS -add1n eqn_add2r; move/eqP->. Qed. Lemma eqp_root p q : p %= q -> root p =1 root q. @@ -1809,7 +1809,7 @@ Proof. case: (eqVneq n 0) => [-> | nn0]; first by rewrite gcd0p mulr0 eqpxx. case: (eqVneq m 0) => [-> | mn0]; first by rewrite mul0r gcdp0 eqpxx. rewrite gcdpE modp_mull gcd0p size_mul //; case: ifP; first by rewrite eqpxx. -rewrite (polySpred mn0) addSn /= -{1}[size n]add0n ltn_add2r; move/negbT. +rewrite (polySpred mn0) addSn /= -{1}[size n]add0n ltn_add2r; move/negbT. rewrite -ltnNge prednK ?size_poly_gt0 // leq_eqVlt ltnS leqn0 size_poly_eq0. rewrite (negPf mn0) orbF; case/size_poly1P=> c cn0 -> {mn0 m}; rewrite mul_polyC. suff -> : n %% (c *: n) = 0 by rewrite gcd0p; apply: eqp_scale. @@ -2042,7 +2042,7 @@ Proof. elim=> [|k ihk] p q /= qn0; first by rewrite leqn0 size_poly_eq0 (negPf qn0). move=> sqSn qsp; case: (eqVneq q 0)=> q0; first by rewrite q0 eqxx in qn0. rewrite (negPf qn0). -have sp : size p > 0 by apply: leq_trans qsp; rewrite size_poly_gt0. +have sp : size p > 0 by apply: leq_trans qsp; rewrite size_poly_gt0. case: (eqVneq (p %% q) 0) => [r0 | rn0] /=. rewrite r0 /egcdp_rec; case: k ihk sqSn => [|n] ihn sqSn /=. rewrite !scaler0 !mul0r subr0 add0r mul1r size_poly0 size_poly1. @@ -2063,13 +2063,13 @@ rewrite gcdpE ltnNge qsp //= (eqp_ltrans (gcdpC _ _)); split; last first. rewrite mul0r size_opp size_poly0 maxn0; apply: leq_trans ihn'1 _. exact: leq_modp. case: (eqVneq (p %/ q) 0)=> [-> | qqn0]. - rewrite mulr0 size_opp size_poly0 maxn0; apply: leq_trans ihn'1 _. + rewrite mulr0 size_opp size_poly0 maxn0; apply: leq_trans ihn'1 _. exact: leq_modp. rewrite geq_max (leq_trans ihn'1) ?leq_modp //= size_opp size_mul //. move: (ihn'2); rewrite -(leq_add2r (size (p %/ q))). have : size v + size (p %/ q) > 0 by rewrite addn_gt0 size_poly_gt0 vn0. have : size q + size (p %/ q) > 0 by rewrite addn_gt0 size_poly_gt0 qn0. - do 2! move/prednK=> {1}<-; rewrite ltnS => h; apply: leq_trans h _. + do 2!move/prednK=> {1}<-; rewrite ltnS => h; apply: leq_trans h _. rewrite size_divp // addnBA; last by apply: leq_trans qsp; apply: leq_pred. rewrite addnC -addnBA ?leq_pred //; move: qn0; rewrite -size_poly_eq0 -lt0n. by move/prednK=> {1}<-; rewrite subSnn addn1. @@ -2107,10 +2107,10 @@ Qed. Lemma Bezout_coprimepP : forall p q, reflect (exists u, u.1 * p + u.2 * q %= 1) (coprimep p q). Proof. -move=> p q; rewrite -gcdp_eqp1; apply:(iffP idP)=> [g1|]. +move=> p q; rewrite -gcdp_eqp1; apply: (iffP idP)=> [g1|]. by case: (Bezoutp p q) => [[u v] Puv]; exists (u, v); apply: eqp_trans g1. -case=>[[u v]]; rewrite eqp_sym=> Puv; rewrite /eqp (eqp_dvdr _ Puv). -by rewrite dvdp_addr dvdp_mull ?dvdp_gcdl ?dvdp_gcdr //= dvd1p. +case=> [[u v]]; rewrite eqp_sym=> Puv; rewrite /eqp (eqp_dvdr _ Puv). +by rewrite dvdp_addr dvdp_mull ?dvdp_gcdl ?dvdp_gcdr //= dvd1p. Qed. Lemma coprimep_root p q x : coprimep p q -> root p x -> q.[x] != 0. @@ -2126,7 +2126,7 @@ Qed. Lemma Gauss_dvdpl p q d: coprimep d q -> (d %| p * q) = (d %| p). Proof. move/Bezout_coprimepP=>[[u v] Puv]; apply/idP/idP; last exact: dvdp_mulr. -move:Puv; move/(eqp_mull p); rewrite mulr1 mulrDr eqp_sym=> peq dpq. +move: Puv; move/(eqp_mull p); rewrite mulr1 mulrDr eqp_sym=> peq dpq. rewrite (eqp_dvdr _ peq) dvdp_addr; first by rewrite mulrA mulrAC dvdp_mulr. by rewrite mulrA dvdp_mull ?dvdpp. Qed. @@ -2138,7 +2138,7 @@ Proof. by rewrite mulrC; apply: Gauss_dvdpl. Qed. Lemma Gauss_dvdp m n p : coprimep m n -> (m * n %| p) = (m %| p) && (n %| p). Proof. case: (eqVneq m 0) => [-> | mn0]. - by rewrite coprime0p; move/eqp_dvdl->; rewrite !mul0r dvd0p dvd1p andbT. + by rewrite coprime0p; move/eqp_dvdl->; rewrite !mul0r dvd0p dvd1p andbT. case: (eqVneq n 0) => [-> | nn0]. by rewrite coprimep0; move/eqp_dvdl->; rewrite !mulr0 dvd1p. move=> hc; apply/idP/idP. @@ -2149,7 +2149,7 @@ case/andP => dmp dnp; move: (dnp); rewrite dvdp_eq. set c2 := _ ^+ _; set q2 := _ %/ _; move/eqP=> e2. have := (sym_eq (Gauss_dvdpl q2 hc)); rewrite -e2. have -> : m %| c2 *: p by rewrite -mul_polyC dvdp_mull. -rewrite dvdp_eq; set c3 := _ ^+ _; set q3 := _ %/ _; move/eqP=> e3. +rewrite dvdp_eq; set c3 := _ ^+ _; set q3 := _ %/ _; move/eqP=> e3. apply: (@eq_dvdp (c3 * c2) q3). by rewrite mulf_neq0 // expf_neq0 // lead_coef_eq0. by rewrite mulrA -e3 -scalerAl -e2 scalerA. @@ -2170,7 +2170,7 @@ Proof. by move=> co_pn; rewrite mulrC Gauss_gcdpr. Qed. Lemma coprimep_mulr p q r : coprimep p (q * r) = (coprimep p q && coprimep p r). Proof. apply/coprimepP/andP=> [hp | [/coprimepP-hq hr]]. - by split; apply/coprimepP=> d dp dq; rewrite hp //; + by split; apply/coprimepP=> d dp dq; rewrite hp //; [apply/dvdp_mulr | apply/dvdp_mull]. move=> d dp dqr; move/(_ _ dp) in hq. rewrite Gauss_dvdpl in dqr; first exact: hq. @@ -2309,7 +2309,7 @@ have /size_poly1P [c cn0 em'] : size m' == 1%N. by rewrite (negPf mn0) (negPf c2n0). have := (hc _ (dvdpp _) hd); rewrite -size_poly_eq1. rewrite polySpred; last by rewrite expf_eq0 negb_and m'_n0 orbT. - rewrite size_exp eqSS muln_eq0; move: k_gt0; rewrite lt0n; move/negPf->. + rewrite size_exp eqSS muln_eq0; move: k_gt0; rewrite lt0n; move/negPf->. by rewrite orbF -{2}(@prednK (size m')) ?lt0n // size_poly_eq0. rewrite -(@dvdp_scalel c2) // def_m em' mul_polyC dvdp_scalel //. by rewrite -(@dvdp_scaler c1) // def_n dvdp_mull. @@ -2387,7 +2387,7 @@ case dpq: (d %| gcdp p q). move: (dpq); rewrite dvdp_gcd dp /= => dq; apply: dvdUp; move: cdq. apply: contraLR=> nd1; apply/coprimepPn; last first. by exists d; rewrite dvdp_gcd dvdpp dq nd1. - move/negP: p0; move/negP; apply: contra=> d0; move:dp; rewrite (eqP d0). + move/negP: p0; move/negP; apply: contra=> d0; move: dp; rewrite (eqP d0). by rewrite dvd0p. move: (dp); apply: contraLR=> ndp'. rewrite (@eqp_dvdr ((lead_coef (gcdp p q) ^+ scalp p (gcdp p q))*:p)). @@ -2409,7 +2409,7 @@ move=> p0 sd; apply/idP/idP. case: gdcopP=> r rp crq maxr dr; move/negPf: (p0)=> p0f. rewrite (dvdp_trans dr) //=. move: crq; apply: contraL=> dq; rewrite p0f orbF; apply/coprimepPn. - by move:p0; apply: contra=> r0; move: rp; rewrite (eqP r0) dvd0p. + by move: p0; apply: contra=> r0; move: rp; rewrite (eqP r0) dvd0p. by exists d; rewrite dvdp_gcd dr dq -size_poly_eq1 sd. case/andP=> dp dq; case: gdcopP=> r rp crq maxr; apply: maxr=> //. apply/coprimepP=> x xd xq. @@ -2472,7 +2472,7 @@ Lemma modp_XsubC p c : p %% ('X - c%:P) = p.[c]%:P. Proof. have: root (p - p.[c]%:P) c by rewrite /root !hornerE subrr. case/factor_theorem=> q /(canRL (subrK _)) Dp; rewrite modpE /= lead_coefXsubC. -rewrite GRing.unitr1 expr1n invr1 scale1r {1}Dp. +rewrite GRing.unitr1 expr1n invr1 scale1r {1}Dp. rewrite RingMonic.rmodp_addl_mul_small // ?monicXsubC // size_XsubC size_polyC. by case: (p.[c] == 0). Qed. @@ -2735,7 +2735,7 @@ Qed. Lemma mulpK q : (q * d) %/ d = q. Proof. case/edivpP: (sym_eq (addr0 (q * d))); rewrite // size_poly0 size_poly_gt0. -by rewrite -lead_coef_eq0; apply: contraTneq ulcd => ->; rewrite unitr0. +by rewrite -lead_coef_eq0; apply: contraTneq ulcd => ->; rewrite unitr0. Qed. Lemma mulKp q : (d * q) %/ d = q. @@ -2785,7 +2785,7 @@ by rewrite -lead_coef_eq0; apply: contraTneq ulcd => ->; rewrite unitr0. Qed. Lemma dvdp_eq_mul p q : d %| p -> (p == q * d) = (p %/ d == q). -Proof. by move=>dv_d_p; rewrite eq_sym -dvdp_eq_div // eq_sym. Qed. +Proof. by move=> dv_d_p; rewrite eq_sym -dvdp_eq_div // eq_sym. Qed. Lemma divp_mulA p q : d %| q -> p * (q %/ d) = p * q %/ d. Proof. @@ -3206,7 +3206,7 @@ Qed. Lemma edivp_eq d q r : size r < size d -> edivp (q * d + r) d = (0%N, q, r). Proof. -move=> srd; apply: Idomain.edivp_eq ; rewrite // unitfE lead_coef_eq0. +move=> srd; apply: Idomain.edivp_eq; rewrite // unitfE lead_coef_eq0. by rewrite -size_poly_gt0; apply: leq_trans srd. Qed. @@ -3228,8 +3228,8 @@ Qed. Lemma Bezout_eq1_coprimepP : forall p q, reflect (exists u, u.1 * p + u.2 * q = 1) (coprimep p q). Proof. -move=> p q; apply:(iffP idP)=> [hpq|]; last first. - by case=>[[u v]] /= e; apply/Bezout_coprimepP; exists (u, v); rewrite e eqpxx. +move=> p q; apply: (iffP idP)=> [hpq|]; last first. + by case=> [[u v]] /= e; apply/Bezout_coprimepP; exists (u, v); rewrite e eqpxx. case/Bezout_coprimepP: hpq => [[u v]] /=. case/eqpP=> [[c1 c2]] /andP /= [c1n0 c2n0] e. exists (c2^-1 *: (c1 *: u), c2^-1 *: (c1 *: v)); rewrite /= -!scalerAl. @@ -3298,7 +3298,7 @@ Proof. rewrite /rdivp /rscalp /rmodp !unlock map_poly_eq0 size_map_poly. case: eqP; rewrite /= -(rmorph0 (map_poly_rmorphism f)) //; move/eqP=> q_nz. move: (size a) => m; elim: m 0%N 0 a => [|m IHm] qq r a /=. - rewrite -!mul_polyC !size_map_poly !lead_coef_map // -(map_polyXn f). + rewrite -!mul_polyC !size_map_poly !lead_coef_map // -(map_polyXn f). by rewrite -!(map_polyC f) -!rmorphM -rmorphB -rmorphD; case: (_ < _). rewrite -!mul_polyC !size_map_poly !lead_coef_map // -(map_polyXn f). by rewrite -!(map_polyC f) -!rmorphM -rmorphB -rmorphD /= IHm; case: (_ < _). diff --git a/mathcomp/algebra/rat.v b/mathcomp/algebra/rat.v index d004748..e837ed2 100644 --- a/mathcomp/algebra/rat.v +++ b/mathcomp/algebra/rat.v @@ -32,7 +32,7 @@ Local Open Scope ring_scope. Local Notation sgr := Num.sg. Record rat : Set := Rat { - valq : (int * int) ; + valq : (int * int); _ : (0 < valq.2) && coprime `|valq.1| `|valq.2| }. @@ -73,7 +73,7 @@ Lemma coprime_num_den x : coprime `|numq x| `|denq x|. Proof. by rewrite /numq /denq; case: x=> [[a b] /= /andP []]. Qed. Fact RatK x P : @Rat (numq x, denq x) P = x. -Proof. by move:x P => [[a b] P'] P; apply: val_inj. Qed. +Proof. by move: x P => [[a b] P'] P; apply: val_inj. Qed. Fact fracq_subproof : forall x : int * int, let n := @@ -100,8 +100,8 @@ Proof. by apply: val_inj; rewrite /= gcdn1 !divn1 abszE mulr_sign_norm. Qed. Fact valqK x : fracq (valq x) = x. Proof. -move:x => [[n d] /= Pnd]; apply: val_inj=> /=. -move: Pnd; rewrite /coprime /fracq /=; case/andP=> hd; move/eqP=> hnd. +move: x => [[n d] /= Pnd]; apply: val_inj=> /=. +move: Pnd; rewrite /coprime /fracq /= => -/andP[] hd -/eqP hnd. by rewrite ltr_gtF ?gtr_eqF //= hnd !divn1 mulz_sign_abs abszE gtr0_norm. Qed. @@ -407,7 +407,7 @@ Proof. by rewrite -ratzE /ratz rat_eqE /numq /denq /= mulr0 eqxx andbT. Qed. (* fracq should never appear, its canonical form is _%:Q / _%:Q *) Lemma fracqE x : fracq x = x.1%:Q / x.2%:Q. Proof. -move:x => [m n] /=. +move: x => [m n] /=. case n0: (n == 0); first by rewrite (eqP n0) fracq0 rat0 invr0 mulr0. rewrite -[m%:Q]valqK -[n%:Q]valqK. rewrite [_^-1]invq_frac ?(denq_neq0, numq_eq0, n0, intq_eq0) //. @@ -426,7 +426,7 @@ CoInductive divq_spec (n d : int) : int -> int -> rat -> Type := Lemma divqP n d : divq_spec n d n d (n%:Q / d%:Q). Proof. set x := (n, d); rewrite -[n]/x.1 -[d]/x.2 -fracqE. -by case: fracqP => [_|k fx k_neq0] /=; constructor. +by case: fracqP => [_|k fx k_neq0] /=; constructor. Qed. Lemma divq_eq (nx dx ny dy : rat) : @@ -466,7 +466,8 @@ Qed. Lemma denqVz (i : int) : i != 0 -> denq (i%:~R^-1) = `|i|. Proof. -by move=> h; rewrite -div1r -[1]/(1%:~R) coprimeq_den /= ?coprime1n // (negPf h). +move=> h; rewrite -div1r -[1]/(1%:~R). +by rewrite coprimeq_den /= ?coprime1n // (negPf h). Qed. Lemma numqE x : (numq x)%:~R = x * (denq x)%:~R. @@ -657,7 +658,7 @@ Qed. Fact Qnat_semiring_closed : semiring_closed Qnat. Proof. -do 2?split; move => // x y; rewrite !Qnat_def => /andP[xQ hx] /andP[yQ hy]. +do 2?split; move=> // x y; rewrite !Qnat_def => /andP[xQ hx] /andP[yQ hy]. by rewrite rpredD // addr_ge0. by rewrite rpredM // mulr_ge0. Qed. diff --git a/mathcomp/algebra/ssralg.v b/mathcomp/algebra/ssralg.v index 15bce96..9a0314e 100644 --- a/mathcomp/algebra/ssralg.v +++ b/mathcomp/algebra/ssralg.v @@ -756,7 +756,7 @@ Lemma eqr_opp x y : (- x == - y) = (x == y). Proof. exact: can_eq opprK x y. Qed. Lemma eqr_oppLR x y : (- x == y) = (x == - y). -Proof. exact: inv_eq opprK x y. Qed. +Proof. exact: inv_eq opprK x y. Qed. Lemma mulr0n x : x *+ 0 = 0. Proof. by []. Qed. Lemma mulr1n x : x *+ 1 = x. Proof. by []. Qed. @@ -1234,7 +1234,7 @@ rewrite exprS {}IHn /= mulrDl !big_distrr /= big_ord_recl mulr1 subn0. rewrite !big_ord_recr /= !binn !subnn !mul1r !subn0 bin0 !exprS -addrA. congr (_ + _); rewrite addrA -big_split /=; congr (_ + _). apply: eq_bigr => i _; rewrite !mulrnAr !mulrA -exprS -subSn ?(valP i) //. -by rewrite subSS (commrX _ (commr_sym cxy)) -mulrA -exprS -mulrnDr. +by rewrite subSS (commrX _ (commr_sym cxy)) -mulrA -exprS -mulrnDr. Qed. Lemma exprBn_comm x y n (cxy : comm x y) : @@ -2612,7 +2612,7 @@ Section ClassDef. Variable R : ringType. Record class_of (T : Type) : Type := Class { - base : Lalgebra.class_of R T; + base : Lalgebra.class_of R T; mixin : axiom (Lalgebra.Pack _ base T) }. Local Coercion base : class_of >-> Lalgebra.class_of. @@ -2682,7 +2682,7 @@ Lemma mulr_algr a x : x * a%:A = a *: x. Proof. by rewrite -scalerAr mulr1. Qed. Lemma exprZn k x n : (k *: x) ^+ n = k ^+ n *: x ^+ n. -Proof. +Proof. elim: n => [|n IHn]; first by rewrite !expr0 scale1r. by rewrite !exprS IHn -scalerA scalerAr scalerAl. Qed. @@ -3124,7 +3124,7 @@ Section ClassDef. Variable R : ringType. Record class_of (T : Type) : Type := Class { - base : Algebra.class_of R T; + base : Algebra.class_of R T; mixin : GRing.UnitRing.mixin_of (Ring.Pack base T) }. Definition base2 R m := UnitRing.Class (@mixin R m). @@ -3627,7 +3627,7 @@ End LmodPred. Section UnitRingPred. -Variable R : unitRingType. +Variable R : unitRingType. Section Div. @@ -4247,7 +4247,7 @@ Proof. by move=> /= -> -> ->. Qed. Lemma eval_If e : let ev := qf_eval e in ev If = (if ev pred_f then ev then_f else ev else_f). -Proof. by rewrite /=; case: ifP => _; rewrite ?orbF. Qed. +Proof. by rewrite /=; case: ifP => _; rewrite ?orbF. Qed. End If. @@ -6011,7 +6011,7 @@ Section FinFunRing. Variable (aT : finType) (R : ringType) (a : aT). Definition ffun_one : {ffun aT -> R} := [ffun => 1]. -Definition ffun_mul (f g : {ffun aT -> R}) := [ffun x => f x * g x]. +Definition ffun_mul (f g : {ffun aT -> R}) := [ffun x => f x * g x]. Fact ffun_mulA : associative ffun_mul. Proof. by move=> f1 f2 f3; apply/ffunP=> i; rewrite !ffunE mulrA. Qed. diff --git a/mathcomp/algebra/ssrint.v b/mathcomp/algebra/ssrint.v index eb66940..e6c4ca6 100644 --- a/mathcomp/algebra/ssrint.v +++ b/mathcomp/algebra/ssrint.v @@ -120,7 +120,7 @@ Lemma int_rect (P : int -> Type) : -> (forall n : nat, P (- n) -> P (- (n.+1))) -> forall n : int, P n. Proof. -by move=> P0 hPp hPn []; elim=> [|n ihn]//; do? [apply: hPn | apply: hPp]. +by move=> P0 hPp hPn []; elim=> [|n ihn]//; do ?[apply: hPn | apply: hPp]. Qed. Definition int_rec := int_rect. @@ -210,7 +210,7 @@ Lemma int_rect (P : int -> Type) : -> (forall n : nat, P (- (n%:Z)) -> P (- (n.+1%N%:Z))) -> forall n : int, P n. Proof. -by move=> P0 hPp hPn []; elim=> [|n ihn]//; do? [apply: hPn | apply: hPp]. +by move=> P0 hPp hPn []; elim=> [|n ihn]//; do ?[apply: hPn | apply: hPp]. Qed. Definition int_rec := int_rect. @@ -546,7 +546,7 @@ case: (leqP m n)=> hmn; rewrite /intmul //=. rewrite -{2}[n](@subnKC m)// mulrnDr opprD addrA subrr sub0r. by case hdmn: (_ - _)%N=> [|dmn] /=; first by rewrite mulr0n oppr0. have hnm := ltnW hmn. -rewrite -{2}[m](@subnKC n)// mulrnDr addrAC subrr add0r. +rewrite -{2}[m](@subnKC n)// mulrnDr addrAC subrr add0r. by rewrite subzn. Qed. diff --git a/mathcomp/algebra/vector.v b/mathcomp/algebra/vector.v index b7a9052..c4865ca 100644 --- a/mathcomp/algebra/vector.v +++ b/mathcomp/algebra/vector.v @@ -204,7 +204,7 @@ Proof. have r2vP r: {v | v2r v = r}. by apply: sig_eqW; have [v _ vK] := v2r_bij; exists (v r). by exists (fun r => sval (r2vP r)) => r; case: (r2vP r). -Qed. +Qed. Definition r2v := sval r2v_subproof. Lemma r2vK : cancel r2v v2r. Proof. exact: (svalP r2v_subproof). Qed. @@ -721,7 +721,7 @@ Lemma dimvS U V : (U <= V)%VS -> \dim U <= \dim V. Proof. exact: mxrankS. Qed. Lemma dimv_leqif_sup U V : (U <= V)%VS -> \dim U <= \dim V ?= iff (V <= U)%VS. -Proof. exact: mxrank_leqif_sup. Qed. +Proof. exact: mxrank_leqif_sup. Qed. Lemma dimv_leqif_eq U V : (U <= V)%VS -> \dim U <= \dim V ?= iff (U == V). Proof. by rewrite eqEsubv; apply: mxrank_leqif_eq. Qed. @@ -939,7 +939,7 @@ Lemma span_subvP {X U} : reflect {subset X <= U} (<<X>> <= U)%VS. Proof. rewrite /subV [@span _ _]unlock genmxE. apply: (iffP row_subP) => /= [sXU | sXU i]. - by move=> _ /seq_tnthP[i ->]; have:= sXU i; rewrite rowK memvK. + by move=> _ /seq_tnthP[i ->]; have:= sXU i; rewrite rowK memvK. by rewrite rowK -memvK sXU ?mem_tnth. Qed. @@ -1005,7 +1005,7 @@ Lemma seq1_free v : free [:: v] = (v != 0). Proof. by rewrite /free span_seq1 dim_vline; case: (~~ _). Qed. Lemma perm_free X Y : perm_eq X Y -> free X = free Y. -Proof. +Proof. by move=> eqX; rewrite /free (perm_eq_size eqX) (eq_span (perm_eq_mem eqX)). Qed. @@ -1202,7 +1202,7 @@ Lemma bigcat_free : directv (\sum_(i | P i) <<Xs i>>) -> (forall i, P i -> free (Xs i)) -> free (\big[cat/[::]]_(i | P i) Xs i). Proof. -rewrite /free directvE /= span_bigcat => /directvP-> /= freeXs. +rewrite /free directvE /= span_bigcat => /directvP-> /= freeXs. rewrite (big_morph _ (@size_cat _) (erefl _)) /=. by apply/eqP/eq_bigr=> i /freeXs/eqP. Qed. @@ -1534,7 +1534,7 @@ Qed. Lemma limg_lfunVK f : {in limg f, cancel f^-1%VF f}. Proof. by move=> _ /memv_imgP[u _ ->]; rewrite -!comp_lfunE inv_lfun_def. Qed. -Lemma lkerE f U : (U <= lker f)%VS = (f @: U == 0)%VS. +Lemma lkerE f U : (U <= lker f)%VS = (f @: U == 0)%VS. Proof. rewrite unlock -dimv_eq0 /dimv /subsetv !genmxE mxrank_eq0. by rewrite (sameP sub_kermxP eqP). @@ -1550,7 +1550,7 @@ Lemma eqlfun_inP V f g : reflect {in V, f =1 g} (V <= lker (f - g))%VS. Proof. by apply: (iffP subvP) => E x /E/eqlfunP. Qed. Lemma limg_ker_compl f U : (f @: (U :\: lker f) = f @: U)%VS. -Proof. +Proof. rewrite -{2}(addv_diff_cap U (lker f)) limg_add; apply/esym/addv_idPl. by rewrite (subv_trans _ (sub0v _)) // subv0 -lkerE capvSr. Qed. @@ -1825,7 +1825,7 @@ Lemma addv_pi2_proj U V w (pi2 := addv_pi2 U V) : pi2 (pi2 w) = pi2 w. Proof. by rewrite addv_pi2_id ?memv_pi2. Qed. Lemma addv_pi1_pi2 U V w : - w \in (U + V)%VS -> addv_pi1 U V w + addv_pi2 U V w = w. + w \in (U + V)%VS -> addv_pi1 U V w + addv_pi2 U V w = w. Proof. by rewrite -addv_diff; apply: daddv_pi_add; apply: capv_diff. Qed. Section Sumv_Pi. diff --git a/mathcomp/attic/algnum_basic.v b/mathcomp/attic/algnum_basic.v index 48adbb3..54cb1c5 100644 --- a/mathcomp/attic/algnum_basic.v +++ b/mathcomp/attic/algnum_basic.v @@ -102,12 +102,12 @@ pose g := fun l => let p := minPoly K l in \prod_(i < size p) f p`_i; exists g = pose p := minPoly K l; pose n := (size p).-1. pose s := mkseq (fun i => p`_i * (g l) ^+ (n - i)%N) (size p). have kI (i : 'I_(size p)) : p`_i \in K by apply/all_nthP => //; apply/minPolyOver. -have glA : g l \in A by rewrite/g; elim/big_ind: _ => // i _; apply/fHa. +have glA : g l \in A by rewrite /g; elim/big_ind: _ => // i _; apply/fHa. have pmon: p`_n = 1 by have /monicP := monic_minPoly K l. -have an1: nth 0 s n = 1 by rewrite /n nth_mkseq ?pmon ?mul1r ?subnn ?size_minPoly. +have an1: nth 0 s n = 1 by rewrite /n nth_mkseq ?pmon ?mul1r ?subnn ?size_minPoly. have eqPs: (Poly s) = s :> seq L0. by rewrite (PolyK (c := 0)) // -nth_last size_mkseq an1 oner_neq0. -have ilen i : i < size p -> i <= n by move => iB; rewrite /n -ltnS prednK // size_minPoly. +have ilen i : i < size p -> i <= n by move=> iB; rewrite /n -ltnS prednK // size_minPoly. split => //; first by apply/prodf_neq0 => i _. exists (Poly s); split; last first; last by rewrite monicE lead_coefE eqPs // size_mkseq an1. rewrite /root -(mulr0 ((g l) ^+ n)); have <- := minPolyxx K l. @@ -116,11 +116,11 @@ exists (Poly s); split; last first; last by rewrite monicE lead_coefE eqPs // si by congr (_ * _); rewrite -exprD subnK ?ilen. apply/(all_nthP 0) => i; rewrite eqPs size_mkseq => iB; rewrite nth_mkseq //. have := ilen _ iB; rewrite leq_eqVlt => /orP. - case; first by move /eqP ->; rewrite subnn pmon mulr1. + case; first by move/eqP ->; rewrite subnn pmon mulr1. rewrite -subn_gt0 => {pmon ilen eqPs an1} /prednK <-; rewrite exprS mulrA /= Amcl ?rpredX //. rewrite /g (bigD1 (Ordinal iB)) //= mulrA; apply/Amcl. by rewrite mulrC; apply/fHk/(kI (Ordinal iB)). - by rewrite rpred_prod => // j _; apply/fHa. + by rewrite rpred_prod => // j _; apply/fHa. Qed. Lemma int_clos_incl a : a \in A -> integral a. @@ -135,7 +135,7 @@ Lemma intPl (I : eqType) G (r : seq I) l : has (fun x => G x != 0) r -> Proof. have Aaddr : addr_closed A := Asubr; have Amulr : mulr_closed A := Asubr. have Aoppr : oppr_closed A := Asubr; have [Aid _ _] := Asubr. -move => rn gen; pose s := in_tuple r; pose g j := gen (tnth s j) (mem_tnth j s). +move=> rn gen; pose s := in_tuple r; pose g j := gen (tnth s j) (mem_tnth j s). pose f j := sval (g j); pose fH j := svalP (g j). pose M := \matrix_(i, j < size r) f j (tnth s i). exists (char_poly M); rewrite char_poly_monic; split => //. @@ -153,7 +153,7 @@ Qed. Lemma intPr l : integral l -> exists r : seq L0, [/\ r != nil, all A r & \sum_(i < size r) r`_i * l ^+ i = l ^+ (size r)]. Proof. -move => [p [pm pA pr]]; pose n := size p; pose r := take n.-1 (- p). +move=> [p [pm pA pr]]; pose n := size p; pose r := take n.-1 (- p). have ps : n > 1. rewrite ltnNge; apply/negP => /size1_polyC pc; rewrite pc in pr pm => {pc}. move: pr => /rootP; rewrite hornerC => pc0. @@ -163,10 +163,10 @@ exists r; split. apply/eqP => /nilP; rewrite /nilp /r size_takel; last by rewrite size_opp leq_pred. by rewrite -subn1 subn_eq0 leqNgt ps. have : - p \is a polyOver A by rewrite rpredN //; apply Asubr. - by move => /allP-popA; apply/allP => x /mem_take /popA. + by move=> /allP-popA; apply/allP => x /mem_take /popA. move: pr => /rootP; rewrite horner_coef -(prednK (n := size p)); last by rewrite ltnW. rewrite big_ord_recr /= rs; have := monicP pm; rewrite /lead_coef => ->; rewrite mul1r => /eqP. -rewrite addrC addr_eq0 -sumrN => /eqP => ->; apply/eq_bigr => i _; rewrite /r nth_take //. +rewrite addrC addr_eq0 -sumrN => /eqP => ->; apply/eq_bigr => i _; rewrite /r nth_take //. by rewrite coefN mulNr. Qed. @@ -174,11 +174,11 @@ Lemma int_subring_closed a b : integral a -> integral b -> integral (a - b) /\ integral (a * b). Proof. have [A0 _ ] := (Asubr : zmod_closed A); have [A1 Asubr2 Amulr2] := Asubr. -move => /intPr[ra [/negbTE-ran raA raS]] /intPr[rb [/negbTE-rbn rbA rbS]]. +move=> /intPr[ra [/negbTE-ran raA raS]] /intPr[rb [/negbTE-rbn rbA rbS]]. pose n := size ra; pose m := size rb; pose r := Finite.enum [finType of 'I_n * 'I_m]. pose G (z : 'I_n * 'I_m) := let (k, l) := z in a ^ k * b ^l. have [nz mz] : 0 < n /\ 0 < m. - by rewrite !lt0n; split; apply/negP; move => /nilP/eqP; rewrite ?ran ?rbn. + by rewrite !lt0n; split; apply/negP => - /nilP/eqP; rewrite ?ran ?rbn. have rnn : has (fun x => G x != 0) r. apply/hasP; exists (Ordinal nz, Ordinal mz); first by rewrite /r -enumT mem_enum. by rewrite /G mulr1 oner_neq0. @@ -186,22 +186,22 @@ pose h s i : 'I_(size s) -> L0 := fun k => if (i != size s) then (i == k)%:R els pose f i j (z : 'I_n * 'I_m) : L0 := let (k, l) := z in h ra i k * h rb j l. have fA i j : forall z, f i j z \in A. have hA s k l : all A s -> h s k l \in A. - move => /allP-sa; rewrite /h; case (eqVneq k (size s)) => [/eqP ->|->]. - by apply/sa/mem_nth. + move=> /allP-sa; rewrite /h; case (eqVneq k (size s)) => [/eqP ->|->]. + by apply/sa/mem_nth. by case (eqVneq k l) => [/eqP ->|/negbTE ->]. - by move => [k l]; rewrite /f; apply/Amulr2; apply/hA. + by move=> [k l]; rewrite /f; apply/Amulr2; apply/hA. have fS i j : (i <= n) -> (j <= m) -> \sum_(z <- r) f i j z * G z = a ^ i * b ^ j. have hS s k c : (k <= size s) -> \sum_(l < size s) s`_l * c ^ l = c ^ (size s) -> \sum_(l < size s) h s k l * c ^ l = c ^ k. - move => kB sS; rewrite /h; case (eqVneq k (size s)) => [->|kn {sS}]; first by rewrite eqxx. + move=> kB sS; rewrite /h; case (eqVneq k (size s)) => [->|kn {sS}]; first by rewrite eqxx. rewrite kn; rewrite leq_eqVlt (negbTE kn) /= in kB => {kn}. rewrite (bigD1 (Ordinal kB)) //= eqxx mul1r /= -[RHS]addr0; congr (_ + _). by apply/big1 => l; rewrite eq_sym => kl; have : k != l := kl => /negbTE ->; rewrite mul0r. - move => iB jB; rewrite -(hS ra i a) // -(hS rb j b) // mulr_suml. + move=> iB jB; rewrite -(hS ra i a) // -(hS rb j b) // mulr_suml. rewrite (eq_bigr (fun k => \sum_(l < m) (h ra i k * a ^ k) * (h rb j l * b ^ l))). rewrite pair_bigA; apply eq_bigr => [[k l] _]; rewrite !mulrA; congr (_ * _). by rewrite -!mulrA [in h rb j l * a ^ k] mulrC. - by move => k _; rewrite mulr_sumr. + by move=> k _; rewrite mulr_sumr. pose fB i j z := f i.+1 j z - f i j.+1 z; pose fM i j z := f i.+1 j.+1 z. have fBA i j z : fB i j z \in A by rewrite /fB Asubr2. have fBM i j z : fM i j z \in A by rewrite /fM. @@ -213,10 +213,10 @@ by rewrite /fM [in RHS]/G mulrA [in (a * b) * a ^ i] mulrC mulrA -exprSr -mulrA Qed. Lemma int_zmod_closed a b : integral a -> integral b -> integral (a - b). -Proof. by move => aI bI; have [Azmod] := int_subring_closed aI bI. Qed. +Proof. by move=> aI bI; have [Azmod] := int_subring_closed aI bI. Qed. Lemma int_mulr_closed a b : integral a -> integral b -> integral (a * b). -Proof. by move => aI bI; have [_] := int_subring_closed aI bI. Qed. +Proof. by move=> aI bI; have [_] := int_subring_closed aI bI. Qed. End Integral. @@ -233,7 +233,7 @@ Definition tr : L0 -> L0 -> F := fun l k => Fact tr_is_scalar l : scalar (tr l). Proof. -move => c a b; rewrite /tr -!linearP /=; congr (\tr _); apply/matrixP => i j; rewrite !mxE. +move=> c a b; rewrite /tr -!linearP /=; congr (\tr _); apply/matrixP => i j; rewrite !mxE. by rewrite mulrDr mulrDl linearD /= -scalerAr -scalerAl linearZ. Qed. @@ -241,7 +241,7 @@ Canonical tr_additive l := Additive (@tr_is_scalar l). Canonical tr_linear l := AddLinear (@tr_is_scalar l). Lemma tr_sym : commutative tr. -Proof. by move => a b; rewrite /tr mulrC. Qed. +Proof. by move=> a b; rewrite /tr mulrC. Qed. Hypothesis Asubr : subring_closed A. Hypothesis Aint : int_closed A. @@ -267,36 +267,36 @@ Lemma dual_basis_def : forall (i : 'I_m), tr X`_i Y`_i = 1 /\ forall (j : 'I_m), j != i -> tr X`_i Y`_j = 0}. Proof. -pose Uv := subvs_vectType U; pose Fv := subvs_FalgType (1%AS : {aspace L0}); +pose Uv := subvs_vectType U; pose Fv := subvs_FalgType (1%AS : {aspace L0}); pose HomV := [vectType _ of 'Hom(Uv, Fv)]. pose tr_sub : Uv -> Uv -> Fv := fun u v => (tr (vsval u) (vsval v))%:A. have HomVdim : \dim {:HomV} = m by rewrite dimvf /Vector.dim /= /Vector.dim /= dimv1 muln1. have [f fH] : {f : 'Hom(Uv, HomV) | forall u, f u =1 tr_sub u}. - have lf1 u : linear (tr_sub u) by move => c x y; rewrite /tr_sub linearP scalerDl scalerA. + have lf1 u : linear (tr_sub u) by move=> c x y; rewrite /tr_sub linearP scalerDl scalerA. have lf2 : linear (fun u => linfun (Linear (lf1 u))). - move => c x y; rewrite -lfunP => v; rewrite add_lfunE scale_lfunE !lfunE /= /tr_sub. + move=> c x y; rewrite -lfunP => v; rewrite add_lfunE scale_lfunE !lfunE /= /tr_sub. by rewrite tr_sym linearP scalerDl scalerA /=; congr (_ + _); rewrite tr_sym. by exists (linfun (Linear lf2)) => u v; rewrite !lfunE. have [Xdual XdualH] : {Xdual : m.-tuple HomV | forall (i : 'I_m) u, Xdual`_i u = (coord X i (vsval u))%:A}. have lg (i : 'I_m) : linear (fun u : Uv => (coord X i (vsval u))%:A : Fv). - by move => c x y; rewrite linearP /= scalerDl scalerA. + by move=> c x y; rewrite linearP /= scalerDl scalerA. exists (mktuple (fun i => linfun (Linear (lg i)))) => i u. by rewrite -tnth_nth tnth_mktuple !lfunE. have [finv finvH] : {finv : 'Hom(HomV, L0) | finv =1 vsval \o (f^-1)%VF}. - by exists (linfun vsval \o f^-1)%VF => u; rewrite comp_lfunE lfunE. + by exists (linfun vsval \o f^-1)%VF => u; rewrite comp_lfunE lfunE. pose Y := map_tuple finv Xdual; exists Y => Und Xb. have Ydef (i : 'I_m) : Y`_i = finv Xdual`_i by rewrite -!tnth_nth tnth_map. have XiU (i : 'I_m) : X`_i \in U by apply/(basis_mem Xb)/mem_nth; rewrite size_tuple. have Xii (i : 'I_m) : coord X i X`_i = 1%:R. by rewrite coord_free ?eqxx //; apply (basis_free Xb). have Xij (i j : 'I_m) : j != i -> coord X i X`_j = 0%:R. - by rewrite coord_free; [move => /negbTE -> | apply (basis_free Xb)]. + by rewrite coord_free; [move=> /negbTE -> | apply (basis_free Xb)]. have Xdualb : basis_of fullv Xdual. suffices Xdualf : free Xdual. rewrite /basis_of Xdualf andbC /= -dimv_leqif_eq ?subvf // eq_sym HomVdim. by move: Xdualf; rewrite /free => /eqP => ->; rewrite size_tuple. - apply/freeP => k sX i. + apply/freeP => k sX i. suffices: (\sum_(i < m) k i *: Xdual`_i) (vsproj U X`_i) = (k i)%:A. by rewrite sX zero_lfunE => /esym /eqP; rewrite scaler_eq0 oner_eq0 orbF => /eqP. rewrite sum_lfunE (bigD1 i) //= scale_lfunE XdualH vsprojK // Xii. @@ -311,10 +311,10 @@ have flimg : limg f = fullv. apply/eqP; rewrite -dimv_leqif_eq ?subvf // limg_dim_eq; last by rewrite finj capv0. by rewrite HomVdim dimvf /Vector.dim. have finvK : cancel finv (f \o vsproj U). - by move => u; rewrite finvH /= vsvalK; apply/limg_lfunVK; rewrite flimg memvf. + by move=> u; rewrite finvH /= vsvalK; apply/limg_lfunVK; rewrite flimg memvf. have finv_inj : (lker finv = 0)%VS by apply/eqP/lker0P/(can_inj finvK). -have finv_limg : limg finv = U. - apply/eqP; rewrite -dimv_leqif_eq; first by rewrite limg_dim_eq ?HomVdim ?finv_inj ?capv0. +have finv_limg : limg finv = U. + apply/eqP; rewrite -dimv_leqif_eq; first by rewrite limg_dim_eq ?HomVdim ?finv_inj ?capv0. by apply/subvP => u /memv_imgP [h _] ->; rewrite finvH subvsP. have Xt (i j : 'I_m) : (f \o vsproj U) Y`_j (vsproj U X`_i) = (tr Y`_j X`_i)%:A. by rewrite fH /tr_sub !vsprojK // Ydef finvH subvsP. @@ -355,7 +355,7 @@ Definition trK : L0 -> L0 -> K' := tr (aspaceOver K L). Lemma trK_ndeg (U : {aspace L0}) : (K <= U)%VS -> (ndeg trK U <-> ndeg (tr (aspaceOver K L)) (aspaceOver K U)). Proof. -move => UsubL; have UU' : aspaceOver K U =i U := mem_aspaceOver UsubL. +move=> UsubL; have UU' : aspaceOver K U =i U := mem_aspaceOver UsubL. split => [ndK l lnz | nd l lnz]. by rewrite UU' => liU; have [k] := ndK l lnz liU; exists k; rewrite UU'. by rewrite -UU' => liU'; have [k] := nd l lnz liU'; exists k; rewrite -UU'. @@ -397,8 +397,8 @@ Lemma int_mod_closed : module (int_closure A L). Proof. have [A0 _] : zmod_closed A := Asubr; split. by rewrite /int_closure mem0v; split => //; apply/int_clos_incl. -move => a k l aA [kI kL] [lI lL]; split; first by rewrite rpredB ?rpredM //; apply/AsubL. -by apply/int_zmod_closed => //; apply/int_mulr_closed => //; apply/int_clos_incl. +move=> a k l aA [kI kL] [lI lL]; split; first by rewrite rpredB ?rpredM //; apply/AsubL. +by apply/int_zmod_closed => //; apply/int_mulr_closed => //; apply/int_clos_incl. Qed. End Modules. @@ -408,7 +408,7 @@ Variable (F0 : fieldType) (E : fieldExtType F0) (I : pred E) (Ifr K : {subfield Hypothesis Isubr : subring_closed I. Hypothesis Iint : int_closed I. Hypothesis Ipid : PID I. -Hypothesis Ifrac : is_frac_field I Ifr. +Hypothesis Ifrac : is_frac_field I Ifr. Hypothesis IsubK : {subset I <= K}. Hypothesis Knd : ndeg (trK Ifr K) K. @@ -422,24 +422,24 @@ suffices FisK (F : fieldType) (L0 : fieldExtType F) (A : pred L0) (L : {subfield have Ifrsub : (Ifr <= K)%VS. apply/subvP=> x /fHk-[fHx fHxx]; rewrite -(mulKf (fH0 x) x). by apply/memvM; rewrite ?memvV; apply/IsubK. - have LK : L =i K := mem_aspaceOver Ifrsub; have Lnd : ndeg (tr L) L by rewrite -trK_ndeg. + have LK : L =i K := mem_aspaceOver Ifrsub; have Lnd : ndeg (tr L) L by rewrite -trK_ndeg. have Ifrac1 : is_frac_field (I : pred L0) 1. - split; first by move => a; rewrite /= trivial_fieldOver; apply/Isub. + split; first by move=> a; rewrite /= trivial_fieldOver; apply/Isub. by exists f => k; split => //; rewrite trivial_fieldOver => /fHk. have [X Xsize [Xf [Xs Xi]]] := FisK _ L0 _ _ Isubr Iint Ipid Ifrac1 Lnd. rewrite -dim_aspaceOver => //; have /eqP <- := Xsize; exists (in_tuple X); split; last first. - split => m; last by move => /Xi; rewrite /int_closure LK. - by rewrite /int_closure -LK; move => /Xs. - move: Xf; rewrite -{1}(in_tupleE X); move => /freeP-XfL0; apply/freeP => k. + split => m; last by move=> /Xi; rewrite /int_closure LK. + by rewrite /int_closure -LK => - /Xs. + move: Xf; rewrite -{1}(in_tupleE X) => - /freeP-XfL0; apply/freeP => k. have [k' kk'] : exists k' : 'I_(size X) -> F, forall i, (k i)%:A = vsval (k' i). by exists (fun i => vsproj Ifr (k i)%:A) => i; rewrite vsprojK ?rpredZ ?mem1v. pose Ainj := fmorph_inj [rmorphism of in_alg E]. - move => kS i; apply/Ainj => {Ainj} /=; rewrite scale0r kk'; apply/eqP. + move=> kS i; apply/Ainj => {Ainj} /=; rewrite scale0r kk'; apply/eqP. rewrite raddf_eq0; last by apply/subvs_inj. by apply/eqP/XfL0; rewrite -{3}kS => {i}; apply/eq_bigr => i _; rewrite -[RHS]mulr_algl kk'. -move => Asubr Aint Apid Afrac1 Lnd; pose n := \dim L; have Amulr : mulr_closed A := Asubr. +move=> Asubr Aint Apid Afrac1 Lnd; pose n := \dim L; have Amulr : mulr_closed A := Asubr. have [A0 _] : zmod_closed A := Asubr; have [Asub1 _] := Afrac1. -have AsubL : {subset A <= L} by move => a /Asub1; apply (subvP (sub1v L) a). +have AsubL : {subset A <= L} by move=> a /Asub1; apply (subvP (sub1v L) a). have [b1 [b1B b1H]] : exists (b1 : n.-tuple L0), [/\ basis_of L b1 & forall i : 'I_n, integral A b1`_i]. pose b0 := vbasis L; have [f /all_and3-[fH0 fHa fHi]] := frac_field_alg_int Asubr Afrac1. @@ -453,7 +453,7 @@ have [b1 [b1B b1H]] : exists (b1 : n.-tuple L0), [/\ basis_of L b1 & have dinA : d \in A by rewrite rpred_prod. rewrite limg_amulr; apply/eqP; rewrite -dimv_leqif_eq; first by rewrite dim_cosetv_unit. by apply/prodv_sub => //; apply/AsubL. - rewrite -lim limg_basis_of //; last by apply/vbasisP. + rewrite -lim limg_basis_of //; last by apply/vbasisP. by have /eqP -> := lker0_amulr dun; rewrite capv0. have [b2 [/andP[/eqP-b2s b2f] b2H]] : exists (b2 : n.-tuple L0), [/\ basis_of L b2 & forall b, b \in L -> integral A b -> forall i, (coord b2 i b)%:A \in A]. @@ -465,55 +465,55 @@ have [b2 [/andP[/eqP-b2s b2f] b2H]] : exists (b2 : n.-tuple L0), [/\ basis_of L by congr (_ + _); apply/big1 => j jneqi; rewrite (oj j jneqi) mulr0. have Mbasis k (X : k.-tuple L0) M : free X -> module A M -> submod M (span_mod A X) -> exists B, basis_of_mod A M B. - move: k X M; elim => [X M _ _ Ms | k IH X M Xf [M0 Mm] Ms]. - by exists [::]; rewrite /basis_of_mod nil_free; move: Ms; rewrite tuple0. + move: k X M; elim=> [X M _ _ Ms | k IH X M Xf [M0 Mm] Ms]. + by exists [::]; rewrite /basis_of_mod nil_free; move: Ms; rewrite tuple0. pose X1 := [tuple of behead X]; pose v := thead X. pose M1 := fun m => M m /\ coord X ord0 m = 0. pose M2 := fun (a : L0) => exists2 m, M m & (coord X ord0 m)%:A = a. have scr r m : r \in A -> exists c, r * m = c *: m. - by move => /Asub1/vlineP[c ->]; exists c; rewrite mulr_algl. + by move=> /Asub1/vlineP[c ->]; exists c; rewrite mulr_algl. have span_coord m : M m -> exists r : (k.+1).-tuple L0, [/\ all A r, m = \sum_(i < k.+1) r`_i * X`_i & forall i, (coord X i m)%:A = r`_i]. have seqF (s : seq L0) : all A s -> exists s', s = [seq c%:A | c <- s']. elim: s => [_| a l IHl /= /andP[/Asub1/vlineP[c ->]]]; first by exists [::]. - by move => /IHl[s' ->]; exists (c :: s'). - move => mM; have := Ms m mM; rewrite /span_mod !size_tuple; move => [r rA rS]. + by move=> /IHl[s' ->]; exists (c :: s'). + move=> mM; have := Ms m mM; rewrite /span_mod !size_tuple => - [r rA rS]. exists r; split => //; have [rF rFr] := seqF r rA => {seqF}; rewrite rFr in rA. have rFs : size rF = k.+1 by rewrite -(size_tuple r) rFr size_map. have -> : m = \sum_(i < k.+1) rF`_i *: X`_i. by rewrite rS; apply/eq_bigr => i _; rewrite rFr (nth_map 0) ?rFs // mulr_algl. - by move => i; rewrite coord_sum_free // rFr (nth_map 0) ?rFs. + by move=> i; rewrite coord_sum_free // rFr (nth_map 0) ?rFs. have [B1 [B1f [B1s B1A]]] : exists B1, basis_of_mod A M1 B1. have X1f : free X1 by move: Xf; rewrite (tuple_eta X) free_cons => /andP[_]. apply/(IH X1) => //. rewrite /module /M1 linear0; split => // a x y aA [xM xfc0] [yM yfc0]. have := Mm a x y aA xM yM; move: aA => /Asub1/vlineP[r] ->; rewrite mulr_algl => msc. by rewrite /M1 linearB linearZ /= xfc0 yfc0 subr0 mulr0. - move => m [mM mfc0]; have := span_coord m mM; move => [r [rA rS rC]]. - move: mfc0 (rC 0) ->; rewrite scale0r; move => r0; rewrite /span_mod size_tuple. + move=> m [mM mfc0]; have := span_coord m mM => - [r [rA rS rC]]. + move: mfc0 (rC 0) ->; rewrite scale0r => - r0; rewrite /span_mod size_tuple. exists [tuple of behead r]; first by apply/allP => a /mem_behead/(allP rA). by rewrite rS big_ord_recl -r0 mul0r add0r; apply/eq_bigr => i _; rewrite !nth_behead. have [a [w wM wC] aG] : exists2 a, M2 a & forall v, M2 v -> exists2 d, d \in A & d * a = v. apply/Apid; split. - move => c [m mM <-]; have := span_coord m mM; move => [r [/all_nthP-rA _ rC]]. + move=> c [m mM <-]; have := span_coord m mM => - [r [/all_nthP-rA _ rC]]. by move: rC ->; apply/rA; rewrite size_tuple. split; first by exists 0 => //; rewrite linear0 scale0r. - move => c x y cA [mx mxM mxC] [my myM myC]; have := Mm c mx my cA mxM myM. + move=> c x y cA [mx mxM mxC] [my myM myC]; have := Mm c mx my cA mxM myM. move: cA => /Asub1/vlineP[r] ->; rewrite !mulr_algl => mC. by exists (r *: mx - my) => //; rewrite linearB linearZ /= scalerBl -scalerA mxC myC. pose Ainj := fmorph_inj [rmorphism of in_alg L0]. have mcM1 m : M m -> exists2 d, d \in A & d * a = (coord X 0 m)%:A. - by move => mM; apply/aG; exists m. + by move=> mM; apply/aG; exists m. case: (eqVneq a 0) => [| an0]. - exists B1; split => //; split => [m mM |]; last by move => m /B1A[mM]. + exists B1; split => //; split => [m mM |]; last by move=> m /B1A[mM]. apply/B1s; split => //; apply/Ainj => /=; have [d _ <-] := mcM1 m mM. - by rewrite a0 mulr0 scale0r. + by rewrite a0 mulr0 scale0r. exists (w :: B1); split. rewrite free_cons B1f andbT; move: an0; apply/contra; move: wC <-. - rewrite -(in_tupleE B1); move => /coord_span ->; apply/eqP. + rewrite -(in_tupleE B1) => - /coord_span ->; apply/eqP. rewrite linear_sum big1 ?scale0r => //= i _; rewrite linearZ /=. by have [_] := B1A B1`_i (mem_nth 0 (ltn_ord _)) => ->; rewrite mulr0. - split => [m mM | m]; last by rewrite in_cons; move => /orP; case => [/eqP ->|/B1A[mM]]. + split => [m mM | m]; last by rewrite in_cons => - /orP; case=> [/eqP ->|/B1A[mM]]. have [d dA dam] := mcM1 m mM; have mdwM1 : M1 (m - d * w). split; [have Mdwm := Mm d w m dA wM mM; have := Mm _ _ _ A0 Mdwm Mdwm |]. by rewrite mul0r sub0r opprB. @@ -525,17 +525,17 @@ have [X Xb] : exists X, basis_of_mod A (int_closure A L) X. apply/(Mbasis _ b2 _ b2f) => [| m [mL mI]]; first by apply/int_mod_closed. pose r : n.-tuple L0 := [tuple (coord b2 i m)%:A | i < n]; rewrite /span_mod size_tuple. exists r; have rci (i : 'I_n) : r`_i = (coord b2 i m)%:A by rewrite -tnth_nth tnth_mktuple. - apply/(all_nthP 0) => i; rewrite size_tuple; move => iB. - by have -> := rci (Ordinal iB); apply/b2H. - move: mL; rewrite -b2s; move => /coord_span ->; apply/eq_bigr => i _. + apply/(all_nthP 0) => i; rewrite size_tuple => - iB. + by have -> := rci (Ordinal iB); apply/b2H. + move: mL; rewrite -b2s => - /coord_span ->; apply/eq_bigr => i _. by rewrite rci mulr_algl. exists X => //; move: Xb => [/eqP-Xf [Xs Xg]]; rewrite -Xf eqn_leq; apply/andP; split. by apply/dimvS/span_subvP => m /Xg[mL _]. have /andP[/eqP-b1s _] := b1B; rewrite -b1s; apply/dimvS/span_subvP => b /tnthP-[i ->] {b}. rewrite (tnth_nth 0); have [r /all_tnthP-rA ->] : span_mod A X b1`_i. by apply/Xs; rewrite /int_closure (basis_mem b1B) ?mem_nth ?size_tuple => //. -apply/rpred_sum => j _; have := rA j; rewrite (tnth_nth 0); move => /Asub1/vlineP[c ->]. -by rewrite mulr_algl; apply/rpredZ/memv_span/mem_nth. +apply/rpred_sum => j _; have := rA j; rewrite (tnth_nth 0) => - /Asub1/vlineP[c ->]. +by rewrite mulr_algl; apply/rpredZ/memv_span/mem_nth. Qed. End BasisLemma.
\ No newline at end of file diff --git a/mathcomp/attic/amodule.v b/mathcomp/attic/amodule.v index d74288c..0a5b655 100644 --- a/mathcomp/attic/amodule.v +++ b/mathcomp/attic/amodule.v @@ -143,7 +143,7 @@ Definition eprodv vs ws := span (Tuple (size_eprodv vs ws)). Local Notation "A :* B" := (eprodv A B) : vspace_scope. Lemma memv_eprod vs ws a b : a \in vs -> b \in ws -> a :* b \in (vs :* ws)%VS. -Proof. +Proof. move=> Ha Hb. rewrite (coord_vbasis Ha) (coord_vbasis Hb). rewrite linear_sum /=; apply: memv_suml => j _. @@ -190,7 +190,7 @@ move=> vs; apply subv_anti; apply/andP; split. apply/eprodvP=> a b Ha; case/vlineP=> k1 ->. by rewrite linearZ /= rmul1 memvZ. apply/subvP=> v Hv. -rewrite (coord_vbasis Hv); apply: memv_suml=> [] [i Hi] _ /=. +rewrite (coord_vbasis Hv); apply: memv_suml=> [] [i Hi] _ /=. apply: memvZ. rewrite -[_`_i]rmul1; apply: memv_eprod; last by apply: memv_line. by apply: vbasis_mem; apply: mem_nth; rewrite size_tuple. @@ -211,9 +211,9 @@ Qed. Lemma eprodv_addl: left_distributive eprodv addv. Proof. move=> vs1 vs2 ws; apply subv_anti; apply/andP; split. - apply/eprodvP=> a b;case/memv_addP=> v1 Hv1 [v2 Hv2 ->] Hb. + apply/eprodvP=> a b; case/memv_addP=> v1 Hv1 [v2 Hv2 ->] Hb. by rewrite rmulD; apply: memv_add; apply: memv_eprod. -apply/subvP=> v; case/memv_addP=> v1 Hv1 [v2 Hv2 ->]. +apply/subvP=> v; case/memv_addP=> v1 Hv1 [v2 Hv2 ->]. apply: memvD. by move: v1 Hv1; apply/subvP; apply: eprodvSl; apply: addvSl. by move: v2 Hv2; apply/subvP; apply: eprodvSl; apply: addvSr. @@ -222,9 +222,9 @@ Qed. Lemma eprodv_sumr vs ws1 ws2 : (vs :* (ws1 + ws2) = vs :* ws1 + vs :* ws2)%VS. Proof. apply subv_anti; apply/andP; split. - apply/eprodvP=> a b Ha;case/memv_addP=> v1 Hv1 [v2 Hv2 ->]. + apply/eprodvP=> a b Ha; case/memv_addP=> v1 Hv1 [v2 Hv2 ->]. by rewrite linearD; apply: memv_add; apply: memv_eprod. -apply/subvP=> v; case/memv_addP=> v1 Hv1 [v2 Hv2 ->]. +apply/subvP=> v; case/memv_addP=> v1 Hv1 [v2 Hv2 ->]. apply: memvD. by move: v1 Hv1; apply/subvP; apply: eprodvSr; apply: addvSl. by move: v2 Hv2; apply/subvP; apply: eprodvSr; apply: addvSr. @@ -244,7 +244,7 @@ Proof. by move=> al; apply: subvf. Qed. Lemma memv_mod_mul : forall ms al m a, modv ms al -> m \in ms -> a \in al -> m :* a \in ms. -Proof. +Proof. move=> ms al m a Hmo Hm Ha; apply: subv_trans Hmo. by apply: memv_eprod. Qed. @@ -262,7 +262,7 @@ Lemma modv_cap : forall ms1 ms2 al , Proof. move=> ms1 ms2 al Hm1 Hm2. by rewrite /modv subv_cap; apply/andP; split; - [apply: subv_trans Hm1 | apply: subv_trans Hm2]; + [apply: subv_trans Hm1 | apply: subv_trans Hm2]; apply: eprodvSl; rewrite (capvSr,capvSl). Qed. @@ -324,7 +324,7 @@ Lemma modf_add : forall f1 f2 ms al, Proof. move=> f1 f2 ms al Hm1 Hm2; apply/allP=> [] [v x]. case/allpairsP=> [[x1 x2] [I1 I2 ->]]; rewrite !lfunE rmulD /=. -move/modfP: Hm1->; try apply: vbasis_mem=>//. +move/modfP: Hm1->; try apply: vbasis_mem=> //. by move/modfP: Hm2->; try apply: vbasis_mem. Qed. @@ -414,7 +414,7 @@ rewrite memv_cap; apply/andP; split. apply: memvB=> //; apply: subv_trans Hsub. by rewrite -If; apply: memv_img; apply: memvf. rewrite memv_ker linearB /= (Himf (f v)) ?subrr // /in_mem /= -If. -by apply: memv_img; apply: memvf. +by apply: memv_img; apply: memvf. Qed. End ModuleRepresentation. diff --git a/mathcomp/attic/fib.v b/mathcomp/attic/fib.v index fefa0d2..a75a226 100644 --- a/mathcomp/attic/fib.v +++ b/mathcomp/attic/fib.v @@ -59,15 +59,15 @@ Proof. by []. Qed. Lemma lin_fib_alt : forall n a b, lin_fib a b n.+2 = lin_fib a b n.+1 + lin_fib a b n. Proof. -case=>//; elim => [//|n IHn] a b. +case=> //; elim=> [//|n IHn] a b. by rewrite lin_fibSS (IHn b (b + a)) lin_fibE. Qed. Lemma fib_is_linear : fib =1 lin_fib 0 1. Proof. -move=>n; elim: n {-2}n (leqnn n)=> [n|n IHn]. +move=> n; elim: n {-2}n (leqnn n)=> [n|n IHn]. by rewrite leqn0; move/eqP=>->. -case=>//; case=>// n0; rewrite ltnS=> ltn0n; rewrite fibSS lin_fib_alt. +case=> //; case=> // n0; rewrite ltnS=> ltn0n; rewrite fibSS lin_fib_alt. by rewrite (IHn _ ltn0n) (IHn _ (ltnW ltn0n)). Qed. @@ -132,7 +132,7 @@ case: m=> [|[|m]] Hm. - by rewrite eq_sym fib_eq1 orbF [1==_]eq_sym; case: eqP. have: 1 < m.+2 < n by []. move/fib_smonotone; rewrite ltn_neqAle; case/andP; move/negPf=> -> _. -case: n Hm=> [|[|n]] //;rewrite ltn_neqAle; case/andP; move/negPf=> ->. +case: n Hm=> [|[|n]] //; rewrite ltn_neqAle; case/andP; move/negPf=> ->. by rewrite andbF. Qed. @@ -154,7 +154,7 @@ case/orP: (Hf _ (dvdn_fib _ _ (dvdn_mulr d (dvdnn k)))). rewrite fib_eq; case/or3P; first by move/eqP<-; rewrite eqxx orbT. by case/andP=>->. by rewrite Hk; case: (d)=> [|[|[|]]]. -rewrite fib_eq; case/or3P; last by case/andP;move/eqP->; case: (d)=> [|[|]]. +rewrite fib_eq; case/or3P; last by case/andP; move/eqP->; case: (d)=> [|[|]]. rewrite -{1}[k]muln1; rewrite eqn_mul2l; case/orP; move/eqP=> HH. by move: Pp; rewrite Hp HH. by rewrite -HH eqxx. @@ -216,9 +216,9 @@ Proof. by []. Qed. Lemma lucas_is_linear : lucas =1 lin_fib 2 1. Proof. -move=>n; elim: n {-2}n (leqnn n)=> [n|n IHn]. +move=> n; elim: n {-2}n (leqnn n)=> [n|n IHn]. by rewrite leqn0; move/eqP=>->. -case=>//; case=>// n0; rewrite ltnS=> ltn0n; rewrite lucasSS lin_fib_alt. +case=> //; case=> // n0; rewrite ltnS=> ltn0n; rewrite lucasSS lin_fib_alt. by rewrite (IHn _ ltn0n) (IHn _ (ltnW ltn0n)). Qed. @@ -329,7 +329,7 @@ Local Notation "''M{' l } " := (seq2matrix _ _ l). Lemma matrix_fib : forall n, 'M{[:: [::(fib n.+2)%:R; (fib n.+1)%:R]; - [::(fib n.+1)%:R; (fib n)%:R]]} = + [::(fib n.+1)%:R; (fib n)%:R]]} = ('M{[:: [:: 1; 1]; [:: 1; 0]]})^+n.+1 :> 'M[R]_(2,2). Proof. diff --git a/mathcomp/attic/forms.v b/mathcomp/attic/forms.v index a1a987b..7098af9 100644 --- a/mathcomp/attic/forms.v +++ b/mathcomp/attic/forms.v @@ -20,7 +20,7 @@ Variable (R : fieldType). Definition r2rv x: 'rV[R^o]_1 := \row_(i < 1) x . Lemma r2rv_morph_p : linear r2rv. -Proof. by move=> k x y; apply/matrixP=> [] [[|i] Hi] j;rewrite !mxE. Qed. +Proof. by move=> k x y; apply/matrixP=> [] [[|i] Hi] j; rewrite !mxE. Qed. Canonical Structure r2rv_morph := Linear r2rv_morph_p. @@ -28,8 +28,8 @@ Definition rv2r (A: 'rV[R]_1): R^o := A 0 0. Lemma r2rv_bij : bijective r2rv. Proof. -exists rv2r; first by move => x; rewrite /r2rv /rv2r /= mxE. -by move => x; apply/matrixP=> i j; rewrite [i]ord1 [j]ord1 /r2rv /rv2r !mxE /=. +exists rv2r; first by move=> x; rewrite /r2rv /rv2r /= mxE. +by move=> x; apply/matrixP=> i j; rewrite [i]ord1 [j]ord1 /r2rv /rv2r !mxE /=. Qed. Canonical Structure RVMixin := Eval hnf in VectMixin r2rv_morph_p r2rv_bij. @@ -48,7 +48,7 @@ Variable (F : fieldType) (V : vectType F). Section SesquiLinearFormDef. Structure fautomorphism:= FautoMorph {fval :> F -> F; - _ : rmorphism fval; + _ : rmorphism fval; _ : bijective fval}. Variable theta: fautomorphism. @@ -72,7 +72,7 @@ Variable f : sesquilinear_form. Lemma bilin1 : forall x, {morph f x : y z / y + z}. Proof. by case f. Qed. Lemma bilin2 : forall x, {morph f ^~ x : y z / y + z}. Proof. by case f. Qed. Lemma bilina1 : forall a x y, f (a *: x) y = a * f x y. Proof. by case f. Qed. -Lemma bilina2 : forall a x y, f x (a *: y) = (theta a) * (f x y). +Lemma bilina2 : forall a x y, f x (a *: y) = (theta a) * (f x y). Proof. by case f. Qed. End SesquiLinearFormDef. @@ -97,9 +97,9 @@ Inductive symmetricf (f : sqlf): Prop := Lemma fsym_f0: forall (f: sqlf) x y, (symmetricf f) -> (f x y = 0 <-> f y x = 0). Proof. -move => f x y ;case; first by move=> [Htheta Hf];split; rewrite Hf. - by move=> [Htheta Hf];split; rewrite Hf; move/eqP;rewrite oppr_eq0; move/eqP->. -move=> Htheta;split; first by rewrite (Htheta y x) => ->; rewrite rmorph0. +move=> f x y; case; first by move=> [Htheta Hf]; split; rewrite Hf. + by move=> [Htheta Hf]; split; rewrite Hf; move/eqP; rewrite oppr_eq0; move/eqP->. +move=> Htheta; split; first by rewrite (Htheta y x) => ->; rewrite rmorph0. by rewrite (Htheta x y) => ->; rewrite rmorph0. Qed. @@ -114,21 +114,21 @@ Section orthogonal. Definition orthogonal x y := f x y = 0. Lemma ortho_sym: forall x y, orthogonal x y <-> orthogonal y x. -Proof. by move=> x y; apply:fsym_f0. Qed. +Proof. by move=> x y; apply: fsym_f0. Qed. Theorem Pythagore: forall u v, orthogonal u v -> f (u+v) (u+v) = f u u + f v v. Proof. -move => u v Huv; case:(ortho_sym u v ) => Hvu _. +move=> u v Huv; case: (ortho_sym u v ) => Hvu _. by rewrite !bilin1 !bilin2 Huv (Hvu Huv) add0r addr0. Qed. Lemma orthoD : forall u v w , orthogonal u v -> orthogonal u w -> orthogonal u (v + w). Proof. -by move => u v w Huv Huw; rewrite /orthogonal bilin1 Huv Huw add0r. +by move=> u v w Huv Huw; rewrite /orthogonal bilin1 Huv Huw add0r. Qed. Lemma orthoZ: forall u v a, orthogonal u v -> orthogonal (a *: u) v. -Proof. by move => u v a Huv; rewrite /orthogonal bilina1 Huv mulr0. Qed. +Proof. by move=> u v a Huv; rewrite /orthogonal bilina1 Huv mulr0. Qed. Variable x:V. @@ -139,7 +139,7 @@ Definition alpha_lfun := (lfun_of_fun alpha). Definition xbar := lker alpha_lfun . Lemma alpha_lin: linear alpha. -Proof. by move => a b c; rewrite /alpha bilin2 bilina1. Qed. +Proof. by move=> a b c; rewrite /alpha bilin2 bilina1. Qed. @@ -151,10 +151,10 @@ Qed. Lemma dim_xbar :forall vs,(\dim vs ) - 1 <= \dim (vs :&: xbar). -Proof. +Proof. move=> vs; rewrite -(addKn 1 (\dim (vs :&: xbar))) addnC leq_sub2r //. have H :\dim (alpha_lfun @: vs )<= 1 by rewrite -(dimR F) -dimvf dimvS // subvf. -by rewrite -(limg_ker_dim alpha_lfun vs)(leq_add (leqnn (\dim(vs :&: xbar)))). +by rewrite -(limg_ker_dim alpha_lfun vs)(leq_add (leqnn (\dim(vs :&: xbar)))). Qed. (* to be improved*) @@ -162,16 +162,16 @@ Lemma xbar_eqvs: forall vs, (forall v , v \in vs -> orthogonal v x )-> \dim (vs move=> vs Hvs. rewrite -(limg_ker_dim alpha_lfun vs). suff-> : \dim (alpha_lfun @: vs) = 0%nat by rewrite addn0. -apply/eqP; rewrite dimv_eq0; apply /vspaceP => w. -rewrite memv0;apply/memv_imgP. +apply/eqP; rewrite dimv_eq0; apply/vspaceP => w. +rewrite memv0; apply/memv_imgP. case e: (w==0). - exists 0; split ;first by rewrite mem0v. + exists 0; split; first by rewrite mem0v. apply sym_eq; rewrite (eqP e). rewrite (lfun_of_funK alpha_lin 0). rewrite /alpha_lfun /alpha /=. - by move:(bilina1 f 0 x x); rewrite scale0r mul0r. -move/eqP:e =>H2;case=> x0 [Hx0 Hw]. -apply H2;rewrite Hw;move: (Hvs x0 Hx0). + by move: (bilina1 f 0 x x); rewrite scale0r mul0r. +move/eqP:e =>H2; case=> x0 [Hx0 Hw]. +apply H2; rewrite Hw; move: (Hvs x0 Hx0). rewrite /orthogonal. by rewrite (lfun_of_funK alpha_lin x0). Qed. @@ -189,9 +189,9 @@ Import GRing.Theory. Lemma f2Q: forall x, Q x + Q x = f x x. Proof. -move=> x; apply:(@addrI _ (Q x + Q x)). +move=> x; apply: (@addrI _ (Q x + Q x)). rewrite !addrA -quadQ -[x + x](scaler_nat 2) quadQ. -by rewrite -mulrA !mulr_natl -addrA. +by rewrite -mulrA !mulr_natl -addrA. Qed. End LinearForm. diff --git a/mathcomp/attic/galgebra.v b/mathcomp/attic/galgebra.v index 4902a47..16bbe1e 100644 --- a/mathcomp/attic/galgebra.v +++ b/mathcomp/attic/galgebra.v @@ -55,11 +55,11 @@ Definition mulrg v1 v2 := GAlg ([ffun g => \sum_(k : gT) (v1 k) * (v2 ((k^-1) * g)%g)]). Lemma addrgA : associative addrg. -Proof. +Proof. by move=> *; apply: val_inj; apply/ffunP=> ?; rewrite !ffunE addrA. Qed. Lemma addrgC : commutative addrg. -Proof. +Proof. by move=> *; apply: val_inj; apply/ffunP=> ?; rewrite !ffunE addrC. Qed. Lemma addr0g : left_id g0 addrg. diff --git a/mathcomp/attic/multinom.v b/mathcomp/attic/multinom.v index 175da6c..96a8071 100644 --- a/mathcomp/attic/multinom.v +++ b/mathcomp/attic/multinom.v @@ -107,7 +107,7 @@ Definition multi_var n (i : 'I_n) := cast_multi (subnK (valP i)) 'X. Notation "'X_ i" := (multi_var i). Lemma inject_is_rmorphism : forall m n, rmorphism (@inject n m). -Proof. +Proof. elim=> // m ihm n /=; have ->: inject m = RMorphism (ihm n) by []. by rewrite -/(_ \o _); apply: rmorphismP. Qed. @@ -132,14 +132,14 @@ Lemma cast_multi_inj n i i' n' (m1 m2 : multi n) cast_multi p1 m1 == cast_multi p2 m2 = (m1 == m2). Proof. have := p2; rewrite -{1}[n']p1; move/eqP; rewrite eqn_add2r. -move=> /eqP /= Eii; move:p2; rewrite Eii=> p2 {Eii}. +move=> /eqP /= Eii; move: p2; rewrite Eii=> p2 {Eii}. have <-: p1 = p2; first exact: nat_irrelevance. apply/idP/idP; last by move/eqP->. -move => Hm {p2}. +move=> Hm {p2}. have : inject i m1 = inject i m2; last first. by move/eqP; rewrite (inj_eq (@inject_inj _ _)). -move: Hm; move:(p1); rewrite -p1 => p2. -rewrite (_ : p2 = erefl (i+n)%N); last exact: nat_irrelevance. +move: Hm; move: (p1); rewrite -p1 => p2. +rewrite (_ : p2 = erefl (i+n)%N); last exact: nat_irrelevance. by move/eqP. Qed. @@ -195,8 +195,8 @@ Lemma interp_cast_multi n n' m (nltn' : n <= n') : Proof. move=> dmltn; have dmltn' := (leq_trans dmltn nltn'). elim: m nltn' dmltn dmltn'. -+ move=> a /= nltn' dmltn dmltn'. - apply/eqP; rewrite /multiC. ++ move=> a /= nltn' dmltn dmltn'. + apply/eqP; rewrite /multiC. by rewrite cast_multi_add /= cast_multi_inj. + move=> N /= nltn' dmltn dmltn'. move: (refl_equal (_ N < n')) (refl_equal (_ N < n)). diff --git a/mathcomp/attic/tutorial.v b/mathcomp/attic/tutorial.v index 332d841..b2025a7 100644 --- a/mathcomp/attic/tutorial.v +++ b/mathcomp/attic/tutorial.v @@ -59,7 +59,7 @@ Lemma andb_sym2 : forall A B : bool, A && B -> B && A. Proof. by case; case. Qed. Lemma andb_sym3 : forall A B : bool, A && B -> B && A. -Proof. by do 2! case. Qed. +Proof. by do 2!case. Qed. Variables (C D : Prop) (hC : C) (hD : D). Check (and C D). diff --git a/mathcomp/character/character.v b/mathcomp/character/character.v index 0738b14..6408b0b 100644 --- a/mathcomp/character/character.v +++ b/mathcomp/character/character.v @@ -382,7 +382,7 @@ Lemma prod_repr_lin n2 (rG1 : reprG 1) (rG2 : reprG n2) : {in G, forall x, let cast_n2 := esym (mul1n n2) in prod_repr rG1 rG2 x = castmx (cast_n2, cast_n2) (rG1 x 0 0 *: rG2 x)}. Proof. -move=> x Gx /=; set cast_n2 := esym _; rewrite /prod_repr /= !mxE !lshift0. +move=> x Gx /=; set cast_n2 := esym _; rewrite /prod_repr /= !mxE !lshift0. apply/matrixP=> i j; rewrite castmxE /=. do 2![rewrite mxE; case: splitP => [? ? | []//]]. by congr ((_ *: rG2 x) _ _); apply: val_inj. @@ -511,7 +511,7 @@ Proof. by move=> A B; rewrite /xcfun linearB mulmxBl !mxE. Qed. Canonical xcfun_additive phi := Additive (xcfun_is_additive phi). Lemma xcfunZr a phi A : xcfun phi (a *: A) = a * xcfun phi A. -Proof. by rewrite /xcfun linearZ -scalemxAl mxE. Qed. +Proof. by rewrite /xcfun linearZ -scalemxAl mxE. Qed. (* In order to add a second canonical structure on xcfun *) Definition xcfun_r_head k A phi := let: tt := k in xcfun phi A. @@ -530,7 +530,7 @@ Lemma xcfunZl a phi A : xcfun (a *: phi) A = a * xcfun phi A. Proof. rewrite /xcfun !mxE big_distrr; apply: eq_bigr => i _ /=. by rewrite !mxE cfunE mulrCA. -Qed. +Qed. Lemma xcfun_repr n rG A : xcfun (@cfRepr n rG) A = \tr (gring_op rG A). Proof. @@ -1431,7 +1431,7 @@ Proof. apply/eqP/andP=> [|[/eqP-> /pred2P[]-> //]]; last by rewrite !scale0r. move/(congr1 (cfdotr 'chi__)) => /= eq_ai_bj. move: {eq_ai_bj}(eq_ai_bj i) (esym (eq_ai_bj j)); rewrite !cfdotZl !cfdot_irr. -by rewrite !mulr_natr !mulrb !eqxx eq_sym orbC; case: ifP => _ -> //= ->. +by rewrite !mulr_natr !mulrb !eqxx eq_sym orbC; case: ifP => _ -> //= ->. Qed. Lemma eq_signed_irr (s t : bool) i j : @@ -1624,7 +1624,7 @@ have:= (normC_sum_upper _ Kx) i; rewrite !cfunE => -> // {i Ci} i _. have chi_i_ge0: 0 <= '[chi, 'chi_i]. by rewrite Cnat_ge0 ?Cnat_cfdot_char_irr. by rewrite !cfunE normrM (normr_idP _) ?ler_wpmul2l ?char1_ge_norm ?irr_char. -Qed. +Qed. Lemma TI_cfker_irr : \bigcap_i cfker 'chi[G]_i = [1]. Proof. @@ -1710,7 +1710,7 @@ Lemma cfRes_irr_irr chi : chi \is a character -> 'Res[H] chi \in irr H -> chi \in irr G. Proof. have [sHG /char_reprP[rG ->] | not_sHG Nchi] := boolP (H \subset G). - rewrite -(cfRepr_sub _ sHG) => /irr_reprP[rH irrH def_rH]; apply/irr_reprP. + rewrite -(cfRepr_sub _ sHG) => /irr_reprP[rH irrH def_rH]; apply/irr_reprP. suffices /subg_mx_irr: mx_irreducible (subg_repr rG sHG) by exists rG. by apply: mx_rsim_irr irrH; apply/cfRepr_rsimP/eqP. rewrite cfResEout // => /irrP[j Dchi_j]; apply/lin_char_irr/cfRes_lin_lin=> //. @@ -2152,7 +2152,7 @@ Lemma cfBigdprod_eq1 phi : Proof. move=> Nphi; set Phi := cfBigdprod defG phi. apply/eqP/eqfun_inP=> [Phi1 i Pi | phi1]; last first. - by apply: big1 => i /phi1->; rewrite rmorph1. + by apply: big1 => i /phi1->; rewrite rmorph1. have Phi1_1: Phi 1%g = 1 by rewrite Phi1 cfun1E group1. have nz_Phi1: Phi 1%g != 0 by rewrite Phi1_1 oner_eq0. have [_ <-] := cfBigdprodK nz_Phi1 Pi. @@ -2484,7 +2484,7 @@ Lemma lin_char_group G : {morph cF : u v / (u * v)%g >-> (u * v)%R}, forall k, {morph cF : u / (u^+ k)%g >-> u ^+ k}, {morph cF: u / u^-1%g >-> u^-1%CF} - & {mono cF: u / #[u]%g >-> #[u]%CF} ]}}. + & {mono cF: u / #[u]%g >-> #[u]%CF} ]}}. Proof. pose linT := {i : Iirr G | 'chi_i \is a linear_char}. pose cF (u : linT) := 'chi_(sval u). @@ -2567,7 +2567,7 @@ Variables (n : nat) (rG : mx_representation [fieldType of algC] G n). Definition det_repr_mx x : 'M_1 := (\det (rG x))%:M. -Fact det_is_repr : mx_repr G det_repr_mx. +Fact det_is_repr : mx_repr G det_repr_mx. Proof. split=> [|g h Gg Gh]; first by rewrite /det_repr_mx repr_mx1 det1. by rewrite /det_repr_mx repr_mxM // det_mulmx !mulmxE scalar_mxM. @@ -2725,7 +2725,7 @@ apply/eqP/is_scalar_mxP=> [|[c rG_c]]. by case/max_cfRepr_norm_scalar=> // c; exists c. rewrite -(sqrCK (char1_ge0 (cfRepr_char rG))) normC_def; congr (sqrtC _). rewrite expr2 -{2}(mulgV x) -char_inv ?cfRepr_char ?cfunE ?groupM ?groupV //. -rewrite Gx group1 repr_mx1 repr_mxM ?repr_mxV ?groupV // !mulrb rG_c. +rewrite Gx group1 repr_mx1 repr_mxM ?repr_mxV ?groupV // !mulrb rG_c. by rewrite invmx_scalar -scalar_mxM !mxtrace_scalar mulrnAr mulrnAl mulr_natl. Qed. diff --git a/mathcomp/character/classfun.v b/mathcomp/character/classfun.v index 54cbc41..81c26ab 100644 --- a/mathcomp/character/classfun.v +++ b/mathcomp/character/classfun.v @@ -464,7 +464,7 @@ Notation "{ 'in' CFD , 'isometry' tau , 'to' CFR }" := (at level 0, format "{ 'in' CFD , 'isometry' tau , 'to' CFR }") : type_scope. -Section ClassFun. +Section ClassFun. Variables (gT : finGroupType) (G : {group gT}). Implicit Types (A B : {set gT}) (H K : {group gT}) (phi psi xi : 'CF(G)). @@ -1123,7 +1123,7 @@ Qed. Lemma eq_pairwise_orthogonal R S : perm_eq R S -> pairwise_orthogonal R = pairwise_orthogonal S. Proof. -apply: catCA_perm_subst R S => R S S'. +apply: catCA_perm_subst R S => R S S'. rewrite !pairwise_orthogonal_cat !orthogonal_catr (orthogonal_sym R S) -!andbA. by do !bool_congr. Qed. @@ -1201,7 +1201,7 @@ Qed. Lemma sub_orthonormal S1 S2 : {subset S1 <= S2} -> uniq S1 -> orthonormal S2 -> orthonormal S1. Proof. -move=> sS12 uniqS1 /orthonormalP[_ oS1]. +move=> sS12 uniqS1 /orthonormalP[_ oS1]. by apply/orthonormalP; split; last apply: sub_in2 sS12 _ _. Qed. @@ -1386,7 +1386,7 @@ Qed. Lemma cfRes_is_multiplicative : multiplicative cfRes. Proof. -split=> [phi psi|]; [apply/cfunP=> x | exact: cfRes_cfun1]. +split=> [phi psi|]; [apply/cfunP=> x | exact: cfRes_cfun1]. by rewrite !cfunElock mulrnAr mulrnAl -mulrnA mulnb andbb. Qed. Canonical cfRes_rmorphism := AddRMorphism cfRes_is_multiplicative. @@ -1489,7 +1489,7 @@ Canonical cfMorph_linear := Linear cfMorph_is_linear. Fact cfMorph_is_multiplicative : multiplicative cfMorph. Proof. -split=> [phi psi|]; [apply/cfunP=> x | exact: cfMorph_cfun1]. +split=> [phi psi|]; [apply/cfunP=> x | exact: cfMorph_cfun1]. by rewrite !cfunElock mulrnAr mulrnAl -mulrnA mulnb andbb. Qed. Canonical cfMorph_rmorphism := AddRMorphism cfMorph_is_multiplicative. @@ -1567,7 +1567,7 @@ Canonical cfIsom_unlockable := [unlockable of cfIsom]. Lemma cfIsomE phi x : x \in G -> cfIsom phi (f x) = phi x. Proof. -move=> Gx; rewrite unlock cfMorphE //= /restrm ?defG ?cfRes_id ?invmE //. +move=> Gx; rewrite unlock cfMorphE //= /restrm ?defG ?cfRes_id ?invmE //. by rewrite -defR mem_morphim. Qed. @@ -1751,7 +1751,7 @@ Lemma sub_cfker_mod (A : {set gT}) K (psi : 'CF(G / K)) : (A \subset cfker (psi %% K)) = (A / K \subset cfker psi)%g. Proof. by move=> nsKG nKA; rewrite -(quotientSGK nKA) ?quotient_cfker_mod ?cfker_mod. -Qed. +Qed. Lemma cfker_quo H phi : H <| G -> H \subset cfker (phi) -> cfker (phi / H) = (cfker phi / H)%g. @@ -1872,7 +1872,7 @@ Proof. by apply: cforder_inj_rmorph cfSdprod_inj. Qed. End SDproduct. -Section DProduct. +Section DProduct. Variables (gT : finGroupType) (G K H : {group gT}). Hypothesis KxH : K \x H = G. @@ -2065,7 +2065,7 @@ by rewrite -[P j](mem_enum P) r_j. Qed. Lemma cfBigdprodi_iso i : P i -> isometry (@cfBigdprodi i). -Proof. by move=> Pi phi psi; rewrite cfDprodl_iso Pi !cfRes_id. Qed. +Proof. by move=> Pi phi psi; rewrite cfDprodl_iso Pi !cfRes_id. Qed. Definition cfBigdprod (phi : forall i, 'CF(A i)) := \prod_(i | P i) cfBigdprodi (phi i). @@ -2321,7 +2321,7 @@ Lemma cfIndM phi psi: H \subset G -> Proof. move=> HsG; apply/cfun_inP=> x Gx; rewrite !cfIndE // !cfunE !cfIndE // -mulrA. congr (_ * _); rewrite mulr_suml; apply: eq_bigr=> i iG; rewrite !cfunE. -case:(boolP (x^i \in H))=> xJi; last by rewrite cfun0gen ?mul0r ?genGid. +case: (boolP (x^i \in H))=> xJi; last by rewrite cfun0gen ?mul0r ?genGid. by rewrite !cfResE //; congr (_*_); rewrite cfunJgen ?genGid. Qed. diff --git a/mathcomp/character/inertia.v b/mathcomp/character/inertia.v index 3890fdd..9ae289d 100644 --- a/mathcomp/character/inertia.v +++ b/mathcomp/character/inertia.v @@ -277,7 +277,7 @@ Qed. Lemma inertia_scale a phi : 'I[phi] \subset 'I[a *: phi]. Proof. -apply/subsetP=> x /setIdP[nHx /eqP Iphi_x]. +apply/subsetP=> x /setIdP[nHx /eqP Iphi_x]. by rewrite inE nHx linearZ /= Iphi_x. Qed. @@ -497,7 +497,7 @@ Lemma cfResInd j: Proof. case/andP=> [sHG /subsetP nHG]. rewrite (reindex_inj invg_inj); apply/cfun_inP=> x Hx. -rewrite cfResE // cfIndE // ?cfunE ?sum_cfunE; congr (_ * _). +rewrite cfResE // cfIndE // ?cfunE ?sum_cfunE; congr (_ * _). by apply: eq_big => [y | y Gy]; rewrite ?cfConjgE ?groupV ?invgK ?nHG. Qed. @@ -933,7 +933,7 @@ have AtoB_P s (psi := 'chi_s) (chi := 'Ind[G] psi): s \in calA -> - rewrite !constt_Ind_Res => sHt; have [r sGr] := constt_cfInd_irr s sTG. have rTs: s \in irr_constt ('Res[T] 'chi_r) by rewrite -constt_Ind_Res. have NrT: 'Res[T] 'chi_r \is a character by rewrite cfRes_char ?irr_char. - have rHt: t \in irr_constt ('Res[H] 'chi_r). + have rHt: t \in irr_constt ('Res[H] 'chi_r). by have:= constt_Res_trans NrT rTs sHt; rewrite cfResRes. pose e := '['Res[H] 'chi_r, theta]; set f := '['Res[H] psi, theta]. have DrH: 'Res[H] 'chi_r = e *: \sum_(xi <- (theta ^: G)%CF) xi. @@ -956,7 +956,7 @@ have AtoB_P s (psi := 'chi_s) (chi := 'Ind[G] psi): s \in calA -> rewrite (mono_lerif (ler_pmul2r (irr1_gt0 t))); apply: lerif_eq. by rewrite /e -(cfResRes _ sHT) ?cfdot_Res_ge_constt. have [_ /esym] := lerif_trans ub_chi_r lb_chi_r; rewrite eqxx. - by case/andP=> /eqP Dchi /eqP->;rewrite cfIirrE -/chi -?Dchi ?mem_irr. + by case/andP=> /eqP Dchi /eqP->; rewrite cfIirrE -/chi -?Dchi ?mem_irr. have part_c: {in calA, forall s (chi := 'Ind[G] 'chi_s), [predI irr_constt ('Res[T] chi) & calA] =i pred1 s}. - move=> s As chi s1; have [irr_chi _ /eqP Dchi_theta] := AtoB_P s As. @@ -987,14 +987,14 @@ exists s => //; have [/irrP[r1 DsG] _ _] := AtoB_P s As. by apply/eqP; rewrite /AtoB -constt_Ind_Res DsG irrK constt_irr in rTs *. Qed. -End ConsttInertiaBijection. +End ConsttInertiaBijection. Section ExtendInvariantIrr. Variable gT : finGroupType. Implicit Types G H K L M N : {group gT}. -Section ConsttIndExtendible. +Section ConsttIndExtendible. Variables (G N : {group gT}) (t : Iirr N) (c : Iirr G). Let theta := 'chi_t. @@ -1174,7 +1174,7 @@ have [inj_Mphi | /injectivePn[i [j i'j eq_mm_ij]]] := boolP (injectiveb mmLth). rewrite eqn_leq lt0n (contraNneq _ (irr1_neq0 s)); last first. by rewrite -(cfRes1 L) DthL cfunE => ->; rewrite !mul0r. rewrite -leq_sqr -leC_nat natrX -(ler_pmul2r (irr1_gt0 p0)) -mulrA mul1r. - have ->: e%:R * 'chi_p0 1%g = 'Res[L] theta 1%g by rewrite DthL cfunE. + have ->: e%:R * 'chi_p0 1%g = 'Res[L] theta 1%g by rewrite DthL cfunE. rewrite cfRes1 -(ler_pmul2l (gt0CiG K L)) -cfInd1 // -/phi. rewrite -card_quotient // -card_Iirr_abelian // mulr_natl. rewrite ['Ind phi]cfun_sum_cfdot sum_cfunE (bigID (mem (codom mmLth))) /=. @@ -1497,7 +1497,7 @@ have kerN_mu_t: N \subset cfker (mu / 'chi_t)%R. rewrite -subsetIidl -cfker_Res ?lin_charW ?rpred_div ?rmorph_div //. by rewrite /= uNlam tNlam divrr ?lin_char_unitr ?cfker_cfun1. have co_e_mu_t: coprime e #[(mu / 'chi_t)%R]%CF. - suffices dv_o_mu_t: #[(mu / 'chi_t)%R]%CF %| 'o(mu)%CF * 'o('chi_t)%CF. + suffices dv_o_mu_t: #[(mu / 'chi_t)%R]%CF %| 'o(mu)%CF * 'o('chi_t)%CF. by rewrite (coprime_dvdr dv_o_mu_t) // coprime_mulr o_mu co_e_lam. rewrite !cfDet_order_lin //; apply/dvdn_cforderP=> x Gx. rewrite invr_lin_char // !cfunE exprMn -rmorphX {2}mulnC. @@ -1607,7 +1607,7 @@ apply: (iffP idP) => [not_chijK1 | [i nzi ->]]; last first. have /neq0_has_constt[i chijKi]: 'Res[K] 'chi_j != 0 by apply: Res_irr_neq0. have nz_i: i != 0. by apply: contraNneq not_chijK1 => i0; rewrite constt0_Res_cfker // -i0. -have /irrP[k def_chik] := irr_induced_Frobenius_ker nz_i. +have /irrP[k def_chik] := irr_induced_Frobenius_ker nz_i. have: '['chi_j, 'chi_k] != 0 by rewrite -def_chik -cfdot_Res_l. by rewrite cfdot_irr pnatr_eq0; case: (j =P k) => // ->; exists i. Qed. diff --git a/mathcomp/character/integral_char.v b/mathcomp/character/integral_char.v index ad2980f..16e3b51 100644 --- a/mathcomp/character/integral_char.v +++ b/mathcomp/character/integral_char.v @@ -77,7 +77,7 @@ exists QnC => [// nuQn|]. rewrite span_seq1 in genQn. exists w => // hT H phi Nphi x x_dv_n. apply: sig_eqW; have [rH ->] := char_reprP Nphi. -have [Hx | /cfun0->] := boolP (x \in H); last by exists 0; rewrite rmorph0. +have [Hx | /cfun0->] := boolP (x \in H); last by exists 0; rewrite rmorph0. have [e [_ [enx1 _] [-> _] _]] := repr_rsim_diag rH Hx. have /fin_all_exists[k Dk] i: exists k, e 0 i = z ^+ k. have [|k ->] := (prim_rootP prim_z) (e 0 i); last by exists k. @@ -657,14 +657,14 @@ have{defQn} imItoQ: calG = ItoQ @: {:I}. have injItoQ: {in {:I} &, injective ItoQ}. move=> k1 k2 _ _ /(congr1 (fun nu : gal_of _ => nu eps))/eqP. by apply: contraTeq; rewrite !defItoQ (eq_prim_root_expr pr_eps) !modn_small. -pose pi1 := \prod_(s in S) chi s; pose pi2 := \prod_(s in S) `|chi s| ^+ 2. +pose pi1 := \prod_(s in S) chi s; pose pi2 := \prod_(s in S) `|chi s| ^+ 2. have Qpi1: pi1 \in Crat. have [a Da] := QnGg _ Nchi; suffices ->: pi1 = QnC (galNorm 1 {:Qn} a). have /vlineP[q ->] := mem_galNorm galQn (memvf a). by rewrite rmorphZ_num rmorph1 mulr1 Crat_rat. rewrite /galNorm rmorph_prod -/calG imItoQ big_imset //=. rewrite /pi1 -(eq_bigl _ _ imItoS) -big_uniq // big_map big_filter /=. - apply: eq_bigr => k _; have [nuC DnuC] := gQnC (ItoQ k); rewrite DnuC Da. + apply: eq_bigr => k _; have [nuC DnuC] := gQnC (ItoQ k); rewrite DnuC Da. have [r ->] := char_sum_irr Nchi; rewrite !sum_cfunE rmorph_sum. apply: eq_bigr => i _; have /QnGg[b Db] := irr_char i. have Lchi_i: 'chi_i \is a linear_char by rewrite irr_cyclic_lin. diff --git a/mathcomp/character/mxabelem.v b/mathcomp/character/mxabelem.v index c178d75..92fdb0e 100644 --- a/mathcomp/character/mxabelem.v +++ b/mathcomp/character/mxabelem.v @@ -247,7 +247,7 @@ Lemma dprod_rowg m1 m2 (A : 'M[F]_(m1, n)) (B : 'M[F]_(m2, n)) : Proof. rewrite (sameP mxdirect_addsP eqP) -trivg_rowg rowgI => /eqP tiAB. by rewrite -cprod_rowg dprodEcp. -Qed. +Qed. Lemma bigcprod_rowg m I r (P : pred I) (A : I -> 'M[F]_n) (B : 'M[F]_(m, n)) : (\sum_(i <- r | P i) A i :=: B)%MS -> @@ -356,7 +356,7 @@ move=> m_gt0 n_gt0 q_gt1; apply/eqP; rewrite eqn_dvd; apply/andP; split. apply/exponentP=> x _; apply/matrixP=> i j; rewrite mulmxnE !mxE. by rewrite -mulr_natr -Zp_nat_mod // modnn mulr0. pose cmx1 := const_mx 1%R : 'M['Z_q]_(m, n). -apply: dvdn_trans (dvdn_exponent (in_setT cmx1)). +apply: dvdn_trans (dvdn_exponent (in_setT cmx1)). have/matrixP/(_ (Ordinal m_gt0))/(_ (Ordinal n_gt0))/eqP := expg_order cmx1. by rewrite mulmxnE !mxE -order_dvdn order_Zp1 Zp_cast. Qed. @@ -374,7 +374,7 @@ have ->: (q ^ (m * n))%N = #|G| by rewrite cardsT card_matrix card_ord Zp_cast. rewrite max_card_abelian //= -grank_abelian //= -/G. pose B : {set 'M['Z_q]_(m, n)} := [set delta_mx ij.1 ij.2 | ij : 'I_m * 'I_n]. suffices ->: G = <<B>>. - have ->: (m * n)%N = #|{: 'I_m * 'I_n}| by rewrite card_prod !card_ord. + have ->: (m * n)%N = #|{: 'I_m * 'I_n}| by rewrite card_prod !card_ord. exact: leq_trans (grank_min _) (leq_imset_card _ _). apply/setP=> v; rewrite inE (matrix_sum_delta v). rewrite group_prod // => i _; rewrite group_prod // => j _. @@ -770,7 +770,7 @@ move: {2}_.+1 (ltnSn (n + #|H|)) {rG G sHG}(subg_repr _ _) => m. elim: m gT H pH => // m IHm gT' G pG in n n_gt0 *; rewrite ltnS => le_nG_m rG. apply/eqP=> Gregular; have irrG: mx_irreducible rG. apply/mx_irrP; split=> // U modU; rewrite -mxrank_eq0 -lt0n => Unz. - rewrite /row_full eqn_leq rank_leq_col leqNgt; apply/negP=> ltUn. + rewrite /row_full eqn_leq rank_leq_col leqNgt; apply/negP=> ltUn. have: rfix_mx (submod_repr modU) G != 0. by apply: IHm => //; apply: leq_trans le_nG_m; rewrite ltn_add2r. by rewrite -mxrank_eq0 (rfix_submod modU) // Gregular capmx0 linear0 mxrank0. @@ -857,7 +857,7 @@ Theorem extraspecial_repr_structure (sS : irrType F S) : exists2 w, primitive_root_of_unity p w & forall i, phi i z = (w ^+ i.+1)%:M & forall i, irr_degree (iphi i) = (p ^ n)%N] - & #|sS| = (p ^ n.*2 + p.-1)%N]. + & #|sS| = (p ^ n.*2 + p.-1)%N]. Proof. have [[defPhiS defS'] prZ] := esS; set linS := linear_irr sS. have nb_lin: #|linS| = (p ^ n.*2)%N. @@ -916,7 +916,7 @@ have phi_ze e: phi (z ^+ e)%g = (w ^+ e)%:M. by rewrite /phi irr_center_scalar ?groupX ?irr_modeX. have wp1: w ^+ p = 1 by rewrite -irr_modeX // -ozp expg_order irr_mode1. have injw: {in 'Z(S) &, injective (irr_mode i0)}. - move=> x y Zx Zy /= eq_xy; have [[Sx _] [Sy _]] := (setIP Zx, setIP Zy). + move=> x y Zx Zy /= eq_xy; have [[Sx _] [Sy _]] := (setIP Zx, setIP Zy). apply: mx_faithful_inj (fful_nlin _ nlin_i0) _ _ Sx Sy _. by rewrite !{1}irr_center_scalar ?eq_xy; first by split. have prim_w e: 0 < e < p -> p.-primitive_root (w ^+ e). diff --git a/mathcomp/character/mxrepresentation.v b/mathcomp/character/mxrepresentation.v index 6dd4eec..0c1d4c1 100644 --- a/mathcomp/character/mxrepresentation.v +++ b/mathcomp/character/mxrepresentation.v @@ -712,7 +712,7 @@ Definition regular_mx x : 'M[R]_nG := Lemma regular_mx_repr : mx_repr G regular_mx. Proof. split=> [|x y Gx Gy]; apply/row_matrixP=> i; rewrite !rowK. - by rewrite mulg1 row1 gring_valK. + by rewrite mulg1 row1 gring_valK. by rewrite row_mul rowK -rowE rowK mulgA gring_indexK // groupM ?enum_valP. Qed. Canonical regular_repr := MxRepresentation regular_mx_repr. @@ -1453,7 +1453,7 @@ Lemma cyclic_mx_sub m u (W : 'M_(m, n)) : Proof. move=> modU Wu; rewrite genmxE; apply/row_subP=> i. by rewrite row_mul mul_rV_lin1 /= mxmodule_envelop // vec_mxK row_sub. -Qed. +Qed. Lemma hom_cyclic_mx u f : (u <= dom_hom_mx f)%MS -> (cyclic_mx u *m f :=: cyclic_mx (u *m f))%MS. @@ -1585,7 +1585,7 @@ Proof. move=> isoUV [modU nzU simU]; have [f injf homUf defV] := isoUV. split=> [||W modW sWV nzW]; first by rewrite (mx_iso_module isoUV). by rewrite -(eqmx_eq0 defV) -(mul0mx n f) (can_eq (mulmxK injf)). -rewrite -defV -[W](mulmxKV injf) submxMr //; set W' := W *m _. +rewrite -defV -[W](mulmxKV injf) submxMr //; set W' := W *m _. have sW'U: (W' <= U)%MS by rewrite -[U](mulmxK injf) submxMr ?defV. rewrite (simU W') //; last by rewrite -(can_eq (mulmxK injf)) mul0mx mulmxKV. rewrite hom_mxmodule ?dom_hom_invmx // -[W](mulmxKV injf) submxMr //. @@ -1640,7 +1640,7 @@ Proof. move=> simU simV homUf sUfV nzUf; have [modU _ _] := simU. have [g invg homUg defUg] := mx_Schur_inj_iso simU homUf nzUf. exists g => //; apply: mx_Schur_onto; rewrite ?defUg //. -by rewrite -!submx0 defUg in nzUf *. +by rewrite -!submx0 defUg in nzUf *. Qed. (* A boolean test for module isomorphism that is only valid for simple *) @@ -1998,7 +1998,7 @@ Proof. have [I [W isoUW ->]] := component_mx_def => simV homWf sVWf. have [i _ _|i _ ] := hom_mxsemisimple_iso simV _ homWf sVWf. exact: mx_iso_simple (simU). -exact: mx_iso_trans. +exact: mx_iso_trans. Qed. Lemma component_mx_iso V : mxsimple V -> (V <= compU)%MS -> mx_iso U V. @@ -2189,7 +2189,7 @@ have modMS: mxmodule (M :&: S)%MS by rewrite capmx_module ?subSocle_module. have [J /= U simU defMS _] := mxsemisimpleS modMS (capmxSr M S) ssimS. rewrite -defMS; apply/sumsmx_subP=> j _. have [sUjV sUjS]: (U j <= M /\ U j <= S)%MS. - by apply/andP; rewrite -sub_capmx -defMS (sumsmx_sup j). + by apply/andP; rewrite -sub_capmx -defMS (sumsmx_sup j). have [W P_W isoWU] := subSocle_iso (simU j) sUjS. rewrite (sumsmx_sup W) // sub_capmx sUjV mx_iso_component //. exact: socle_simple. @@ -2360,7 +2360,7 @@ suffices defM: (M == 1%:M)%MS by rewrite (eqmxP defM) mxrank1 in rM. case: (mx_abs_irrW absG) => _ _ ->; rewrite ?submx1 -?mxrank_eq0 ?rM //. apply/mxmoduleP=> x Gx; suffices: is_scalar_mx (rG x). by case/is_scalar_mxP=> a ->; rewrite mul_mx_scalar scalemx_sub. -apply: (mx_abs_irr_cent_scalar absG). +apply: (mx_abs_irr_cent_scalar absG). by apply/centgmxP=> y Gy; rewrite -!repr_mxM // (centsP cGG). Qed. @@ -3442,7 +3442,7 @@ rewrite inE -val_eqE /= PackSocleK eq_sym. by apply/component_mx_isoP; rewrite ?subgK //; apply: Clifford_iso. Qed. -Lemma Clifford_astab1 (W : sH) : 'C[W | 'Cl] = rstabs rG W. +Lemma Clifford_astab1 (W : sH) : 'C[W | 'Cl] = rstabs rG W. Proof. apply/setP=> x; rewrite !inE; apply: andb_id2l => Gx. rewrite sub1set inE (sameP eqP socleP) !val_Clifford_act //. @@ -3638,7 +3638,7 @@ have UvalI: (valI <= U)%MS. exists (valI *m in_factmod _ 1%:M *m in_submod _ 1%:M) => [||x Gx]. - apply: (@addIn (\rank (U :&: V) + \rank V)%N); rewrite genmxE addnA addnCA. rewrite /nI genmxE !{1}mxrank_in_factmod 2?(addsmx_idPr _) //. - by rewrite -mxrank_sum_cap addnC. + by rewrite -mxrank_sum_cap addnC. - rewrite -kermx_eq0; apply/rowV0P=> u; rewrite (sameP sub_kermxP eqP). rewrite mulmxA -in_submodE mulmxA -in_factmodE -(inj_eq val_submod_inj). rewrite linear0 in_submodK ?in_factmod_eq0 => [Vvu|]; last first. @@ -4329,7 +4329,7 @@ rewrite -ker_irr_comp_op sub_capmx (sameP sub_kermxP eqP) mul_vec_lin. by rewrite 2!linearB /= eqAB subrr linear0 addmx_sub ?eqmx_opp /=. Qed. -Lemma rank_irr_comp : \rank 'R_iG = \rank E_G. +Lemma rank_irr_comp : \rank 'R_iG = \rank E_G. Proof. symmetry; rewrite -{1}irr_comp_envelop; apply/mxrank_injP. by rewrite ker_irr_comp_op. @@ -4544,7 +4544,7 @@ have [_ nG'G] := andP (der_normal 1 G); apply/eqP; rewrite -card_quotient //. have cGqGq: abelian (G / G^`(1))%g by apply: sub_der1_abelian. have F'Gq: [char F]^'.-group (G / G^`(1))%g by apply: morphim_pgroup. have splitGq: group_splitting_field (G / G^`(1))%G. - exact: quotient_splitting_field. + exact: quotient_splitting_field. rewrite -(sum_irr_degree sGq) // -sum1_card. pose rG (j : sGq) := morphim_repr (socle_repr j) nG'G. have irrG j: mx_irreducible (rG j) by apply/morphim_mx_irr; apply: socle_irr. @@ -4785,7 +4785,7 @@ suffices defU: (\sum_i oapp W_ V i :=: U)%MS. apply: eqmx_trans defVW; rewrite (bigD1 None) //=; apply/eqmxP. have [i0 _ | I0] := pickP I. by rewrite (reindex some) ?addsmxS ?defW //; exists (odflt i0) => //; case. -rewrite big_pred0 //; last by case => // /I0. +rewrite big_pred0 //; last by case=> // /I0. by rewrite !addsmxS ?sub0mx // -defW big_pred0. Qed. @@ -4841,7 +4841,7 @@ have sVS: (V <= \sum_(W : sG | has (fun Mi => Mi <= W) Ms) W)%MS. rewrite [V](big_nth 0) big_mkord; apply/sumsmx_subP=> i _. set Mi := Ms`_i; have MsMi: Mi \in Ms by apply: mem_nth. have simMi := simMs _ MsMi; have S_Mi := component_socle sG simMi. - rewrite (sumsmx_sup (PackSocle S_Mi)) ?PackSocleK //. + rewrite (sumsmx_sup (PackSocle S_Mi)) ?PackSocleK //. by apply/hasP; exists Mi; rewrite ?component_mx_id. have [W MsW isoWM] := subSocle_iso simM (submx_trans sMV sVS). have [Mi MsMi sMiW] := hasP MsW; apply/hasP; exists Mi => //. @@ -4908,7 +4908,7 @@ Lemma map_mx_faithful : mx_faithful rGf = mx_faithful rG. Proof. by rewrite /mx_faithful rker_map. Qed. Lemma map_mx_abs_irr : - mx_absolutely_irreducible rGf = mx_absolutely_irreducible rG. + mx_absolutely_irreducible rGf = mx_absolutely_irreducible rG. Proof. by rewrite /mx_absolutely_irreducible -map_enveloping_algebra_mx row_full_map. Qed. @@ -5284,7 +5284,7 @@ rewrite {1}mulSn -Bfree -{1}rBj {rBj} -mxrank_disjoint_sum. rewrite mxrankS // addsmx_sub -[m.+1]/(1 + m)%N; apply/andP; split. apply/row_subP=> k; rewrite row_mul mul_rV_lin1 /=. apply: eq_row_sub (mxvec_index (lshift _ 0) k) _. - by rewrite !rowK mxvecK mxvecE mxE row_mxEl mxE -row_mul mul1mx. + by rewrite !rowK mxvecK mxvecE mxE row_mxEl mxE -row_mul mul1mx. apply/row_subP; case/mxvec_indexP=> i k. apply: eq_row_sub (mxvec_index (rshift 1 i) k) _. by rewrite !rowK !mxvecE 2!mxE row_mxEr. diff --git a/mathcomp/character/vcharacter.v b/mathcomp/character/vcharacter.v index 5b1ff05..97ad828 100644 --- a/mathcomp/character/vcharacter.v +++ b/mathcomp/character/vcharacter.v @@ -248,7 +248,7 @@ by rewrite !cfunE rpredB // rpred_Cnat ?Cnat_char1. Qed. Lemma Cint_cfdot_vchar_irr i phi : phi \in 'Z[irr G] -> '[phi, 'chi_i] \in Cint. -Proof. +Proof. case/vcharP=> chi1 Nchi1 [chi2 Nchi2 ->]. by rewrite cfdotBl rpredB // rpred_Cnat ?Cnat_cfdot_char_irr. Qed. @@ -310,7 +310,7 @@ have notSnu0: 0 \notin map nu S. apply: contra notS0 => /mapP[phi Sphi /esym/eqP]. by rewrite -cfnorm_eq0 Inu ?Z_S // cfnorm_eq0 => /eqP <-. apply/pairwise_orthogonalP; split; first by rewrite /= notSnu0 map_inj_in_uniq. -move=>_ _ /mapP[phi Sphi ->] /mapP[psi Spsi ->]. +move=> _ _ /mapP[phi Sphi ->] /mapP[psi Spsi ->]. by rewrite (inj_in_eq inj_nu) // Inu ?Z_S //; apply: dotSS. Qed. @@ -553,9 +553,9 @@ Lemma isometry_in_zchar nu : {in S &, isometry nu} -> {in 'Z[S] &, isometry nu}. Proof. move=> Inu _ _ /zchar_nth_expansion[u Zu ->] /zchar_nth_expansion[v Zv ->]. rewrite !raddf_sum; apply: eq_bigr => j _ /=. -rewrite !cfdot_suml; apply: eq_bigr => i _. +rewrite !cfdot_suml; apply: eq_bigr => i _. by rewrite !raddfZ_Cint //= !cfdotZl !cfdotZr Inu ?mem_nth. -Qed. +Qed. End Isometries. @@ -702,7 +702,7 @@ have [j def_chi_j]: {j | 'chi_j = phi}. exists j; rewrite ?cfkerEirr def_chi_j //; apply/subsetP => x /setDP[Gx notHx]. rewrite inE cfunE def_phi // cfunE -/a cfun1E // Gx mulr1 cfIndE //. rewrite big1 ?mulr0 ?add0r // => y Gy; apply/theta0/(contra _ notHx) => Hxy. -by rewrite -(conjgK y x) cover_imset -class_supportEr mem_imset2 ?groupV. +by rewrite -(conjgK y x) cover_imset -class_supportEr mem_imset2 ?groupV. Qed. End MoreVchar. @@ -732,7 +732,7 @@ Proof. by rewrite !inE mem_irr. Qed. Lemma dirrP f : reflect (exists b : bool, exists i, f = (-1) ^+ b *: 'chi_i) (f \in dirr G). Proof. -apply: (iffP idP) => [| [b [i ->]]]; last by rewrite dirr_sign irr_dirr. +apply: (iffP idP) => [| [b [i ->]]]; last by rewrite dirr_sign irr_dirr. case/orP=> /irrP[i Hf]; first by exists false, i; rewrite scale1r. by exists true, i; rewrite scaleN1r -Hf opprK. Qed. diff --git a/mathcomp/field/algC.v b/mathcomp/field/algC.v index 2e8ce3f..b045c07 100644 --- a/mathcomp/field/algC.v +++ b/mathcomp/field/algC.v @@ -152,7 +152,7 @@ have sposDl x y : lt 0 x -> le 0 y -> lt 0 (x + y). have sqrtJ z : le 0 z -> conj (sqrt z) = sqrt z. rewrite posE -{2}[z]sqrtK -subr_eq0 -mulrBr mulf_eq0 subr_eq0. by case/pred2P=> ->; rewrite ?rmorph0. - case/andP=> nz_x /sqrtJ uJ /sqrtJ vJ. + case/andP=> nz_x /sqrtJ uJ /sqrtJ vJ. set u := sqrt x in uJ; set v := sqrt y in vJ; pose w := u + i * v. have ->: x + y = w * conj w. rewrite rmorphD rmorphM iJ uJ vJ mulNr mulrC -subr_sqr sqrMi opprK. @@ -171,7 +171,7 @@ have normD x y : le (norm (x + y)) (norm x + norm y). by have /andP[]: lt 0 (u + v) by rewrite sposDl // /lt nz_u. have le_sqr u v: conj u = u -> le 0 v -> le (u ^+ 2) (v ^+ 2) -> le u v. move=> Ru v_ge0; have [-> // | nz_u] := eqVneq u 0. - have [u_gt0 | u_le0 _] := boolP (lt 0 u). + have [u_gt0 | u_le0 _] := boolP (lt 0 u). by rewrite leB (leB u) subr_sqr mulrC addrC; apply: sposM; apply: sposDl. rewrite leB posD // posE normN -addr_eq0; apply/eqP. rewrite /lt nz_u posE -subr_eq0 in u_le0; apply: (mulfI u_le0). @@ -184,7 +184,7 @@ have normD x y : le (norm (x + y)) (norm x + norm y). by rewrite rmorphD !rmorphM !conjK addrC mulrC (mulrC y). rewrite -mulr2n -mulr_natr exprMn normK -natrX mulr_natr sqrrD mulrACA. rewrite -rmorphM (mulrC y x) addrAC leB mulrnA mulr2n opprD addrACA. - rewrite subrr addr0 {2}(mulrC x) rmorphM mulrACA -opprB addrAC -sqrrB -sqrMi. + rewrite subrr addr0 {2}(mulrC x) rmorphM mulrACA -opprB addrAC -sqrrB -sqrMi. apply/posP; exists (i * (x * conj y - y * conj x)); congr (_ * _). rewrite !(rmorphM, rmorphB) iJ !conjK mulNr -mulrN opprB. by rewrite (mulrC x) (mulrC y). @@ -421,7 +421,7 @@ Lemma conjK : involutive conj. Proof. by move=> u; apply: CtoL_inj; rewrite !LtoC_K conjL_K. Qed. Fact conj_nt : ~ conj =1 id. -Proof. +Proof. have [i i2]: exists i : type, i ^+ 2 = -1. have [i] := @solve_monicpoly _ 2 (nth 0 [:: -1 : type]) isT. by rewrite !big_ord_recl big_ord0 /= mul0r mulr1 !addr0; exists i. @@ -988,7 +988,7 @@ Proof. rewrite unfold_in CintEge0 ?divr_ge0 ?invr_ge0 ?ler0n // !pnatr_eq0. have [-> | nz_p] := altP eqP; first by rewrite dvd0n. apply/CnatP/dvdnP=> [[q def_q] | [q ->]]; exists q. - by apply/eqP; rewrite -eqC_nat natrM -def_q divfK ?pnatr_eq0. + by apply/eqP; rewrite -eqC_nat natrM -def_q divfK ?pnatr_eq0. by rewrite [num in num / _]natrM mulfK ?pnatr_eq0. Qed. @@ -1213,10 +1213,10 @@ Section AutLmodC. Variables (U V : lmodType algC) (f : {additive U -> V}). -Lemma raddfZ_Cnat a u : a \in Cnat -> f (a *: u) = a *: f u. +Lemma raddfZ_Cnat a u : a \in Cnat -> f (a *: u) = a *: f u. Proof. by case/CnatP=> n ->; apply: raddfZnat. Qed. -Lemma raddfZ_Cint a u : a \in Cint -> f (a *: u) = a *: f u. +Lemma raddfZ_Cint a u : a \in Cint -> f (a *: u) = a *: f u. Proof. by case/CintP=> m ->; rewrite !scaler_int raddfMz. Qed. End AutLmodC. diff --git a/mathcomp/field/algebraics_fundamentals.v b/mathcomp/field/algebraics_fundamentals.v index 405a5d9..891bce5 100644 --- a/mathcomp/field/algebraics_fundamentals.v +++ b/mathcomp/field/algebraics_fundamentals.v @@ -561,7 +561,7 @@ have add_Rroot xR p c: {yR | extendsR xR yR & has_Rroot xR p c -> root_in yR p}. have [m [le_vm le_wm _]] := maxn3 (n_ v) (n_ w) 0%N; rewrite !(posE m) //. by rewrite /nlim limN -ltr_normr (ltr_trans e_gt0) ?v_gte ?ab_le. have posD v w: lt 0 v -> lt 0 w -> lt 0 (v + w). - move=> /posP[m [d d_gt0 v_gtd]] /posP[n [e e_gt0 w_gte]]. + move=> /posP[m [d d_gt0 v_gtd]] /posP[n [e e_gt0 w_gte]]. apply/posP; exists (maxn m n), (d + e) => [|k]; first exact: addr_gt0. rewrite geq_max => /andP[le_mk le_nk]; rewrite /nlim /lim. have ->: q_ (v + w) = q_ v + q_ w. diff --git a/mathcomp/field/algnum.v b/mathcomp/field/algnum.v index c75bead..fcd6c2d 100644 --- a/mathcomp/field/algnum.v +++ b/mathcomp/field/algnum.v @@ -271,7 +271,7 @@ pose z_s := [seq coord b ij.2 (tnth s ij.1) | ij : IzT]. pose rank2 j i: Iz := enum_rank (i, j); pose val21 (p : Iz) := (enum_val p).1. pose inQzs w := [forall j, Crat_span z_s (coord b j w)]. have enum_pairK j: {in predT, cancel (rank2 j) val21}. - by move=> i; rewrite /val21 enum_rankK. + by move=> i; rewrite /val21 enum_rankK. have Qz_Zs a: inQzs (\sum_(i < m) s`_i *~ a i). apply/forallP=> j; apply/Crat_spanP; rewrite /in_Crat_span size_map -cardE. exists [ffun ij => (a (val21 ij))%:Q *+ ((enum_val ij).2 == j)]. diff --git a/mathcomp/field/closed_field.v b/mathcomp/field/closed_field.v index 8a2e304..05cf477 100644 --- a/mathcomp/field/closed_field.v +++ b/mathcomp/field/closed_field.v @@ -98,9 +98,9 @@ rewrite -cons_poly_def /lift polyseq_cons /nilp. case pn0: (_ == _) => /=; last by move->; rewrite -cons_poly_def. move=> _; rewrite polyseqC. case c0: (_==_)=> /=. - move: pn0; rewrite (eqP c0) size_poly_eq0; move/eqP->. - by apply:val_inj=> /=; rewrite polyseq_cons // polyseq0. -by rewrite mul0r add0r; apply:val_inj=> /=; rewrite polyseq_cons // /nilp pn0. + move: pn0; rewrite (eqP c0) size_poly_eq0; move/eqP->. + by apply: val_inj=> /=; rewrite polyseq_cons // polyseq0. +by rewrite mul0r add0r; apply: val_inj=> /=; rewrite polyseq_cons // /nilp pn0. Qed. Fixpoint lead_coefT (k : term F -> fF) p := @@ -181,11 +181,11 @@ Qed. Lemma rpoly_map_mul (t : term F) (p : polyF) (rt : rterm t) : rpoly (map (Mul t) p) = rpoly p. -Proof. +Proof. by rewrite /rpoly all_map /= (@eq_all _ _ (@rterm _)) // => x; rewrite /= rt. Qed. -Lemma rmulpT (p q : polyF) : rpoly p -> rpoly q -> rpoly (mulpT p q). +Lemma rmulpT (p q : polyF) : rpoly p -> rpoly q -> rpoly (mulpT p q). Proof. elim: p q=> [|a p ihp] q rp rq //=; move: rp; case/andP=> ra rp /=. apply: rsumpT; last exact: ihp. @@ -206,7 +206,7 @@ Lemma eval_natmulpT (p : polyF) (n : nat) (e : seq F) : eval_poly e (natmulpT n p) = (eval_poly e p) *+ n. Proof. elim: p; rewrite //= ?mul0rn // => c p ->. -rewrite mulrnDl mulr_natl polyC_muln; congr (_+_). +rewrite mulrnDl mulr_natl polyC_muln; congr (_+_). by rewrite -mulr_natl mulrAC -mulrA mulr_natl mulrC. Qed. @@ -245,16 +245,16 @@ move=> Pk q sq cq c qq r n e /=. elim: n c qq r k Pk e => [|n Pn] c qq r k Pk e; rewrite sizeTP. case ltrq : (_ < _); first by rewrite /= ltrq /= -Pk. rewrite lead_coefTP => [|a p]; rewrite Pk. - rewrite ?(eval_mulpT,eval_amulXnT,eval_sumpT,eval_opppT) //=. + rewrite ?(eval_mulpT,eval_amulXnT,eval_sumpT,eval_opppT) //=. by rewrite ltrq //= mul_polyC ?(mul0r,add0r). by symmetry; rewrite Pk ?(eval_mulpT,eval_amulXnT,eval_sumpT, eval_opppT). case ltrq : (_<_); first by rewrite /= ltrq Pk. rewrite lead_coefTP. - rewrite Pn ?(eval_mulpT,eval_amulXnT,eval_sumpT,eval_opppT) //=. + rewrite Pn ?(eval_mulpT,eval_amulXnT,eval_sumpT,eval_opppT) //=. by rewrite ltrq //= mul_polyC ?(mul0r,add0r). rewrite -/redivp_rec_loopT => x e'. -rewrite Pn; last by move=>*; rewrite Pk. -symmetry; rewrite Pn; last by move=>*; rewrite Pk. +rewrite Pn; last by move=> *; rewrite Pk. +symmetry; rewrite Pn; last by move=> *; rewrite Pk. rewrite Pk ?(eval_lift,eval_mulpT,eval_amulXnT,eval_sumpT,eval_opppT). by rewrite mul_polyC ?(mul0r,add0r). Qed. @@ -267,7 +267,7 @@ Lemma redivp_rec_loopT_qf (q : polyF) (sq : nat) (cq : term F) Proof. elim: n q sq cq k c qq r => [|n ihn] q sq cq k c qq r kP rq rcq rqq rr. apply: sizeT_qf=> // n; case: (_ < _); first by apply: kP; rewrite // rqq rr. - apply: lead_coefT_qf=> // l rl; apply: kP. + apply: lead_coefT_qf=> // l rl; apply: kP. by rewrite /= ?(rsumpT,rmulpT,ramulXnT,rpoly_map_mul) //= rcq. apply: sizeT_qf=> // m; case: (_ < _); first by apply: kP => //=; rewrite rqq rr. apply: lead_coefT_qf=> // l rl; apply: ihn; rewrite //= ?rcq //. @@ -290,7 +290,7 @@ Definition redivpT (p : polyF) (k : nat * polyF * polyF -> fF) Lemma redivp_rec_loopP (q : {poly F}) (c : nat) (qq r : {poly F}) (n : nat) : redivp_rec q c qq r n = redivp_rec_loop q (size q) (lead_coef q) c qq r n. -Proof. by elim: n c qq r => [| n Pn] c qq r //=; rewrite Pn. Qed. +Proof. by elim: n c qq r => [| n Pn] c qq r //=; rewrite Pn. Qed. Lemma redivpTP (k : nat * polyF * polyF -> formula F) : (forall c qq r e, @@ -346,12 +346,12 @@ Lemma rgcdp_loopP (k : polyF -> formula F) : Proof. move=> Pk n p q e. elim: n p q e => /= [| m Pm] p q e. - rewrite redivpTP; last by move=>*; rewrite !isnullP eval_lift. + rewrite redivpTP; last by move=> *; rewrite !isnullP eval_lift. rewrite isnullP eval_lift; case: (_ == 0); first by rewrite Pk. - by rewrite redivpTP; last by move=>*; rewrite Pk. -rewrite redivpTP; last by move=>*; rewrite !isnullP eval_lift. + by rewrite redivpTP; last by move=> *; rewrite Pk. +rewrite redivpTP; last by move=> *; rewrite !isnullP eval_lift. rewrite isnullP eval_lift; case: (_ == 0); first by rewrite Pk. -by rewrite redivpTP; move=>*; rewrite ?Pm !eval_lift. +by rewrite redivpTP => - *; rewrite ?Pm !eval_lift. Qed. Lemma rgcdp_loopT_qf (p : polyF) (k : polyF -> formula F) (q : polyF) (n : nat) : @@ -371,16 +371,16 @@ Definition rgcdpT (p : polyF) k (q : polyF) : fF := (fun b => if b then (k q1) else (sizeT (fun n => (rgcdp_loopT p1 k n q1)) p1)) p1 - in (lt_sizeT (fun b => if b then (aux q k p) else (aux p k q)) p q). + in (lt_sizeT (fun b => if b then (aux q k p) else (aux p k q)) p q). Lemma rgcdpTP (k : seq (term F) -> formula F) : (forall p e, qf_eval e (k p) = qf_eval e (k (lift (eval_poly e p)))) -> forall p q e, qf_eval e (rgcdpT p k q) = qf_eval e (k (lift (rgcdp (eval_poly e p) (eval_poly e q)))). Proof. -move=> Pk p q e; rewrite /rgcdpT !sizeTP; case lqp: (_ < _). +move=> Pk p q e; rewrite /rgcdpT !sizeTP; case lqp: (_ < _). rewrite isnullP; case q0: (_ == _); first by rewrite Pk (eqP q0) rgcdp0. - rewrite sizeTP rgcdp_loopP => [|e' p']; last by rewrite Pk. + rewrite sizeTP rgcdp_loopP => [|e' p']; last by rewrite Pk. by rewrite /rgcdp lqp q0. rewrite isnullP; case p0: (_ == _); first by rewrite Pk (eqP p0) rgcd0p. rewrite sizeTP rgcdp_loopP => [|e' p']; last by rewrite Pk. @@ -391,7 +391,7 @@ Lemma rgcdpT_qf (p : polyF) (k : polyF -> formula F) (q : polyF) : (forall r, rpoly r -> qf (k r)) -> rpoly p -> rpoly q -> qf (rgcdpT p k q). Proof. move=> kP rp rq; apply: sizeT_qf=> // n; apply: sizeT_qf=> // m. -by case:(_ < _); +by case: (_ < _); apply: isnull_qf=> //; case; do ?apply: kP=> //; apply: sizeT_qf=> // n'; apply: rgcdp_loopT_qf. Qed. @@ -467,7 +467,7 @@ Proof. by move=> *; rewrite sizeTP rgdcop_recTP 1?Pk. Qed. Lemma rgdcopT_qf (p : polyF) (k : polyF -> formula F) (q : polyF) : (forall r, rpoly r -> qf (k r)) -> rpoly p -> rpoly q -> qf (rgdcopT p k q). -Proof. +Proof. by move=> kP rp rq; apply: sizeT_qf => // n; apply: rgdcop_recT_qf. Qed. @@ -505,16 +505,16 @@ Lemma abstrXP (i : nat) (t : term F) (e : seq F) (x : F) : rterm t -> (eval_poly e (abstrX i t)).[x] = eval (set_nth 0 e i x) t. Proof. elim: t => [n | r | n | t tP s sP | t tP | t tP n | t tP s sP | t tP | t tP n] h. -- move=> /=; case ni: (_ == _); +- move=> /=; case ni: (_ == _); rewrite //= ?(mul0r,add0r,addr0,polyC1,mul1r,hornerX,hornerC); by rewrite // nth_set_nth /= ni. - by rewrite /= mul0r add0r hornerC. - by rewrite /= mul0r add0r hornerC. -- by case/andP: h => *; rewrite /= eval_sumpT hornerD tP ?sP. +- by case/andP: h => *; rewrite /= eval_sumpT hornerD tP ?sP. - by rewrite /= eval_opppT hornerN tP. - by rewrite /= eval_natmulpT hornerMn tP. - by case/andP: h => *; rewrite /= eval_mulpT hornerM tP ?sP. -- by []. +- by []. - elim: n h => [|n ihn] rt; first by rewrite /= expr0 mul0r add0r hornerC. by rewrite /= eval_mulpT exprSr hornerM ihn // mulrC tP. Qed. @@ -576,7 +576,7 @@ Proof. move=> e i x; elim=> [|p ps ihps] //=. case/andP=> rp rps; rewrite rootE abstrXP //. constructor; first by case=> -> hps; rewrite eqxx /=; apply/ihps. -by case/andP; move/eqP=> -> psr; split=> //; apply/ihps. +by case/andP; move/eqP=> -> psr; split=> //; apply/ihps. Qed. Lemma holds_conjn (e : seq F) (i : nat) (x : F) (ps : seq (term F)) : @@ -587,10 +587,10 @@ Proof. elim: ps => [|p ps ihps] //=. case/andP=> rp rps; rewrite rootE abstrXP //. constructor; first by case=> /eqP-> hps /=; apply/ihps. -by case/andP=> pr psr; split; first apply/eqP=> //; apply/ihps. +by case/andP=> pr psr; split; first apply/eqP=> //; apply/ihps. Qed. -Lemma holds_ex_elim : GRing.valid_QE_proj ex_elim. +Lemma holds_ex_elim: GRing.valid_QE_proj ex_elim. Proof. move=> i [ps qs] /= e; case/andP=> /= rps rqs. rewrite ex_elim_seqP big_map. @@ -616,7 +616,7 @@ case g0: (\big[(@rgcdp F)/0%:P]_(j <- map (eval_poly e \o abstrX i) ps) j == 0). exists x; do 2?constructor=> //; last by apply/holds_conjn. apply/holds_conj; rewrite //= -root_biggcd. by rewrite (eqp_root (aux _ _ _ )) (eqP g0) root0. -apply:(iffP (closed_rootP axiom _)); case=> x Px; exists x; move:Px => //=. +apply: (iffP (closed_rootP axiom _)); case=> x Px; exists x; move: Px => //=. rewrite (eqp_root (eqp_rgdco_gdco _ _)) root_gdco ?g0 //. rewrite -(eqp_root (aux _ _ _ )) root_biggcd abstrX_bigmul eval_bigmul. rewrite -bigmap_id root_bigmul; case/andP=> psr qsr. @@ -629,7 +629,7 @@ constructor; first by apply/holds_conj. by apply/holds_conjn. Qed. -Lemma wf_ex_elim : GRing.wf_QE_proj ex_elim. +Lemma wf_ex_elim: GRing.wf_QE_proj ex_elim. Proof. by move=> i bc /= rbc; apply: ex_elim_qf. Qed. Definition closed_fields_QEMixin := diff --git a/mathcomp/field/countalg.v b/mathcomp/field/countalg.v index 46ce3a3..95d28cb 100644 --- a/mathcomp/field/countalg.v +++ b/mathcomp/field/countalg.v @@ -957,7 +957,7 @@ pose incEp E i j := let v := map_poly (EtoInc E i) (tagged E j) in if decode j is [:: i1; k] then if i1 == i then odflt v (unpickle k) else v - else v. + else v. pose fix E_ i := if i is i1.+1 then MkExt _ (incEp (E_ i1) i1) else MkExt F \0. pose E i := tag (E_ i); pose Krep := {i : nat & E i}. pose fix toEadd i k : {rmorphism E i -> E (k + i)%N} := diff --git a/mathcomp/field/falgebra.v b/mathcomp/field/falgebra.v index 23f5cba..995dbee 100644 --- a/mathcomp/field/falgebra.v +++ b/mathcomp/field/falgebra.v @@ -109,7 +109,7 @@ have amE u v : am u v = v * u by rewrite lfunE. pose uam := [pred u | lker (am u) == 0%VS]. pose vam := [fun u => if u \in uam then (am u)^-1%VF 1 else u]. have vamKl: {in uam, left_inverse 1 vam *%R}. - by move=> u Uu; rewrite /= Uu -amE lker0_lfunVK. + by move=> u Uu; rewrite /= Uu -amE lker0_lfunVK. exists uam vam => // [u Uu | u v [_ uv1] | u /negbTE/= -> //]. by apply/(lker0P Uu); rewrite !amE -mulrA vamKl // mul1r mulr1. by apply/lker0P=> w1 w2 /(congr1 (am v)); rewrite !amE -!mulrA uv1 !mulr1. @@ -747,7 +747,7 @@ Qed. Lemma memvV A u : (u^-1 \in A) = (u \in A). Proof. -suffices{u} invA: invr_closed A by apply/idP/idP=> /invA; rewrite ?invrK. +suffices{u} invA: invr_closed A by apply/idP/idP=> /invA; rewrite ?invrK. move=> u Au; have [Uu | /invr_out-> //] := boolP (u \is a GRing.unit). rewrite memvE -(limg_ker0 _ _ (lker0_amulr Uu)) limg_line lfunE /= mulVr //. suff ->: (amulr u @: A)%VS = A by rewrite -memvE -algid_eq1 (unitr_algid1 Au). @@ -1202,7 +1202,7 @@ Notation "''AHom' ( aT , rT )" := (ahom aT rT) : type_scope. Notation "''AEnd' ( aT )" := (ahom aT aT) : type_scope. Delimit Scope lrfun_scope with AF. -Bind Scope lrfun_scope with ahom. +Bind Scope lrfun_scope with ahom. Notation "\1" := (@id_ahom _ _) : lrfun_scope. Notation "f \o g" := (comp_ahom f g) : lrfun_scope. diff --git a/mathcomp/field/fieldext.v b/mathcomp/field/fieldext.v index 234183e..8d2af81 100644 --- a/mathcomp/field/fieldext.v +++ b/mathcomp/field/fieldext.v @@ -870,7 +870,7 @@ Definition vspaceOver V := <<vbasis V : seq L_F>>%VS. Lemma mem_vspaceOver V : vspaceOver V =i (F * V)%VS. Proof. -move=> y; apply/idP/idP; last rewrite unlock; move=> /coord_span->. +move=> y; apply/idP/idP; last rewrite unlock; move/coord_span->. rewrite (@memv_suml F0 L) // => i _. by rewrite memv_mul ?subvsP // vbasis_mem ?memt_nth. rewrite memv_suml // => ij _; rewrite -tnth_nth; set x := tnth _ ij. @@ -1538,7 +1538,7 @@ have nzL1: L1 != 0 by rewrite -(inj_eq toPinj) L1K /toPF raddf0 oner_eq0. pose mulM := ComRingMixin mulA mulC mul1 mulD nzL1. pose rL := ComRingType (RingType vL mulM) mulC. have mulZl: GRing.Lalgebra.axiom mul. - move=> a x y; apply: toPinj; rewrite toL_K /toPF !linearZ /= -!/(toPF _). + move=> a x y; apply: toPinj; rewrite toL_K /toPF !linearZ /= -!/(toPF _). by rewrite toL_K -scalerAl modp_scalel. have mulZr: GRing.Algebra.axiom (LalgType F rL mulZl). by move=> a x y; rewrite !(mulrC x) scalerAl. @@ -1569,6 +1569,8 @@ Qed. (*Coq 8.3 processes this shorter proof correctly, but then crashes on Qed. In Coq 8.4 Qed takes about 18s. + In Coq 8.7, everything seems to be all right *) +(* Lemma Xirredp_FAdjoin' (F : fieldType) (p : {poly F}) : irreducible_poly p -> {L : fieldExtType F & Vector.dim L = (size p).-1 & @@ -1609,7 +1611,7 @@ have unitE: GRing.Field.mixin_of urL. have /Bezout_eq1_coprimepP[u upq1]: coprimep p q. have /contraR := irr_p _ _ (dvdp_gcdl p q); apply. have: size (gcdp p q) <= size q by apply: leq_gcdpr. - rewrite leqNgt;apply:contra;move/eqp_size ->. + rewrite leqNgt; apply: contra; move/eqp_size ->. by rewrite (polySpred nz_p) ltnS size_poly. suffices: x * toL u.2 = 1 by exists (toL u.2); rewrite mulrC. congr (poly_rV _); rewrite toL_K modp_mul mulrC (canRL (addKr _) upq1). diff --git a/mathcomp/field/galois.v b/mathcomp/field/galois.v index 17fefe6..eaf5709 100644 --- a/mathcomp/field/galois.v +++ b/mathcomp/field/galois.v @@ -227,7 +227,7 @@ Qed. Lemma kHomExtendP : kHom K <<E; x>> kHomExtend. Proof. have [fM idKf] := kHomP homKf. -apply/kHomP; split=> [|z Kz]; last by rewrite kHomExtend_id ?(subvP sKE) ?idKf. +apply/kHomP; split=> [|z Kz]; last by rewrite kHomExtend_id ?(subvP sKE) ?idKf. move=> _ _ /Fadjoin_polyP[p Ep ->] /Fadjoin_polyP[q Eq ->]. rewrite -hornerM !kHomExtend_poly ?rpredM // -hornerM; congr _.[_]. apply/polyP=> i; rewrite coef_map !coefM /= linear_sum /=. @@ -255,7 +255,7 @@ Proof. by move=> sKE eq_fg; rewrite !kAutE (kHom_eq sKE eq_fg) (eq_in_limg eq_fg). Qed. -Lemma kAutfE K f : kAut K {:L} f = kHom K {:L} f. +Lemma kAutfE K f : kAut K {:L} f = kHom K {:L} f. Proof. by rewrite kAutE subvf andbT. Qed. Lemma kAut1E E (f : 'AEnd(L)) : kAut 1 E f = (f @: E <= E)%VS. @@ -438,7 +438,7 @@ Lemma normal_field_splitting (F : fieldType) (L : fieldExtType F) : SplittingField.axiom L. Proof. move=> normalL; pose r i := sval (sigW (normalL 1%AS (tnth (vbasis {:L}) i))). -have sz_r i: size (r i) <= \dim {:L}. +have sz_r i: size (r i) <= \dim {:L}. rewrite -ltnS -(size_prod_XsubC _ id) /r; case: sigW => _ /= /eqP <-. rewrite size_minPoly ltnS; move: (tnth _ _) => x. by rewrite adjoin_degreeE dimv1 divn1 dimvS // subvf. @@ -615,7 +615,7 @@ have [f homLf fxz]: exists2 f : 'End(Lz), kHom 1 imL f & f (inLz x) = z. have [q2 Dq2]: exists q2, q1z = map_poly inLz q2. exists (\poly_(i < size q1z) (sval (sig_eqW (F0q1z i)))%:A). rewrite -{1}[q1z]coefK; apply/polyP=> i; rewrite coef_map !{1}coef_poly. - by case: sig_eqW => a; case: ifP; rewrite /= ?rmorph0 ?linearZ ?rmorph1. + by case: sig_eqW => a; case: ifP; rewrite /= ?rmorph0 ?linearZ ?rmorph1. rewrite Dq2 dvdp_map minPoly_dvdp //. apply/polyOverP=> i; have[a] := F0q1z i. rewrite -(rmorph1 [rmorphism of inLz]) -linearZ. @@ -771,7 +771,7 @@ Variable V : {vspace L}. (* The <<_>>, which becomes redundant when V is a {subfield L}, ensures that *) (* the argument of [subg _] is syntactically a group. *) Inductive gal_of := Gal of [subg kAEnd_group 1 <<V>> / kAEndf (agenv V)]. -Definition gal (f : 'AEnd(L)) := Gal (subg _ (coset _ f)). +Definition gal (f : 'AEnd(L)) := Gal (subg _ (coset _ f)). Definition gal_sgval x := let: Gal u := x in u. Fact gal_sgvalK : cancel gal_sgval Gal. Proof. by case. Qed. @@ -1009,7 +1009,7 @@ Qed. Lemma galois_connection K E (A : {set gal_of E}): (K <= E)%VS -> (A \subset 'Gal(E / K)) = (K <= fixedField A)%VS. Proof. -move=> sKE; apply/idP/idP => [/fixedFieldS | /(galS E)]. +move=> sKE; apply/idP/idP => [/fixedFieldS | /(galS E)]. by apply: subv_trans; apply galois_connection_subv. by apply: subset_trans; apply: galois_connection_subset. Qed. @@ -1143,7 +1143,7 @@ Lemma normalFieldS K M E : (K <= M)%VS -> normalField K E -> normalField M E. Proof. move=> sKM /normalFieldP nKE; apply/normalFieldP=> a Ea. have [r /allP Er splitKa] := nKE a Ea. -have /dvdp_prod_XsubC[m splitMa]: minPoly M a %| \prod_(b <- r) ('X - b%:P). +have /dvdp_prod_XsubC[m splitMa]: minPoly M a %| \prod_(b <- r) ('X - b%:P). by rewrite -splitKa minPolyS. exists (mask m r); first by apply/allP=> b /mem_mask/Er. by apply/eqP; rewrite -eqp_monic ?monic_prod_XsubC ?monic_minPoly. @@ -1169,7 +1169,7 @@ have sXE := basis_mem (vbasisP E); set X : seq L := vbasis E in sXE. exists (\prod_(a <- X) minPoly K a). by apply: rpred_prod => a _; apply: minPolyOver. exists (flatten [seq (sval (rK_ a)) | a <- X]). - move/allP: sXE; elim: X => [|a X IHX] ; first by rewrite !big_nil eqpxx. + move/allP: sXE; elim: X => [|a X IHX]; first by rewrite !big_nil eqpxx. rewrite big_cons /= big_cat /= => /andP[Ea sXE]. by case: (rK_ a) => /= r [] // _ <-; apply/eqp_mull/IHX. apply/eqP; rewrite eqEsubv; apply/andP; split. @@ -1215,7 +1215,7 @@ Lemma normalField_factors K E : (normalField K E). Proof. move=> sKE; apply: (iffP idP) => [nKE a Ea | nKE]; last first. - apply/normalFieldP=> a Ea; have [r _ ->] := nKE a Ea. + apply/normalFieldP=> a Ea; have [r _ ->] := nKE a Ea. exists [seq x a | x : gal_of E <- r]; last by rewrite big_map. by rewrite all_map; apply/allP=> b _; apply: memv_gal. have [r Er splitKa] := normalFieldP nKE a Ea. @@ -1312,7 +1312,7 @@ apply (iffP idP) => [/and3P[sKE /separableP sepKE nKE] | fixedKE]. rewrite -eqSS -size_minPoly splitKa size_prod_XsubC eqSS -/(size [:: a]). have Ur: uniq r by rewrite -separable_prod_XsubC -splitKa; apply: sepKE. rewrite -uniq_size_uniq {Ur}// => b; rewrite inE -root_prod_XsubC -splitKa. - apply/eqP/idP=> [-> | pKa_b_0]; first exact: root_minPoly. + apply/eqP/idP=> [-> | pKa_b_0]; first exact: root_minPoly. by have [x /fixEa-> ->] := normalField_root_minPoly sKE nKE Ea pKa_b_0. have sKE: (K <= E)%VS by rewrite -fixedKE capvSl. apply/galois_factors=> // a Ea. @@ -1321,7 +1321,7 @@ have /fin_all_exists2[x_ galEx_ Dx_a] (b : seq_sub r_pKa) := imageP (valP b). exists (codom x_); rewrite -map_comp; set r := map _ _. have r_xa x: x \in 'Gal(E / K) -> x a \in r. move=> galEx; have r_pKa_xa: x a \in r_pKa by apply/imageP; exists x. - by rewrite [x a](Dx_a (SeqSub r_pKa_xa)); apply: codom_f. + by rewrite [x a](Dx_a (SeqSub r_pKa_xa)); apply: codom_f. have Ur: uniq r by apply/injectiveP=> b c /=; rewrite -!Dx_a => /val_inj. split=> //; first by apply/subsetP=> _ /codomP[b ->]. apply/eqP; rewrite -eqp_monic ?monic_minPoly ?monic_prod_XsubC //. @@ -1389,10 +1389,10 @@ have [x1 | ntx] := eqVneq x 1%g. by rewrite -{1}normEa1 /galNorm DgalE x1 cycle1 big_set1 !gal_id divr1. pose c_ y := \prod_(i < invm (injm_Zpm x) y) (x ^+ i)%g a. have nz_c1: c_ 1%g != 0 by rewrite /c_ morph1 big_ord0 oner_neq0. -have [d] := @gal_independent_contra _ (mem 'Gal(E / K)) _ _ (group1 _) nz_c1. +have [d] := @gal_independent_contra _ (mem 'Gal(E / K)) _ _ (group1 _) nz_c1. set b := \sum_(y in _) _ => Ed nz_b; exists b. split=> //; apply: rpred_sum => y galEy. - by apply: rpredM; first apply: rpred_prod => i _; apply: memv_gal. + by apply: rpredM; first apply: rpred_prod => i _; apply: memv_gal. apply: canRL (mulfK _) _; first by rewrite fmorph_eq0. rewrite rmorph_sum mulr_sumr [b](reindex_acts 'R _ galEx) ?astabsR //=. apply: eq_bigr => y galEy; rewrite galM // rmorphM mulrA; congr (_ * _). @@ -1477,7 +1477,7 @@ rewrite mulrC memv_mul ?memv_line //; apply/fixedFieldP=> [|x Gx]. have Edet n (N : 'M_n) (E_N : forall i j, N i j \in E): \det N \in E. by apply: rpred_sum => sigma _; rewrite rpredMsign rpred_prod. rewrite /invmx uM 2!mxE mulrC rpred_div ?Edet //. - by rewrite rpredMsign Edet // => k l; rewrite 2!mxE. + by rewrite rpredMsign Edet // => k l; rewrite 2!mxE. suffices{i} {2}<-: map_mx x v = v by rewrite [map_mx x v i 0]mxE. have uMx: map_mx x (M w) \in unitmx by rewrite map_unitmx. rewrite map_mxM map_invmx /=; apply: canLR {uMx}(mulKmx uMx) _. diff --git a/mathcomp/field/separable.v b/mathcomp/field/separable.v index 6178c01..c3f3ebb 100644 --- a/mathcomp/field/separable.v +++ b/mathcomp/field/separable.v @@ -71,13 +71,13 @@ apply: (iffP idP) => [sep_p | [sq'p nz_der1p]]. split=> [u v | u u_dv_p]; last first. apply: contraTneq => u'0; rewrite -leqNgt -(eqnP sep_p). rewrite dvdp_leq -?size_poly_eq0 ?(eqnP sep_p) // dvdp_gcd u_dv_p. - have /dvdp_scaler <-: lead_coef u ^+ scalp p u != 0 by rewrite lcn_neq0. + have /dvdp_scaler <-: lead_coef u ^+ scalp p u != 0 by rewrite lcn_neq0. by rewrite -derivZ -Pdiv.Idomain.divpK //= derivM u'0 mulr0 addr0 dvdp_mull. rewrite Pdiv.Idomain.dvdp_eq mulrCA mulrA; set c := _ ^+ _ => /eqP Dcp. have nz_c: c != 0 by rewrite lcn_neq0. move: sep_p; rewrite coprimep_sym -[separable _](coprimep_scalel _ _ nz_c). rewrite -(coprimep_scaler _ _ nz_c) -derivZ Dcp derivM coprimep_mull. - by rewrite coprimep_addl_mul !coprimep_mulr -andbA => /and4P[]. + by rewrite coprimep_addl_mul !coprimep_mulr -andbA => /and4P[]. rewrite /separable coprimep_def eqn_leq size_poly_gt0; set g := gcdp _ _. have nz_g: g != 0. rewrite -dvd0p dvdp_gcd -(mulr0 0); apply/nandP; left. @@ -217,7 +217,7 @@ pose kappa' := inj_subfx iota z r1. have /eq_map_poly Diota: kappa \o kappa' =1 iota. by move=> w; rewrite /kappa /= subfx_inj_eval // map_polyC hornerC. suffices [y3]: exists y3, y = kappa y3. - have [q3 ->] := subfxE y3; rewrite /kappa subfx_inj_eval // => Dy. + have [q3 ->] := subfxE y3; rewrite /kappa subfx_inj_eval // => Dy. split; [exists (t *: q3 - 'X) | by exists q3]. by rewrite rmorphB linearZ /= map_polyX !hornerE -Dy opprB addrC addrNK. pose p0 := p ^ iota \Po (iota t *: 'X - z%:P). @@ -244,7 +244,7 @@ have{p0} [p3 ->]: exists p3, p0 = p3 ^ kappa. rewrite -Diota map_poly_comp -gcdp_map /= -/kappa. move: (gcdp _ _) => r3 /eqpf_eq[c nz_c Dr3]. exists (- (r3`_0 / r3`_1)); rewrite [kappa _]rmorphN fmorph_div -!coef_map Dr3. -by rewrite !coefZ polyseqXsubC mulr1 mulrC mulKf ?opprK. +by rewrite !coefZ polyseqXsubC mulr1 mulrC mulKf ?opprK. Qed. Lemma char0_PET (q : {poly F}) : @@ -534,7 +534,7 @@ have Dder: Derivation <<K; x>> D. apply/allP=> u /vbasis_mem Kx_u; apply/allP=> v /vbasis_mem Kx_v. rewrite !lfunE /= -{-2}(Fadjoin_poly_eq Kx_u) -{-3}(Fadjoin_poly_eq Kx_v). rewrite -!hornerM -hornerD -derivM. - rewrite Fadjoin_poly_mod ?rpredM ?Fadjoin_polyOver //. + rewrite Fadjoin_poly_mod ?rpredM ?Fadjoin_polyOver //. rewrite {2}(divp_eq (_ * _) (minPoly K x)) derivD derivM pKx'_0 mulr0 addr0. by rewrite hornerD hornerM minPolyxx mulr0 add0r. have{Dder DK_0}: x \in lker D by apply: subvP Kx_x; apply: derKx_0. @@ -608,7 +608,7 @@ Lemma charf_p_separable K x e p : p \in [char L] -> separable_element K x = (x \in <<K; x ^+ (p ^ e.+1)>>%VS). Proof. move=> charLp; apply/idP/idP=> [sepKx | /Fadjoin_poly_eq]; last first. - set m := p ^ _;set f := Fadjoin_poly K _ x => Dx; apply/separable_elementP. + set m := p ^ _; set f := Fadjoin_poly K _ x => Dx; apply/separable_elementP. have mL0: m%:R = 0 :> L by apply/eqP; rewrite -(dvdn_charf charLp) dvdn_exp. exists ('X - (f \Po 'X^m)); split. - by rewrite rpredB ?polyOver_comp ?rpredX ?polyOverX ?Fadjoin_polyOver. @@ -672,7 +672,7 @@ Lemma separable_inseparable_element K x : Proof. rewrite /purely_inseparable_element; case: ex_minnP => [[|m]] //=. rewrite subfield_closed; case: m => /= [-> //| m _ /(_ 1%N)/implyP/= insepKx]. -by rewrite (negPf insepKx) (contraNF (@base_separable K x) insepKx). +by rewrite (negPf insepKx) (contraNF (@base_separable K x) insepKx). Qed. Lemma base_inseparable K x : x \in K -> purely_inseparable_element K x. diff --git a/mathcomp/fingroup/action.v b/mathcomp/fingroup/action.v index 1bde1f7..ecfa6ea 100644 --- a/mathcomp/fingroup/action.v +++ b/mathcomp/fingroup/action.v @@ -380,14 +380,14 @@ apply/subsetP=> a cSa; rewrite !inE (astab_dom cSa). by apply/subsetP=> x Sx; rewrite inE (astab_act cSa). Qed. -Lemma astabsC S : 'N(~: S | to) = 'N(S | to). +Lemma astabsC S : 'N(~: S | to) = 'N(S | to). Proof. apply/setP=> a; apply/idP/idP=> nSa; rewrite !inE (astabs_dom nSa). by rewrite -setCS -preimsetC; apply/subsetP=> x; rewrite inE astabs_act. by rewrite preimsetC setCS; apply/subsetP=> x; rewrite inE astabs_act. Qed. -Lemma astabsI S T : 'N(S | to) :&: 'N(T | to) \subset 'N(S :&: T | to). +Lemma astabsI S T : 'N(S | to) :&: 'N(T | to) \subset 'N(S :&: T | to). Proof. apply/subsetP=> a; rewrite !inE -!andbA preimsetI => /and4P[-> nSa _ nTa] /=. by rewrite setISS. @@ -425,7 +425,7 @@ Proof. move=> sAD; apply/subsetP/subsetP=> [sAC x xS | sSF a aA]. by apply/afixP=> a aA; apply: astab_act (sAC _ aA) xS. rewrite !inE (subsetP sAD _ aA); apply/subsetP=> x xS. -by move/afixP/(_ _ aA): (sSF _ xS); rewrite inE => ->. +by move/afixP/(_ _ aA): (sSF _ xS); rewrite inE => ->. Qed. Section ActsSetop. @@ -436,12 +436,12 @@ Hypotheses (AactS : [acts A, on S | to]) (AactT : [acts A, on T | to]). Lemma astabU : 'C(S :|: T | to) = 'C(S | to) :&: 'C(T | to). Proof. by apply/setP=> a; rewrite !inE subUset; case: (a \in D). Qed. -Lemma astabsU : 'N(S | to) :&: 'N(T | to) \subset 'N(S :|: T | to). +Lemma astabsU : 'N(S | to) :&: 'N(T | to) \subset 'N(S :|: T | to). Proof. by rewrite -(astabsC S) -(astabsC T) -(astabsC (S :|: T)) setCU astabsI. Qed. -Lemma astabsD : 'N(S | to) :&: 'N(T | to) \subset 'N(S :\: T| to). +Lemma astabsD : 'N(S | to) :&: 'N(T | to) \subset 'N(S :\: T| to). Proof. by rewrite setDE -(astabsC T) astabsI. Qed. Lemma actsI : [acts A, on S :&: T | to]. @@ -680,13 +680,13 @@ Proof. by move=> Da; rewrite afix_gen_in ?sub1set. Qed. Lemma afixYin A B : A \subset D -> B \subset D -> 'Fix_to(A <*> B) = 'Fix_to(A) :&: 'Fix_to(B). -Proof. by move=> sAD sBD; rewrite afix_gen_in ?afixU // subUset sAD. Qed. +Proof. by move=> sAD sBD; rewrite afix_gen_in ?afixU // subUset sAD. Qed. Lemma afixMin G H : G \subset D -> H \subset D -> 'Fix_to(G * H) = 'Fix_to(G) :&: 'Fix_to(H). Proof. by move=> sGD sHD; rewrite -afix_gen_in ?mul_subG // genM_join afixYin. -Qed. +Qed. Lemma sub_astab1_in A x : A \subset D -> (A \subset 'C[x | to]) = (x \in 'Fix_to(A)). @@ -952,7 +952,7 @@ Proof. exact: sameP eqP (orbit_eqP G x y). Qed. Lemma orbit_inv A x y : (y \in orbit to A^-1 x) = (x \in orbit to A y). Proof. by rewrite orbit_inv_in ?subsetT. Qed. -Lemma orbit_lcoset A a x : orbit to (a *: A) x = orbit to A (to x a). +Lemma orbit_lcoset A a x : orbit to (a *: A) x = orbit to A (to x a). Proof. by rewrite orbit_lcoset_in ?subsetT ?inE. Qed. Lemma orbit_rcoset A a x y : @@ -1910,7 +1910,7 @@ Lemma gacentIim : 'C_(R | to)(A) = 'C_(|to)(A). Proof. by rewrite setIA setIid. Qed. Lemma gacentS : A \subset B -> 'C_(|to)(B) \subset 'C_(|to)(A). -Proof. by move=> sAB; rewrite !(setIS, afixS). Qed. +Proof. by move=> sAB; rewrite !(setIS, afixS). Qed. Lemma gacentU : 'C_(|to)(A :|: B) = 'C_(|to)(A) :&: 'C_(|to)(B). Proof. by rewrite -setIIr -afixU -setIUr. Qed. @@ -2001,8 +2001,8 @@ by move=> sGD sHB; rewrite -gacent_gen ?mul_subG // genM_join gacentY. Qed. Lemma astab1 : 'C(1 | to) = D. -Proof. -by apply/setP=> x; rewrite ?(inE, sub1set) andb_idr //; move/gact1=> ->. +Proof. +by apply/setP=> x; rewrite ?(inE, sub1set) andb_idr //; move/gact1=> ->. Qed. Lemma astab_range : 'C(R | to) = 'C(setT | to). @@ -2599,10 +2599,10 @@ Lemma actsQ A B H : A \subset 'N(H) -> A \subset 'N(B) -> [acts A, on B / H | 'Q]. Proof. by move=> nHA nBA; rewrite acts_quotient // subsetI dom_qactJ nHA astabsJ. -Qed. +Qed. Lemma astabsQ G H : H <| G -> 'N(G / H | 'Q) = 'N(H) :&: 'N(G). -Proof. by move=> nsHG; rewrite astabs_quotient // dom_qactJ astabsJ. Qed. +Proof. by move=> nsHG; rewrite astabs_quotient // dom_qactJ astabsJ. Qed. Lemma astabQ H Abar : 'C(Abar |'Q) = coset H @*^-1 'C(Abar). Proof. diff --git a/mathcomp/fingroup/fingroup.v b/mathcomp/fingroup/fingroup.v index 9d7bcc8..dd57af4 100644 --- a/mathcomp/fingroup/fingroup.v +++ b/mathcomp/fingroup/fingroup.v @@ -1163,7 +1163,7 @@ move=> Ax; apply/setP=> y. by apply/imsetP/set1P=> [[a Aa]|] ->; last exists x; rewrite ?conj1g. Qed. -Lemma classVg x A : x^-1 ^: A = (x ^: A)^-1. +Lemma classVg x A : x^-1 ^: A = (x ^: A)^-1. Proof. apply/setP=> xy; rewrite inE; apply/imsetP/imsetP=> [] [y Ay def_xy]. by rewrite def_xy conjVg invgK; exists y. @@ -2661,7 +2661,7 @@ Lemma norms_class_support : A \subset 'N(class_support B C). Proof. apply/subsetP=> x Ax; rewrite inE sub_conjg class_supportEr. apply/bigcupsP=> y Cy; rewrite -sub_conjg -conjsgM conjgC conjsgM. -by rewrite (normsP nBA) // bigcup_sup ?memJ_norm ?(subsetP nCA). +by rewrite (normsP nBA) // bigcup_sup ?memJ_norm ?(subsetP nCA). Qed. End norm_trans. diff --git a/mathcomp/fingroup/gproduct.v b/mathcomp/fingroup/gproduct.v index 94304c4..cd129f2 100644 --- a/mathcomp/fingroup/gproduct.v +++ b/mathcomp/fingroup/gproduct.v @@ -524,7 +524,7 @@ Lemma bigcprodWY I (r : seq I) P F G : \big[cprod/1]_(i <- r | P i) F i = G -> << \bigcup_(i <- r | P i) F i >> = G. Proof. elim/big_rec2: _ G => [|i A B _ IH G]; first by rewrite gen0. -case /cprodP => [[K H -> defB] <- cKH]. +case/cprodP => [[K H -> defB] <- cKH]. by rewrite -[<<_>>]joing_idr (IH H) ?cent_joinEr -?defB. Qed. @@ -1034,7 +1034,7 @@ Proof. by move=> x y. Qed. Canonical fst_morphism := @Morphism _ _ setT _ (in2W fst_morphM). -Canonical snd_morphism := @Morphism _ _ setT _ (in2W snd_morphM). +Canonical snd_morphism := @Morphism _ _ setT _ (in2W snd_morphM). Lemma injm_pair1g : 'injm pair1g. Proof. by apply/subsetP=> x /morphpreP[_ /set1P[->]]; apply: set11. Qed. @@ -1052,7 +1052,7 @@ Lemma morphim_fstX (H1: {set gT1}) (H2 : {group gT2}) : [morphism of fun x => x.1] @* setX H1 H2 = H1. Proof. apply/eqP; rewrite eqEsubset morphimE setTI /=. -apply/andP; split; apply/subsetP=> x. +apply/andP; split; apply/subsetP=> x. by case/imsetP=> x0; rewrite inE; move/andP=> [Hx1 _] ->. move=> Hx1; apply/imsetP; exists (x, 1); last by trivial. by rewrite in_setX Hx1 /=. @@ -1062,9 +1062,9 @@ Lemma morphim_sndX (H1: {group gT1}) (H2 : {set gT2}) : [morphism of fun x => x.2] @* setX H1 H2 = H2. Proof. apply/eqP; rewrite eqEsubset morphimE setTI /=. -apply/andP; split; apply/subsetP=> x. +apply/andP; split; apply/subsetP=> x. by case/imsetP=> x0; rewrite inE; move/andP=> [_ Hx2] ->. -move=>Hx2; apply/imsetP; exists (1, x); last by []. +move=> Hx2; apply/imsetP; exists (1, x); last by []. by rewrite in_setX Hx2 andbT. Qed. @@ -1084,7 +1084,7 @@ Lemma setX_dprod (H1 : {group gT1}) (H2 : {group gT2}) : Proof. rewrite dprodE ?setX_prod //. apply/centsP=> [[x u]]; rewrite !inE /= => /andP[/eqP-> _] [v y]. - by rewrite !inE /= => /andP[_ /eqP->]; congr (_, _); rewrite ?mul1g ?mulg1. + by rewrite !inE /= => /andP[_ /eqP->]; congr (_, _); rewrite ?mul1g ?mulg1. apply/trivgP; apply/subsetP=> [[x y]]; rewrite !inE /= -!andbA. by case/and4P=> _ /eqP-> /eqP->; rewrite eqxx. Qed. diff --git a/mathcomp/odd_order/BGappendixAB.v b/mathcomp/odd_order/BGappendixAB.v index 1dc4472..eb708a6 100644 --- a/mathcomp/odd_order/BGappendixAB.v +++ b/mathcomp/odd_order/BGappendixAB.v @@ -73,7 +73,7 @@ suffices IH gT (E : {group gT}) x y (G := <<[set x; y]>>) : by rewrite -cRA !commgSS ?sub1set. move: {2}_.+1 (ltnSn #|E|) => n; elim: n => // n IHn in gT E x y G *. rewrite ltnS => leEn /and3P[oddG pE nEG] /and3P[/andP[p_x cRx] p_y cRy]. -have [Gx Gy]: x \in G /\ y \in G by apply/andP; rewrite -!sub1set -join_subG. +have [Gx Gy]: x \in G /\ y \in G by apply/andP; rewrite -!sub1set -join_subG. apply: wlog_neg => p'Gc; apply/pgroupP=> q q_pr qGc; apply/idPn => p'q. have [Q sylQ] := Sylow_exists q [group of G]. have [sQG qQ]: Q \subset G /\ q.-group Q by case/and3P: sylQ. @@ -130,7 +130,7 @@ case ncxy: (rG x *m rG y == rG y *m rG x). rewrite -defC inE groupR //= !repr_mxM ?groupM ?groupV // mul1mx -/rG. by rewrite (eqP ncxy) -!repr_mxM ?groupM ?groupV // mulKg mulVg repr_mx1. rewrite [_^`(1)](commG1P _) ?pgroup1 //= quotient_gen -gen_subG //= -/G. - rewrite !gen_subG centsC gen_subG quotient_cents2r ?gen_subG //= -/G. + rewrite !gen_subG centsC gen_subG quotient_cents2r ?gen_subG //= -/G. rewrite /commg_set imset2Ul !imset2_set1l !imsetU !imset_set1. by rewrite !subUset andbC !sub1set !commgg group1 /= -invg_comm groupV Cxy. pose Ax : 'M(E) := rG x - 1; pose Ay : 'M(E) := rG y - 1. @@ -231,7 +231,7 @@ Qed. Theorem odd_abelian_gen_constrained : 'O_p^'(G) = 1 -> 'C_('O_p(G))(P) \subset P -> X \subset 'O_p(G). Proof. -set Q := 'O_p(G) => p'G1 sCQ_P. +set Q := 'O_p(G) => p'G1 sCQ_P. have sPQ: P \subset Q by rewrite pcore_max. have defQ: 'O_{p^', p}(G) = Q by rewrite pseries_pop2. have pQ: p.-group Q by apply: pcore_pgroup. @@ -460,7 +460,7 @@ have sylCS: p.-Sylow(C) (C :&: S) := Sylow_setI_normal nsCG sylS. have{defC} defC: 'C_G(Y) * (C :&: S) = C. apply/eqP; rewrite eqEsubset mulG_subG sCY_C subsetIl /=. have nCY_C: C \subset 'N('C_G(Y)). - exact: subset_trans (normal_sub nsCG) (normal_norm nsCY_G). + exact: subset_trans (normal_sub nsCG) (normal_norm nsCY_G). rewrite -quotientSK // -defC /= -pseries1. rewrite -(pseries_catr_id [:: p : nat_pred]) (pseries_rcons_id [::]) /=. rewrite pseries1 /= pseries1 defC pcore_sub_Hall // morphim_pHall //. diff --git a/mathcomp/odd_order/BGappendixC.v b/mathcomp/odd_order/BGappendixC.v index f8b9137..3cfb101 100644 --- a/mathcomp/odd_order/BGappendixC.v +++ b/mathcomp/odd_order/BGappendixC.v @@ -370,7 +370,7 @@ have [q_gt4 | q_le4] := ltnP 4 q. rewrite natrM real_ler_distl ?rpredB ?rpredM ?rpred_nat // => /andP[lb_Pe _]. rewrite -ltC_nat -(ltr_pmul2l (gt0CG P)) {lb_Pe}(ltr_le_trans _ lb_Pe) //. rewrite ltr_subr_addl (@ler_lt_trans _ ((p ^ q.-1)%:R ^+ 2)) //; last first. - rewrite -!natrX ltC_nat ltn_sqr oU ltn_divRL ?dvdn_pred_predX //. + rewrite -!natrX ltC_nat ltn_sqr oU ltn_divRL ?dvdn_pred_predX //. rewrite -(subnKC qgt1) /= -!subn1 mulnBr muln1 -expnSr. by rewrite ltn_sub2l ?(ltn_exp2l 0) // prime_gt1. rewrite -mulrDr -natrX -expnM muln2 -subn1 doubleB -addnn -addnBA // subn2. diff --git a/mathcomp/odd_order/BGsection1.v b/mathcomp/odd_order/BGsection1.v index 7539af3..3230da2 100644 --- a/mathcomp/odd_order/BGsection1.v +++ b/mathcomp/odd_order/BGsection1.v @@ -148,7 +148,7 @@ apply/setIidPl/minM'; last exact: subsetIl. apply/andP; split; last by rewrite normsI // normal_norm. apply: meet_center_nil => //; first by apply: Fitting_nil. apply/andP; split; last exact: gFsub_trans. -apply: Fitting_max; rewrite // /normal ?sMG //; apply: abelian_nil. +apply: Fitting_max; rewrite // /normal ?sMG //; apply: abelian_nil. by move: (minnormal_solvable_abelem minM solM) => /abelem_abelian. Qed. @@ -426,7 +426,7 @@ have sCG: C \subset G by rewrite subsetIl. suffices cNA : A \subset 'C(N). rewrite centsC (sameP setIidPl eqP) -(nilpotent_sub_norm nilG sCG) //= -/C. by rewrite subsetI subsetIl centsC. -have{nilG} solN: solvable N by rewrite(solvableS sNG) ?nilpotent_sol. +have{nilG} solN: solvable N by rewrite (solvableS sNG) ?nilpotent_sol. rewrite (stable_factor_cent cCA) ?(coprimeSg sNG) /stable_factor //= -/N -/C. rewrite subcent_normal subsetI (subset_trans (commSg A sNG)) ?commg_subl //=. rewrite comm_norm_cent_cent 1?centsC ?subsetIr // normsI // !norms_norm //. @@ -636,7 +636,7 @@ have nKG: G \subset 'N(K) by rewrite normal_norm ?pcore_normal. have nKC: 'C_G(P) \subset 'N(K) by rewrite subIset ?nKG. rewrite -(quotientSGK nKC) //; last first. by rewrite /= -pseries1 (pseries_sub_catl [::_]). -apply: subset_trans (quotient_subcent _ _ _) _ ;rewrite /= -/K. +apply: subset_trans (quotient_subcent _ _ _) _; rewrite /= -/K. suffices ->: P / K = 'O_p(G / K). rewrite quotient_pseries2 -Fitting_eq_pcore ?trivg_pcore_quotient // -/K. by rewrite cent_sub_Fitting ?morphim_sol. @@ -753,7 +753,7 @@ apply/andP; split; last by apply/bigcupsP=> B _; apply: subsetIl. have [Z1 | ntZ] := eqsVneq 'Z(G) 1. by rewrite (TI_center_nil _ (normal_refl G)) ?Z1 ?(setIidPr _) ?sub1G. have{ntZ} [M /= minM] := minnormal_exists ntZ (gFnorm_trans _ nGA). -rewrite subsetI centsC => /andP[sMG /cents_norm nMG]. +rewrite subsetI centsC => /andP[sMG /cents_norm nMG]. have coMA := coprimeSg sMG coGA; have{nilG} solG := nilpotent_sol nilG. have [nMA ntM abelM] := minnormal_solvable minM sMG solG. set GC := <<_>>; have sMGC: M \subset GC. @@ -1145,7 +1145,7 @@ apply/idP/idP=> [p1G | pU]. have nOG: 'O_{p^', p}(G) <| G by apply: pseries_normal. rewrite eqEsubset pseries_sub. rewrite -(quotientSGK (normal_norm nOG)) ?(pseries_sub_catl [:: _; _]) //=. -rewrite (quotient_pseries [::_;_]) pcore_max //. +rewrite (quotient_pseries [::_; _]) pcore_max //. rewrite /pgroup card_quotient ?normal_norm //. apply: pnat_dvd (indexgS G (_ : p_elt_gen p G \subset _)) _; last first. case p_pr: (prime p); last by rewrite p'natEpi // mem_primes p_pr. diff --git a/mathcomp/odd_order/BGsection10.v b/mathcomp/odd_order/BGsection10.v index 5a61e25..dbe9c6b 100644 --- a/mathcomp/odd_order/BGsection10.v +++ b/mathcomp/odd_order/BGsection10.v @@ -108,7 +108,7 @@ Lemma MalphaJ x : (H :^ x)`_\alpha = H`_\alpha :^ x. Proof. by rewrite /alpha_core -(eq_pcore H (alphaJ x)) pcoreJ. Qed. Lemma betaJ x : \beta(H :^ x) =i \beta(H). -Proof. +Proof. move=> p; apply/forall_inP/forall_inP=> nnSylH P sylP. by rewrite -(@narrowJ _ _ _ x) nnSylH ?pHallJ2. by rewrite -(@narrowJ _ _ _ x^-1) nnSylH // -(pHallJ2 _ _ _ x) actKV. @@ -136,7 +136,7 @@ Hypothesis maxM : M \in 'M. (* This is the first inclusion in the remark following the preliminary *) (* definitions in B & G, p. 70. *) Remark beta_sub_alpha : {subset \beta(M) <= \alpha(M)}. -Proof. +Proof. move=> p; rewrite !inE /= => /forall_inP nnSylM. have [P sylP] := Sylow_exists p M; have:= nnSylM P sylP. by rewrite negb_imply (p_rank_Sylow sylP) => /andP[]. @@ -221,7 +221,7 @@ Implicit Type A E H K M N P Q R S V W X Y : {group gT}. Theorem sigma_Sylow_trans M p X g : p \in \sigma(M) -> p.-Sylow(M) X -> X :^ g \subset M -> g \in M. Proof. -move=> sMp sylX sXgM; have pX := pHall_pgroup sylX. +move=> sMp sylX sXgM; have pX := pHall_pgroup sylX. have [|h hM /= sXghX] := Sylow_Jsub sylX sXgM; first by rewrite pgroupJ. by rewrite -(groupMr _ hM) (subsetP (norm_sigma_Sylow _ sylX)) ?inE ?conjsgM. Qed. @@ -369,7 +369,7 @@ move=> hallH; have [sHM sH _] := and3P hallH. rewrite -(Sylow_gen H) gen_subG; apply/bigcupsP=> P /SylowP[p p_pr sylP]. have [-> | ntP] := eqsVneq P 1; first by rewrite sub1G. have [sPH pP _] := and3P sylP; have{ntP} [_ p_dv_P _] := pgroup_pdiv pP ntP. -have{p_dv_P} s_p: p \in \sigma(M) := pgroupP (pgroupS sPH sH) p p_pr p_dv_P. +have{p_dv_P} s_p: p \in \sigma(M) := pgroupP (pgroupS sPH sH) p p_pr p_dv_P. have{sylP} sylP: p.-Sylow(M) P := subHall_Sylow hallH s_p sylP. have [sPM nMP] := (pHall_sub sylP, norm_sigma_Sylow s_p sylP). have sylP_G := sigma_Sylow_G maxM s_p sylP. @@ -378,7 +378,7 @@ have defG': G^`(1) = G. by have [?|//] := simpG _ (der_normal 1 _); case/derG1P: (mFT_nonAbelian gT). rewrite -subsetIidl -{1}(setIT P) -defG'. rewrite (focal_subgroup_gen sylP_G) (focal_subgroup_gen sylP) genS //. -apply/subsetP=> _ /imset2P[x g Px /setIdP[Gg Pxg] ->]. +apply/subsetP=> _ /imset2P[x g Px /setIdP[Gg Pxg] ->]. pose X := <[x]>; have sXM : X \subset M by rewrite cycle_subG (subsetP sPM). have sXgM: X :^ g \subset M by rewrite -cycleJ cycle_subG (subsetP sPM). have [trMX _ _] := sigma_group_trans maxM s_p (mem_p_elt pP Px). @@ -399,7 +399,7 @@ Qed. (* This is B & G, Theorem 10.2(b1). *) Theorem Msigma_Hall : \sigma(M).-Hall(M) M`_\sigma. -Proof. +Proof. have [H hallH] := Hall_exists \sigma(M) solM; have [sHM sH _] := and3P hallH. rewrite /M`_\sigma (normal_Hall_pcore hallH) // -(quotientGK nsMaM). rewrite -(quotientGK (normalS _ sHM nsMaM)) ?cosetpre_normal //; last first. @@ -420,7 +420,7 @@ Qed. (* This is B & G, Theorem 10.2(b2). *) Theorem Msigma_Hall_G : \sigma(M).-Hall(G) M`_\sigma. -Proof. +Proof. rewrite pHallE subsetT /= eqn_dvd {1}(card_Hall Msigma_Hall). rewrite partn_dvd ?cardG_gt0 ?cardSg ?subsetT //=. apply/dvdn_partP; rewrite ?part_gt0 // => p. @@ -501,7 +501,7 @@ rewrite leq_eqVlt; case: ltngtP => // rCPB _. have: 2 < 'r('C(B)) by rewrite (leq_trans rCPB) ?rankS ?subsetIr. by apply: cent_rank3_Uniqueness; rewrite -dimB -rank_abelem. have cPX: P \subset 'C(X). - have EpPB: B \in 'E_p(P) by apply/pElemP. + have EpPB: B \in 'E_p(P) by apply/pElemP. have coPX: coprime #|P| #|X| := coprimeSg sPMa coMaX. rewrite centsC (coprime_odd_faithful_cent_abelem EpPB) ?mFT_odd //. rewrite -(setIid 'C(B)) setIA (pmaxElem_LdivP p_pr _) 1?centsC //. @@ -606,7 +606,7 @@ have [P sylP sXP] := Sylow_superset sXM pX; have [sPM pP _] := and3P sylP. pose T := 'Ohm_1('Z(P)); pose A := X <*> T; have nilP := pgroup_nil pP. have charT: T \char P by apply/gFchar_trans/gFchar. have neqTX: T != X. - apply: contraNneq s'p => defX; apply/exists_inP; exists P => //. + apply: contraNneq s'p => defX; apply/exists_inP; exists P => //. by rewrite (subset_trans _ sNXM) // -defX char_norms. have rP: 'r(P) = 2 by rewrite (rank_Sylow sylP) rpM2. have ntT: T != 1 by rewrite Ohm1_eq1 center_nil_eq1 // -rank_gt0 rP. @@ -626,7 +626,7 @@ Qed. End OneMaximal. (* This is B & G, Theorem 10.6. *) -Theorem mFT_proper_plength1 p H : H \proper G -> p.-length_1 H. +Theorem mFT_proper_plength1 p H : H \proper G -> p.-length_1 H. Proof. case/mmax_exists=> M /setIdP[maxM sHM]. suffices{H sHM}: p.-length_1 M by apply: plength1S. @@ -765,7 +765,7 @@ have sQyxP: Q :^ (y * x) \subset P. by rewrite actM (subset_trans _ sRxP) // -(normP nRy) !conjSg. have [t tNP defQx] := mFT_sub_Sylow_trans sQP sQxP. have [z zNP defQxy] := mFT_sub_Sylow_trans sQP sQyxP. -by rewrite inE -(conjSg _ _ x) -actM /= defQx defQxy !(normsP nQ_NP). +by rewrite inE -(conjSg _ _ x) -actM /= defQx defQxy !(normsP nQ_NP). Qed. End OneSylow. @@ -904,7 +904,7 @@ have{nilM'W} nilW: nilpotent W. rewrite -(Lagrange_index (subsetIr _ _) (pcore_sub _ _)) pnat_mul //. rewrite -(divgS (pcore_sub _ _)) -card_quotient ?normsI ?normG //= -pgroupE. rewrite (pi_p'group qWWM') //= -(dprod_card (nilpotent_pcoreC p nilM'W)). - by rewrite mulKn ?cardG_gt0 // -pgroupE pcore_pgroup. + by rewrite mulKn ?cardG_gt0 // -pgroupE pcore_pgroup. have [[sWqW qWq _] [sWpW pWp _]] := (and3P sylWq, and3P sylWp). have <-: Wp * Wq = W. apply/eqP; rewrite eqEcard mul_subG //= -(partnC q (cardG_gt0 W)). @@ -929,7 +929,7 @@ split=> // [a_p | {part1}sylX]. have ltCMX_G := sub_proper_trans (subsetIl M 'C(X)) ltMG. have [P sylP cPX] := part1; have s_p := alpha_sub_sigma maxM a_p. have{sylP} sylP := subHall_Sylow hallMs s_p sylP. - apply: rank3_Uniqueness ltCMX_G (leq_trans a_p _). + apply: rank3_Uniqueness ltCMX_G (leq_trans a_p _). by rewrite -(rank_Sylow sylP) rankS //= subsetI (pHall_sub sylP) // centsC. do [move: sWXM'; rewrite (joing_idPr (pHall_sub sylX)) => sWM'] in hallW. have nMbX: X \subset 'N(M`_\beta) := subset_trans sXM (normal_norm nsMbM). @@ -1151,7 +1151,7 @@ have rZle1: 'r(Z) <= 1. rewrite -(TI_pcoreC \sigma(M) M 'F(M)) subsetI commg_subl commg_subr. by rewrite (subset_trans sZM) ?gFnorm ?gFsub_trans. have{rZle1} cycZ: cyclic Z. - have nilZ: nilpotent Z := nilpotentS (gFsub _ _) Fnil. + have nilZ: nilpotent Z := nilpotentS (gFsub _ _) Fnil. by rewrite nil_Zgroup_cyclic // odd_rank1_Zgroup // mFT_odd. have cZM': M^`(1) \subset 'C_M(Z). rewrite der1_min ?normsI ?normG ?norms_cent //= -ker_conj_aut. @@ -1453,7 +1453,7 @@ case/andP=> /pElemP[_ abelF] ltAF; have [pF cFF _] := and3P abelF. apply: uniq_mmaxS sAR (mFT_pgroup_proper pR) _. have rCAgt2: 'r('C(A)) > 2. rewrite -dimA (leq_trans (properG_ltn_log pF ltAF)) // -(rank_abelem abelF). - by rewrite rankS // centsC (subset_trans (proper_sub ltAF)). + by rewrite rankS // centsC (subset_trans (proper_sub ltAF)). by apply: cent_rank3_Uniqueness rCAgt2; rewrite (rank_abelem abelA) dimA. Qed. diff --git a/mathcomp/odd_order/BGsection11.v b/mathcomp/odd_order/BGsection11.v index fe41e8d..ae376c3 100644 --- a/mathcomp/odd_order/BGsection11.v +++ b/mathcomp/odd_order/BGsection11.v @@ -255,7 +255,7 @@ have [X1 EpX1 nregX11] := nregA _ ntQ1 nQ1A coQ1A. pose Q2 := Q1 :^ g; have sylQ2: q.-Sylow(Ms :^ g) Q2 by rewrite pHallJ2. have{ntQ1} ntQ2: Q2 != 1 by rewrite -!cardG_gt1 cardJg in ntQ1 *. have nQ2A: A \subset 'N(Q2) by rewrite (subset_trans sAP) ?norm_conj_norm. -have{coQ1A} coQ2A: coprime #|Q2| #|A| by rewrite cardJg. +have{coQ1A} coQ2A: coprime #|Q2| #|A| by rewrite cardJg. have{nregA ntQ2 coQ2A} [X2 EpX2 nregX22] := nregA _ ntQ2 nQ2A coQ2A. have [|_ regA]:= exceptional_TIsigmaJ notMg _ sylQ1 nQ1A sylQ2 nQ2A. by rewrite (subset_trans sAP) // -(normP nPg) conjSg. @@ -424,7 +424,7 @@ have qQ0: q.-group Q0 := pgroupS sQ0Q qQ. have p'Q0: p^'.-group Q0 by apply: (pi_pnat qQ0); rewrite eq_sym in q'p. have sM'Q0: \sigma(M)^'.-group Q0 := pi_pnat qQ0 sM'q. have cQ0Q0: abelian Q0 := center_abelian Q. -have defQ0: [~: A, Q0] = Q0. +have defQ0: [~: A, Q0] = Q0. rewrite -{2}[Q0](coprime_abelian_cent_dprod nQ0A) //. by rewrite setIAC regQ setI1g dprodg1 commGC. by rewrite (coprimeSg (subset_trans sQ0Q sQK)). diff --git a/mathcomp/odd_order/BGsection12.v b/mathcomp/odd_order/BGsection12.v index 1dc8454..7cc32ed 100644 --- a/mathcomp/odd_order/BGsection12.v +++ b/mathcomp/odd_order/BGsection12.v @@ -100,7 +100,7 @@ rewrite (solvableS sEM) // mFT_sol // properT. apply: contraNneq (pgroupP s'E p p_pr pE) => ->. have [P sylP] := Sylow_exists p [set: gT]. by apply/exists_inP; exists P; rewrite ?subsetT. -Qed. +Qed. Let solE := sigma_compl_sol. Let exHallE pi := exists Ei : {group gT}, pi.-Hall(E) Ei. @@ -233,7 +233,7 @@ Qed. (* This is B & G, Lemma 12.1(g). *) Lemma tau2_not_beta p : - p \in \tau2(M) -> p \notin \beta(G) /\ {subset 'E_p^2(M) <= 'E*_p(G)}. + p \in \tau2(M) -> p \notin \beta(G) /\ {subset 'E_p^2(M) <= 'E*_p(G)}. Proof. case/andP=> s'p /eqP rpM; split; first exact: sigma'_rank2_beta' rpM. by apply/subsetP; apply: sigma'_rank2_max. @@ -255,7 +255,7 @@ Lemma sigma_compl_context M E E1 E2 E3 : & (*f*) 'C_E3(E) = 1]. Proof. move=> maxM [hallE hallE1 hallE2 hallE3 groupE21]. -have [sEM solM] := (pHall_sub hallE, mmax_sol maxM). +have [sEM solM] := (pHall_sub hallE, mmax_sol maxM). have [[sE1E t1E1 _] [sE3E t3E3 _]] := (and3P hallE1, and3P hallE3). have tiE'E1: E^`(1) :&: E1 = 1. rewrite coprime_TIg // coprime_pi' ?cardG_gt0 //. @@ -308,7 +308,7 @@ have SylowE3 P: Sylow E3 P -> [/\ cyclic P, P \subset E^`(1) & 'C_P(E) = 1]. rewrite -{2}(Frattini_arg nsEp'P_E sylP_Ep'P) /= !norm_joinEr //. by rewrite -mulgA (normC nPK) -mulPK -{1}(mulGid P) !mulgA. have ntPE': P :&: E^`(1) != 1. - have sylPE' := Hall_setI_normal (der_normal 1 E) sylP_E. + have sylPE' := Hall_setI_normal (der_normal 1 E) sylP_E. rewrite -rank_gt0 (rank_Sylow sylPE') p_rank_gt0. by rewrite (tau3E maxM hallE) in t3p; case/andP: t3p. have defP := coprime_abelian_cent_dprod nPK coPK (cyclic_abelian cycP). @@ -379,7 +379,7 @@ Lemma prime_class_mmax_norm M p X : M \in 'M -> p.-group X -> 'N(X) \subset M -> (p \in \sigma(M)) || (p \in \tau2(M)). Proof. -move=> maxM pX sNM; rewrite -implyNb; apply/implyP=> sM'p. +move=> maxM pX sNM; rewrite -implyNb; apply/implyP=> sM'p. by rewrite 3!inE /= sM'p (sigma'_norm_mmax_rank2 _ _ pX). Qed. @@ -462,7 +462,7 @@ have [sHp | sH'p] := boolP (p \in \sigma(H)); last first. rewrite setIC coprime_TIg ?coprime_morph //. rewrite (pnat_coprime (pcore_pgroup _ _)) // (card_pnElem Ep2A). by rewrite pnat_exp ?orbF ?pnatE. - rewrite commg_subI // subsetI ?joing_subr ?subsetIl. + rewrite commg_subI // subsetI ?joing_subr ?subsetIl. by rewrite (subset_trans sAM) ?gFnorm. by rewrite setIC subIset ?nHsA_H. have sAHs: A \subset H`_\sigma. @@ -918,7 +918,7 @@ have defFM: Ms \x A0 = 'F(M). have sNQM: 'N(Q) \subset M. rewrite (mmax_normal maxM) // (nilpotent_Hall_pcore nilF sylQ). by rewrite p_core_Fitting pcore_normal. - apply/implyP; rewrite implyNb /= -def_t2 orbC. + apply/implyP; rewrite implyNb /= -def_t2 orbC. by rewrite (prime_class_mmax_norm maxM qQ). rewrite pcore_max ?(pi_p'group (pcore_pgroup _ _)) //. rewrite [_ <| _]andbC gFsub_trans ?gFnorm //. @@ -1414,7 +1414,7 @@ have{sE3E} sK_CEA: K \subset 'C_E(A). by rewrite (subset_trans _ sAE2) // commg_subr (subset_trans sE3E). split=> // [_ F2 F3 [_ _ hallF2 hallF3 _] | ]. have solE: solvable E := solvableS sEM (mmax_sol maxM). - have [x2 Ex2 ->] := Hall_trans solE hallF2 hallE2. + have [x2 Ex2 ->] := Hall_trans solE hallF2 hallE2. have [x3 Ex3 ->] := Hall_trans solE hallF3 hallE3. rewrite mulG_subG !sub_conjg !(normsP (normal_norm nsCAE)) ?groupV //. by rewrite -mulG_subG mulE32. @@ -1597,7 +1597,7 @@ have t2Lq: q \in \tau2(L). have /orP[sLq | //] := prime_class_mmax_norm maxL qQ0 sNQ0_L. by have /orP[/andP[/negP] | ] := pnatPpi (part_b L maxNA_L) piCEAb_q. have [cQQ [/= sL'q _]] := (cyclic_abelian cycQ, andP t2Lq). -have sQL: Q \subset L := subset_trans (centsS sQ0Q cQQ) sCQ0_L. +have sQL: Q \subset L := subset_trans (centsS sQ0Q cQQ) sCQ0_L. have [F hallF sQF] := Hall_superset (mmax_sol maxL) sQL (pi_pnat qQ sL'q). have [B Eq2B _] := ex_tau2Elem hallF t2Lq. have [_ sLp]: _ /\ p \in \sigma(L) := andP (part_a L maxNA_L p t2Mp). @@ -1703,11 +1703,11 @@ have [cSS | not_cSS] := boolP (abelian S); last first. by rewrite ltnS logn_gt0. have defM0: Ms ><| U0 = Ms <*> U0 := sdprod_subr defMsU (subsetIr _ _). have frobM0: [Frobenius Ms <*> U0 = Ms ><| U0]. - apply/Frobenius_semiregularP=> // [|e /setD1P[nte /setIP[E0e Ue]]]. - by rewrite -rank_gt0 (leq_trans _ (p_rank_le_rank p _)) ?p_rank_gt0. + apply/Frobenius_semiregularP=> // [|e /setD1P[nte /setIP[E0e Ue]]]. + by rewrite -rank_gt0 (leq_trans _ (p_rank_le_rank p _)) ?p_rank_gt0. have [ | ] := boolP (p13.-elt e); first by apply: regU13; rewrite !inE nte. apply: contraNeq => /trivgPn[x /setIP[Ms_x cex] ntx]. - apply/pgroupP=> q q_pr q_dv_x ; rewrite inE /= (regE0 x) ?inE ?ntx //. + apply/pgroupP=> q q_pr q_dv_x; rewrite inE /= (regE0 x) ?inE ?ntx //. rewrite mem_primes q_pr cardG_gt0 (dvdn_trans q_dv_x) ?order_dvdG //. by rewrite inE E0e cent1C. have [nsA0U sU0U _ _ _] := sdprod_context defU. @@ -1887,7 +1887,7 @@ have [cSU | not_cSU] := boolP (U \subset 'C(S)). have ntz: <[z]> != 1 by rewrite trivg_card1 -orderE oz -dvdn1 -trivg_exponent. rewrite regNNS ?cycle_cyclic ?cycle_subG //=. suffices /eqP->: 'Ohm_1(<[z]>) == Sn by apply: char_norms; apply: gFchar. - have [p_z pS1] := (mem_p_elt pS Sz, pgroupS (Ohm_sub 1 S) pS). + have [p_z pS1] := (mem_p_elt pS Sz, pgroupS (Ohm_sub 1 S) pS). rewrite eqEcard (Ohm1_cyclic_pgroup_prime _ p_z) ?cycle_cyclic //. rewrite (Ohm_p_cycle _ p_z) oz -/n subn1 cycle_subG Mho_p_elt //=. rewrite (card_pgroup (pgroupS sSnS1 pS1)) (leq_exp2l _ 1) ?prime_gt1 //. @@ -1969,7 +1969,7 @@ have [X]: exists2 X, X \in subgroups Q & ('C_S(X) != 1) && ([~: S, X] != 1). have ltNA_G: 'N(A) \proper G. by rewrite defNS mFT_norm_proper // (mFT_pgroup_proper pS). have [H maxNA_H] := mmax_exists ltNA_G. - have nCEA_Q1 := subset_trans sQ1E (normal_norm nsCEA). + have nCEA_Q1 := subset_trans sQ1E (normal_norm nsCEA). have [_ _] := primes_norm_tau2Elem maxM hallE t2p Ep2A maxNA_H. case/(_ q)=> [||t2Hq [S2 sylS2 nsS2H] _]. - rewrite -p_rank_gt0 -(rank_Sylow (quotient_pHall _ sylQ1)) //. @@ -2371,7 +2371,7 @@ without loss sXMs: M maxM sM_Y sMq / X \subset M`_\sigma. have [x Gx sXQx] := Sylow_subJ sylQ_G (subsetT X) qX. have: X \subset M`_\sigma :^ x by rewrite (subset_trans sXQx) ?conjSg. rewrite -MsigmaJ => /IH; rewrite sigmaJ mmaxJ (eq_pgroup _ (sigmaJ _ _)). - case => // [[y sYyMx] parts_ab]. + case=> // [[y sYyMx] parts_ab]. split=> [|E p H hallE piEp bG'p maxY_H notMGH]. by exists (y * x^-1); rewrite conjsgM sub_conjgV -MsigmaJ. have:= parts_ab (E :^ x)%G p H; rewrite tau1J /= cardJg pHallJ2. diff --git a/mathcomp/odd_order/BGsection13.v b/mathcomp/odd_order/BGsection13.v index e90be7f..de9ddaf 100644 --- a/mathcomp/odd_order/BGsection13.v +++ b/mathcomp/odd_order/BGsection13.v @@ -95,7 +95,7 @@ have sSH': S \subset H^`(1). have [[F1 hallF1] [F3 hallF3]] := ex_tau13_compl hallF. have [F2 _ complFi] := ex_tau2_compl hallF hallF1 hallF3. have [[sF3F' nsF3F] _ _ _ _] := sigma_compl_context maxH complFi. - apply: subset_trans (subset_trans sF3F' (dergS 1 (pHall_sub hallF))). + apply: subset_trans (subset_trans sF3F' (dergS 1 (pHall_sub hallF))). by rewrite (sub_normal_Hall hallF3) ?(pi_pgroup pS). have sylS_H' := pHall_subl sSH' (der_sub 1 H) sylS. split=> // [P sPMH pP | t1Mp]; last first. @@ -246,7 +246,7 @@ without loss symPR: p r P R EpP ErR cPR t1Mp / rewrite sCaPR -(setIidPl sMaMs) -!setIA setIS ?(IH r p) 1?centsC // => _. by case/eqVproper; rewrite // /proper sCaPR andbF. do [rewrite !subsetI !subsetIl /=; set cRCaP := _ \subset _] in symPR *. -pose Mz := 'O_(if cRCaP then \sigma(M) else \alpha(M))(M); pose C := 'C_Mz(P). +pose Mz := 'O_(if cRCaP then \sigma(M) else \alpha(M))(M); pose C := 'C_Mz(P). suffices: C \subset 'C(R) by rewrite /C /Mz /cRCaP; case: ifP => // ->. have sMzMs: Mz \subset Ms by rewrite /Mz; case: ifP => // _. have sCMs: C \subset Ms by rewrite subIset ?sMzMs. @@ -276,7 +276,7 @@ have [sPH sRH] := (subset_trans cPP sCPH, subset_trans cPR sCPH). have [sSM sSH] := (subset_trans sSMs sMsM, subset_trans cPS sCPH). have [sQM sQH] := (subset_trans sQS sSM, subset_trans sQS sSH). have ntMsH_R: [~: Ms :&: H, R] != 1. - by rewrite (subG1_contra _ ntQ) ?commSg // subsetI sSMs. + by rewrite (subG1_contra _ ntQ) ?commSg // subsetI sSMs. have sR_EH: R \subset E :&: H by apply/subsetIP. have ntMsH_MH: [~: Ms :&: H, M :&: H] != 1. by rewrite (subG1_contra _ ntMsH_R) ?commgS // (subset_trans sR_EH) ?setSI. @@ -308,7 +308,7 @@ have ntHa: H`_\alpha != 1 by rewrite (subG1_contra _ ntCHaRQ) ?subsetIl. have uniqNQ: 'M('N(Q)) = [set H]. apply: contraNeq ntCHaRQ; rewrite joingC. by case/(cent_Malpha_reg_tau1 _ _ r'q ErH_R) => //; case=> //= _ -> _. -have maxNQ_H: H \in 'M('N(Q)) :\ M by rewrite uniqNQ !inE neqHM /=. +have maxNQ_H: H \in 'M('N(Q)) :\ M by rewrite uniqNQ !inE neqHM /=. have{maxNQ_H} [_ _] := sigma_subgroup_embedding maxM sMq sQM qQ ntQ maxNQ_H. have [sHq [_ st1HM [_ ntMa]] | _ [_ _ sM'MH]] := ifP; last first. have piPp: p \in \pi(P) by rewrite -p_rank_gt0 p_rank_abelem ?dimP. @@ -590,7 +590,7 @@ move=> [maxM maxL notMGL] [t1Mp t1Lp EpP] [sylQ sylU nQP nUP]. move=> [regPQ regPU] [sNQL sNUM]; rewrite setIC in sylU. (* for symmetry *) have notLGM: gval M \notin L :^: G by rewrite orbit_sym. (* for symmetry *) have{EpP} [ntP [sPML abelP dimP]] := (nt_pnElem EpP isT, pnElemP EpP). -have{sPML} [[sPM sPL] [pP _ _]] := (subsetIP sPML, and3P abelP). +have{sPML} [[sPM sPL] [pP _ _]] := (subsetIP sPML, and3P abelP). have solCP: solvable 'C(P) by rewrite mFT_sol ?mFT_cent_proper. pose Qprops M q Q := [&& q.-Sylow(M) Q, q != p, q \notin \beta(M), 'C_(M`_\beta)(P) != 1 & 'C_(M`_\beta)(P <*> Q) == 1]. @@ -662,7 +662,7 @@ have{ntX} sHM: H \subset M. by rewrite beta_norm_sub_mmax // /psubgroup (subset_trans sYMb). have [_ trCY _] := sigma_group_trans maxM (beta_sub_sigma maxM bMt) tY. have [|| h cYh /= defMg] := (atransP2 trCY) M (M :^ g). - - by rewrite inE orbit_refl (subset_trans (normG _) sNY_M). + - by rewrite inE orbit_refl (subset_trans (normG _) sNY_M). - by rewrite inE mem_orbit ?in_setT. by rewrite defMg conjGid // (subsetP sNY_M) ?(subsetP (cent_sub _)) in sHMg. have sXMb: X \subset M`_\beta. @@ -743,7 +743,7 @@ have{not_pM'} [R ErR nQR]: exists2 R, R \in 'E_r^1('C_M(P)) & R \subset 'N(Q). have [T [sylT nTP sRT]] := coprime_Hall_subset nKP coKP solK sRK rR nRP. have [x cKPx defS] := coprime_Hall_trans nKP coKP solK sylS_K nSP sylT nTP. rewrite -(conjGid (subsetP (setSI _ sKM) x cKPx)). - by exists (R :^ x)%G; rewrite ?pnElemJ ?(subset_trans _ nQS) // defS conjSg. + by exists (R :^ x)%G; rewrite ?pnElemJ ?(subset_trans _ nQS) // defS conjSg. have [sRcMP abelR _] := pnElemP ErR; have ntR := nt_pnElem ErR isT. have{sRcMP abelR} [[sRM cPR] [rR _]] := (subsetIP sRcMP, andP abelR). have sNR_L: 'N(R) \subset L. @@ -957,7 +957,7 @@ have{hallE2} E2_1: E2 :==: 1. apply/idPn; rewrite -rank_gt0; have [p _ ->] := rank_witness E2. rewrite p_rank_gt0 => /(pnatPpi (pHall_pgroup hallE2))t2p. have [A Ep2A _] := ex_tau2Elem hallE t2p. - by apply: not_regE3Ms; case: (tau2_regular maxM complEi t2p Ep2A). + by apply: not_regE3Ms; case: (tau2_regular maxM complEi t2p Ep2A). have [_ ntE1 [cycE1 cycE3] [defE _] _] := sigma_compl_context maxM complEi. rewrite (eqP E2_1) sdprod1g in defE; have{ntE1} ntE1 := ntE1 E2_1. have [nsE3E _ mulE31 nE31 _] := sdprod_context defE. @@ -977,7 +977,7 @@ have [p Ep1X] := nElemP EpX; have [sXE abelX oX] := pnElemPcard Ep1X. have [p_pr ntX] := (pnElem_prime Ep1X, nt_pnElem Ep1X isT). have tau31p: p \in [predU \tau3(M) & \tau1(M)]. rewrite (pgroupP (pgroupS sXE _)) ?oX // -mulE31 pgroupM. - rewrite (sub_pgroup _ t3E3) => [|q t3q]; last by rewrite inE /= t3q. + rewrite (sub_pgroup _ t3E3) => [|q t3q]; last by rewrite inE /= t3q. by rewrite (sub_pgroup _ t1E1) // => q t1q; rewrite inE /= t1q orbT. have [/= t3p | t1p] := orP tau31p. rewrite (char_normal_trans _ nsE3E) ?sub_cyclic_char //. @@ -1028,7 +1028,7 @@ have [sLq t12Lp]: q \in \sigma(L) /\ (p \in \tau1(L)) || (p \in \tau2(L)). rewrite -subG1 quotient_sub1 ?subsetI ?sPE // (subset_trans sPE) //. by rewrite normsI ?normG ?norms_cent. have [maxL sNL] := setIdP maxNL; have sEL := subset_trans nAE sNL. -have sL'p: p \in \sigma(L)^' by move: t12Lp; rewrite -andb_orr => /andP[]. +have sL'p: p \in \sigma(L)^' by move: t12Lp; rewrite -andb_orr => /andP[]. have [sPL sL'P] := (subset_trans sPE sEL, pi_pgroup pP sL'p). have{sL'P} [F hallF sPF] := Hall_superset (mmax_sol maxL) sPL sL'P. have solF := sigma_compl_sol hallF. diff --git a/mathcomp/odd_order/BGsection14.v b/mathcomp/odd_order/BGsection14.v index 2e3f523..bc6f9e2 100644 --- a/mathcomp/odd_order/BGsection14.v +++ b/mathcomp/odd_order/BGsection14.v @@ -400,16 +400,16 @@ by apply: sub_in_pnat => p /(pnatPpi skM)/orP[] // kMp /negP. Qed. Lemma FtypeJ M x : ((M :^ x)%G \in 'M_'F) = (M \in 'M_'F). -Proof. by rewrite inE mmaxJ pgroupJ (eq_p'group _ (kappaJ M x)) !inE. Qed. +Proof. by rewrite inE mmaxJ pgroupJ (eq_p'group _ (kappaJ M x)) !inE. Qed. Lemma PtypeJ M x : ((M :^ x)%G \in 'M_'P) = (M \in 'M_'P). -Proof. by rewrite !in_setD mmaxJ FtypeJ. Qed. +Proof. by rewrite !in_setD mmaxJ FtypeJ. Qed. Lemma P1typeJ M x : ((M :^ x)%G \in 'M_'P1) = (M \in 'M_'P1). Proof. rewrite inE PtypeJ pgroupJ [M \in 'M_'P1]inE; congr (_ && _). by apply: eq_pgroup => p; rewrite inE /= kappaJ sigmaJ. -Qed. +Qed. Lemma P2typeJ M x : ((M :^ x)%G \in 'M_'P2) = (M \in 'M_'P2). Proof. by rewrite in_setD PtypeJ P1typeJ -in_setD. Qed. @@ -529,7 +529,7 @@ have [have_a nK1K ntE1 sE1K]: [/\ part_a, b1_hyp, E1 :!=: 1 & E1 \subset K]. apply: contraNeq (kappa_nonregular (pnatPpi kK piKp) EpMY). move/(subG1_contra (setIS U (centS sYy))). have{y sYy Ky} sYE1 := subset_trans sYy (subset_trans Ky sKE1). - have ntY: Y :!=: 1 by apply: (nt_pnElem EpY). + have ntY: Y :!=: 1 by apply: (nt_pnElem EpY). rewrite -subG1 /=; have [_ <- _ tiE32] := sdprodP defU. rewrite -subcent_TImulg ?subsetI ?(subset_trans sYE1) // mulG_subG. rewrite !subG1 /= => /nandP[nregE3Y | nregE2Y]. @@ -769,7 +769,7 @@ have hallE: \sigma(M)^'.-Hall(M) E. rewrite pHallE /= -/E -mulUK mul_subG //= TI_cardMg //. rewrite -(partnC \kappa(M) (part_gt0 _ _)) (partn_part _ (@kappa_sigma' M)). apply/eqP; rewrite -partnI -(card_Hall hallK) mulnC; congr (_ * _)%N. - by rewrite (card_Hall hallU); apply: eq_partn => p; apply: negb_or. + by rewrite (card_Hall hallU); apply: eq_partn => p; apply: negb_or. have [K1 | ntK] := altP (K :=P: 1). rewrite K1 sdprodg1 -{1}(mulg1 U) -{1}K1 mulUK sdprod_sigma //. by split=> //; first apply: semiregular_prime; apply: semiregular1r. @@ -1448,7 +1448,7 @@ have{K_spec} defZX: {in MX, forall Mi, K_ Mi \x Ks_ Mi = Z}. by rewrite -defNXs (subset_trans sXK) // (subset_trans (joing_subl _ Ks)). have{hallK_Zi} hallK_Z: {in MX, forall Mi, co_sHallK Mi Z}. by move=> Mi MXi; rewrite -(defZX _ MXi); apply: hallK_Zi. -have nsK_Z: {in MX, forall Mi, K_ Mi <| Z /\ Ks_ Mi <| Z}. +have nsK_Z: {in MX, forall Mi, K_ Mi <| Z /\ Ks_ Mi <| Z}. by move=> Mi /defZX; apply: dprod_normal2. have tiKs: {in MX &, forall Mi Mj, gval Mi != gval Mj -> Ks_ Mi :&: Ks_ Mj = 1}. move=> Mi Mj MXi MXj; apply: contraNeq; rewrite -rank_gt0. @@ -1514,7 +1514,7 @@ have defT: \bigcup_(Mi in MX) (Ks_ Mi)^# * (K_ Mi)^# = T. have [sXx abelX dimX] := pnElemP EpX. have piXp: p \in \pi(X) by rewrite -p_rank_gt0 p_rank_abelem ?dimX. have sXK: X \subset K by rewrite (subset_trans sXx) ?cycle_subG. - have E1X: X \in 'E^1(K) by apply/nElemP; exists p; apply/pnElemP. + have E1X: X \in 'E^1(K) by apply/nElemP; exists p; apply/pnElemP. have [Mi MNXi sXMis] := exMNX X E1X; have MXi: Mi \in MX := setU1r M MNXi. have sXZ: X \subset Z := subset_trans sXK (joing_subl _ _). have sMip: p \in \sigma(Mi) := pnatPpi (pcore_pgroup _ _) (piSg sXMis piXp). @@ -1609,9 +1609,9 @@ have oTG: (#|TG|%:R = (1 + n / z - \sum_(Mi in MX) (k_ Mi)^-1) * g)%R. rewrite natrM natf_indexg ?subsetT //= -/z -mulrA mulrC; congr (_ * _)%R. rewrite oT natrB; last by rewrite ltnW // -subn_gt0 lt0n -oT cards_eq0. rewrite mulrC natrD -/n -/z natr_sum /=. - rewrite mulrBl mulrDl big_distrl divff //=; congr (_ - _)%R. + rewrite mulrBl mulrDl big_distrl divff //=; congr (_ - _)%R. apply: eq_bigr => Mi MXi; have defZi := defZX _ MXi. - by rewrite /z -(dprod_card defZi) natrM invfM mulrC divfK. + by rewrite /z -(dprod_card defZi) natrM invfM mulrC divfK. have neMNX: MNX != set0. move: ntK; rewrite -rank_gt0 => /rank_geP[X /exMNX[Mi MNXi _]]. by apply/set0Pn; exists Mi. @@ -1722,7 +1722,7 @@ have{nilMis} cycZ: cyclic Z. apply: wlog_neg; rewrite -ltnNge ltn_neqAle p_rank_gt0 => /andP[_ piSp]. have [_ /and3P[sKjMj kKj _]] := PmaxMX _ MXj. rewrite -(rank_kappa (pnatPpi kKj (piSg sSKj piSp))) p_rankS //. - exact: subset_trans sSKj sKjMj. + exact: subset_trans sSKj sKjMj. rewrite (dprod_nil (defZX _ MXi)) abelian_nil ?cyclic_abelian //=. exact: (nilpotentS (subsetIl _ _)) nilMis. have cycK: cyclic K := cyclicS (joing_subl _ _) cycZ. @@ -1798,7 +1798,7 @@ have oTGgt_g2: (g / 2%:R < #|TG|%:R)%R. without loss [lt1p ltpq]: p q odd_p odd_q / 1 < p /\ p < q. have [p_pr q_pr]: prime p /\ prime q by rewrite !pdiv_prime ?cardG_gt1. have [ltpq | ltqp | eqpq] := ltngtP p q. - - by apply; rewrite ?prime_gt1. + - by apply; rewrite ?prime_gt1. - by rewrite mulrC; apply; rewrite ?prime_gt1. have [] := hallK_Z _ MX0. rewrite K0 Ks0 => /and3P[_ sM'K _] /and3P[_ sMKs _]. @@ -1839,7 +1839,7 @@ rewrite defZhat {1}defKs; split; first 2 [by split]. rewrite sub_abelian_cent ?cyclic_abelian //=; last first. by rewrite (subset_trans sxK) ?joing_subl. move: ntx; rewrite -rank_gt0 /= -{1}(setIidPr sxK) => /rank_geP[X]. - rewrite nElemI -setIdE -defZ => /setIdP[E1X sXx]. + rewrite nElemI -setIdE -defZ => /setIdP[E1X sXx]. by have [<- _] := defNX _ E1X; rewrite setIS ?cents_norm ?centS. + case/setD1P; rewrite -cycle_eq1 -cycle_subG -cent_cycle => nty syKs. have [_ [defNKs defNY] _ _ _] := Ptype_structure PmaxMstar hallKstar. @@ -2067,7 +2067,7 @@ have [Mst _ [_ _ _ [cycZ _ defZ _ _] _]] := Ptype_embedding PmaxM hallK. rewrite -(mulKVg y x) -/y' 2!inE negb_or andbC. do [set Ks := 'C_(_)(K); set Z := K <*> _] in cycZ defZ *. have Ks_y: y \in Ks. - have cKZ := sub_abelian_cent (cyclic_abelian cycZ) (joing_subl K Ks). + have cKZ := sub_abelian_cent (cyclic_abelian cycZ) (joing_subl K Ks). rewrite inE Ms_y (subsetP cKZ) // -(defZ y'); last by rewrite !inE nty'. by rewrite inE cent1C (subsetP sMsM). have [_ [defNK _] _ _ _] := Ptype_structure PmaxM hallK. @@ -2169,7 +2169,7 @@ have [sKM s'K] := (subset_trans sKE sEM, pgroupS sKE s'E). have regQ: 'C_(M`_\sigma)(Q) = 1. apply/eqP; apply: contraFT (k'M q) => nregQ. have EqQ_M: Q \in 'E_q^1(M) by apply/pnElemP. - by rewrite unlock 3!inE /= t1Mq; apply/exists_inP; exists Q. + by rewrite unlock 3!inE /= t1Mq; apply/exists_inP; exists Q. have nsKM: K <| M. have [s'q _] := andP t1Mq. have EqQ_NK: Q \in 'E_q^1('N_M(K)) by apply/pnElemP; rewrite subsetI sQM. @@ -2240,7 +2240,7 @@ have{t12Hq} [/= t1Hq | /= t2Hq] := orP t12Hq. by have [_ _ _ _ [|<- //]] := Ptype_structure PmaxH hallL; apply/setDP. left; split=> //. have [x defQ]: exists x, Q :=: <[x]> by apply/cyclicP; rewrite prime_cyclic ?oQ. -rewrite defQ cent_cycle in nregQHs *; rewrite (cent1_nreg_sigma_uniq maxH) //. +rewrite defQ cent_cycle in nregQHs *; rewrite (cent1_nreg_sigma_uniq maxH) //. by rewrite 2!inE -cycle_eq1 -cycle_subG -defQ (nt_pnElem EqQ). by rewrite /p_elt /order -defQ oQ pnatE. Qed. @@ -2351,7 +2351,7 @@ have sUHs: U \subset H`_\sigma. have sK_HsDq: K \subset HsDq. rewrite sub_gen ?subsetU // orbC -p_core_Fitting. by rewrite (sub_Hall_pcore (nilpotent_pcore_Hall _ (Fitting_nil _))) ?qK. - have [|sHsDq_H nHsDq_H] := andP (_ : HsDq <| H). + have [|sHsDq_H nHsDq_H] := andP (_ : HsDq <| H). rewrite -(quotientGK nsHsH) -[HsDq]quotientYK //= cosetpre_normal //. by rewrite -{3}mulHsD quotientMidl quotient_normal // pcore_normal. have sU_HsDq: U \subset HsDq. @@ -2458,7 +2458,7 @@ have{p pi_p sMp t2Np b'Mp} FmaxM: M \in 'M_'F. have kMq: q \in \kappa(M). by case/orP: (pnatPpi skM piMq) => //= sMq; case/negP: sM'q. have [K hallK sQK] := Hall_superset (mmax_sol maxM) sQM (pi_pnat qQ kMq). - have EqKQ: Q \in 'E_q^1(K) by apply/pnElemP. + have EqKQ: Q \in 'E_q^1(K) by apply/pnElemP. have [L _ [uniqL [kLhallKs sMhallKs] _ _ _]] := Ptype_embedding PmaxM hallK. set Ks := 'C_(_)(K) in kLhallKs sMhallKs. have{uniqL} defL: 'N[x] :^ g = L. diff --git a/mathcomp/odd_order/BGsection15.v b/mathcomp/odd_order/BGsection15.v index 06d7eb9..704e98d 100644 --- a/mathcomp/odd_order/BGsection15.v +++ b/mathcomp/odd_order/BGsection15.v @@ -242,7 +242,7 @@ set part_c := forall U, _; have c_holds: part_c. have piCx_hyp: {in X^#, forall x', x' \in ('C_M[x])^# /\ \sigma(M)^'.-elt x'}. move=> x' /setD1P[ntx' Xx']; have Ex' := subsetP sXE x' Xx'. rewrite 3!inE ntx' (subsetP sEM) ?(mem_p_elt s'M_E) //=. - by rewrite (subsetP _ _ Xx') ?sub_cent1. + by rewrite (subsetP _ _ Xx') ?sub_cent1. have piCx x' X1x' := (* GG -- ssreflect evar generalization fails in trunk *) let: conj c e := piCx_hyp x' X1x' in pi_of_cent_sigma maxM Ms1x c e. have t2X: \tau2(M).-group X. @@ -250,7 +250,7 @@ set part_c := forall U, _; have c_holds: part_c. have X1x': x' \in X^# by rewrite !inE Xx' -order_gt1 ox' prime_gt1. have [[]|[]] := piCx _ X1x'; last by rewrite /p_elt ox' pnatE. case/idPn; have:= mem_p_elt (pgroupS sXU sk'U) Xx'. - by rewrite /p_elt ox' !pnatE // => /norP[]. + by rewrite /p_elt ox' !pnatE // => /norP[]. suffices cycX: cyclic X. split=> //; have [x' defX] := cyclicP cycX. have X1x': x' \in X^# by rewrite !inE -cycle_eq1 -cycle_subG -defX ntX /=. @@ -292,7 +292,7 @@ have{cycZ cUU} [cycK cUU] := (cyclicS (joing_subl _ _) cycZ, cUU ntK). split=> // [_||/UtypeF[] //]; first split=> //. apply/eqP; rewrite eq_sym eqEcard -(leq_pmul2r (cardG_gt0 K)). have [nsMsU_M _ mulMsU _ _] := sdprod_context defM. - rewrite (sdprod_card defM) (sdprod_card defM') der1_min ?normal_norm //=. + rewrite (sdprod_card defM) (sdprod_card defM') der1_min ?normal_norm //=. by rewrite -(isog_abelian (sdprod_isog defM)) cyclic_abelian. by apply: abelianS cUU; rewrite gen_subG -big_distrr subsetIl. Qed. @@ -348,7 +348,7 @@ have ltM'M: M' \proper M by rewrite (sol_der1_proper solM) ?mmax_neq1. have sMsM': Ms \subset M' := Msigma_der1 maxM. have [-> | ltMF_Ms] := eqVproper sMF_Ms; first by rewrite eqxx Msigma_neq1. set KDpart := (X in _ /\ X); suffices KD_holds: KDpart. - do 2!split=> //; have [K hallK] := Hall_exists \kappa(M) solM. + do 2!split=> //; have [K hallK] := Hall_exists \kappa(M) solM. pose q := #|'C_(M`_\sigma)(K)|; have [D hallD] := Hall_exists q^' solMs. have [_ [_ _ piMFq _] _ _ _] := KD_holds K D hallK (proper_neq ltMF_Ms) hallD. by rewrite -rank_gt0 (leq_trans _ (p_rank_le_rank q _)) ?p_rank_gt0. @@ -467,7 +467,7 @@ have{K1 sK1M sK1K coMsK1 coQK1 prK1 defCMsK1 nQK1 solMs} Qi_rec Qi: rewrite -(setIidPr sLD_Ms) setIAC defCMsK1 quotientS1 //= -/Ks joingC. rewrite norm_joinEl // -(setIidPl sKsQ) -setIA -group_modr // tiQD mul1g. have [-> | ntLKs] := eqVneq (Ks :&: L) 1; first exact: sub1G. - by rewrite subIset ?(implyP regLK) // prime_meetG. + by rewrite subIset ?(implyP regLK) // prime_meetG. apply: (prime_Frobenius_sol_kernel_nil defLK1b). by apply: solvableS (quotient_sol _ solM); rewrite join_subG !quotientS. by rewrite -(card_isog (quotient_isog _ _)) ?coprime_TIg // (coprimeSg sQiQ). @@ -566,7 +566,7 @@ have{frobDKb regQbDb} [p_pr oQb cQbD']: transitivity ('C_Q[x] / Q0); last first. rewrite -(coprime_quotient_cent (subsetIl Q _) nQ0K coQK solQ) /= -/Q0. by rewrite -/Q -(setIidPl sQMs) -!setIA prMsK // !inE ntx. - rewrite -!cent_cycle -quotient_cycle //; rewrite -!cycle_subG in Kx nQ0x. + rewrite -!cent_cycle -quotient_cycle //; rewrite -!cycle_subG in Kx nQ0x. by rewrite coprime_quotient_cent ?(coprimegS Kx). have:= Frobenius_primact frobDKb _ _ _ ntQb _ prQbK regQbDb. have [nQDK solDK] := (subset_trans sDKM nQM, solvableS sDKM solM). @@ -577,7 +577,7 @@ have{cQbD'} sM''FM: M'' \subset 'F(M). have nQMs := subset_trans sMsM nQM. rewrite [M'']dergSn -/M' -defMs -(quotientSGK _ sQFM) ?comm_subG //. rewrite (quotient_der 1) //= -/Ms -mulQD quotientMidl -quotient_der //= -/Q. - by rewrite quotientS // -defFM subsetI sub_astabQ !comm_subG ?quotient_der. + by rewrite quotientS // -defFM subsetI sub_astabQ !comm_subG ?quotient_der. have sQ0Ms := subset_trans sQ0Q sQMs. have ->: 'C_Ms(Ks / Q0 | 'Q) = 'F(M). have sFMcKsb: 'F(M) \subset 'C_Ms(Ks / Q0 | 'Q). @@ -1048,7 +1048,7 @@ split=> // [E E1 E2 E3 complEi | {Y t2Y defF sM'F}]. have E3_1: E3 :=: 1. have [sEM s'E _] := and3P hallE; have sE'M' := dergS 1 sEM. have sE3F: E3 \subset 'F(M) := subset_trans sE3E' (subset_trans sE'M' sM'F). - rewrite -(setIidPr sE3F) coprime_TIg // -(dprod_card defF) coprime_mull. + rewrite -(setIidPr sE3F) coprime_TIg // -(dprod_card defF) coprime_mull. rewrite (pnat_coprime (pcore_pgroup _ _) (pgroupS sE3E s'E)). exact: p'nat_coprime (sub_pgroup (@tau3'2 _ M) t2Y) t3E3. have{defE} defE: E2 ><| E1 = E by rewrite -defE E3_1 sdprod1g. @@ -1106,7 +1106,7 @@ have max_rB A: p.-abelem A -> B \subset A -> 'r_p(A) <= 2. have [x1 defX1]: exists x1, X1 :=: <[x1]>. by apply/cyclicP; rewrite prime_cyclic ?oX1. have Px1: x1 \in P by rewrite -cycle_subG -defX1. - have Px1a: x1 ^ a \in P. + have Px1a: x1 ^ a \in P. by rewrite (subsetP sAaP) // memJ_conjg -cycle_subG -defX1. have [b nPb def_xb] := sigma_Hall_tame maxM sylP_Ms Px1 Px1a. exists (a * b^-1); rewrite !inE !actM !sub_conjgV defX1 /= -!cycleJ def_xb. @@ -1268,7 +1268,7 @@ Theorem tau2_P2type_signalizer M Mstar U K r R H (q := #|K|) : [/\ prime q, \tau2(H) =i (q : nat_pred) & \tau2(M)^'.-group M]. Proof. move: Mstar => L P2maxM complU maxCK_L sylR maxNR_H not_t2'H. -have [[PmaxM notP1maxM] [hallU hallK _]] := (setDP P2maxM, complU). +have [[PmaxM notP1maxM] [hallU hallK _]] := (setDP P2maxM, complU). have q_pr: prime q by have [_ _ _ _ []] := Ptype_structure PmaxM hallK. have [[maxH _] [maxM _]] := (setIdP maxNR_H, setDP PmaxM). have [maxL sCKL] := setIdP maxCK_L; have hallLs := Msigma_Hall maxL. diff --git a/mathcomp/odd_order/BGsection16.v b/mathcomp/odd_order/BGsection16.v index 737a92d..ca73c4b 100644 --- a/mathcomp/odd_order/BGsection16.v +++ b/mathcomp/odd_order/BGsection16.v @@ -267,7 +267,7 @@ Proof. by rewrite (trivg_kappa maxM); case: complU. Qed. Remark trivgPmax : (M \in 'M_'P) = (K :!=: 1). Proof. by rewrite inE trivgFmax maxM andbT. Qed. -Remark FmaxP : reflect (K :==: 1 /\ U :!=: 1) (M \in 'M_'F). +Remark FmaxP : reflect (K :==: 1 /\ U :!=: 1) (M \in 'M_'F). Proof. rewrite (trivg_kappa_compl maxM complU) 2!inE. have [_ hallK _] := complU; rewrite (trivg_kappa maxM hallK). @@ -415,7 +415,7 @@ by rewrite injm_abelian /= ?im_quotient // injm_quotm ?injm_conj. Qed. Lemma FTcoreJ M x : (M :^ x)`_\s = M`_\s :^ x. -Proof. by rewrite /FTcore FTtypeJ FcoreJ derJ; case: ifP. Qed. +Proof. by rewrite /FTcore FTtypeJ FcoreJ derJ; case: ifP. Qed. Lemma FTsupp1J M x : 'A1(M :^ x) = 'A1(M) :^ x. Proof. by rewrite conjD1g -FTcoreJ. Qed. @@ -1073,7 +1073,7 @@ have [K1 | ntK] := eqsVneq K 1. have FmaxM: M \in 'M_'F by rewrite -(trivg_kappa maxM hallK) K1. have ->: FTtype M = 1%N by apply/eqP; rewrite -FTtype_Fmax. have ntU: U :!=: 1 by case/(FmaxP maxM complU): FmaxM. - have defH: H = Ms. + have defH: H = Ms. by apply/Fcore_eq_Msigma; rewrite // notP1type_Msigma_nil ?FmaxM. have defM: H ><| U = M. by have [_] := kappa_compl_context maxM complU; rewrite defH K1 sdprodg1. @@ -1106,7 +1106,7 @@ have [K1 | ntK] := eqsVneq K 1. by exists p; rewrite // -p_rank_gt0 -(rank_Sylow sylP) rank_gt0. have PmaxM: M \in 'M_'P by rewrite inE -(trivg_kappa maxM hallK) ntK. have [Mstar _ [_ _ _ [cycW _ _ _ _]]] := Ptype_embedding PmaxM hallK. -case=> [[tiV _ _] _ _ defM {Mstar}]. +case=> [[tiV _ _] _ _ defM {Mstar}]. have [_ [_ cycK] [_ nUK _ _ _] _] := BGsummaryA maxM complU; rewrite -/H. case=> [[ntKs defCMK] [_ _ _ _ nilM'H] [sM''F defF /(_ ntK)sFM'] types34]. have hallK_M := pHall_Hall hallK. @@ -1280,7 +1280,7 @@ have tiA0A x a: x \in 'A0(M) :\: 'A(M) -> x ^ a \notin 'A(M). rewrite 3!inE; case: (x \in _) => //= /and3P[_ notM'x _]. apply: contra notM'x => /bigcupP[y _ /setD1P[_ /setIP[Mx _]]]. by rewrite -(p_eltJ _ _ a) (mem_p_elt (pgroup_pi _)). -have tiA0 x a: x \in 'A0(M) :\: 'A1(M) -> x ^ a \in 'A0(M) -> a \in M. +have tiA0 x a: x \in 'A0(M) :\: 'A1(M) -> x ^ a \in 'A0(M) -> a \in M. case/setDP=> A0x notA1x A0xa. have [Mx Mxa] := (subsetP sA0M x A0x, subsetP sA0M _ A0xa). have [[U K] /= complU] := kappa_witness maxM. @@ -1329,7 +1329,7 @@ have [FmaxM t2'M]: M \in 'M_'F /\ \tau2(M)^'.-group M. apply: (non_disjoint_signalizer_Frobenius ell1x MSx_gt1 SMxM). by apply: contra not_sNx'CMy; apply: pgroupS (subsetIl _ _). have defA0: 'A0(M) = Ms^#. - rewrite FTsupp0_type1; last by rewrite -FTtype_Fmax. + rewrite FTsupp0_type1; last by rewrite -FTtype_Fmax. rewrite /'A(M) /'A1(M) -FTtype_Fmax // FmaxM def_FTcore //= -/Ms. apply/setP => z; apply/bigcupP/idP=> [[t Ms1t] | Ms1z]; last first. have [ntz Ms_z] := setD1P Ms1z. diff --git a/mathcomp/odd_order/BGsection2.v b/mathcomp/odd_order/BGsection2.v index 5d7a899..85b95b2 100644 --- a/mathcomp/odd_order/BGsection2.v +++ b/mathcomp/odd_order/BGsection2.v @@ -134,7 +134,7 @@ without loss closF: F rG absG / group_closure_field F gT. move=> IH; apply: (@group_closure_field_exists gT F) => [[F' f closF']]. by apply: IH (map_repr f rG) _ closF'; rewrite map_mx_abs_irr. elim: {G}_.+1 {-2}G (ltnSn #|G|) => // m IHm G leGm in n rG absG solG *. -have [G1 | ntG] := eqsVneq G 1%g. +have [G1 | ntG] := eqsVneq G 1%g. by rewrite abelian_abs_irr ?G1 ?abelian1 // in absG; rewrite (eqP absG) dvd1n. have [H nsHG p_pr] := sol_prime_factor_exists solG ntG. set p := #|G : H| in p_pr. @@ -159,7 +159,7 @@ have card_sH: #|sH| = #|G : 'C_G[W | 'Cl]|. have /imsetP[W' _ defW'] := Clifford_atrans irrG sH. have WW': W' \in orbit 'Cl G W by rewrite orbit_in_sym // -defW' inE. by rewrite defW' andbT; apply/subsetP=> W'' /orbit_in_trans->. - rewrite orbit_stabilizer // card_in_imset //. + rewrite orbit_stabilizer // card_in_imset //. exact: can_in_inj (act_reprK _). have sHcW: H \subset 'C_G[W | 'Cl]. apply: subset_trans (subset_trans (joing_subl _ _) (Clifford_astab sH)) _. @@ -882,7 +882,7 @@ have{IHm} abelQ: abelian Q. move/forallP/(_ P); apply: contraL; rewrite subsetI subxx => -> /=. apply: contra ntQ'; rewrite /Q => /eqP->. by rewrite (setIidPr _) ?sub1G // commG1. - case/eqP: ntQ'; have{p'Q'}: P :&: Q^`(1)%g = 1%g. + case/eqP: ntQ'; have{p'Q'}: P :&: Q^`(1)%g = 1%g. rewrite coprime_TIg ?(pnat_coprime (pHall_pgroup sylP)) //= -/Q. by rewrite (pi_p'nat p'Q') // !inE p_pr. by rewrite (setIidPr _) // comm_subG ?subsetIr. @@ -925,7 +925,7 @@ have ap1: a ^+ p = 1. have ab1: a * b = 1. have: Q \subset <<[set y in G | \det (rG y) == 1]>>. rewrite subIset // genS //; apply/subsetP=> yz; case/imset2P=> y z Gy Gz ->. - rewrite inE !repr_mxM ?groupM ?groupV //= !detM (mulrCA _ (\det (rG y))). + rewrite inE !repr_mxM ?groupM ?groupV //= !detM (mulrCA _ (\det (rG y))). rewrite -!det_mulmx -!repr_mxM ?groupM ?groupV //. by rewrite mulKg mulVg repr_mx1 det1. rewrite gen_set_id; last first. @@ -1034,7 +1034,7 @@ pose B := col_mx u v; have uB: B \in unitmx. by rewrite mulmx1 -addsmxE addsmxS ?defU ?defUc. have Umod: mxmodule rP U by apply: rfix_mx_module. pose W := rfix_mx (factmod_repr Umod) P. -have ntW: W != 0. +have ntW: W != 0. apply: (rfix_pgroup_char charFp) => //. rewrite eqmxMfull ?row_full_unit ?unitmx_inv ?row_ebase_unit //. by rewrite rank_copid_mx -(eqP Uscal). diff --git a/mathcomp/odd_order/BGsection3.v b/mathcomp/odd_order/BGsection3.v index 007aaf4..5e9f5db 100644 --- a/mathcomp/odd_order/BGsection3.v +++ b/mathcomp/odd_order/BGsection3.v @@ -123,7 +123,7 @@ have fixsum (H : {group gT}): H \subset G -> (gsum H <= rfix_mx rG H)%MS. move/subsetP=> sHG; apply/rfix_mxP=> x Hx; have Gx := sHG x Hx. rewrite -gring_opG // -gring_opM ?envelop_mx_id //; congr (gring_op _ _). rewrite {2}/gset_mx (reindex_acts 'R _ Hx) ?astabsR //= mulmx_suml. - by apply:eq_bigr=> y; move/sHG=> Gy; rewrite repr_mxM. + by apply: eq_bigr=> y; move/sHG=> Gy; rewrite repr_mxM. have: gsum G + rG 1 *+ #|K| = gsum K + \sum_(x in K) gsum (R :^ x). rewrite -gring_opG // -sumr_const -!linear_sum -!linearD; congr gring_op. rewrite {1}/gset_mx (set_partition_big _ (Frobenius_partition frobG)) /=. @@ -350,7 +350,7 @@ have [nsKG sRG defKR nKR tiKR] := sdprod_context defG. have [sKG nKG] := andP nsKG; have solK := solvableS sKG solG. have cycR := prime_cyclic p_pr. case: (eqsVneq K 1) => [-> | ntK]; first by rewrite derg1 commG1 sub1G. -have defR x: x \in R^# -> <[x]> = R. +have defR x: x \in R^# -> <[x]> = R. case/setD1P; rewrite -cycle_subG -cycle_eq1 => ntX sXR. apply/eqP; rewrite eqEsubset sXR; apply: contraR ntX => /(prime_TIg p_pr). by rewrite /= (setIidPr sXR) => ->. @@ -856,7 +856,7 @@ have{IHsub nVH} IHsub: forall X : {group gT}, rewrite sub_Hall_pcore //; last by rewrite -defP commSg ?joing_subr. rewrite /pHall pcore_sub pcore_pgroup /= -(pseries_pop2 _ Op'HR0). rewrite -card_quotient ?normal_norm ?pseries_normal // -/(pgroup _ _). - by rewrite -{1}((_ :=P: _) p1_HR0) (quotient_pseries [::_;_]) pcore_pgroup. + by rewrite -{1}((_ :=P: _) p1_HR0) (quotient_pseries [::_; _]) pcore_pgroup. apply/trivgP; have <-: K :&: 'O_p([~: H0, R0]) = 1. by rewrite setIC coprime_TIg // (pnat_coprime (pcore_pgroup p _)). by rewrite commg_subI // subsetI ?sPOpHR0 ?sXK //= gFnorm_trans // normsRl. @@ -953,7 +953,7 @@ have iK'K: 'C_(P <*> R / K')(K / K') = 1 -> #|K / K'| > q ^ 2. by rewrite /pgroup (pi_pnat rR) // (pi_pnat pP) // !inE eq_sym. case cKK: (abelian K); last first. have [|[dPhiK dK'] dCKP] := abelian_charsimple_special qK coKP defKP. - apply/bigcupsP=> L /andP[charL]; have sLK := char_sub charL. + apply/bigcupsP=> L /andP[charL]; have sLK := char_sub charL. by case/IHsub: sLK cKK => // [|-> -> //]; apply: char_norm_trans charL _. have eK: exponent K %| q. have oddK: odd #|K| := oddSg sKG oddG. @@ -1395,7 +1395,7 @@ have chF: 'F(K) \char K := Fitting_char K; have nFR := char_norm_trans chF nKR. have nsFK := char_normal chF; have [sFK nFK] := andP nsFK. pose KqF := K / 'F(K); have solK := solvableS sKG solG. without loss [p p_pr pKqF]: / exists2 p, prime p & p.-group KqF. - move=> IHp; apply: wlog_neg => IH_KR; rewrite -quotient_cents2 //= -/KqF. + move=> IHp; apply: wlog_neg => IH_KR; rewrite -quotient_cents2 //= -/KqF. set Rq := R / 'F(K); have nKRq: Rq \subset 'N(KqF) by apply: quotient_norms. rewrite centsC. apply: subset_trans (coprime_cent_Fitting nKRq _ _); last first. @@ -1487,7 +1487,7 @@ have defKv: (P / V) * 'C_(G / V)(W) = (K / V). rewrite (subset_trans (quotientS _ sK_PF)) // quotientMl // mulgS //. rewrite subsetI -quotient_astabQ !quotientS //. by rewrite (subset_trans (Fitting_stab_chief solG nsKG)) ?(bigcap_inf (U, V)). -have nW_ := subset_trans (quotientS _ _) nWG; have nWK := nW_ _ sKG. +have nW_ := subset_trans (quotientS _ _) nWG; have nWK := nW_ _ sKG. rewrite -quotient_cents2 ?norms_cent ?(nW_ _ sRG) //. have [eq_qp | p'q] := eqVneq q p. apply: subset_trans (sub1G _); rewrite -trivg_quotient quotientS // centsC. diff --git a/mathcomp/odd_order/BGsection4.v b/mathcomp/odd_order/BGsection4.v index 217f151..c35c9ab 100644 --- a/mathcomp/odd_order/BGsection4.v +++ b/mathcomp/odd_order/BGsection4.v @@ -47,7 +47,7 @@ Proposition exponent_odd_nil23 gT (R : {group gT}) p : Proof. move=> pR oddR classR. pose f n := 'C(n, 3); pose g n := 'C(n, 3).*2 + 'C(n, 2). -have fS n: f n.+1 = 'C(n, 2) + f n by rewrite /f binS addnC. +have fS n: f n.+1 = 'C(n, 2) + f n by rewrite /f binS addnC. have gS n: g n.+1 = 'C(n, 2).*2 + 'C(n, 1) + g n. by rewrite /g !binS doubleD -!addnA; do 3!nat_congr. have [-> | ntR] := eqsVneq R 1. @@ -64,7 +64,7 @@ have exp_dv_p x m (S : {group gT}): - move=> expSp p_dv_m Sx; apply/eqP; rewrite -order_dvdn. by apply: dvdn_trans (dvdn_trans expSp p_dv_m); apply: dvdn_exponent. have p3_L21: p <= 3 -> {in R & &, forall u v w, [~ u, v, w] = 1}. - move=> lep3 u v w Ru Rv Rw; rewrite (ltnNge 3) lep3 nil_class2 in classR. + move=> lep3 u v w Ru Rv Rw; rewrite (ltnNge 3) lep3 nil_class2 in classR. by apply/eqP/commgP; red; rewrite (centerC Rw) // (subsetP classR) ?mem_commg. have{fS gS} expMR_fg: {in R &, forall u v n (r := [~ v, u]), (u * v) ^+ n = u ^+ n * v ^+ n * r ^+ 'C(n, 2) @@ -79,7 +79,7 @@ have{fS gS} expMR_fg: {in R &, forall u v n (r := [~ v, u]), rewrite -commuteM; try by apply: commuteX; red; rewrite cRr ?groupM. rewrite -mulgA; do 2!rewrite (mulgA _ u) (commgC _ u) -2!mulgA. congr (_ * (_ * _)); rewrite (mulgA _ v). - have ->: [~ v ^+ n, u] = r ^+ n * [~ r, v] ^+ 'C(n, 2). + have ->: [~ v ^+ n, u] = r ^+ n * [~ r, v] ^+ 'C(n, 2). elim: n => [|n IHn]; first by rewrite comm1g mulg1. rewrite !expgS commMgR -/r {}IHn commgX; last exact: cRr. rewrite binS bin1 addnC expgD -2!mulgA; congr (_ * _); rewrite 2!mulgA. @@ -168,7 +168,7 @@ have [[x y] genR modR] := generators_modular_group p_pr e_gt1 isoR. have [_ _ _ _] := modular_group_structure p_pr e_gt1 genR isoR modR. rewrite xpair_eqE p2; case/(_ 1%N) => // _ oR1. by rewrite 2!inE Ohm_sub oR1 pfactorK ?abelem_Ohm1 ?(card_p2group_abelian p_pr). -Qed. +Qed. Section OddNonCyclic. @@ -197,7 +197,7 @@ Qed. (* This is B & G, Lemma 4.5(c). *) Lemma Ohm1_odd_ucn2 (Z := 'Ohm_1('Z_2(R))) : ~~ cyclic Z /\ exponent Z %| p. -Proof. +Proof. have [S nsSR Ep2S] := ex_odd_normal_p2Elem; have p_pr := pnElem_prime Ep2S. have [sSR abelS dimS] := pnElemP Ep2S; have [pS cSS expSp]:= and3P abelS. pose SR := [~: S, R]; pose SRR := [~: SR, R]. @@ -209,7 +209,7 @@ have sSR_R := subset_trans sSR_S sSR. have{ntS} prSR: SR \proper S. by rewrite (nil_comm_properl nilR) // subsetI subxx -commg_subl. have SRR1: SRR = 1. - have [SR1 | ntSR] := eqVneq SR 1; first by rewrite /SRR SR1 comm1G. + have [SR1 | ntSR] := eqVneq SR 1; first by rewrite /SRR SR1 comm1G. have prSRR: SRR \proper SR. rewrite /proper sSRR_SR; apply: contra ntSR => sSR_SRR. by rewrite (forall_inP nilR) // subsetI sSR_R. @@ -303,7 +303,7 @@ have{gtR2} [A] := p_rank_geP gtR2; pose H := 'C_A(Z); pose K := H <*> Z. case/pnElemP=> sAR abelA dimA3; have [pA cAA _] := and3P abelA. have{nsZR} nZA := subset_trans sAR (normal_norm nsZR). have sHA: H \subset A := subsetIl A _; have abelH := abelemS sHA abelA. -have geH2: logn p #|H| >= 2. +have geH2: logn p #|H| >= 2. rewrite -ltnS -dimA3 -(Lagrange sHA) lognM // -addn1 leq_add2l /= -/H. by rewrite logn_quotient_cent_abelem ?dimZ2. have{abelH} abelK : p.-abelem K. @@ -330,7 +330,7 @@ have sAR := normal_sub nAR; have pA := pgroupS sAR pR. have abelA : p.-abelem A. by rewrite /abelem pA cAA /= (dvdn_trans (exponentS sAR) expR). have cardA : logn p #|A| <= 2. - by rewrite -rank_abelem // (leq_trans (rankS sAR) rankR). + by rewrite -rank_abelem // (leq_trans (rankS sAR) rankR). have cardRA : logn p #|R : A| <= 1. by rewrite -cRAA logn_quotient_cent_abelem // (normal_norm nAR). rewrite -(Lagrange sAR) lognM ?cardG_gt0 //. @@ -384,7 +384,7 @@ have dimS1b: logn p #|R / 'Ohm_1(S)| <= 1. by rewrite dvdn_leq_log ?prime_gt0 // order_dvdn yp1. rewrite (leq_trans (nil_class_pgroup pR)) // geq_max /= -subn1 leq_subLR. by rewrite -(Lagrange sS1R) lognM // -card_quotient // addnC leq_add. -Qed. +Qed. (* This is B & G, Lemma 4.9. *) Lemma quotient_p2_Ohm1 gT p (R : {group gT}) : @@ -495,7 +495,7 @@ have [cRR | not_cRR] := boolP (abelian R). by rewrite big_seq1 => <-; rewrite cyclic_metacyclic ?cycle_cyclic. rewrite big_cons big_seq1; case/dprodP=> _ <- cAB _. apply/existsP; exists <[a]>%G; rewrite cycle_cyclic /=. - rewrite /normal mulG_subl mulG_subG normG cents_norm //= quotientMidl. + rewrite /normal mulG_subl mulG_subG normG cents_norm //= quotientMidl. by rewrite quotient_cycle ?cycle_cyclic // -cycle_subG cents_norm. pose R' := R^`(1); pose e := 'Mho^1(R') != 1. have nsR'R: R' <| R := der_normal 1 R; have [sR'R nR'R] := andP nsR'R. @@ -757,7 +757,7 @@ case recR: [exists (S : {group gT} | S \proper R), a \in 'N(S) :\: 'C(S)]. by apply: IHn nSa oa _; rewrite ?(pgroupS sSR) ?(leq_trans ltSR). do [rewrite inE -!cycle_subG orderE; set A := <[a]>] in nRa oa. have{nRa oa} [[not_cRA nRA] oA] := (andP nRa, oa). -have coRA : coprime #|R| #|A| by rewrite oA (pnat_coprime pR) ?pnatE. +have coRA : coprime #|R| #|A| by rewrite oA (pnat_coprime pR) ?pnatE. have{recR} IH: forall S, gval S \proper R -> A \subset 'N(S) -> A \subset 'C(S). move=> S ltSR; rewrite !cycle_subG => nSa; apply: contraFT recR => not_cSa. by apply/exists_inP; exists S; rewrite // inE not_cSa nSa. @@ -929,9 +929,9 @@ have{ziTX defB1} cycX: cyclic X; last have [x defX]:= cyclicP cycX. have{Xb defXb defBb nsCX} mulSX: S * X = R. have nCT: T \subset 'N(C) := subset_trans sTR nCR. rewrite -defR -(normC (subset_trans sSR nBR)) -[B](quotientGK nsCB) -defBb. - rewrite cosetpreM quotientK // defXb quotientGK // -(normC nCT). + rewrite cosetpreM quotientK // defXb quotientGK // -(normC nCT). by rewrite -mulgA (mulSGid sCX) mulgA (mulGSid sTS). -have{mulSX} not_sXS_S': ~~ ([~: X, S] \subset S'). +have{mulSX} not_sXS_S': ~~ ([~: X, S] \subset S'). apply: contra not_sTS' => sXS_S'; rewrite /T -mulSX. by rewrite commGC commMG ?(subset_trans sXR) // mul_subG. have [oSb oTb] : #|S / T| = p /\ #|T / S'| = p. @@ -993,7 +993,7 @@ have i_neq0: i != 0 %[mod p]. rewrite -(orderJ _ a) conjXg xa order_eq1 -expgM -order_dvdn mod0n. apply: contra; case/dvdnP=> m ->; rewrite -mulnA -expnS dvdn_mull //. by rewrite {1}[#[x]](card_pgroup pX) dvdn_exp2l ?leqSpred. -have Txy: [~ x, y] \in T by rewrite [T]commGC mem_commg // -cycle_subG -defX. +have Txy: [~ x, y] \in T by rewrite [T]commGC mem_commg // -cycle_subG -defX. have [Rx Ry]: x \in R /\ y \in R by rewrite -cycle_subG -defX (subsetP sSR). have [nS'x nS'y] := (subsetP nS'R x Rx, subsetP nS'R y Ry). have{not_sXS_S'} not_S'xy: [~ x, y] \notin S'. @@ -1077,7 +1077,7 @@ have s_p'C_B X: gval X \subset C -> p^'.-group X -> X \subset B. by rewrite qact_domE ?acts_char. rewrite gacentE // subsetIidl -/V; apply/subsetP=> v Vv; apply/afixP=> a Xa. have [cVa dom_a] := (subsetP sXC a Xa, subsetP domXb a Xa). - have [x Nx Hx def_v] := morphimP Vv; rewrite {1}def_v qactE //=. + have [x Nx Hx def_v] := morphimP Vv; rewrite {1}def_v qactE //=. by rewrite -qactE ?(astab_dom cVa) ?(astab_act cVa) -?def_v. have{B pB s_p'C_B} pC : p.-group C. apply/pgroupP=> q q_pr /Cauchy[] // a Ca oa; apply: wlog_neg => p'q. @@ -1107,7 +1107,7 @@ rewrite !inE; case/pred2P=> dimV. pose Vb := sdpair1 toAV @* V; pose Ab := sdpair2 toAV @* A. have [injV injA] := (injm_sdpair1 toAV, injm_sdpair2 toAV). have abelVb: p.-abelem Vb := morphim_abelem _ abelV. -have ntVb: Vb != 1 by rewrite morphim_injm_eq1. +have ntVb: Vb != 1 by rewrite morphim_injm_eq1. have nVbA: Ab \subset 'N(Vb) := im_sdpair_norm toAV. pose rV := morphim_repr (abelem_repr abelVb ntVb nVbA) (subxx A). have{defC} <-: rker rV = C; last move: rV. @@ -1128,8 +1128,8 @@ without loss Gp'1: gT G solG oddG rG q_dv_G / 'O_p^'(G) = 1. rewrite trivg_pcore_quotient -(card_isog (quotient1_isog _)). by rewrite p_rank_p'quotient ?pcore_pgroup ?gFnorm //; apply. set R := 'O_p(G); have pR: p.-group R := pcore_pgroup p G. -have [sRG nRG] := andP (pcore_normal p G : R <| G). -have oddR: odd #|R| := oddSg sRG oddG. +have [sRG nRG] := andP (pcore_normal p G : R <| G). +have oddR: odd #|R| := oddSg sRG oddG. have rR: 'r(R) <= 2 by rewrite (rank_pgroup pR) (leq_trans _ rG) ?p_rankS. rewrite leq_eqVlt -implyNb; apply/implyP=> p'q. have [|//] := pi_Aut_rank2_pgroup pR oddR rR _ p'q; rewrite eq_sym in p'q. @@ -1193,7 +1193,7 @@ Qed. (* This is B & G, Theorem 4.18(d) *) Theorem rank2_sub_p'core_der1 gT (G A : {group gT}) p : solvable G -> odd #|G| -> 'r_p(G) <= 2 -> p^'.-subgroup(G^`(1)) A -> - A \subset 'O_p^'(G^`(1)). + A \subset 'O_p^'(G^`(1)). Proof. move=> solG oddG rG /andP[sAG' p'A]; rewrite sub_Hall_pcore //. by have [-> _ _] := rank2_der1_complement solG oddG rG. @@ -1264,7 +1264,7 @@ have pGb: p.-group((G / 'C_G(R))^`(1)). by rewrite defA -pgroupE (der1_Aut_rank2_pgroup pR) ?(oddSg sRG). set C := 'C_G(U / V | 'Q). have nUfG: [acts G, on U / V | 'Q] by rewrite actsQ. -have nCG: G \subset 'N(C) by rewrite -(setIidPl nUfG) normsGI ?astab_norm. +have nCG: G \subset 'N(C) by rewrite -(setIidPl nUfG) normsGI ?astab_norm. have{pGb sUfR} pGa': p.-group (G / C)^`(1). have nCRG : G \subset 'N('C_G(R)) by rewrite normsI ?normG ?norms_cent. have sCR_C: 'C_G(R) \subset C. diff --git a/mathcomp/odd_order/BGsection5.v b/mathcomp/odd_order/BGsection5.v index bf84a99..9769c86 100644 --- a/mathcomp/odd_order/BGsection5.v +++ b/mathcomp/odd_order/BGsection5.v @@ -69,7 +69,7 @@ Proof. move=> injf sHG; rewrite /narrow injm_p_rank //; congr (_ ==> _). apply/set0Pn/set0Pn=> [] [E /setIP[Ep2E maxE]]. exists (invm injf @* E)%G; rewrite -[H](group_inj (morphim_invm injf _)) //. - have sEfG: E \subset f @* G. + have sEfG: E \subset f @* G. by rewrite (subset_trans _ (morphimS _ sHG)) //; case/pnElemP: Ep2E. by rewrite inE injm_pnElem ?injm_pmaxElem ?injm_invm ?morphimS // Ep2E. have sEG: E \subset G by rewrite (subset_trans _ sHG) //; case/pnElemP: Ep2E. @@ -166,7 +166,7 @@ Proof. by rewrite Ohm1_eq1 (center_nil_eq1 (pgroup_nil pR)). Qed. Let sZR : Z \subset R. Proof. by rewrite !gFsub_trans. Qed. -Let abelZ : p.-abelem (Z). +Let abelZ : p.-abelem (Z). Proof. by rewrite (Ohm1_abelem (pgroupS _ pR)) ?center_sub ?center_abelian. Qed. Let pZ : p.-group Z. Proof. exact: abelem_pgroup abelZ. Qed. @@ -272,12 +272,12 @@ have sZT: Z \subset T. have{SZ sSSZ maxSZ} not_sST: ~~ (S \subset T). have: ~~ (SZ \subset T) by case/Ohm1_ucn_p2maxElem: maxSZ. by rewrite join_subG sZT andbT. -have tiST: S :&: T :=: 1 by rewrite prime_TIg ?oS. +have tiST: S :&: T :=: 1 by rewrite prime_TIg ?oS. have defST: S * T = R. apply/eqP; rewrite eqEcard TI_cardMg ?mul_subG ?subsetIl //=. - by rewrite mulnC oS -maxT Lagrange ?subsetIl. + by rewrite mulnC oS -maxT Lagrange ?subsetIl. have cRRb: abelian (R / T) by rewrite -defST quotientMidr quotient_abelian. -have sR'T: R^`(1) \subset T by rewrite der1_min ?char_norm. +have sR'T: R^`(1) \subset T by rewrite der1_min ?char_norm. have TI_SR': S :&: R^`(1) :=: 1. by rewrite prime_TIg ?oS // (contra _ not_sST) // => /subset_trans->. have defCRS : S \x 'C_T(S) = 'C_R(S). @@ -385,12 +385,12 @@ have tiHS: H :&: S = 1. have nsUR: U <| R. rewrite /normal sUR -commg_subl (subset_trans (commSg _ sUH)) //= -/U. by rewrite (subset_trans sHRZ) // joing_subr. - have{rU}:= leq_trans rU rCRS; rewrite leq_eqVlt => /predU1P[] rU. + have{rU}:= leq_trans rU rCRS; rewrite leq_eqVlt => /predU1P[] rU. have Ep2U: [group of U] \in 'E_p^2(R). by rewrite !inE /= sUR abelU -(p_rank_abelem abelU) rU. have [F scn3F sUF] := normal_p2Elem_SCN3 rR Ep2U nsUR. - have [scnF rF] := setIdP scn3F; have [_ scF] := SCN_P scnF. - rewrite (leq_trans rF) // -scF -rank_pgroup ?(pgroupS (subsetIl _ _)) //. + have [scnF rF] := setIdP scn3F; have [_ scF] := SCN_P scnF. + rewrite (leq_trans rF) // -scF -rank_pgroup ?(pgroupS (subsetIl _ _)) //. by rewrite rankS ?setIS ?centS // (subset_trans _ sUF) ?joing_subl. have defU: S :=: U. apply/eqP; rewrite eqEcard oS joing_subl (card_pgroup (pgroupS sUR pR)). @@ -424,7 +424,7 @@ suffices pB (X : {group {perm gT}}): X \subset B -> p^'.-group X -> X :=: 1. rewrite -partn_eq1 ?cardG_gt0 // -(card_Hall sylX). by rewrite (pB X) ?cards1 ?(pi_pgroup qX) ?(subset_trans sXA') ?joing_subl. rewrite cAbAb -(nilpotent_pcoreC p (abelian_nil cAbAb)) trivg_pcore_quotient. - rewrite dprod1g pcore_pgroup; split=> //_ a Aa p'a. + rewrite dprod1g pcore_pgroup; split=> //_ a Aa p'a. rewrite order_dvdn -cycle_eq1 [<[_]>]pB ?(pgroupS (cycleX _ _) p'a) //. by rewrite genS // sub1set inE orbC (mem_imset (expgn^~ _)). move=> sXB p'X; have AutX := subset_trans sXB AutB. @@ -478,7 +478,7 @@ apply: dvdn_trans (order_dvdG (actperm_Aut _ Dx)) _. by rewrite card_Aut_cyclic // oLb (@totient_pfactor p 1) ?muln1. Qed. -End OneGroup. +End OneGroup. (* This is B & G, Theorem 5.6, parts (a) and (c). We do not prove parts (b), *) (* (d) and (e), as they are not used in the proof of the Odd Order Theorem. *) diff --git a/mathcomp/odd_order/BGsection6.v b/mathcomp/odd_order/BGsection6.v index e344b98..9e06b1a 100644 --- a/mathcomp/odd_order/BGsection6.v +++ b/mathcomp/odd_order/BGsection6.v @@ -31,7 +31,7 @@ Implicit Type p : nat. Section OneType. -Variable gT : finGroupType. +Variable gT : finGroupType. Implicit Types G H K S U : {group gT}. (* This is B & G, Theorem A.4(b) and 6.1, or Gorenstein 6.5.2, the main Hall- *) @@ -77,7 +77,7 @@ case/sdprodP=> _ defG nKH tiKH coKH solK sKG'. set K' := K^`(1); have [sK'K nK'K] := andP (der_normal 1 K : K' <| K). have nK'H: H \subset 'N(K') := gFnorm_trans _ nKH. set R := [~: K, H]; have sRK: R \subset K by rewrite commg_subl. -have [nRK nRH] := joing_subP (commg_norm K H : K <*> H \subset 'N(R)). +have [nRK nRH] := joing_subP (commg_norm K H : K <*> H \subset 'N(R)). have sKbK'H': K / R \subset (K / R)^`(1) * (H / R)^`(1). have defGb: (K / R) \* (H / R) = G / R. by rewrite -defG quotientMl ?cprodE // centsC quotient_cents2r. @@ -90,7 +90,7 @@ have{sKbK'H' tiKbHb'} derKb: (K / R)^`(1) = K / R. have{derKb} Kb1: K / R = 1. rewrite (contraNeq (sol_der1_proper _ (subxx (K / R)))) ?quotient_sol //. by rewrite derKb properxx. -have{Kb1 sRK} defKH: [~: K, H] = K. +have{Kb1 sRK} defKH: [~: K, H] = K. by apply/eqP; rewrite eqEsubset sRK -quotient_sub1 ?Kb1 //=. split=> //; rewrite -quotient_sub1 ?subIset ?nK'K //= -/K'. have cKaKa: abelian (K / K') := der_abelian 0 K. @@ -255,7 +255,7 @@ Qed. (* This is B & G, Lemma 6.6(d). *) Lemma plength1_Sylow_Jsub (Q : {group gT}) : Q \subset G -> p.-group Q -> - exists2 x, x \in 'C_G(Q :&: S) & Q :^ x \subset S. + exists2 x, x \in 'C_G(Q :&: S) & Q :^ x \subset S. Proof. move=> sQG pQ; have sQ_Gp'p: Q \subset 'O_{p^',p}(G). rewrite -sub_quotient_pre /= pcore_mod1 ?(subset_trans sQG) //. @@ -278,7 +278,7 @@ End OneType. Theorem plength1_norm_pmaxElem gT p (G E L : {group gT}) : E \in 'E*_p(G) -> odd p -> solvable G -> p.-length_1 G -> L \subset G -> E \subset 'N(L) -> p^'.-group L -> - L \subset 'O_p^'(G). + L \subset 'O_p^'(G). Proof. move=> maxE p_odd solG pl1G sLG nEL p'L. case p_pr: (prime p); last first. diff --git a/mathcomp/odd_order/BGsection7.v b/mathcomp/odd_order/BGsection7.v index 71e800e..5f803b0 100644 --- a/mathcomp/odd_order/BGsection7.v +++ b/mathcomp/odd_order/BGsection7.v @@ -770,9 +770,9 @@ End NormedConstrained. Proposition plength_1_normed_constrained p A : A :!=: 1 -> A \in 'E*_p(G) -> (forall M, M \proper G -> p.-length_1 M) -> normed_constrained A. -Proof. +Proof. move=> ntA EpA pl1subG. -case/pmaxElemP: (EpA); case/pElemP=> sAG; case/and3P=> pA cAA _ _. +case/pmaxElemP: (EpA); case/pElemP=> sAG; case/and3P=> pA cAA _ _. have prA: A \proper G := sub_proper_trans cAA (mFT_cent_proper ntA). split=> // X Y sAX prX; case/setIdP; case/andP=> sYX p'Y nYA. have pl1X := pl1subG _ prX; have solX := mFT_sol prX. diff --git a/mathcomp/odd_order/BGsection8.v b/mathcomp/odd_order/BGsection8.v index db378f3..513d6d1 100644 --- a/mathcomp/odd_order/BGsection8.v +++ b/mathcomp/odd_order/BGsection8.v @@ -68,7 +68,7 @@ have piCA: pi.-group('C(A)). have Mx := subsetP sCAM x cAx; pose C := 'C_F(<[x]>). have sAC: A \subset C by rewrite subsetI sAF centsC cycle_subG. have sCFC_C: 'C_F(C) \subset C. - by rewrite (subset_trans _ sAC) ?setIS // centS ?(subset_trans _ sAC). + by rewrite (subset_trans _ sAC) ?setIS // centS ?(subset_trans _ sAC). have cFx: x \in 'C_M(F). rewrite inE Mx -cycle_subG coprime_nil_faithful_cent_stab //=. by rewrite cycle_subG (subsetP (gFnorm _ _)). @@ -339,7 +339,7 @@ have prH: H \proper G by rewrite inE in maxH; apply: maxgroupp maxH. have sAHM: A \subset H :&: M by rewrite subsetI sAH. have [R sylR_HM sAR]:= Sylow_superset sAHM (pgroupS sAP pP). have [/subsetIP[sRH sRM] pR _] := and3P sylR_HM. -have{sylR_HM} sylR_H: p.-Sylow(H) R. +have{sylR_HM} sylR_H: p.-Sylow(H) R. have [Q sylQ] := Sylow_superset sRM pR; have [sQM pQ _] := and3P sylQ. case/eqVproper=> [defR | /(nilpotent_proper_norm (pgroup_nil pQ)) sRN]. apply: (pHall_subl sRH (subsetT _)); rewrite pHallE subsetT /=. diff --git a/mathcomp/odd_order/BGsection9.v b/mathcomp/odd_order/BGsection9.v index f649e84..fe2b86a 100644 --- a/mathcomp/odd_order/BGsection9.v +++ b/mathcomp/odd_order/BGsection9.v @@ -372,14 +372,14 @@ have uNP0_mCA M: M \in 'M('C(A)) -> 'M('N(P0)) = [set M]. have nVU := subset_trans sUDL (subset_trans sDL nV_LM). rewrite IHs ?(subset_trans sVU) // /stable_factor /normal sVU nVU !andbT. have nVP0 := subset_trans (subset_trans sP0_LM' (der_sub _ _)) nV_LM. - rewrite commGC -sub_astabQR // (subset_trans sP0_LM') //. + rewrite commGC -sub_astabQR // (subset_trans sP0_LM') //. have /is_abelemP[q _ /andP[qUV _]]: is_abelem (U / V). exact: sol_chief_abelem solLM chUV. apply: rank2_der1_cent_chief qUV sUDL; rewrite ?mFT_odd //. exact: leq_trans (p_rank_le_rank _ _) DLle2. rewrite centsC (subset_trans cDL_P0) ?centS ?setIS //. by rewrite (subset_trans _ sCxL) // -cent_set1 centS ?sub1set. - case: (ltnP 2 'r(F)) => [| Fle2]. + case: (ltnP 2 'r(F)) => [| Fle2]. have [q q_pr -> /= Fq3] := rank_witness [group of F]. have Mq3: 'r('O_q(M)) >= 3. rewrite (rank_pgroup (pcore_pgroup _ _)) /= -p_core_Fitting. diff --git a/mathcomp/odd_order/PFsection1.v b/mathcomp/odd_order/PFsection1.v index 1d784ed..8e0b539 100644 --- a/mathcomp/odd_order/PFsection1.v +++ b/mathcomp/odd_order/PFsection1.v @@ -196,7 +196,7 @@ Lemma vchar_isometry_base m L (Chi : m.-tuple 'CF(H)) uniq mu & exists epsilon : bool, forall i : 'I_m, tau (Chi`_i - Chi`_0) = (-1) ^+ epsilon *: ('chi_(mu`_i) - 'chi_(mu`_0)). -Proof. +Proof. case: m Chi => [|[|m]] // Chi _ irrChi Chifree Chi1 ChiCF [iso_tau Ztau]. rewrite -(tnth_nth 0 _ 0); set chi := tnth Chi. have chiE i: chi i = Chi`_i by rewrite -tnth_nth. @@ -272,7 +272,7 @@ rewrite (partition_big (conjg_Iirr t) xpredT) //=; apply: eq_bigr => i _. have [[y Gy chi_i] | not_i_t] := cfclassP _ _ _; last first. apply: big1 => z; rewrite groupV => /andP[Gz /eqP def_i]. by case: not_i_t; exists z; rewrite // -def_i conjg_IirrE. -rewrite -(card_rcoset _ y) mulr_natl -sumr_const; apply: eq_big => z. +rewrite -(card_rcoset _ y) mulr_natl -sumr_const; apply: eq_big => z. rewrite -(inj_eq irr_inj) conjg_IirrE chi_i mem_rcoset inE groupMr ?groupV //. apply: andb_id2l => Gz; rewrite eq_sym (cfConjg_eqE _ nsHG) //. by rewrite mem_rcoset inE groupM ?groupV. @@ -315,7 +315,7 @@ Qed. (* Useful consequences of (1.5)(c) *) Lemma not_cfclass_Ind_ortho i j : H <| G -> ('chi_i \notin 'chi_j ^: G)%CF -> - '['Ind[G, H] 'chi_i, 'Ind[G, H] 'chi_j] = 0. + '['Ind[G, H] 'chi_i, 'Ind[G, H] 'chi_j] = 0. Proof. by move/(cfclass_Ind_cases i j); rewrite cfclass_sym; case: ifP. Qed. Lemma cfclass_Ind_irrP i j : @@ -363,7 +363,7 @@ Qed. (* This is Peterfalvi (1.5)(e). *) Lemma odd_induced_orthogonal t : H <| G -> odd #|G| -> t != 0 -> - '['Ind[G, H] 'chi_t, ('Ind[G] 'chi_t)^*] = 0. + '['Ind[G, H] 'chi_t, ('Ind[G] 'chi_t)^*] = 0. Proof. move=> nsHG oddG nz_t; have [sHG _] := andP nsHG. have:= cfclass_Ind_cases t (conjC_Iirr t) nsHG. @@ -582,7 +582,7 @@ have I1B: 'chi_i1 1%g ^+ 2 <= #|C : D|%:R. move/ler_trans; apply. rewrite ler_nat // -(index_quotient_eq CBsH) ?normal_norm //. rewrite -(@leq_pmul2l #|'Z('chi_i2)%CF|) ?cardG_gt0 ?cfcenter_sub //. - rewrite Lagrange ?quotientS ?cfcenter_sub //. + rewrite Lagrange ?quotientS ?cfcenter_sub //. rewrite -(@leq_pmul2l #|(D / B)%g|) ?cardG_gt0 //. rewrite mulnA mulnAC Lagrange ?quotientS //. rewrite mulnC leq_pmul2l ?cardG_gt0 // subset_leq_card //. diff --git a/mathcomp/odd_order/PFsection10.v b/mathcomp/odd_order/PFsection10.v index 11b3b20..03d8898 100644 --- a/mathcomp/odd_order/PFsection10.v +++ b/mathcomp/odd_order/PFsection10.v @@ -417,14 +417,14 @@ have al_ij_zeta_s: '[al_ij^\tau, zeta^*^\tau1] = a. have M'dz: zeta - zeta^*%CF \in 'Z[calS, M'^#] by apply: seqInd_sub_aut_zchar. rewrite Dtau1 // Dade_isometry ?alpha_on ?tauM' //. rewrite cfdotBr opprB cfdotBl cfdot_conjCr rmorphB linearZ /=. - rewrite -!prTIirr_aut !cfdotBl !cfdotZl !o_mu2_zeta o_zeta_s !mulr0. + rewrite -!prTIirr_aut !cfdotBl !cfdotZl !o_mu2_zeta o_zeta_s !mulr0. by rewrite opprB !(subr0, rmorph0) add0r irrWnorm ?mulr1. have Zal_ij: al_ij^\tau \in 'Z[irr G] by apply: Zalpha_tau. have Za: a \in Cint. by rewrite rpredD ?(Cint_Cnat Nn) ?Cint_cfdot_vchar ?Ztau1 ?(mem_zchar Szeta). have{al_ij_zeta_s} ub_da2: (d ^ 2)%:R * a ^+ 2 <= (2%:R + n ^+ 2) * w1%:R. have [k nz_k j'k]: exists2 k, k != 0 & k != j. - have:= w2gt2; rewrite -nirrW2 (cardD1 0) (cardD1 j) !inE nz_j !ltnS lt0n. + have:= w2gt2; rewrite -nirrW2 (cardD1 0) (cardD1 j) !inE nz_j !ltnS lt0n. by case/pred0Pn=> k /and3P[]; exists k. have muk_1: mu_ k 1%g = (d * w1)%:R. by rewrite (prTIred_1 pddM) mu1 // mulrC -natrM. @@ -437,7 +437,7 @@ have{al_ij_zeta_s} ub_da2: (d ^ 2)%:R * a ^+ 2 <= (2%:R + n ^+ 2) * w1%:R. by rewrite 2 1?eq_sym // mulr0 -mulrN opprB !subr0 add0r. have ZSmuk: mu_ k \in 'Z[calS] by rewrite mem_zchar ?calSmu. have <-: '[al_ij^\tau] * '[(mu_ k)^\tau1] = (2%:R + n ^+ 2) * w1%:R. - by rewrite Itau1 // cfdot_prTIred eqxx mul1n norm_alpha. + by rewrite Itau1 // cfdot_prTIred eqxx mul1n norm_alpha. by rewrite -Cint_normK ?cfCauchySchwarz // Cint_cfdot_vchar // Ztau1. suffices a0 : a = 0. by apply: (def_tau_alpha _ sSS0); rewrite // -sub0r -a0 addrK. @@ -1087,7 +1087,7 @@ have Dalpha i (al_ij := alpha_ i j) : by rewrite -mulrA !mulr_natl; case: (S1) => // in S1zeta lb_n2alij *. have{ub_a2} ub_8a2: 8%:R * a ^+ 2 <= 4%:R * a + 2%:R. rewrite mulrAC Dn -natrM in ub_a2; apply: ler_trans ub_a2. - rewrite -Cint_normK // ler_wpmul2r ?exprn_ge0 ?normr_ge0 // leC_nat szS1. + rewrite -Cint_normK // ler_wpmul2r ?exprn_ge0 ?normr_ge0 // leC_nat szS1. rewrite (subn_sqr p 1) def_p_w1 subnK ?muln_gt0 // mulnA mulnK // mulnC. by rewrite -subnDA -(mulnBr 2 _ 1%N) mulnA (@leq_pmul2l 4 2) ?ltn_subRL. have Z_4a1: 4%:R * a - 1%:R \in Cint by rewrite rpredB ?rpredM ?rpred_nat. diff --git a/mathcomp/odd_order/PFsection11.v b/mathcomp/odd_order/PFsection11.v index c37633f..3635618 100644 --- a/mathcomp/odd_order/PFsection11.v +++ b/mathcomp/odd_order/PFsection11.v @@ -151,7 +151,7 @@ by rewrite Frobenius_coprime_quotient ?gFnormal //; split=> // _ /prHUW1->. Qed. Let defHC : H \x C = HC. -Proof. +Proof. by have [defHC _ _ _] := typeP_context MtypeP; rewrite /= (dprodWY defHC). Qed. @@ -233,7 +233,7 @@ Lemma bounded_proper_coherent H1 : Proof. move=> nsH1_M psH1_M' cohH1; have [nsHHU _ _ _ _] := sdprod_context defHU. suffices: #|HU : H1|%:R - 1 <= 2%:R * #|M : HC|%:R * sqrtC #|HC : HC|%:R :> algC. - rewrite indexgg sqrtC1 mulr1 -leC_nat natrD -ler_subl_addr -mulnA natrM. + rewrite indexgg sqrtC1 mulr1 -leC_nat natrD -ler_subl_addr -mulnA natrM. congr (_ <= _ * _%:R); apply/eqP; rewrite -(eqn_pmul2l (cardG_gt0 HC)). rewrite Lagrange ?normal_sub // mulnCA -(dprod_card defHC) -mulnA mulnC. by rewrite Lagrange ?subsetIl // (sdprod_card defHU) (sdprod_card defM). @@ -281,7 +281,7 @@ Local Notation defM'' := FTtype34_der2. (* This is Peterfalvi (11.6). *) Lemma FTtype34_facts (H' := H^`(1)%g): - [/\ p.-group H, U \subset 'C(H0), H0 :=: H' & C :=: U']. + [/\ p.-group H, U \subset 'C(H0), H0 :=: H' & C :=: U']. Proof. have nilH: nilpotent H := Fcore_nil M. have /sdprod_context[/andP[_ nHM] sUW1M _ _ _] := Ptype_Fcore_sdprod MtypeP. @@ -323,7 +323,7 @@ have{coH_UW1} defH0: H0 :=: H'. by have [_ _ _ <-] := dprodP defHUhat; rewrite setIC setIS ?der_sub. have coHUhat: coprime #|Hhat| #|Uhat|. by rewrite coprime_morph ?(coprimegS _ coH_UW1) ?joing_subl. - have defHhat: 'C_Hhat(Uhat) \x [~: Hhat, Uhat] = Hhat. + have defHhat: 'C_Hhat(Uhat) \x [~: Hhat, Uhat] = Hhat. by rewrite dprodC coprime_abelian_cent_dprod ?der_abelian ?quotient_norms. rewrite /HUhat -(sdprodWY defHU) quotientY //= -(dprodWY defHhat). have [_ _ cCRhat tiCRhat] := dprodP defHhat. @@ -342,7 +342,7 @@ have /subsetIP[sRH cUR]: R \subset 'C_H(U). rewrite (card_Hall (setI_normal_Hall _ hallR _)) ?subsetIl ?gFnormal //. rewrite partnM ?expn_gt0 ?cardG_gt0 //= part_p'nat ?mul1n ?pnatNK //. by rewrite pnat_exp ?pnat_id. -suffices: ~~ (R^`(1)%g \proper R) by apply: contraNeq (sol_der1_proper solH _). +suffices: ~~ (R^`(1)%g \proper R) by apply: contraNeq (sol_der1_proper solH _). have /setIidPr {2}<-: R \subset HU^`(1)%g. by rewrite [HU^`(1)%g]defM'' -(dprodWY defHC) sub_gen ?subsetU ?sRH. suffices defRHpU: R \x ('O_p(H) <*> U) = HU. @@ -521,7 +521,7 @@ have{oDx12} phi_w12 ubar: ubar \in Ubar -> (phi_ w1 ubar * phi_ w2 ubar = 1)%g. apply; apply/rcoset_kercosetP; rewrite ?groupX ?nH0H //. by rewrite morphX ?morphJ ?(nH0W1 w) // ?nH0H //= -Dubar -Dxbar xbarJ. rewrite -eq_expg_mod_order -{1}Dsym expgM expgVn ?(DXn, Dsym) ?Hx_ //. - rewrite /D -!morphR ?nQH ?Hx_ // -conjRg (conjg_fixP _) //. + rewrite /D -!morphR ?nQH ?Hx_ // -conjRg (conjg_fixP _) //. by apply/commgP/esym/(centsP cH0U); rewrite ?memH0 ?Hx_. pose wbar := bar (w1 * w2 ^-1)%g; pose W1bar := (W1 / H0)%g. have W1wbar: wbar \in W1bar by rewrite mem_quotient ?groupM ?groupV. @@ -646,7 +646,7 @@ Qed. Let Zbridge0 : {in S1, forall zeta, bridge0 zeta \in 'Z[irr M, HU^#]}. Proof. have mu0_1: mu_ 0 1%g = q%:R by rewrite prTIred_1 prTIirr0_1 mulr1. -move=> zeta S1zeta; rewrite /= zcharD1 !cfunE subr_eq0 mu0_1 S1_1 // eqxx. +move=> zeta S1zeta; rewrite /= zcharD1 !cfunE subr_eq0 mu0_1 S1_1 // eqxx. by rewrite rpredB ?(seqInd_vchar _ (Tmu 0)) ?(seqInd_vchar _ S1zeta). Qed. @@ -654,7 +654,7 @@ Let A0bridge0 : {in S1, forall zeta, bridge0 zeta \in 'CF(M, 'A0(M))}. Proof. by move=> zeta /Zbridge0/zchar_on/cfun_onS->. Qed. Let sS1S2' : {subset S1 <= [predC S2]}. -Proof. +Proof. by move=> _ /seqIndP[s /setDP[kHCs _] ->]; rewrite !inE mem_seqInd // inE kHCs. Qed. @@ -771,7 +771,7 @@ without loss Dpsi: tau1 coh_tau1 @zeta1 / psi = eta_col 0 - zeta1. rewrite Dade_vchar // zchar_split A0bridge0 //. by rewrite rpredB ?char_vchar ?prTIred_char ?irrWchar. apply: (addrI q%:R); transitivity '[psi]; last first. - rewrite Dade_isometry ?A0bridge0 // (cfnormBd (omuS1 _ _)) //. + rewrite Dade_isometry ?A0bridge0 // (cfnormBd (omuS1 _ _)) //. by rewrite cfnorm_prTIred n1S1. rewrite Dpsi [RHS]cfnormDd; last first. rewrite opprB cfdotC cfdot_sumr big1 ?conjC0 // => i _. @@ -827,7 +827,7 @@ have Rbeta: cfReal beta. rewrite /cfReal eq_sym -subr_eq0 rmorphD !rmorphB /= opprB 2!opprD opprB -/j. rewrite 2![(eta_ 0 _)^*%CF]cfAut_cycTIiso -!cycTIirr_aut !aut_Iirr0 -Dade_aut. set k := aut_Iirr conjC j; rewrite -(betaE 0 k) ?aut_Iirr_eq0 // addrACA. - rewrite addrC addr_eq0 addrCA subrK opprD opprK Dn raddfZnat -!raddfB /= -Dn. + rewrite addrC addr_eq0 addrCA subrK opprD opprK Dn raddfZnat -!raddfB /= -Dn. apply/eqP; rewrite (cfConjC_Dade_coherent coh_tau1) ?mFT_odd // -raddfB. rewrite Dtau1 ?Zzeta_S1 ?cfAut_seqInd //= -linearZ scalerBr; congr (tau _). rewrite opprD !rmorphB !deltaZ /= -!prTIirr_aut !aut_Iirr0 addrACA subrr. @@ -955,7 +955,7 @@ without loss tau2muj: tau2 coh_tau2 / tau2 (mu_ j) = eta_col j; last first. by case; apply/seqIndS/Iirr_kerDS; rewrite ?joing_subr. by rewrite !mem_seqInd // inE orbC inE kCi k'HUi andbT orbN. move: tau_theta; rewrite -tau2muj // -raddfZnat. - apply: (bridge_coherent scohM) sS20 coh_tau2 sS10 coh_tau1 sS1S2' _. + apply: (bridge_coherent scohM) sS20 coh_tau2 sS10 coh_tau1 sS1S2' _. by rewrite (cfun_onS _ HUtheta) ?setSD // rpredZnat ?Z_S1. move=> IHtau2; apply: (IHtau2 tau2 coh_tau2); have [IZtau2 Dtau2] := coh_tau2. have{IHtau2} /hasP[xi S2xi /=irr_xi]: has [mem irr M] S2. diff --git a/mathcomp/odd_order/PFsection12.v b/mathcomp/odd_order/PFsection12.v index fcc35bf..f605c0f 100644 --- a/mathcomp/odd_order/PFsection12.v +++ b/mathcomp/odd_order/PFsection12.v @@ -177,7 +177,7 @@ have nrS: ~~ has cfReal calS by apply: seqInd_notReal; rewrite ?mFT_odd. have U_S: uniq calS by apply: seqInd_uniq. have ccS: cfConjC_closed calS by apply: cfAut_seqInd. have conjCS: cfConjC_subset calS (seqIndD H L H 1) by split. -case: R1gen @R1 => /= R1 subc1. +case: R1gen @R1 => /= R1 subc1. have [[chi_char nrI ccI] tau_iso oI h1 hortho] := subc1. pose R chi := flatten [seq R1 'chi_i | i in S_ chi]. have memI phi i: phi \in calS -> i \in S_ phi -> 'chi_i \in calI. @@ -261,13 +261,13 @@ move=> notL1G_L2; without loss{notL1G_L2} disjointA1A: case: (Rgen _ _) @R1 => /= R1; set R1' := sval _ => [[subcoh1 hR1' defR1]]. case: (Rgen _ _) @R2 => /= R2; set R2' := sval _ => [[subcoh2 hR2' defR2]]. pose tau1 := FT_Dade maxL1; pose tau2 := FT_Dade maxL2. -move=> chi1 chi2 calS1_chi1 calS2_chi2. +move=> chi1 chi2 calS1_chi1 calS2_chi2. have [_ _ _ /(_ chi1 calS1_chi1)[Z_R1 o1R1 dtau1_chi1] _] := subcoh1. have{o1R1} [uR1 oR1] := orthonormalP o1R1. apply/orthogonalP=> a b R1a R2b; pose psi2 := tau2 (chi2 - chi2^*%CF). have Z1a: a \in dirr G by rewrite dirrE Z_R1 //= oR1 ?eqxx. suffices{b R2b}: '[a, psi2] == 0. - apply: contraTeq => nz_ab; rewrite /psi2 /tau2. + apply: contraTeq => nz_ab; rewrite /psi2 /tau2. have [_ _ _ /(_ chi2 calS2_chi2)[Z_R2 o1R2 ->] _] := subcoh2. suffices [e ->]: {e | a = if e then - b else b}. rewrite -scaler_sign cfdotC cfdotZr -cfdotZl scaler_sumr. @@ -338,7 +338,7 @@ Let S_ (chi : 'CF(L)) := [set i in irr_constt chi]. Lemma FTtype1_ortho_constant (psi : 'CF(G)) x : {in calS, forall phi, orthogonal psi (R phi)} -> x \in L :\: H -> {in x *: H, forall y, psi y = psi x}%g. -Proof. +Proof. move=> opsiR /setDP[Lx H'x]; pose Rpsi := 'Res[L] psi. have nsHL: H <| L := gFnormal _ _; have [sHL _] := andP nsHL. have [U [[[_ _ sdHU] [U1 inertU1] _] _]] := FTtypeP 1 maxL Ltype1. @@ -385,7 +385,7 @@ have {supp12B} oResD xi i1 i2 : xi \in calS -> i1 \in S_ xi -> i2 \in S_ xi -> apply/eqP; rewrite -subr_eq0; have := supp12B w; rewrite !cfunE => -> //. by rewrite tADH in_set0. have{nzAH} tiH: normedTI ('A(L) :\: H^#) G L by rewrite -A1Hdef TIsub ?A1Hdef. - have{supp12B} supp12B : 'chi_i1 - 'chi_i2 \in 'CF(L, 'A(L) :\: H^#). + have{supp12B} supp12B : 'chi_i1 - 'chi_i2 \in 'CF(L, 'A(L) :\: H^#). by apply/cfun_onP; apply: supp12B. have [_ /subsetIP[_ nAHL] _] := normedTI_P tiH. pose tau1 := restr_Dade ddL (subsetDl _ _) nAHL. @@ -412,7 +412,7 @@ move=> _ /lcosetP[h Hh ->] /=; rewrite (cfun_sum_cfdot Rpsi). pose calX := Iirr_kerD L H 1%g; rewrite (bigID (mem calX) xpredT) /= !cfunE. set sumX := \sum_(i in _) _; suffices HsumX: sumX \in 'CF(L, H). rewrite !(cfun_on0 HsumX) ?groupMr // !sum_cfunE. - rewrite !add0r; apply: eq_bigr => i;rewrite !inE sub1G andbT negbK => kerHi. + rewrite !add0r; apply: eq_bigr => i; rewrite !inE sub1G andbT negbK => kerHi. by rewrite !cfunE cfkerMr ?(subsetP kerHi). rewrite [sumX](set_partition_big _ (FTtype1_irr_partition L)) /=. apply: rpred_sum => A; rewrite inE => /mapP[xi calS_xi defA]. @@ -456,7 +456,7 @@ have tiP: trivIset P. case: ifP (cfclass_Ind_cases i1 i2 nsH'H) => _; first by rewrite /P_ => ->. have NiH i: 'Ind[H,H'] 'chi_i \is a character by rewrite cfInd_char ?irr_char. case/(constt_ortho_char (NiH i1) (NiH i2) i1Hj i2Hj)/eqP/idPn. - by rewrite cfnorm_irr oner_eq0. + by rewrite cfnorm_irr oner_eq0. have coverP: cover P =i predT. move=> j; apply/bigcupP; have [i jH'i] := constt_cfRes_irr H' j. by exists (P_ i); [apply: mem_imset | rewrite inE constt_Ind_Res]. @@ -524,7 +524,7 @@ have frobHU: [Frobenius L = H ><| U] := set_Frobenius_compl defL frobL. have [R [scohS _ _]] := Rgen maxL Ltype1; rewrite -/calS -/tau in scohS. have [tiH | [cHH _] | [expUdvH1 _]] := MtypeI. - have /Sibley_coherence := And3 (mFT_odd L) nilH tiH. - case/(_ U)=> [|tau1 [IZtau1 Dtau1]]; first by left. + case/(_ U)=> [|tau1 [IZtau1 Dtau1]]; first by left. exists tau1; split=> // chi Schi; rewrite Dtau1 //. by rewrite /tau Dade_Ind ?FTsupp_Frobenius ?(zcharD1_seqInd_on _ Schi). - apply/(uniform_degree_coherence scohS)/(@all_pred1_constant _ #|L : H|%:R). @@ -819,7 +819,7 @@ Let Ecyclic_le_p : cyclic E /\ (e %| p.-1) || (e %| p.+1). Proof. pose P := 'O_p(H)%G; pose T := 'Ohm_1('Z(P))%G. have sylP: p.-Sylow(H) P := nilpotent_pcore_Hall p (Fcore_nil L). -have [[sPH pP _] [sP0M pP0 _]] := (and3P sylP, and3P sylP0). +have [[sPH pP _] [sP0M pP0 _]] := (and3P sylP, and3P sylP0). have sP0P: P0 \subset P by rewrite (sub_normal_Hall sylP) ?pcore_normal. have defP0: P :&: M = P0. rewrite [P :&: M](sub_pHall sylP0 (pgroupS _ pP)) ?subsetIl ?subsetIr //. @@ -861,7 +861,7 @@ have ffulE: mx_faithful rE by apply: abelem_mx_faithful. have p'E: [char 'F_p]^'.-group E. rewrite (eq_p'group _ (charf_eq (char_Fp pr_p))) (coprime_p'group _ pV) //. by rewrite coprime_sym (coprimeSg sVH) ?(Frobenius_coprime frobHE). -have dimV: 'dim V = 2 by rewrite (dim_abelemE abelV) // oV pfactorK. +have dimV: 'dim V = 2 by rewrite (dim_abelemE abelV) // oV pfactorK. have cEE: abelian E. by rewrite dimV in (rE) ffulE; apply: charf'_GL2_abelian (mFT_odd E) ffulE _. have Enonscalar y: y \in E -> y != 1%g -> ~~ is_scalar_mx (rE y). @@ -986,7 +986,7 @@ have Sgt1: (1 < size calS)%N by apply: seqInd_nontrivial Schi; rewrite ?mFT_odd. have De: #|L : H| = e by rewrite -(index_sdprod defL). have [] := Dade_Ind1_sub_lin cohS_H Sgt1 irr_chi Schi; rewrite ?De //. rewrite -/tauL_H -/calS -/psi /=; set alpha := 'Ind 1 - chi. -case=> o_tau_1 tau_alpha_1 _ [Gamma [o_tau1_Ga _ [a Za tau_alpha] _] _]. +case=> o_tau_1 tau_alpha_1 _ [Gamma [o_tau1_Ga _ [a Za tau_alpha] _] _]. have [[Itau1 _] Dtau1] := cohS_H. have o1calS: orthonormal calS. by rewrite (sub_orthonormal irrS) ?seqInd_uniq ?irr_orthonormal. @@ -1227,7 +1227,7 @@ have{lb_psiM lb_psiL ub_rhoML ubM} ubK: (#|K / K'|%g < 4)%N. rewrite invfM invrK mulrC -(subrK #|K|%:R #|K'|%:R) mulrDl divff ?neq0CG //. rewrite -opprB mulNr addrC ltr_subr_addl -ltr_subr_addr. have /Frobenius_context[_ _ ntE _ _] := set_Frobenius_compl defL frobL. - have egt2: (2 < e)%N by rewrite odd_geq ?mFT_odd ?cardG_gt1. + have egt2: (2 < e)%N by rewrite odd_geq ?mFT_odd ?cardG_gt1. have e1_gt0: 0 < e.-1%:R :> algC by rewrite ltr0n -(subnKC egt2). apply: ltr_le_trans (_ : e%:R / e.-1%:R ^+ 2 <= _). rewrite ltr_pdivl_mulr ?exprn_gt0 //. @@ -1254,7 +1254,7 @@ have [/sdprodP[_ _ nKU0 tiKU0] ntK _ _ _] := Frobenius_context frobU0. have nK'U0: U0 \subset 'N(K') by apply: gFnorm_trans. have frobU0K': [Frobenius K <*> U0 / K' = (K / K') ><| (U0 / K')]%g. have solK: solvable K by rewrite ?nilpotent_sol ?Fcore_nil. - rewrite Frobenius_proper_quotient ?(sol_der1_proper solK) // /(_ <| _). + rewrite Frobenius_proper_quotient ?(sol_der1_proper solK) // /(_ <| _). by rewrite (subset_trans (der_sub 1 _)) ?joing_subl // join_subG gFnorm. have isoU0: U0 \isog U0 / K'. by rewrite quotient_isog //; apply/trivgP; rewrite -tiKU0 setSI ?gFsub. diff --git a/mathcomp/odd_order/PFsection13.v b/mathcomp/odd_order/PFsection13.v index 18e8606..339df0f 100644 --- a/mathcomp/odd_order/PFsection13.v +++ b/mathcomp/odd_order/PFsection13.v @@ -532,7 +532,7 @@ have Zalpha: alpha \in 'Z[irr H]. rewrite cfResInd_sum_cfclass ?reindex_cfclass -?cfnorm_Ind_irr //=. rewrite scalerK ?cfnorm_eq0 ?cfInd_eq0 ?irr_neq0 ?irr_char ?gFsub //. by apply: rpred_sum => i _; apply: irr_vchar. -have{Da_ Za_} Za: a \in Cint by rewrite -[a]Da_ ?Za_ ?sS1H. +have{Da_ Za_} Za: a \in Cint by rewrite -[a]Da_ ?Za_ ?sS1H. exists alpha => //; split=> //. set a1 := a / _ in Dchi; pose phi := a1 *: 'Res zeta1 + alpha. transitivity (#|H|%:R * '[phi] - `|phi 1%g| ^+ 2). @@ -738,7 +738,7 @@ have [tau1 cohS [b _ Dtau1]] := FTtypeP_coherence. have Zeta01: eta01 \in 'Z[irr G] by rewrite cycTIiso_vchar. pose j1 := signW2 b #1; pose d : algC := (-1) ^+ b; pose mu1 := mu_ j1. have nzj1: j1 != 0 by [rewrite signW2_eq0 ?Iirr1_neq0]; have S1mu1 := S1mu nzj1. -have o_mu_eta01 j: j != 0 -> '[tau1 (mu_ j), eta01] = d *+ (j == j1). +have o_mu_eta01 j: j != 0 -> '[tau1 (mu_ j), eta01] = d *+ (j == j1). move/Dtau1->; rewrite -/d cfdotZl cfdot_suml big_ord_recl /=. rewrite cfdot_cycTIiso andTb (inv_eq (signW2K b)). by rewrite big1 ?addr0 ?mulr_natr // => i _; rewrite cfdot_cycTIiso. @@ -783,7 +783,7 @@ have{tau1muj} ->: tau1 lambda x = sum_eta1 x. have Hmuj: mu_ j \in calH := Hmu nz_j. have dmu1: (lambda - mu_ j) 1%g == 0 by rewrite !cfunE !calHuq ?subrr. have H1dmu: lambda - mu_ j \in 'CF(S, H^#). - by rewrite cfun_onD1 rpredB ?((seqInd_on (gFnormal _ _)) setT). + by rewrite cfun_onD1 rpredB ?((seqInd_on (gFnormal _ _)) setT). have [_ ->] := cohS; last first. by rewrite zcharD1E ?rpredB ?mem_zchar ?FTseqInd_TIred /=. have A0dmu := cfun_onS (Fitting_sub_FTsupp0 maxS) H1dmu. @@ -968,8 +968,8 @@ Section Thirteen_10_to_13_15. Variable lambda : 'CF(S). Hypotheses (Slam : lambda \in calS) (irrHlam : irrIndH lambda). -Let Hlam : lambda \in calH. Proof. by have [] := andP irrHlam. Qed. -Let Ilam : lambda \in irr S. Proof. by have [] := andP irrHlam. Qed. +Let Hlam : lambda \in calH. Proof. by have [] := andP irrHlam. Qed. +Let Ilam : lambda \in irr S. Proof. by have [] := andP irrHlam. Qed. Let c := #|C|. Let u := #|U : C|. @@ -1045,7 +1045,7 @@ have Kdtheta xi: by rewrite cfInd_on ?subsetT. have oHK alpha beta: alpha \in 'CF(G, HG) -> beta \in 'CF(G, KG) -> '[alpha, beta] = 0. -- by move=> Halpha Kbeta; rewrite (cfdotElr Halpha Kbeta) tiHK big_set0 mulr0. +- by move=> Halpha Kbeta; rewrite (cfdotElr Halpha Kbeta) tiHK big_set0 mulr0. have o_lambda_theta: '[tau1S lambda, tau1T theta] = 0. pose S1 := lambda :: lambda^*%CF; pose T1 := theta :: theta^*%CF. have sS1S: {subset S1 <= calS} by apply/allP; rewrite /= Slam cfAut_seqInd. @@ -1118,7 +1118,7 @@ have{meanTI} meanG f : have{type24} tiK: normedTI K^# G T by have/type24[] := TtypeP. move=> fJ; rewrite -!meanTI // {1}/mean (big_setD1 1%g) // (big_setID H1G) /=. rewrite [in rhs in _ + (_ + rhs)](big_setID K1G) /= -/g -!mulrDl !addrA. - congr ((_ + _ + _ + _) / g); rewrite ?(setIidPr _) // /H1G /K1G. + congr ((_ + _ + _ + _) / g); rewrite ?(setIidPr _) // /H1G /K1G. + by rewrite class_supportEr -cover_imset -class_supportD1 setSD ?subsetT. + rewrite subsetD -setI_eq0 setIC tiHK eqxx andbT. by rewrite class_supportEr -cover_imset -class_supportD1 setSD ?subsetT. @@ -1126,7 +1126,7 @@ have{meanTI} meanG f : apply: eq_bigl => x; rewrite !inE andbT -!negb_or orbCA orbA orbC. by case: (x =P 1%g) => //= ->; rewrite mem_class_support ?group1. have lam1_ub: mean G0 G (nm2 lam1) <= lambda 1%g ^+ 2 / #|S|%:R - g^-1. - have [[Itau1 Ztau1] _] := cohS. + have [[Itau1 Ztau1] _] := cohS. have{Itau1} n1lam1: '[lam1] = 1 by rewrite Itau1 ?mem_zchar ?irrWnorm. have{Ztau1} Zlam1: lam1 \in 'Z[irr G] by rewrite Ztau1 ?mem_zchar. rewrite -ler_opp2 opprB -(ler_add2l '[lam1]) {1}n1lam1 addrCA. @@ -1452,7 +1452,7 @@ Lemma FTtypeP_primes_mod_cases : & p != 1 %[mod q] -> [/\ coprime ustar p.-1, ustar == 1 %[mod q] & forall b, b %| ustar -> b == 1 %[mod q]]]. -Proof. +Proof. have ustar_mod r: p = 1 %[mod r] -> ustar = q %[mod r]. move=> pr1; rewrite -[q]card_ord -sum1_card /ustar predn_exp //. rewrite -(subnKC pgt2) mulKn // subnKC //. @@ -1510,7 +1510,7 @@ have b_odd: odd b by rewrite Dbu odd_mul mFT_odd andbT in ustar_odd. case: ifPn => [/p1_q q_dv_ustar | /p'1_q[_ _ /(_ b)]]. have /dvdnP[c Db]: q %| b. rewrite Dbu Gauss_dvdl // coprime_sym in q_dv_ustar. - by apply: coprimeSg coPUq; have /mulG_sub[_ sUPU] := sdprodW defPU. + by apply: coprimeSg coPUq; have /mulG_sub[_ sUPU] := sdprodW defPU. have c_odd: odd c by rewrite Db odd_mul mFT_odd andbT in b_odd. suffices /eqP c1: c == 1%N by rewrite Dbu Db c1 mul1n mulKn ?prime_gt0. rewrite eqn_leq odd_gt0 // andbT -ltnS -(odd_ltn 3) // ltnS. @@ -1820,7 +1820,7 @@ have Dgamma: 'Ind[S, P <*> W1] 1 = (gamma %% P)%CF. by rewrite quotientYidl //; have [] := sdprodP defPW1. have gamma1: gamma 1%g = u%:R. rewrite -cfMod1 -Dgamma cfInd1 // cfun11 -divgS // -(sdprod_card defPW1). - by rewrite mulr1 -(sdprod_card defS) -(sdprod_card defPU) divnMr // mulKn. + by rewrite mulr1 -(sdprod_card defS) -(sdprod_card defPU) divnMr // mulKn. have frobUW1: [Frobenius U <*> W1 = U ><| W1] by have [[]] := Sfacts. have q_dv_u1: q %| u.-1 := Frobenius_dvd_ker1 frobUW1. have [nP_UW1 /isomP[/=]] := sdprod_isom defS_P; set h := restrm _ _ => injh hS. @@ -2041,7 +2041,7 @@ have ZsubL psi: psi \in calL -> psi - psi^*%CF \in 'Z[calL, L^#]. have mem_eta j: eta_ 0 j \in map sigma (irr W) by rewrite map_f ?mem_irr. have otau1eta: orthogonal (map tau1 calL) (map sigma (irr W)). apply/orthogonalP=> _ _ /mapP[psi Lpsi ->] /mapP[w irr_w ->]. - have{w irr_w} [i [j ->]] := cycTIirrP defW irr_w; rewrite -/(w_ i j). + have{w irr_w} [i [j ->]] := cycTIirrP defW irr_w; rewrite -/(w_ i j). pose Psi := tau1 (psi - psi^*%CF); pose NC := cyclicTI_NC ctiWG. have [[Itau1 Ztau1] Dtau1] := cohL. have Lpsis: psi^*%CF \in calL by rewrite cfAut_seqInd. @@ -2114,7 +2114,7 @@ have{Gamma_even} odd_bSphi_bLeta: (bSphi + bLeta == 1 %[mod 2])%C. rewrite 2!cfdotDl 2!['[_, eta01]]cfdotDl 2!['[_, Gamma]]cfdotDl !cfdotNl. rewrite cfnorm1 o_GaL_1 ['[1, Gamma]]cfdotC Ga1 conjC0 addr0 add0r. have ->: 1 = eta_ 0 0 by rewrite /w_ cycTIirr00 cycTIiso1. - rewrite cfdot_cycTIiso mulrb ifN_eqC ?Iirr1_neq0 // add0r. + rewrite cfdot_cycTIiso mulrb ifN_eqC ?Iirr1_neq0 // add0r. rewrite 2?(orthogonalP otau1eta _ _ (map_f _ _) (mem_eta _)) // oppr0 !add0r. by rewrite addr0 addrA addrC addr_eq0 !opprB addrA /eqCmod => /eqP <-. have abs_mod2 a: a \in Cint -> {b : bool | a == b%:R %[mod 2]}%C. diff --git a/mathcomp/odd_order/PFsection14.v b/mathcomp/odd_order/PFsection14.v index bed35bc..1b8a531 100644 --- a/mathcomp/odd_order/PFsection14.v +++ b/mathcomp/odd_order/PFsection14.v @@ -231,7 +231,7 @@ have lb_b ij (b_ij := b (sigma 'chi_ij)): 1 <= `|b_ij| ^+ 2 ?= iff [exists n : bool, b_ij == (-1) ^+ n]. - have /codomP[[i j] Dij] := dprod_Iirr_onto defW ij. have{b_ij} ->: b_ij = a i j. - rewrite /a /w_ -Dij Dbeta defGa 2!cfdotDl. + rewrite /a /w_ -Dij Dbeta defGa 2!cfdotDl. have ->: '[X, sigma 'chi_ij] = b_ij by rewrite /b_ij Db. by rewrite (orthoPl oYeta) ?(orthoPl oZeta) ?map_f ?mem_irr // !addr0. have Zaij: a i j \in Cint by rewrite Cint_cfdot_vchar ?cycTIiso_vchar. @@ -282,7 +282,7 @@ suffices /cfdot_add_dirr_eq1: '[tau1L phi - tau1L phi^*%CF, chi] = 1. rewrite cfdotBr (span_orthogonal o_tauLeta) ?add0r //; last first. by rewrite rpredB ?memv_span ?map_f ?cfAut_seqInd. have Zdphi := seqInd_sub_aut_zchar nsHL conjC Lphi. -rewrite -raddfB Dtau1 ?zcharD1_seqInd // Dade_isometry ?(zchar_on Zdphi) //. +rewrite -raddfB Dtau1 ?zcharD1_seqInd // Dade_isometry ?(zchar_on Zdphi) //. rewrite cfdotBr !cfdotBl cfdot_conjCl cfAutInd rmorph1 irrWnorm //. rewrite (seqInd_ortho_Ind1 _ _ Lphi) // conjC0 subrr add0r opprK. by rewrite cfdot_conjCl (seqInd_conjC_ortho _ _ _ Lphi) ?mFT_odd ?conjC0 ?subr0. @@ -596,7 +596,7 @@ have /exists_inP[x /setD1P[ntx R0x] ntCPx]: [exists x in R0^#, 'C_P[x] != 1%g]. by rewrite gen_subG; apply/bigcupsP=> x /(eqfun_inP regR0P)->. have{x ntx R0x ntCPx} sZR_R0: 'Z(R) \subset R0. have A0x: x \in 'A0(S). - have [z /setIP[Pz cyz] ntz] := trivgPn _ ntCPx. + have [z /setIP[Pz cyz] ntz] := trivgPn _ ntCPx. apply/setUP; left; apply/bigcupP; exists z. by rewrite !inE ntz (subsetP (Fcore_sub_FTcore maxS)). by rewrite (eqP Stype2) 3!inE ntx cent1C (subsetP sUPU) ?(subsetP sR0U). @@ -798,7 +798,7 @@ have nzT1_Ga zeta: zeta \in calT1 -> `|'[Gamma, tau1T zeta]| ^+ 2 >= 1. have A0betaT0: betaT0 \in 'CF(T, 'A0(T)). by rewrite (cfun_onS (FTsupp1_sub0 _)) // /'A1(T) ?FTcore_eq_der1. have ZbetaT0: betaT0 \in 'Z[irr T]. - by rewrite rpredB ?char_vchar ?(seqInd_char T1zeta) ?prTIred_char. + by rewrite rpredB ?char_vchar ?(seqInd_char T1zeta) ?prTIred_char. pose Delta := tauT betaT0 - 1 + tau1T zeta. have nz_i1: #1 != 0 := Iirr1_neq0 ntW2. rewrite -(canLR (addKr _) (erefl Delta)) opprB cfdotDr cfdotBr oGa1 add0r. diff --git a/mathcomp/odd_order/PFsection2.v b/mathcomp/odd_order/PFsection2.v index f92bb16..c982642 100644 --- a/mathcomp/odd_order/PFsection2.v +++ b/mathcomp/odd_order/PFsection2.v @@ -315,7 +315,7 @@ Section AutomorphismCFun. Variable u : {rmorphism algC -> algC}. Local Notation "alpha ^u" := (cfAut u alpha). -Lemma Dade_aut alpha : (alpha^u)^\tau = (alpha^\tau)^u. +Lemma Dade_aut alpha : (alpha^u)^\tau = (alpha^\tau)^u. Proof. apply/cfunP => g; rewrite cfunE. have [/bigcupP[a Aa A1g] | notAtau_g] := boolP (g \in Atau). @@ -325,7 +325,7 @@ Qed. End AutomorphismCFun. -Lemma Dade_conjC alpha : (alpha^*)^\tau = ((alpha^\tau)^*)%CF. +Lemma Dade_conjC alpha : (alpha^*)^\tau = ((alpha^\tau)^*)%CF. Proof. exact: Dade_aut. Qed. (* This is Peterfalvi (2.7), main part *) @@ -344,7 +344,7 @@ have dd1_id: {in A, forall a, dd1 (repr (a ^: L)) = dd1 a}. by move=> a Aa /=; have [x Lx ->] := repr_class L a; apply: Dade_support1_id. have ->: Atau = cover P_G. apply/setP=> u; apply/bigcupP/bigcupP=> [[a Aa Fa_u] | [Fa]]; last first. - by case/imsetP=> a /sTA Aa -> Fa_u; exists a. + by case/imsetP=> a /sTA Aa -> Fa_u; exists a. by exists (dd1 a) => //; rewrite -dd1_id //; do 2!apply: mem_imset. have [tiP_G inj_dd1]: trivIset P_G /\ {in T &, injective dd1}. apply: trivIimset => [_ _ /imsetP[a Aa ->] /imsetP[b Ab ->] |]; last first. @@ -507,7 +507,7 @@ have defMBx: 'M(B :^ x) = 'M(B) :^ x. have def_aa_x y: 'aa_(B :^ x) (y ^ x) = 'aa_B y. rewrite !rDadeE // defMBx memJ_conjg !mulrb -mulHNB defHBx defNBx. have [[h z Hh Nz ->] | // ] := mulsgP. - by rewrite conjMg !remgrMid ?cfunJ ?memJ_conjg // -conjIg tiHNB conjs1g. + by rewrite conjMg !remgrMid ?cfunJ ?memJ_conjg // -conjIg tiHNB conjs1g. apply/cfunP=> y; have Gx := subsetP sLG x Lx. rewrite [eq]lock !cfIndE ?sMG //= {1}defMBx cardJg -lock; congr (_ * _). rewrite (reindex_astabs 'R x) ?astabsR //=. @@ -542,7 +542,7 @@ Proof. move=> dB; set LHS := 'Ind _ g. have defMB := Dade_set_sdprod dB; have [_ mulHNB nHNB tiHNB] := sdprodP defMB. have [sHMB sNMB] := mulG_sub mulHNB. -have{LHS} ->: LHS = #|'M(B)|%:R^-1 * \sum_(x in calA g 'M(B)) 'aa_B (g ^ x). +have{LHS} ->: LHS = #|'M(B)|%:R^-1 * \sum_(x in calA g 'M(B)) 'aa_B (g ^ x). rewrite {}/LHS cfIndE ?sMG //; congr (_ * _). rewrite (bigID [pred x | g ^ x \in 'M(B)]) /= addrC big1 ?add0r => [|x]. by apply: eq_bigl => x; rewrite inE. @@ -551,7 +551,7 @@ pose fBg x := remgr 'H(B) 'N_L(B) (g ^ x). pose supp_aBg := [pred b in A | g \in dd1 b]. have supp_aBgP: {in calA g 'M(B), forall x, ~~ supp_aBg (fBg x) -> 'aa_B (g ^ x)%g = 0}. -- move=> x /setIdP[]; set b := fBg x => Gx MBgx notHGx; rewrite rDadeE // MBgx. +- move=> x /setIdP[]; set b := fBg x => Gx MBgx notHGx; rewrite rDadeE // MBgx. have Nb: b \in 'N_L(B) by rewrite mem_remgr ?mulHNB. have Cb: b \in 'C_L[b] by rewrite inE cent1id; have [-> _] := setIP Nb. rewrite (cfun_on0 CFaa) // -/(fBg x) -/b; apply: contra notHGx => Ab. @@ -559,7 +559,7 @@ have supp_aBgP: {in calA g 'M(B), forall x, have [sBA /set0Pn[a Ba]] := setIdP dB; have Aa := subsetP sBA a Ba. have [|/= partHBb _] := partition_cent_rcoset nHb. rewrite (coprime_dvdr (order_dvdG Cb)) //= ['H(B)](bigD1 a) //=. - by rewrite (coprimeSg (subsetIl _ _)) ?coHL. + by rewrite (coprimeSg (subsetIl _ _)) ?coHL. have Hb_gx: g ^ x \in 'H(B) :* b by rewrite mem_rcoset mem_divgr ?mulHNB. have [defHBb _ _] := and3P partHBb; rewrite -(eqP defHBb) in Hb_gx. case/bigcupP: Hb_gx => Cy; case/imsetP=> y HBy ->{Cy} Cby_gx. @@ -571,7 +571,7 @@ have supp_aBgP: {in calA g 'M(B), forall x, have [nsHb _ defCb _ _] := sdprod_context (defCA Ab). have [hallHb _] := coprime_mulGp_Hall defCb (pi'H b) (piCL Ab). rewrite (sub_normal_Hall hallHb) ?setSI // (pgroupS _ (pi'H a)) //=. - by rewrite subIset ?sHBa. + by rewrite subIset ?sHBa. split=> [notHGg | a Aa Hag]. rewrite big1 ?mulr0 // => x; move/supp_aBgP; apply; set b := fBg x. by apply: contra notHGg; case/andP=> Ab Hb_x; apply/bigcupP; exists b. @@ -697,7 +697,7 @@ have Ca: a \in 'C_L[a] by rewrite inE cent1id La. have [|/= partHBa nbHBa] := partition_cent_rcoset nHa. have [sBA] := setIdP dB; case/set0Pn=> b Bb; have Ab := subsetP sBA b Bb. rewrite (coprime_dvdr (order_dvdG Ca)) //= ['H(B)](bigD1 b) //=. - by rewrite (coprimeSg (subsetIl _ _)) ?coHL. + by rewrite (coprimeSg (subsetIl _ _)) ?coHL. pose pHBa := mem ('H(B) :* a). rewrite -sum1_card (partition_big (fun x => g ^ x) pHBa) /= => [|x]; last first. by case/setIdP=> _ ->. diff --git a/mathcomp/odd_order/PFsection3.v b/mathcomp/odd_order/PFsection3.v index eb5ccf8..6bff279 100644 --- a/mathcomp/odd_order/PFsection3.v +++ b/mathcomp/odd_order/PFsection3.v @@ -715,7 +715,7 @@ Proof. by move=> sth21 Uth1 m /(sat_exact sth21)/Uth1. Qed. Fact tr_Lmodel_subproof (m : model) : is_Lmodel (tr m) (fun ij => m (tr ij)). Proof. case: m => /= d f _ [[odd_d1 odd_d2 d1gt1 d2gt1 neq_d12] Zf fP] _. -split=> // [|[j1 i1] [j2 i2]]; first by rewrite eq_sym. +split=> // [|[j1 i1] [j2 i2]]; first by rewrite eq_sym. by rewrite ![_ \in _]andbC /= => wf_ij1 wf_ij2; rewrite fP // /dot_ref mulnC. Qed. @@ -1079,7 +1079,7 @@ rewrite -[f in f _ kvs2]/(idfun _); set f := idfun _; rewrite /= in f *. have [/= _ Ukvs2 kvsP] := satP m_th _ th_cl2. move: Ukvs2; set kvs2' := kvs2; set mm := false. have /allP: {subset kvs2' <= kvs2} by []. -pose lit12 k := (k, 1) \in kvs1 /\ (k, 1) \in kvs2. +pose lit12 k := (k, 1) \in kvs1 /\ (k, 1) \in kvs2. have: mm -> {k | lit12 k & k \notin unzip1 kvs2'} by []. elim: kvs2' mm => [|[k v2] kvs2' IH] //= mm mmP /andP[kvs2k /IH{IH}IHkvs]. case/andP=> kvs2'k /IHkvs{IHkvs}IHkvs; case: ifP => [_ | /norP[]]. @@ -1087,7 +1087,7 @@ case/andP=> kvs2'k /IHkvs{IHkvs}IHkvs; case: ifP => [_ | /norP[]]. have [v1 /= kvs1k | //] := get_litP; case: eqP => // -> in kvs2k * => _ nz_v1. case Dbb: (th_bbox th) (th_bboxP (bbox_refl (th_bbox th))) => [ri rj] rijP. have [/andP[/=lti1r ltj1r] /andP[/=lti2r _]] := (rijP _ th_cl1, rijP _ th_cl2). -have rkP := th_dimP (leqnn _) _ th_cl1; have /= ltkr := rkP _ kvs1k. +have rkP := th_dimP (leqnn _) _ th_cl1; have /= ltkr := rkP _ kvs1k. have symP := unsat_match (Sym [:: i2; i1] [:: j1] _) _ _ m m_th. rewrite /= Dbb lti1r lti2r ltj1r inE eq_sym neq_i /= in symP. have [Dv1 | v1_neq1] /= := altP eqP; first rewrite Dv1 in kvs1k. @@ -1156,7 +1156,7 @@ consider b42; uwlog Db42: (& b42 = x6 - x4 + x5). by uhave -x2 in b42 as O(42, 31); symmetric to b42x4. by uhave ~x1 in b42 as L(42, 41); uhave x5 in b42 as O(42, 21); uexact Db42. uwlog Db32: (& ? in b32); first uexact Db32. -uwlog Db41: (& ? in b41); first uexact Db41. +uwlog Db41: (& ? in b41); first uexact Db41. consider b12; uwlog b12x5: x5 | ~x5 in b12 as L(12, 42). uhave ~x6 | x6 in b12 as L(12, 42); last by consider b22; symmetric to b12x5. uhave -x4 in b12 as O(12, 42); uhave x1 in b12 as O(12, 21). @@ -1521,7 +1521,7 @@ Lemma cycTI_NC_opp (phi : 'CF(G)) : (NC (- phi)%R = NC phi)%N. Proof. by apply: eq_card=> [[i j]]; rewrite !inE cfdotNl oppr_eq0. Qed. Lemma cycTI_NC_sign (phi : 'CF(G)) n : (NC ((-1) ^+ n *: phi)%R = NC phi)%N. -Proof. +Proof. elim: n=> [|n IH]; rewrite ?(expr0,scale1r) //. by rewrite exprS -scalerA scaleN1r cycTI_NC_opp. Qed. @@ -1561,7 +1561,7 @@ Qed. Lemma cycTI_NC_sub n1 n2 phi1 phi2 : (NC phi1 <= n1 -> NC phi2 <= n2 -> NC (phi1 - phi2)%R <= n1 + n2)%N. -Proof. by move=> ub1 ub2; rewrite cycTI_NC_add ?cycTI_NC_opp. Qed. +Proof. by move=> ub1 ub2; rewrite cycTI_NC_add ?cycTI_NC_opp. Qed. Lemma cycTI_NC_scale_nz a phi : a != 0 -> NC (a *: phi) = NC phi. Proof. @@ -1660,7 +1660,7 @@ Lemma cycTI_NC_minn (phi : 'CF(G)) : (minn w1 w2 <= NC phi)%N. Proof. move=> phiV_0 /andP[/card_gt0P[[i0 j0]]]; rewrite inE /= => nz_a0 ubNC. -pose L := [seq (i0, j) | j : Iirr W2]; pose C := [seq (i, j0) | i : Iirr W1]. +pose L := [seq (i0, j) | j : Iirr W2]; pose C := [seq (i, j0) | i : Iirr W1]. have [oL oC]: #|L| = w2 /\ #|C| = w1 by rewrite !card_image // => i j []. have [Da | Da] := small_cycTI_NC phiV_0 ubNC nz_a0. rewrite geq_min -oC subset_leq_card //. @@ -1726,7 +1726,7 @@ have NCk2'_le1 (dI : {set _}): - rewrite (cardsD1 dk2) => -> /eqP/cards1P[dk ->]. by rewrite big_set1 cycTI_NC_dirr ?dirr_dchi. suffices /psi_phi'_lt0/ltr_geF/idP[]: dk2 \in Irho :\: Iphi. - rewrite rhoIdE cfdotZr signrN rmorphN mulNr oppr_ge0 rmorph_sign. + rewrite rhoIdE cfdotZr signrN rmorphN mulNr oppr_ge0 rmorph_sign. have := small_cycTI_NC psiV0 NCpsi psi_k1_neq0. by case=> // ->; rewrite mulrCA nmulr_lle0 ?ler0n. have: (1 + 1 < NC psi)%N. diff --git a/mathcomp/odd_order/PFsection4.v b/mathcomp/odd_order/PFsection4.v index c897e84..b5f9344 100644 --- a/mathcomp/odd_order/PFsection4.v +++ b/mathcomp/odd_order/PFsection4.v @@ -482,7 +482,7 @@ Lemma prTIred_inj : injective mu_. Proof. move=> j1 j2 /(congr1 (cfdot (mu_ j1)))/esym/eqP; rewrite !cfdot_prTIred. by rewrite eqC_nat eqn_pmul2r ?cardG_gt0 // eqxx; case: (j1 =P j2). -Qed. +Qed. Lemma prTIred_not_real j : j != 0 -> ~~ cfReal (mu_ j). Proof. @@ -645,7 +645,7 @@ have [[_ nKL] [nKz _]] := (andP nsKL, setIdP Itheta_z). suffices{k theta Itheta_z} /eqP->: imIchi == 'Fix_Jirr[z]. by apply/afix1P/irr_inj; rewrite conjg_IirrE inertiaJ. rewrite eqEcard; apply/andP; split. - apply/subsetP=> _ /imsetP[j _ ->]; apply/afix1P/irr_inj. + apply/subsetP=> _ /imsetP[j _ ->]; apply/afix1P/irr_inj. by rewrite conjg_IirrE -(cfRes_prTIirr 0) (cfConjgRes _ _ nsKL) ?cfConjg_id. have ->: #|imIchi| = w2 by rewrite card_imset //; apply: prTIres_inj. have actsL_KK: [acts L, on classes K | 'Js \ subsetT L]. @@ -720,7 +720,7 @@ Record prime_Dade_hypothesis : Prop := PrimeDadeHypothesis { Hypothesis prDadeHyp : prime_Dade_hypothesis. Let ctiWG : cyclicTI_hypothesis G defW := prDadeHyp. -Let ptiWL : primeTI_hypothesis L K defW := prDadeHyp. +Let ptiWL : primeTI_hypothesis L K defW := prDadeHyp. Let ctiWL : cyclicTI_hypothesis L defW := prime_cycTIhyp ptiWL. Let ddA0 : Dade_hypothesis G L A0 := prDadeHyp. Local Notation ddA0def := (prDade_def prDadeHyp). @@ -838,7 +838,7 @@ Qed. (* First part of PeterFalvi (4.8). *) Lemma prDade_sub_TIirr_on i j k : j != 0 -> k != 0 -> mu2_ i j 1%g = mu2_ i k 1%g -> - mu2_ i j - mu2_ i k \in 'CF(L, A0). + mu2_ i j - mu2_ i k \in 'CF(L, A0). Proof. move=> nzj nzk eq_mu1. apply/cfun_onP=> g; rewrite defA0 !inE negb_or !cfunE => /andP[A'g V'g]. @@ -846,7 +846,7 @@ have [Lg | L'g] := boolP (g \in L); last by rewrite !cfun0 ?subrr. have{Lg} /bigcupP[_ /rcosetsP[x W1x ->] Kx_g]: g \in cover (rcosets K W1). by rewrite (cover_partition (rcosets_partition_mul W1 K)) (sdprodW defL). have [x1 | ntx] := eqVneq x 1%g. - have [-> | ntg] := eqVneq g 1%g; first by rewrite eq_mu1 subrr. + have [-> | ntg] := eqVneq g 1%g; first by rewrite eq_mu1 subrr. have{A'g} A1'g: g \notin 1%g |: A by rewrite !inE negb_or ntg. rewrite x1 mulg1 in Kx_g; rewrite -!(cfResE (mu2_ i _) sKL) ?cfRes_prTIirr //. by rewrite !(cfun_onP (prDade_TIres_on _)) ?subrr. @@ -924,7 +924,7 @@ have ccT: cfConjC_closed calT. by rewrite prTIred_aut cfunE conj_Cnat ?Cnat_char1 ?prTIred_char. have TonA: 'Z[calT, L^#] =i 'Z[calT, A]. have A'1: 1%g \notin A by apply: contra (subsetP sAA0 _) _; have [] := ddA0. - move => psi; rewrite zcharD1E -(setU1K A'1) zcharD1; congr (_ && _). + move=> psi; rewrite zcharD1E -(setU1K A'1) zcharD1; congr (_ && _). apply/idP/idP; [apply: zchar_trans_on psi => psi Tpsi | exact: zcharW]. have [j /andP[nz_j _] Dpsi] := imageP Tpsi. by rewrite zchar_split mem_zchar // Dpsi prDade_TIred_on. diff --git a/mathcomp/odd_order/PFsection5.v b/mathcomp/odd_order/PFsection5.v index 636c48c..e42e104 100644 --- a/mathcomp/odd_order/PFsection5.v +++ b/mathcomp/odd_order/PFsection5.v @@ -105,7 +105,7 @@ Lemma Iirr_kerDS A1 A2 B1 B2 : A2 \subset A1 -> B1 \subset B2 -> Iirr_kerD B1 A1 \subset Iirr_kerD B2 A2. Proof. by move=> sA12 sB21; rewrite setDSS ?Iirr_kerS. Qed. -Lemma Iirr_kerDY B A : Iirr_kerD (A <*> B) A = Iirr_kerD B A. +Lemma Iirr_kerDY B A : Iirr_kerD (A <*> B) A = Iirr_kerD B A. Proof. by apply/setP=> i; rewrite !inE join_subG; apply: andb_id2r => ->. Qed. Lemma mem_Iirr_ker1 i : (i \in Iirr_kerD K 1%g) = (i != 0). @@ -567,7 +567,7 @@ Lemma coherent_seqInd_conjCirr S tau R nu r : chi - chi^*%CF \in 'Z[S, L^#] & (nu chi - nu chi^*)%CF 1%g == 0]. Proof. move=> [[charS nrS ccS] [_ Ztau] oSS _ _] [[Inu Znu] Dnu] chi chi2 Schi. -have sSZ: {subset S <= 'Z[S]} by apply: mem_zchar. +have sSZ: {subset S <= 'Z[S]} by apply: mem_zchar. have vcharS: {subset S <= 'Z[irr L]} by move=> phi /charS/char_vchar. have Schi2: {subset chi2 <= 'Z[S]} by apply/allP; rewrite /= !sSZ ?ccS. have Schi_diff: chi - chi^*%CF \in 'Z[S, L^#]. @@ -608,7 +608,7 @@ have sS_ZS1: {subset S <= 'Z[S1]}; last apply: (subgen_coherent sS_ZS1). apply/allP=> eta Seta; rewrite -(rpredBr eta (rpredMn (a eta) Zeta1)). exact/mem_zchar/mem_behead/map_f. have{sS_ZS1} freeS1: free S1. - have Sgt0: (0 < size S)%N by case: (S) Seta1. + have Sgt0: (0 < size S)%N by case: (S) Seta1. rewrite /free eqn_leq dim_span /= size_map size_rem ?prednK // -(eqnP freeS). by apply/dimvS/span_subvP => eta /sS_ZS1/zchar_span. pose iso_eta1 zeta := zeta \in 'Z[S, L^#] /\ '[tau zeta, zeta1] = '[zeta, eta1]. @@ -650,7 +650,7 @@ pose beta chi := tau (chi - chi^*%CF); pose eqBP := _ =P beta _. have Zbeta: {in S, forall chi, chi - (chi^*)%CF \in 'Z[S, L^#]}. move=> chi Schi; rewrite /= zcharD1E rpredB ?mem_zchar ?ccS //= !cfunE. by rewrite subr_eq0 conj_Cnat // Cnat_char1 ?N_S. -pose sum_beta chi R := \sum_(alpha <- R) alpha == beta chi. +pose sum_beta chi R := \sum_(alpha <- R) alpha == beta chi. pose Zortho R := all (mem 'Z[irr G]) R && orthonormal R. have R chi: {R : 2.-tuple 'CF(G) | (chi \in S) ==> sum_beta chi R && Zortho R}. apply: sigW; case Schi: (chi \in S) => /=; last by exists [tuple 0; 0]. @@ -1153,7 +1153,7 @@ have Zachi: chi - a *: xi1 \in 'Z[S, L^#]. by rewrite zcharD1E !cfunE -chi1 subrr rpredB ?scale_zchar ?mem_zchar /=. have Ztau_achi := zcharW (Ztau _ Zachi). have [X R_X [Y defXY]] := subcoherent_split Schi Ztau_achi. -have [eqXY oXY oYRchi] := defXY; pose X1 := map tau1 (in_tuple S1). +have [eqXY oXY oYRchi] := defXY; pose X1 := map tau1 (in_tuple S1). suffices defY: Y = a *: tau1 xi1. by move: eqXY; rewrite defY; apply: extend_coherent_with; rewrite -?defY. have oX1: pairwise_orthogonal X1 by apply: map_pairwise_orthogonal. @@ -1321,7 +1321,7 @@ have [X [RchiX nX defX] XD_N]: exists2 X, Xspec X & XDspec X. suffices: '[X - X'] == 0 by rewrite cfnorm_eq0 subr_eq0 => /eqP->. have ZXX': '[X, X'] \in Cint by rewrite Cint_cfdot_vchar ?(zchar_trans ZRchi). rewrite cfnormB subr_eq0 nX nX' aut_Cint {ZXX'}//; apply/eqP/esym. - congr (_ *+ 2); rewrite -(addNKr (X - D xi1) X) cfdotDl cfdotC. + congr (_ *+ 2); rewrite -(addNKr (X - D xi1) X) cfdotDl cfdotC. rewrite (span_orthogonal (oR chi1 xi1 _ _)) // conjC0. rewrite -(subrK (D xi) X') cfdotDr cfdotDl cfdotNl opprB subrK. rewrite (span_orthogonal (oR xi1 xi _ _)) //; last exact/and3P. @@ -1358,7 +1358,7 @@ pose S1 := undup (phi1 :: phi1^* :: phi2 :: phi2^*)%CF. have sS1S: cfConjC_subset S1 S. split=> [|chi|chi]; rewrite ?undup_uniq //= !mem_undup; move: chi; apply/allP. by rewrite /= !ccS ?Sphi1 ?Sphi2. - by rewrite /= !inE !cfConjCK !eqxx !orbT. + by rewrite /= !inE !cfConjCK !eqxx !orbT. exists S1; rewrite !mem_undup !inE !eqxx !orbT; split=> //. apply: uniform_degree_coherence (subset_subcoherent scohS sS1S) _. apply/(@all_pred1_constant _ (phi2 1%g))/allP=> _ /mapP[chi S1chi ->] /=. diff --git a/mathcomp/odd_order/PFsection6.v b/mathcomp/odd_order/PFsection6.v index b32a57d..2add4af 100644 --- a/mathcomp/odd_order/PFsection6.v +++ b/mathcomp/odd_order/PFsection6.v @@ -14,7 +14,7 @@ Require Import sylow abelian maximal hall frobenius. From mathcomp Require Import matrix mxalgebra mxrepresentation vector ssrnum algC algnum. From mathcomp -Require Import classfun character inertia vcharacter integral_char. +Require Import classfun character inertia vcharacter integral_char. From mathcomp Require Import PFsection1 PFsection2 PFsection3 PFsection4 PFsection5. @@ -187,7 +187,7 @@ have{odd_e} mod1e_lb m: odd m -> m == 1 %[mod e] -> (m > 1 -> 2 * e + 1 <= m)%N. move=> odd_m e_dv_m1 m_gt1; rewrite eqn_mod_dvd 1?ltnW // subn1 in e_dv_m1. by rewrite mul2n addn1 dvdn_double_ltn. have nsH1L: H1 <| L by rewrite normalY // gFnormal_trans. -have nsH1K: H1 <| K by rewrite (normalS _ sKL nsH1L) // join_subG der_sub. +have nsH1K: H1 <| K by rewrite (normalS _ sKL nsH1L) // join_subG der_sub. have [sH1K nH1K] := andP nsH1K; have sMH1: M \subset H1 by apply: joing_subr. have cohH1: coherent (S H1) L^# tau. apply: uniform_degree_coherence (subset_subcoherent scohS _) _ => //. @@ -229,7 +229,7 @@ have not_abKb: ~~ abelian (K / M). by rewrite join_subG subxx andbT -quotient_der ?quotient_sub1. have /is_abelemP[p p_pr /and3P[pKb _ _]]: is_abelem (K / H1). have: solvable (K / H1)%g by apply: quotient_sol solK. - by case/(minnormal_solvable (chief_factor_minnormal chiefH1)). + by case/(minnormal_solvable (chief_factor_minnormal chiefH1)). have [[_ p_dv_Kb _] nsMK] := (pgroup_pdiv pKb ntKb, normalS sMK sKL nsML). have isoKb: K / M / (H1 / M) \isog K / H1 := third_isog sMH1 nsMK nsH1K. have{nilKM} pKM: p.-group (K / M)%g. @@ -309,7 +309,7 @@ have Ndg: {in calX, forall xi : 'CF(L), xi 1%g = (e * p ^ d xi)%:R}. rewrite /d => _ /seqIndP[i _ ->]; rewrite cfInd1 // -/e. have:= dvd_irr1_cardG i; have /CnatP[n ->] := Cnat_irr1 i. rewrite -natrM natCK dvdC_nat mulKn // -p_part => dv_n_K. - by rewrite part_pnat_id // (pnat_dvd dv_n_K). + by rewrite part_pnat_id // (pnat_dvd dv_n_K). have [chi Ychi leYchi]: {chi | chi \in Y & {in Y, forall xi, d xi <= d chi}%N}. have [/eqP/nilP Y0 | ntY] := posnP (size Y); first by rewrite Y0 in homoY. pose i := [arg max_(i > Ordinal ntY) d Y`_i]. @@ -459,7 +459,7 @@ suffices Ea2 l (phi := 'chi[G]_l) (kerZphi : kerZ l): - move=> l phi kerZphi. have Zphi1: phi 1%g \in Cint by rewrite irr1_degree rpred_nat. have chi0 x: x \in Z -> 'chi[G]_0 x = 1. - by rewrite irr0 cfun1E => /(subsetP sZG) ->. + by rewrite irr0 cfun1E => /(subsetP sZG) ->. have: kerZ 0 by move=> x y /setD1P[_ Zx] /setD1P[_ Zy]; rewrite !chi0. move/Ea2/(eqAmodMl (Aint_irr l z)); rewrite !{}chi0 // -/phi eqAmod_sym. rewrite mulrDr mulr1 !mulr_natr => /eqAmod_trans/(_ (Ea2 l kerZphi)). @@ -474,7 +474,7 @@ suffices Ea2 l (phi := 'chi[G]_l) (kerZphi : kerZ l): have: '['Res[Z] phi, 'chi_0] \in Crat. by rewrite rpred_Cnat ?Cnat_cfdot_char ?cfRes_char ?irr_char. rewrite irr0 cfdotE (big_setD1 _ (group1 Z)) cfun1E cfResE ?group1 //=. - rewrite rmorph1 mulr1; congr (_ * (_ + _) \in Crat). + rewrite rmorph1 mulr1; congr (_ * (_ + _) \in Crat). rewrite -sumr_const; apply: eq_bigr => x Z1x; have [_ Zx] := setD1P Z1x. by rewrite cfun1E cfResE ?Zx // rmorph1 mulr1; apply: kerZphi. pose alpha := 'omega_l['K_i1]; pose phi1 := phi 1%g. @@ -653,7 +653,7 @@ without loss [/p_groupP[p p_pr pH] not_cHH]: / p_group H /\ ~~ abelian H. by apply; rewrite (isog_abelian isoH) (pgroup_p pH). have sylH: p.-Sylow(G) H. (* required for (6.7) *) rewrite -Sylow_subnorm -normD1; have [_ _ /eqP->] := and3P tiA. - by apply/and3P; rewrite -oW1 -pgroupE (coprime_p'group _ pH) // coprime_sym. + by apply/and3P; rewrite -oW1 -pgroupE (coprime_p'group _ pH) // coprime_sym. pose caseA := 'Z(H) :&: W2 \subset [1]%g; pose caseB := ~~ caseA. have caseB_P: caseB -> [/\ case_c2, W2 :!=: 1%g & W2 \subset 'Z(H)]. rewrite /caseB /caseA; have [->|] := eqP; first by rewrite subsetIr. @@ -779,7 +779,7 @@ have{odd_frobL1} caseA_cohXY: caseA -> coherent (X ++ Y) L^# tau. pose psi1 := xi1 - a *: eta1. have Zpsi1: psi1 \in 'Z[S, L^#]. rewrite zcharD1E !cfunE (uniY _ Yeta1) -xi1_1 subrr eqxx andbT. - by rewrite rpredB ?rpredZ_Cnat ?mem_zchar ?(sXS _ Xxi1) // sYS. + by rewrite rpredB ?rpredZ_Cnat ?mem_zchar ?(sXS _ Xxi1) // sYS. have [Y1 dY1 [X1 [dX1 _ oX1tauY]]] := orthogonal_split (map tau1 Y)(tau psi1). have{dX1 Y1 dY1 oYtau} [b Zb tau_psi1]: {b | b \in Cint & tau psi1 = X1 - a *: tau1 eta1 + b *: (\sum_(eta <- Y) tau1 eta)}. @@ -896,7 +896,7 @@ have{odd_frobL1} caseA_cohXY: caseA -> coherent (X ++ Y) L^# tau. have [|//]:= leq_size_perm uYeta _ szY2. by apply/allP; rewrite /= Yeta1 ccY. have memYtau1c: {subset [seq tau1 eta^* | eta <- Y]%CF <= map tau1 Y}. - by move=> _ /mapP[eta Yeta ->]; rewrite /= map_f ?ccY. + by move=> _ /mapP[eta Yeta ->]; rewrite /= map_f ?ccY. apply: IH (dual_coherence scohY cohY szY2) _ _ _. - rewrite (map_comp -%R) orthogonal_oppr. by apply/orthogonalP=> phi psi ? /memYtau1c; apply: (orthogonalP o_tauXY). @@ -1188,7 +1188,7 @@ have{caseA_cohXY Itau1 Ztau1 Dtau1 oYYt} cohXY: coherent (X ++ Y) L^# tau. exists (YZ1 + b *: Y1) => [/oRY-oRiY|]; last first. by rewrite addrCA subrK addrC cfdotDl cfdotZl normY1 mulr1 addrN. apply/orthoPl=> aa Raa; rewrite cfdotDl (orthoPl oYZ1R) // add0r. - by rewrite cfdotC (span_orthogonal oRiY) ?conjC0 ?rpredZ // memv_span. + by rewrite cfdotC (span_orthogonal oRiY) ?conjC0 ?rpredZ // memv_span. case/all_and2=> defXbZ oZY1; have spanR_X1 := zchar_span (R_X1 _ _). have ub_alpha i: i \in rp -> [/\ '[chi i] <= '[X1 i] @@ -1214,7 +1214,7 @@ have{caseA_cohXY Itau1 Ztau1 Dtau1 oYYt} cohXY: coherent (X ++ Y) L^# tau. rewrite -(@ler_pexpn2r _ 2) ?qualifE ?(ltrW ai_gt0) ?norm_ger0 //. apply: ler_trans (_ : '[b i *: Y1 - Z1 i] <= _). rewrite cfnormBd; last by rewrite cfdotZl cfdotC oZY1 ?conjC0 ?mulr0. - by rewrite cfnormZ normY1 mulr1 ler_addl cfnorm_ge0. + by rewrite cfnormZ normY1 mulr1 ler_addl cfnorm_ge0. rewrite -(ler_add2l '[X1 i]) -cfnormBd; last first. rewrite cfdotBr cfdotZr (span_orthogonal (oRY i _)) ?spanR_X1 //. rewrite mulr0 sub0r cfdotC. diff --git a/mathcomp/odd_order/PFsection7.v b/mathcomp/odd_order/PFsection7.v index 455681c..deb1698 100644 --- a/mathcomp/odd_order/PFsection7.v +++ b/mathcomp/odd_order/PFsection7.v @@ -66,7 +66,7 @@ rewrite (DadeJ ddA) // cardJg; congr (_ * _). rewrite big_imset /= => [|z y0 _ _ /=]; last exact: conjg_inj. by apply: eq_bigr => u Hu; rewrite -conjMg cfunJ // (subsetP sLG). Qed. -Definition invDade alpha := Cfun 1 (invDade_subproof alpha). +Definition invDade alpha := Cfun 1 (invDade_subproof alpha). Local Notation "alpha ^\rho" := (invDade alpha). @@ -426,7 +426,7 @@ split=> // [ | chi /irrP[t def_chi] o_chiSnu]. have hu: h * u = e^-1 * (h - 1) by rewrite mulrCA (mulrBr h) mulr1 divff. have ->: '[(nu zeta)^\rho] = u * a ^+ 2 - v * a *+ 2 + w. have defT1: perm_eq calT [:: phi, Ind1H, zeta & S2]. - by rewrite defT defS1 (perm_catCA [::_ ; _] phi). + by rewrite defT defS1 (perm_catCA [::_; _] phi). have [c ua _ ->] := invDade_seqInd_sum (nu zeta) defT1. have def_c xi: xi \in calS -> c xi = '[xi, zeta]. move=> S2xi; rewrite /c mulrC -{1}[xi]scale1r -(mulVf nz_phi1) -!scalerA. diff --git a/mathcomp/odd_order/PFsection8.v b/mathcomp/odd_order/PFsection8.v index d4ffa46..2770369 100644 --- a/mathcomp/odd_order/PFsection8.v +++ b/mathcomp/odd_order/PFsection8.v @@ -557,7 +557,7 @@ have [part_a _ _ [part_b part_c]] := BGsummaryB maxM complU. rewrite eqEsubset FTsupp1_sub // andbT -setD_eq0 in part_c. split=> // X notX0 /subsetD1P[sXU notX1]; rewrite -cent_gen defH. apply: part_b; rewrite -?subG1 ?gen_subG //. -by rewrite -setD_eq0 setDE (setIidPl _) // subsetC sub1set inE. +by rewrite -setD_eq0 setDE (setIidPl _) // subsetC sub1set inE. Qed. (* This is Peterfalvi (8.13). *) @@ -1111,7 +1111,7 @@ without loss{suppST} suppST: T maxT ncST / FTsupports S T. have{suppST} [y /and3P[ASy not_sCyS sCyT]] := existsP suppST. have Dy: y \in [set z in 'A0(S) | ~~ ('C[z] \subset S)] by rewrite !inE ASy. have [_ [_ /(_ y Dy) uCy] /(_ y Dy)[_ coTcS _ typeT]] := FTsupport_facts maxS. -rewrite -mem_iota -(eq_uniq_mmax uCy maxT sCyT) !inE in coTcS typeT. +rewrite -mem_iota -(eq_uniq_mmax uCy maxT sCyT) !inE in coTcS typeT. apply/negbNE; rewrite -part_b /NC 1?orbit_sym // negb_exists. apply/forallP=> x; rewrite part_a1 ?mmaxJ ?negbK //; last first. by rewrite /NC (orbit_transl _ (mem_orbit _ _ _)) ?in_setT // orbit_sym. diff --git a/mathcomp/odd_order/PFsection9.v b/mathcomp/odd_order/PFsection9.v index 0cd1109..d8ec417 100644 --- a/mathcomp/odd_order/PFsection9.v +++ b/mathcomp/odd_order/PFsection9.v @@ -89,7 +89,7 @@ Let defW2 : 'C_H(W1) = W2. Proof. exact: typeP_cent_core_compl MtypeP. Qed. Lemma Ptype_Fcore_sdprod : H ><| (U <*> W1) = M. Proof. -have [_ /= sW1M mulHUW1 _ tiHUW1] := sdprod_context defM. +have [_ /= sW1M mulHUW1 _ tiHUW1] := sdprod_context defM. have [/= /andP[sHHU _] sUHU mulHU nHU tiHU] := sdprod_context defHU. rewrite sdprodE /= norm_joinEr // ?mulgA ?mulHU //. by rewrite mulG_subG nHU (subset_trans sW1M) ?gFnorm. @@ -322,7 +322,7 @@ Proof. apply: Frobenius_quotient frobUW1 _ nsCUW1 _. by apply: nilpotent_sol; have [_ []] := MtypeP. by have [] := Ptype_Fcore_factor_facts; rewrite eqEsubset sCU. -Qed. +Qed. Definition typeP_Galois := acts_irreducibly U Hbar 'Q. @@ -397,7 +397,7 @@ have [oH1 defHbar]: #|H1| = p /\ \big[dprod/1]_(w in W1bar) H1 :^ w = Hbar. by rewrite -(big_imset id injW1) -defH1W0 big_imset. split=> //; set a := #|_ : _|; pose q1 := #|(W1 / H0)^#|. have a_gt1: a > 1. - rewrite indexg_gt1 subsetIidl /= astabQ -sub_quotient_pre //. + rewrite indexg_gt1 subsetIidl /= astabQ -sub_quotient_pre //. apply: contra neqCU => cH1U; rewrite [C]unlock (sameP eqP setIidPl) /= astabQ. rewrite -sub_quotient_pre // -(bigdprodWY defHbar) cent_gen centsC. by apply/bigcupsP=> w Ww; rewrite centsC centJ -(normsP nUW1b w) ?conjSg. @@ -663,7 +663,7 @@ pose nF := <[1%R : F]>; have o_nF: #|nF| = p. have cyc_uF := @field_unit_group_cyclic F. exists F. exists phi; last first. - split=> //; first exact/isomP; apply/esym/eqP; rewrite eqEcard o_nF -phi_s. + split=> //; first exact/isomP; apply/esym/eqP; rewrite eqEcard o_nF -phi_s. by rewrite (@cycle_subG F) mem_morphim //= card_injm ?subsetIl ?oW2b. exists psi => //; last first. by split=> // h x Hh Ux; rewrite qactJ (subsetP nH0U) ?phiJ. @@ -834,7 +834,7 @@ Lemma typeP_nonGalois_characters (not_Galois : ~~ typeP_Galois) : (lb_d %| lb_n /\ lb_n %/ lb_d <= count irr_qa (S_ H0U'))%N]. Proof. case: (typeP_Galois_Pn _) => H1 [oH1 nH1U nH1Uq defHbar aP]; rewrite [sval _]/=. -move => a; case: aP; rewrite -/a => a_gt1 a_dv_p1 cycUb1 isoUb. +move=> a; case: aP; rewrite -/a => a_gt1 a_dv_p1 cycUb1 isoUb. set part_a := ({in _, _}); pose HCbar := (HC / H0)%G. have [_ /mulG_sub[sHUM sW1M] nHUW1 tiHUW1] := sdprodP defM. have [nsHHU _ /mulG_sub[sHHU sUHU] nHU tiHU] := sdprod_context defHU. @@ -870,7 +870,7 @@ have Part_a: part_a. have{kersH0} kertH0: H0 \subset cfker 'chi_t. by rewrite (sub_cfker_constt_Res_irr sHt). have Ltheta: theta \is a linear_char. - by rewrite /theta -quo_IirrE // (char_abelianP _ _). + by rewrite /theta -quo_IirrE // (char_abelianP _ _). have Dtheta : _ = theta := cfBigdprod_Res_lin defHbar Ltheta. set T := 'I_HU['chi_t]; have sHT: H \subset T by rewrite sub_Inertia. have sTHU: T \subset HU by rewrite Inertia_sub. @@ -1086,11 +1086,11 @@ split=> {Part_a part_a}//. rewrite odd_exp -(subnKC (prime_gt1 pr_q)) /= -subn1 odd_sub ?prime_gt0 //. by rewrite -oH1 (oddSg sH1H) ?quotient_odd // mFT_odd. have p1_gt0: (0 < p.-1)%N by rewrite -(subnKC (prime_gt1 p_pr)). - apply/eqP; rewrite -(eqn_pmul2r p1_gt0) -expnSr prednK ?prime_gt0 //. + apply/eqP; rewrite -(eqn_pmul2r p1_gt0) -expnSr prednK ?prime_gt0 //. by rewrite -oXtheta -defXmu card_in_imset // cardC1 card_Iirr_abelian ?oH1. clear Xmu def_IXmu Smu sSmu_mu ResIndXmu uSmu sz_Smu sz_mu s_mu_H0C Dmu. clear Mtheta Xtheta irrXtheta oXtheta sXthXH0C mu_f Fmu_f mk_mu sW1_Imu inj_mu. -clear nz_thetaH lin_thetaH lin_theta Ftheta inj_theta irr_thetaH0 def_Itheta. +clear nz_thetaH lin_thetaH lin_theta Ftheta inj_theta irr_thetaH0 def_Itheta. clear theta Dtheta => irr_qa lb_n lb_d. have sU'U: U' \subset U := der_sub 1 U. have nH0U := subset_trans sUHU nH0HU; have nH0U' := subset_trans sU'U nH0U. @@ -1157,7 +1157,7 @@ have{lam_lin} thetaH1 i j: 'Res[H1] (theta i j) = 'chi_i. have Itheta r: r \in Mtheta -> 'I_HU['chi_r]%CF = HCH1. case/imset2P=> i j; rewrite /= in_setC1 => nz_i _ Dr; apply/eqP. rewrite eqEsubset sub_Inertia //= Dr mod_IirrE // cfIirrE ?lin_char_irr //. - rewrite andbT -(quotientSGK _ (normal_sub nsH0_HCH1)) ?subIset ?nH0HU //. + rewrite andbT -(quotientSGK _ (normal_sub nsH0_HCH1)) ?subIset ?nH0HU //. rewrite inertia_mod_quo //. apply: subset_trans (sub_inertia_Res _ (nH1wHUb _ (group1 _))) _. rewrite /= conjsg1 thetaH1 (inertia_irr_prime _ p_pr) //. @@ -1533,7 +1533,7 @@ have sS10: cfConjC_subset S1 (S_ H0C'). have cohS1: coherent S1 M^# tau. apply: uniform_degree_coherence (subset_subcoherent scohS0 sS10) _. by apply: all_pred1_constant (q * a)%:R _ _; rewrite all_map filter_all. -pose S3 := filter [predC S1] (S_ H0C'); move: {2}_.+1 (ltnSn (size S3)) => nS. +pose S3 := filter [predC S1] (S_ H0C'); move: {2}_.+1 (ltnSn (size S3)) => nS. move: @S3 (sS10) (cohS1); have: {subset S1 <= S1} by []. elim: nS {-1}S1 => // nS IHnS S2 => sS12 S3 sS20 cohS2; rewrite ltnS => leS3nS. have [ntS3|] := boolP (size S3 > 0)%N; last first. @@ -1563,7 +1563,7 @@ without loss [[eqS12 irrS1 H0C_S1] [Da_p defC] [S3qu ne_qa_qu] [oS1 oS1ua]]: pose is_qu := [pred chi : 'CF(M) | chi 1%g == (q * u)%:R]. pose isn't_qu := [pred chi | is_qu chi ==> all is_qu S3]. have /hasP[chi S3chi qu'chi]: has isn't_qu S3. - rewrite /isn't_qu; have [_|] := boolP (all _ _); last by rewrite has_predC. + rewrite /isn't_qu; have [_|] := boolP (all _ _); last by rewrite has_predC. by rewrite (eq_has (fun _ => implybT _)) has_predT. have [S2'chi S0chi]: chi \notin S2 /\ chi \in S_ H0C'. by apply/andP; rewrite mem_filter in S3chi. diff --git a/mathcomp/odd_order/wielandt_fixpoint.v b/mathcomp/odd_order/wielandt_fixpoint.v index 3a9a099..e5d8ad4 100644 --- a/mathcomp/odd_order/wielandt_fixpoint.v +++ b/mathcomp/odd_order/wielandt_fixpoint.v @@ -108,7 +108,7 @@ have{B ntB sBAn tiBU} [Ku S_Ku eKu]: exists2 Ku, Ku \in S & exponent Ku == (p ^ by apply/imsetP; rewrite -MhoEabelian ?(subsetP sBAn). rewrite morphX ?(subsetP nUA) // (exponentP _ _ (mem_quotient _ Ay)) //. rewrite -sub_Ldiv -OhmEabelian ?(abelianS (Ohm_sub n _)) //=. - rewrite (OhmE n pAu) /= -(bigdprodWY defAu) genS // subsetI sub_gen //=. + rewrite (OhmE n pAu) /= -(bigdprodWY defAu) genS // subsetI sub_gen //=. apply/bigcupsP=> Ku S_Ku; rewrite sub_LdivT. have: exponent Ku %| p ^ n.+1. by rewrite (dvdn_trans (exponentS (sSAu _ S_Ku))) // -eA exponent_quotient. diff --git a/mathcomp/real_closed/bigenough.v b/mathcomp/real_closed/bigenough.v index 90e46e8..1ee8bef 100644 --- a/mathcomp/real_closed/bigenough.v +++ b/mathcomp/real_closed/bigenough.v @@ -28,7 +28,7 @@ Module BigEnough. Record big_rel_class_of T (leq : rel T) := BigRelClass { - leq_big_internal_op : rel T; + leq_big_internal_op : rel T; bigger_than_op : seq T -> T; _ : leq_big_internal_op = leq; _ : forall i s, leq_big_internal_op i (bigger_than_op (i :: s)); diff --git a/mathcomp/real_closed/cauchyreals.v b/mathcomp/real_closed/cauchyreals.v index 9d2dff3..1d7d7ab 100644 --- a/mathcomp/real_closed/cauchyreals.v +++ b/mathcomp/real_closed/cauchyreals.v @@ -447,7 +447,7 @@ rewrite -{1}[x](addrNK z) -{1}[p.[x]](addrNK p.[z]). rewrite !addrA -![_ - _ + _ - _]addrA mulrDr ltr_add //. rewrite -ltr_pdivl_mulr ?subr_gt0 //. by rewrite ltr_minl hk1 ?gtr_eqF. -rewrite -ltr_pdivl_mulr ?subr_gt0 //. +rewrite -ltr_pdivl_mulr ?subr_gt0 //. by rewrite ltr_minl hk2 ?orbT ?gtr_eqF. Qed. @@ -1325,7 +1325,7 @@ have upx_eq0 : u.[x] * p.[x] == 0 by rewrite px0 mul_creal0. pose_big_enough i. have := (erefl ((1 : {poly F}).[x i])). rewrite -{1}hpq /= hornerD hornerC. - set upxi := (u * _).[_]; move=> hpqi. + set upxi := (u * _).[_] => - hpqi. apply: (@neq_crealP ((ubound v.[x])%CR^-1 / 2%:R) i i) => //. by rewrite pmulr_rgt0 ?gtr0E // ubound_gt0. rewrite /= subr0 ler_pdivr_mull ?ubound_gt0 //. diff --git a/mathcomp/real_closed/complex.v b/mathcomp/real_closed/complex.v index ef32266..30b4b04 100644 --- a/mathcomp/real_closed/complex.v +++ b/mathcomp/real_closed/complex.v @@ -58,7 +58,7 @@ Section ComplexEqChoice. Variable R : Type. -Definition sqR_of_complex (x : R[i]) := let: a +i* b := x in [::a; b]. +Definition sqR_of_complex (x : R[i]) := let: a +i* b := x in [::a; b]. Definition complex_of_sqR (x : seq R) := if x is [:: a; b] then Some (a +i* b) else None. @@ -462,7 +462,7 @@ by rewrite -mulrA ['i%C * _]sqr_i mulrN1 opprB. Qed. Lemma complex_real (a b : R) : a +i* b \is Num.real = (b == 0). -Proof. +Proof. rewrite realE; simpc; rewrite [0 == _]eq_sym. by have [] := ltrgtP 0 a; rewrite ?(andbF, andbT, orbF, orbb). Qed. @@ -557,7 +557,7 @@ have F3: 0 <= (sqrtr (a ^+ 2 + b ^+ 2) - a) / 2%:R. have F4: 0 <= (sqrtr (a ^+ 2 + b ^+ 2) + a) / 2%:R. rewrite mulr_ge0 // -{2}[a]opprK subr_ge0 (ler_trans _ F2) //. by rewrite -(maxrN a) ler_maxr lerr orbT. -congr (_ +i* _); set u := if _ then _ else _. +congr (_ +i* _); set u := if _ then _ else _. rewrite mulrCA !mulrA. have->: (u * u) = 1. rewrite /u; case: (altP (_ =P _)); rewrite ?mul1r //. @@ -573,7 +573,7 @@ rewrite [_^+2 + _]addrC addrK -mulrA -expr2 sqrtrM ?exprn_even_ge0 //. rewrite !sqrtr_sqr -mulr_natr. rewrite [`|_^-1|]ger0_norm // -mulrA [_ * _%:R]mulrC divff //. rewrite mulr1 /u; case: (_ =P _)=>[->|]. - by rewrite normr0 mulr0. + by rewrite normr0 mulr0. by rewrite mulr_sg_norm. Qed. @@ -998,7 +998,7 @@ Qed. Lemma Lemma3 K d : Eigen1Vec K d -> forall r, CommonEigenVec K d r.+1. Proof. -move=> E1V_K_d; elim => [|r IHr m V]; first exact/Eigen1VecP. +move=> E1V_K_d; elim=> [|r IHr m V]; first exact/Eigen1VecP. move: (\rank V) {-2}V (leqnn (\rank V)) => n {V}. elim: n m => [|n IHn] m V. by rewrite leqn0 => /eqP ->; rewrite dvdn0. @@ -1111,7 +1111,7 @@ have [] := @Lemma4 _ _ 1%:M _ [::L1; L2] (erefl _). case: n {x} (vec_mx x) => [//|n] x in HrV u v *. do ?[rewrite -(scalemxAl, scalemxAr, scalerN, scalerDr) |rewrite (mulmxN, mulNmx, trmxK, trmx_mul) - |rewrite ?[(_ *: _)^T]linearZ ?[(_ + _)^T]linearD ?[(- _)^T]linearN /=]. + |rewrite ?[(_ *: _)^T]linearZ ?[(_ + _)^T]linearD ?[(- _)^T]linearN /=]. congr (_ *: _). rewrite !(mulmxDr, mulmxDl, mulNmx, mulmxN, mulmxA, opprD, opprK). do ![move: (_ *m _ *m _)] => t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12. diff --git a/mathcomp/real_closed/mxtens.v b/mathcomp/real_closed/mxtens.v index 5189369..4e6b72a 100644 --- a/mathcomp/real_closed/mxtens.v +++ b/mathcomp/real_closed/mxtens.v @@ -186,7 +186,7 @@ rewrite !tensmxE castmxE /= cast_ord_id esymK !mxE /=. case: splitP=> i0' /= hi0'; case: splitP=> k /= hk. + case: (mxtens_indexP k) hk=> k0 k1 /=; rewrite tensmxE. move=> /(f_equal (edivn^~ p)); rewrite !edivn_eq // => [] [h0 h1]. - by congr (r _ _ * N _ _); apply:val_inj; rewrite /= -?h0 ?h1. + by congr (r _ _ * N _ _); apply: val_inj; rewrite /= -?h0 ?h1. + move: hk (ltn_ord i1); rewrite hi0'. by rewrite [i0']ord1 mul0n mul1n add0n ltnNge=> ->; rewrite leq_addr. + move: (ltn_ord k); rewrite -hk hi0' ltnNge {1}mul1n. @@ -194,7 +194,7 @@ case: splitP=> i0' /= hi0'; case: splitP=> k /= hk. case: (mxtens_indexP k) hk=> k0 k1 /=; rewrite tensmxE. rewrite hi0' mulnDl -addnA=> /addnI. move=> /(f_equal (edivn^~ p)); rewrite !edivn_eq // => [] [h0 h1]. -by congr (M _ _ * N _ _); apply:val_inj; rewrite /= -?h0 ?h1. +by congr (M _ _ * N _ _); apply: val_inj; rewrite /= -?h0 ?h1. Qed. Lemma tens_row_mx {m n p q} (r : 'cV[R]_m) (M :'M[R]_(m,n)) (N : 'M[R]_(p,q)) : diff --git a/mathcomp/real_closed/ordered_qelim.v b/mathcomp/real_closed/ordered_qelim.v index f5d0b38..4779540 100644 --- a/mathcomp/real_closed/ordered_qelim.v +++ b/mathcomp/real_closed/ordered_qelim.v @@ -189,7 +189,7 @@ Definition oclause_eq (T : eqType)(t1 t2 : oclause T) := Lemma oclause_eqP (T : eqType) : Equality.axiom (@oclause_eq T). Proof. -move=> t1 t2; apply: (iffP idP) => [|<-] /= ; last first. +move=> t1 t2; apply: (iffP idP) => [|<-] /=; last first. by rewrite /oclause_eq; case: t1=> l1 l2 l3 l4; rewrite !eqxx. case: t1 => [l1 l2 l3 l4]; case: t2 => m1 m2 m3 m4 /=; case/and4P. by move/eqP=> -> /eqP -> /eqP -> /eqP ->. @@ -780,11 +780,11 @@ Lemma odnf_to_oform_cat e c d : holds e (odnf_to_oform (c ++ d)) Proof. elim: c d => [| tc c ihc] d /=; first by split => // hd; [right | case: hd]. rewrite ihc /=; split. - case; first by case=> ?; case => ?; case => ? ?; left; left. + case; first by case=> ?; case=> ?; case=> ? ?; left; left. case; first by move=> ?; left; right. by move=> ?; right. case; last by move=> ?; right; right. -case; last by move=> ?; right; left. +case; last by move=> ?; right; left. by do 3!case=> ?; move=> ?; left. Qed. @@ -801,8 +801,8 @@ have -> : (holds e x1 /\ holds e x2 /\ holds e x3 /\ 0%:R <= eval e t /\ holds e x4 \/ false) <-> (0%:R <= eval e t) /\ (holds e x1 /\ holds e x2 /\ holds e x3 /\ holds e x4 \/ false). - split; first by case=> //; do 4! (case => ?); move=> ?; split => //; left. - by case=> ?; case => //; do 3! (case=> ?); move=> ?; left. + split; first by case=> //; do 4!(case=> ?); move=> ?; split => //; left. + by case=> ?; case=> //; do 3!(case=> ?); move=> ?; left. rewrite h {h} /= !map_cat /= -!map_comp. set s1 := [seq _ | _ <- _]; set s2 := [seq _ | _ <- _]. set s3 := [seq _ | _ <- _]. rewrite odnf_to_oform_cat. @@ -822,7 +822,7 @@ rewrite /s2 /s1. elim: (leq_elim_aux eq_l lt_l le_l) => /= [| t1 l ih]; first by split=> // [[]]. rewrite /= ih; split. case; last by case=> -> ?; split=> //; right. - by case; case=> /eqP ? ?; do 2! case=> ?; move=> _; split=>//; left. + by case; case=> /eqP ? ?; do 2!case=> ?; move=> _; split=> //; left. case=> /eqP ?; case; first by do 3!case=> ?; move=> _; left. by right; split=> //; apply/eqP. Qed. @@ -857,7 +857,7 @@ rewrite -/f in ih; case/orP. move=> u. rewrite !mem_cat !in_cons orbAC orbC mem_cat -!orbA. case/orP; first by move->; rewrite !orbT. rewrite !orbA [_ || (_ \in eq1)]orbC; move: (h u); rewrite !mem_cat=> hu. - by move/hu; do 2! (case/orP; last by move->; rewrite !orbT); move->. + by move/hu; do 2!(case/orP; last by move->; rewrite !orbT); move->. case/mapP=> y yin ye. move: (ih lt1 (f y)); rewrite mem_map //; last first. by move=> u v; rewrite /f /=; case. @@ -865,7 +865,7 @@ move/(_ yin); move: ye; rewrite /f /=; case=> -> -> -> -> /= h. move=> u; rewrite !mem_cat !in_cons orbAC orbC mem_cat -!orbA. case/orP; first by move->; rewrite !orbT. rewrite !orbA [_ || (_ \in eq1)]orbC; move: (h u); rewrite !mem_cat=> hu. -by move/hu; do 2! (case/orP; last by move->; rewrite !orbT); move->. +by move/hu; do 2!(case/orP; last by move->; rewrite !orbT); move->. Qed. @@ -885,9 +885,9 @@ have -> : holds e x1 /\ false <-> (eval e t <> 0%:R) /\ (holds e x1 /\ holds e x2 /\ holds e x3 /\ holds e x4 \/ false). - split; case => //. + split; case=> //. - by case=> ?; case; case=> ? ? [] ? ?; split=> //; left. - - by move=> ?; case => //; do 3! case => ?; move=> ?; left. + - by move=> ?; case=> //; do 3!case=> ?; move=> ?; left. rewrite h {h} /= !map_cat /= -!map_comp. set s1 := [seq _ | _ <- _]; set s2 := [seq _ | _ <- _]. set s3 := [seq _ | _ <- _]; rewrite odnf_to_oform_cat. @@ -904,7 +904,7 @@ suff {x1 x2 x3 x4} /= -> : rewrite ih; split. case; first by case=> ?; case=> _; case; case=> -> ? ?; split=> //; left. by case=> ? ?; split=> //; right. - by case=> ->; case; [case=> ?; case=> _; case=> ? ?; left| move=> ? ; right]. + by case=> ->; case; [case=> ?; case=> _; case=> ? ?; left| move=> ?; right]. rewrite /s1 /s2. elim: (neq_elim_aux lt_l neq_l) => /= [| t1 l ih] /=; first by split => //; case. set y1 := foldr _ _ _; set y2 := foldr _ _ _; set y3 := foldr _ _ _. @@ -922,7 +922,7 @@ Lemma terms_of_neq_leq_elim oc1 oc2: oc2 \in (oclause_neq_leq_elim oc1) -> {subset (terms_of_oclause oc2) <= (terms_of_oclause oc1) ++ map Opp oc1.2}. Proof. -rewrite /oclause_neq_leq_elim /flatten; rewrite foldr_map. +rewrite /oclause_neq_leq_elim/flatten; rewrite foldr_map. suff : forall oc3, oc3 \in (oclause_leq_elim oc1) -> (terms_of_oclause oc3 =i terms_of_oclause oc1) /\ oc3.2 = oc1.2. @@ -938,7 +938,7 @@ rewrite map_cat mem_cat; move: ih. elim: (leq_elim_aux eq1 lt1 le1) => [| t2 l2 ih2] //=; rewrite !in_cons. move=> h1; case/orP=> /=. case/orP; first by case/eqP. - by move=> h2; apply: ih2; rewrite ?h2 //; move=> h3; apply: h1; rewrite h3 orbT. + by move=> h2; apply: ih2; rewrite ?h2 // => - h3; apply: h1; rewrite h3 orbT. case/orP; first by case/eqP. move=> h3; apply: ih2; last by rewrite h3 orbT. by move=> h2; apply: h1; rewrite h2 orbT. @@ -1009,7 +1009,7 @@ rewrite -[holds e (_ \/ _)]/(holds e _ \/ holds e _). suff <- : (oclause_neq_elim t1) = map w_to_oclause [seq (let: Oclause eq_l _ lt_l _ := x in (eq_l, lt_l)) | x <- oclause_neq_elim t1]. - by rewrite ih1 //; move=> oc hoc; apply: h4; rewrite in_cons hoc orbT. + by rewrite ih1 // => - oc hoc; apply: h4; rewrite in_cons hoc orbT. have : forall oc, oc \in (oclause_neq_elim t1) -> oc.2 = [::] /\ oc.4 = [::]. move=> oc hoc; move/oclause_neq_elim2: (hoc); case/andP=> /eqP -> /eqP ->. by move/eqP: (h4 _ (mem_head _ _))->. diff --git a/mathcomp/real_closed/polyorder.v b/mathcomp/real_closed/polyorder.v index f84abb6..4a96dcc 100644 --- a/mathcomp/real_closed/polyorder.v +++ b/mathcomp/real_closed/polyorder.v @@ -139,9 +139,9 @@ Qed. Lemma mu_mul p q x : p * q != 0 -> \mu_x (p * q) = (\mu_x p + \mu_x q)%N. Proof. -move=>hpqn0; apply/eqP; rewrite eq_sym -muP//. +move=> hpqn0; apply/eqP; rewrite eq_sym -muP//. rewrite exprD dvdp_mul ?root_mu//=. -move:hpqn0; rewrite mulf_eq0 negb_or; case/andP=> hp0 hq0. +move: hpqn0; rewrite mulf_eq0 negb_or; case/andP=> hp0 hq0. move: (mu_spec x hp0)=> [qp qp0 hp]. move: (mu_spec x hq0)=> [qq qq0 hq]. rewrite {2}hp {2}hq exprS exprD !mulrA [qp * _ * _]mulrAC. diff --git a/mathcomp/real_closed/polyrcf.v b/mathcomp/real_closed/polyrcf.v index 9e73204..8aaeb97 100644 --- a/mathcomp/real_closed/polyrcf.v +++ b/mathcomp/real_closed/polyrcf.v @@ -441,7 +441,7 @@ elim: (size p) a b lab pa0 pb0=> [|n ihn] a b lab pa0 pb0 max_roots. rewrite (@max_roots [::]) //=. by exists (mid a b); rewrite ?mid_in_itv // derivE horner0. case: (@rolle_weak a b p); rewrite // ?pa0 ?pb0 //=. -move=> c hc; case: (altP (_ =P 0))=> //= p'c0 pc0; first by exists c. +move=> c hc; case: (altP (_ =P 0))=> //= p'c0 pc0; first by exists c. suff: { d : R | d \in `]a, c[ & (p^`()).[d] = 0 }. case=> [d hd] p'd0; exists d=> //. by apply: subitvPr hd; rewrite //= (itvP hc). @@ -860,7 +860,7 @@ rewrite in_cons; case ezy: (z == y)=> /=. by rewrite (eqP ezy) py0 andbT (subitvPr _ hy) //= ?(itvP hx). rewrite -(ihs y) //; last exact: path_sorted ss; last first. by rewrite inE /= (itvP hx) (itvP hy). -case pz0: root; rewrite ?(andbT, andbF) //. +case pz0: root; rewrite ?(andbT, andbF) //. rewrite (@itv_splitU2 _ y); last by rewrite (subitvPr _ hy) //= (itvP hx). rewrite ezy /=; case: (z \in `]y, b[); rewrite ?orbF ?orbT //. by apply/negP=> hz; move: (hay z); rewrite hz pz0 in_nil. @@ -913,7 +913,7 @@ move: (roots_on_nil har1). case pr1 : (root p r1); case/monotonic_rootN => hrootsl; last 2 first. - exists s; constructor=> //. by rewrite -[s]cat0s; apply: (cat_roots_on hr1)=> //; rewrite pr1. -- case:hrootsl=> r hr; exists (r::s); constructor=> //=. +- case: hrootsl=> r hr; exists (r::s); constructor=> //=. by rewrite -cat1s; apply: (cat_roots_on hr1)=> //; rewrite pr1. rewrite path_min_sorted // => y; rewrite -hroot; case/andP=> hy _. rewrite (@ltr_trans _ r1) ?(itvP hy) //. @@ -954,7 +954,7 @@ Proof. by case: rootsP=> //=; rewrite eqxx. Qed. Lemma roots_on_roots : forall p a b, p != 0 -> roots_on p `]a, b[ (roots p a b). -Proof. by move=> a b p; case:rootsP. Qed. +Proof. by move=> a b p; case: rootsP. Qed. Hint Resolve roots_on_roots. Lemma sorted_roots a b p : sorted <%R (roots p a b). @@ -1012,7 +1012,7 @@ elim: s1 p a b s2 => [| r1 s1 ih] p a b [| r2 s2] ps1 ps2 rs1 rs2 //. move/(@sym_eq _ true); case/orP => hr2; first by rewrite (eqP hr2). move: ps1=> /=; move/(order_path_min (@ltr_trans R)); move/allP. move/(_ r2 hr2) => h1. - move: (rs2 r1); rewrite (roots_on_root rs1) ?mem_head //. + move: (rs2 r1); rewrite (roots_on_root rs1) ?mem_head //. rewrite !(roots_on_in rs1) ?mem_head //= in_cons. move/(@sym_eq _ true); case/orP => hr1; first by rewrite (eqP hr1). move: ps2=> /=; move/(order_path_min (@ltr_trans R)); move/allP. @@ -1212,7 +1212,7 @@ case; first by move->; rewrite /next_root eqxx. move=> c p0 ->; case: maxrP=> hab; last by rewrite itv_gte //= ltrW. by move=> hpz _ py0 hy; move/hpz:hy; rewrite rootE py0 eqxx. case: next_rootP => //; first by move->; rewrite eqxx. - by move=> y np0 py0 hy _ c _ _; move/(_ _ hy); rewrite rootE py0 eqxx. + by move=> y np0 py0 hy _ c _ _; move/(_ _ hy); rewrite rootE py0 eqxx. by move=> c _ -> _ c' _ ->. Qed. @@ -1507,11 +1507,11 @@ Lemma sgr_neighpr b p x : Proof. elim: (size p) {-2}p (leqnn (size p))=> [|n ihn] {p} p. rewrite leqn0 size_poly_eq0 /neighpr; move/eqP=> -> /=. - by move=>y; rewrite next_root0 itv_xx. + by move=> y; rewrite next_root0 itv_xx. rewrite leq_eqVlt ltnS; case/orP; last exact: ihn. move/eqP=> sp; rewrite /sgp_right sp /=. case px0: root=> /=; last first. - move=> y; rewrite/neighpr => hy /=; symmetry. + move=> y; rewrite /neighpr => hy /=; symmetry. apply: (@polyrN0_itv `[x, y]); do ?by rewrite bound_in_itv /= (itvP hy). move=> z; rewrite (@itv_splitU _ x true) ?bound_in_itv /= ?(itvP hy) //. rewrite itv_xx /=; case/predU1P=> hz; first by rewrite hz px0. @@ -1547,11 +1547,11 @@ Lemma sgr_neighpl a p x : Proof. elim: (size p) {-2}p (leqnn (size p))=> [|n ihn] {p} p. rewrite leqn0 size_poly_eq0 /neighpl; move/eqP=> -> /=. - by move=>y; rewrite prev_root0 itv_xx. + by move=> y; rewrite prev_root0 itv_xx. rewrite leq_eqVlt ltnS; case/orP; last exact: ihn. move/eqP=> sp; rewrite /sgp_right sp /=. case px0: root=> /=; last first. - move=> y; rewrite/neighpl => hy /=; symmetry. + move=> y; rewrite /neighpl => hy /=; symmetry. move: (negbT px0); rewrite -mu_gt0; last first. by apply: contraFN px0; move/eqP->; rewrite rootC. rewrite -leqNgt leqn0; move/eqP=> -> /=; rewrite expr0 mul1r. diff --git a/mathcomp/real_closed/qe_rcf.v b/mathcomp/real_closed/qe_rcf.v index e1b3b97..272c44a 100644 --- a/mathcomp/real_closed/qe_rcf.v +++ b/mathcomp/real_closed/qe_rcf.v @@ -160,7 +160,7 @@ Fixpoint eval (e : seq R) (t : term R) {struct t} : R := end. Lemma evalE (e : seq R) (t : term R) : eval e t = GRing.eval e t. -Proof. by elim: t=> /=; do ?[move->|move=>?]. Qed. +Proof. by elim: t=> /=; do ?[move->|move=> ?]. Qed. Definition qf_eval e := fix loop (f : formula R) : bool := match f with @@ -175,7 +175,7 @@ Definition qf_eval e := fix loop (f : formula R) : bool := end%qfT. Lemma qf_evalE (e : seq R) (f : formula R) : qf_eval e f = ord.qf_eval e f. -Proof. by elim: f=> /=; do ?[rewrite evalE|move->|move=>?]. Qed. +Proof. by elim: f=> /=; do ?[rewrite evalE|move->|move=> ?]. Qed. Lemma to_rtermE (t : GRing.term R) : GRing.rterm t -> to_rterm t = t :> GRing.term _. @@ -206,10 +206,10 @@ Lemma qf_formF (f : fF) : qf_form f. Proof. by elim: f=> // *; apply/andP; split. Qed. Lemma rtermF (t : tF) : GRing.rterm t. -Proof. by elim: t=> //=; do ?[move->|move=>?]. Qed. +Proof. by elim: t=> //=; do ?[move->|move=> ?]. Qed. Lemma rformulaF (f : fF) : rformula f. -Proof. by elim: f=> /=; do ?[rewrite rtermF|move->|move=>?]. Qed. +Proof. by elim: f=> /=; do ?[rewrite rtermF|move->|move=> ?]. Qed. Section If. @@ -846,7 +846,7 @@ symmetry; rewrite /ctmat1. apply/matrixP => i j; rewrite !(big_ord_recl, big_ord0, mxE) /=. have halfP (K : numFieldType) : 2%:R^-1 + 2%:R^-1 = 1 :> K. by rewrite -mulr2n -[_ *+ 2]mulr_natl mulfV // pnatr_eq0. -move: i; do ?[case => //=]; move: j; do ?[case => //=] => _ _; +move: i; do ?[case=> //=]; move: j; do ?[case=> //=] => _ _; rewrite !(mulr1, mul1r, mulrN1, mulN1r, mulr0, mul0r, opprK); by rewrite !(addr0, add0r, oppr0, subrr, addrA, halfP). Qed. diff --git a/mathcomp/real_closed/qe_rcf_th.v b/mathcomp/real_closed/qe_rcf_th.v index 3aebce4..b125997 100644 --- a/mathcomp/real_closed/qe_rcf_th.v +++ b/mathcomp/real_closed/qe_rcf_th.v @@ -143,7 +143,7 @@ move/eqP: (rdivp_eq q p). rewrite eq_sym (can2_eq (addKr _ ) (addNKr _)); move/eqP=> hr. rewrite hr; case qpq0: (rdivp p q == 0). by rewrite (eqP qpq0) mul0r oppr0 add0r mu_mulC // lcn_neq0. -rewrite (leq_trans _ (mu_add _ _)) // -?hr //. +rewrite (leq_trans _ (mu_add _ _)) // -?hr //. rewrite leq_min mu_opp mu_mul ?mulf_neq0 ?qpq0 ?q0 // leq_addl. by rewrite mu_mulC // lcn_neq0. Qed. @@ -185,7 +185,7 @@ Definition ctmat n := (ctmat1 ^t n). Lemma ctmat_unit : forall n, zmxR (ctmat n) \in unitmx. Proof. case=> [|n] /=; first by rewrite map_mx1 ?unitmx1//; apply: zinjR_morph. -elim:n=> [|n ihn] /=; first by apply: ctmat1_unit. +elim: n=> [|n ihn] /=; first by apply: ctmat1_unit. rewrite map_mxT //. apply: tensmx_unit=> //; last exact: ctmat1_unit. by elim: n {ihn}=> // n ihn; rewrite muln_eq0. @@ -277,7 +277,7 @@ Qed. Fixpoint sg_tab n : seq (seq int) := if n is m.+1 - then flatten (map (fun x => map (fun l => x :: l) (sg_tab m)) [::1;-1;0]) + then flatten (map (fun x => map (fun l => x :: l) (sg_tab m)) [::1; -1; 0]) else [::[::]]. Lemma sg_tab_nil n : (sg_tab n == [::]) = false. @@ -522,7 +522,7 @@ have [p'0|p'_neq0] := eqVneq p^`() 0. move/(root_size_gt1 p_neq0): rpx. by rewrite -subn_gt0 subn1 -size_deriv p'0 size_poly0. have p'q0: p^`() * q != 0 by rewrite mulf_neq0. -move:(p'q0); rewrite mulf_eq0 negb_or; case/andP=> p'0 q0. +move: (p'q0); rewrite mulf_eq0 negb_or; case/andP=> p'0 q0. have p0: p != 0 by move: p'0; apply: contra; move/eqP->; rewrite derivC. rewrite /jump mu_mul// {1}(@mu_deriv_root _ _ p)// addn1 p'q0 /=. case emq: (\mu_(_) q)=> [|m]. @@ -825,10 +825,10 @@ wlog cpq: p q hpqa hpqb / coprimep p q => [hwlog|]. apply: hwlog; rewrite ?coprimep_div_gcd ?p0 // rootM. + apply: contra hpqa; rewrite -!dvdp_XsubCl => /orP. case=> /dvdp_trans-> //; rewrite (dvdp_trans (divp_dvd _)); - by rewrite ?(dvdp_gcdl, dvdp_gcdr) ?(dvdp_mulIl, dvdp_mulIr). + by rewrite ?(dvdp_gcdl, dvdp_gcdr) ?(dvdp_mulIl, dvdp_mulIr). + apply: contra hpqb; rewrite -!dvdp_XsubCl => /orP. case=> /dvdp_trans-> //; rewrite (dvdp_trans (divp_dvd _)); - by rewrite ?(dvdp_gcdl, dvdp_gcdr) ?(dvdp_mulIl, dvdp_mulIr). + by rewrite ?(dvdp_gcdl, dvdp_gcdr) ?(dvdp_mulIl, dvdp_mulIr). have p0: p != 0 by apply: contraNneq hpqa => ->; rewrite mul0r rootC. have q0: q != 0 by apply: contraNneq hpqa => ->; rewrite mulr0 rootC. have pq0 : p * q != 0 by rewrite mulf_neq0. @@ -903,7 +903,7 @@ pose m p q := maxn (size p) (size q).+1; rewrite -!/(m _ _). suff {p q} Hnext p q : q != 0 -> (m q (next_mod p q) < m p q)%N; last first. rewrite /m -maxnSS leq_max !geq_max !ltnS leqnn /= /next_mod. rewrite size_scale ?oppr_eq0 ?lcn_neq0 //=. - by move=> q_neq0; rewrite ltn_rmodp ?q_neq0 ?orbT. + by move=> q_neq0; rewrite ltn_rmodp ?q_neq0 ?orbT. suff {p q} m_gt0 p q : (0 < m p q)%N; last by rewrite leq_max orbT. rewrite -[m p q]prednK //=; have [//|p_neq0] := altP (p =P 0). have [->|q_neq0] := altP (q =P 0); first by rewrite !aux0. diff --git a/mathcomp/real_closed/realalg.v b/mathcomp/real_closed/realalg.v index 69fb9c4..0cbba9f 100644 --- a/mathcomp/real_closed/realalg.v +++ b/mathcomp/real_closed/realalg.v @@ -229,7 +229,7 @@ Lemma root_inv_algcreal (x : algcreal) (x_neq0 : (x != 0)%CR) : Proof. rewrite /div_algcreal; case: eq_algcreal_dec=> [/(_ x_neq0)|x_neq0'] //=. case: simplify_algcreal=> x' px'0_neq0 [x'_neq0 eq_xx']. -apply: is_root_annul_creal;rewrite /= -(@eq_creal_inv _ _ _ x_neq0) //. +apply: is_root_annul_creal; rewrite /= -(@eq_creal_inv _ _ _ x_neq0) //. by apply: eq_crealP; exists m0=> * /=; rewrite div1r subrr normr0. Qed. diff --git a/mathcomp/solvable/abelian.v b/mathcomp/solvable/abelian.v index d6dac93..2b0ab00 100644 --- a/mathcomp/solvable/abelian.v +++ b/mathcomp/solvable/abelian.v @@ -176,7 +176,7 @@ Qed. Lemma OhmPredP (x : gT) : reflect (exists2 p, prime p & x ^+ (p ^ n) = 1) (x ^+ (pdiv #[x] ^ n) == 1). Proof. -have [-> | nt_x] := eqVneq x 1. +have [-> | nt_x] := eqVneq x 1. by rewrite expg1n eqxx; left; exists 2; rewrite ?expg1n. apply: (iffP idP) => [/eqP | [p p_pr /eqP x_pn]]. by exists (pdiv #[x]); rewrite ?pdiv_prime ?order_gt1. @@ -702,7 +702,7 @@ move=> p_pr; apply: (iffP (pmaxElemP p G E)) => [[] | defE]. by rewrite cycle_abelem ?p_pr ?orbT // order_dvdn xp. by rewrite (subsetP sEG) // (subsetP cEE) // (exponentP eE). split=> [|H]; last first. - case/pElemP=> sHG /abelemP[// | cHH Hp1] sEH. + case/pElemP=> sHG /abelemP[// | cHH Hp1] sEH. apply/eqP; rewrite eqEsubset sEH andbC /= -defE; apply/subsetP=> x Hx. by rewrite 3!inE (subsetP sHG) // Hp1 ?(subsetP (centsS _ cHH)) /=. apply/pElemP; split; first by rewrite -defE -setIA subsetIl. @@ -1891,7 +1891,7 @@ rewrite big_cons => defG; case/dprodP: defG (defG) => [[_ K _ defK]]. rewrite defK => defHm cxK; rewrite setIC; move/trivgP=> tiKx defHd. rewrite -{1}defHm {defHm} mulG_subG cycle_subG ltnNge -trivg_card_le1. case/andP=> Gx sKG; rewrite -(Mho_dprod _ defHd) => /esym defMho /andP[ntx ntb]. -have{defHd} defOhm := Ohm_dprod n defHd. +have{defHd} defOhm := Ohm_dprod n defHd. apply/andP; split; last first. apply: (IHb K) => //; have:= dprod_modr defMho (Mho_sub _ _). rewrite -(dprod_modr defOhm (Ohm_sub _ _)). diff --git a/mathcomp/solvable/alt.v b/mathcomp/solvable/alt.v index baf4792..73a3b1b 100644 --- a/mathcomp/solvable/alt.v +++ b/mathcomp/solvable/alt.v @@ -271,7 +271,7 @@ have nSyl5: #|'Syl_5(H)| = 1%N. move: (card_Syl_dvd 5 H) (card_Syl_mod H prime_5). rewrite Hcard20; case: (card _) => // n Hdiv. move: (dvdn_leq (isT: (0 < 20)%N) Hdiv). - by move: (n) Hdiv; do 20 (case => //). + by move: (n) Hdiv; do 20 (case=> //). case: (Sylow_exists 5 H) => S; case/pHallP=> sSH oS. have{oS} oS: #|S| = 5 by rewrite oS p_part Hcard20. suff: 20 %| #|S| by rewrite oS. @@ -350,7 +350,7 @@ have Hp1: p1 x = x. have Hcp1: #|[set x | p1 x != x]| <= n. have F1 y: p y = y -> p1 y = y. move=> Hy; rewrite /p1 permM Hy. - case tpermP => //; first by move => <-. + case tpermP => //; first by move=> <-. by move=> Hpx1; apply: (@perm_inj _ p); rewrite -Hpx1. have F2: p1 x1 = x1 by rewrite /p1 permM tpermR. have F3: [set x | p1 x != x] \subset [predD1 [set x | p x != x] & x1]. diff --git a/mathcomp/solvable/burnside_app.v b/mathcomp/solvable/burnside_app.v index 638276c..d602d0a 100644 --- a/mathcomp/solvable/burnside_app.v +++ b/mathcomp/solvable/burnside_app.v @@ -79,13 +79,13 @@ Ltac inj_tac := end. Lemma R1_inj : injective R1. -Proof. by inj_tac; repeat (destruct val => //=; first by apply /eqP). Qed. +Proof. by inj_tac; repeat (destruct val => //=; first by apply/eqP). Qed. Lemma R2_inj : injective R2. -Proof. by inj_tac; repeat (destruct val => //=; first by apply /eqP). Qed. +Proof. by inj_tac; repeat (destruct val => //=; first by apply/eqP). Qed. Lemma R3_inj : injective R3. -Proof. by inj_tac; repeat (destruct val => //=; first by apply /eqP). Qed. +Proof. by inj_tac; repeat (destruct val => //=; first by apply/eqP). Qed. Definition r1 := (perm R1_inj). Definition r2 := (perm R2_inj). @@ -97,8 +97,8 @@ Definition rot := [set r | is_rot r]. Lemma group_set_rot : group_set rot. Proof. -apply /group_setP;split; first by rewrite /rot inE /is_rot mulg1 mul1g. -move => x1 y; rewrite /rot !inE /= /is_rot; move/eqP => hx1; move/eqP => hy. +apply/group_setP; split; first by rewrite /rot inE /is_rot mulg1 mul1g. +move=> x1 y; rewrite /rot !inE /= /is_rot; move/eqP => hx1; move/eqP => hy. by rewrite -mulgA hy !mulgA hx1. Qed. @@ -111,15 +111,15 @@ Lemma rot_eq_c0 : forall r s : {perm square}, Proof. rewrite /is_rot => r s; move/eqP => hr; move/eqP=> hs hrs; apply/permP => a. have ->: a = (r1 ^+ a) c0 - by apply/eqP; case: a; do 4?case => //=; rewrite ?permM !permE. + by apply/eqP; case: a; do 4?case=> //=; rewrite ?permM !permE. by rewrite -!permM -!commuteX // !permM hrs. Qed. Lemma rot_r1 : forall r, is_rot r -> r = r1 ^+ (r c0). Proof. -move=> r hr;apply: rot_eq_c0 => //;apply/eqP. +move=> r hr; apply: rot_eq_c0 => //; apply/eqP. by symmetry; apply: commuteX. -by case: (r c0); do 4?case => //=; rewrite ?permM !permE /=. +by case: (r c0); do 4?case=> //=; rewrite ?permM !permE /=. Qed. Lemma rotations_is_rot : forall r, r \in rotations -> is_rot r. @@ -145,37 +145,37 @@ Definition Sh (sc : square) : square := tnth [tuple c1; c0; c3; c2] sc. Lemma Sh_inj : injective Sh. Proof. -by apply:(can_inj (g:= Sh)); case; do 4?case => //=;move=> H;apply /eqP. +by apply: (can_inj (g:= Sh)); case; do 4?case=> //=; move=> H; apply/eqP. Qed. Definition sh := (perm Sh_inj). Lemma sh_inv : sh^-1 = sh. Proof. -apply:(mulIg sh);rewrite mulVg ;apply/permP. -by case; do 4?case => //=; move=> H;rewrite !permE /= !permE; apply /eqP. +apply: (mulIg sh); rewrite mulVg; apply/permP. +by case; do 4?case=> //=; move=> H; rewrite !permE /= !permE; apply/eqP. Qed. Definition Sv (sc : square) : square := tnth [tuple c3; c2; c1; c0] sc. Lemma Sv_inj : injective Sv. Proof. -by apply : (can_inj (g:= Sv));case; do 4?case => //=;move => H;apply /eqP. +by apply: (can_inj (g:= Sv)); case; do 4?case=> //=; move=> H; apply/eqP. Qed. Definition sv := (perm Sv_inj). Lemma sv_inv : sv^-1 = sv. Proof. -apply:(mulIg sv);rewrite mulVg ;apply/permP. -by case; do 4?case => //=; move=> H; rewrite !permE /= !permE; apply /eqP. +apply: (mulIg sv); rewrite mulVg; apply/permP. +by case; do 4?case=> //=; move=> H; rewrite !permE /= !permE; apply/eqP. Qed. Definition Sd1 (sc : square) : square := tnth [tuple c0; c3; c2; c1] sc. Lemma Sd1_inj : injective Sd1. Proof. -by apply: can_inj Sd1 _; case; do 4?case=> //=; move=> H; apply /eqP. +by apply: can_inj Sd1 _; case; do 4?case=> //=; move=> H; apply/eqP. Qed. Definition sd1 := (perm Sd1_inj). @@ -183,14 +183,14 @@ Definition sd1 := (perm Sd1_inj). Lemma sd1_inv : sd1^-1 = sd1. Proof. apply: (mulIg sd1); rewrite mulVg; apply/permP. -by case; do 4?case=> //=; move=> H; rewrite !permE /= !permE; apply /eqP. +by case; do 4?case=> //=; move=> H; rewrite !permE /= !permE; apply/eqP. Qed. Definition Sd2 (sc : square) : square := tnth [tuple c2; c1; c0; c3] sc. Lemma Sd2_inj : injective Sd2. Proof. -by apply: can_inj Sd2 _; case; do 4?case=> //=; move=> H; apply /eqP. +by apply: can_inj Sd2 _; case; do 4?case=> //=; move=> H; apply/eqP. Qed. Definition sd2 := (perm Sd2_inj). @@ -238,8 +238,8 @@ Qed. Ltac non_inj p a1 a2 heq1 heq2 := let h1:= fresh "h1" in -(absurd (p a1 = p a2);first (by red; move=> h1;move:(perm_inj h1)); -by rewrite heq1 heq2;apply/eqP). +(absurd (p a1 = p a2); first (by red => - h1; move: (perm_inj h1)); +by rewrite heq1 heq2; apply/eqP). Ltac is_isoPtac p f e0 e1 e2 e3 := suff ->: p = f by [rewrite inE eqxx ?orbT]; @@ -444,7 +444,7 @@ move/eqn_pmul2l <-; rewrite -expnS -card_Fid Fid cardsT. rewrite -{1}[n]card_ord -cardX. pose pk k := [ffun i => k (if i == y then x else i) : colors]. rewrite -(@card_image _ _ (fun k : col_squares => (k y, pk k))). - apply/eqP; apply: eq_card => ck /=; rewrite inE /= [_ \in _]inE. + apply/eqP; apply: eq_card => ck /=; rewrite inE /= [_ \in _]inE. apply/eqP/imageP; last first. by case=> k _ -> /=; rewrite !ffunE if_same eqxx. case: ck => c k /= kxy. @@ -460,7 +460,7 @@ Qed. Lemma F_Sd2 : 'Fix_to[sd2] = [set x | coin0 x == coin2 x]. Proof. apply/setP => x; rewrite (sameP afix1P eqP) !inE eqperm_map /=. -by rewrite /act_f sd2_inv !ffunE !permE /= !eqxx !andbT eq_sym /= andbb. +by rewrite /act_f sd2_inv !ffunE !permE /= !eqxx !andbT eq_sym /= andbb. Qed. Lemma burnside_app_iso : @@ -555,19 +555,19 @@ Lemma S1_inv : involutive S1f. Proof. by move=> z; apply/eqP; case: z; do 6?case. Qed. Lemma S2_inv : involutive S2f. -Proof. by move=> z; apply /eqP; case: z; do 6?case. Qed. +Proof. by move=> z; apply/eqP; case: z; do 6?case. Qed. Lemma S3_inv : involutive S3f. -Proof. by move=> z; apply /eqP; case: z; do 6?case. Qed. +Proof. by move=> z; apply/eqP; case: z; do 6?case. Qed. Lemma S4_inv : involutive S4f. -Proof. by move=> z; apply /eqP; case: z; do 6?case. Qed. +Proof. by move=> z; apply/eqP; case: z; do 6?case. Qed. Lemma S5_inv : involutive S5f. -Proof. by move=> z; apply /eqP; case: z; do 6?case. Qed. +Proof. by move=> z; apply/eqP; case: z; do 6?case. Qed. Lemma S6_inv : involutive S6f. -Proof. by move=> z; apply /eqP; case: z; do 6?case. Qed. +Proof. by move=> z; apply/eqP; case: z; do 6?case. Qed. Lemma S05_inj : injective S05f. Proof. by apply: can_inj S05f _ => z; apply/eqP; case: z; do 6?case. Qed. @@ -594,10 +594,10 @@ Lemma R41_inj : injective R41f. Proof. by apply: can_inj R14f _ => z; apply/eqP; case: z; do 6?case. Qed. Lemma R32_inj : injective R32f. -Proof. by apply: can_inj R23f _ => z; apply /eqP; case: z; do 6?case. Qed. +Proof. by apply: can_inj R23f _ => z; apply/eqP; case: z; do 6?case. Qed. Lemma R024_inj : injective R024f. -Proof. by apply: can_inj R042f _ => z; apply /eqP; case: z ; do 6?case. Qed. +Proof. by apply: can_inj R042f _ => z; apply/eqP; case: z; do 6?case. Qed. Lemma R042_inj : injective R042f. Proof. by apply: can_inj R024f _ => z; apply/eqP; case: z; do 6?case. Qed. @@ -628,7 +628,7 @@ Definition s05 := (perm S05_inj). Definition s14 : {perm cube}. Proof. apply: (@perm _ S14f); apply: can_inj S14f _ => z. -by apply /eqP; case: z; do 6?case. +by apply/eqP; case: z; do 6?case. Defined. Definition s23 := (perm (inv_inj S23_inv)). @@ -661,8 +661,8 @@ Definition dir_iso3 := [set p | s1 == p, s2 == p, s3 == p, s4 == p, s5 == p | s6 == p]]. Definition dir_iso3l := [:: id3; s05; s14; s23; r05; r14; r23; r50; r41; - r32; r024; r042; r012; r021; r031; r013; r043 ; r034; - s1 ; s2; s3; s4; s5; s6]. + r32; r024; r042; r012; r021; r031; r013; r043; r034; + s1; s2; s3; s4; s5; s6]. Definition S0 := [:: F5; F4; F3; F2; F1; F0]. Definition S0f (sc : cube) : cube := tnth [tuple of S0] sc. @@ -730,8 +730,8 @@ by apply: eq_codom; apply: permE. Qed. Lemma Lcorrect : seq_iso_L == map sop [:: id3; s05; s14; s23; r05; r14; r23; - r50; r41; r32; r024; r042; r012; r021; r031; r013; r043 ; r034; - s1 ; s2; s3; s4; s5; s6]. + r50; r41; r32; r024; r042; r012; r021; r031; r013; r043; r034; + s1; s2; s3; s4; s5; s6]. Proof. by rewrite /= !seqs1. Qed. Lemma iso0_1 : dir_iso3 =i dir_iso3l. @@ -791,14 +791,14 @@ Qed. Ltac iso_tac := let a := fresh "a" in apply/permP => a; - apply/eqP; rewrite !permM !permE; case: a; do 6? case. + apply/eqP; rewrite !permM !permE; case: a; do 6?case. Ltac inv_tac := apply: esym (etrans _ (mul1g _)); apply: canRL (mulgK _) _; iso_tac. Lemma dir_s0p : forall p, (s0 * p) \in dir_iso3 -> p \notin dir_iso3. Proof. -move => p Hs0p; move: (ndir_s0p Hs0p); rewrite mulgA. +move=> p Hs0p; move: (ndir_s0p Hs0p); rewrite mulgA. have e: (s0^-1=s0) by inv_tac. by rewrite -{1}e mulVg mul1g. Qed. @@ -808,16 +808,16 @@ Definition iso3 := [set p | is_iso3b p]. Lemma is_iso3P : forall p, reflect (is_iso3 p) (p \in iso3). Proof. -move => p; apply: (iffP idP); rewrite inE /iso3 /is_iso3b /is_iso3 => e. - by move => fi; rewrite -!permM (eqP e). -by apply/eqP;apply/permP=> z; rewrite !permM (e z). +move=> p; apply: (iffP idP); rewrite inE /iso3 /is_iso3b /is_iso3 => e. + by move=> fi; rewrite -!permM (eqP e). +by apply/eqP; apply/permP=> z; rewrite !permM (e z). Qed. Lemma group_set_iso3 : group_set iso3. Proof. -apply /group_setP;split. +apply/group_setP; split. by apply/is_iso3P => fi; rewrite -!permM mulg1 mul1g. -move => x1 y; rewrite /iso3 !inE /= /is_iso3. +move=> x1 y; rewrite /iso3 !inE /= /is_iso3. rewrite /is_iso3b. rewrite -mulgA. move/eqP => hx1; move/eqP => hy. @@ -828,16 +828,16 @@ Canonical iso_group3 := Group group_set_iso3. Lemma group_set_diso3 : group_set dir_iso3. Proof. -apply/group_setP;split;first by rewrite inE eqxx /=. -by apply:stable. +apply/group_setP; split; first by rewrite inE eqxx /=. +by apply: stable. Qed. Canonical diso_group3 := Group group_set_diso3. Lemma gen_diso3 : dir_iso3 = <<[set r05; r14]>>. Proof. -apply/setP; apply/subset_eqP;apply/andP; split;first last. - by rewrite gen_subG;apply/subsetP => x; rewrite !inE; - case/orP; move/eqP ->; rewrite eqxx !orbT. +apply/setP; apply/subset_eqP; apply/andP; split; first last. + by rewrite gen_subG; apply/subsetP => x; rewrite !inE; + case/orP; move/eqP ->; rewrite eqxx !orbT. apply/subsetP => x; rewrite !inE. have -> : s05 = r05 * r05 by iso_tac. have -> : s14 = r14 * r14 by iso_tac. @@ -910,7 +910,7 @@ Proof. have s05_inv: s05^-1=s05 by inv_tac. apply/setP => x; rewrite infE !inE eqperm_map2 /= /act_g s05_inv !ffunE !permE /=. apply sym_equal; rewrite !eqxx /= andbT/col1/col2/col3/col4/col5/col0. -by do 2![rewrite eq_sym; case : {+}(_ == _)=> //= ]. +by do 2![rewrite eq_sym; case: {+}(_ == _)=> //= ]. Qed. Lemma F_s14 : @@ -919,7 +919,7 @@ Proof. have s14_inv: s14^-1=s14 by inv_tac. apply/setP => x; rewrite infE !inE eqperm_map2 /= /act_g s14_inv !ffunE !permE /=. apply sym_equal; rewrite !eqxx /= andbT/col1/col2/col3/col4/col5/col0. -by do 2![rewrite eq_sym; case : {+}(_ == _)=> //= ]. +by do 2![rewrite eq_sym; case: {+}(_ == _)=> //= ]. Qed. Lemma r05_inv : r05^-1 = r50. @@ -942,7 +942,7 @@ Lemma F_s23 : Proof. apply/setP => x; rewrite infE !inE eqperm_map2 /= /act_g s23_inv !ffunE !permE /=. apply sym_equal; rewrite !eqxx /= andbT/col1/col2/col3/col4/col5/col0. -by do 2![rewrite eq_sym; case : {+}(_ == _)=> //=]. +by do 2![rewrite eq_sym; case: {+}(_ == _)=> //=]. Qed. Lemma F_r05 : 'Fix_to_g[r05]= @@ -952,7 +952,7 @@ Proof. apply sym_equal. apply/setP => x; rewrite infE !inE eqperm_map2 /= /act_g r05_inv !ffunE !permE /=. rewrite !eqxx /= !andbT /col1/col2/col3/col4/col5/col0. -by do 3! [rewrite eq_sym;case E: {+}(_ == _); rewrite ?andbF // {E}(eqP E) ]. +by do 3![rewrite eq_sym; case E: {+}(_ == _); rewrite ?andbF // {E}(eqP E) ]. Qed. Lemma F_r50 : 'Fix_to_g[r50]= @@ -960,8 +960,8 @@ Lemma F_r50 : 'Fix_to_g[r50]= && (col3 x == col4 x)]. Proof. apply/setP => x; rewrite infE !inE eqperm_map2 /= /act_g r50_inv !ffunE !permE /=. -apply sym_equal;rewrite !eqxx /= !andbT /col1/col2/col3/col4. -by do 3![rewrite eq_sym;case E: {+}(_ == _); rewrite ?andbF // {E}(eqP E) ]. +apply sym_equal; rewrite !eqxx /= !andbT /col1/col2/col3/col4. +by do 3![rewrite eq_sym; case E: {+}(_ == _); rewrite ?andbF // {E}(eqP E) ]. Qed. Lemma F_r23 : 'Fix_to_g[r23] = @@ -1137,10 +1137,10 @@ Qed. Lemma uniq4_uniq6 : forall x y z t : cube, uniq [:: x; y; z; t] -> exists u, exists v, uniq [:: x; y; z; t; u; v]. Proof. -move => x y z t Uxt; move:( cardC (mem [:: x; y; z; t])). +move=> x y z t Uxt; move: ( cardC (mem [:: x; y; z; t])). rewrite card_ord (card_uniq_tuple Uxt) => hcard. have hcard2: #|predC (mem [:: x; y; z; t])| = 2. - by apply:( @addnI 4); rewrite /injective hcard. + by apply: ( @addnI 4); rewrite /injective hcard. have: #|predC (mem [:: x; y; z; t])| != 0 by rewrite hcard2. case/existsP=> u Hu; exists u. move: (cardC (mem [:: x; y; z; t; u])); rewrite card_ord => hcard5. @@ -1150,62 +1150,62 @@ have: #|[predC [:: x; y; z; t; u]]| !=0. case/existsP=> v; rewrite inE (mem_cat _ [:: _; _; _; _]). case/norP=> Hv Huv; exists v. rewrite (cat_uniq [:: x; y; z; t]) Uxt andTb. -by rewrite -rev_uniq /= negb_or Hu orbF Hv Huv. +by rewrite -rev_uniq /= negb_or Hu orbF Hv Huv. Qed. Lemma card_n4 : forall x y z t : cube, uniq [:: x; y; z; t] -> #|[set p : col_cubes | (p x == p y) && (p z == p t)]| = (n ^ 4)%N. Proof. move=> x y z t Uxt. rewrite -[n]card_ord . -case:(uniq4_uniq6 Uxt) => u; case => v Uxv. +case: (uniq4_uniq6 Uxt) => u; case=> v Uxv. pose ff (p : col_cubes) := (p x, p z, p u , p v). rewrite -(@card_in_image _ _ ff); first last. move=> p1 p2; rewrite !inE. case/andP=> p1y p1t; case/andP=> p2y p2t [px pz] pu pv. - have eqp12: all (fun i => p1 i == p2 i) [:: x; y; z; t; u ; v]. + have eqp12: all (fun i => p1 i == p2 i) [:: x; y; z; t; u; v]. by rewrite /= -(eqP p1y) -(eqP p1t) -(eqP p2y) -(eqP p2t) px pz pu pv !eqxx. apply/ffunP=> i; apply/eqP; apply: (allP eqp12). by rewrite (subset_cardP _ (subset_predT _)) // (card_uniqP Uxv) card_ord. have ->:forall n, (n ^ 4)%N= (n*n*n*n)%N. - by move => n0;rewrite (expnD n0 2 2) -mulnn mulnA. + by move=> n0; rewrite (expnD n0 2 2) -mulnn mulnA. rewrite -!card_prod; apply: eq_card => [] [[[c d]e ]g] /=; apply/imageP. -rewrite (cat_uniq [::x; y;z;t]) in Uxv; case/and3P: Uxv => _ hasxt. +rewrite (cat_uniq [::x; y; z; t]) in Uxv; case/and3P: Uxv => _ hasxt. rewrite /= !inE andbT. move/negbTE=> nuv . rewrite (cat_uniq [::x; y]) in Uxt; case/and3P: Uxt => _. rewrite /= !andbT orbF; case/norP; rewrite !inE => nxyz nxyt _. -move:hasxt; rewrite /= !orbF; case/norP; rewrite !inE orbA. +move: hasxt; rewrite /= !orbF; case/norP; rewrite !inE orbA. case/norP => nxyu nztu. -rewrite orbA;case/norP=> nxyv nztv. +rewrite orbA; case/norP=> nxyv nztv. exists [ffun i => if pred2 x y i then c else if pred2 z t i then d else if u==i then e else g]. rewrite !inE /= !ffunE //= !eqxx orbT //= !eqxx /= orbT. by rewrite (negbTE nxyz) (negbTE nxyt). rewrite {}/ff !ffunE /= !eqxx /=. rewrite (negbTE nxyz) (negbTE nxyu) (negbTE nztu) (negbTE nxyv) (negbTE nztv). -by rewrite nuv. +by rewrite nuv. Qed. -Lemma card_n3_3 : forall x y z t: cube, uniq [:: x; y; z;t] -> +Lemma card_n3_3 : forall x y z t: cube, uniq [:: x; y; z; t] -> #|[set p : col_cubes | (p x == p y) && (p y == p z)&& (p z == p t)]| = (n ^ 3)%N. Proof. move=> x y z t Uxt; rewrite -[n]card_ord . -case:(uniq4_uniq6 Uxt) => u; case => v Uxv. +case: (uniq4_uniq6 Uxt) => u; case=> v Uxv. pose ff (p : col_cubes) := (p x, p u , p v); rewrite -(@card_in_image _ _ ff); first last. move=> p1 p2; rewrite !inE. - case/andP ;case/andP => p1xy p1yz p1zt. - case/andP ;case/andP => p2xy p2yz p2zt [px pu] pv. - have eqp12: all (fun i => p1 i == p2 i) [:: x; y; z; t; u ; v]. + case/andP; case/andP => p1xy p1yz p1zt. + case/andP; case/andP => p2xy p2yz p2zt [px pu] pv. + have eqp12: all (fun i => p1 i == p2 i) [:: x; y; z; t; u; v]. by rewrite /= -(eqP p1zt) -(eqP p2zt) -(eqP p1yz) -(eqP p2yz) -(eqP p1xy) -(eqP p2xy) px pu pv !eqxx. apply/ffunP=> i; apply/eqP; apply: (allP eqp12). by rewrite (subset_cardP _ (subset_predT _)) // (card_uniqP Uxv) card_ord. have ->:forall n, (n ^ 3)%N= (n*n*n)%N. - by move => n0 ; rewrite (expnD n0 2 1) -mulnn expn1. + by move=> n0; rewrite (expnD n0 2 1) -mulnn expn1. rewrite -!card_prod; apply: eq_card => [] [[c d]e ] /=; apply/imageP. -rewrite (cat_uniq [::x; y;z;t]) in Uxv; case/and3P: Uxv => _ hasxt. +rewrite (cat_uniq [::x; y; z; t]) in Uxv; case/and3P: Uxv => _ hasxt. rewrite /uniq !inE !andbT; move/negbTE=> nuv. exists [ffun i => if (i \in [:: x; y; z; t]) then c else if u == i then d else e]. @@ -1214,24 +1214,24 @@ rewrite {}/ff !ffunE !inE /= !eqxx /=; move: hasxt; rewrite nuv. by do 8![case E: ( _ == _ ); rewrite ?(eqP E)/= ?inE ?eqxx //= ?E {E}]. Qed. -Lemma card_n2_3 : forall x y z t u v: cube, uniq [:: x; y; z;t; u ; v] -> +Lemma card_n2_3 : forall x y z t u v: cube, uniq [:: x; y; z; t; u; v] -> #|[set p : col_cubes | (p x == p y) && (p y == p z)&& (p t == p u ) && (p u== p v)]| = (n ^ 2)%N. Proof. move=> x y z t u v Uxv; rewrite -[n]card_ord . pose ff (p : col_cubes) := (p x, p t); rewrite -(@card_in_image _ _ ff); first last. move=> p1 p2; rewrite !inE. - case/andP ;case/andP ; case/andP => p1xy p1yz p1tu p1uv. - case/andP ;case/andP; case/andP => p2xy p2yz p2tu p2uv [px pu]. - have eqp12: all (fun i => p1 i == p2 i) [:: x; y; z; t; u ; v]. + case/andP; case/andP; case/andP => p1xy p1yz p1tu p1uv. + case/andP; case/andP; case/andP => p2xy p2yz p2tu p2uv [px pu]. + have eqp12: all (fun i => p1 i == p2 i) [:: x; y; z; t; u; v]. by rewrite /= -(eqP p1yz) -(eqP p2yz) -(eqP p1xy) -(eqP p2xy) -(eqP p1uv) -(eqP p2uv) -(eqP p1tu) -(eqP p2tu) px pu !eqxx. apply/ffunP=> i; apply/eqP; apply: (allP eqp12). by rewrite (subset_cardP _ (subset_predT _)) // (card_uniqP Uxv) card_ord. -have ->:forall n, (n ^ 2)%N= (n*n)%N by move => n0 ; rewrite -mulnn . +have ->:forall n, (n ^ 2)%N= (n*n)%N by move=> n0; rewrite -mulnn . rewrite -!card_prod; apply: eq_card => [] [c d]/=; apply/imageP. -rewrite (cat_uniq [::x; y;z]) in Uxv; case/and3P: Uxv => Uxt hasxt nuv . -move:hasxt;rewrite /= !orbF; case/norP; rewrite !inE => nxyzt. +rewrite (cat_uniq [::x; y; z]) in Uxv; case/and3P: Uxv => Uxt hasxt nuv . +move: hasxt; rewrite /= !orbF; case/norP; rewrite !inE => nxyzt. case/norP => nxyzu nxyzv. exists [ffun i => if (i \in [:: x; y; z] ) then c else d]. rewrite !inE /= !ffunE !inE //= !eqxx !orbT !eqxx //=. @@ -1239,7 +1239,7 @@ exists [ffun i => if (i \in [:: x; y; z] ) then c else d]. by rewrite {}/ff !ffunE !inE /= !eqxx /= (negbTE nxyzt). Qed. -Lemma card_n3s : forall x y z t u v: cube, uniq [:: x; y; z;t; u ; v] -> +Lemma card_n3s : forall x y z t u v: cube, uniq [:: x; y; z; t; u; v] -> #|[set p : col_cubes | (p x == p y) && (p z == p t)&& (p u == p v )]| = (n ^ 3)%N. Proof. @@ -1247,22 +1247,22 @@ move=> x y z t u v Uxv; rewrite -[n]card_ord . pose ff (p : col_cubes) := (p x, p z, p u). rewrite -(@card_in_image _ _ ff); first last. move=> p1 p2; rewrite !inE. - case/andP ;case/andP => p1xy p1zt p1uv. - case/andP ;case/andP => p2xy p2zt p2uv [px pz] pu. - have eqp12: all (fun i => p1 i == p2 i) [:: x; y; z; t; u ; v]. + case/andP; case/andP => p1xy p1zt p1uv. + case/andP; case/andP => p2xy p2zt p2uv [px pz] pu. + have eqp12: all (fun i => p1 i == p2 i) [:: x; y; z; t; u; v]. by rewrite /= -(eqP p1xy) -(eqP p2xy) -(eqP p1zt) -(eqP p2zt) -(eqP p1uv) -(eqP p2uv) px pz pu !eqxx. apply/ffunP=> i; apply/eqP; apply: (allP eqp12). by rewrite (subset_cardP _ (subset_predT _)) // (card_uniqP Uxv) card_ord. have ->:forall n, (n ^ 3)%N= (n*n*n)%N. - by move => n0 ; rewrite (expnD n0 2 1) -mulnn expn1. + by move=> n0; rewrite (expnD n0 2 1) -mulnn expn1. rewrite -!card_prod. apply: eq_card => [] [[c d]e ] /=; apply/imageP. -rewrite (cat_uniq [::x; y;z;t]) in Uxv; case/and3P: Uxv => Uxt hasxt nuv . +rewrite (cat_uniq [::x; y; z; t]) in Uxv; case/and3P: Uxv => Uxt hasxt nuv . rewrite (cat_uniq [::x; y]) in Uxt; case/and3P: Uxt => _. -rewrite /= !orbF !andbT; case/norP ; rewrite !inE => nxyz nxyt _. +rewrite /= !orbF !andbT; case/norP; rewrite !inE => nxyz nxyt _. move: hasxt; rewrite /= !orbF; case/norP; rewrite !inE orbA. case/norP => nxyu nztu. -rewrite orbA;case/norP=> nxyv nztv. +rewrite orbA; case/norP=> nxyv nztv. exists [ffun i => if (i \in [:: x; y] ) then c else if (i \in [:: z; t] ) then d else e]. rewrite !inE /= !ffunE !inE // !eqxx !orbT !eqxx //=. @@ -1276,15 +1276,15 @@ Lemma burnside_app_iso3 : (cube_coloring_number24 * 24 = n ^ 6 + 6 * n ^ 3 + 3 * n ^ 4 + 8 * (n ^ 2) + 6 * n ^ 3)%N. Proof. -pose iso_list :=[::id3; s05; s14; s23; r05; r14; r23; r50; r41; r32; - r024; r042; r012; r021; r031; r013; r043 ; r034; - s1 ; s2; s3; s4; s5; s6]. +pose iso_list :=[::id3; s05; s14; s23; r05; r14; r23; r50; r41; r32; + r024; r042; r012; r021; r031; r013; r043; r034; + s1; s2; s3; s4; s5; s6]. rewrite (burnside_formula iso_list) => [||p]; last first. -- by rewrite !inE /= !(eq_sym _ p). +- by rewrite !inE /= !(eq_sym _ p). - apply: map_uniq (fun p : {perm cube} => (p F0, p F1)) _ _. have bsr:(fun p : {perm cube} => (p F0, p F1)) =1 (fun p => (nth F0 p F0, nth F0 p F1)) \o sop. - by move => x; rewrite /= -2!sop_spec. + by move=> x; rewrite /= -2!sop_spec. by rewrite (eq_map bsr) map_comp -(eqP Lcorrect); vm_compute. rewrite !big_cons big_nil {1}card_Fid3 /= F_s05 F_s14 F_s23 F_r05 F_r14 F_r23 F_r50 F_r41 F_r32 F_r024 F_r042 F_r012 F_r021 F_r031 F_r013 F_r043 F_r034 diff --git a/mathcomp/solvable/center.v b/mathcomp/solvable/center.v index d63c302..54726be 100644 --- a/mathcomp/solvable/center.v +++ b/mathcomp/solvable/center.v @@ -70,7 +70,7 @@ Canonical center_pgFun := [pgFun by morphim_center]. Section Center. Variables gT : finGroupType. -Implicit Type rT : finGroupType. +Implicit Type rT : finGroupType. Implicit Types (x y : gT) (A B : {set gT}) (G H K D : {group gT}). Lemma subcentP A B x : reflect (x \in A /\ centralises x B) (x \in 'C_A(B)). @@ -101,7 +101,7 @@ Proof. exact: subcentP. Qed. Lemma center_sub A : 'Z(A) \subset A. Proof. exact: subsetIl. Qed. -Lemma center1 : 'Z(1) = 1 :> {set gT}. +Lemma center1 : 'Z(1) = 1 :> {set gT}. Proof. exact: gF1. Qed. Lemma centerC A : {in A, centralised 'Z(A)}. @@ -338,7 +338,7 @@ Proof. transitivity ('ker (subg [group of setX H K / kerHK] \o coset kerHK)). rewrite /ker /morphpre /= /in_cprod /cprod_by; case: cprod_by_key => /=. by rewrite ['N(_) :&: _]quotientGK ?sub_center_normal ?ker_cprod_by_central. -by rewrite ker_comp ker_subg -kerE ker_coset. +by rewrite ker_comp ker_subg -kerE ker_coset. Qed. Lemma cpairg1_dom : H \subset 'dom (in_cprod \o @pairg1 gTH gTK). diff --git a/mathcomp/solvable/commutator.v b/mathcomp/solvable/commutator.v index f3e0779..1f9bad0 100644 --- a/mathcomp/solvable/commutator.v +++ b/mathcomp/solvable/commutator.v @@ -272,7 +272,7 @@ Qed. Lemma der1_joing_cycles (x y : gT) : let XY := <[x]> <*> <[y]> in let xy := [~ x, y] in xy \in 'C(XY) -> XY^`(1) = <[xy]>. -Proof. +Proof. rewrite joing_idl joing_idr /= -sub_cent1 => /norms_gen nRxy. apply/eqP; rewrite eqEsubset cycle_subG mem_commg ?mem_gen ?set21 ?set22 //. rewrite der1_min // quotient_gen -1?gen_subG // quotientU abelian_gen. diff --git a/mathcomp/solvable/cyclic.v b/mathcomp/solvable/cyclic.v index 8073449..9a1e451 100644 --- a/mathcomp/solvable/cyclic.v +++ b/mathcomp/solvable/cyclic.v @@ -316,7 +316,7 @@ Hypothesis dvd_y_x : #[y] %| #[x]. Lemma eltmE i : eltm dvd_y_x (x ^+ i) = y ^+ i. Proof. apply/eqP; rewrite eq_expg_mod_order. -have [x_le1 | x_gt1] := leqP #[x] 1. +have [x_le1 | x_gt1] := leqP #[x] 1. suffices: #[y] %| 1 by rewrite dvdn1 => /eqP->; rewrite !modn1. by rewrite (dvdn_trans dvd_y_x) // dvdn1 order_eq1 -cycle_eq1 trivg_card_le1. rewrite -(expg_znat i (cycle_id x)) invmE /=; last by rewrite /Zp x_gt1 inE. @@ -536,7 +536,7 @@ Lemma metacyclicP A : Proof. exact: 'exists_and3P. Qed. Lemma metacyclic1 : metacyclic 1. -Proof. +Proof. by apply/existsP; exists 1%G; rewrite normal1 trivg_quotient !cyclic1. Qed. diff --git a/mathcomp/solvable/extraspecial.v b/mathcomp/solvable/extraspecial.v index 9d158cc..2c7f6c3 100644 --- a/mathcomp/solvable/extraspecial.v +++ b/mathcomp/solvable/extraspecial.v @@ -127,7 +127,7 @@ Qed. Lemma Grp_pX1p2 : p^{1+2} \isog Grp (x : y : (x ^+ p, y ^+ p, [~ x, y, x], [~ x, y, y])). Proof. -rewrite [@gtype _]unlock ; apply: intro_isoGrp => [|rT H]. +rewrite [@gtype _]unlock; apply: intro_isoGrp => [|rT H]. apply/existsP; pose x := sdpair1 actp (0, 1)%R; pose y := sdpair2 actp 1%R. exists (x, y); rewrite /= !xpair_eqE; set z := [~ x, y]; set G := _ <*> _. have def_z: z = sdpair1 actp (1, 0)%R. @@ -463,7 +463,7 @@ have ox: #[x] = p. have defCy: 'C_G(Y) = Z * <[x]>. apply/eqP; rewrite eq_sym eqEcard mulG_subG setIS ?centS //=. rewrite cycle_subG inE Gx cYx oCY TI_cardMg ?oZ -?orderE ?ox //=. - by rewrite setIC prime_TIg -?orderE ?ox ?cycle_subG. + by rewrite setIC prime_TIg -?orderE ?ox ?cycle_subG. have abelYt: p.-abelem (Y / Z). by rewrite (abelemS (quotientS _ sYG)) //= -/Z -defPhiG Phi_quotient_abelem. have Yxt: coset Z x \in Y / Z by rewrite mem_quotient. diff --git a/mathcomp/solvable/extremal.v b/mathcomp/solvable/extremal.v index 342eeae..9ac5236 100644 --- a/mathcomp/solvable/extremal.v +++ b/mathcomp/solvable/extremal.v @@ -343,7 +343,7 @@ have [ms0 os0]: m s0 = (p ^ n).+1%:R /\ #[s0] = p. rewrite subnK // mulSn -mulnA -expnS -addSn natrD natrM -oG char_Zp //. rewrite mulr0 addr0 => m_s0; split => //. have [d _] := m_se (n - e0)%N; rewrite -subnSK // expnSr expgM -/s0. - rewrite addSn subnK // -oG mulrS natrM char_Zp // {d}mulr0 addr0. + rewrite addSn subnK // -oG mulrS natrM char_Zp // {d}mulr0 addr0. move/eqP; rewrite -m1 (inj_in_eq inj_m) ?group1 ?groupX // -order_dvdn. move/min_p; rewrite order_eq1; case/predU1P=> [s0_1 | ]; last by move/eqP. move/eqP: m_s0; rewrite eq_sym s0_1 m1 -subr_eq0 mulrSr addrK -val_eqE /=. @@ -361,7 +361,7 @@ have defS1: 'Ohm_1(<[s]>) = <[s0]>. rewrite (Ohm1_cyclic_pgroup_prime _ p_s) ?cycle_cyclic ?leqnn ?cycle_eq1 //=. rewrite (OhmE _ p_s) mem_gen ?groupX //= !inE mem_cycle //. by rewrite -order_dvdn os0 ?dvdnn. - by apply/eqP=> s1; rewrite -os0 /s0 s1 expg1n order1 in p_gt1. + by apply/eqP=> s1; rewrite -os0 /s0 s1 expg1n order1 in p_gt1. case: (even_prime p_pr) => [p2 | oddp]; last first. rewrite {+}/e0 oddp subn0 in s0 os0 ms0 os ms defS1 *. have [f defF] := cyclicP cycF; have defP: P = <[s]>. @@ -591,7 +591,7 @@ rewrite (mulnC r) /r {1}def_n expnSr mulnA -mulnDl -mulnA -expnS. rewrite subnSK // subn2 /q -def_n1 expnS dvdn_pmul2r // dvdn_addl. by case/dvdnP=> k ->; rewrite mulnC expgM mem_mulg ?mem_cycle. case: (ltngtP n 3) => [|n_gt3|n3]; first by rewrite ltnNge n_gt2. - by rewrite -subnSK // expnSr mulnA dvdn_mull. + by rewrite -subnSK // expnSr mulnA dvdn_mull. case: (even_prime p_pr) notG8 => [-> | oddp _]; first by rewrite n3. by rewrite bin2odd // -!mulnA dvdn_mulr. Qed. @@ -756,7 +756,7 @@ set B := [set: gT] => oB; set K := _ :\: _. case/existsP=> -[u v] /= /eqP[defB uq v4 uv]. have nUV: <[v]> \subset 'N(<[u]>) by rewrite norms_cycle uv groupV cycle_id. rewrite norm_joinEr // in defB. -have le_ou: #[u] <= q by rewrite dvdn_leq ?expn_gt0 // order_dvdn uq. +have le_ou: #[u] <= q by rewrite dvdn_leq ?expn_gt0 // order_dvdn uq. have le_ov: #[v] <= 4 by rewrite dvdn_leq // order_dvdn v4. have tiUV: <[u]> :&: <[v]> = 1 by rewrite cardMg_TI // defB oB leq_mul. have{le_ou le_ov} [ou ov]: #[u] = q /\ #[v] = 4. @@ -1011,7 +1011,7 @@ have def_tG: {in G :\: X, forall t, t ^: G = <[x ^+ 2]> :* t}. move=> t X't; have [Gt notXt] := setDP X't. have defJt: {in X, forall z, t ^ z = z ^- 2 * t}. move=> z Xz; rewrite /= invMg -mulgA (conjgC _ t). - by rewrite (invXX' _ t) ?groupV ?invgK. + by rewrite (invXX' _ t) ?groupV ?invgK. have defGt: X * <[t]> = G by rewrite (mulg_normal_maximal nsXG) ?cycle_subG. apply/setP=> tz; apply/imsetP/rcosetP=> [[t'z] | [z]]. rewrite -defGt -normC ?cycle_subG ?(subsetP nXG) //. @@ -1067,7 +1067,7 @@ split. - split=> //= H; apply/idP/idP=> [maxH |]; last first. by case/or3P=> /eqP->; rewrite ?maxMt. have [sHG nHG]:= andP (p_maximal_normal pG maxH). - have oH: #|H| = q. + have oH: #|H| = q. apply: double_inj; rewrite -muln2 -(p_maximal_index pG maxH) Lagrange //. by rewrite oG -mul2n. rewrite !(eq_sym (gval H)) -eq_sym !eqEcard oH -orderE ox !oMt // !leqnn. @@ -1212,7 +1212,7 @@ have def_tG: {in G :\: X, forall t, t ^: G = <[x ^+ 2]> :* t}. move=> t X't; have [Gt notXt] := setDP X't. have defJt: {in X, forall z, t ^ z = z ^- 2 * t}. move=> z Xz; rewrite /= invMg -mulgA (conjgC _ t). - by rewrite (invXX' _ t) ?groupV ?invgK. + by rewrite (invXX' _ t) ?groupV ?invgK. have defGt: X * <[t]> = G by rewrite (mulg_normal_maximal nsXG) ?cycle_subG. apply/setP=> tz; apply/imsetP/rcosetP=> [[t'z] | [z]]. rewrite -defGt -normC ?cycle_subG ?(subsetP nXG) //. @@ -1795,7 +1795,7 @@ have p_i: p %| i. case=> [[n_gt23 xy] | [p2 Z_xxy]]. suffices ->: cG = ModularGroup by []; apply/modular_group_classP. exists p => //; exists n => //; rewrite isogEcard card_modular_group //. - rewrite oG leqnn andbT Grp_modular_group // -/q -/r. + rewrite oG leqnn andbT Grp_modular_group // -/q -/r. have{i def_yp p_i} [i def_yp]: exists i, y ^- p = x ^+ i ^+ p. by case/dvdnP: p_i => j def_i; exists j; rewrite -expgM -def_i. have Zyx: [~ y, x] \in Z. @@ -1825,7 +1825,7 @@ case=> [[n_gt23 xy] | [p2 Z_xxy]]. by rewrite -p2 -oZ order_dvdG. have{i def_yp p_i} Zy2: y ^+ 2 \in Z. rewrite defZ (OhmE _ pX) -groupV -p2 def_yp mem_gen // !inE groupX //= p2. - rewrite expgS -{2}def_yp -(mulKg y y) -conjgE -conjXg -conjVg def_yp conjXg. + rewrite expgS -{2}def_yp -(mulKg y y) -conjgE -conjXg -conjVg def_yp conjXg. rewrite -expgMn //; last by apply: (centsP cXX); rewrite ?memJ_norm. by rewrite -order_dvdn (dvdn_trans (order_dvdG Z_xxy)) ?oZ. rewrite !cycle_traject !orderE oZ p2 !inE !mulg1 /= in Z_xxy Zy2 *. diff --git a/mathcomp/solvable/finmodule.v b/mathcomp/solvable/finmodule.v index 97b2ebc..5a2b35b 100644 --- a/mathcomp/solvable/finmodule.v +++ b/mathcomp/solvable/finmodule.v @@ -140,13 +140,13 @@ Canonical fmod_morphism := Morphism fmodM. Lemma fmodX n : {in A, {morph fmod : x / (x ^+ n)%g >-> x *+ n}}. Proof. exact: morphX. Qed. Lemma fmodV : {morph fmod : x / x^-1%g >-> - x}. -Proof. +Proof. move=> x; apply: val_inj; rewrite fmvalN !fmodKcond groupV. by case: (x \in A); rewrite ?invg1. Qed. Lemma injm_fmod : 'injm fmod. -Proof. +Proof. by apply/injmP=> x y Ax Ay []; move/val_inj; apply: (injmP (injm_subg A)). Qed. @@ -212,13 +212,13 @@ Proof. by move=> x y Nx Ny /= u; apply: val_inj; rewrite !fmvalJ ?conjgM ?groupM. Qed. -Lemma actrK x : cancel (actr^~ x) (actr^~ x^-1%g). +Lemma actrK x : cancel (actr^~ x) (actr^~ x^-1%g). Proof. move=> u; apply: val_inj; rewrite !fmvalJcond groupV. by case: ifP => -> //; rewrite conjgK. Qed. -Lemma actrKV x : cancel (actr^~ x^-1%g) (actr^~ x). +Lemma actrKV x : cancel (actr^~ x^-1%g) (actr^~ x). Proof. by move=> u; rewrite /= -{2}(invgK x) actrK. Qed. End OneFinMod. @@ -330,7 +330,7 @@ have{cocycle_nu} fM: {in G &, {morph f : x y / x * y}}. move=> x y Gx Gy; rewrite /f ?rHmul // -3!mulgA; congr (_ * _). rewrite (mulgA _ (rH y)) (conjgC _ (rH y)) -mulgA; congr (_ * _). rewrite -fmvalJ ?actrH ?nHG ?GrH // -!fmvalA actZr -mulrnDl. - rewrite -(addrC (nu y)) cocycle_nu // mulrnDl !fmvalA; congr (_ * _). + rewrite -(addrC (nu y)) cocycle_nu // mulrnDl !fmvalA; congr (_ * _). by rewrite !fmvalZ expgK ?fmodP. exists (Morphism fM @* G)%G; apply/complP; split. apply/trivgP/subsetP=> x /setIP[Hx /morphimP[y _ Gy eq_x]]. @@ -479,7 +479,7 @@ Lemma mulg_exp_card_rcosets x : x * (g ^+ n_ x) \in H :* x. Proof. rewrite /n_ /indexg -orbitRs -pcycle_actperm ?inE //. rewrite -{2}(iter_pcycle (actperm 'Rs g) (H :* x)) -permX -morphX ?inE //. -by rewrite actpermE //= rcosetE -rcosetM rcoset_refl. +by rewrite actpermE //= rcosetE -rcosetM rcoset_refl. Qed. Let HGg : {set {set {set gT}}} := orbit 'Rs <[g]> @: HG. @@ -545,9 +545,9 @@ have pcyc_eq x: pcyc x =i traj x by apply: pcycle_traject. have uniq_traj x: uniq (traj x) by apply: uniq_traject_pcycle. have n_eq x: n_ x = #|pcyc x| by rewrite -Hgr_eq. have size_traj x: size (traj x) = n_ x by rewrite n_eq size_traject. -have nth_traj x j: j < n_ x -> nth (H :* x) (traj x) j = H :* (x * g ^+ j). +have nth_traj x j: j < n_ x -> nth (H :* x) (traj x) j = H :* (x * g ^+ j). move=> lt_j_x; rewrite nth_traject -?n_eq //. - by rewrite -permX -morphX ?inE // actpermE //= rcosetE rcosetM. + by rewrite -permX -morphX ?inE // actpermE //= rcosetE rcosetM. have sYG: Y \subset G. apply/bigcupsP=> x Xx; apply/subsetP=> _ /imsetP[i _ ->]. by rewrite groupM ?groupX // sXG. @@ -586,7 +586,7 @@ rewrite /traj -n_eq; case def_n: (n_ x) (n_gt0) => // [n] _. rewrite conjgE invgK -{1}[H :* x]rcoset1 -{1}(expg0 g). elim: {1 3}n 0%N (addn0 n) => [|m IHm] i def_i /=. rewrite big_seq1 {i}[i]def_i rYE // ?def_n //. - rewrite -(mulgA _ _ g) -rcosetM -expgSr -[(H :* x) :* _]rcosetE. + rewrite -(mulgA _ _ g) -rcosetM -expgSr -[(H :* x) :* _]rcosetE. rewrite -actpermE morphX ?inE // permX // -{2}def_n n_eq iter_pcycle mulgA. by rewrite -[H :* x]rcoset1 (rYE _ 0%N) ?mulg1. rewrite big_cons rYE //; last by rewrite def_n -def_i ltnS leq_addl. diff --git a/mathcomp/solvable/frobenius.v b/mathcomp/solvable/frobenius.v index e4a716d..da65950 100644 --- a/mathcomp/solvable/frobenius.v +++ b/mathcomp/solvable/frobenius.v @@ -567,7 +567,7 @@ have hallK: Hall G K. rewrite !inE -andbA -sub_cent1=> /and4P[_ Kz _ cPz] ntz. by apply: subset_trans (regK z _); [apply/subsetIP | apply/setD1P]. have /splitsP[H /complP[tiKH defG]] := SchurZassenhaus_split hallK nsKG. -have [_ sHG] := mulG_sub defG; have nKH := subset_trans sHG nKG. +have [_ sHG] := mulG_sub defG; have nKH := subset_trans sHG nKG. exists H; apply/Frobenius_semiregularP; rewrite ?sdprodE //. by apply: contraNneq (proper_subn ltKG) => H1; rewrite -defG H1 mulg1. apply: semiregular_sym => x Kx; apply/trivgP; rewrite -tiKH. @@ -603,7 +603,7 @@ have partG: partition (gval K |: (H^# :^: K)) G. apply: Frobenius_partition; apply/andP; rewrite defG; split=> //. by apply/Frobenius_actionP; apply: HasFrobeniusAction FrobG. have{FrobG} [ffulG transG regG ntH [u Su defH]]:= FrobG. -apply/setP=> x; rewrite !inE; have [-> | ntx] := altP eqP; first exact: group1. +apply/setP=> x; rewrite !inE; have [-> | ntx] := altP eqP; first exact: group1. rewrite /= -(cover_partition partG) /cover. have neKHy y: gval K <> H^# :^ y. by move/setP/(_ 1); rewrite group1 conjD1g setD11. diff --git a/mathcomp/solvable/gfunctor.v b/mathcomp/solvable/gfunctor.v index fc8385d..7fbee8c 100644 --- a/mathcomp/solvable/gfunctor.v +++ b/mathcomp/solvable/gfunctor.v @@ -158,7 +158,7 @@ End Definitions. Section ClassDefinitions. Structure iso_map := IsoMap { - apply : object_map; + apply: object_map; _ : group_valued apply; _ : closed apply; _ : iso_continuous apply diff --git a/mathcomp/solvable/gseries.v b/mathcomp/solvable/gseries.v index 772db33..6dcd833 100644 --- a/mathcomp/solvable/gseries.v +++ b/mathcomp/solvable/gseries.v @@ -420,7 +420,7 @@ Qed. Lemma maxnormal_minnormal G L M : G \subset 'N(M) -> L \subset 'N(G) -> maxnormal M G L -> - minnormal (G / M) (L / M). + minnormal (G / M) (L / M). Proof. move=> nMG nGL /maxgroupP[/andP[/andP[sMG ltMG] nML] maxM]; apply/mingroupP. rewrite -subG1 quotient_sub1 ?ltMG ?quotient_norms //. @@ -544,7 +544,7 @@ Proof. by case/and3P=> /quotient_cents2r *; rewrite subsetI quotientS. Qed. Lemma central_central_factor H K : (K / H) \subset 'Z(G / H) -> H <| K -> H <| G -> central_factor G H K. Proof. -case/subsetIP=> sKGb cGKb /andP[sHK nHK] /andP[sHG nHG]. +case/subsetIP=> sKGb cGKb /andP[sHK nHK] /andP[sHG nHG]. by rewrite /central_factor -quotient_cents2 // cGKb sHK -(quotientSGK nHK). Qed. diff --git a/mathcomp/solvable/hall.v b/mathcomp/solvable/hall.v index d59964b..68c2863 100644 --- a/mathcomp/solvable/hall.v +++ b/mathcomp/solvable/hall.v @@ -291,7 +291,7 @@ case: (SchurZassenhaus_trans_sol _ nMK sK1G1 coMK) => [||x Mx defK1]. by apply/trivgP; rewrite -trMH /= setIA subsetIl. rewrite -coprime_cardMg // defG1; apply/eqP; congr #|(_ : {set _})|. rewrite group_modl; last by rewrite -defG1 mulG_subl. - by apply/setIidPr; rewrite defG gen_subG subUset sKG. + by apply/setIidPr; rewrite defG gen_subG subUset sKG. exists x^-1; first by rewrite groupV (subsetP sMG). by rewrite -(_ : K1 :^ x^-1 = K) ?(conjSg, subsetIl) // defK1 conjsgK. Qed. @@ -310,7 +310,7 @@ Corollary Hall_trans pi (G H1 H2 : {group gT}) : solvable G -> pi.-Hall(G) H1 -> pi.-Hall(G) H2 -> exists2 x, x \in G & H1 :=: H2 :^ x. Proof. -move=> solG; have [H hallH transH] := Hall_exists_subJ pi solG. +move=> solG; have [H hallH transH] := Hall_exists_subJ pi solG. have conjH (K : {group gT}): pi.-Hall(G) K -> exists2 x, x \in G & K = (H :^ x)%G. - move=> hallK; have [sKG piK _] := and3P hallK. @@ -418,7 +418,7 @@ Proposition coprime_Hall_trans A G H1 H2 : exists2 x, x \in 'C_G(A) & H1 :=: H2 :^ x. Proof. move: H1 => H nGA coGA solG hallH nHA hallH2. -have{H2 hallH2} [x Gx -> nH1xA] := Hall_trans solG hallH2 hallH. +have{H2 hallH2} [x Gx -> nH1xA] := Hall_trans solG hallH2 hallH. have sG_AG: G \subset A <*> G by rewrite -{1}genGid genS ?subsetUr. have nG_AG: A <*> G \subset 'N(G) by rewrite gen_subG subUset nGA normG. pose N := 'N_(A <*> G)(H)%G. diff --git a/mathcomp/solvable/jordanholder.v b/mathcomp/solvable/jordanholder.v index 6a8de0e..66f6156 100644 --- a/mathcomp/solvable/jordanholder.v +++ b/mathcomp/solvable/jordanholder.v @@ -306,7 +306,7 @@ Qed. Lemma acts_qact_doms (H : {group rT}) : H \subset D -> [acts A, on H | to] -> qact_dom to H :=: A. Proof. -move=> sHD aH; apply/eqP; rewrite eqEsubset; apply/andP. +move=> sHD aH; apply/eqP; rewrite eqEsubset; apply/andP. split; first exact: qact_dom_doms. apply/subsetP=> x Ax; rewrite qact_domE //; apply/gastabsP=> //. by move/gactsP: aH; move/(_ x Ax). @@ -527,11 +527,11 @@ have: K' :=: 1%G \/ K' :=: (G / H). apply/morphimP; exists (to z x) => //. suff h: qact_dom to H \subset A. by rewrite astabs_act // (subsetP aK) //; apply: (subsetP h). - by apply/subsetP=> t; rewrite qact_domE // inE; case/ andP. + by apply/subsetP=> t; rewrite qact_domE // inE; case/andP. case; last first. move/quotient_injG; rewrite !inE /=; move/(_ nKH nHG)=> c; move: nsGK. by rewrite c subxx. -rewrite /= -trivg_quotient; move=> tK'; apply:(congr1 (@gval _)); move: tK'. +rewrite /= -trivg_quotient => - tK'; apply: (congr1 (@gval _)); move: tK'. by apply: (@quotient_injG _ H); rewrite ?inE /= ?normal_refl. Qed. @@ -565,7 +565,7 @@ have aKQ1 : [acts qact_dom to N1, on K | to / N1]. have sH'N2 : H' \subset N2. rewrite /H' eHH' quotientGK ?normal_cosetpre //=. by rewrite sub_cosetpre_quo ?normal_sub. - have -> : f1 @* H' = coset N1 @* H' by rewrite f1im //=. + have -> : f1 @* H' = coset N1 @* H' by rewrite f1im //=. apply: qacts_coset => //; apply: qacts_cosetpre => //; last exact: gactsI. by apply: (subset_trans (subsetIr _ _)). have injf2 : 'injm f2. diff --git a/mathcomp/solvable/maximal.v b/mathcomp/solvable/maximal.v index 4255bd9..e5c2d4f 100644 --- a/mathcomp/solvable/maximal.v +++ b/mathcomp/solvable/maximal.v @@ -301,7 +301,7 @@ case: (eqsVneq P 1) => [-> | ntP] in sPhiP *. have [p_pr _ _] := pgroup_pdiv pP ntP. have [abP x1P] := abelemP p_pr Phi_quotient_abelem. apply/andP; split. - have nMP: P \subset 'N(P^`(1) <*> 'Mho^1(P)) by rewrite normsY // !gFnorm. + have nMP: P \subset 'N(P^`(1) <*> 'Mho^1(P)) by rewrite normsY // !gFnorm. rewrite -quotient_sub1 ?gFsub_trans //=. suffices <-: 'Phi(P / (P^`(1) <*> 'Mho^1(P))) = 1 by apply: morphimF. apply/eqP; rewrite (trivg_Phi (morphim_pgroup _ pP)) /= -quotientE. @@ -530,7 +530,7 @@ Lemma abelem_split_dprod rT p (A B : {group rT}) : Proof. move=> abelA sBA; have [_ cAA _]:= and3P abelA. case/splitsP: (abelem_splits abelA sBA) => C /complP[tiBC defA]. -by exists C; rewrite dprodE // (centSS _ sBA cAA) // -defA mulG_subr. +by exists C; rewrite dprodE // (centSS _ sBA cAA) // -defA mulG_subr. Qed. Lemma p_abelem_split1 rT p (A : {group rT}) x : @@ -728,8 +728,8 @@ Variables (gT : finGroupType) (p : nat) (A G : {group gT}). Lemma center_special_abelem : p.-group G -> special G -> p.-abelem 'Z(G). Proof. move=> pG [defPhi defG']. -have [-> | ntG] := eqsVneq G 1; first by rewrite center1 abelem1. -have [p_pr _ _] := pgroup_pdiv pG ntG. +have [-> | ntG] := eqsVneq G 1; first by rewrite center1 abelem1. +have [p_pr _ _] := pgroup_pdiv pG ntG. have fM: {in 'Z(G) &, {morph expgn^~ p : x y / x * y}}. by move=> x y /setIP[_ /centP cxG] /setIP[/cxG cxy _]; apply: expgMn. rewrite abelemE //= center_abelian; apply/exponentP=> /= z Zz. @@ -877,7 +877,7 @@ have [_ _ [m oZ]] := pgroup_pdiv (pgroupS sZG pG) ntZ. have lt_m1_n: m.+1 < n. suffices: 1 < logn p #|(G / 'Z(G))|. rewrite card_quotient // -divgS // logn_div ?cardSg //. - by rewrite oG oZ !pfactorK // ltn_subRL addn1. + by rewrite oG oZ !pfactorK // ltn_subRL addn1. rewrite ltnNge; apply: contra not_cGG => cycGs. apply: cyclic_center_factor_abelian; rewrite (dvdn_prime_cyclic p_pr) //. by rewrite (card_pgroup (quotient_pgroup _ pG)) (dvdn_exp2l _ cycGs). @@ -968,7 +968,7 @@ have fmG: fm @* G = 'Z(G). by apply/subsetP=> _ /morphimP[z _ Gz ->]; apply: fZ. apply/eqP; rewrite eqEsubset sfmG; apply: contraR notZx => /(prime_TIg prZ). rewrite (setIidPr _) // => fmG1; rewrite inE Gx; apply/centP=> y Gy. - by apply/commgP; rewrite -in_set1 -[[set _]]fmG1; apply: mem_morphim. + by apply/commgP; rewrite -in_set1 -[[set _]]fmG1; apply: mem_morphim. have ->: 'C_G[x] = 'ker fm. apply/setP=> z; rewrite inE (sameP cent1P commgP) !inE. by rewrite -invg_comm eq_invg_mul mulg1. @@ -1047,7 +1047,7 @@ exists [group of E]; exists [group of R] => /=. have sEG: E \subset G by rewrite join_subG !cycle_subG Gx. have [Ex Ey]: x \in E /\ y \in E by rewrite !mem_gen // inE cycle_id ?orbT. have sZE: 'Z(G) \subset E. - rewrite (('Z(G) =P E^`(1)) _) ?der_sub // eqEsubset -{2}defG' dergS // andbT. + rewrite (('Z(G) =P E^`(1)) _) ?der_sub // eqEsubset -{2}defG' dergS // andbT. apply: contraR not_cxy => /= not_sZE'. rewrite (sameP cent1P commgP) -in_set1 -[[set 1]](prime_TIg prZ not_sZE'). by rewrite /= -defG' inE !mem_commg. @@ -1290,7 +1290,7 @@ have [y Ey not_cxy]: exists2 y, y \in E & y \notin 'C[x]. by apply/subsetPn; rewrite sub_cent1; rewrite inE Ex in notZx. have notZy: y \notin 'Z(E). apply: contra not_cxy; rewrite inE Ey; apply: subsetP. - by rewrite -cent_set1 centS ?sub1set. + by rewrite -cent_set1 centS ?sub1set. pose K := 'C_E[y]; have maxK: maximal K E by apply: cent1_extraspecial_maximal. have nsKE: K <| E := p_maximal_normal pE maxK; have [sKE nKE] := andP nsKE. have oK: #|K| = (p ^ 2)%N. @@ -1440,7 +1440,7 @@ rewrite {pCGZ}(OhmE 1 pCGZ) gen_subG; apply/subsetP=> x; rewrite 3!inE -andbA. rewrite -!cycle_subG => /and3P[sXG cZX xp1] /=; have cXX := cycle_abelian x. have nZX := cents_norm cZX; have{nAG} nAX := subset_trans sXG nAG. pose XA := <[x]> <*> A; pose C := 'C(<[x]> / Z | 'Q); pose CA := A :&: C. -pose Y := <[x]> <*> CA; pose W := 'Ohm_1(Y). +pose Y := <[x]> <*> CA; pose W := 'Ohm_1(Y). have sXC: <[x]> \subset C by rewrite sub_astabQ nZX (quotient_cents _ cXX). have defY : Y = <[x]> * CA by rewrite -norm_joinEl // normsI ?nAX ?normsG. have{nAX} defXA: XA = <[x]> * A := norm_joinEl nAX. @@ -1450,7 +1450,7 @@ suffices{sXC}: XA \subset Y. have sZCA: Z \subset CA by rewrite subsetI sZA [C]astabQ sub_cosetpre. have cZCA: CA \subset 'C(Z) by rewrite subIset 1?(sub_abelian_cent2 cAA). have sZY: Z \subset Y by rewrite (subset_trans sZCA) ?joing_subr. -have{cZCA cZX} cZY: Y \subset 'C(Z) by rewrite join_subG cZX. +have{cZCA cZX} cZY: Y \subset 'C(Z) by rewrite join_subG cZX. have{cXX nZX} sY'Z : Y^`(1) \subset Z. rewrite der1_min ?cents_norm //= -/Y defY quotientMl // abelianM /= -/Z -/CA. rewrite !quotient_abelian // ?(abelianS _ cAA) ?subsetIl //=. @@ -1488,7 +1488,7 @@ Lemma Ohm1_cent_max_normal_abelem Z : odd p -> p.-group G -> [max Z | Z <| G & p.-abelem Z] -> 'Ohm_1('C_G(Z)) = Z. Proof. move=> p_odd pG; set X := 'Ohm_1('C_G(Z)). -case/maxgroupP=> /andP[nsZG abelZ] maxZ. +case/maxgroupP=> /andP[nsZG abelZ] maxZ. have [sZG nZG] := andP nsZG; have [_ cZZ expZp] := and3P abelZ. have{nZG} nsXG: X <| G by rewrite gFnormal_trans ?norm_normalI ?norms_cent. have cZX : X \subset 'C(Z) by apply/gFsub_trans/subsetIr. @@ -1549,7 +1549,7 @@ have{genXp minU xp1 sVU ltVU} expVp: exponent V %| p. apply/bigcupsP=> z _; apply/subsetP=> v Vv. by rewrite inE -order_dvdn (dvdn_trans (order_dvdG Vv)) // cardJg order_dvdn. have{A pA defA1 sX'A V expVp} Zxy: [~ x, y] \in Z. - rewrite -defA1 (OhmE 1 pA) mem_gen // !inE (exponentP expVp). + rewrite -defA1 (OhmE 1 pA) mem_gen // !inE (exponentP expVp). by rewrite (subsetP sX'A) //= mem_commg ?(subsetP sUX). by rewrite groupMl -1?[x^-1]conjg1 mem_gen // mem_imset2 // ?groupV cycle_id. have{Zxy sUX cZX} cXYxy: [~ x, y] \in 'C(XY). @@ -1610,7 +1610,7 @@ Lemma critical_p_stab_Aut H : Proof. move=> [chH sPhiZ sRZ eqCZ] pG; have sHG := char_sub chH. pose G' := (sdpair1 [Aut G] @* G)%G; pose H' := (sdpair1 [Aut G] @* H)%G. -apply/pgroupP=> q pr_q; case/Cauchy=>//= f cHF; move: (cHF);rewrite astab_ract. +apply/pgroupP=> q pr_q; case/Cauchy=> //= f cHF; move: (cHF); rewrite astab_ract. case/setIP=> Af cHFP ofq; rewrite -cycle_subG in cHF; apply: (pgroupP pG) => //. pose F' := (sdpair2 [Aut G] @* <[f]>)%G. have trHF: [~: H', F'] = 1. diff --git a/mathcomp/solvable/nilpotent.v b/mathcomp/solvable/nilpotent.v index 954be43..3d9739d 100644 --- a/mathcomp/solvable/nilpotent.v +++ b/mathcomp/solvable/nilpotent.v @@ -114,7 +114,7 @@ Lemma centrals_nil (s : seq {group gT}) G : G.-central.-series 1%G s -> last 1%G s = G -> nilpotent G. Proof. move=> cGs defG; apply/forall_inP=> H /subsetIP[sHG sHR]. -move: sHG; rewrite -{}defG -subG1 -[1]/(gval 1%G). +move: sHG; rewrite -{}defG -subG1 -[1]/(gval 1%G). elim: s 1%G cGs => //= L s IHs K /andP[/and3P[sRK sKL sLG] /IHs sHL] sHs. exact: subset_trans sHR (subset_trans (commSg _ (sHL sHs)) sRK). Qed. @@ -490,7 +490,7 @@ Qed. Lemma ucn_id n G : 'Z_n('Z_n(G)) = 'Z_n(G). Proof. exact: gFid. Qed. -Lemma ucn_nilpotent n G : nilpotent 'Z_n(G). +Lemma ucn_nilpotent n G : nilpotent 'Z_n(G). Proof. by apply/ucnP; exists n; rewrite ucn_id. Qed. Lemma nil_class_ucn n G : nil_class 'Z_n(G) <= n. @@ -677,7 +677,7 @@ Lemma solvable1 : solvable [1 gT]. Proof. exact: abelian_sol (abelian1 gT). Qed. Lemma solvableS G H : H \subset G -> solvable G -> solvable H. Proof. -move=> sHG solG; apply/forall_inP=> K /subsetIP[sKH sKK']. +move=> sHG solG; apply/forall_inP=> K /subsetIP[sKH sKK']. by rewrite (forall_inP solG) // subsetI (subset_trans sKH). Qed. @@ -685,7 +685,7 @@ Lemma sol_der1_proper G H : solvable G -> H \subset G -> H :!=: 1 -> H^`(1) \proper H. Proof. move=> solG sHG ntH; rewrite properE comm_subG //; apply: implyP ntH. -by have:= forallP solG H; rewrite subsetI sHG implybNN. +by have:= forallP solG H; rewrite subsetI sHG implybNN. Qed. Lemma derivedP G : reflect (exists n, G^`(n) = 1) (solvable G). diff --git a/mathcomp/solvable/pgroup.v b/mathcomp/solvable/pgroup.v index f3e19b3..b595530 100644 --- a/mathcomp/solvable/pgroup.v +++ b/mathcomp/solvable/pgroup.v @@ -192,7 +192,7 @@ Proof. by move=> pG; rewrite -p_part part_pnat_id. Qed. Lemma properG_ltn_log p G H : p.-group G -> H \proper G -> logn p #|H| < logn p #|G|. -Proof. +Proof. move=> pG; rewrite properEneq eqEcard andbC ltnNge => /andP[sHG]. rewrite sHG /= {1}(card_pgroup pG) {1}(card_pgroup (pgroupS sHG pG)). by apply: contra; case: p {pG} => [|p] leHG; rewrite ?logn0 // leq_pexp2l. @@ -281,7 +281,7 @@ Lemma eq_in_pHall pi rho G H : {in \pi(G), pi =i rho} -> pi.-Hall(G) H = rho.-Hall(G) H. Proof. move=> eq_pi_rho; apply: andb_id2l => sHG. -congr (_ && _); apply: eq_in_pnat => p piHp. +congr (_ && _); apply: eq_in_pnat => p piHp. by apply: eq_pi_rho; apply: (piSg sHG). by congr (~~ _); apply: eq_pi_rho; apply: (pi_of_dvd (dvdn_indexg G H)). Qed. @@ -904,7 +904,7 @@ Proof. have [M maxM _]: {M | [max M | pi.-subgroup(G) M] & 1%G \subset M}. by apply: maxgroup_exists; rewrite /psubgroup sub1G pgroup1. have sOM: 'O_pi(G) \subset M by apply: bigcap_inf. -have /andP[piM sMG] := maxgroupp maxM. +have /andP[piM sMG] := maxgroupp maxM. by rewrite /psubgroup (pgroupS sOM) // (subset_trans sOM). Qed. diff --git a/mathcomp/solvable/sylow.v b/mathcomp/solvable/sylow.v index 32f86f1..8925b7d 100644 --- a/mathcomp/solvable/sylow.v +++ b/mathcomp/solvable/sylow.v @@ -130,7 +130,7 @@ have trS: [transitive G, on S | 'JG]. apply/imsetP; exists P => //; apply/eqP. rewrite eqEsubset andbC acts_sub_orbit // S_P; apply/subsetP=> Q S_Q. have:= S_P; rewrite inE => /maxgroupP[/andP[_ pP]]. - have [-> max1 | ntP _] := eqVneq P 1%G. + have [-> max1 | ntP _] := eqVneq P 1%G. move/andP/max1: (S_pG _ S_Q) => Q1. by rewrite (group_inj (Q1 (sub1G Q))) orbit_refl. have:= oG_mod _ _ S_P S_P; rewrite (oG_mod _ Q) // orbit_refl. @@ -346,7 +346,7 @@ have nsHG: H :&: G <| G by rewrite /normal subsetIr normsI ?normG. rewrite -!(setIC H) defG -(partnC pi (cardG_gt0 _)). rewrite -(card_Hall (Hall_setI_normal nsHG hallR)) /= setICA. rewrite -(card_Hall (Hall_setI_normal nsHG hallK)) /= setICA. -by rewrite -defG (setIidPl (mulG_subl _ _)) (setIidPl (mulG_subr _ _)). +by rewrite -defG (setIidPl (mulG_subl _ _)) (setIidPl (mulG_subr _ _)). Qed. End SomeHall. @@ -550,7 +550,7 @@ Lemma normal_pgroup r P N : Proof. elim: r gT P N => [|r IHr] gTr P N pP nNP le_r. by exists (1%G : {group gTr}); rewrite sub1G normal1 cards1. -have [NZ_1 | ntNZ] := eqVneq (N :&: 'Z(P)) 1. +have [NZ_1 | ntNZ] := eqVneq (N :&: 'Z(P)) 1. by rewrite (TI_center_nil (pgroup_nil pP)) // cards1 logn1 in le_r. have: p.-group (N :&: 'Z(P)) by apply: pgroupS pP; rewrite /= setICA subsetIl. case/pgroup_pdiv=> // p_pr /Cauchy[// | z]. @@ -622,7 +622,7 @@ have{n leGn IHn nDG} pN: p.-group <<'N_E(D)>>. by rewrite subsetI nDG andbF. - by rewrite inE Nx1 (subsetP sEG) ?mem_gen. have Ex1y: x1 ^ y \in E. - by rewrite -mem_conjgV (normsP nEG) // groupV; case/setIP: Ny. + by rewrite -mem_conjgV (normsP nEG) // groupV; case/setIP: Ny. apply: pgroupS (genS _) (pE _ _ Ex1 Ex1y). by apply/subsetP=> u; rewrite !inE. have [y1 Ny1 Py1]: exists2 y1, y1 \in 'N_E(D) & y1 \notin P. diff --git a/mathcomp/ssreflect/bigop.v b/mathcomp/ssreflect/bigop.v index 67454ac..941b488 100644 --- a/mathcomp/ssreflect/bigop.v +++ b/mathcomp/ssreflect/bigop.v @@ -403,7 +403,7 @@ Variable (T : Type) (zero one : T) (mul add : T -> T -> T) (inv : T -> T). Hypothesis mulC : commutative mul. Lemma mulC_id : left_id one mul -> right_id one mul. -Proof. by move=> mul1x x; rewrite mulC. Qed. +Proof. by move=> mul1x x; rewrite mulC. Qed. Lemma mulC_zero : left_zero zero mul -> right_zero zero mul. Proof. by move=> mul0x x; rewrite mulC. Qed. @@ -1596,7 +1596,7 @@ case: (pickP J) => [j0 _ | J0]; first exact: (big_distr_big_dep j0). rewrite {1 4}/index_enum -enumT; case: (enum I) (mem_enum I) => [I0 | i r _]. have f0: I -> J by move=> i; have:= I0 i. rewrite (big_pred1 (finfun f0)) ?big_nil // => g. - by apply/familyP/eqP=> _; first apply/ffunP; move=> i; have:= I0 i. + by apply/familyP/eqP=> _; first apply/ffunP; move => i; have:= I0 i. have Q0 i': Q i' =1 pred0 by move=> j; have:= J0 j. rewrite big_cons /= big_pred0 // mul0m big_pred0 // => f. by apply/familyP=> /(_ i); rewrite [_ \in _]Q0. @@ -1762,7 +1762,7 @@ Proof. apply: (iffP idP) => [dvFm i Pi | dvFm]. by rewrite (bigD1 i) // dvdn_lcm in dvFm; case/andP: dvFm. by elim/big_ind: _ => // p q p_m; rewrite dvdn_lcm p_m. -Qed. +Qed. Lemma biglcmn_sup (I : finType) i0 (P : pred I) F m : P i0 -> m %| F i0 -> m %| \big[lcmn/1%N]_(i | P i) F i. @@ -1777,7 +1777,7 @@ Proof. apply: (iffP idP) => [dvmF i Pi | dvmF]. by rewrite (bigD1 i) // dvdn_gcd in dvmF; case/andP: dvmF. by elim/big_ind: _ => // p q m_p; rewrite dvdn_gcd m_p. -Qed. +Qed. Lemma biggcdn_inf (I : finType) i0 (P : pred I) F m : P i0 -> F i0 %| m -> \big[gcdn/0]_(i | P i) F i %| m. diff --git a/mathcomp/ssreflect/binomial.v b/mathcomp/ssreflect/binomial.v index e42b1fd..98ee64e 100644 --- a/mathcomp/ssreflect/binomial.v +++ b/mathcomp/ssreflect/binomial.v @@ -273,7 +273,7 @@ Qed. Lemma triangular_sum n : \sum_(0 <= i < n) i = 'C(n, 2). Proof. -elim: n => [|n IHn]; first by rewrite big_geq. +elim: n => [|n IHn]; first by rewrite big_geq. by rewrite big_nat_recr // IHn binS bin1. Qed. @@ -307,7 +307,7 @@ suffices{k i} fxx k i: f k.+1 i.+1 = f k i.+1 + f k i. by rewrite big_ord_recl big_ord0 addn0 !bin0 muln1. rewrite {}/f big_ord_recl (big_ord_recl (i.+1)) !bin0 !mul1n. rewrite -addnA -big_split /=; congr (_ + _). -by apply: eq_bigr => j _ ; rewrite -mulnDl. +by apply: eq_bigr => j _; rewrite -mulnDl. Qed. Lemma subn_exp m n k : @@ -504,7 +504,7 @@ Qed. Lemma card_partial_ord_partitions m n : #|[set t : m.-tuple 'I_n.+1 | \sum_(i <- t) i <= n]| = 'C(m + n, m). Proof. -symmetry; set In1 := 'I_n.+1; pose x0 : In1 := ord0. +symmetry; set In1 := 'I_n.+1; pose x0 : In1 := ord0. pose add_mn (i j : In1) : In1 := inord (i + j). pose f_add (t : m.-tuple In1) := [tuple of scanl add_mn x0 t]. rewrite -card_sorted_tuples -!sum1dep_card (reindex f_add) /=. @@ -535,7 +535,7 @@ Qed. Lemma card_ord_partitions m n : #|[set t : m.+1.-tuple 'I_n.+1 | \sum_(i <- t) i == n]| = 'C(m + n, m). Proof. -symmetry; set In1 := 'I_n.+1; pose x0 : In1 := ord0. +symmetry; set In1 := 'I_n.+1; pose x0 : In1 := ord0. pose f_add (t : m.-tuple In1) := [tuple of sub_ord (\sum_(x <- t) x) :: t]. rewrite -card_partial_ord_partitions -!sum1dep_card (reindex f_add) /=. by apply: eq_bigl => t; rewrite big_cons /= addnC (sameP maxn_idPr eqP) maxnE. diff --git a/mathcomp/ssreflect/div.v b/mathcomp/ssreflect/div.v index 723946d..4172430 100644 --- a/mathcomp/ssreflect/div.v +++ b/mathcomp/ssreflect/div.v @@ -200,7 +200,7 @@ rewrite leq_subLR addnA; apply: leq_trans (leq_divDl _ _ _). by rewrite -maxnE leq_div2r ?leq_maxr. Qed. -Lemma divnMA m n p : m %/ (n * p) = m %/ n %/ p. +Lemma divnMA m n p : m %/ (n * p) = m %/ n %/ p. Proof. case: n p => [|n] [|p]; rewrite ?muln0 ?div0n //. rewrite {2}(divn_eq m (n.+1 * p.+1)) mulnA mulnAC !divnMDl //. diff --git a/mathcomp/ssreflect/finfun.v b/mathcomp/ssreflect/finfun.v index e00ddef..43ba42a 100644 --- a/mathcomp/ssreflect/finfun.v +++ b/mathcomp/ssreflect/finfun.v @@ -207,7 +207,7 @@ Lemma pffun_onP y D R f : (f \in pffun_on_mem y (mem D) (mem R)). Proof. apply: (iffP (pfamilyP y D (fun _ => R) f)) => [] [-> f_fam]; split=> //. - by move=> _ /imageP[x Ax ->]; apply: f_fam. + by move=> _ /imageP[x Ax ->]; apply: f_fam. by move=> x Ax; apply: f_fam; apply/imageP; exists x. Qed. @@ -267,7 +267,7 @@ apply/imageP/andP=> [[f0 /familyP/=Ff0] [{f}-> ->]| [Fy /familyP/=Ff]]. split; first by have:= Ff0 x0; rewrite /= mem_head. apply/familyP=> x; have:= Ff0 x; rewrite ffunE inE /=. by case: eqP => //= -> _; rewrite ifN ?inE. -exists (g (y, f)). +exists (g (y, f)). by apply/familyP=> x; have:= Ff x; rewrite ffunE /= inE; case: eqP => // ->. congr (_, _); last apply/ffunP=> x; do !rewrite ffunE /= ?eqxx //. by case: eqP => // ->{x}; apply/eqP; have:= Ff x0; rewrite ifN. diff --git a/mathcomp/ssreflect/finset.v b/mathcomp/ssreflect/finset.v index a9899b7..dc964b5 100644 --- a/mathcomp/ssreflect/finset.v +++ b/mathcomp/ssreflect/finset.v @@ -746,7 +746,7 @@ Lemma cardsU A B : #|A :|: B| = (#|A| + #|B| - #|A :&: B|)%N. Proof. by rewrite -cardsUI addnK. Qed. Lemma cardsI A B : #|A :&: B| = (#|A| + #|B| - #|A :|: B|)%N. -Proof. by rewrite -cardsUI addKn. Qed. +Proof. by rewrite -cardsUI addKn. Qed. Lemma cardsT : #|[set: T]| = #|T|. Proof. by rewrite cardsE. Qed. @@ -1969,7 +1969,7 @@ Qed. Lemma pblock_equivalence_partition : {in D &, forall x y, (y \in pblock P x) = R x y}. Proof. -have [_ tiP _] := and3P equivalence_partitionP. +have [_ tiP _] := and3P equivalence_partitionP. by move=> x y Dx Dy; rewrite /= (def_pblock tiP (PPx Dx) (Pxx Dx)) inE Dy. Qed. diff --git a/mathcomp/ssreflect/fintype.v b/mathcomp/ssreflect/fintype.v index 1171fcb..719a267 100644 --- a/mathcomp/ssreflect/fintype.v +++ b/mathcomp/ssreflect/fintype.v @@ -506,7 +506,7 @@ Lemma cardE A : #|A| = size (enum A). Proof. by rewrite unlock. Qed. Lemma eq_card A B : A =i B -> #|A| = #|B|. -Proof. by move=>eqAB; rewrite !cardE (eq_enum eqAB). Qed. +Proof. by move=> eqAB; rewrite !cardE (eq_enum eqAB). Qed. Lemma eq_card_trans A B n : #|A| = n -> B =i A -> #|B| = n. Proof. by move <-; apply: eq_card. Qed. diff --git a/mathcomp/ssreflect/generic_quotient.v b/mathcomp/ssreflect/generic_quotient.v index 5533832..0aafc34 100644 --- a/mathcomp/ssreflect/generic_quotient.v +++ b/mathcomp/ssreflect/generic_quotient.v @@ -140,7 +140,7 @@ Local Notation "\pi" := (pi_phant (Phant qT)). Definition repr_of := quot_repr (quot_class qT). Lemma repr_ofK : cancel repr_of \pi. -Proof. by rewrite /pi_phant /repr_of /=; case:qT=> [? []]. Qed. +Proof. by rewrite /pi_phant /repr_of /=; case: qT=> [? []]. Qed. Definition QuotType_clone (Q : Type) qT cT of phant_id (quot_class qT) cT := @QuotTypePack Q cT Q. @@ -487,7 +487,7 @@ Lemma equiv_sym : symmetric e. Proof. by case: e => [] ? []. Qed. Lemma equiv_trans : transitive e. Proof. by case: e => [] ? []. Qed. Lemma eq_op_trans (T' : eqType) : transitive (@eq_op T'). -Proof. by move=> x y z; move/eqP->; move/eqP->. Qed. +Proof. by move=> x y z; move/eqP->; move/eqP->. Qed. Lemma equiv_ltrans: left_transitive e. Proof. by apply: left_trans; [apply: equiv_sym|apply: equiv_trans]. Qed. @@ -567,7 +567,7 @@ Qed. Canonical encoded_equiv_equiv_rel := EquivRelPack encoded_equiv_is_equiv. -Lemma encoded_equivP x : e' (DE (ED x)) x. +Lemma encoded_equivP x : e' (DE (ED x)) x. Proof. by rewrite /encoded_equiv /= encModEquivP. Qed. End EncodingModuloEquiv. diff --git a/mathcomp/ssreflect/path.v b/mathcomp/ssreflect/path.v index f5eb77b..6ab7926 100644 --- a/mathcomp/ssreflect/path.v +++ b/mathcomp/ssreflect/path.v @@ -213,7 +213,7 @@ Lemma next_nth p x : if p is y :: p' then nth y p' (index x p) else x else x. Proof. -case: p => //= y0 p. +case: p => //= y0 p. elim: p {2 3 5}y0 => [|y' p IHp] y /=; rewrite (eq_sym y) inE; by case: ifP => // _; apply: IHp. Qed. @@ -542,7 +542,7 @@ have: perm_eq (catss ss ++ s) (merge_sort_pop s ss). by rewrite perm_catC catA perm_catC perm_cat2l -perm_merge. case: s => // x1 [//|x2 s _]; move/ltnW; move/IHn=> {n IHn}IHs. rewrite -{IHs}(perm_eqrP (IHs _)) ifE; set s1 := if_expr _ _ _. -rewrite (catA _ [::_;_] s) {s}perm_cat2r. +rewrite (catA _ [::_; _] s) {s}perm_cat2r. apply: (@perm_eq_trans _ (catss ss ++ s1)). by rewrite perm_cat2l /s1 -ifE; case: ifP; rewrite // (perm_catC [::_]). elim: ss {x1 x2}s1 => /= [|s2 ss IHss] s1; first by rewrite cats0. diff --git a/mathcomp/ssreflect/prime.v b/mathcomp/ssreflect/prime.v index 41243ea..9494353 100644 --- a/mathcomp/ssreflect/prime.v +++ b/mathcomp/ssreflect/prime.v @@ -998,7 +998,7 @@ apply/eqP; rewrite eqn_dvd dvdn_lcm !partn_dvd ?dvdn_lcml ?dvdn_lcmr //. rewrite -(dvdn_pmul2r (part_gt0 pi^' (lcmn m n))) partnC // dvdn_lcm !andbT. rewrite -{1}(partnC pi m_gt0) andbC -{1}(partnC pi n_gt0). by rewrite !dvdn_mul ?partn_dvd ?dvdn_lcml ?dvdn_lcmr. -Qed. +Qed. Lemma partn_gcd pi m n : m > 0 -> n > 0 -> (gcdn m n)`_pi = gcdn m`_pi n`_pi. Proof. @@ -1007,7 +1007,7 @@ apply/eqP; rewrite eqn_dvd dvdn_gcd !partn_dvd ?dvdn_gcdl ?dvdn_gcdr //=. rewrite -(dvdn_pmul2r (part_gt0 pi^' (gcdn m n))) partnC // dvdn_gcd. rewrite -{3}(partnC pi m_gt0) andbC -{3}(partnC pi n_gt0). by rewrite !dvdn_mul ?partn_dvd ?dvdn_gcdl ?dvdn_gcdr. -Qed. +Qed. Lemma partn_biglcm (I : finType) (P : pred I) F pi : (forall i, P i -> F i > 0) -> @@ -1313,7 +1313,7 @@ move=> n_gt0; wlog le_b_a: a b / b <= a. move=> IH; case: (leqP b a) => [|/ltnW] /IH {IH}// IH. by rewrite eq_sym; apply: (iffP IH) => eqab p; move/eqab. rewrite eqn_mod_dvd //; apply: (iffP (dvdn_partP _ n_gt0)) => eqab p /eqab; - by rewrite -eqn_mod_dvd // => /eqP. + by rewrite -eqn_mod_dvd // => /eqP. Qed. (* The Euler totient function *) diff --git a/mathcomp/ssreflect/ssrnat.v b/mathcomp/ssreflect/ssrnat.v index 8c21ae4..1c16140 100644 --- a/mathcomp/ssreflect/ssrnat.v +++ b/mathcomp/ssreflect/ssrnat.v @@ -441,12 +441,14 @@ CoInductive eqn0_xor_gt0 n : bool -> bool -> Set := Lemma posnP n : eqn0_xor_gt0 n (n == 0) (0 < n). Proof. by case: n; constructor. Qed. -CoInductive compare_nat m n : bool -> bool -> bool -> bool -> bool -> bool -> Set := +CoInductive compare_nat m n : + bool -> bool -> bool -> bool -> bool -> bool -> Set := | CompareNatLt of m < n : compare_nat m n true false true false false false | CompareNatGt of m > n : compare_nat m n false true false true false false | CompareNatEq of m = n : compare_nat m n true true false false true true. -Lemma ltngtP m n : compare_nat m n (m <= n) (n <= m) (m < n) (n < m) (n == m) (m == n). +Lemma ltngtP m n : compare_nat m n (m <= n) (n <= m) (m < n) + (n < m) (n == m) (m == n). Proof. rewrite !ltn_neqAle [_ == m]eq_sym; case: ltnP => [mn|]. by rewrite ltnW // gtn_eqF //; constructor. diff --git a/mathcomp/ssrtest/absevarprop.v b/mathcomp/ssrtest/absevarprop.v index b8ae7d6..e43f0f7 100644 --- a/mathcomp/ssrtest/absevarprop.v +++ b/mathcomp/ssrtest/absevarprop.v @@ -23,10 +23,10 @@ Variable Q1 : forall P1, Q 1 P1. Lemma testmE1 : myEx. Proof. -apply: ExI 1 _ _ _ _. +apply: ExI 1 _ _ _ _. match goal with |- P 1 => exact: P1 | _ => fail end. match goal with |- P (1+1) => exact: P11 | _ => fail end. - match goal with |- forall p : P 1, Q 1 p => move=>*; exact: Q1 | _ => fail end. + match goal with |- forall p : P 1, Q 1 p => move=> *; exact: Q1 | _ => fail end. match goal with |- forall (p : P 1) (q : P (1+1)), is_true (R 1 p 1 q) => done | _ => fail end. Qed. @@ -54,7 +54,7 @@ Hint Resolve P1. Lemma testmE12 : myEx. Proof. -apply: ExI 1 _ _ _ _. +apply: ExI 1 _ _ _ _. match goal with |- P (1+1) => exact: P11 | _ => fail end. match goal with |- Q 1 P1 => exact: Q1 | _ => fail end. match goal with |- forall (q : P (1+1)), is_true (R 1 P1 1 q) => done | _ => fail end. @@ -68,7 +68,7 @@ Ltac ssrautoprop := trivial with SSR. Lemma testmE13 : myEx. Proof. -apply: ExI 1 _ _ _ _. +apply: ExI 1 _ _ _ _. match goal with |- Q 1 P1 => exact: Q1 | _ => fail end. match goal with |- is_true (R 1 P1 1 P11) => done | _ => fail end. Qed. @@ -84,7 +84,7 @@ Hint Resolve (Q1 P1) : SSR. thus the goal Q 1 ?p1 is faced by trivial after ?p1, and is thus evar free *) Lemma testmE14 : myEx1. Proof. -apply: ExI1 1 _ _ _ _. +apply: ExI1 1 _ _ _ _. match goal with |- is_true (R1 1 P1 1 P11 (Q1 P1)) => done | _ => fail end. Qed. diff --git a/mathcomp/ssrtest/derive_inversion.v b/mathcomp/ssrtest/derive_inversion.v index 71257d8..0a344b8 100644 --- a/mathcomp/ssrtest/derive_inversion.v +++ b/mathcomp/ssrtest/derive_inversion.v @@ -15,5 +15,5 @@ Set Implicit Arguments. | false => o = None end. Proof. - by case: b; elim/wf_inv=>//;case: o=>// a *; exists a. + by case: b; elim/wf_inv=> //; case: o=> // a *; exists a. Qed. diff --git a/mathcomp/ssrtest/elim.v b/mathcomp/ssrtest/elim.v index 9f0f139..0a7b777 100644 --- a/mathcomp/ssrtest/elim.v +++ b/mathcomp/ssrtest/elim.v @@ -7,7 +7,7 @@ Axiom daemon : False. Ltac myadmit := case: daemon. (* Ltac debugging feature: recursive elim + eq generation *) Lemma testL1 : forall A (s : seq A), s = s. -Proof. +Proof. move=> A s; elim branch: s => [|x xs _]. match goal with _ : _ = [::] |- [::] = [::] => move: branch => // | _ => fail end. match goal with _ : _ = _ :: _ |- _ :: _ = _ :: _ => move: branch => // | _ => fail end. @@ -15,7 +15,7 @@ Qed. (* The same but with explicit eliminator and a conflict in the intro pattern *) Lemma testL2 : forall A (s : seq A), s = s. -Proof. +Proof. move=> A s; elim/last_ind branch: s => [|x s _]. match goal with _ : _ = [::] |- [::] = [::] => move: branch => // | _ => fail end. match goal with _ : _ = rcons _ _ |- rcons _ _ = rcons _ _ => move: branch => // | _ => fail end. @@ -23,17 +23,17 @@ Qed. (* The same but without names for variables involved in the generated eq *) Lemma testL3 : forall A (s : seq A), s = s. -Proof. +Proof. move=> A s; elim branch: s; move: (s) => _. match goal with _ : _ = [::] |- [::] = [::] => move: branch => // | _ => fail end. -move=> _;match goal with _ : _ = _ :: _ |- _ :: _ = _ :: _ => move: branch => // | _ => fail end. +move=> _; match goal with _ : _ = _ :: _ |- _ :: _ = _ :: _ => move: branch => // | _ => fail end. Qed. Inductive foo : Type := K1 : foo | K2 : foo -> foo -> foo | K3 : (nat -> foo) -> foo. (* The same but with more intros to be done *) Lemma testL4 : forall (o : foo), o = o. -Proof. +Proof. move=> o; elim branch: o. match goal with _ : _ = K1 |- K1 = K1 => move: branch => // | _ => fail end. move=> _; match goal with _ : _ = K2 _ _ |- K2 _ _ = K2 _ _ => move: branch => // | _ => fail end. @@ -88,21 +88,21 @@ Qed. (* Patterns *) Lemma testP1: forall (x y : nat), (y == x) && (y == x) -> y == x. -move=> x y; elim: {2}(_ == _) / eqP. -match goal with |- (y = x -> is_true ((y == x) && true) -> is_true (y == x)) => move=>-> // | _ => fail end. -match goal with |- (y <> x -> is_true ((y == x) && false) -> is_true (y == x)) => move=>_; rewrite andbC // | _ => fail end. +move=> x y; elim: {2}(_ == _) / eqP. +match goal with |- (y = x -> is_true ((y == x) && true) -> is_true (y == x)) => move=> -> // | _ => fail end. +match goal with |- (y <> x -> is_true ((y == x) && false) -> is_true (y == x)) => move=> _; rewrite andbC // | _ => fail end. Qed. (* The same but with an implicit pattern *) Lemma testP2 : forall (x y : nat), (y == x) && (y == x) -> y == x. -move=> x y; elim: {2}_ / eqP. -match goal with |- (y = x -> is_true ((y == x) && true) -> is_true (y == x)) => move=>-> // | _ => fail end. -match goal with |- (y <> x -> is_true ((y == x) && false) -> is_true (y == x)) => move=>_; rewrite andbC // | _ => fail end. +move=> x y; elim: {2}_ / eqP. +match goal with |- (y = x -> is_true ((y == x) && true) -> is_true (y == x)) => move=> -> // | _ => fail end. +match goal with |- (y <> x -> is_true ((y == x) && false) -> is_true (y == x)) => move=> _; rewrite andbC // | _ => fail end. Qed. (* The same but with an eq generation switch *) Lemma testP3 : forall (x y : nat), (y == x) && (y == x) -> y == x. -move=> x y; elim E: {2}_ / eqP. +move=> x y; elim E: {2}_ / eqP. match goal with _ : y = x |- (is_true ((y == x) && true) -> is_true (y == x)) => rewrite E; reflexivity | _ => fail end. match goal with _ : y <> x |- (is_true ((y == x) && false) -> is_true (y == x)) => rewrite E => /= H; exact H | _ => fail end. Qed. @@ -113,25 +113,25 @@ Lemma specP : spec 0 2 4. Proof. by constructor. Qed. Lemma testP4 : (1+1) * 4 = 2 + (1+1) + (2 + 2). Proof. -case: specP => a b c defa defb defc. +case: specP => a b c defa defb defc. match goal with |- (a.+1 + a.+1) * c = b + (a.+1 + a.+1) + (b + b) => subst; done | _ => fail end. Qed. Lemma testP5 : (1+1) * 4 = 2 + (1+1) + (2 + 2). Proof. -case: (1 + 1) _ / specP => a b c defa defb defc. +case: (1 + 1) _ / specP => a b c defa defb defc. match goal with |- b * c = a.+2 + b + (a.+2 + a.+2) => subst; done | _ => fail end. Qed. Lemma testP6 : (1+1) * 4 = 2 + (1+1) + (2 + 2). Proof. -case: {2}(1 + 1) _ / specP => a b c defa defb defc. +case: {2}(1 + 1) _ / specP => a b c defa defb defc. match goal with |- (a.+1 + a.+1) * c = a.+2 + b + (a.+2 + a.+2) => subst; done | _ => fail end. Qed. Lemma testP7 : (1+1) * 4 = 2 + (1+1) + (2 + 2). Proof. -case: _ (1 + 1) (2 + _) / specP => a b c defa defb defc. +case: _ (1 + 1) (2 + _) / specP => a b c defa defb defc. match goal with |- b * a.+4 = c + c => subst; done | _ => fail end. Qed. @@ -276,7 +276,7 @@ Definition plus_ind := plus_rect. Lemma exF x y z: plus (plus x y) z = plus x (plus y z). elim/plus_ind: z / (plus _ z). match goal with |- forall n : nat, n = 0 -> plus x y = plus x (plus y 0) => idtac end. -Undo 2. +Undo 2. elim/plus_ind: (plus _ z). match goal with |- forall n : nat, n = 0 -> plus x y = plus x (plus y 0) => idtac end. Undo 2. diff --git a/mathcomp/ssrtest/have_transp.v b/mathcomp/ssrtest/have_transp.v index fec720c..713f176 100644 --- a/mathcomp/ssrtest/have_transp.v +++ b/mathcomp/ssrtest/have_transp.v @@ -10,7 +10,7 @@ Proof. have [:s1] @h m : 'I_(n+m).+1. apply: Sub 0 _. abstract: s1 m. - by auto. + by auto. cut (forall m, 0 < (n+m).+1); last assumption. rewrite [_ 1 _]/= in s1 h *. by []. diff --git a/mathcomp/ssrtest/havesuff.v b/mathcomp/ssrtest/havesuff.v index f97f445..4b0193a 100644 --- a/mathcomp/ssrtest/havesuff.v +++ b/mathcomp/ssrtest/havesuff.v @@ -9,7 +9,7 @@ Lemma test1 : (P -> G) -> P -> G. Proof. move=> pg p. have suff {pg} H : P. - match goal with |- P -> G => move=> _; exact: pg p | _ => fail end. + match goal with |- P -> G => move=> _; exact: pg p | _ => fail end. match goal with H : P -> G |- G => exact: H p | _ => fail end. Qed. @@ -17,7 +17,7 @@ Lemma test2 : (P -> G) -> P -> G. Proof. move=> pg p. have suffices {pg} H : P. - match goal with |- P -> G => move=> _;exact: pg p | _ => fail end. + match goal with |- P -> G => move=> _; exact: pg p | _ => fail end. match goal with H : P -> G |- G => exact: H p | _ => fail end. Qed. @@ -25,7 +25,7 @@ Lemma test3 : (P -> G) -> P -> G. Proof. move=> pg p. suff have {pg} H : P. - match goal with H : P |- G => exact: pg H | _ => fail end. + match goal with H : P |- G => exact: pg H | _ => fail end. match goal with |- (P -> G) -> G => move=> H; exact: H p | _ => fail end. Qed. @@ -33,7 +33,7 @@ Lemma test4 : (P -> G) -> P -> G. Proof. move=> pg p. suffices have {pg} H: P. - match goal with H : P |- G => exact: pg H | _ => fail end. + match goal with H : P |- G => exact: pg H | _ => fail end. match goal with |- (P -> G) -> G => move=> H; exact: H p | _ => fail end. Qed. diff --git a/mathcomp/ssrtest/intro_beta.v b/mathcomp/ssrtest/intro_beta.v index 6b1b96d..4402be9 100644 --- a/mathcomp/ssrtest/intro_beta.v +++ b/mathcomp/ssrtest/intro_beta.v @@ -10,6 +10,6 @@ Definition C (P : T -> Prop) := forall x, P x. Axiom P : T -> T -> Prop. Lemma foo : C (fun x => forall y, let z := x in P y x). -move=> a b. +move=> a b. match goal with |- (let y := _ in _) => idtac end. Admitted. diff --git a/mathcomp/ssrtest/ltac_in.v b/mathcomp/ssrtest/ltac_in.v index 06d8dc7..cec244d 100644 --- a/mathcomp/ssrtest/ltac_in.v +++ b/mathcomp/ssrtest/ltac_in.v @@ -10,9 +10,9 @@ Import Prenex Implicits. (* error 1 *) -Ltac subst1 H := move: H ; rewrite {1} addnC; move => H. +Ltac subst1 H := move: H; rewrite {1} addnC; move => H. Ltac subst2 H := rewrite addnC in H. Goal ( forall a b: nat, b+a = 0 -> b+a=0). -Proof. move => a b hyp. subst1 hyp. subst2 hyp. done. Qed. +Proof. move=> a b hyp. subst1 hyp. subst2 hyp. done. Qed. diff --git a/mathcomp/ssrtest/rewpatterns.v b/mathcomp/ssrtest/rewpatterns.v index 95c3c00..22ca265 100644 --- a/mathcomp/ssrtest/rewpatterns.v +++ b/mathcomp/ssrtest/rewpatterns.v @@ -10,7 +10,7 @@ by move=> x y f; rewrite [_.+1](addnC x.+1). Qed. Lemma test2 : forall x y f, x + y + f (y + x) + f (y + x) = x + y + f (y + x) + f (x + y). -by move=> x y f; rewrite {2}[in f _]addnC. +by move=> x y f; rewrite {2}[in f _]addnC. Qed. Lemma test2' : forall x y f, true && f (x * (y + x)) = true && f(x * (x + y)). @@ -27,7 +27,7 @@ by move=> x y f; rewrite [in f _](addnC x). (* put y when bound var will be OK * Qed. Lemma test3 : forall x y f, x + f (x + y) (f (y + x) x) = x + f (x + y) (f (x + y) x). -by move=> x y f; rewrite [in X in (f _ X)](addnC y). +by move=> x y f; rewrite [in X in (f _ X)](addnC y). Qed. Lemma test3' : forall x y f, x = y -> x + f (x + x) x + f (x + x) x = @@ -37,7 +37,7 @@ Qed. Lemma test3'' : forall x y f, x = y -> x + f (x + y) x + f (x + y) x = x + f (x + y) x + f (y + y) x. -by move=> x y f E; rewrite {2}[in X in (f X _)]E. +by move=> x y f E; rewrite {2}[in X in (f X _)]E. Qed. Lemma test4 : forall x y f, x = y -> x + f (fun _ : nat => x + x) x + f (fun _ => x + x) x = @@ -52,22 +52,22 @@ Qed. Lemma test5 : forall x y f, x = y -> x + f (y + x) x + f (y + x) x = x + f (x + y) x + f (y + x) x. -by move=> x y f E; rewrite {1}[X in (f X _)]addnC. +by move=> x y f E; rewrite {1}[X in (f X _)]addnC. Qed. Lemma test3''' : forall x y f, x = y -> x + f (x + y) x + f (x + y) (x + y) = x + f (x + y) x + f (y + y) (x + y). -by move=> x y f E; rewrite {1}[in X in (f X X)]E. +by move=> x y f E; rewrite {1}[in X in (f X X)]E. Qed. Lemma test3'''' : forall x y f, x = y -> x + f (x + y) x + f (x + y) (x + y) = x + f (x + y) x + f (y + y) (y + y). -by move=> x y f E; rewrite [in X in (f X X)]E. +by move=> x y f E; rewrite [in X in (f X X)]E. Qed. Lemma test3x : forall x y f, y+y = x+y -> x + f (x + y) x + f (x + y) (x + y) = x + f (x + y) x + f (y + y) (y + y). -by move=> x y f E; rewrite -[X in (f X X)]E. +by move=> x y f E; rewrite -[X in (f X X)]E. Qed. Lemma test6 : forall x y (f : nat -> nat), f (x + y).+1 = f (y.+1 + x). diff --git a/mathcomp/ssrtest/set_pattern.v b/mathcomp/ssrtest/set_pattern.v index 25b6967..5d22ef2 100644 --- a/mathcomp/ssrtest/set_pattern.v +++ b/mathcomp/ssrtest/set_pattern.v @@ -7,7 +7,7 @@ Axiom daemon : False. Ltac myadmit := case: daemon. Ltac T1 x := match goal with |- _ => set t := (x in X in _ = X) end. Ltac T2 x := first [set t := (x in RHS)]. Ltac T3 x := first [set t := (x in Y in _ = Y)|idtac]. -Ltac T4 x := set t := (x in RHS);idtac. +Ltac T4 x := set t := (x in RHS); idtac. Ltac T5 x := match goal with |- _ => set t := (x in RHS) | |- _ => idtac end. From mathcomp @@ -17,14 +17,14 @@ Lemma foo x y : x.+1 = y + x.+1. set t := (_.+1 in RHS). match goal with |- x.+1 = y + t => rewrite /t {t} end. set t := (x in RHS). match goal with |- x.+1 = y + t.+1 => rewrite /t {t} end. set t := (x in _ = x). match goal with |- x.+1 = t => rewrite /t {t} end. -set t := (x in X in _ = X). +set t := (x in X in _ = X). match goal with |- x.+1 = y + t.+1 => rewrite /t {t} end. set t := (x in RHS). match goal with |- x.+1 = y + t.+1 => rewrite /t {t} end. -set t := (y + (1 + x) as X in _ = X). +set t := (y + (1 + x) as X in _ = X). match goal with |- x.+1 = t => rewrite /t addSn add0n {t} end. set t := x.+1. match goal with |- t = y + t => rewrite /t {t} end. set t := (x).+1. match goal with |- t = y + t => rewrite /t {t} end. -set t := ((x).+1 in X in _ = X). +set t := ((x).+1 in X in _ = X). match goal with |- x.+1 = y + t => rewrite /t {t} end. set t := (x.+1 in RHS). match goal with |- x.+1 = y + t => rewrite /t {t} end. T1 (x.+1). match goal with |- x.+1 = y + t => rewrite /t {t} end. @@ -32,7 +32,7 @@ T2 (x.+1). match goal with |- x.+1 = y + t => rewrite /t {t} end. T3 (x.+1). match goal with |- x.+1 = y + t => rewrite /t {t} end. T4 (x.+1). match goal with |- x.+1 = y + t => rewrite /t {t} end. T5 (x.+1). match goal with |- x.+1 = y + t => rewrite /t {t} end. -rewrite [RHS]addnC. +rewrite [RHS]addnC. match goal with |- x.+1 = x.+1 + y => rewrite -[RHS]addnC end. rewrite -[in RHS](@subnK 1 x.+1) //. match goal with |- x.+1 = y + (x.+1 - 1 + 1) => rewrite subnK // end. @@ -44,7 +44,7 @@ set t := (_.+1 in X in _ + X) in H |- *. set t := 0. match goal with t := 0 |- x.+1 = y + x.+1 => clear t end. set t := y + _. match goal with |- x.+1 = t => rewrite /t {t} end. set t : nat := 0. clear t. -set t : nat := (x in RHS). +set t : nat := (x in RHS). match goal with |- x.+1 = y + t.+1 => rewrite /t {t} end. set t : nat := RHS. match goal with |- x.+1 = t => rewrite /t {t} end. (* set t := 0 + _. *) diff --git a/mathcomp/ssrtest/ssrsyntax1.v b/mathcomp/ssrtest/ssrsyntax1.v index 9116ba2..3fc202f 100644 --- a/mathcomp/ssrtest/ssrsyntax1.v +++ b/mathcomp/ssrtest/ssrsyntax1.v @@ -14,7 +14,7 @@ Import ssreflect. Goal (forall a b, a + b = b + a). intros. -rewrite 2![_ + _]plus_comm. +rewrite 2![_ + _]plus_comm. split. Abort. End Foo. diff --git a/mathcomp/ssrtest/tc.v b/mathcomp/ssrtest/tc.v index 7a95b66..20d190f 100644 --- a/mathcomp/ssrtest/tc.v +++ b/mathcomp/ssrtest/tc.v @@ -22,7 +22,7 @@ Axiom V : forall A {f : foo A} (x:A), P x -> P (id x). Lemma test1 (x : nat) : P x -> P (id x). Proof. -move => px. +move=> px. Timeout 2 Fail move/V: px. Timeout 2 move/V : (px) => _. move/(V nat) : px => H; exact H. diff --git a/mathcomp/ssrtest/testmx.v b/mathcomp/ssrtest/testmx.v index 95c62bd..7d90d29 100644 --- a/mathcomp/ssrtest/testmx.v +++ b/mathcomp/ssrtest/testmx.v @@ -10,8 +10,8 @@ Set Implicit Arguments. Unset Strict Implicit. Import Prenex Implicits. -Local Open Scope nat_scope. -Local Open Scope ring_scope. +Local Open Scope nat_scope. +Local Open Scope ring_scope. Section TestMx. diff --git a/mathcomp/ssrtest/wlogletin.v b/mathcomp/ssrtest/wlogletin.v index 1553621..faeca5c 100644 --- a/mathcomp/ssrtest/wlogletin.v +++ b/mathcomp/ssrtest/wlogletin.v @@ -33,8 +33,8 @@ match goal with |- (let fxy0 := f x y in P fxy0 -> P fxy -> P x) => by auto | _ Qed. Lemma test4 : forall n m z: bool, n = z -> let x := n in x = m && n -> x = m && n. -move=> n m z E x H. -case: true. - by rewrite {1 2}E in (x) H |- *. +move=> n m z E x H. +case: true. + by rewrite {1 2}E in (x) H |- *. by rewrite {1}E in x H |- *. Qed. |
