Elementary Properties of a Group

Accessing Group Information

The functions in this group provide access to basic information stored for a permutation group \(G\).

G . i: GrpPerm, RngIntElt -> GrpPermElt

The \(i\)-th defining generator for \(G\). A negative subscript indicates that the inverse of the generator is to be created. The identity element of \(G\) will be created by G.0.

Degree(G): GrpPermElt -> RngIntElt

The degree of the permutation group \(G\).

Generators(G): GrpPerm -> { GrpPermElt }

A set of elements of \(G\) that generate \(G\).

GeneratorsSequence(G): GrpPerm -> [ GrpPermElt ]

The sequence of elements used to define the group \(G\). Any occurrences of the identity element or any repetitions of a generator, as removed by Generators(G), are retained in this sequence. This function has the same effect as the expression [G.i : i in [1..Ngens(G)]] .

NumberOfGenerators(G): GrpPerm -> RngIntElt
Ngens(G): GrpPerm -> RngIntElt

The number of defining generators for \(G\).

FewGenerators(G): GrpPerm -> [GrpPermElt]

A typically short sequence of random elements generating the group. Especially when groups are generated as subgroups, the result of FewGenerators is a much shorter sequence than returned by GeneratorsSequence.

Generic(G): GrpPerm -> GrpPerm

The generic group containing \(G\), i.e. the symmetric group in which \(G\) is naturally embedded.

Parent(g): GrpPermElt -> GrpPerm

The parent group \(G\) for the permutation \(g\).

GSet(G): GrpPerm -> GSet

The natural \(G\)-set for the permutation group \(G\).

Example: Basic Access Functions for a Group (ex-e70b28)

Run in calculator (opens in a new tab)

Consider the group \(G\) of order \(648\) generated by the permutations (1,6,7)(2,5,8,3,4,9)(11,12) and (1,3)(4,9,12)(5,8,10,6,7,11).

> G := PermutationGroup< 12 | (1,6,7)(2,5,8,3,4,9)(11,12),
>                             (1,3)(4,9,12)(5,8,10,6,7,11) >;
> G;
Permutation group G acting on a set of cardinality 12
    (1, 6, 7)(2, 5, 8, 3, 4, 9)(11, 12)
    (1, 3)(4, 9, 12)(5, 8, 10, 6, 7, 11)
> G.1;
(1, 6, 7)(2, 5, 8, 3, 4, 9)(11, 12)
> G.1*G.2;
(1, 7, 3, 9, 2, 8)(4, 12, 5, 10, 6, 11)
> Degree(G);
12
> GSet(G);
GSet{@ 1 .. 12 @}
> Generic(G);
Symmetric group acting on a set of cardinality 12
Order = 479001600 = 2^10 * 3^5 * 5^2 * 7 * 11
> Generators(G);
{
    (1, 6, 7)(2, 5, 8, 3, 4, 9)(11, 12),
    (1, 3)(4, 9, 12)(5, 8, 10, 6, 7, 11)
}
> Ngens(G);
2
> x := G ! (1,6,7)(2,5,8,3,4,9)(11,12);
> x;
(1, 6, 7)(2, 5, 8, 3, 4, 9)(11, 12)
> Parent(x);
Permutation group G acting on a set of cardinality 12
Order = 648 = 2^3 * 3^4
    (1, 6, 7)(2, 5, 8, 3, 4, 9)(11, 12)
    (1, 3)(4, 9, 12)(5, 8, 10, 6, 7, 11)
]

Run in calculator (opens in a new tab)

Group Order

Unless the order is already known, each of the functions in this family will create a base and strong generating set for the group if one does not already exist.

Order(G): GrpPerm -> RngIntElt
# G: GrpPerm -> RngIntElt

The order of the group \(G\) as an integer. If the order is not currently known, a base and strong generating set will be constructed for \(G\).

FactoredOrder(G): GrpPerm -> [ <RngIntElt, RngIntElt> ]

The order of the group \(G\) returned as a factored integer. The factorization is returned in the form of a sequence \(Q\) which is defined as follows: If \(\# G = p_1^{e_1}\ldots p_n^{e_n}, \quad e_i \neq 0\), then \(Q\) will be the integer sequence \([ <p_1, e_1>, \ldots, <p_n, e_n> ]\). If the order of \(G\) is not known, it will be computed.

Abstract Properties of a Group

IsAbelian(G): GrpPerm -> BoolElt

Returns true if the group \(G\) is abelian, false otherwise.

IsCyclic(G): GrpPerm -> BoolElt

Returns true if the group \(G\) is cyclic, false otherwise.

IsElementaryAbelian(G): GrpPerm -> BoolElt

Returns true if the group \(G\) is elementary abelian, false otherwise.

IsSpecial(G): GrpPerm -> BoolElt

Given a \(p\)-group \(G\), return true if \(G\) is special, false otherwise.

IsExtraSpecial(G): GrpPerm -> BoolElt

Given a group \(G\) is a \(p\)-group \(G\), return true if \(G\) is extra-special, false otherwise.

IsNilpotent(G): GrpPerm -> BoolElt

Returns true if the group \(G\) is nilpotent, false otherwise.

IsSoluble(G): GrpPerm -> BoolElt
IsSolvable(G): GrpPerm -> BoolElt

Returns true if the group \(G\) is soluble, false otherwise. Uses the algorithm of Sims [Sim90].

IsPerfect(G): GrpPerm -> BoolElt

Returns true if the group \(G\) is perfect, false otherwise.

IsSimple(G): GrpPerm -> BoolElt

Returns true if the group \(G\) is simple, false otherwise.

IsWreathProduct(G): GrpPerm -> BoolElt, GrpPerm, GrpPerm, GrpPerm

Returns true if the group \(G\) is isomorphic to a wreath product \(A \wr B\), where \(B\) is transitive, and false otherwise. If true, then three subgroups of \(G\), call them \(A\), \(B\), \(C\), are also returned. In this case we have \(G\) isomorphic to WreathProduct(A, CosetImage(B, C)).

Example: Perfect Non-Simple Subgroups of M24 (ex-c8fc8b)

We determine the orders of those subgroups of the Mathieu group \(M_{24}\) which are perfect but not simple. We use the function PerfectSubgroups which returns a representative from each conjugacy class of perfect subgroups.

> load m24;
Loading "/home/magma/libs/pergps/m24"
M24 - Mathieu group on 24 letters - degree 24
Order 244 823 040 = 2^10 * 3^3 * 5 * 7 * 11 * 23;  Base 1,2,3,4,5,6,7
Group: G
> time S := PerfectSubgroups(G);
Time: 29.460
> [ Order(H) : R in S | not IsSimple(H) where H := R`subgroup ];
[ 120, 120, 120, 180, 180, 240, 240, 336, 336, 336, 336, 504, 720, 1008, 1080,
  960, 960, 960, 1344, 1344, 1344, 1920, 2688, 2688, 2688, 2688, 2688, 2880,
  3840, 3840, 5760, 10752, 11520, 11520, 40320, 21504, 21504, 32256, 64512,
  69120, 322560 ]

Run in calculator (opens in a new tab)