  
  [1m[4m[31m4. Derivations and Sections[0m
  
  
  [1m[4m[31m4.1 Whitehead Multiplication[0m
  
  [1m[4m[31m4.1-1 IsDerivation[0m
  
  [1m[34m> IsDerivation( [0m[22m[34mmap[0m[1m[34m ) ______________________________________________[0mproperty
  [1m[34m> IsSection( [0m[22m[34mmap[0m[1m[34m ) _________________________________________________[0mproperty
  [1m[34m> IsUp2dMapping( [0m[22m[34mmap[0m[1m[34m ) _____________________________________________[0mproperty
  
  The Whitehead monoid rm Der(mathcalX) of mathcalX was defined in [J48] to be
  the monoid of all [22m[36mderivations[0m from R to S, that is the set of all maps chi :
  R -> S, with [22m[36mWhitehead multiplication[0m star (on the [22m[36mright[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). \end{eqnarray*}
  \]
  
  The  zero  map  is the identity for this composition. Invertible elements in
  the  monoid are called [22m[36mregular[0m. The Whitehead group of mathcalX is the group
  of  regular  derivations in rm Der(mathcalX ). In the next chapter the [22m[36mactor[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 [22m[36msection[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 [22m[36mright[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 [22m[36mregular[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 = rm 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.
  
  [1m[4m[31m4.1-2 DerivationByImages[0m
  
  [1m[34m> DerivationByImages( [0m[22m[34mX0, ims[0m[1m[34m ) ___________________________________[0moperation
  [1m[34m> Object2d( [0m[22m[34mchi[0m[1m[34m ) _________________________________________________[0mattribute
  [1m[34m> GeneratorImages( [0m[22m[34mchi[0m[1m[34m ) __________________________________________[0mattribute
  
  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 [22m[32mIsDerivation[0m is automatically called
  to check that this procedure is well-defined.
  
  In  the  following example a cat1-group [22m[32mC3[0m and the associated crossed module
  [22m[32mX3[0m  are  constructed,  where [22m[32mX3[0m is isomorphic to the inclusion of the normal
  cyclic group [22m[32mc3[0m in the symmetric group [22m[32ms3[0m.
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> g18 := Group( (1,2,3), (4,5,6), (2,3)(5,6) );;[0m
    [22m[35mgap> SetName( g18, "g18" );[0m
    [22m[35mgap> gen18 := GeneratorsOfGroup( g18 );;[0m
    [22m[35mgap> g1 := gen18[1];;  g2 := gen18[2];;  g3 := gen18[3];;[0m
    [22m[35mgap> s3 := Subgroup( g18, gen18{[2..3]} );;[0m
    [22m[35mgap> SetName( s3, "s3" );;[0m
    [22m[35mgap> t := GroupHomomorphismByImages( g18, s3, gen18, [g2,g2,g3] );;[0m
    [22m[35mgap> h := GroupHomomorphismByImages( g18, s3, gen18, [(),g2,g3] );;[0m
    [22m[35mgap> e := GroupHomomorphismByImages( s3, g18, [g2,g3], [g2,g3] );;[0m
    [22m[35mgap> C3 := Cat1( t, h, e );[0m
    [22m[35m[g18=>s3][0m
    [22m[35mgap> SetName( Kernel(t), "c3" );;[0m
    [22m[35mgap> X3 := XModOfCat1( C3 );;[0m
    [22m[35mgap> Display( X3 );[0m
    [22m[35mCrossed module [c3->s3] :-[0m
    [22m[35m: Source group has generators:[0m
    [22m[35m  [ ( 1, 2, 3)( 4, 6, 5) ][0m
    [22m[35m: Range group has generators:[0m
    [22m[35m  [ (4,5,6), (2,3)(5,6) ][0m
    [22m[35m: Boundary homomorphism maps source generators to:[0m
    [22m[35m  [ (4,6,5) ][0m
    [22m[35m: Action homomorphism maps range generators to automorphisms:[0m
    [22m[35m  (4,5,6) --> { source gens --> [ (1,2,3)(4,6,5) ] }[0m
    [22m[35m  (2,3)(5,6) --> { source gens --> [ (1,3,2)(4,5,6) ] }[0m
    [22m[35m  These 2 automorphisms generate the group of automorphisms.[0m
    [22m[35m: associated cat1-group is [g18=>s3][0m
    [22m[35m[0m
    [22m[35mgap> imchi := [ (1,2,3)(4,6,5), (1,2,3)(4,6,5) ];;[0m
    [22m[35mgap> chi := DerivationByImages( X3, imchi );[0m
    [22m[35mDerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ],[0m
    [22m[35m[ (1,2,3)(4,6,5), (1,2,3)(4,6,5) ] )[0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
  [1m[4m[31m4.1-3 SectionByImages[0m
  
  [1m[34m> SectionByImages( [0m[22m[34mC, ims[0m[1m[34m ) _______________________________________[0moperation
  [1m[34m> SectionByDerivation( [0m[22m[34mchi[0m[1m[34m ) ______________________________________[0moperation
  [1m[34m> DerivationBySection( [0m[22m[34mxi[0m[1m[34m ) _______________________________________[0moperation
  
  Sections  [22m[36mare[0m  group homomorphisms, so do not need a special representation.
  Operations  [22m[32mSectionByDerivation[0m  and [22m[32mDerivationBySection[0m convert derivations
  to   sections,   and   vice-versa,   calling   [22m[32mCat1OfXMod[0m   and   [22m[32mXModOfCat1[0m
  automatically.
  
  Two strategies for calculating derivations and sections are implemented, see
  [MC00].  The default method for [22m[32mAllDerivations[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 [1mGAP[0m3 version of this
  package,  the  default  method  for  [22m[32mAllSections(  <C>  )[0m was to compute all
  endomorphisms on the range group [22m[32mR[0m of [22m[32mC[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
  [22m[32mSectionByDerivation[0m.
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> xi := SectionByDerivation( chi );[0m
    [22m[35m[ (4,5,6), (2,3)(5,6) ] -> [ (1,2,3), (1,2)(4,6) ][0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
  
  [1m[4m[31m4.2 Whitehead Groups and Monoids[0m
  
  [1m[4m[31m4.2-1 RegularDerivations[0m
  
  [1m[34m> RegularDerivations( [0m[22m[34mX0[0m[1m[34m ) ________________________________________[0mattribute
  [1m[34m> AllDerivations( [0m[22m[34mX0[0m[1m[34m ) ____________________________________________[0mattribute
  [1m[34m> RegularSections( [0m[22m[34mC0[0m[1m[34m ) ___________________________________________[0mattribute
  [1m[34m> AllSections( [0m[22m[34mC0[0m[1m[34m ) _______________________________________________[0mattribute
  [1m[34m> ImagesList( [0m[22m[34mobj[0m[1m[34m ) _______________________________________________[0mattribute
  [1m[34m> ImagesTable( [0m[22m[34mobj[0m[1m[34m ) ______________________________________________[0mattribute
  
  There are two functions to determine the elements of the Whitehead group and
  the   Whitehead   monoid   of   mathcalX0,   namely  [22m[32mRegularDerivations[0m  and
  [22m[32mAllDerivations[0m.  (The  functions  [22m[32mRegularSections[0m  and  [22m[32mAllSections[0m  perform
  corresponding tasks for a cat1-group.)
  
  Using  our  example  [22m[32mX3[0m we find that there are just nine derivations, six of
  them regular, and the associated group is isomorphic to [22m[32ms3[0m.
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> all3 := AllDerivations( X3 );;[0m
    [22m[35mgap> imall3 := ImagesList( all3 );; Display( imall3 );[0m
    [22m[35m[ [ (), () ],[0m
    [22m[35m  [ (), ( 1, 2, 3)( 4, 6, 5) ],[0m
    [22m[35m  [ (), ( 1, 3, 2)( 4, 5, 6) ],[0m
    [22m[35m  [ ( 1, 2, 3)( 4, 6, 5), () ],[0m
    [22m[35m  [ ( 1, 2, 3)( 4, 6, 5), ( 1, 2, 3)( 4, 6, 5) ],[0m
    [22m[35m  [ ( 1, 2, 3)( 4, 6, 5), ( 1, 3, 2)( 4, 5, 6) ],[0m
    [22m[35m  [ ( 1, 3, 2)( 4, 5, 6), () ],[0m
    [22m[35m  [ ( 1, 3, 2)( 4, 5, 6), ( 1, 2, 3)( 4, 6, 5) ],[0m
    [22m[35m  [ ( 1, 3, 2)( 4, 5, 6), ( 1, 3, 2)( 4, 5, 6) ][0m
    [22m[35m  ][0m
    [22m[35mgap> KnownAttributesOfObject( all3 );[0m
    [22m[35m[ "Object2d", "ImagesList", "AllOrRegular", "ImagesTable" ][0m
    [22m[35mgap> Display( ImagesTable( all3 ) );[0m
    [22m[35m[ [  1,  1,  1,  1,  1,  1 ],[0m
    [22m[35m  [  1,  1,  1,  2,  2,  2 ],[0m
    [22m[35m  [  1,  1,  1,  3,  3,  3 ],[0m
    [22m[35m  [  1,  2,  3,  1,  2,  3 ],[0m
    [22m[35m  [  1,  2,  3,  2,  3,  1 ],[0m
    [22m[35m  [  1,  2,  3,  3,  1,  2 ],[0m
    [22m[35m  [  1,  3,  2,  1,  3,  2 ],[0m
    [22m[35m  [  1,  3,  2,  2,  1,  3 ],[0m
    [22m[35m  [  1,  3,  2,  3,  2,  1 ] ][0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
  [1m[4m[31m4.2-2 CompositeDerivation[0m
  
  [1m[34m> CompositeDerivation( [0m[22m[34mchi1, chi2[0m[1m[34m ) _______________________________[0moperation
  [1m[34m> ImagePositions( [0m[22m[34mchi[0m[1m[34m ) ___________________________________________[0mattribute
  [1m[34m> CompositeSection( [0m[22m[34mxi1, xi2[0m[1m[34m ) ____________________________________[0moperation
  
  The    Whitehead    product    chi_1    star   chi_2   is   implemented   as
  [22m[32mCompositeDerivation( <chi1>, <chi2> )[0m. The composite of two sections is just
  the composite of homomorphisms.
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> reg3 := RegularDerivations( X3 );;[0m
    [22m[35mgap> imder3 := ImagesList( reg3 );;[0m
    [22m[35mgap> chi4 := DerivationByImages( X3, imder3[4] );[0m
    [22m[35mDerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ], [0m
    [22m[35m[ ( 1, 3, 2)( 4, 5, 6), () ] )[0m
    [22m[35mgap> chi5 := DerivationByImages( X3, imder3[5] );[0m
    [22m[35mDerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ], [0m
    [22m[35m[ ( 1, 3, 2)( 4, 5, 6), ( 1, 2, 3)( 4, 6, 5) ] )[0m
    [22m[35mgap> im4 := ImagePositions( chi4 );[0m
    [22m[35m[ 1, 3, 2, 1, 3, 2 ] [0m
    [22m[35mgap> im5 := ImagePositions( chi5 );[0m
    [22m[35m[ 1, 3, 2, 2, 1, 3 ] [0m
    [22m[35mgap> chi45 := chi4 * chi5;[0m
    [22m[35mDerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ], [0m
    [22m[35m[ (), ( 1, 2, 3)( 4, 6, 5) ] )[0m
    [22m[35mgap> im45 := ImagePositions( chi45 );[0m
    [22m[35m[ 1, 1, 1, 2, 2, 2 ]  [0m
    [22m[35mgap> pos := Position( imder3, GeneratorImages( chi45 ) );[0m
    [22m[35m2[0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
  [1m[4m[31m4.2-3 WhiteheadGroupTable[0m
  
  [1m[34m> WhiteheadGroupTable( [0m[22m[34mX0[0m[1m[34m ) _______________________________________[0mattribute
  [1m[34m> WhiteheadMonoidTable( [0m[22m[34mX0[0m[1m[34m ) ______________________________________[0mattribute
  [1m[34m> WhiteheadPermGroup( [0m[22m[34mX0[0m[1m[34m ) ________________________________________[0mattribute
  [1m[34m> WhiteheadTransMonoid( [0m[22m[34mX0[0m[1m[34m ) ______________________________________[0mattribute
  
  Multiplication   tables  for  the  Whitehead  group  or  monoid  enable  the
  construction of permutation or transformation representations.
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> wgt3 := WhiteheadGroupTable( X3 );; Display( wgt3 );[0m
    [22m[35m[ [  1,  2,  3,  4,  5,  6 ],[0m
    [22m[35m  [  2,  3,  1,  5,  6,  4 ],[0m
    [22m[35m  [  3,  1,  2,  6,  4,  5 ],[0m
    [22m[35m  [  4,  6,  5,  1,  3,  2 ],[0m
    [22m[35m  [  5,  4,  6,  2,  1,  3 ],[0m
    [22m[35m  [  6,  5,  4,  3,  2,  1 ] ][0m
    [22m[35mgap> wpg3 := WhiteheadPermGroup( X3 );[0m
    [22m[35mGroup([ (1,2,3)(4,5,6), (1,4)(2,6)(3,5) ])[0m
    [22m[35mgap> wmt3 := WhiteheadMonoidTable( X3 );; Display( wmt3 );[0m
    [22m[35m[ [  1,  2,  3,  4,  5,  6,  7,  8,  9 ],[0m
    [22m[35m  [  2,  3,  1,  5,  6,  4,  8,  9,  7 ],[0m
    [22m[35m  [  3,  1,  2,  6,  4,  5,  9,  7,  8 ],[0m
    [22m[35m  [  4,  4,  4,  4,  4,  4,  4,  4,  4 ],[0m
    [22m[35m  [  5,  5,  5,  5,  5,  5,  5,  5,  5 ],[0m
    [22m[35m  [  6,  6,  6,  6,  6,  6,  6,  6,  6 ],[0m
    [22m[35m  [  7,  9,  8,  4,  6,  5,  1,  3,  2 ],[0m
    [22m[35m  [  8,  7,  9,  5,  4,  6,  2,  1,  3 ],[0m
    [22m[35m  [  9,  8,  7,  6,  5,  4,  3,  2,  1 ] ][0m
    [22m[35mgap> wtm3 := WhiteheadTransMonoid( X3 );[0m
    [22m[35mMonoid( [ Transformation( [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] ),[0m
    [22m[35m  Transformation( [ 2, 3, 1, 5, 6, 4, 8, 9, 7 ] ),[0m
    [22m[35m  Transformation( [ 3, 1, 2, 6, 4, 5, 9, 7, 8 ] ),[0m
    [22m[35m  Transformation( [ 4, 4, 4, 4, 4, 4, 4, 4, 4 ] ),[0m
    [22m[35m  Transformation( [ 5, 5, 5, 5, 5, 5, 5, 5, 5 ] ),[0m
    [22m[35m  Transformation( [ 6, 6, 6, 6, 6, 6, 6, 6, 6 ] ),[0m
    [22m[35m  Transformation( [ 7, 9, 8, 4, 6, 5, 1, 3, 2 ] ),[0m
    [22m[35m  Transformation( [ 8, 7, 9, 5, 4, 6, 2, 1, 3 ] ),[0m
    [22m[35m  Transformation( [ 9, 8, 7, 6, 5, 4, 3, 2, 1 ] ) ], ... )[0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
