[1X4 Derivations and Sections[0X [1X4.1 Whitehead Multiplication[0X [1X4.1-1 IsDerivation[0m [2X> IsDerivation( [0X[3Xmap[0X[2X ) ______________________________________________[0Xproperty [2X> IsSection( [0X[3Xmap[0X[2X ) _________________________________________________[0Xproperty [2X> IsUp2dMapping( [0X[3Xmap[0X[2X ) _____________________________________________[0Xproperty The Whitehead monoid Der(mathcalX) of mathcalX was defined in [Whi48] to be the monoid of all [13Xderivations[0m from R to S, that is the set of all maps chi : R -> S, with [13XWhitehead multiplication[0m star (on the [13Xright[0m) satisfying: {\bf Der\ 1}: \chi(qr) ~=~ (\chi q)^{r} \; (\chi r), \qquad {\bf Der\ 2}: (\chi_1 \star \chi_2)(r) ~=~ (\chi_2 r)(\chi_1 r)(\chi_2 \partial \chi_1 r). The zero map is the identity for this composition. Invertible elements in the monoid are called [13Xregular[0m. The Whitehead group of mathcalX is the group of regular derivations in Der(mathcalX ). In the next chapter the [13Xactor[0m of mathcalX is defined as a crossed module whose source and range are permutation representations of the Whitehead group and the automorphism group of mathcalX. The construction for cat1-groups equivalent to the derivation of a crossed module is the [13Xsection[0m. The monoid of sections of mathcalC = (e;t,h : G -> R) is the set of group homomorphisms xi : R -> G, with Whitehead multiplication star, (on the [13Xright[0m) satisfying: {\bf Sect\ 1}: t \xi ~=~ {\rm id}_R, \quad {\bf Sect\ 2}: (\xi_1 \star \xi_2)(r) ~=~ (\xi_1 r)(e h \xi_1 r)^{-1}(\xi_2 h \xi_1 r) ~=~ (\xi_2 h \xi_1 r)(e h \xi_1 r)^{-1}(\xi_1 r). The embedding e is the identity for this composition, and h(xi_1 star xi_2) = (h xi_1)(h xi_2). A section is [13Xregular[0m when h xi is an automorphism, and the group of regular sections is isomorphic to the Whitehead group. If epsilon denotes the inclusion of S = ker t in G then partial = h epsilon : S -> R and \xi r ~=~ (e r)(e \chi r) ~=~ (r, \chi r) determines a section xi of mathcalC in terms of the corresponding derivation chi of mathcalX, and conversely. [1X4.1-2 DerivationByImages[0m [2X> DerivationByImages( [0X[3XX0, ims[0X[2X ) ___________________________________[0Xoperation [2X> Object2d( [0X[3Xchi[0X[2X ) _________________________________________________[0Xattribute [2X> GeneratorImages( [0X[3Xchi[0X[2X ) __________________________________________[0Xattribute Derivations are stored like group homomorphisms by specifying the images of a generating set. Images of the remaining elements may then be obtained using axiom {\bf Der\ 1}. The function [10XIsDerivation[0m is automatically called to check that this procedure is well-defined. In the following example a cat1-group [10XC3[0m and the associated crossed module [10XX3[0m are constructed, where [10XX3[0m is isomorphic to the inclusion of the normal cyclic group [10Xc3[0m in the symmetric group [10Xs3[0m. [4X--------------------------- Example ----------------------------[0X [4X[0X [4Xgap> g18 := Group( (1,2,3), (4,5,6), (2,3)(5,6) );;[0X [4Xgap> SetName( g18, "g18" );[0X [4Xgap> gen18 := GeneratorsOfGroup( g18 );;[0X [4Xgap> g1 := gen18[1];; g2 := gen18[2];; g3 := gen18[3];;[0X [4Xgap> s3 := Subgroup( g18, gen18{[2..3]} );;[0X [4Xgap> SetName( s3, "s3" );;[0X [4Xgap> t := GroupHomomorphismByImages( g18, s3, gen18, [g2,g2,g3] );;[0X [4Xgap> h := GroupHomomorphismByImages( g18, s3, gen18, [(),g2,g3] );;[0X [4Xgap> e := GroupHomomorphismByImages( s3, g18, [g2,g3], [g2,g3] );;[0X [4Xgap> C3 := Cat1( t, h, e );[0X [4X[g18=>s3][0X [4Xgap> SetName( Kernel(t), "c3" );;[0X [4Xgap> X3 := XModOfCat1( C3 );;[0X [4Xgap> Display( X3 );[0X [4XCrossed module [c3->s3] :-[0X [4X: Source group has generators:[0X [4X [ ( 1, 2, 3)( 4, 6, 5) ][0X [4X: Range group has generators:[0X [4X [ (4,5,6), (2,3)(5,6) ][0X [4X: Boundary homomorphism maps source generators to:[0X [4X [ (4,6,5) ][0X [4X: Action homomorphism maps range generators to automorphisms:[0X [4X (4,5,6) --> { source gens --> [ (1,2,3)(4,6,5) ] }[0X [4X (2,3)(5,6) --> { source gens --> [ (1,3,2)(4,5,6) ] }[0X [4X These 2 automorphisms generate the group of automorphisms.[0X [4X: associated cat1-group is [g18=>s3][0X [4X[0X [4Xgap> imchi := [ (1,2,3)(4,6,5), (1,2,3)(4,6,5) ];;[0X [4Xgap> chi := DerivationByImages( X3, imchi );[0X [4XDerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ],[0X [4X[ (1,2,3)(4,6,5), (1,2,3)(4,6,5) ] )[0X [4X[0X [4X------------------------------------------------------------------[0X [1X4.1-3 SectionByImages[0m [2X> SectionByImages( [0X[3XC, ims[0X[2X ) _______________________________________[0Xoperation [2X> SectionByDerivation( [0X[3Xchi[0X[2X ) ______________________________________[0Xoperation [2X> DerivationBySection( [0X[3Xxi[0X[2X ) _______________________________________[0Xoperation Sections [13Xare[0m group homomorphisms, so do not need a special representation. Operations [10XSectionByDerivation[0m and [10XDerivationBySection[0m convert derivations to sections, and vice-versa, calling [10XCat1OfXMod[0m and [10XXModOfCat1[0m automatically. Two strategies for calculating derivations and sections are implemented, see [AW00]. The default method for [10XAllDerivations[0m is to search for all possible sets of images using a backtracking procedure, and when all the derivations are found it is not known which are regular. In the [5XGAP[0m3 version of this package, the default method for [10XAllSections( <C> )[0m was to compute all endomorphisms on the range group [10XR[0m of [10XC[0m as possibilities for the composite h xi. A backtrack method then found possible images for such a section. In the current version the derivations of the associated crossed module are calculated, and these are all converted to sections using [10XSectionByDerivation[0m. [4X--------------------------- Example ----------------------------[0X [4X[0X [4Xgap> xi := SectionByDerivation( chi );[0X [4X[ (4,5,6), (2,3)(5,6) ] -> [ (1,2,3), (1,2)(4,6) ][0X [4X[0X [4X------------------------------------------------------------------[0X [1X4.2 Whitehead Groups and Monoids[0X [1X4.2-1 RegularDerivations[0m [2X> RegularDerivations( [0X[3XX0[0X[2X ) ________________________________________[0Xattribute [2X> AllDerivations( [0X[3XX0[0X[2X ) ____________________________________________[0Xattribute [2X> RegularSections( [0X[3XC0[0X[2X ) ___________________________________________[0Xattribute [2X> AllSections( [0X[3XC0[0X[2X ) _______________________________________________[0Xattribute [2X> ImagesList( [0X[3Xobj[0X[2X ) _______________________________________________[0Xattribute [2X> ImagesTable( [0X[3Xobj[0X[2X ) ______________________________________________[0Xattribute There are two functions to determine the elements of the Whitehead group and the Whitehead monoid of mathcalX0, namely [10XRegularDerivations[0m and [10XAllDerivations[0m. (The functions [10XRegularSections[0m and [10XAllSections[0m perform corresponding tasks for a cat1-group.) Using our example [10XX3[0m we find that there are just nine derivations, six of them regular, and the associated group is isomorphic to [10Xs3[0m. [4X--------------------------- Example ----------------------------[0X [4X[0X [4Xgap> all3 := AllDerivations( X3 );;[0X [4Xgap> imall3 := ImagesList( all3 );; Display( imall3 );[0X [4X[ [ (), () ],[0X [4X [ (), ( 1, 2, 3)( 4, 6, 5) ],[0X [4X [ (), ( 1, 3, 2)( 4, 5, 6) ],[0X [4X [ ( 1, 2, 3)( 4, 6, 5), () ],[0X [4X [ ( 1, 2, 3)( 4, 6, 5), ( 1, 2, 3)( 4, 6, 5) ],[0X [4X [ ( 1, 2, 3)( 4, 6, 5), ( 1, 3, 2)( 4, 5, 6) ],[0X [4X [ ( 1, 3, 2)( 4, 5, 6), () ],[0X [4X [ ( 1, 3, 2)( 4, 5, 6), ( 1, 2, 3)( 4, 6, 5) ],[0X [4X [ ( 1, 3, 2)( 4, 5, 6), ( 1, 3, 2)( 4, 5, 6) ][0X [4X ][0X [4Xgap> KnownAttributesOfObject( all3 );[0X [4X[ "Object2d", "ImagesList", "AllOrRegular", "ImagesTable" ][0X [4Xgap> Display( ImagesTable( all3 ) );[0X [4X[ [ 1, 1, 1, 1, 1, 1 ],[0X [4X [ 1, 1, 1, 2, 2, 2 ],[0X [4X [ 1, 1, 1, 3, 3, 3 ],[0X [4X [ 1, 2, 3, 1, 2, 3 ],[0X [4X [ 1, 2, 3, 2, 3, 1 ],[0X [4X [ 1, 2, 3, 3, 1, 2 ],[0X [4X [ 1, 3, 2, 1, 3, 2 ],[0X [4X [ 1, 3, 2, 2, 1, 3 ],[0X [4X [ 1, 3, 2, 3, 2, 1 ] ][0X [4X[0X [4X------------------------------------------------------------------[0X [1X4.2-2 CompositeDerivation[0m [2X> CompositeDerivation( [0X[3Xchi1, chi2[0X[2X ) _______________________________[0Xoperation [2X> ImagePositions( [0X[3Xchi[0X[2X ) ___________________________________________[0Xattribute [2X> CompositeSection( [0X[3Xxi1, xi2[0X[2X ) ____________________________________[0Xoperation The Whitehead product chi_1 star chi_2 is implemented as [10XCompositeDerivation( <chi1>, <chi2> )[0m. The composite of two sections is just the composite of homomorphisms. [4X--------------------------- Example ----------------------------[0X [4X[0X [4Xgap> reg3 := RegularDerivations( X3 );;[0X [4Xgap> imder3 := ImagesList( reg3 );;[0X [4Xgap> chi4 := DerivationByImages( X3, imder3[4] );[0X [4XDerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ], [0X [4X[ ( 1, 3, 2)( 4, 5, 6), () ] )[0X [4Xgap> chi5 := DerivationByImages( X3, imder3[5] );[0X [4XDerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ], [0X [4X[ ( 1, 3, 2)( 4, 5, 6), ( 1, 2, 3)( 4, 6, 5) ] )[0X [4Xgap> im4 := ImagePositions( chi4 );[0X [4X[ 1, 3, 2, 1, 3, 2 ] [0X [4Xgap> im5 := ImagePositions( chi5 );[0X [4X[ 1, 3, 2, 2, 1, 3 ] [0X [4Xgap> chi45 := chi4 * chi5;[0X [4XDerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ], [0X [4X[ (), ( 1, 2, 3)( 4, 6, 5) ] )[0X [4Xgap> im45 := ImagePositions( chi45 );[0X [4X[ 1, 1, 1, 2, 2, 2 ] [0X [4Xgap> pos := Position( imder3, GeneratorImages( chi45 ) );[0X [4X2[0X [4X[0X [4X------------------------------------------------------------------[0X [1X4.2-3 WhiteheadGroupTable[0m [2X> WhiteheadGroupTable( [0X[3XX0[0X[2X ) _______________________________________[0Xattribute [2X> WhiteheadMonoidTable( [0X[3XX0[0X[2X ) ______________________________________[0Xattribute [2X> WhiteheadPermGroup( [0X[3XX0[0X[2X ) ________________________________________[0Xattribute [2X> WhiteheadTransMonoid( [0X[3XX0[0X[2X ) ______________________________________[0Xattribute Multiplication tables for the Whitehead group or monoid enable the construction of permutation or transformation representations. [4X--------------------------- Example ----------------------------[0X [4X[0X [4Xgap> wgt3 := WhiteheadGroupTable( X3 );; Display( wgt3 );[0X [4X[ [ 1, 2, 3, 4, 5, 6 ],[0X [4X [ 2, 3, 1, 5, 6, 4 ],[0X [4X [ 3, 1, 2, 6, 4, 5 ],[0X [4X [ 4, 6, 5, 1, 3, 2 ],[0X [4X [ 5, 4, 6, 2, 1, 3 ],[0X [4X [ 6, 5, 4, 3, 2, 1 ] ][0X [4Xgap> wpg3 := WhiteheadPermGroup( X3 );[0X [4XGroup([ (1,2,3)(4,5,6), (1,4)(2,6)(3,5) ])[0X [4Xgap> wmt3 := WhiteheadMonoidTable( X3 );; Display( wmt3 );[0X [4X[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ],[0X [4X [ 2, 3, 1, 5, 6, 4, 8, 9, 7 ],[0X [4X [ 3, 1, 2, 6, 4, 5, 9, 7, 8 ],[0X [4X [ 4, 4, 4, 4, 4, 4, 4, 4, 4 ],[0X [4X [ 5, 5, 5, 5, 5, 5, 5, 5, 5 ],[0X [4X [ 6, 6, 6, 6, 6, 6, 6, 6, 6 ],[0X [4X [ 7, 9, 8, 4, 6, 5, 1, 3, 2 ],[0X [4X [ 8, 7, 9, 5, 4, 6, 2, 1, 3 ],[0X [4X [ 9, 8, 7, 6, 5, 4, 3, 2, 1 ] ][0X [4Xgap> wtm3 := WhiteheadTransMonoid( X3 );[0X [4XMonoid( [ Transformation( [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] ),[0X [4X Transformation( [ 2, 3, 1, 5, 6, 4, 8, 9, 7 ] ),[0X [4X Transformation( [ 3, 1, 2, 6, 4, 5, 9, 7, 8 ] ),[0X [4X Transformation( [ 4, 4, 4, 4, 4, 4, 4, 4, 4 ] ),[0X [4X Transformation( [ 5, 5, 5, 5, 5, 5, 5, 5, 5 ] ),[0X [4X Transformation( [ 6, 6, 6, 6, 6, 6, 6, 6, 6 ] ),[0X [4X Transformation( [ 7, 9, 8, 4, 6, 5, 1, 3, 2 ] ),[0X [4X Transformation( [ 8, 7, 9, 5, 4, 6, 2, 1, 3 ] ),[0X [4X Transformation( [ 9, 8, 7, 6, 5, 4, 3, 2, 1 ] ) ], ... )[0X [4X[0X [4X------------------------------------------------------------------[0X