I would like to construct a group that I have written down on paper in GAP.

329 Views Asked by At

First, let $V=\text{GF}(2^{11})$ (the group under addition) and let $\sigma$ be the squaring map (Frobenius map). Since $p=23$ divides $2^{11}-1$ there exist a $p^{\text{th}}$ root of unity in $V$, say $\epsilon$. Then $\langle\epsilon\rangle$ acts on $V$ by multiplication. Let $G=(V\rtimes\sigma)\rtimes\epsilon$. I would like to construct the group $G$ in GAP.

I can't figure out how to tell GAP to understand GF$(2^{11})$ as a group under addition. If I could do this I think I could construct the group myself.

Thanks to the help of Ahulpke I have constructed the above group $G$ in GAP. I'm now running into a problem because my computer cannot handle the function ConjugacyClassesSubgroups($G$). Luckily I don't really need GAP to compute ConjugacyClassesSubgroups($G$) completely. I need GAP to compute one conjugacy class representative for the action of $G$ on the subgroups of $G'$. Since my computer could not handle ConjugacyClassesSubgroups($G'$) I have a feeling this is too much to ask. More generally, I would like to be able to write a program with two inputs $G$ and $H\leq G$ and output a list of conjugacy class representative for the action of $G$ on the subgroups of $H$. I'm sure I could modify the function ConjugacyClassesSubgroups() to fit my needs if I knew how it worked internally. Does GAP have a library of programs that users can read? Or does anyone know ConjugacyClassesSubgroups() works internally? Any insight is appreciated.

1

There are 1 best solutions below

0
On BEST ANSWER

There is a special variant of SemidirectProduct that takes a group of matrices and a row space, and creates the product as an affine matrix group. (This is the natural representation for such products). Thus the main difficulty is to represent $\sigma$ and $\epsilon$ as 11-dimensional representations. For this we need to go to the field and use its basis

gap> f:=GF(2^11);
GF(2^11)
gap> b:=Basis(f);
CanonicalBasis( GF(2^11) )

represent squaring as a linear map by taking its action on the basis vectors.

gap> sigma:=List(BasisVectors(b),x->Coefficients(b,x^2));
[ [ Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2),0*Z(2), 0*Z(2) ], …

For a 23-th root we take a primitive root (this is cheap because of the way the field is represented internally) and take the appropriate power. We also take the action of multiplication on the basis.

gap> p:=PrimitiveRoot(f);
Z(2^11)
gap> Order(p);
2047
gap> 2047/23;
89
gap> eps:=p^89;
Z(2^11)^89
gap> Order(eps);
23
gap> epsilon:=List(BasisVectors(b),x->Coefficients(b,x*eps));
[ [ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), Z(2)^0,0*Z(2), 0*Z(2) ], … \

The special semidirect product construction is not that easy iteratively. So we take the group generated by $\sigma$ and $\epsilon$

gap> u:=Group(epsilon,sigma);
<matrix group with 2 generators>
gap> Size(u);
253

and take its semidirect product with the vector space. Voilá.

gap> g:=SemidirectProduct(u,GF(2)^11); 
<matrix group of size 518144 with 3 generators>
gap> Size(g);
518144
gap> 2^11*23*11;
518144

For most structural computations it is probably easier to work in an isomorphic permutation group:

gap> iso:=IsomorphismPermGroup(g);
CompositionMapping( <action epimorphism>, <action isomorphism> )
gap> gp:=Image(iso);
<permutation group of size 518144 with 3 generators>
gap> NrMovedPoints(gp);
46