Message Boards Message Boards

3 Replies
1 Total Likes
View groups...
Share this post:

Right Cosets

Posted 9 years ago

For G a subgroup of S(n) -- the symmetric group on n-letters -- does the code below return all right cosets of G in S(n)?

cosets = GroupOrbits[G, GroupElements@Sn, PermutationProduct[#1, #2] &];

If so, is there another way to obtain the cosets?

The code seemed to work until I hit an example for n = 7, at which time Mathematica disputed GAP ... and that ain't good, which means I may not correctly understand how to use the third argument in GroupOrbits.


POSTED BY: Bruce Colletti
3 Replies

Yes, Bruce. That's correct, and a good way to express it.


Posted 9 years ago

Thanks for the reply Jose. Let's make sure I understand.

Let G be a group and X be a pointlist.

The GroupOrbits documentation addresses GroupOrbits[G, X, f[X-element, G-element]].

Thus X-elements and G-elements are referenced by #1 and #2 respectively -- their positions as f-arguments.

Since left cosets of G have form x G={x g: g in G}, each term x g is given by PermutationProduct[#1, #2].

Since right cosets of G have form G x={g x: g in G}, each term g x is given by PermutationProduct[#2, #1].

Did I get this right? If so, I'll tell Tech Support to ignore the notebook sent Sunday evening. After it was sent, it occurred to me to check with Wolfram Community -- and I'm glad I did! I had twisted around the #1 and #2 arguments.

POSTED BY: Bruce Colletti


I think the construction you gave produces the left cosets. To get the right cosets use PermutationProduct[#2, #1]& in the third argument. This is because the action function f[x, g] in the third argument is a right action so it lets generators g of the group G act on elements x of the orbits (in your case elements of Sn). To construct the right cosets Gx we need to reverse the product. The left cosets xG do not need the reversal of the product.

You can check that the cosets are correct by showing that all elements of a given coset have the same canonical representative. A simple example with n = 4:

In[1]:= G = DihedralGroup[2];

In[2]:= S4list = GroupElements[SymmetricGroup[4]];

In[3]:= rightcosets = GroupOrbits[G, S4list, PermutationProduct[#2, #1] &];

In[4]:= leftcosets = GroupOrbits[G, S4list, PermutationProduct[#1, #2] &];

Here we see that all representatives (using RightCosetRepresentative) of the same coset coincide:

In[5]:= Length /@ DeleteDuplicates /@ Map[RightCosetRepresentative[G, #] &, rightcosets, {2}]
Out[5]= {1, 1, 1, 1, 1, 1}

That does not happen here:

In[6]:= Length /@ DeleteDuplicates /@ Map[RightCosetRepresentative[G, #] &, leftcosets, {2}]
Out[6]= {1, 4, 4, 4, 4, 1}

If this does not solve the issue, please let us know the particular example that seems to be wrong.


Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract