# 73.3 The XMod Function

`XMod( f, a )`

A crossed module is determined by its boundary and action homomorphisms, f and a. All the standard constructions described below call this function after constructing the two homomorphisms. In the following example we construct a central extension crossed module s3 times c4 to s3 directly by defining the projection on to the first factor to be the boundary map, and constructing the automorphism group by taking two inner automorphisms as generators.

```    gap> s3c4 := Group( (1,2),(2,3),(4,5,6,7));;
gap> s3c4.name := "s3c4";;
gap> s3 := Subgroup( s3c4, [ (1,2), (2,3) ] );;
gap> s3.name := "s3";;
gap> # construct the boundary
gap> gen := s3c4.generators;;
gap> imb := [ (1,2), (2,3), () ];;
gap> bX := GroupHomomorphismByImages( s3c4, s3, gen, imb );;
gap> # construct the inner automorphisms by (1,2) and (2,3)
gap> im1 := List( gen, g -> g^(1,2) );;
gap> a1 := GroupHomomorphismByImages( s3c4, s3c4, gen, im1 );;
gap> im2 := List( gen, g -> g^(2,3) );;
gap> a2 := GroupHomomorphismByImages( s3c4, s3c4, gen, im2 );;
gap> A := Group( a1, a2 );;
gap> # construct the action map from s3 to A
gap> aX := GroupHomomorphismByImages( s3, A, [(1,2),(2,3)], [a1,a2] );;
gap> X := XMod( bX, aX );
Crossed module [s3c4->s3]  ```

GAP 3.4.4
April 1997