[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Permutation Group Databases

Magma has a database containing all transitive permutation groups having degree up to 22, and one containing all primitive permutation groups with degree up to 50.

The transitive groups up to degree 15 were determined by Greg Butler and John McKay, while the groups having degree in the range 16 to 22 have recently (1997) been determined by Alexander Hulpke. It is hoped that the transitive groups of degree up to 30 will be available in the near future.

The list of primitive groups was prepared by C. C. Sims (see [Sim70] for the early part of the list) and, while it is believed to be complete, users assuming the completeness of the list do so at their own risk.

Subsections

Accessing the Databases

TransitiveGroupDatabaseLimit() : -> RngIntElt
PrimitiveGroupDatabaseLimit() : -> RngIntElt
The limiting degree of the database of transitive (primitive) groups.

NumberOfTransitiveGroups(d) : RngIntElt -> RngIntElt
NumberOfPrimitiveGroups(d) : RngIntElt -> RngIntElt
Given a degree d in the required range, return the number of transitive (primitive) groups of degree d.

TransitiveGroup(d, n) : RngIntElt, RngIntElt -> GrpPerm, MonStgElt
PrimitiveGroup(d, n) : RngIntElt, RngIntElt -> GrpPerm, MonStgElt
Given a degree d in the required range and a positive integer n, return the n-th transitive (primitive) group of degree d. Also returns a string giving a description of the group.

TransitiveGroupDescription(d, n) : RngIntElt, RngIntElt -> MonStgElt
PrimitiveGroupDescription(d, n) : RngIntElt, RngIntElt -> MonStgElt
A string giving a description of the n-th transitive (primitive) group of degree d.

TransitiveGroup(d) : RngIntElt -> GrpPerm, MonStgElt
PrimitiveGroup(d) : RngIntElt -> GrpPerm, MonStgElt
Given a degree d in the required range, return the first transitive (primitive) group of degree d. Also returns a string giving a description of the group.

TransitiveGroup(d, f) : RngIntElt, Program -> GrpPerm, MonStgElt
PrimitiveGroup(d, f) : RngIntElt, Program -> GrpPerm, MonStgElt
Given a degree d in the required range and a predicate f (as a function or intrinsic), return the first transitive (primitive) group of degree d which satisfies f. Also returns a string giving a description of the group.

TransitiveGroup(S, f) : [RngIntElt], Program -> GrpPerm, MonStgElt
PrimitiveGroup(S, f) : [RngIntElt], Program -> GrpPerm, MonStgElt
Given a sequence S of degrees and a predicate f (as a function or intrinsic), return the first transitive (primitive) group with degree in S which satisfies f. Also returns a string giving a description of the group.

TransitiveGroups(d: parameters) : RngIntElt -> [GrpPerm]
PrimitiveGroups(d: parameters) : RngIntElt -> [GrpPerm]
    Warning: BoolElt                    Default: true
Return a sequence of all transitive (primitive) groups of degree d. Some degrees will produce a very large sequence of groups -- in such cases a warning will be printed unless the user specifies Warning := false.

TransitiveGroups(S: parameters) : [RngIntElt] -> [GrpPerm]
PrimitiveGroups(S: parameters) : [RngIntElt] -> [GrpPerm]
    Warning: BoolElt                    Default: true
Given a sequence S of degrees, return a sequence of all transitive (primitive) groups with degree in S. The resulting sequence may be very long -- in such cases a warning will be printed unless the user specifies Warning := false.

TransitiveGroups(d, f) : RngIntElt, Program -> [GrpPerm]
PrimitiveGroups(d, f) : RngIntElt, Program -> [GrpPerm]
Given an integer d and a predicate (function or intrinsic) f, return a sequence containing all transitive (primitive) groups G of degree d satisfying f(G) eq true.

TransitiveGroups(S, f) : [RngIntElt], Program -> [GrpPerm]
PrimitiveGroups(S, f) : [RngIntElt], Program -> [GrpPerm]
Given a sequence S of degrees and a predicate (function or intrinsic) f, return a sequence containing all transitive (primitive) groups G with degree in S satisfying f(G) eq true.


Example GrpData_Transitive (H34E7)

We apply some of these functions to the degree 8 case.

> NumberOfTransitiveGroups(8);
50
> TransitiveGroup(8, 3);
Permutation group acting on a set of cardinality 8
    (1, 2)(3, 4)(5, 6)(7, 8)
    (1, 4)(2, 3)(5, 8)(6, 7)
    (1, 8)(2, 7)(3, 6)(4, 5)
E(8) = 2[x]2[x]2
> S := TransitiveGroups(8, IsPrimitive);
> #S;
7
> S;
[
    Permutation group acting on a set of cardinality 8
        (1, 8)(2, 3)(4, 5)(6, 7)
        (1, 3)(2, 8)(4, 6)(5, 7)
        (1, 5)(2, 6)(3, 7)(4, 8)
        (1, 2, 6, 3, 4, 5, 7),
    Permutation group acting on a set of cardinality 8
        (1, 8)(2, 3)(4, 5)(6, 7)
        (1, 3)(2, 8)(4, 6)(5, 7)
        (1, 5)(2, 6)(3, 7)(4, 8)
        (1, 2, 6, 3, 4, 5, 7)
        (1, 2, 3)(4, 6, 5),
    Permutation group acting on a set of cardinality 8
        (1, 2, 3, 4, 5, 6, 8)
        (1, 2, 4)(3, 6, 5)
        (1, 6)(2, 3)(4, 5)(7, 8),
    Permutation group acting on a set of cardinality 8
        (1, 2, 3, 4, 5, 6, 8)
        (1, 3, 2, 6, 4, 5)
        (1, 6)(2, 3)(4, 5)(7, 8),
    Permutation group acting on a set of cardinality 8
        (1, 8)(2, 3)(4, 5)(6, 7)
        (1, 3)(2, 8)(4, 6)(5, 7)
        (1, 5)(2, 6)(3, 7)(4, 8)
        (1, 2, 6, 3, 4, 5, 7)
        (1, 2, 3)(4, 6, 5)
        (1, 2)(5, 6),
    Permutation group acting on a set of cardinality 8
        (1, 2)(3, 4, 5, 6, 7, 8)
        (1, 2, 3),
    Permutation group acting on a set of cardinality 8
        (1, 2, 3, 4, 5, 6, 7, 8)
        (1, 2)
]
> 
> NumberOfPrimitiveGroups(8);
7
> PrimitiveGroup(8, 1);         
Permutation group acting on a set of cardinality 8
    (1, 2, 3, 4, 5, 6, 7)
    (1, 8)(2, 4)(3, 7)(5, 6)
AGL(1, 8)

Processes

A transitive or primitive group process enables iteration over all transitive (prim itive) groups of specified degrees satisfying a given predicate, without having to create and store all such groups together.

Transitive and primitive group processes are created in Magma via the functions TransitiveGroupProcess and PrimitiveGroupProcess (in various forms). The standard process functions IsEmpty, Current, CurrentLabel and Advance can then be applied to the process.

TransitiveGroupProcess(d) : RngIntElt -> Process
PrimitiveGroupProcess(d) : RngIntElt -> Process
Return a group process which will iterate though all transitive (primitive) groups of degree d.

TransitiveGroupProcess(S) : [RngIntElt] -> Process
PrimitiveGroupProcess(S) : [RngIntElt] -> Process
Return a process which will iterate though all transitive (primitive) groups with degree in the sequence S.

TransitiveGroupProcess(d, f) : RngIntElt, Program -> Process
PrimitiveGroupProcess(d, f) : RngIntElt, Program -> Process
Return a process which will iterate though all transitive (primitive) groups with degree d which satisfy the predicate f.

TransitiveGroupProcess(S, f) : [RngIntElt], Program -> Process
PrimitiveGroupProcess(S, f) : [RngIntElt], Program -> Process
Return a process which will iterate though all transitive (primitive) groups with degree in the sequence S which satisfy the predicate f.

IsEmpty(p) : Process -> BoolElt
True if the process p has passed its last group.

Current(p) : Process -> GrpPerm, MonStgElt
Return the current group of the process p, as well as a description of the group.

CurrentLabel(p) : Process -> RngIntElt, RngIntElt
Return the label of the current group of the process p. That is, return d and n such that the current group is TransitiveGroup(d, n) (or PrimitiveGroup(d, n)).

Advance(~p) : Process ->
Move the process p to its next group.


Example GrpData_TransitiveProcess (H34E8)

The use of processes is illustrated by the following code, in which the orders of all transitive groups of degree 5 are listed.

> p := TransitiveGroupProcess(5);            
> while not IsEmpty(p) do
>     CurrentLabel(p), #Current(p);
>     Advance( p);
> end while;
5 1 5
5 2 10
5 3 20
5 4 60
5 5 120

Transitive Group Identification

Given a transitive group G whose degree is in the database range, it is possible to obtain the number of the group in the transitive groups database which is isomorphic to G.

TransitiveGroupIdentification(G) : GrpPerm -> RngIntElt, RngIntElt
The number (and degree) of the group in the transitive groups database which is isomorphic to the transitive group G.


Example GrpData_TransitiveId (H34E9)

We get a transitive permutation group from the small groups database and identify it as a transitive group.

> G := SmallGroup(336, IsTransitive: Search:="Insoluble");
> G;
Permutation group G acting on a set of cardinality 16
  (1, 14, 6, 2, 12, 8, 13, 7)(3, 15, 10, 5, 16, 9, 4, 11)
  (2, 5, 6)(3, 10, 9)(4, 15, 16)(7, 11, 13)
> TransitiveGroupIdentification(G);
715 16
> IsConjugate(Sym(16), G, TransitiveGroup(16, 715));
true (2, 15, 9, 10, 4, 3, 5, 7, 16, 6, 11, 8, 13, 12)
We found it to be group 715 of degree 16.
 [Next][Prev] [Right] [Left] [Up] [Index] [Root]