XModOps.DirectProduct( X,Y )
The direct product of crossed modules X,Y has as source and range
the direct products of the sources and ranges of X and Y. The
boundary map is the product of the two boundaries. The range of X
acts trivially on the source of Y and conversely. Because the
standard DirectProduct function requires the two parameters to be
groups, the XModOps. prefix must be used (at least for GAP3.4.3).
gap> DX := XModOps.DirectProduct( CX, CX );
Crossed module [v4xv4->a4xa4]
gap> XModPrint( DX );
Crossed module [v4xv4->a4xa4] :-
: Source group v4xv4 has generators:
[ (1,2)(3,4), (1,3)(2,4), (5,6)(7,8), (5,7)(6,8) ]
: Range group = a4xa4 has generators:
[ (1,2,3), (2,3,4), (5,6,7), (6,7,8) ]
: Boundary homomorphism maps source generators to:
[ (1,2)(3,4), (1,3)(2,4), (5,6)(7,8), (5,7)(6,8) ]
: Action homomorphism maps range generators to automorphisms:
(1,2,3) --> { source gens -->
[ (1,4)(2,3), (1,2)(3,4), (5,6)(7,8), (5,7)(6,8) ] }
(2,3,4) --> { source gens -->
[ (1,3)(2,4), (1,4)(2,3), (5,6)(7,8), (5,7)(6,8) ] }
(5,6,7) --> { source gens -->
[ (1,2)(3,4), (1,3)(2,4), (5,8)(6,7), (5,6)(7,8) ] }
(6,7,8) --> { source gens -->
[ (1,2)(3,4), (1,3)(2,4), (5,7)(6,8), (5,8)(6,7) ] }
These 4 automorphisms generate the group of automorphisms.
GAP 3.4.4