66.11 Accessing Subgroups via Tables of Marks

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
    February 2000