Skip to content

Commit cf93b6b

Browse files
committed
remove backported lemmas to fingroup
1 parent 28a26e7 commit cf93b6b

1 file changed

Lines changed: 3 additions & 90 deletions

File tree

theories/xmathcomp/various.v

Lines changed: 3 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -11,98 +11,11 @@ Unset Printing Implicit Defensive.
1111
(********************)
1212

1313
(*************)
14-
(* gproduct? *)
14+
(* gproduct *)
1515
(*************)
1616

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

10720
(*******************)
10821
(* package algebra *)

0 commit comments

Comments
 (0)