8. Canonical representative of a right coset

Given a permutation g and a group S of permutations we can construct the right coset S.g, which is not a group in general. Here we want to choose a canonical representant of S.g. `Canonical´ means the first according to a given ordering of the points of the Ω set.  That ordering is defined through the base of the SGS.

Suppose a group generated by two permutations. We construct a SGS. Note that we can give the first points of the base of the SGS or not:

In[267]:=

SGS1 = SchreierSims[{1, 2}, GenSet[Perm[{2, 1, 3, 4, 6, 5}], Perm[{3, 4, 1, 2, 5, 6}]], 6]

Out[267]=

StrongGenSet[{1, 2, 3}, GenSet[Perm[{2, 1, 3, 4, 6, 5}], Perm[{3, 4, 1, 2, 5, 6}], Perm[{1, 2, 4, 3, 6, 5}]]]

In[268]:=

SGS2 = SchreierSims[{}, GenSet[Perm[{2, 1, 3, 4, 6, 5}], Perm[{3, 4, 1, 2, 5, 6}]], 6]

Out[268]=

StrongGenSet[{1, 3}, GenSet[Perm[{2, 1, 3, 4, 6, 5}], Perm[{3, 4, 1, 2, 5, 6}], Perm[{1, 2, 4, 3, 6, 5}]]]

The group generated by those SGSs has order 8 and therefore there are 90 cosets of that group in S6:

In[269]:=

OrderOfGroup[SGS1]

Out[269]=

8

In[270]:=

group = Dimino[SGS1[[2]]]

Out[270]=

In[271]:=

6 !/8

Out[271]=

90

Now we take one permutation which does not belong to the group and construct the corresponding right coset, sorting the permutations:

In[272]:=

perm = Perm[{2, 3, 1, 4, 5, 6}] ;

In[273]:=

PermMemberQ[perm, SGS1]

Out[273]=

False

In[274]:=

coset = Permute[group, perm]

Out[274]=

In[275]:=

PermSort[coset]

Out[275]=

The sorting is only evident in Images notation. The first permutation is our canonical representative:

In[276]:=

TranslatePerm[#, Images] &/@%

Out[276]=

It can also be computed using Portugal's algorithms.

In[277]:=

RightCosetRepresentative[perm, 6, SGS1]

Out[277]=

{Perm[{1, 3, 2, 4, 6, 5}], StrongGenSet[{}, GenSet[]], {2, 1, 3, 4, 6, 5}}

There is an additional argument which assigns special priority to some points ("free slots" below). The default is Range[deg], assigning that special priority to all points ("all slots are free"):

In[278]:=

RightCosetRepresentative[perm, 6, SGS1, {1, 4, 5}]

Out[278]=

{Perm[{2, 4, 1, 3, 6, 5}], StrongGenSet[{2}, GenSet[]], {1, 3, 6}}

Together with the canonical representative, the algorithm returns a SGS for the stabilizer of the special points, and the new positions of the special points under the change of coset element (performed by the permutation h in G taking the old permutation to the new permutation):

In[279]:=

RightCosetRepresentative[perm, 6, SGS1, {4, 3}]

Out[279]=

{Perm[{4, 1, 3, 2, 5, 6}], StrongGenSet[{3}, GenSet[Perm[{1, 2, 4, 3, 6, 5}]]], {2, 1}}

In[280]:=

h = Permute[First[%], InversePerm[perm]]

Out[280]=

Perm[{3, 4, 1, 2, 5, 6}]

In[281]:=

OnPoints[{4, 3}, h]

Out[281]=

{2, 1}

In[282]:=

Clear[h]

It is important to stress that PermSort uses by default the trivial ordering of points {1, 2, 3,...}, which in this case coincide with the base of SGS1. However, if we want to use other bases, then we need a second argument:

In[283]:=

PermSort[coset, SGS2[[1]]]

Out[283]=

In[284]:=

RightCosetRepresentative[perm, 6, SGS2]

Out[284]=

{Perm[{1, 3, 2, 4, 6, 5}], StrongGenSet[{}, GenSet[]], {2, 1, 3, 4, 6, 5}}

PermSort with a base uses the ordering given by PermOrderedQ. In any case the identity must always be the least permutation. Here we check that all permutations of degree four with all bases come after the identity:

In[285]:=

And @@ Flatten[Outer[PermOrderedQ[{ID, Perm[#1]}, #2] &, Drop[Permutations @ Range[4], 1], Permutations @ Range[4], 1]]

Out[285]=

True

It is possible to follow the internals of CosetRepresentative using the option xPermVerbose. Note that we use the terminology of tensor computations (tensor, slots, indices, etc.):

In[286]:=

RightCosetRepresentative[perm, 6, SGS2, Range[6], xPermVerbose→True]

RIGHT-COSET-REPRESENTATIVE ALGORITHM for Perm[{2, 3, 1, 4, 5, 6}]

which corresponds to the index list: Perm[{3, 1, 2, 4, 5, 6}]

base:  {1, 3}

****** Analysing element i=1 of base: slot 1 ******

Symmetry orbit Delta of slots:  {1, 2, 3, 4}

Free slots:  {1, 2, 3, 4, 5, 6}

Free slots that can go to that slot:  {1, 2, 3, 4}

At those slots we respectively find indices Deltap:  {3, 1, 2, 4}

The least index is 1, found at position pk: 2 of Deltap

That index is found in tensor at slot pp: 2

We can move slot 2 to slot 1 using permutation om: Perm[{2, 1, 3, 4, 6, 5}]  in S

New indices list: Perm[{1, 3, 2, 4, 6, 5}]

Computing stabilizer in S of slot 1

newbase before change:  {1, 3}

newbase after change:  {3}

****** Analysing element i=2 of base: slot 3 ******

Symmetry orbit Delta of slots:  {3, 4}

Free slots:  {2, 1, 3, 4, 6, 5}

Free slots that can go to that slot:  {3, 4}

At those slots we respectively find indices Deltap:  {2, 4}

The least index is 2, found at position pk: 1 of Deltap

That index is found in tensor at slot pp: 3

We can move slot 3 to slot 3 using permutation om: ID in S

New indices list: Perm[{1, 3, 2, 4, 6, 5}]

Computing stabilizer in S of slot 3

newbase before change:  {3}

newbase after change:  {}

Out[286]=

{Perm[{1, 3, 2, 4, 6, 5}], StrongGenSet[{}, GenSet[]], {2, 1, 3, 4, 6, 5}}

RightCosetRepresentative            Compute a canonical representative of a coset

Canonicalization of free indices.


Created by Mathematica  (May 16, 2008) Valid XHTML 1.1!