Let G be an infinite polycyclic group. It is well-known that there exist a normal T-group N and a T-group C such that H=CN is normal of finite index in G and H/N is free abelian of finite rank Seg83.
In this chapter we present an effective collection method for an infinite polycyclic group which is given by a polycyclic presentation with respect to a polycyclic sequence P going through the normal series 1 leN leH leG.
This polycyclic sequence P must be chosen as follows. Let (n1,...,nl) be a Mal'cev basis of N and let (c1N,...,ck N) be a basis for the free abelian group CN/N. Then (c1,...,ck,n1,...,nl) is a polycyclic sequence for H=CN. Further there exists f1,..., fj inG such that (f1 H, ..., fj H) is a polycyclic sequence for G/H. Now we set
P = (f1,...,fj, c1, ..., ck, n1, ..., nl )
MalcevCollectorConstruction([
G,
inds,
C,
CC,
N,
NN] )
returns a Mal'cev collector for the infinite polycyclically presented group G. The group G must be given with respect to a polycyclic sequence (g1,...,gr, cr+1, ..., cr+s, nr+s+1, ..., nr+s+t) with the following properties:
GUARANA.Tr_n_O1(
n )
GUARANA.Tr_n_O2(
n )
for a positive integer n these functions construct polycyclically presented groups that can be used to test the Mal'cev collector. They return a list which can be used as input for the function MalcevCollectorConstruction. The constructed groups are isomorphic to triangular matrix groups of dimension n over the ring O1, respectively O2. The ring O1, respectively O2, is the maximal order of Q(thetai) where theta1, respectively theta2, is a zero of the polynomial p1(x) = x2-3, respectively p2(x)=x3 -x2 +4.
GUARANA.F_2c_Aut1(
c )
GUARANA.F_3c_Aut2(
c )
for a positive integer c these functions construct polycyclically presented groups that can be used to test the Mal'cev collector. They return a list which can be used as input for the function MalcevCollectorConstruction. These groups are constructed as follows: Let Fn,c be the free nilpotent of class c group on n generators. An automorphism varphi of the free group Fn naturally induces an automorphism barvarphi of Fn,c. We use the automorphism varphi1 of F2 which maps f1 to f2-1 and f2 to f1 f23 and the automorphism varphi2 of F3 mapping f1 to f2-1, f2 to f3-1 and f3 to f2-3f1-1 for our construction. The returned group F_2c_Aut1, respectively F_3c_Aut2, is isomorphic to the semidirect product langlevarphi1 rangleltimesF2,c, respectively langlevarphi2 rangleltimesF3,c.
MalcevGElementByExponents(
malCol,
exps )
For a Mal'cev collector malCol of a group G and an exponent vector exps with integer entries, this functions returns the group element of G, which has exponents exps with respect to the polycyclic sequence underlying malCol.
Random(
malCol,
range )
For a Mal'cev collector malCol this function returns the output of MalcevGElementByExponents( malCol, exps ), where exps is an exponent vector whose entries are randomly chosen integers between -range and range.
g *
h
returns the product of group elements which are defined with respect to a Mal'cev collector by the the function MalcevGElementByExponents.
GUARANA.AverageRuntimeCollec(
malCol,
ranges,
no )
for a Mal'cev collector malCol, a list of positive integers ranges and a positive integer no this function computes for each number r in ranges the average runtime of no multiplications of two random elements of malCol of range r, as generated by Random( malCol, r ).
gap> ll := GUARANA.Tr_n_O1( 3 ); [ Pcp-group with orders [ 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ [ 1 .. 3 ], [ 4 .. 6 ], [ 7 .. 12 ] ], Pcp-group with orders [ 0, 0, 0, 0, 0, 0 ], Pcp-group with orders [ 0, 0, 0, 0, 0, 0 ], Pcp-group with orders [ 0, 0, 0 ], Pcp-group with orders [ 0, 0, 0 ] ] gap> malCol := MalcevCollectorConstruction( ll ); <<Malcev collector>> F : [ 2, 2, 2 ] C : <<Malcev object of dimension 3>> N : <<Malcev object of dimension 6>> gap> exps_g := [ 1, 1, 1, -3, -2, 1, -2, -1, 0, 3, -1,3 ]; [ 1, 1, 1, -3, -2, 1, -2, -1, 0, 3, -1, 3 ] gap> exps_h := [ 1, 0, 1, -1, 0, 2, 0, 4, -1, 5, 9,-5 ]; [ 1, 0, 1, -1, 0, 2, 0, 4, -1, 5, 9, -5 ] gap> g := MalcevGElementByExponents( malCol, exps_g ); [ 1, 1, 1, -3, -2, 1, -2, -1, 0, 3, -1, 3 ] gap> h := MalcevGElementByExponents( malCol, exps_h ); [ 1, 0, 1, -1, 0, 2, 0, 4, -1, 5, 9, -5 ] gap> k := g*h; [ 0, 1, 0, -4, -2, 3, 1, 4, 35, -16, -404, 232 ] gap> Random( malCol, 10 ); [ 0, 0, 1, 9, 5, 5, 2, -2, 7, -10, 7, -6 ]
[Up] [Previous] [Next] [Index]
Example manual