%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Chapter{Libraries and examples of pcp-groups} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Libraries of various types of polycyclic groups} There are the following generic pcp-groups available. \>AbelianPcpGroup( <n>, <rels> ) constructs the abelian group on <n> generators such that generator $i$ has order $rels[i]$. If this order is infinite, then $rels[i]$ should be either unbound or 0. \>DihedralPcpGroup( <n> ) constructs the dihedral group of order <n>. If <n> is an odd integer, then 'fail' is returned. If <n> is zero or not an integer, then the infinite dihedral group is returned. \>UnitriangularPcpGroup( <n>, <c> ) returns a pcp-group isomorphic to the group of upper triangular in $GL(n, R)$ where $R = \Z$ if $c = 0$ and $R = \F_p$ if $c = p$. The natural unitriangular matrix representation of the returned pcp-group $G$ can be obtained as $G!.isomorphism$. \>SubgroupUnitriangularPcpGroup( <mats> ) <mats> should be a list of upper unitriangular $n \times n$ matrices over $\Z$ or over $\F_p$. This function returns the subgroup of the corresponding 'UnitriangularPcpGroup' generated by the matrices in <mats>. \>InfiniteMetacyclicPcpGroup( <n>, <m>, <r> ) Infinite metacyclic groups are classified in \cite{B-K00}. Every infinite metacyclic group $G$ is isomorphic to a finitely presented group $G(m,n,r)$ with two generators $a$ and $b$ and relations of the form $a^n = b^m = 1$ and $[a,b] = a^{1-r}$, where $m,n,r$ are three non-negative integers with $mn=0$ and $r$ relatively prime to $m$. If $r \equiv -1$ mod $m$ then $n$ is even, and if $r \equiv 1$ mod $m$ then $m=0$. Also $m$ and $n$ must not be $1$. Moreover, $G(m,n,r)\cong G(m',n',s)$ if and only if $m=m'$, $n=n'$, and either $r \equiv s$ or $r \equiv s^{-1}$ mod $m$. This function returns the metacyclic group with parameters <n>, <m> and <r> as a pcp-group with the pc-presentation $\langle x,y | x^n, y^m, y^x = y^r\rangle$. This presentation is easily transformed into the one above via the mapping $x \mapsto b^{-1}, y \mapsto a$. \>HeisenbergPcpGroup( <n> ) returns the Heisenberg group on 2*<n> generators as pcp-group. This gives a group of Hirsch length 3*<n>. \>MaximalOrderByUnitsPcpGroup( <f> ) takes as input a normed, irreducible polynomial over the integers. Thus <f> defines a field extension <F> over the rationals. This function returns the split extension of the maximal order <O> of <F> by the unit group <U> of <O>, where <U> acts by right multiplication on <O>. \>BurdeGrunewaldPcpGroup( <s>, <t> ) returns a nilpotent group of Hirsch length 11 which has been constructed by Burde und Grunewald. If <s> is not 0, then this group has no faithful 12-dimensional linear representation. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Some asorted example groups} The functions in this section provide some more example groups to play with. They come with no further description and their investigation is left to the interested user. \>ExampleOfMetabelianPcpGroup( <a>, <k> ) returns an example of a metabelian group. The input parameters must be two positive integers greater than 1. \>ExamplesOfSomePcpGroups( <n> ) this function takes values <n> in 1 up to 16 and returns for each input an example of a pcp-group. The groups in this example list have been used as test groups for the functions in this package.