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