# Permutation Groups

Generating Sets | Example: The Rubik Group |

Orbits and Stabilizers | Other Examples |

Strong Generating Set Representation |

Groups admit many different representations. In particular, all finite groups can be represented as permutation groups, that is, they are always isomorphic to a subgroup of the symmetric group of automorphisms of a set of elements (Cayley's theorem). Highly efficient techniques for manipulation of permutation groups have been developed during the last 40 years, which allow the manipulation of very large groups in a computer.

The Wolfram Language provides a collection of commands and algorithms that can handle permutation groups of moderate degree, in the range of a few thousand, hence working with groups of permutations with more than elements.

This tutorial introduces some basic algorithms for computing with finite permutation groups, specified by a list of generating permutations given in disjoint cyclic form. A separate tutorial "Permutations" explains how to work with permutations in cyclic form.

## Generating Sets

A simple and compact way of specifying a group is by giving a set of elements whose repeated product produces the whole group. These are then called *generators* of the group and the set of elements is referred to as a *generating set*. This is a powerful and general method to specify a finite group, though for large groups it might be difficult to extract information from them about the group.

PermutationGroup | head for a permutation group defined by generators |

GroupElements | list of elements of a group |

GroupMultiplicationTable | table with all multiplications of pairs of elements of a group |

CayleyGraph | graph of generator links between elements of a group |

In[1]:= |

For small groups, it is possible to construct better representations of a group. They are the Cayley multiplication table and Cayley graph, the latter representing mixed information about both the whole group and the generating set being used.

## Orbits and Stabilizers

Given any generating set of a permutation group acting on a set of points, it is possible to find which other points can be related with a given point. This is called the *orbit* of that point.

GroupOrbits | compute orbits of points under a group |

In[15]:= |

Points cannot belong to two different orbits and hence orbits partition the set of points on which the group acts.

In[24]:= |

In[26]:= |

Using more general actions it is possible to form other types of orbits, like conjugacy classes.

Complementary to the information given by orbits, describing how points move, it is also possible to compute *stabilizers*, namely the subgroups of elements fixing one or several points.

GroupStabilizer | subgroup of elements fixing one or several points |

## Strong Generating Set Representation

For larger permutation groups it becomes increasingly infeasible to list or draw all their elements. In such cases it is necessary to resort to alternative methods that can infer information about a group from a generating set of the group without actually computing all its permutations. The key ideas were developed in the late 1960s, and are based on the construction of a new equivalent generating set for the same group, but from which it is easy to form a hierarchy of subgroups that allow fast manipulation of the full group. This special type of generating set is called a *strong generating set*.

GroupOrder | number of elements of a group |

GroupElementQ | test whether a permutation belongs to a given group |

Basic functionality with strong generating set representations.

In[34]:= |

Now return to the properties of a strong generating set. Strong generators are defined with respect to a *base*: this is an ordered subset of points of the domain of action of the group, such that the identity is the only element that fixes them all. That implies that knowing the images of the points in a base under a permutation uniquely identifies that permutation. Groups for which a short base is known can be manipulated highly efficiently. The base defines a very useful hierarchy of stabilizer subgroups, known as the *stabilizer chain*, which plays a central role in the manipulation of permutation groups, very much like the Gauss-elimination hierarchy of vector spaces in linear algebra. Finally, the condition that characterizes a set of generators as being *strong* with respect to a base is that it contains generating subsets for all subgroups in the corresponding stabilizer chain.

GroupStabilizerChain | chain of stabilizer subgroups of a permutation group |

GroupActionBase | option specifying a base of a group |

Stabilizer chain, base, and strong generators.

## Example: The Rubik Group

One of the most famous permutation groups is that associated with the rotations of a Rubik cube. In the following diagram moving facelets are numbered from 1 to 48. The central facelets do not move, and define six respective basic rotations.

In[60]:= |

In[68]:= |

## Other Examples

These are two examples of groups of larger support, but with very short bases.

*ATLAS of Finite Groups*is , represented as permutations on 496 points:

In[75]:= |

In[81]:= |