The *actor* of calX is a crossed module Act(calX) = (∆ : calW(calX) -> Aut(calX)) which was shown by Lue and Norrie, in [Nor87] and [Nor90] to give the automorphism object of a crossed module calX. In this implementation, the source of the actor is a permutation representation W of the Whitehead group of regular derivations, and the range of the actor is a permutation representation A of the automorphism group Aut(calX) of calX.

`‣ AutomorphismPermGroup` ( xmod ) | ( attribute ) |

`‣ GeneratingAutomorphisms` ( xmod ) | ( attribute ) |

`‣ PermAutomorphismAsXModMorphism` ( xmod, perm ) | ( operation ) |

The automorphisms ( σ, ρ ) of calX form a group Aut(calX) of crossed module isomorphisms. The function `AutomorphismPermGroup`

finds a set of `GeneratingAutomorphisms`

for Aut(calX), and then constructs a permutation representation of this group, which is used as the range of the actor crossed module of calX. The individual automorphisms can be constructed from the permutation group using the function `PermAutomorphismAsXModMorphism`

. The example below uses the crossed module `X3=[c3->s3]`

constructed in section 5.1.

gap> APX3 := AutomorphismPermGroup( X3 ); Group([ (5,7,6), (1,2)(3,4)(6,7) ]) gap> Size( APX3 ); 6 gap> genX3 := GeneratingAutomorphisms( X3 ); [ [[c3->s3] => [c3->s3]], [[c3->s3] => [c3->s3]] ] gap> e6 := Elements( APX3 )[6]; (1,2)(3,4)(5,7) gap> m6 := PermAutomorphismAsXModMorphism( X3, e6 );; gap> Display( m6 ); 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,5) ]

`‣ WhiteheadXMod` ( xmod ) | ( attribute ) |

`‣ LueXMod` ( xmod ) | ( attribute ) |

`‣ NorrieXMod` ( xmod ) | ( attribute ) |

`‣ ActorXMod` ( xmod ) | ( attribute ) |

An automorphism ( σ, ρ ) of `X`

acts on the Whitehead monoid by χ^(σ,ρ) = σ ∘ χ ∘ ρ^-1, and this determines the action for the actor. In fact the four groups S, W, R, A, the homomorphisms between them, and the various actions, give five crossed modules forming a *crossed square* (see `ActorCrossedSquare`

(8.2-4)).

calW(calX) = (η : S -> W),~ the Whitehead crossed module of calX, at the top,

calX = (∂ : S -> R),~ the initial crossed module, on the left,

Act(calX) = ( ∆ : W -> A),~ the actor crossed module of calX, on the right,

calN(X) = (α : R -> A),~ the Norrie crossed module of calX, on the bottom, and

calL(calX) = (∆∘η = α∘∂ : S -> A),~ the Lue crossed module of calX, along the top-left to bottom-right diagonal.

gap> WGX3 := WhiteheadPermGroup( X3 ); Group([ (1,2,3)(4,5,6), (1,4)(2,6)(3,5) ]) gap> WX3 := WhiteheadXMod( X3 );; gap> Display( WX3 ); Crossed module Whitehead[c3->s3] :- : Source group has generators: [ (1,2,3)(4,6,5) ] : Range group has generators: [ (1,2,3)(4,5,6), (1,4)(2,6)(3,5) ] : Boundary homomorphism maps source generators to: [ (1,2,3)(4,5,6) ] : Action homomorphism maps range generators to automorphisms: (1,2,3)(4,5,6) --> { source gens --> [ (1,2,3)(4,6,5) ] } (1,4)(2,6)(3,5) --> { source gens --> [ (1,3,2)(4,5,6) ] } These 2 automorphisms generate the group of automorphisms. gap> LX3 := LueXMod( X3 );; gap> Display( LX3 ); Crossed module Lue[c3->s3] :- : Source group has generators: [ (1,2,3)(4,6,5) ] : Range group has generators: [ (5,7,6), (1,2)(3,4)(6,7) ] : Boundary homomorphism maps source generators to: [ (5,7,6) ] : Action homomorphism maps range generators to automorphisms: (5,7,6) --> { source gens --> [ (1,2,3)(4,6,5) ] } (1,2)(3,4)(6,7) --> { source gens --> [ (1,3,2)(4,5,6) ] } These 2 automorphisms generate the group of automorphisms. gap> NX3 := NorrieXMod( X3 );; gap> Display( NX3 ); Crossed module Norrie[c3->s3] :- : Source group has generators: [ (4,5,6), (2,3)(5,6) ] : Range group has generators: [ (5,7,6), (1,2)(3,4)(6,7) ] : Boundary homomorphism maps source generators to: [ (5,6,7), (1,2)(3,4)(6,7) ] : Action homomorphism maps range generators to automorphisms: (5,7,6) --> { source gens --> [ (4,5,6), (2,3)(4,5) ] } (1,2)(3,4)(6,7) --> { source gens --> [ (4,6,5), (2,3)(5,6) ] } These 2 automorphisms generate the group of automorphisms. gap> AX3 := ActorXMod( X3 );; gap> Display( AX3); Crossed module Actor[c3->s3] :- : Source group has generators: [ (1,2,3)(4,5,6), (1,4)(2,6)(3,5) ] : Range group has generators: [ (5,7,6), (1,2)(3,4)(6,7) ] : Boundary homomorphism maps source generators to: [ (5,7,6), (1,2)(3,4)(6,7) ] : Action homomorphism maps range generators to automorphisms: (5,7,6) --> { source gens --> [ (1,2,3)(4,5,6), (1,6)(2,5)(3,4) ] } (1,2)(3,4)(6,7) --> { source gens --> [ (1,3,2)(4,6,5), (1,4)(2,6)(3,5) ] } These 2 automorphisms generate the group of automorphisms. gap> IAX3 := InnerActorXMod( X3 );; gap> Display( IAX3 ); Crossed module InnerActor[c3->s3] :- : Source group has generators: [ (1,2,3)(4,5,6) ] : Range group has generators: [ (5,6,7), (1,2)(3,4)(6,7) ] : Boundary homomorphism maps source generators to: [ (5,7,6) ] : Action homomorphism maps range generators to automorphisms: (5,6,7) --> { source gens --> [ (1,2,3)(4,5,6) ] } (1,2)(3,4)(6,7) --> { source gens --> [ (1,3,2)(4,6,5) ] } These 2 automorphisms generate the group of automorphisms.

`‣ XModCentre` ( xmod ) | ( attribute ) |

`‣ InnerActorXMod` ( xmod ) | ( attribute ) |

`‣ InnerMorphism` ( xmod ) | ( attribute ) |

Pairs of boundaries or identity mappings provide six morphisms of crossed modules. In particular, the boundaries of calW(calX) and calN(calX) form the *inner morphism* of calX, mapping source elements to principal derivations and range elements to inner automorphisms. The image of calX under this morphism is the *inner actor* of calX, while the kernel is the *centre* of calX. In the example which follows, the inner morphism of `X3=(c3->s3)`

, from Chapter 5, is an inclusion of crossed modules.

Note that we appear to have defined *two* sorts of *centre* for a crossed module: `XModCentre`

here, and `CentreXMod`

(4.1-7) in the chapter on isoclinism. We suspect that these two definitions give the same answer, but this remains to be resolved.

gap> IMX3 := InnerMorphism( X3 );; gap> Display( IMX3 ); Morphism of crossed modules :- : Source = [c3->s3] with generating sets: [ (1,2,3)(4,6,5) ] [ (4,5,6), (2,3)(5,6) ] : Range = Actor[c3->s3] with generating sets: [ (1,2,3)(4,5,6), (1,4)(2,6)(3,5) ] [ (5,7,6), (1,2)(3,4)(6,7) ] : Source Homomorphism maps source generators to: [ (1,2,3)(4,5,6) ] : Range Homomorphism maps range generators to: [ (5,6,7), (1,2)(3,4)(6,7) ] gap> IsInjective( IMX3 ); true gap> ZX3 := XModCentre( X3 ); [Group( () )->Group( () )]

generated by GAPDoc2HTML