# Transfer Functions Between Group Categories

Since certain group computations are possible or feasible only for particular group representations, it is often useful to transfer a group from one category to another. The functions in this section take a group and return a group isomorphic to it (or isomorphic to some related group) in another category.

## `pQuotient(F, p, c: parameters): GrpFP, RngIntElt, RngIntElt -> GrpPC, Map`

```magma
Exponent  : RngIntElt                    Default: 0
Metabelian: BoolElt                      Default: false
Print     : RngIntElt                    Default: 0
Workspace : RngIntElt                    Default: 5000000
```

Given a group $F$ in category `GrpFP`, a prime $p$ and a positive integer $c$, construct the largest $p$-quotient $G$ of $F$ having lower exponent-$p$ class at most $c$ (or 127, if $c$ is given as $0$) as group in the category `GrpPC`. The function also returns the homomorphism from $F$ to $G$.

The parameters are:

If `Exponent := m`, enforce the exponent law, $x^m = 1$, on the group.

If `Metabelian := true`, then a consistent pcp is constructed for the largest metabelian $p$-quotient of $F$ having lower exponent-$p$ class at most $c$.

This parameter controls the volume of printing. By default its value is that returned by `GetVerbose("pQuotient")`, which is $0$ unless it has been changed through use of `SetVerbose`. The effect is the following:

`Print := 0` : No output.

`Print := 1` : Report order of $p$-quotient at each class.

`Print := 2` : Report statistics and redundancy information about tails, consistency, collection of relations and exponent enforcement components of calculation.

`Print := 3` : Report in detail on the construction of each class.

Note that the presentation displayed is a *power-commutator* presentation (since this is the version stored by the $p$-quotient).

The amount of space requested for the $p$-quotient computation.

## `CosetAction(G, H): Grp, Grp -> Hom(Grp), GrpPerm, Grp`

## `RegularRepresentation(G, H): Grp, Grp -> Hom(Grp), GrpPerm, Grp`

Given a subgroup $H$ of the group $G$, construct the permutation representation of $G$ given by the action of $G$ on the set of (right) cosets of $H$ in $G$. The function returns:

**(a)**
The natural homomorphism $f: G \rightarrow  L$;

**(b)**
The induced permutation group $L$ (the image of $f$);

**(c)**
(if possible) The kernel $K$ of the action (a subgroup of $G$).

If $G$ is a finitely presented group, then $K$ may be returned undefined. The permutation representation is obtained by using the Todd-Coxeter procedure to construct the coset table for $H$ in $G$. Note that $G$ may be an infinite group: it is only necessary that the index of $H$ in $G$ be finite.

## `CosetImage(G, H): Grp, Grp -> GrpPerm`

Given a subgroup $H$ of the group $G$, construct the image of $G$ given by its action on the (right) coset space of $H$ in $G$, returning it as a permutation group. (This is also the second return value of `CosetAction(G, H)`.)

## `CosetKernel(G, H): Grp, Grp -> Grp`

Given a subgroup $H$ of the group $G$, construct the kernel of $G$ in its action on the (right) coset space of $H$ in $G$. (This is also the third return value of `CosetAction(G, H)`.) This function may fail if $G$ is a finitely presented group; it is only available when the index of $H$ in $G$ is very small.

## `MinimalDegreePermutationRepresentation(G: parameters): Grp -> Hom(Grp), GrpPerm`

```magma
Print    : RngIntElt                    Default: 0
Accept   : RngIntElt                    Default: 0
UseAutGrp: BoolElt                      Default: true
```

Given a finite group $G$ in category `GrpPerm`, `GrpMat`, or `GrpPC`, construct a faithful permutation representation $\phi$ of $G$ of smallest possible degree. The homomorphism $\phi$ and its image $P$ are returned.

*Warning*: This function can take a very long time on difficult examples.

The parameters are:

This controls the level of diagnostic printing, the default being none.

If `Accept` is set to an integer $n > 0$, then the function will stop if it finds a faithful permutation representation of degree at most $n$, and return that. Of course this means that the representation returned is not guaranteed to have minimal degree.

When `UsAutGrp` is `true`, the function might compute the automorphism group of $G$ to help reduce its search space.

## `Example: Minimal Degree Permutation Representation (ex-4a0ec6)`

```magma
> G := OmegaPlus(8,3);
> phi, P := MinimalDegreePermutationRepresentation(G);
> P;
Permutation group P acting on a set of cardinality 2160
Order = 2^13 * 3^12 * 5^2 * 7 * 13

```

The function works quickly on almost all of the groups in the small groups library of groups of order less than 2000, but it can be slow on a few such examples, particularly large $p$-groups. These might be suitable candidates for effective use of the `Accept` parameter.

It generally performs well with groups of type `GrpMat`, provided that a reasonably small degree faithful permutation representation exists. For example, for the group `SpinPlus`(8,3), it finds the optimal representation of degree 4320 reasonably quickly (about 20 seconds), whereas for `SpinMinus`(8,3), it takes longer (about 180 seconds) to find the representation of degree 183680 and prove that it has minimal degree.

As another example, with input the representation of the non-split extension $2^5 \cdot L_5(2)$ of $L_5(2)$ by its natural module as a subgroup of ${\rm GL}(69,2)$ (from the ATLAS database in Magma), the minimal degree function takes about 10 seconds to find the optimal faithful permutation representation of degree 3968, which is less than the degree of the permutation representations in the ATLAS database.

The new function cannot be used directly on finite groups of type `GrpFP`, but the user can try using coset enumeration with `CosetAction` or `CosetImage` to find an isomorphic group of type `GrpPerm`, and then use`MinimalDegreePermutationRepresentation` on that. For example, with the group $G = \langle x,y \mid x^2,y^3,(xy)^7,[x,y]^8\rangle$, which has order 10752, we could first use `CosetAction` to compute a permutation representation of degree $1344$ on the cosets of the subgroup $\langle [x,y] \rangle$, and then use the resulting image as input to `MinimalDegreePermutationRepresentation` to find the minimal degree representation, which is of degree 28.

## `PermutationRepresentationQuotient(G, N : parameters): Grp, Grp -> Hom(Grp), GrpPerm`

```magma
Print : RngIntElt                    Default: 0
Accept: RngIntElt                    Default: 0
MaxDeg: RngIntElt                    Default: 10^7
```

Given a finite group $G$ in category `GrpPerm`, `GrpMat`, or `GrpPC` and a normal subgroup $N$ of $G$, construct a faithful permutation representation $G/N$. This is returned as a permutation representation $\phi$ of $G$ with kernel $N$, together with the image of $\phi$. The representation will usually, but not always, be of smallest possible degree.

*Warning*: This function can take a very long time on difficult examples.

The parameters are:

This controls the level of diagnostic printing, the default being none.

If `Accept` is set to an integer $n > 0$, then the function will stop if it finds a faithful permutation representation of $G/N$ of degree at most $n$, and return that. Of course this means that the representation returned will typically not be of minimal degree.

The process aborts if it discovers that the smallest degree faithful representation of $G/N$ has degree more than `MaxDeg`.

## `GPCGroup(G): Grp -> GrpGPC, Hom(Grp)`

Given a soluble group $G$, in the category `GrpPerm`, `GrpMat`, `GrpAb` or `GrpPC`, construct a polycyclic group $P$ isomorphic to $G$. Currently $G$ must be finite, if it is in the category `GrpMat`. In addition to returning $P$, the function returns an isomorphism $\phi: G \rightarrow P$.

## `PCGroup(G): Grp -> GrpPC, Hom(Grp)`

Given a finite soluble group $G$, in the category `GrpPerm`, `GrpMat`, `GrpAb` or `GrpGPC`, construct a group $S$ given by a power-conjugate presentation, which is isomorphic to $G$. In addition to returning $S$, the function returns an isomorphism $\phi: G \rightarrow S$.

## `FPGroup(G: parameters): GrpPerm -> GrpFP, Hom(Grp)`

```magma
StrongGenerators: BoolElt                      Default: false
Random          : BoolElt                      Default: true
Max             : RngIntElt                    Default: 100
Run             : RngIntElt                    Default: 20
```

Given a group $G$, in the category `GrpPerm`, `GrpMat`, `GrpGPC` or `GrpPC`, construct a finitely presented group $F$ isomorphic to $G$, by presenting the group on its given generators. For groups in the category `GrpPerm` and `GrpMat`, the Todd-Coxeter Schreier algorithm is used to construct the presentation and a choice of a presentation on the given generators or on the strong generators is available. In addition to returning $F$, the function returns an isomorphism $\phi: F \rightarrow G$, such that $\phi(F.i)=G.i$ for all $i$. If the parameter `StrongGenerators` is set to `true` (`GrpPerm` and `GrpMat` only), the presentation will be constructed on the strong generators of $G$ instead of the given generators. If strong generators are not already known for $G$, they will be constructed; in this case, the other parameters are also meaningful. The parameter `Random` with its associated parameters `Max` and `Run` may be used to apply the Random Schreier algorithm to construct a probable BSGS before commencing the construction of the presentation.

## `Example: Coset Action (ex-faa68a)`

We construct a finitely presented group $G$ and a subgroup $H$, then find the permutation representation of $G$ given by its action on the cosets of $H$. Since the induced permutation group $L$ has the same order as $G$, the representation is faithful, and the homomorphism $f: G \rightarrow L$ is an isomorphism.

```magma
> G<a, b> := Group< a, b | a^3, b^3, (b * a)^4,
>     ((b^-1)^a * b^-1)^2 * b^a * b >;
> Order(G);
168
> H := sub< G | a^2 * b^2, (a * b)^2 >;
> Index(G, H);
7
> f, L := CosetAction(G, H);
> f;
Mapping from: GrpFP: G to GrpPerm: L
> L;
Permutation group L acting on a set of cardinality 7
    (1, 2, 3)(4, 7, 5)
    (1, 3, 4)(2, 5, 6)
> Order(L);
168

```

## `Example: CosetAction 2 (ex-4138bd)`

A permutation representation of ${\operatorname{Sp}}(2, 4)$.

```magma
> M := SymplecticGroup(2, 4);
> #M;
60
> Ms := sub< M | M.1 * M.2 >;
> Index(M, Ms);
12
> PG := CosetImage(M, Ms);
> PG;
Permutation group PG acting on a set of cardinality 12
    (1, 2, 4)(3, 5, 7)(6, 8, 10)(9, 11, 12)
    (1, 3, 2)(4, 6, 8)(5, 7, 9)(10, 12, 11)
> #PG;
60

```

## `Example: FP Group (ex-35b71d)`

A finitely presented group isomorphic to ${\operatorname{PSU}}(3, 3)$:

```magma
> G := PSU(3, 3);
> F<a, b>, phi := FPGroup(G);
> F;
Finitely presented group F on 2 generators
Relations
    a^8 = Id(F)
    b^8 = Id(F)
    (b * a^-1 * b)^3 = Id(F)
    b * a^-1 * b^-1 * a^-1 * b^-1 * a^-1 * b * a^-1 * b * a^-1 = Id(F)
    b^-1 * a^-2 * b^-1 * a^-2 * b^-1 * a^-1 * b^-2 * a^-1 = Id(F)
> phi(a) eq G.1 and phi(b) eq G.2;
true

```
