# Elements of ${\operatorname{PSL}}_2({\mathbb{R}})$

## Creation

### `G ! x: GrpPSL2, . -> GrpPSL2`

### `G ! x: GrpPSL2, RngIntElt -> GrpPSL2`

### `G ! x: GrpPSL2, GrpMatElt -> GrpPSL2`

### `G ! x: GrpPSL2, AlgMatElt -> GrpPSL2`

### `G ! x: GrpPSL2, GrpPSL2Elt -> GrpPSL2`

If $x$ is a sequence $x = [a,b,c,d]$ of elements in the base ring of $G$, this function returns $\begin{pmatrix}a & b\\ c & d\end{pmatrix}$, provided this is an element of $G$. If $x$ is an integer the identity matrix is returned. If $x$ is a matrix, it is coerced into $G$ if possible.

### `Random(G, m): GrpPSL2, RngIntElt -> GrpPSL2Elt`

Returns a random element of the projective linear group $G$, with $m$ determining the size of the coefficients.

## Membership and Equality Testing

### `g eq h: GrpPSL2Elt, GrpPSL2Elt -> BoolElt`

For $g$ and $h$ elements of ${\operatorname{PSL}}_2({\mathbb{Z}})$, returns `true` if $g, h$ have compatible coefficient rings and if $g = h$, `false` otherwise. Since the group is projective, returns `true` if the matrices are equal up to a nonzero scalar multiple.

### `IsEquivalent(g, h, G): GrpPSL2Elt, GrpPSL2Elt, GrpPSL2 -> BoolElt`

For $g$ and $h$ elements of ${\operatorname{PSL}}_2({\mathbb{Z}})$, returns `true` if $g$ and $h$ are defined of the same field, and if $Gg = Gh$, i.e. if $gh^{-1}\in G$.

### `g in G: GrpPSL2Elt, GrpPSL2 -> BoolElt`

For $g$ an elements of ${\operatorname{PSL}}_2({\mathbb{Z}})$, returns `true` if $g$ is in the congruence subgroup $G$, `false` otherwise.

## Basic Functions

For a matrix $g$ in a congruence subgroup, and an integer $n$, returns $g^n$.

### `Eltseq(g): GrpPSL2Elt -> SeqEnum`

Returns the sequence of four numbers which are the entries of the matrix $g$.

### `g * h: GrpPSL2Elt, GrpPSL2Elt -> GrpPSL2Elt`

If $g$ and $h$ have the same parent then this returns their product.

### `g ^ n: GrpPSL2Elt, RngIntElt -> GrpPSL2Elt`

For a matrix $g$ and integer $n$ returns $g^n$.

### `Example: Creation CongruenceSubgroups (ex-baea46)`

Define congruence subgroups as in the following examples:

```magma
> // examples of defining matrix elements of congruence subgroups:
>
> G := PSL2(Integers());
> G![2,0,0,2];
[1 0]
[0 1]

> H := CongruenceSubgroup([2,3,6]);
> H![7,6,8,7];
[7 6]
[8 7]

```
