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.

  • $\begingroup$ The source code is fully available in the `lib' subdirectory -- since the group is solvable it is the code in in grppclat.gi. There are hooks for certain reductions (e.g. to normal subgroups), but the $2^{11}$ in $G'$ will ultimately be the main obstacle. (For example there are 3548836819 subspaces of dimension 5, which with an acting group of order 253 will give at best 14027023 orbits.) Can you specify more what subgroups (or what information) you really need? $\endgroup$
    – ahulpke
    Sep 17, 2015 at 19:33
  • $\begingroup$ Given a subgroup $H$ of $G$ I have a program that tests property A in $G$. If a subgroup $H$ of $G$ satisfies property A in $G$, then $H\leq G'$ and $H^g$ satisfies property A in $G$ for any $g\in G$. Hence I only care about subgroups of $G'$ up to $G$-conjugacy. Ideally I would like to test all of the subgroups of $G'$ up to $G$-conjugacy, but this seems far fetched. Thank you for the info about the subdirectory, I should be able to write a cleaner program. Maybe I should focus on a smaller example to see what's going on. $\endgroup$ Sep 17, 2015 at 20:31
  • $\begingroup$ Unless you can reduce the number of possible $H$ (representatives) the total number of orbits will remain an obstacle. What is the property you are testing? Can this be used to eliminate candidates? $\endgroup$
    – ahulpke
    Sep 18, 2015 at 3:18
  • $\begingroup$ I looked at some smaller examples (for instance $G=\text{GF}(3^5)\rtimes\langle\sigma,\ \epsilon\rangle$) and there aren't subgroups satisfying property A in $G$ besides GF$(3^5)$. Which lead me to believe that there aren't any examples in $G=\text{GF}(2^{11})\rtimes\langle\sigma,\ \epsilon\rangle$ besides GF$(2^{11})$. I'm working on proof to show that this is the case. I have shown that any subgroup of GF$(q^r)$ is an example in GF$(q^r)\rtimes\langle\sigma,\ \epsilon\rangle$ when $(q^r-1)/(q-1)$ is a prime for primes $q$ and $r$. This is what I am aiming for but without the prime hypothesis $\endgroup$ Sep 22, 2015 at 13:52

1 Answer 1


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);
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);
gap> Order(p);
gap> 2047/23;
gap> eps:=p^89;
gap> Order(eps);
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);

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);
gap> 2^11*23*11;

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);

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .