# Reduced Automorphism Group and Reduced Isomorphism Testing

The function `IsGL2Equivalent` plays a central role in the isomorphism testing, and is documented here due to its central role in these computations.

## `IsGL2Equivalent(f, g, n): RngUPolElt, RngUPolElt, RngIntElt -> BoolElt, SeqEnum`

This function returns `true` if and only if $f$ and $g$ are in the same ${\operatorname{GL}}_2(k)$-orbit, where $k$ is the coefficient field of their parent, modulo scalars. The polynomials are considered as homogeneous polynomials of degree $n$, where $n$ must be at least $4$. The second return value is the sequence of all matrix entries $[a,b,c,d]$ such that $g(x)$ is a constant times $f\left((ax + b)/(cx + d)\right) (cx + d)^n$.

## `IsGL2EquivalentExtended(f1, f2, deg): RngUPolElt, RngUPolElt, RngIntElt -> BoolElt, List`

```magma
geometric  : BoolElt                    Default: false
commonfield: BoolElt                    Default: true
covariant  : BoolElt                    Default: true
```

Returns a boolean indicating whether a matrix $T$ exists such that the change of variable induced on $f1$ by $T$, $f1*T$, is a multiple of $f2$, as well as a full list of all such matrices.

If `geometric` is set to `true`, then the set of isomorphisms over the algebraic closure of the base field is returned. If `commonfield` is set to `false`, then the isomorphisms that are returned may be defined over different fields. Of `covariant` is set to `false`, then the calculation of the isomorphisms is performed by a direct methods instead of applying the usual covariant reduction.

For more details, see [[Lercier *et al.*, 2012](../../references.md#cite-lrs12)].

## `IsReducedIsomorphicHyperellipticCurves(X1, X2): CrvHyp, CrvHyp -> BoolElt, List`

## `IsReducedIsomorphicHyperellipticCurves(f1, f2): RngUPolElt, RngUPolElt -> BoolElt, List`

```magma
geometric  : BoolElt                    Default: false
commonfield: BoolElt                    Default: true
covariant  : BoolElt                    Default: true
```

Returns a boolean indicating whether a matrix $T$ exists that induces an isomorphism $f1(x) \rightarrow f2(x)$ ($f1$ and $f2$ resp. define $X1$ and $X2$), as well as a full list of all such matrices.

If `geometric` is set to `true`, then the set of isomorphisms over the algebraic closure of the base field is returned. If `commonfield` is set to `false`, then the isomorphisms that are returned may be defined over different fields. Of `covariant` is set to `false`, then the calculation of the isomorphisms is performed by a direct methods instead of applying the usual covariant reduction.

## `ReducedIsomorphismsOfHyperellipticCurves(X1, X2): CrvHyp, CrvHyp -> List`

## `ReducedIsomorphismsOfHyperellipticCurves(f1, f2): RngUPolElt, RngUPolElt -> List`

```magma
geometric  : BoolElt                    Default: false
commonfield: BoolElt                    Default: true
covariant  : BoolElt                    Default: true
```

Returns a full list of matrices $T$ that induce an isomorphism $f1(x) \rightarrow f2(x)$ ($f1$ and $f2$ resp. define $X1$ and $X2$).

If `geometric` is set to `true`, then the set of isomorphisms over the algebraic closure of the base field is returned. If `commonfield` is set to `false`, then the isomorphisms that are returned may be defined over different fields. Of `covariant` is set to `false`, then the calculation of the isomorphisms is performed by a direct methods instead of applying the usual covariant reduction.

For more details, see [[Lercier *et al.*, 2012](../../references.md#cite-lrs12)].

## `ReducedAutomorphismsOfHyperellipticCurve(X): CrvHyp -> List`

## `ReducedAutomorphismsOfHyperellipticCurve(f): RngUPolElt -> List`

```magma
geometric  : BoolElt                    Default: false
commonfield: BoolElt                    Default: true
covariant  : BoolElt                    Default: true
```

Return the automorphism group of the defining polynomial of $X$, as a full list of matrices $T$.

If `geometric` is set to `true`, then the set of isomorphisms over the algebraic closure of the base field is returned. If `commonfield` is set to `false`, then the isomorphisms that are returned may be defined over different fields. Of `covariant` is set to `false`, then the calculation of the isomorphisms is performed by a direct methods instead of applying the usual covariant reduction.

## `ReducedAutomorphismGroupOfHyperellipticCurve(X, Autos): CrvHyp, List -> GrpPerm, Map`

## `ReducedAutomorphismGroupOfHyperellipticCurve(f, Autos): RngUPolElt, List -> GrpPerm, Map`

```magma
explicit: BoolElt                    Default: false
```

Return the automorphisms group defined by the sequence $Autos$, as a permutation group (and its representation if `explicit` is set to `true`).

## `ReducedAutomorphismGroupOfHyperellipticCurve(X): CrvHyp -> GrpPerm, Map`

## `ReducedAutomorphismGroupOfHyperellipticCurve(f): RngUPolElt -> GrpPerm, Map`

Return the automorphisms group of the curve $y^2 = f(x)$, as a permutation group (and its representation if `explicit` is set to `true`).
