I have a permutation group $G$, a subgroup of $S_{81}$, defined by a set of 6 specific permutations.

This permutation group has order 2592, and 54 Conjugacy Classes.

I can obtain a class representative for each with $ConjugacyClasses(G)$, but I would also like to get a complete list of the members for each class.

I confess to not having any background in group theory, so am having trouble getting this info from the GAP documentation, so would appreciate some guidance here.

  • $\begingroup$ As gap-system.org/Manuals/doc/ref/chap39.html#X7B2F207F7F85F5B8 says, AsList works for a conjugacy class, and for a group of order 2592, you should not have problems calling AsList(c) for a class c. $\endgroup$ – Alexander Konovalov Jan 13 '18 at 22:03
  • $\begingroup$ Sorry Alex, I'm having problems. I can't seem to get from the list of conjugacy classes (representatives) for $G$ to listing any individual class! Can you provide an example? $\endgroup$ – Jim White Jan 14 '18 at 1:18
  • $\begingroup$ Ok, I found that $L := ConjugacyClasses(G); Display(L[4]);$ seems to work! $\endgroup$ – Jim White Jan 14 '18 at 3:04
  • $\begingroup$ It seems that $L$ here is a set of "class objects" which can't be accessed as normal lists. cf Chapter 72 of Gap Manual. $\endgroup$ – Jim White Jan 14 '18 at 4:08
  • $\begingroup$ By the time I realised that $Display(L[k])$ in fact produced the same output for each $k$, you had kindly answered with a clear example below, thank you very much! $\endgroup$ – Jim White Jan 15 '18 at 13:39

Let's create some group as an example:

gap> G:=Group((1,9,6,7,5)(2,10,3,8,4), (1,10,7,8)(2,9,4,6));
Group([ (1,9,6,7,5)(2,10,3,8,4), (1,10,7,8)(2,9,4,6) ])

It has 8 conjugacy classes of elements:

gap> cc:=ConjugacyClasses(G);
[ ()^G, (3,4,9,7)(5,8,6,10)^G, (3,5,9,6)(4,10,7,8)^G, (3,9)(4,7)(5,6)(8,10)^G,
  (2,3,9)(4,10,5)(6,8,7)^G, (1,2)(3,4,5,10,9,7,6,8)^G, 
  (1,2)(3,7,5,8,9,4,6,10)^G, (1,2,3,7,6)(4,8,5,9,10)^G ]
gap> Length(cc);

Let's take the 2nd of them:

gap> c:=cc[2];

It contains 180 elements:

gap> Size(c);

and you can test membership of group elements in the conjugacy class as follows:

gap> (3,7,9,4)(5,10,6,8) in c;
gap> (3,7,6,8) in c;

Conjugacy class is not internally represented as a list of its elements - that would be very inefficient (for example, for algorithms that need only representatives of conjugacy classes). But if you need to get a list if all elements of the class, you can get them as follows:

gap> AsList(c);
[ (3,4,9,7)(5,8,6,10), (3,7,9,4)(5,10,6,8), (2,6,9,10)(4,7,8,5), 
  (2,10,9,6)(4,5,8,7), (2,10,7,5)(3,6,8,9), (2,5,7,10)(3,9,8,6), 
  (2,3,6,7)(4,9,10,8), (2,7,6,3)(4,8,10,9), (2,9,5,4)(3,8,10,7), 
  (1,9,6,10)(3,7,4,8), (1,10,6,9)(3,8,4,7), (1,3,4,10)(5,6,8,9), 
  (1,10,4,3)(5,9,8,6), (3,8,9,10)(4,5,7,6), (3,10,9,8)(4,6,7,5) ]

This may be very memory inefficient for large groups, but you can also iterate over its elements as follows:

gap> for x in c do
> Print(x,"\n");
> od;
( 3, 4, 9, 7)( 5, 8, 6,10)
( 3, 7, 9, 4)( 5,10, 6, 8)
( 3, 8, 9,10)( 4, 5, 7, 6)
( 3,10, 9, 8)( 4, 6, 7, 5)

without constructing the whole list, and also use enumerator which will give you a list-like behaviour:

gap> enum:=Enumerator(c);
<enumerator of (3,4,9,7)(5,8,6,10)^G>
gap> enum[2];
gap> Position( enum, (3,7,9,4)(5,10,6,8) );
gap> Position( enum, (3,7,6,8) );

also without constructing the whole list.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.