Skip to content

Commit 3bf5e83

Browse files
committed
basics on perfect groups
<!-- ps-id: 601a4033-0f06-4c6c-8da8-42b05cd1f283 --> Signed-off-by: Ali Caglayan <[email protected]>
1 parent d4bb337 commit 3bf5e83

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

theories/Algebra/Groups/Perfect.v

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
Require Import Basics.Overture Basics.Tactics Basics.Equivalences Basics.Iff.
2+
Require Import Types.Universe.
3+
Require Import Groups.Group AbGroups.Abelianization AbGroups.AbelianGroup
4+
Groups.Commutator Groups.QuotientGroup.
5+
Require Import WildCat.Core WildCat.Equiv.
6+
7+
Local Open Scope mc_scope.
8+
Local Open Scope mc_mult_scope.
9+
Local Open Scope group_scope.
10+
11+
(** * Perfect Groups *)
12+
13+
(** ** Definition *)
14+
15+
(** A group is perfect if its abelianization is trivial. *)
16+
Class IsPerfect (G : Group) := contr_abel_isperfect :: IsTrivialGroup (abel G).
17+
18+
(** A group is perfect if its commutator subgroup is the maximal subgroup. *)
19+
Instance isperfect_maximal_commutator (G : Group)
20+
: IsMaximalSubgroup [G, G] -> IsPerfect G.
21+
Proof.
22+
intros max.
23+
apply istrivial_iff_grp_iso_trivial.
24+
nrefine (_ $oE grp_iso_subgroup_group_maximal _).
25+
refine (_ $oE emap abgroup_group (@groupiso_isabelianization G _ _ _ _ _
26+
(isabelianization_derived_quotient _))).
27+
exact (fst (istrivial_iff_grp_iso_trivial (abgroup_derived_quotient G)) _
28+
$oE (grp_iso_subgroup_group_maximal _)^-1$).
29+
Defined.
30+
31+
(** Conversely, the commutator subgroup of any perfect group is the maximal subgroup. *)
32+
Definition ismaximalsubgroup_commutator_isperfect `{Univalence} (G : Group)
33+
: IsPerfect G -> IsMaximalSubgroup [G, G].
34+
Proof.
35+
intros p.
36+
napply (ismaximalsubgroup_istrivial_grp_quotient _ (normalsubgroup_derived _)).
37+
srapply (istrivial_grp_iso (abel G)).
38+
nrefine (_^-1$ $oE _ $oE _).
39+
1,3: apply grp_iso_subgroup_group_maximal.
40+
exact (emap abgroup_group (@groupiso_isabelianization G _ _ _ _ _
41+
(isabelianization_derived_quotient _))).
42+
Defined.
43+
44+
(** ** Basic properties *)
45+
46+
(** All simple non-abelian groups are perfect. *)
47+
Definition isperfect_simple_nonabelian `{Univalence}
48+
(G : Group) {s : IsSimpleGroup G}
49+
(na : ~ Commutative (A:=G) (.*.))
50+
: IsPerfect G.
51+
Proof.
52+
(** Since [G] is simple, we can assume the commutator [ [G, G] ] is either trivial or maximal. *)
53+
destruct (s [G, G] _) as [triv | max].
54+
2: by apply isperfect_maximal_commutator.
55+
contradiction na.
56+
intros x y.
57+
lhs napply grp_commutator_swap_op.
58+
lhs_V napply grp_assoc.
59+
rhs_V napply grp_unit_l.
60+
apply (ap (.* _)).
61+
apply triv.
62+
by apply subgroup_commutator_in.
63+
Defined.
64+
65+
(** A quotient of a perfect group is perfect. *)
66+
Definition isperfect_grp_quotient `{Univalence}
67+
(G : Group) (N : NormalSubgroup G)
68+
: IsPerfect G -> IsPerfect (G / N).
69+
Proof.
70+
intros perf.
71+
apply isperfect_maximal_commutator.
72+
rapply grp_quotient_ind_hprop.
73+
intros x.
74+
apply ismaximalsubgroup_commutator_isperfect in perf.
75+
generalize (perf x); revert x.
76+
change ([G / N, G / N] (grp_quotient_map ?x))
77+
with (subgroup_preimage grp_quotient_map [G / N, G / N] x).
78+
napply subgroup_commutator_rec.
79+
intros x y _ _.
80+
change ([G / N, G / N] (grp_quotient_map (grp_commutator x y))).
81+
rewrite grp_homo_commutator.
82+
by apply subgroup_commutator_in.
83+
Defined.

0 commit comments

Comments
 (0)