General Group Properties
- IsElementaryAbelian(G): GrpGPC -> BoolElt
Returns
trueif the group \(G\) is elementary abelian,falseotherwise. The following definition is used:A group \(G\) is called elementary abelian if it is an abelian \(p\)-group of exponent \(p\) for some prime \(p\).
- IsNilpotent(G): GrpGPC -> BoolElt
Returns
trueif the group \(G\) is nilpotent,falseotherwise. This function uses an algorithm described in [Lo98].
- IsPerfect(G): GrpGPC -> BoolElt
Returns
trueif the group \(G\) is perfect,falseotherwise. A polycyclic group \(G\) is perfect, if and only if it is trivial.
- IsSimple(G): GrpGPC -> BoolElt
Returns
trueif the group \(G\) is simple,falseotherwise. A polycyclic group is simple, if and only if it is cyclic of prime order.
- IsSoluble(G): GrpGPC -> BoolElt
- IsSolvable(G): GrpGPC -> BoolElt
Returns
trueif the group \(G\) is solvable,falseotherwise. Every polycyclic group is solvable.
General Properties of Subgroups
Properties of Subgroups Requiring a Nilpotent Covering Group
The functions described in this section require the existence of a nilpotent covering group. The are based on algorithms published in [Lo98].
- IsConjugate(G, H, K): GrpGPC, GrpGPC, GrpGPC -> BoolElt, GrpGPCElt
Given groups \(G\), \(H\), and \(K\) with a nilpotent common covering group, return the value
trueif there exists \(c\in G\) such that \(H^c = K\). If so, the function returns such a conjugating element as second value.
- IsSelfNormalising(G, H): GrpGPC, GrpGPC -> BoolElt
- IsSelfNormalizing(G, H): GrpGPC, GrpGPC -> BoolElt
Returns
trueif the subgroup \(H\) of the nilpotent group \(G\) is self-normalising in \(G\),falseotherwise.
- Example: Intersections of Subgroups of a Nilpotent Group (ex-905fd9)
Run in calculator (opens in a new tab)
We define a group \(G\) on 5 generators \(a,\ldots,e\) of infinite order by fixing the commutators of the generators:
\[(b,a) = e^2, \quad (d,c)=e^3\]All other pairs of generators commute.
> F<a,b,c,d,e> := FreeGroup(5); > rels := [ b^a = b*e^2, b^(a^-1) = b*e^-2, d^c = d*e^3, > d^(c^-1) = d*e^-3 ]; > G<a,b,c,d,e> := quo< GrpGPC: F | rels >; > IsNilpotent(G); true
Since \(G\) is nilpotent, we can compute intersections of subgroups of \(G\).
We define the subgroups generated by \(a,\ldots,e\) and their nontrivial commutator groups as subgroups of \(G\).
> H1 := sub<G|a>; > H2 := sub<G|b>; > H3 := sub<G|c>; > H4 := sub<G|d>; > H5 := sub<G|e>; > > C12 := CommutatorSubgroup(H1, H2); > {@ G!x : x in PCGenerators(C12) @}; {@ e^2 @} > C12 subset H5; true > > C34 := CommutatorSubgroup(H3, H4); > {@ G!x : x in PCGenerators(C34) @}; {@ e^3 @} > C34 subset H5; true
Finally, we compute the intersection \(C\) of \(C12\) and \(C13\).
> C := C12 meet C34; > {@ G!x : x in PCGenerators(C) @}; {@ e^6 @}
This intersection \(C\) is cyclic and central in \(G\).
> IsCyclic(C); true > IsCentral(G, C); true
- Example: Subgroup Structure of a Wreath Product (ex-bc5c0c)
Run in calculator (opens in a new tab)
Consider the nilpotent group \(G := D_{16}\wr 2\) generated by the 5 generators \(a,b,c,d,t\) with the relations
\[a^2 = 1,\quad b^{16} = 1,\quad b^a = b^{15}\]\[c^2 = 1,\quad d^{16} = 1,\quad d^c = d^{15}\]\[t^2 = 1,\quad a^t = c,\quad b^t = d,\quad c^t = a,\quad d^t = b\](All other pairs of generators commute.)
> F<t, a,b, c,d> := FreeGroup(5); > G<t, a,b, c,d> := quo<GrpGPC: F | a^2, b^16, b^a=b^15, > c^2, d^16, d^c=d^15, > t^2, a^t=c, b^t=d, c^t=a, d^t=b>; > IsNilpotent(G); true
Since \(G\) is nilpotent, we can compute normalisers and centralisers in \(G\).
We define the (dihedral) subgroup \(D3\) of \(G\) generated by \(ac\) and \(bd\) and compute its normaliser in \(G\) and its centraliser in the (dihedral) subgroup \(D2\) of \(G\) generated by \(c\) and \(d\).
> D2 := sub<G|c,d>; > > D3<u,v> := sub<G|a*c, b*d>; > D3; GrpGPC : D3 of order 2^5 on 2 PC-generators PC-Relations: u^2 = Id(D3), v^16 = Id(D3), v^u = v^15 > > N3 := Normaliser(G, D3); > PCGenerators(N3, G); {@ t, a * c, b * d, d^8 @} > > C3 := Centraliser(D2, D3); > PCGenerators(C3, G); {@ d^8 @}
Finally we compute the centraliser of the element \(t\) in \(G\).
> Ct := Centraliser(G, t); > PCGenerators(Ct, G); {@ t, a * c, b * d @}