# Hyperbolic Groups

A hyperbolic reflection group is a group generated by reflections in hyperbolic space. A Coxeter group is called *hyperbolic* if it is infinite, nonaffine, and it has a representation as a discrete, properly acting, hyperbolic reflection group whose Tits’ cone consists entirely of vectors with negative norm (see [[Bourbaki, 1968](../../references.md#cite-bourbakilie)] for more details). A hyperbolic reflection group is *compact hyperbolic* if it is hyperbolic with a compact fundamental region.

Every infinite nonaffine Coxeter group of rank 3 is hyperbolic. There are only 72 hyperbolic groups of rank larger than 3 which, for convenience, are numbered from 1 to 72. The numbering is essentially arbitrary.

## `IsCoxeterHyperbolic(M): AlgMatElt -> BoolElt`

## `IsCoxeterCompactHyperbolic(M): AlgMatElt -> BoolElt`

Returns `true` if, and only if, the matrix $M$ is the Coxeter matrix of a (compact) hyperbolic Coxeter group.

## `IsCoxeterHyperbolic(G): GrphUnd -> BoolElt`

## `IsCoxeterCompactHyperbolic(G): GrphUnd -> BoolElt`

Returns `true` if, and only if, the graph $G$ is the Coxeter graph of a (compact) hyperbolic Coxeter group.

## `HyperbolicCoxeterMatrix(i): RngIntElt -> AlgMatElt`

The Coxeter matrix of the $i$th hyperbolic Coxeter group of rank larger than 3.

## `HyperbolicCoxeterGraph(i): RngIntElt -> GrphUnd`

The Coxeter graph of the $i$th hyperbolic Coxeter group of rank larger than 3.

## `Example: Hyperbolic (ex-4b6e52)`

```magma
> for i in [1..72] do
>   if IsCoxeterCompactHyperbolic(HyperbolicCoxeterMatrix(i)) then
>     printf "%o, ", i;
>   end if;
> end for;
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,

```
