Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

10 Utility functions
 10.1 Printing Lists
 10.2 Inclusion and Restriction Mappings
 10.3 Abelian Modules
 10.4 Distinct and Common Representatives

10 Utility functions

By a utility function we mean a GAP function which is

10.1 Printing Lists

10.1-1 PrintListOneItemPerLine
‣ PrintListOneItemPerLine( L )( operation )

This function is used in Chapter 4 when printing image lists of derivations and sections.


gap> L := [ [1,2,3,4], true, [ (1,2), (2,3) ] ];; 
gap> PrintListOneItemPerLine( L ); 
[ [ 1, 2, 3, 4 ], 
  true, 
  [ (1,2), (2,3) ] 
  ]

10.2 Inclusion and Restriction Mappings

These functions have been moved to the gpd package, but are still documented here.

10.2-1 InclusionMappingGroups
‣ InclusionMappingGroups( G, H )( operation )
‣ MappingToOne( G, H )( operation )

This set of utilities concerns mappings. The map incd8 is the inclusion of d8 in d16 used in Section 3.4. MappingToOne(G,H) maps the whole of \(G\) to the identity element in \(H\).


gap> Print( incd8, "\n" );
[ (11,13,15,17)(12,14,16,18), (11,18)(12,17)(13,16)(14,15) ] ->
[ (11,13,15,17)(12,14,16,18), (11,18)(12,17)(13,16)(14,15) ]
gap> imd8 := Image( incd8 );;
gap> MappingToOne( c4, imd8 );
[ (11,13,15,17)(12,14,16,18) ] -> [ () ]

10.2-2 InnerAutomorphismsByNormalSubgroup
‣ InnerAutomorphismsByNormalSubgroup( G, N )( operation )
‣ IsGroupOfAutomorphisms( A )( property )

Inner automorphisms of a group G by the elements of a normal subgroup N are calculated with the first of these functions, usually with G = N.


gap> autd8 := AutomorphismGroup( d8 );;
gap> innd8 := InnerAutomorphismsByNormalSubgroup( d8, d8 );;
gap> GeneratorsOfGroup( innd8 );
[ ^(1,2,3,4), ^(1,3) ]
gap> IsGroupOfAutomorphisms( innd8 );
true

10.3 Abelian Modules

10.3-1 AbelianModuleObject
‣ AbelianModuleObject( grp, act )( operation )
‣ IsAbelianModule( obj )( property )
‣ AbelianModuleGroup( obj )( attribute )
‣ AbelianModuleAction( obj )( attribute )

An abelian module is an abelian group together with a group action. These are used by the crossed module constructor XModByAbelianModule.

The resulting Xabmod is isomorphic to the output from XModByAutomorphismGroup( k4 );.


gap> x := (6,7)(8,9);;  y := (6,8)(7,9);;  z := (6,9)(7,8);;
gap> k4a := Group( x, y );;  SetName( k4a, "k4a" );
gap> gens3a := [ (1,2), (2,3) ];;
gap> s3a := Group( gens3a );;  SetName( s3a, "s3a" );
gap> alpha := GroupHomomorphismByImages( k4a, k4a, [x,y], [y,x] );;
gap> beta := GroupHomomorphismByImages( k4a, k4a, [x,y], [x,z] );;
gap> auta := Group( alpha, beta );;
gap> acta := GroupHomomorphismByImages( s3a, auta, gens3a, [alpha,beta] );;
gap> abmod := AbelianModuleObject( k4a, acta );;
gap> Xabmod := XModByAbelianModule( abmod );
[k4a->s3a]
gap> Display( Xabmod );

Crossed module [k4a->s3a] :- 
: Source group k4a has generators:
  [ (6,7)(8,9), (6,8)(7,9) ]
: Range group s3a has generators:
  [ (1,2), (2,3) ]
: Boundary homomorphism maps source generators to:
  [ (), () ]
: Action homomorphism maps range generators to automorphisms:
  (1,2) --> { source gens --> [ (6,8)(7,9), (6,7)(8,9) ] }
  (2,3) --> { source gens --> [ (6,7)(8,9), (6,9)(7,8) ] }
  These 2 automorphisms generate the group of automorphisms.


10.4 Distinct and Common Representatives

10.4-1 DistinctRepresentatives
‣ DistinctRepresentatives( list )( operation )
‣ CommonRepresentatives( list )( operation )
‣ CommonTransversal( grp, subgrp )( operation )
‣ IsCommonTransversal( grp, subgrp, list )( operation )

The final set of utilities deal with lists of subsets of \([1 \ldots n]\) and construct systems of distinct and common representatives using simple, non-recursive, combinatorial algorithms.

When \(L\) is a set of \(n\) subsets of \([1 \ldots n]\) and the Hall condition is satisfied (the union of any \(k\) subsets has at least \(k\) elements), a set of distinct representatives exists.

When \(J,K\) are both lists of \(n\) sets, the function CommonRepresentatives returns two lists: the set of representatives, and a permutation of the subsets of the second list. It may also be used to provide a common transversal for sets of left and right cosets of a subgroup \(H\) of a group \(G\), although a greedy algorithm is usually quicker.


gap> J := [ [1,2,3], [3,4], [3,4], [1,2,4] ];;
gap> DistinctRepresentatives( J );
[ 1, 3, 4, 2 ]
gap> K := [ [3,4], [1,2], [2,3], [2,3,4] ];;
gap> CommonRepresentatives( J, K );
[ [ 3, 3, 3, 1 ], [ 1, 3, 4, 2 ] ]
gap> CommonTransversal( d16, c4 );
[ (), (12,18)(13,17)(14,16), (11,12,13,14,15,16,17,18), 
  (11,12)(13,18)(14,17)(15,16) ]

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 Bib Ind

generated by GAPDoc2HTML