# MAGMA question: SemidirectProduct using a homomorphism $f:G \rightarrow GL_n(\mathbb{F}_p)$.

Suppose I have a homomorphism $f:G\rightarrow GL_n(\mathbb{F}_p)$ and I wish to form the semidirect product $E\rtimes_f G$ with $E$ being the elementary abelian group of order $p^n$.

The Semidirect product command in Magma takes arguments Semidirect(K,H,f):Grp, Grp, Map -> Grp to produce the semidirect product $K\rtimes_f H$ as a group object. Here f is a homorphism from H into AutK, where AutK is the Automorphism group of K, formed (I assume) by AutomorphismGroup(K).

In Magma, I set GLnp := GL(n,p); and make $f$ using f := hom< G -> GLnp | ... >; and $E$ using E := AbelianGroup([p:i in [1..n]]);. Then I make AutE := AutomorphismGroup(E);. So now the problem is taking that f and turning it into a homomorphism from G to AutE so that I can use it with SemidirectProduct.

The natural way I thought to do this was to construct an isomorphism g from GLnp to AutE, then setting phi := g*f; and forming SemidirectProduct(E,G,phi);. I find the GrpAuto class pretty difficult to work with, but managed to do this in a hack-y way when I had $n=3$ and $p=2$. However when I then tried to use the same method to form the group I really wanted, for which $n=10$ and $p=23$, the isomorphism from g from GLnp to AutE blew up, I assume because Magma tries to take the cartesian product of the two sets and then form the map as a subset (or something like that). I tried a couple other ways of forming g, and some worked at first, but then blew up when I used SemidirectProduct(E,G,phi);.

My $G$ here only has order $2640$ and Magma handles $E$ just fine by itself, so it seems like a permutation group on the scale of $E \rtimes_f G$ should be be well within the computational limits of Magma. (I have made permutation groups around that size before!) The problem is finding a way around whatever Magma is doing that is costing so much memory.

Am I wrong? Is what I want to do simply outside the computational limits of Magma?

In general,

What is the best way to make a homomorphism into a GrpAuto object from a GrpMat object?

and, most importantly of all,

How can I form $E\rtimes_f G$ in Magma given a homomorphism $f:G\rightarrow GL_n(\mathbb{F}_p)$, given as a map f from GrpPC : G to GL(n, GF(p))?

As far as I know, Magma does not have facilities for computing with semidirect products with elements represented by ordered pairs, so it needs to construct some kind of representation of the semidirect product, and by default it will try and construct a permutation representation. I think the problem here is probably that Magma will try and construct a permutation representation of ${\rm GL}(10,23)$ first, and will fail abysmally!
From what you say, it sounds as though $G$ is a solvable group. If you have a PC-presentation of $G$ and you know the matrices defining the action of the PC-generators of $G$ on $E$, then it should be moderately straightforward to write down a PC-presentation of the semidirect product, and thereby construct it directly as a PC-group, so why not do it that way?
It would be more difficult if $G$ was not solvable. My inclination then would be to define the semidirect product as a subgroup of a maximal parabolic subgroup of ${\rm GL}(11,23)$. You would then at least have a concrete representation of the group as a matrix group, so would have some chance of carrying out calculations within it.