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.
V2.28, 13 July 2023