66.10 Standard Generators of Groups

An s-tuple of standard generators of a given group G is a vector (g1, g2, ¼, gs) of elements gi Î G satisfying certain conditions (depending on the isomorphism type of G) such that

1.
ág1, g2, ¼, gs ñ = G and
2.
the vector is unique up to automorphisms of G, i.e., for two vectors (g1, g2, ¼, gs) and (h1, h2, ¼, hs) of standard generators, the map gi ® hi extends to an automorphism of G.
For details about standard generators, see Wil96.

  • StandardGeneratorsInfo( isotype ) A

    When called with the group isomorphism type isotype, StandardGeneratorsInfo returns a list of records with at least one of the components script and description. Each such record defines standard generators of groups of isomorphism type isotype, the i-th record is referred to as the i-th set of standard generators for groups of type isotype. The value of script is a dense list of lists, each encoding a command that has one of the following forms.

    A definition [ i, n, k ] or [ i, n ]
    means to search for an element of order n, and to take its k-th power as candidate for the i-th standard generator (the default for k is 1),

    a relation [ i1, k1, i2, k2, ¼, im, km, n ] with m > 1
    means a check whether the element gi1k1 gi2k2 ¼gimkm has order n; if gj occurs then of course the j-th generator must have been defined before,

    a relation [ [ i1, i2, ¼, im ], slp , n ]
    means a check whether the result of the straight line program slp (see Straight Line Programs) applied to the candidates gi1, gi2, ¼, gim has order n, where the candidates gj for the j-th standard generators must have been defined before,

    a condition [ [ i1, k1, i2, k2, ¼, im, km ], f, v ]
    means a check whether the GAP function in the global list StandardGeneratorsFunctions (see StandardGeneratorsFunctions) that is followed by the list f of strings returns the value v when it is called with G and gi1k1 gi2k2 ¼gimkm.
    Optional components of the returned records are

    generators
    a string of names of the standard generators,

    description
    a string describing the script information in human readable form, in terms of the generators value,

    classnames
    a list of strings, the i-th entry being the name of the conjugacy class containing the i-th standard generator, according to the ATLAS character table of the group (see ClassNames), and

    ATLAS
    a boolean; true means that the standard generators coincide with those defined in Rob Wilson's ATLAS of Group Representations (see AGR), and false means that this property is not guaranteed.

    There is no default method for an arbitrary isomorphism type, since in general the definition of standard generators is not obvious.

    The function StandardGeneratorsOfGroup (see StandardGeneratorsOfGroup) can be used to find standard generators of a given group of isomorphism type isotype.

    The generators and description values, if not known, can be computed by HumanReadableDefinition (see HumanReadableDefinition).

    gap> StandardGeneratorsInfo( TableOfMarks( "L3(3)" ) );
    [ rec( generators := "a, b",
          description := "||a||=2, ||b||=3, ||C(b)||=9, ||ab||=13, ||ababb||=4",
          script := [ [ 1, 2 ], [ 2, 3 ], [ [ 2, 1 ], [ "||C(",, ")||" ], 9 ],
              [ 1, 1, 2, 1, 13 ], [ 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 4 ] ],
          ATLAS := true ) ]
    

  • HumanReadableDefinition( info ) F
  • ScriptFromString( string ) F

    Let info be a record that is valid as value of StandardGeneratorsInfo (see StandardGeneratorsInfo.stdgen). HumanReadableDefinition returns a string that describes the definition of standard generators given by the script component of info in human readable form. The names of the generators are taken from the generators component (default names "a", "b" etc. are computed if necessary), and the result is stored in the description component.

    ScriptFromString does the converse of HumanReadableDefinition, i.e., it takes a string string as returned by HumanReadableDefinition, and returns a corresponding script list.

    If ``condition'' lines occur in the script (see StandardGeneratorsInfo.stdgen) then the functions that occur must be contained in StandardGeneratorsFunctions (see StandardGeneratorsFunctions).

    gap> scr:= ScriptFromString( "||a||=2, ||b||=3, ||C(b)||=9, ||ab||=13, ||ababb||=4" );
    [ [ 1, 2 ], [ 2, 3 ], [ [ 2, 1 ], [ "||C(",, ")||" ], 9 ], [ 1, 1, 2, 1, 13 ], 
      [ 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 4 ] ]
    gap> info:= rec( script:= scr ); 
    rec( script := [ [ 1, 2 ], [ 2, 3 ], [ [ 2, 1 ], [ "||C(",, ")||" ], 9 ], 
          [ 1, 1, 2, 1, 13 ], [ 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 4 ] ] )
    gap> HumanReadableDefinition( info );
    "||a||=2, ||b||=3, ||C(b)||=9, ||ab||=13, ||ababb||=4"
    gap> info;
    rec( script := [ [ 1, 2 ], [ 2, 3 ], [ [ 2, 1 ], [ "||C(",, ")||" ], 9 ], 
          [ 1, 1, 2, 1, 13 ], [ 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 4 ] ], 
      generators := "a, b", 
      description := "||a||=2, ||b||=3, ||C(b)||=9, ||ab||=13, ||ababb||=4" )
    

  • StandardGeneratorsFunctions V

    StandardGeneratorsFunctions is a list of even length. At position 2i-1, a function of two arguments is stored, which are expected to be a group and a group element. At position 2i a list of strings is stored such that first inserting a generator name in all holes and then forming the concatenation yields a string that describes the function at the previous position; this string must contain the generator enclosed in round brackets ( and ).

    This list is used by the functions StandardGeneratorsInfo (see StandardGeneratorsInfo.stdgen), HumanReadableDefinition, and ScriptFromString (see HumanReadableDefinition). Note that the lists at even positions must be pairwise different.

    gap> StandardGeneratorsFunctions{ [ 1, 2 ] };
    [ function( G, g ) ... end, [ "||C(",, ")||" ] ]
    

  • IsStandardGeneratorsOfGroup( info, G, gens ) F

    Let info be a record that is valid as value of StandardGeneratorsInfo (see StandardGeneratorsInfo.stdgen), G a group, and gens a list of generators for G. In this case, IsStandardGeneratorsOfGroup returns true if gens satisfies the conditions of the script component of info, and false otherwise.

    Note that the result true means that gens is a list of standard generators for G only if G has the isomorphism type for which info describes standard generators.

  • StandardGeneratorsOfGroup( info, G[, randfunc] ) F

    Let info be a record that is valid as value of StandardGeneratorsInfo (see StandardGeneratorsInfo.stdgen), and G a group of the isomorphism type for which info describes standard generators. In this case, StandardGeneratorsOfGroup returns a list of standard generators (see Section Standard Generators of Groups) of G.

    The optional argument randfunc must be a function that returns an element of G when called with G; the default is PseudoRandom.

    In each call to StandardGeneratorsOfGroup, the script component of info is scanned line by line. randfunc is used to find an element of the prescribed order whenever a definition line is met, and for the relation and condition lines in the script list, the current generator candidates are checked; if a condition is not fulfilled, all candidates are thrown away, and the procedure starts again with the first line. When the conditions are fulfilled after processing the last line of the script list, the standard generators are returned.

    Note that if G has the wrong isomorphism type then StandardGeneratorsOfGroup returns a list of elements in G that satisfy the conditions of the script component of info if such elements exist, and does not terminate otherwise. In the former case, obviously the returned elements need not be standard generators of G.

    gap> a5:= AlternatingGroup( 5 );
    Alt( [ 1 .. 5 ] )
    gap> info:= StandardGeneratorsInfo( TableOfMarks( "A5" ) )[1];
    rec( generators := "a, b", description := "||a||=2, ||b||=3, ||ab||=5", 
      script := [ [ 1, 2 ], [ 2, 3 ], [ 1, 1, 2, 1, 5 ] ], ATLAS := true )
    gap> IsStandardGeneratorsOfGroup( info, a5, [ (1,3)(2,4), (3,4,5) ] );
    true
    gap> IsStandardGeneratorsOfGroup( info, a5, [ (1,3)(2,4), (1,2,3) ] );
    false
    gap> s5:= SymmetricGroup( 5 );;
    gap> RepresentativeAction( s5, [ (1,3)(2,4), (3,4,5) ], 
    >        StandardGeneratorsOfGroup( info, a5 ), OnPairs ) <> fail;
    true
    

    [Top] [Previous] [Up] [Next] [Index]

    GAP 4 manual
    February 2000