> < ^ From:

< ^ Subject:

Tim Hsu writes:

I've been trying to set up a calculation using AugmentedCosetTableRrs.

Now, when you have the statement

aug := AugmentedCosetTableRrs(G,ct,2,"_q");(ct is the coset table for a subgroup S in G),

aug.primaryGeneratorWords contains descriptions of the primary

generators of S in terms of words in the generators of G. According

to the GAP manual, aug.tree, (in some form) contains a description of

the secondary generators of S in terms of the primary relators, so in

theory, you should be able to obtain the secondary generators of S in

terms of words in G. Could someone tell me how to get this from the

tree?

Whenever you call the command

aug := AugmentedCosetTableRrs( G, ct, 2, string );

it will return a record with a component "aug.tree" which is a list

of length 5. (Note that the structure represented by that list is not

a tree in mathematical sense; the name has historical reasons.) The

entries of this list are

tree[1] = tree1 (a list of length treelength),

tree[2] = tree2 (a list of length treelength),

tree[3] = treelength = total number of all generators,

tree[4] = numgens = number of primary generators,

tree[5] = type = 2.

The two lists "tree1" and "tree2" are in parallel to the list "gen",

say, of all generators which is ordered such that gen[1] to gen[numgens]

are the primary generators whereas gen[numgens+1] to gen[treelength]

are the secondary generators.

Each of the secondary generators has originally been defined as a

product of two preceding generators (with respect to that list) or

their inverses. The purpose of the tree is to save these definitions.

For numgens < i <= treelength, we have

gen[i] = factor(tree1[i]) * factor(tree2[i])

where

factor(j) = gen[j] for j > 0, factor(j) = gen[-j]^-1 for j < 0.

You may use the tree to recursively express each secondary generator

as a word in the preceding ones and finally in the primary generators,

but I would like to warn you of the fact that the length of these words

tends to become very huge so that they soon may get unhandable.

My next question is, do RewriteSubgroupRelators,

PresentationAugmentedCosetTable, TzGo, or FpGroupPresentation change

the ordering of the generators in any way, other than eliminating

generators? Thanks very much.

I think that none of these commands will reorder the list of subgroup

generators by swapping any pair of generators. This answer is to the

best of my recollection, but as it is long ago that I wrote the programs

I would not like to swear on it. If you want to be absolutely sure,

please check the code which for such purposes is given in full source.

Moreover, I would not like to guarantee this for all future. We may at

some time have reasons to change this. This is, in fact, the reason

why no guarantee of this kind has been made in the manual.

What frequently happens in the present program, is that the subgroup

generators are internally renumbered after elimination processes in order

to get rid of the gaps in the numbering. The names of the generators

are not changed by this process.

Example:

gap> F := FreeGroup( "a", "b" );; gap> a := F.1;; b := F.2;; gap> G := F / [ a^2, b^4, (a*b)^7, Comm(a,b)^5, (a*b*a*b^2*a*b^-1)^3 ];; gap> H := Subgroup ( G, [ G.1^G.2, G.2^(G.1*G.2^-1*G.1) ] );; gap> T := PresentationSubgroupRrs( G, H ); << presentation with 5 gens and 12 rels of total length 64 >> gap> TzPrintGenerators( T ); #I 1. _x1 11 occurrences involution #I 2. _x2 12 occurrences involution #I 3. _x3 16 occurrences involution #I 4. _x4 11 occurrences #I 5. _x5 14 occurrences involution gap> TzGo( T ); #I there are 3 generators and 8 relators of total length 94 gap> TzPrintGenerators( T ); #I 1. _x2 26 occurrences involution #I 2. _x4 43 occurrences #I 3. _x5 25 occurrences involution

If you have questions about still more technical details, please feel

free to ask, but perhaps we should then discuss this privately, not

in the forum.

Volkmar Felsch (Aachen)

> < [top]