GAP: how to work with elements of the group ring of the symmetric group $\mathbb{C}[S_k]$?

689 Views Asked by At

In GAP, working with elements of the symmetric group $S_k$ is straightforward. E.g. one can write

(1,2)*(2,3);

to obtain (1,3,2).

Is there a similar functionality to work with group rings, say $\mathbb{Q}[S_k]$? E.g., what would be the standard approach to evaluate expressions such as

[3*() - (1,2)] * [-(1,2) + 1/3*(2,3)]

I'm aware that one can create $\mathbb{Q}[S_k]$ by

G:= SymmetricGroup(k);
KG:= GroupRing(Rationals, G);

After that step however I don't know how to create actual elements of $\mathbb{Q}[S_k]$.

1

There are 1 best solutions below

2
On BEST ANSWER

You need to use the embedding of the underlying group into the group ring - see e.g. https://www.gap-system.org/Manuals/doc/ref/chap65.html

gap> G := SymmetricGroup(3);
Sym( [ 1 .. 3 ] )
gap> KG := GroupRing(Rationals, G);
<algebra-with-one over Rationals, with 2 generators>
gap> f:=Embedding(G,KG);
<mapping: SymmetricGroup( [ 1 .. 3 ] ) -> AlgebraWithOne( Rationals, ... ) >
gap> a := 3*()^f - (1,2)^f;
(3)*()+(-1)*(1,2)
gap> b := -(1,2)^f + 1/3*(2,3)^f;
(1/3)*(2,3)+(-1)*(1,2)
gap> a*b;
(1)*()+(1)*(2,3)+(-3)*(1,2)+(-1/3)*(1,3,2)

Note however, that this is an expensive operation, since it involves a lot of explicit calculations - calculating the image of an embedding in a group ring, multiplying it by a coefficient, and then summing up elements of group ring. A more efficient way is to write down coefficients and group elements using ElementOfMagmaRing:

gap> fam := ElementsFamily(FamilyObj(KG));
<Family: "FreeMagmaRingObjFamily">
gap> c:=ElementOfMagmaRing(fam,0,[1,1,-3,-1/3],[(),(2,3),(1,2),(1,3,2)]);
(1)*()+(1)*(2,3)+(-3)*(1,2)+(-1/3)*(1,3,2)

As you can see, this example is correct:

gap> a*b=c;
true