XModMorphism( X, Y, homs )
A morphism of crossed modules is a pair of homomorphisms [ sourceHom,
rangeHom ], where sourceHom, rangeHom are respectively
homomorphisms between the sources and ranges of X and Y, which
commute with the two boundary maps and which are morphisms for the two
actions.
In this implementation a morphism of crossed modules mor is a record
mor.source, & the source crossed module X,
mor.range, & the range crossed module Y,
mor.sourceHom, & a homomorphism from X.source to Y.source,
mor.rangeHom, & a homomorphism from X.range to Y.range,
mor.isXModMorphism, & a Boolean flag, normally true,
mor.operations, & a special set of operations XModMorphismOps
(see refOperations for morphisms of crossed modules),
mor.name, & a concatenation of the names of X and Y.
The function XModMorphism requires as parameters two crossed modules
and a two-element list containing the source and range homomorphisms.
It sets up the required fields for mor, but does not check the
axioms. The IsXModMorphism function should be used to perform these
checks. Note that the XModMorphismPrint function is needed to print
out the morphism in detail.
gap> smor := GroupHomomorphismByImages( q8, k4, genq8, genk4 );
GroupHomomorphismByImages( q8, v4,
[(1,2,3,4)(5,8,7,6), (1,5,3,7)(2,6,4,8)], [(1,2)(3,4), (1,3)(2,4)] )
gap> IsHomomorphism(smor);
true
gap> sl23 := SX.range;;
gap> gensl23 := sl23.generators;
[ (1,2,3,4)(5,8,7,6), (1,5,3,7)(2,6,4,8), (2,5,6)(4,7,8)(9,10,11) ]
gap> images := [ (1,2)(3,4), (1,3)(2,4), (2,3,4) ];;
gap> rmor := GroupHomomorphismByImages( sl23, a4, gensl23, images );;
gap> IsHomomorphism(rmor);
true
gap> mor := XModMorphism( SX, CX, [ smor, rmor ] );
Morphism of crossed modules <[N3->sl(2,3)] >-> [v4->a4]>
GAP 3.4.4