> < ^ From:

^ Subject:

Recently I had a correspondence concerning the PresentationNormalClosure

function which might be of interest for other GAP users, too.

Warren Dicks from Barcelona wrote:

Can you tell me to whom I can write to ask the following question?

How can I find expressions for the generators of

PresentationNormalClosureRrs(G,H) in terms of the original

generators of G?

I answered:

Unfortunately, the program does not return a list of these expressions

though it definitely needs them during the computation. In fact, it

establishes an intermediate list of the definitions of the so called

"primary subgroup generators" (see for the manual) in the resulting

presentation.

I think that you can get access to this list by just including one

additional statement in the function "PresentationAugmentedCosetTable"

in the GAP library file "fpsgpres.g". I am not enough familiar any more

with the code to guarantee that this works properly, but I think it is

worth while to have a try. So I would recommend thatyou to do the

following.

(1) Extract a copy of the function "PresentationAugmentedCosetTable"

from the GAP library file "fpsgpres.g" and write it into a local

file "pact", say.

(2) Insert in this file the statement

T.definitions := aug.primaryGeneratorWords;immediately before the return statement at the end.

(3) Start your GAP session with the commands

ReadLib( "fpgrp" ); ReadLib( "fptietze" ); ReadLib( "fpsgpres" ); Read( "pact" );to load the GAP library "fpsgpres.g" and then to overwrite the

original version of the above function by the altered one.

(4) Then start your computation. After calling the command

P := PresentationNormalClosureRrs( G, H );you should end up with a presentation record which has an additional

component P.definitions which hopefully contains the definitions of

the primary subgroup generators as words in the original generators

of G. Note that you can use the "DecodeTree" command to reduce the

list of all subgroup generators to the list of primary subgroup

generators.

Warren Dicks replied:

Thank you for your message. Yes, it works exactly as you say, so I

will modify the file fpsgpres .Would it be too much trouble to ask what code I should add so that

I can trace the generators for the unTreeDecoded presentation, and

and the Simplifyed presentation? TreeDecode, in my case, gives one more

relation than Simplify does, and many many applications of the simplifying

procedure don't seem to get rid of it.

I answered:

As for your question for words for the unTreeDecoded generators:

There is a good reason not to provide these words: They tend to be

of enormous length, at least in general. Of course, this may be

different for your concrete examples, hence you should have a look

at them. Using your modified version of "fpsgpres,g", you may extend

the list "P.definitions" to a list of words for all generators using

the following (hopefully correct) code.

P := PresentationNormalClosureRrs( G, H ); numgens := Length( P.generators ); defs := P.definitions; numprim := Length( defs ); tree := P.tree; treelength := Length( tree[1] ); defs2 := Copy( defs ); for i in [ numprim + 1 .. treelength ] do j := tree[1][i]; if j > 0 then left := defs2[j]; else left := defs2[-j]^-1; fi; j := tree[2][i]; if j > 0 then right := defs2[j]; else right := defs2[-j]^-1; fi; defs2[i] := left * right; od; for i in [ numprim + 1 .. numgens ] do defs[i] := defs2[tree[5][i]]; od;

As for your question for words for the generators in an simplified

presentation: The "SimplifyPresentation" command does not trace the

substitutions it performs.

Volkmar Felsch, Aachen

> < [top]