# Identifying conjugacy classes in GAP

I would like to know which column of the character table of $SL(2,\mathbb{Z}/q\mathbb{Z})$ that GAP produces with the command Display(CharacterTable(SL(2,q))); corresponds to the conjugacy class of the element $\left(\begin{smallmatrix}1 & 1 \\ 0 & 1\end{smallmatrix}\right)$.

Can someone tell me the GAP command to achieve this?

I've seen the function IdentificationOfConjugacyClasses, which gives the bijection between conjugacy classes of a group and conjugacy class as stored in a character table, but I can't work out even how to ask which conjugacy class of a group contains a given element.

• For an element $g$ in $G$ you can get the conjugacyclass with the command ConjugacyClass(G,g) and I suppose you can then check which of the elements in ConjugacyClasses(G) this is and use the identification to get the column of the table. Alternatively, you can check IsConjugate for g and RepresentativeConjugacyClass for each conjugacy class to find the correct one. Not sure if there is some clever shortcut for all of this. – Tobias Kildetoft May 26 '16 at 10:36

In a case like this, where you actually compute the character table from the group, it is easiest to keep the group as an object and use its conjugacy classes to identify in which class an element lies. Taking your example:

gap> q:=11;;g:=SL(2,q);
SL(2,11)
gap> c:=CharacterTable(g);
CharacterTable( SL(2,11) )


Now take the list of conjugacy classes, create the element, and test in which class the element lies, using IdentificationOfConjugacyClasses to deal with any potential reordering.

gap> cl:=ConjugacyClasses(g);;  # double semicolon: Do not print the list
gap> id:=IdentificationOfConjugacyClasses(c);
[ 1 .. 15 ]
gap> elm:=[[1,1],[0,1]]*One(GF(q));
[ [ Z(11)^0, Z(11)^0 ], [ 0*Z(11), Z(11)^0 ] ]
gap> pos:=id[PositionProperty(cl,x->elm in x)];
6
gap> ClassNames(c)[pos];
"11b"


So it is (in this case -- the arrangement and naming of classes might differ between different runs of GAP or if the group is constructed a second time) class number 6, named 11B.

It seems that if we construct the character table using CharacterTable(SL(2,q)); then IdentificationOfConjugacyClasses is always just the identity. Thus

Position(ConjugacyClasses(SL(2,q)),ConjugacyClass(SL(2,q),[[Z(p)^0,Z(p)^0],[0*Z(p),Z(p)^0]]));


is all that's needed here. The GAP manual tells us that 0*Z(p) is the additive identity, and Z(p)^0 is the multiplicative identity.

(I'm a bit confused by why we're meant to write 0*Z(p) and Z(p)^0 rather than 0*Z(q) and Z(q)^0, but it seems to work.)

• You can write Z(q), but as GAP embeds finite fields naturally, the one of GF(25) is in fact the one of GF(5) etc. – ahulpke May 26 '16 at 14:58
• If you compute the character table from a group, generically IdentificationOfConjugacyClasses is the identity, but it is possible that clever code (which writes down the character table from theoretic information or fetches it from a library) would have a different arrangement. – ahulpke May 26 '16 at 15:00