# Hirsch Number and Pr{üfer Rank

## `HasFiniteRank(G): GrpMat -> BoolElt`

This function takes as input a finitely generated matrix group $G$ defined over $Q$ or a number field, and determines if it has finite Hirsch number and Prüfer rank. If so, it returns `true`, else `false`.

## `HirschNumber(G): GrpMat -> RngIntElt`

This function takes as input a finitely generated finite rank matrix group $G$ defined over $Q$ or a number field, and returns its Hirsch number.

## `HasFiniteIndex(G, H): GrpMat, GrpMat -> BoolElt`

If the subgroup $H$ has finite index in the soluble-by-finite matrix group $G$ defined over $Q$ or a number field, then this function returns `true`, else it returns `false`. It decides this by checking whether $G$ and $H$ have identical Hirsch numbers.

## `PrueferRankBound(G): GrpMat -> BoolElt`

This function takes as input a finitely generated finite rank matrix group $G$ defined over $Q$ or a number field, and returns an upper bound to its Prüfer rank.
