[Up] [Next] [Index]

1 Supportive functions for groups

Sections

  1. Predefined groups
  2. Operation tables for groups
  3. Group endomorphisms
  4. Group automorphisms
  5. Inner automorphisms of a group
  6. Isomorphic groups
  7. Subgroups of a group
  8. Normal subgroups generated by a single element
  9. Invariant subgroups
  10. Coset representatives
  11. Scott length
  12. Other useful functions for groups

In order to support nearring calculations, a few functions for groups had to be added to the standard GAP group library functions.

The functions described here can be found in the source files grpend.g? and grpsupp.g?

1.1 Predefined groups

All groups of order 2 to 32 are predefined. They can be accessed by variables of the kind GTWo_n where o defines the order of the group and n the number of the group of order o as they appear in thomaswood80:GT . For example, GTW16_6 defines the group of Thomas -- Wood type 16/6, which is actually D4 ×C2.

Alternatively, these groups can be accessed via the function

  • TWGroup( o, n )

    with o and n as above. In addition, all these groups are stored in the list ttGroupList.

    Conversely, for any group G of order at most 32,

  • IdTWGroup( G )

    returns a pair [o,n], meaning that G is isomorphic to the group o/n.

        gap> G := GTW6_2;               
        6/2
        gap> H := TWGroup( 4, 2 );
        4/2
        gap> D := DirectProduct( G, H );
        Group([ (1,2), (1,2,3), (4,5), (6,7) ])
        gap> IdTWGroup( D );
        [ 24, 4 ]
        gap> GroupList;
        [ 2/1, 3/1, 4/1, 4/2, 5/1, 6/1, 6/2, 7/1, 8/1, 8/2, 8/3, 8/4, 8/5, 
          9/1, 9/2, 10/1, 10/2, 11/1, 12/1, 12/2, 12/3, 12/4, 12/5, 13/1, 
          14/1, 14/2, 15/1, 16/1, 16/2, 16/3, 16/4, 16/5, 16/6, 16/7, 16/8, 
          16/9, 16/10, 16/11, 16/12, 16/13, 16/14, 17/1, 18/1, 18/2, 18/3, 
          18/4, 18/5, 19/1, 20/1, 20/2, 20/3, 20/4, 20/5, 21/1, 21/2, 22/1, 
          22/2, 23/1, 24/1, 24/2, 24/3, 24/4, 24/5, 24/6, 24/7, 24/8, 24/9, 
          24/10, 24/11, 24/12, 24/13, 24/14, 24/15, 25/1, 25/2, 26/1, 26/2, 
          27/1, 27/2, 27/3, 27/4, 27/5, 28/1, 28/2, 28/3, 28/4, 29/1, 30/1, 
          30/2, 30/3, 30/4, 31/1, 32/1, 32/2, 32/3, 32/4, 32/5, 32/6, 32/7, 
          32/8, 32/9, 32/10, 32/11, 32/12, 32/13, 32/14, 32/15, 32/16, 32/17, 
          32/18, 32/19, 32/20, 32/21, 32/22, 32/23, 32/24, 32/25, 32/26, 
          32/27, 32/28, 32/29, 32/30, 32/31, 32/32, 32/33, 32/34, 32/35, 
          32/36, 32/37, 32/38, 32/39, 32/40, 32/41, 32/42, 32/43, 32/44, 
          32/45, 32/46, 32/47, 32/48, 32/49, 32/50, 32/51 ]
    

    1.2 Operation tables for groups

  • PrintTable( G )

    PrintTable prints the Cayley table of the group G.

        gap> G := GTW4_2;
        4/2
        gap> PrintTable( G );
        Let:
        g0 := ()
        g1 := (3,4)
        g2 := (1,2)
        g3 := (1,2)(3,4)
    
          *  | g0 g1 g2 g3 
         ------------------
          g0 | g0 g1 g2 g3 
          g1 | g1 g0 g3 g2 
          g2 | g2 g3 g0 g1 
          g3 | g3 g2 g1 g0 
    
    

    Sometimes different symbols for the elements in the would make the table look nicer. For the group 4/2 (Z2 ×Z2) one could choose the canonical form as pairs of zeros and ones.

        gap> G := GTW4_2;
        4/2
        gap> SetSymbols( G, ["(0,0)","(1,0)","(0,1)","(1,1)"] );
        gap> PrintTable( G );
        Let:
        (0,0) := ()
        (1,0) := (3,4)
        (0,1) := (1,2)
        (1,1) := (1,2)(3,4)
    
              *  | (0,0)  (1,0)  (0,1)  (1,1)  
          -----------------------------------
          (0,0)  | (0,0)  (1,0)  (0,1)  (1,1)  
          (1,0)  | (1,0)  (0,0)  (1,1)  (0,1)  
          (0,1)  | (0,1)  (1,1)  (0,0)  (1,0)  
          (1,1)  | (1,1)  (0,1)  (1,0)  (0,0)  
    

    1.3 Group endomorphisms

  • Endomorphisms( G )

    Endomorphisms computes all the endomorphisms of the group G. This function is most essential for computing the nearrings on a group. The endomorphisms are returned as a list of group homomorphisms. So all functions for mappings and homomorphisms are applicable.

        gap> G := TWGroup( 4, 2 );
        4/2
        gap> Endomorphisms( G );
        [ [ (1,2), (3,4) ] -> [ (), () ], [ (1,2), (3,4) ] -> [ (), (1,2) ],
          [ (1,2), (3,4) ] -> [ (), (3,4) ], [ (1,2), (3,4) ] -> [ (), (1,2)(3,4) ],
          [ (1,2), (3,4) ] -> [ (1,2), () ], [ (1,2), (3,4) ] -> [ (3,4), () ],
          [ (1,2), (3,4) ] -> [ (1,2)(3,4), () ], [ (1,2), (3,4) ] -> [ (1,2), (1,2) ]
            , [ (1,2), (3,4) ] -> [ (3,4), (3,4) ],
          [ (1,2), (3,4) ] -> [ (1,2)(3,4), (1,2)(3,4) ],
          [ (1,2), (3,4) ] -> [ (1,2), (3,4) ],
          [ (1,2), (3,4) ] -> [ (1,2)(3,4), (3,4) ],
          [ (1,2), (3,4) ] -> [ (3,4), (1,2) ],
          [ (1,2), (3,4) ] -> [ (1,2)(3,4), (1,2) ],
          [ (1,2), (3,4) ] -> [ (3,4), (1,2)(3,4) ],
          [ (1,2), (3,4) ] -> [ (1,2), (1,2)(3,4) ] ]
    

    1.4 Group automorphisms

  • Automorphisms( G )

    Automorphisms computes all the automorphisms of the group G. The automorphisms are returned as a list of group homomorphisms. So all functions for mappings and homomorphisms are applicable.

        gap> Automorphisms( GTW4_2 );
        [ IdentityMapping( 4/2 ), [ (1,2), (3,4) ] -> [ (1,2)(3,4), (3,4) ],
          [ (1,2), (3,4) ] -> [ (3,4), (1,2) ], 
          [ (3,4), (1,2) ] -> [ (1,2), (1,2)(3,4) ], 
          [ (3,4), (1,2) ] -> [ (1,2)(3,4), (3,4) ], 
          [ (3,4), (1,2) ] -> [ (1,2)(3,4), (1,2) ] ]
    

    1.5 Inner automorphisms of a group

  • InnerAutomorphisms( G )

    InnerAutomorphisms computes all the inner automorphisms of the group G. The inner automorphisms are returned as a list of group homomorphisms. So all functions for mappings and homomorphisms are applicable.

        gap> InnerAutomorphisms( AlternatingGroup( 4 ) );
        [ ^(), ^(2,3,4), ^(2,4,3), ^(1,2)(3,4), ^(1,2,3), ^(1,2,4), 
          ^(1,3,2), ^(1,3,4), ^(1,3)(2,4), ^(1,4,2), ^(1,4,3), ^(1,4)(2,3) ]
    

    1.6 Isomorphic groups

  • IsIsomorphicGroup( G, H )

    IsIsomorphicGroup determines if the groups G and H are isomorphic. If they are isomorphic, an isomorphism between these two groups can be found with IsomorphismGroups.

        gap> IsIsomorphicGroup( SymmetricGroup( 4 ), GTW24_12 );
        true
    

    1.7 Subgroups of a group

  • Subgroups( G )

    Subgroups returns a list of all subgroups of the group G, if there are only finitely many subgroups.

        gap> Subgroups( TWGroup( 8, 4 ) );
        [ Group(()), Group([ (1,3)(2,4) ]), Group([ (2,4) ]), Group([ (1,3) ]),
          Group([ (1,2)(3,4) ]), Group([ (1,4)(2,3) ]), Group([ (1,3)(2,4), (2,4) ]),
          Group([ (1,3)(2,4), (1,2,3,4) ]), Group([ (1,3)(2,4), (1,2)(3,4) ]),
          Group([ (1,3)(2,4), (2,4), (1,2,3,4) ]) ]
    

    1.8 Normal subgroups generated by a single element

  • OneGeneratedNormalSubgroups( G )

    OneGeneratedSubgroups returns a list of all proper, non-trivial normal subgroups of the group G which are generated by one element. OneGeneratedSubgroups is a synonym for GeneratorsOfCongruenceLattice.

        gap> OneGeneratedNormalSubgroups( AlternatingGroup(4) );
        [ Group([ (1,2)(3,4), (1,3)(2,4), (1,4)(2,3) ]) ]
    

    1.9 Invariant subgroups

  • IsInvariantUnderMaps( G, U, maps )

    For a list of mappings, maps on the group G and a subgroup U of G, IsInvariantUnderMaps returns the truth value of ``U is invariant under all mappings in maps''. In the following example this function is used to compute all fully invariant subgroups of the dihedral group of order 12.

        gap> D12 := DihedralGroup( 12 );                                        
        <pc group of size 12 with 3 generators>
        gap> s := Subgroups( D12 );
        [ Group([  ]), Group([ f1 ]), Group([ f1*f3^2 ]), Group([ f1*f3 ]), 
          Group([ f2*f3 ]), Group([ f1*f2 ]), Group([ f1*f2*f3^2 ]), 
          Group([ f1*f2*f3 ]), Group([ f3 ]), Group([ f1, f2*f3 ]), 
          Group([ f1*f3^2, f2*f3 ]), Group([ f1*f3, f2*f3 ]), 
          Group([ f3, f1 ]), Group([ f3, f2 ]), Group([ f3, f1*f2 ]), 
          Group([ f3, f1, f2 ]) ]
        gap> e := Endomorphisms( D12 );;                                        
        gap> f := Filtered( s, sg -> IsInvariantUnderMaps( D12, sg, e ) );
        [ Group([  ]), Group([ f3 ]), Group([ f3, f1, f2 ]) ]
    

  • IsCharacteristicSubgroup( G, U )

    A subgroup U of the group G is characteristic if it is invariant under all automorphisms on G. For a subgroup U of the group G, IsCharacteristicSubgroup returns the truth value of ``U is a characteristic subgroup of G''. If the group U is defined as the subgroup of a group G then the function call

  • IsCharacteristicInParent( U )

    has the same result.

        gap> IsCharacteristicInParent( Centre( GTW16_11 ) );
        true
    

  • IsFullinvariant( G, U )

    A subgroup U of the group G is fully invariant if it is invariant under all endomorphisms on G. For a subgroup U of the group G, IsFullinvariant returns the truth value of ``U is a fully invariant subgroup of G''.

        gap> G := GTW6_2;
        6/2
        gap> S := Subgroup( G, [(1,2)] );                                
        Group([ (1,2) ])
        gap> IsFullinvariant( G, S );
        false
    

    If the group U is defined as the subgroup of a group G then the function call

  • IsFullinvariantInParent( U )

    has the same result.

        gap> IsFullinvariantInParent( Centre( GTW16_11 ) );
        true
    

    1.10 Coset representatives

  • RepresentativesModNormalSubgroup( G, N )

    If G is a group and N is a normal subgroup of G then the function RepresentativesModNormalSubgroup returns a set of representatives for the congruence classes modulo the normal subgroup N, i.e. a set of elements of G with exactly one element from each cogruence class modulo N.

        gap> G := DihedralGroup( 16 );
        <pc group of size 16 with 4 generators>
        gap> C := Centre( G );
        Group([ f4 ])
        gap> RepresentativesModNormalSubgroup( G, C );
        [ <identity> of ..., f1, f2, f3, f2*f3, f1*f2*f4, f1*f3*f4, 
          f1*f2*f3*f4 ]
    

  • NontrivialRepresentativesModNormalSubgroup( G, N )

    This function behaves as RepresentativesModNormalSubgroup but it excludes the representative for the congruence class which contains the neutral element of the group.

        gap> G := DihedralGroup( 16 );
        <pc group of size 16 with 4 generators>
        gap> C := Centre( G );
        Group([ f4 ])
        gap> NontrivialRepresentativesModNormalSubgroup( G, C );
        [ f1, f2, f3, f2*f3, f1*f2*f4, f1*f3*f4, f1*f2*f3*f4 ]
    

    1.11 Scott length

  • ScottLength( G )

    The function ScottLength retuns the Scott-length of the group G. For a definition of the Scott-length of a group and an idea for an algorithm for the general case see scott69:TAOPMOAGATSOCPPGI. In the case of a class 2 nilpotent finite group G a faster algorithm described in ecker98:OTNOPFONGOC2 is used.

        gap> ScottLength( GTW6_2 );    
        2
        gap> ScottLength( GTW16_11 );
        4
    

    1.12 Other useful functions for groups

  • AsPermGroup( G )

    For a group G, AsPermGroup returns a permutation group that is isomorphic to G. In the case of a permutation group this is the group itself.

        gap> D24 := DihedralGroup( 24 );
        <pc group of size 24 with 4 generators>
        gap> D24p := AsPermGroup( D24 );
        <permutation group of size 24 with 4 generators>
        gap> IsomorphismGroups( D24, D24p );
        [ f1, f2, f3, f4 ] ->
        [ (1,17)(2,16)(3,18)(4,14)(5,13)(6,15)(7,20)(8,19)(9,21)(10,22)(11,24)(12,23),
          (1,11,4,9,2,12,5,7,3,10,6,8)(13,23,16,21,14,24,17,19,15,22,18,20),
          (1,4,2,5,3,6)(7,10,8,11,9,12)(13,16,14,17,15,18)(19,22,20,23,21,24),
          (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23,24) ]
        gap> C12 := CyclicGroup( 12 );  
        <pc group of size 12 with 3 generators>
        gap> AsPermGroup( C12 );
        Group([ ( 1, 7, 4,10, 2, 8, 5,11, 3, 9, 6,12), 
          ( 1, 4, 2, 5, 3, 6)( 7,10, 8,11, 9,12), 
          ( 1, 2, 3)( 4, 5, 6)( 7, 8, 9)(10,11,12) ])
    

    [Up] [Next] [Index]

    SONATA manual
    December 2022