Skip to content

Commit 12c8d85

Browse files
committed
remove backported lemmas to fingroup
1 parent 0d65f1b commit 12c8d85

1 file changed

Lines changed: 3 additions & 93 deletions

File tree

theories/xmathcomp/various.v

Lines changed: 3 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -10,101 +10,11 @@ Unset Printing Implicit Defensive.
1010
(********************)
1111

1212
(*************)
13-
(* gproduct? *)
13+
(* gproduct *)
1414
(*************)
1515

16-
Section ExternalNDirProd.
17-
18-
Variables (n : nat) (gT : 'I_n -> finGroupType).
19-
Notation gTn := {dffun forall i, gT i}.
20-
21-
Definition extnprod_mulg (x y : gTn) : gTn := [ffun i => (x i * y i)%g].
22-
Definition extnprod_invg (x : gTn) : gTn := [ffun i => (x i)^-1%g].
23-
24-
Lemma extnprod_mul1g : left_id [ffun=> 1%g] extnprod_mulg.
25-
Proof. by move=> x; apply/ffunP => i; rewrite !ffunE mul1g. Qed.
26-
27-
Lemma extnprod_mulVg : left_inverse [ffun=> 1%g] extnprod_invg extnprod_mulg.
28-
Proof. by move=> x; apply/ffunP => i; rewrite !ffunE mulVg. Qed.
29-
30-
Lemma extnprod_mulgA : associative extnprod_mulg.
31-
Proof. by move=> x y z; apply/ffunP => i; rewrite !ffunE mulgA. Qed.
32-
33-
Definition extnprod_groupMixin :=
34-
Eval hnf in FinGroup.Mixin extnprod_mulgA extnprod_mul1g extnprod_mulVg.
35-
Canonical extnprod_baseFinGroupType :=
36-
Eval hnf in BaseFinGroupType gTn extnprod_groupMixin.
37-
Canonical prod_group := FinGroupType extnprod_mulVg.
38-
39-
End ExternalNDirProd.
40-
41-
Definition setXn n (fT : 'I_n -> finType) (A : forall i, {set fT i}) :
42-
{set {dffun forall i, fT i}} :=
43-
[set x : {dffun forall i, fT i} | [forall i : 'I_n, x i \in A i]].
44-
45-
Lemma setXn_group_set n (gT : 'I_n -> finGroupType) (G : forall i, {group gT i}) :
46-
group_set (setXn G).
47-
Proof.
48-
apply/andP => /=; split.
49-
by rewrite inE; apply/forallP => i; rewrite ffunE group1.
50-
apply/subsetP => x /mulsgP[u v]; rewrite !inE => /forallP uG /forallP vG {x}->.
51-
by apply/forallP => x; rewrite ffunE groupM ?uG ?vG.
52-
Qed.
53-
54-
Canonical setXn_group n (gT : 'I_n -> finGroupType) (G : forall i, {group gT i}) :=
55-
Group (setXn_group_set G).
56-
57-
Lemma setX0 (gT : 'I_0 -> finGroupType) (G : forall i, {group gT i}) :
58-
setXn G = 1%g.
59-
Proof.
60-
apply/setP => x; rewrite !inE; apply/forallP/idP => [_|? []//].
61-
by apply/eqP/ffunP => -[].
62-
Qed.
63-
64-
(********)
65-
(* perm *)
66-
(********)
67-
68-
Lemma tpermJt (X : finType) (x y z : X) : x != z -> y != z ->
69-
(tperm x z ^ tperm x y)%g = tperm y z.
70-
Proof.
71-
by move=> neq_xz neq_yz; rewrite tpermJ tpermL [tperm _ _ z]tpermD.
72-
Qed.
73-
74-
Lemma gen_tperm (X : finType) x :
75-
<<[set tperm x y | y in X]>>%g = [set: {perm X}].
76-
Proof.
77-
apply/eqP; rewrite eqEsubset subsetT/=; apply/subsetP => s _.
78-
have [ts -> _] := prod_tpermP s; rewrite group_prod// => -[/= y z] _.
79-
have [<-|Nyz] := eqVneq y z; first by rewrite tperm1 group1.
80-
have [<-|Nxz] := eqVneq x z; first by rewrite tpermC mem_gen ?imset_f.
81-
by rewrite -(tpermJt Nxz Nyz) groupJ ?mem_gen ?imset_f.
82-
Qed.
83-
84-
Lemma prime_orbit (X : finType) x c :
85-
prime #|X| -> #[c]%g = #|X| -> orbit 'P <[c]> x = [set: X].
86-
Proof.
87-
move=> X_prime ord_c; have dvd_orbit y : (#|orbit 'P <[c]> y| %| #|X|)%N.
88-
by rewrite (dvdn_trans (dvdn_orbit _ _ _))// [#|<[_]>%g|]ord_c.
89-
have [] := boolP [forall y, #|orbit 'P <[c]> y| == 1%N].
90-
move=> /'forall_eqP-/(_ _)/card_orbit1 orbit1; suff c_eq_1 : c = 1%g.
91-
by rewrite c_eq_1 ?order1 in ord_c; rewrite -ord_c in X_prime.
92-
apply/permP => y; rewrite perm1.
93-
suff: c y \in orbit 'P <[c]> y by rewrite orbit1 inE => /eqP->.
94-
by apply/orbitP; exists c => //; rewrite mem_gen ?inE.
95-
move=> /forallPn[y orbit_y_neq0]; have orbit_y : orbit 'P <[c]> y = [set: X].
96-
apply/eqP; rewrite eqEcard subsetT cardsT.
97-
by have /(prime_nt_dvdP X_prime orbit_y_neq0)<-/= := dvd_orbit y.
98-
by have /orbit_in_eqP-> : x \in orbit 'P <[c]> y; rewrite ?subsetT ?orbit_y.
99-
Qed.
100-
101-
Lemma prime_astab (X : finType) (x : X) (c : {perm X}) :
102-
prime #|X| -> #[c]%g = #|X| -> 'C_<[c]>[x | 'P]%g = 1%g.
103-
Proof.
104-
move=> X_prime ord_c; have /= := card_orbit_stab 'P [group of <[c]>%g] x.
105-
rewrite prime_orbit// cardsT [#|<[_]>%g|]ord_c -[RHS]muln1 => /eqP.
106-
by rewrite eqn_mul2l gtn_eqF ?prime_gt0//= -trivg_card1 => /eqP.
107-
Qed.
16+
Definition setX0 := groupX0.
17+
#[deprecated(since="mathcomp 2.3",note="Use groupX0 instead.")]
10818

10919
(*******************)
11020
(* package algebra *)

0 commit comments

Comments
 (0)