> < ^ From:

< ^ Subject:

Dear GAP forum,

dear Dr Abdollahi,

in your query to the Gap Forum you ask for a GAP function which

expands the expression (x_1...x_n)^k into a product of left-normed

commutators. Currently there is not function in GAP 4 for that

purpose.

The classic result for expanding (x_1...x_n)^k into a product of

commutators is the Hall-Petrescu formula. One could write a simple

programme based on Phillip Hall's collection (collection to the left)

process to expand that expression. However, the commutators appearing

in collection to the left are not left-normed, for example,

[x_2,x_1,x_1,[x_2,x_1]] might appear.

There is a different approach along the following lines. Note that

this approach will give you the expansion of (x_1...x_n)^k modulo a

certain weight and the left-normed commutators will not involve

inverses of generators.

The Nilpotent Quotient Programme can compute a bases consisting of

left-normed commutators for the free nilpotent group of rank n and

class c for reasonable values of k and c. In that group it is

possible to calculate the normal form of (x_1...x_n)^k for any k and

read of the left-normed commutators in that normal form.

The following example uses the packages `polycyclic' and `nq' which

are available from the following web sites:

http://www.mathematik.tu-darmstadt.de/~nickel/polycyclic/

http://www.mathematik.tu-darmstadt.de/~nickel/nq.html

It also needs code to recover the definition of each generator in

terms of left-normed commutators which is also available from

http://www.mathematik.tu-darmstadt.de/~nickel/nq.html

For any any questions you are welcome to contact me.

gap> RequirePackage("nq"); true gap> Read("recoverdef.g"); gap> G := NilpotentQuotient( FreeGroup(3), 4 ); Pcp-group with orders [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] gap> w := (G.1*G.2*G.3)^2; g1^2*g2^2*g3^2*g4*g5*g6*g8*g10^3*g11*g12^-2*g14*g19^-2*g20^2*g21^2*g23^2*g 26^-6*g27^-6*g28^4*g30^5 gap> defs := RecoverDefinitions( Collector(G) ); [ ,,, [ 2, 1 ], [ 3, 1 ], [ 3, 2 ], [ 4, 1 ], [ 4, 2 ], [ 5, 1 ], [ 5, 2 ], [ 5, 3 ], [ 6, 1 ], [ 6, 2 ], [ 6, 3 ], [ 7, 1 ], [ 7, 2 ], [ 8, 2 ], [ 9, 1 ], [ 9, 2 ], [ 10, 1 ], [ 10, 2 ], [ 9, 3 ], [ 11, 2 ], [ 11, 3 ], [ 12, 1 ], [ 12, 2 ], [ 12, 3 ], [ 13, 1 ], [ 13, 2 ], [ 14, 1 ], [ 13, 3 ], [ 14, 3 ] ] gap> Exponents( w ); [ 2, 2, 2, 1, 1, 1, 0, 1, 0, 3, 1, -2, 0, 1, 0, 0, 0, 0, -2, 2, 2, 0, 2, 0, 0, -6, -6, 4, 0, 5, 0, 0 ] gap> Length( last ); 32 gap> List( [1..32], g->TraceBackDefinition( defs, g ) ); [ [ 1 ], [ 2 ], [ 3 ], [ 2, 1 ], [ 3, 1 ], [ 3, 2 ], [ 2, 1, 1 ], [ 2, 1, 2 ], [ 3, 1, 1 ], [ 3, 1, 2 ], [ 3, 1, 3 ], [ 3, 2, 1 ], [ 3, 2, 2 ], [ 3, 2, 3 ], [ 2, 1, 1, 1 ], [ 2, 1, 1, 2 ], [ 2, 1, 2, 2 ], [ 3, 1, 1, 1 ], [ 3, 1, 1, 2 ], [ 3, 1, 2, 1 ], [ 3, 1, 2, 2 ], [ 3, 1, 1, 3 ], [ 3, 1, 3, 2 ], [ 3, 1, 3, 3 ], [ 3, 2, 1, 1 ], [ 3, 2, 1, 2 ], [ 3, 2, 1, 3 ], [ 3, 2, 2, 1 ], [ 3, 2, 2, 2 ], [ 3, 2, 3, 1 ], [ 3, 2, 2, 3 ], [ 3, 2, 3, 3 ] ] gap>

Now the exponents of w correspond to the left-normed commutators, e.g., the commutator

[3,2,3,1] has the exponent 5.

I hope this is useful to you. If you have further questions, you are welcome to

contact me.

With kind regards,

Werner Nickel.

-- Dr (AUS) Werner Nickel Mathematics with Computer Science Room: S2 15/423 Fachbereich Mathematik, AG 2 Tel: +49 6151 163487 TU Darmstadt Fax: +49 6151 166535 Schlossgartenstr. 7 Email: nickel@mathematik.tu-darmstadt.de D-64289 Darmstadt --

> < [top]