Let tom be the table of marks of the group G,
and assume that tom has access to G via the UnderlyingGroup value
(see UnderlyingGroup).
Then it makes sense to use tom and its ordering of conjugacy classes of
subgroups of G for storing information for constructing representatives
of these classes.
The group G is in general not sufficient for this,
tom needs more information;
this is available if and only if the IsTableOfMarksWithGens value of
tom is true (see IsTableOfMarksWithGens).
In this case, RepresentativeTom (see RepresentativeTom) can be used
to get a subgroup of the i-th class, for all i.
GAP provides two different possibilities to store generators of the
representatives of classes of subgroups.
The first is implemented by the attribute GeneratorsSubgroupsTom
(see GeneratorsSubgroupsTom), which uses explicit generators.
The second, more general, possibility is implemented by the attributes
StraightLineProgramsTom (see StraightLineProgramsTom)
and StandardGeneratorsInfo (see StandardGeneratorsInfo).
The StraightLineProgramsTom value encodes the generators as
straight line programs (see Straight Line Programs) that evaluate to
the generators in question when applied to standard generators of G.
This means that on the one hand, standard generators of G must be known
in order to use StraightLineProgramsTom.
On the other hand, the straight line programs allow one to compute easily
generators not only of a subgroup U of G but also generators of the
image of U in any representation of G, provided that one knows
standard generators of the image of G under this representation
(see RepresentativeTomByGenerators for details and an example).
GeneratorsSubgroupsTom( tom ) A
Let tom be a table of marks with IsTableOfMarksWithGens value true.
Then GeneratorsSubgroupsTom returns a list of length two,
the first entry being a list l of elements of the group stored as
UnderlyingGroup value of tom,
the second entry being a list that contains at position i a list of
positions in l of generators of a representative of a subgroup in class
i.
The GeneratorsSubgroupsTom value is known for all tables of marks that
have been computed with TableOfMarks (see TableOfMarks) from a group,
and there is a method to compute the value for a table of marks that
admits RepresentativeTom (see RepresentativeTom).
StraightLineProgramsTom( tom ) A
For a table of marks tom with IsTableOfMarksWithGens value true,
StraightLineProgramsTom returns a list that contains at position i
either a list of straight line programs or a list of straight line
programs (see Straight Line Programs), encoding the generators of;
a representative of the i-th conjugacy class of subgroups of
UnderlyingGroup( tom );
in the former case, each straight line program returns a generator,
in the latter case, the program returns the list of generators.
There is no default method to compute the StraightLineProgramsTom value
of a table of marks if they are not yet stored.
The value is known for all tables of marks that belong to the
GAP library of tables of marks (see The Library of Tables of Marks).
IsTableOfMarksWithGens( tom ) F
This filter shall express the union of the filters
IsTableOfMarks and HasStraightLineProgramsTom and
IsTableOfMarks and HasGeneratorsSubgroupsTom.
If a table of marks tom has this filter set then tom can be asked to
compute information that is in general not uniquely determined by a table
of marks,
for example the positions of derived subgroups or normalizers of
subgroups (see DerivedSubgroupTom, NormalizerTom).
gap> a5:= TableOfMarks( "A5" );; IsTableOfMarksWithGens( a5 ); true gap> HasGeneratorsSubgroupsTom( a5 ); HasStraightLineProgramsTom( a5 ); false true gap> alt5:= TableOfMarks( AlternatingGroup( 5 ) );; gap> IsTableOfMarksWithGens( alt5 ); true gap> HasGeneratorsSubgroupsTom( alt5 ); HasStraightLineProgramsTom( alt5 ); true false gap> progs:= StraightLineProgramsTom( a5 );; gap> List( progs, Length ); [ 1, 1, 1, 2, 1, 2, 2, 2, 2 ] gap> OrdersTom( a5 ); [ 1, 2, 3, 4, 5, 6, 10, 12, 60 ] gap> IsCyclicTom( a5, 4 ); false gap> progs[4][1]; <straight line program> gap> Display( progs[4][1] ); # first generator of an el. ab group of order 4 # input: r:= [ g1, g2 ]; # program: r[3]:= r[2]*r[1]; r[4]:= r[3]*r[2]^-1*r[1]*r[3]*r[2]^-1*r[1]*r[2]; # return value: r[4] gap> x:= [ [ Z(2)^0, 0*Z(2) ], [ Z(2^2), Z(2)^0 ] ];; gap> y:= [ [ Z(2^2), Z(2)^0 ], [ 0*Z(2), Z(2^2)^2 ] ];; gap> res1:= ResultOfStraightLineProgram( progs[4][1], [ x, y ] ); [ [ Z(2)^0, 0*Z(2) ], [ Z(2^2)^2, Z(2)^0 ] ] gap> res2:= ResultOfStraightLineProgram( progs[4][2], [ x, y ] ); [ [ Z(2)^0, 0*Z(2) ], [ Z(2^2), Z(2)^0 ] ] gap> w:= y*x;; gap> res1 = w*y^-1*x*w*y^-1*x*y; true gap> subgrp:= Group( res1, res2 );; Size( subgrp ); IsCyclic( subgrp ); 4 false
RepresentativeTom( tom, sub ) O
RepresentativeTomByGenerators( tom, sub, gens ) O
RepresentativeTomByGeneratorsNC( tom, sub, group ) O
Let tom be a table of marks with IsTableOfMarksWithGens value true
(see IsTableOfMarksWithGens), and sub a positive integer.
RepresentativeTom returns a representative of the sub-th conjugacy
class of subgroups of tom.
RepresentativeTomByGenerators and RepresentativeTomByGeneratorsNC
return a representative of the sub-th conjugacy class of subgroups of
tom, as a subgroup of the group generated by gens.
This means that the standard generators of tom are replaced by gens.
RepresentativeTomByGenerators checks whether mapping the standard
generators of tom to gens extends to a group isomorphism,
and returns fail if not.
RepresentativeTomByGeneratorsNC omits all checks.
So RepresentativeTomByGenerators is thought mainly for debugging
purposes;
note that when several representatives are constructed, it is cheaper to
construct (and check) the isomorphism once, and to map the groups
returned by RepresentativeTom under this isomorphism.
The idea behind RepresentativeTomByGeneratorsNC, however, is to avoid
the overhead of using isomorphisms when gens are known to be standard
generators.
gap> RepresentativeTom( a5, 4 ); Group([ (2,3)(4,5), (2,4)(3,5) ])
StandardGeneratorsInfo( tom ) A
For a table of marks tom,
a stored value of StandardGeneratorsInfo equals the value of this
attribute for the isomorphism type (see IsIsomorphismTypeOfGroup)
of the underlying group (see UnderlyingGroup) of tom,
cf. Section Standard Generators of Groups.
In this case, the GeneratorsOfGroup value of the underlying group G
of tom is assumed to be in fact a list of standard generators for G;
So one should be careful when setting the StandardGeneratorsInfo value
by hand.
There is no default method to compute the StandardGeneratorsInfo value
of a table of marks if it is not yet stored.
gap> std:= StandardGeneratorsInfo( a5 );
[ rec( generators := "a, b", description := "||a||=2, ||b||=3, ||ab||=5",
script := [ [ 1, 2 ], [ 2, 3 ], [ 1, 1, 2, 1, 5 ] ], ATLAS := true ) ]
gap> # Now find standard generators of an isomorphic group.
gap> g:= SL(2,4);;
gap> repeat
> x:= PseudoRandom( g );
> until Order( x ) = 2;
gap> repeat
> y:= PseudoRandom( g );
> until Order( y ) = 3 and Order( x*y ) = 5;
gap> # Compute a representative w.r.t. these generators.
gap> RepresentativeTomByGenerators( a5, 4, [ x, y ] );
Group([ [ [ Z(2^2), Z(2^2)^2 ], [ Z(2^2)^2, Z(2^2) ] ],
[ [ 0*Z(2), Z(2)^0 ], [ Z(2)^0, 0*Z(2) ] ] ])
gap> # Show that the new generators are really good.
gap> grp:= UnderlyingGroup( a5 );;
gap> iso:= GroupGeneralMappingByImages( grp, g,
> GeneratorsOfGroup( grp ), [ x, y ] );;
gap> IsGroupHomomorphism( iso );
true
gap> IsBijective( iso );
true
[Top] [Previous] [Up] [Next] [Index]
GAP 4 manual