The Whitehead monoid \({\rm Der}(\calX)\) of \(\calX\) was defined in [Whi48] to be the monoid of all derivations from \(R\) to \(S\), that is the set of all maps \(\chi : R \to S\), with Whitehead product \(\star\) (on the right) 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). \]
It easily follows that \(\chi 1 = 1\) and \(\chi(r^{-1}) = ((\chi r)^{-1})^{r^{-1}}\), and that the zero map is the identity for this composition. Invertible elements in the monoid are called regular. The Whitehead group of \(\calX\) is the group of regular derivations in \({\rm Der}(\calX )\). In the next chapter the actor of \(\calX\) is defined as a crossed module whose source and range are permutation representations of the Whitehead group and the automorphism group of \(\calX\).
The construction for cat\(^1\)-groups equivalent to the derivation of a crossed module is the section. The monoid of sections of \(\calC = (e;t,h : G \to R)\) is the set of group homomorphisms \(\xi : R \to G\), with Whitehead multiplication \(\star\) (on the right) satisfying:
\[ {\bf Sect\ 1}: t \circ \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 regular 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 \to R\) and
\[ \xi r ~=~ (e r)(\epsilon \chi r), \quad\mbox{which equals}\quad (r, \chi r) ~\in~ R \ltimes S, \]
determines a section \(\xi\) of \(\calC\) in terms of the corresponding derivation \(\chi\) of \(\calX\), and conversely.
‣ DerivationByImages ( X0, ims ) | ( operation ) |
‣ IsDerivation ( map ) | ( property ) |
‣ IsUp2DimensionalMapping ( chi ) | ( property ) |
‣ UpGeneratorImages ( chi ) | ( attribute ) |
‣ UpImagePositions ( chi ) | ( attribute ) |
‣ Object2d ( chi ) | ( attribute ) |
‣ DerivationImage ( chi, r ) | ( operation ) |
A derivation \(\chi\) is stored like a group homomorphisms by specifying the images of the generating set StrongGeneratorsStabChain( StabChain(R) )
of the range \(R\). This set of images is stored as the attribute UpGeneratorImages
of \(\chi\). The function IsDerivation
is automatically called to check that this procedure is well-defined. The attribute Object2d
\((\chi)\) returns the underlying crossed module.
Images of the remaining elements may be obtained using axiom \({\bf Der\ 1}\). UpImagePositions(chi)
is the list of the images under \(\chi\) of Elements(R)
and DerivationImage(chi,r)
returns \(\chi r\).
In the following example a cat\(^1\)-group C3
and the associated crossed module X3
are constructed, where X3
is isomorphic to the inclusion of the normal cyclic group c3
in the symmetric group s3
. The derivation \(\chi_1\) maps c3
to the identity and the other \(3\) elements to \((1,2,3)(4,6,5)\).
gap> g18 := Group( (1,2,3), (4,5,6), (2,3)(5,6) );; gap> SetName( g18, "g18" ); gap> gen18 := GeneratorsOfGroup( g18 );; gap> g1 := gen18[1];; g2 := gen18[2];; g3 := gen18[3];; gap> s3 := Subgroup( g18, gen18{[2..3]} );; gap> SetName( s3, "s3" );; gap> t := GroupHomomorphismByImages( g18, s3, gen18, [g2,g2,g3] );; gap> h := GroupHomomorphismByImages( g18, s3, gen18, [(),g2,g3] );; gap> e := GroupHomomorphismByImages( s3, g18, [g2,g3], [g2,g3] );; gap> C3 := Cat1Group( t, h, e ); [g18=>s3] gap> SetName( Kernel(t), "c3" );; gap> X3 := XModOfCat1Group( C3 ); [c3->s3] gap> R3 := Range( X3 );; gap> StrongGeneratorsStabChain( StabChain( R3 ) ); [ (4,5,6), (2,3)(5,6) ] gap> chi1 := DerivationByImages( X3, [ (), (1,2,3)(4,6,5) ] ); DerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ], [ (), (1,2,3)(4,6,5) ] ) gap> [ IsUp2DimensionalMapping( chi1 ), IsDerivation( chi1 ) ]; [ true, true ] gap> Object2d( chi1 ); [c3->s3] gap> UpGeneratorImages( chi1 ); [ (), (1,2,3)(4,6,5) ] gap> UpImagePositions( chi1 ); [ 1, 1, 1, 2, 2, 2 ] gap> DerivationImage( chi1, (2,3)(4,5) ); (1,2,3)(4,6,5)
‣ PrincipalDerivation ( X0, s ) | ( operation ) |
The principal derivation determined by \(s \in S\) is the derivation \(\eta_s : R \to S,\; r \mapsto (s^{-1})^rs\).
gap> eta := PrincipalDerivation( X3, (1,2,3)(4,6,5) ); DerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ], [ (), (1,3,2)(4,5,6) ] )
‣ SectionByHomomorphism ( C, hom ) | ( operation ) |
‣ IsSection ( xi ) | ( property ) |
‣ UpHomomorphism ( xi ) | ( attribute ) |
‣ SectionByDerivation ( chi ) | ( operation ) |
‣ DerivationBySection ( xi ) | ( operation ) |
Sections are group homomorphisms but, although they do not require a special representation, one is provided in the category IsUp2DimensionalMapping
having attributes Object2d
, UpHomomorphism
and UpGeneratorsImages
. Operations SectionByDerivation
and DerivationBySection
convert derivations to sections, and vice-versa, calling Cat1GroupOfXMod
(2.5-3) and XModOfCat1Group
(2.5-3) automatically.
Two strategies for calculating derivations and sections are implemented, see [AW00]. The default method for AllDerivations
(5.2-1) 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 early versions of this package, the default method for AllSections( <C> )
was to compute all endomorphisms on the range group R
of C
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 SectionByDerivation
.
gap> hom2 := GroupHomomorphismByImages( s3, g18, [ (4,5,6), (2,3)(5,6) ], > [ (1,3,2)(4,6,5), (1,2)(4,6) ] );; gap> xi2 := SectionByHomomorphism( C3, hom2 ); SectionByHomomorphism( s3, g18, [ (4,5,6), (2,3)(5,6) ], [ (1,3,2)(4,6,5), (1,2)(4,6) ] ) gap> [ IsUp2DimensionalMapping( xi2 ), IsSection( xi2 ) ]; [ true, true ] gap> Object2d( xi2 ); [g18 => s3] gap> UpHomomorphism( xi2 ); [ (4,5,6), (2,3)(5,6) ] -> [ (1,3,2)(4,6,5), (1,2)(4,6) ] gap> UpGeneratorImages( xi2 ); [ (1,3,2)(4,6,5), (1,2)(4,6) ] gap> chi2 := DerivationBySection( xi2 ); DerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ], [ (1,3,2)(4,5,6), (1,2,3)(4,6,5) ] ) gap> xi1 := SectionByDerivation( chi1 ); SectionByHomomorphism( s3, g18, [ (4,5,6), (2,3)(5,6) ], [ (1,2,3), (1,2)(4,6) ] )
‣ IdentityDerivation ( X0 ) | ( attribute ) |
‣ IdentitySection ( C0 ) | ( attribute ) |
The identity derivation maps the range group to the identity subgroup of the source, while the identity section is just the range embedding considered as a section.
gap> IdentityDerivation( X3 ); DerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ], [ (), () ] ) gap> IdentitySection( C3 ); SectionByHomomorphism( s3, g18, [ (4,5,6), (2,3)(5,6) ], [ (4,5,6), (2,3)(5,6) ] )
‣ WhiteheadProduct ( upi, upj ) | ( operation ) |
‣ WhiteheadOrder ( up ) | ( operation ) |
The WhiteheadProduct
, defined in section 5.1, may be applied to two derivations to form \(\chi_i \star \chi_j\), or to two sections to form \(\xi_i \star \xi_j\). The WhiteheadOrder
of a regular derivation \(\chi\) is the smallest power of \(\chi\), using this product, equal to the IdentityDerivation
(5.1-4).
gap> chi12 := WhiteheadProduct( chi1, chi2 ); DerivationByImages( s3, c3, [ (4,5,6), (2,3)(5,6) ], [ (1,3,2)(4,5,6), () ] ) gap> xi12 := WhiteheadProduct( xi1, xi2 ); SectionByHomomorphism( s3, g18, [ (4,5,6), (2,3)(5,6) ], [ (1,3,2)(4,6,5), (2,3)(5,6) ] ) gap> xi12 = SectionByDerivation( chi12 ); true gap> [ WhiteheadOrder( chi2 ), WhiteheadOrder( xi2 ) ]; [ 2, 2 ]
As mentioned at the beginning of this chapter, the Whitehead monoid \({\rm Der}(\calX)\) of \(\calX\) is the monoid of all derivations from \(R\) to \(S\). Monoids of derivations have representation IsMonoidOfUp2DimensionalMappingsObj
. Multiplication tables for Whitehead monoids enable the construction of transformation representations.
‣ AllDerivations ( X0 ) | ( attribute ) |
‣ ImagesList ( obj ) | ( attribute ) |
‣ DerivationClass ( mon ) | ( attribute ) |
‣ ImagesTable ( obj ) | ( attribute ) |
Using our example X3
we find that there are just nine derivations. Here AllDerivations
returns a collection of up mappings with attributes:
Object2d
- the crossed modules \(\calX\);
ImagesList
- a list, for each derivation, of the images of the generators of the range group;
DerivationClass
- the string "all"; other classes include "regular" and "principal";
ImagesTable
- this is a table whose \([i,j]\)-th entry is the position in the list of elements of \(S\) of the image under the \(i\)-th derivation of the \(j\)-th element of \(R\).
gap> all3 := AllDerivations( X3 ); monoid of derivations with images list: [ (), () ] [ (), (1,3,2)(4,5,6) ] [ (), (1,2,3)(4,6,5) ] [ (1,3,2)(4,5,6), () ] [ (1,3,2)(4,5,6), (1,3,2)(4,5,6) ] [ (1,3,2)(4,5,6), (1,2,3)(4,6,5) ] [ (1,2,3)(4,6,5), () ] [ (1,2,3)(4,6,5), (1,3,2)(4,5,6) ] [ (1,2,3)(4,6,5), (1,2,3)(4,6,5) ] gap> DerivationClass( all3 ); "all" gap> Perform( ImagesTable( all3 ), Display ); [ 1, 1, 1, 1, 1, 1 ] [ 1, 1, 1, 3, 3, 3 ] [ 1, 1, 1, 2, 2, 2 ] [ 1, 3, 2, 1, 3, 2 ] [ 1, 3, 2, 3, 2, 1 ] [ 1, 3, 2, 2, 1, 3 ] [ 1, 2, 3, 1, 2, 3 ] [ 1, 2, 3, 3, 1, 2 ] [ 1, 2, 3, 2, 3, 1 ]
‣ WhiteheadMonoidTable ( X0 ) | ( attribute ) |
‣ WhiteheadTransformationMonoid ( X0 ) | ( attribute ) |
The WhiteheadMonoidTable
of \(\calX\) is the multiplication table whose \([i,j]\)-th entry is the position \(k\) in the list of derivations of the Whitehead product \(\chi_i*\chi_j = \chi_k\).
Using the rows of the table as transformations, we may construct the WhiteheadTransformationMonoid
of \(\calX\).
gap> wmt3 := WhiteheadMonoidTable( X3 );; gap> Perform( wmt3, Display ); [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] [ 2, 3, 1, 5, 6, 4, 8, 9, 7 ] [ 3, 1, 2, 6, 4, 5, 9, 7, 8 ] [ 4, 6, 5, 1, 3, 2, 7, 9, 8 ] [ 5, 4, 6, 2, 1, 3, 8, 7, 9 ] [ 6, 5, 4, 3, 2, 1, 9, 8, 7 ] [ 7, 7, 7, 7, 7, 7, 7, 7, 7 ] [ 8, 8, 8, 8, 8, 8, 8, 8, 8 ] [ 9, 9, 9, 9, 9, 9, 9, 9, 9 ] gap> wtm3 := WhiteheadTransformationMonoid( X3 ); <transformation monoid of degree 9 with 3 generators> gap> GeneratorsOfMonoid( wtm3 ); [ Transformation( [ 2, 3, 1, 5, 6, 4, 8, 9, 7 ] ), Transformation( [ 4, 6, 5, 1, 3, 2, 7, 9, 8 ] ), Transformation( [ 7, 7, 7, 7, 7, 7, 7, 7, 7 ] ) ]
‣ RegularDerivations ( X0 ) | ( attribute ) |
‣ WhiteheadGroupTable ( X0 ) | ( attribute ) |
‣ WhiteheadPermGroup ( X0 ) | ( attribute ) |
‣ IsWhiteheadPermGroup ( G ) | ( property ) |
‣ WhiteheadRegularGroup ( X0 ) | ( attribute ) |
‣ WhiteheadGroupIsomorphism ( X0 ) | ( attribute ) |
RegularDerivations
are those derivations which are invertible in the monoid. The multiplication table for a Whitehead group - a subtable of the Whitehead monoid table - enables the construction of a permutation representation WhiteheadPermGroup
\(W\calX\) of \(\calX\). This group satisfies the property IsWhiteheadPermGroup
. and \(\calX\) is its attribute Object2d
.
Of the nine derivations of X3
just six are regular. The associated group is isomorphic to the symmetric group s3
.
Taking the rows of the WhiteheadGroupTable
as permutations, we may construct the WhiteheadRegularGroup
of \(\calX\). Then, seeking a SmallerDegreePermutationRepresentation
, we obtain the WhiteheadGroupIsomorphism
whose image is the WhiteheadPermGroup
of \(\calX\).
gap> reg3 := RegularDerivations( X3 ); monoid of derivations with images list: [ (), () ] [ (), (1,3,2)(4,5,6) ] [ (), (1,2,3)(4,6,5) ] [ (1,3,2)(4,5,6), () ] [ (1,3,2)(4,5,6), (1,3,2)(4,5,6) ] [ (1,3,2)(4,5,6), (1,2,3)(4,6,5) ] gap> DerivationClass( reg3 ); "regular" gap> wgt3 := WhiteheadGroupTable( X3 );; gap> Perform( wgt3, Display ); [ [ 1, 2, 3, 4, 5, 6 ], [ 2, 3, 1, 5, 6, 4 ], [ 3, 1, 2, 6, 4, 5 ], [ 4, 6, 5, 1, 3, 2 ], [ 5, 4, 6, 2, 1, 3 ], [ 6, 5, 4, 3, 2, 1 ] ] gap> wpg3 := WhiteheadPermGroup( X3 ); Group([ (1,2,3), (1,2) ]) gap> IsWhiteheadPermGroup( wpg3 ); true gap> Object2d( wpg3 ); [c3->s3] gap> WhiteheadRegularGroup( X3 ); Group([ (1,2,3)(4,5,6), (1,4)(2,6)(3,5) ]) gap> MappingGeneratorsImages( WhiteheadGroupIsomorphism( X3 ) ); [ [ (1,2,3)(4,5,6), (1,4)(2,6)(3,5) ], [ (1,2,3), (1,2) ] ]
‣ PrincipalDerivations ( X0 ) | ( attribute ) |
‣ PrincipalDerivationSubgroup ( X0 ) | ( attribute ) |
‣ WhiteheadHomomorphism ( X0 ) | ( attribute ) |
The principal derivations form a subgroup of the Whitehead group. The PrincipalDerivationSubgroup
is the corresponding subgroup of the WhiteheadPermGroup
.
The Whitehead homomorphism \(\eta : S \to W\calX, s \mapsto \eta_s\) for \(\calX\) maps the source group of \(\calX\) to the Whitehead group of \(\calX\).
gap> PDX3 := PrincipalDerivations( X3 ); monoid of derivations with images list: [ (), () ] [ (), (1,3,2)(4,5,6) ] [ (), (1,2,3)(4,6,5) ] gap> PDSX3 := PrincipalDerivationSubgroup( X3 ); Group([ (1,2,3) ]) gap> Whom3 := WhiteheadHomomorphism( X3 ); [ (1,2,3)(4,6,5) ] -> [ (1,2,3) ]
Exercise:\(~\) Use the two crossed module axioms to show that \(\eta_{s_1} \star \eta_{s_2} = \eta_{s_1s_2}\).
‣ SourceEndomorphism ( chi ) | ( operation ) |
A derivation \(\chi\) of \(\calX = (\partial : S \to R)\) determines an endomorphism \(\sigma_{\chi} : S \to S,~ s \mapsto s(\chi \partial s)\). We may verify that \(\sigma_{\chi}\) is a homomorphism by:
\[ \sigma_{\chi}(s_1s_2) ~=~ s_1s_2\chi((\partial s_1)(\partial s_2)) ~=~ s_1s_2(\chi\partial s_1)^{\partial s_2}(\chi\partial s_2) ~=~ s_1(\chi\partial s_1)s_2(\chi\partial s_2) ~=~ (\sigma_{\chi}s_1)(\sigma_{\chi}s_2). \]
gap> sigma2 := SourceEndomorphism( chi2 ); [ (1,2,3)(4,6,5) ] -> [ (1,3,2)(4,5,6) ]
‣ RangeEndomorphism ( chi ) | ( operation ) |
A derivation \(\chi\) of \(\calX = (\partial : S \to R)\) determines an endomorphism \(\rho_{\chi} : R \to R,~ r \mapsto r(\partial \chi r)\).
gap> rho2 := RangeEndomorphism( chi2 ); [ (4,5,6), (2,3)(5,6) ] -> [ (4,6,5), (2,3)(4,6) ]
‣ Object2dEndomorphism ( chi ) | ( operation ) |
A derivation \(\chi\) of \(\calX = (\partial : S \to R)\) determines an endomorphism \(\alpha_{\chi} : \calX \to \calX\) whose source and range endomorphisms are given by the previous two operations.
gap> alpha2 := Object2dEndomorphism( chi2 );; gap> Display( alpha2 ); Morphism of crossed modules :- : Source = [c3->s3] with generating sets: [ (1,2,3)(4,6,5) ] [ (4,5,6), (2,3)(5,6) ] : Range = Source : Source Homomorphism maps source generators to: [ (1,3,2)(4,5,6) ] : Range Homomorphism maps range generators to: [ (4,6,5), (2,3)(4,6) ]
‣ AllSections ( C0 ) | ( attribute ) |
‣ RegularSections ( C0 ) | ( attribute ) |
These operations are currently obtained by running the equivalent operation for derivations and then converting the result to sections.
gap> AllSections( C3 ); monoid of sections with images list: [ (4,5,6), (2,3)(5,6) ] [ (4,5,6), (1,3)(4,5) ] [ (4,5,6), (1,2)(4,6) ] [ (1,3,2)(4,6,5), (2,3)(5,6) ] [ (1,3,2)(4,6,5), (1,3)(4,5) ] [ (1,3,2)(4,6,5), (1,2)(4,6) ] [ (1,2,3), (2,3)(5,6) ] [ (1,2,3), (1,3)(4,5) ] [ (1,2,3), (1,2)(4,6) ] gap> RegularSections( C3 ); monoid of sections with images list: [ (4,5,6), (2,3)(5,6) ] [ (4,5,6), (1,3)(4,5) ] [ (4,5,6), (1,2)(4,6) ] [ (1,3,2)(4,6,5), (2,3)(5,6) ] [ (1,3,2)(4,6,5), (1,3)(4,5) ] [ (1,3,2)(4,6,5), (1,2)(4,6) ]
generated by GAPDoc2HTML