Ordering of group elements in MultiplicationTable vs CosetTable in GAP

40 Views Asked by At

I construct a finitely presented discrete group $G$ in GAP, a normal subgroup $H\triangleleft G$ of finite index $N$, and the factor group $G/H$ of order $N$. Assume for simplicity that $G$ has two generators $\gamma_1,\gamma_2$. For each coset $[g_k]\in G/H$, I wish to construct the $N\times N$ matrices of the left-regular representation of $G/H$, i.e., $$ U_{ij}([g_k])=\delta_{[g_i],[g_k][g_j]}, $$ as well as the matrix $$ A_{ij}(\gamma_\alpha)=\delta_{[g_j],[g_i][\gamma_\alpha]}, $$ for each generator $\gamma_\alpha$, $\alpha=1,2$. Here, $\delta_{[g],[g']}=1$ if $[g]=[g']$ and zero otherwise. For any $[g_k]$ and $\gamma_\alpha$, the matrices $U$ and $A$ commute.

To compute $U_{ij}([g_k])$, I use the Cayley table of $G/H$ obtained from MultiplicationTable (below, GmodH:=FactorGroup(G,H);):

N:=Order(GmodH);;
M:=MultiplicationTable(GmodH);;
U:=NullMat(N,N);;
for j in [1..N] do
    i:=M[k][j];;
    U[i][j]:=1;;
od;

where k ranges from $1$ to $N$ and denotes which $[g_k]$ I am considering.

To compute $A_{ij}(\gamma_\alpha)$, I use CosetTable:

CT:=CosetTable(G,H);;
A:=NullMat(N,N);;
for i in [1..N] do
    j:=CT[a,i];;    
    A[i,j]:=1;;
od;

where a ranges over $\gamma_1,\gamma_2,\gamma_1^{-1},\gamma_2^{-1}$.

The problem is my matrices U and A do not commute, although they should, which I suspect is because the order of group elements in MultiplicationTable is not the same as the order of cosets in CosetTable.

Is there a better way to do this, such that the group elements are in the same order? I would like to avoid looping over group elements as much as possible, since my $N$ can get quite large.

1

There are 1 best solutions below

2
On BEST ANSWER

The ordering of MultiplicationTable is the ordering of the list of its Elements. This will depend on the way how the group is represented.

The ordering of the cosets in CosetTable is so that the table is standardized. This means that when reading it row by row, new cosets arise in the natural order of integers.

I think it will be easiest to avoid building the two tables, but just work with the transversal:

rt:=RightTransversal(G,H);

and then for an element $g$ (e.g. a representative from the transversal)

U:=NullMat(N,N);
A:=NullMat(N,N);
for i in [1..N] do
  A[i][PositionCanonical(rt,rt[i]*g)]:=1;
  U[PositionCanonical(rt,g*rt[i])][i]:=1;
od;