> < ^ From:

< ^ Subject:

Dear GAP Forum

Ahmad Erfanian wrote:

>

> I would like to produce elements of the free square product of alternating

> groups for example A-5 * A-5. I will be more grateful if someone let me know

> that how I can define this group and those elements (with special length) in

> GAP.

It is not difficult to define a free product of two finitely presented groups, since < X | R > * < Y | S > = < X union Y | R union S >.

Here are a couple of GAP4 functions. The first FPAlt(n) returns the

alternating group A_n as an FP-group for n>=3.

The second, FreeProductFpGroups(G,H) returns a list L, where L[1] is

the free product of the FpGroups G and H returned as an FpGroup, and

L[2], L[3] are the natural insertion homomorphisms G->L[1] and H->L[1].

Using these homomorphisms you can construct elements of G*H from those

of G and H, and you can loop over G and H if you want to form all

elements of a given length in the free factors.

I cannot quite imagine what you will be able to do these groups and

elements apart from defining them, but perhaps that will become clearer

later! It would, for example, be possible to write arbitrary words

in the generators of G*H into a normal form by constructing a

confluent rewriting system for G*H.

Derek Holt.

FPAlt := function(n) #Alternating group A_n as a FP-group, n>=3. local F, FGG, R, i, j; F := FreeGroup(n-2); FGG := GeneratorsOfGroup(F); R := []; Add(R,FGG[1]^3); for i in [2..n-2] do Add(R,FGG[i]^2); od; for i in [1..n-3] do Add(R,(FGG[i]*FGG[i+1])^3); od; for i in [1..n-4] do for j in [i+2..n-2] do Add(R,(FGG[i]*FGG[j])^2); od; od; return F/R; end;

FreeProductOfFpGroups := function(G,H)

#G and H should be FP-groups - form free product.

#Returns a list containing the free product F and the insertion

#maps G->F and H->F.

local FG,FH,FGG,FGH,GG,GH,m,n,F,GF,FGtoF,FHtoF,RG,RH,RQ,Q,GQ,GtoQ,HtoQ;

FG := FreeGroupOfFpGroup(G);

FH := FreeGroupOfFpGroup(H);

GG := GeneratorsOfGroup(G);

GH := GeneratorsOfGroup(H);

FGG := FreeGeneratorsOfFpGroup(G);

FGH := FreeGeneratorsOfFpGroup(H);

m := Length(FGG);

n := Length(FGH);

F := FreeGroup(m + n);

GF := GeneratorsOfGroup(F);

FGtoF := GroupHomomorphismByImages(FG,F,FGG,GF{[1..m]});

FHtoF := GroupHomomorphismByImages(FH,F,FGH,GF{[m+1..m+n]});

RG := RelatorsOfFpGroup(G);

RH := RelatorsOfFpGroup(H);

RQ := Concatenation( List(RG,x->x^FGtoF), List(RH,x->x^FHtoF) );

Q := F/RQ;

GQ := GeneratorsOfGroup(Q);

GtoQ := GroupHomomorphismByImagesNC(G,Q,GG,GQ{[1..m]});

HtoQ := GroupHomomorphismByImagesNC(H,Q,GH,GQ{[m+1..m+n]});

return [Q,GtoQ,HtoQ];

end;

Miles-Receive-Header: reply

> < [top]