GAP:DirectProduct

Function type
The function takes as input a finite number of arguments or a list of arguments, all of which are groups, and outputs a group.

Behavior

 * If all the arguments are groups, GAP returns a new group, which is isomorphic to the external direct product of these groups. Note that this new group does not contain the input groups as subgroups. However, the corresponding subgroups can be recovered.
 * if one of the arguments is not a group, GAP returns a NoMethodFound error.

Related functions

 * GAP:SemidirectProduct computes the external semidirect product, with an action specified either explicitly or implicitly.
 * GAP:WreathProduct computes the external wreath product.

With two arguments
Here is an example of a direct product computation, also illustrating that the input groups to the direct product are not subgroups of the new group constructed. However, direct products of the input groups used for the original direct product are subgroups of the original direct product.

gap> G := SymmetricGroup(3); Sym( [ 1 .. 3 ] ) gap> H := SL(2,3); SL(2,3) gap> K := DirectProduct(G,H);  gap> IsSubgroup(K,H); false gap> IsSubgroup(K,G); false gap> NormalSubgroups(K); [, , , , , , , , , , , ,  ] gap> L := DirectProduct(SymmetricGroup(2),H);  gap> IsSubgroup(K,L); true

The next example shows how we can use the Embedding function to determine the subgroups of the direct product that correspond to the direct factors. The embedding of the two direct factors are numbered $$1$$ and $$2$$ respectively.

gap> G := CyclicGroup(5);  gap> H := PSL(2,7); Group([ (3,7,5)(4,8,6), (1,2,6)(3,4,8) ]) gap> K := DirectProduct(G,H);  gap> G1 := Image(Embedding(K,1));  gap> IsomorphismGroups(G1,G); [ Tuple( [ f1, ] ) ] -> [ f1 ] gap> H1 := Image(Embedding(K,2));  gap> IsomorphismGroups(H1,H); [ Tuple( [ of ..., (1,3)(2,4)(5,6)(7,8) ] ), Tuple( [ of ..., (1,6,3,4)(2,7,8,5) ] ) ] -> [ (1,3)(2,4)(5,6)(7,8), (1,6,5,8)(2,7,4,3) ]

With multiple arguments and lists
The DirectProduct command can also take more than two arguments. Here is an example:

gap> G := DirectProduct(CyclicGroup(2),SymmetricGroup(3),AlternatingGroup(4));  gap> H := Image(Embedding(G,2)); <group of size 6 with 2 generators> gap> IsomorphismGroups(SymmetricGroup(3),H); [ (1,2,3), (1,2) ] -> [ Tuple( [ of ..., (1,2,3), ] ), Tuple( [ of ..., (1,3), ] ) ]

It can also take in a list. For instance:

gap> G := DirectProduct(NormalSubgroups(CyclicGroup(8))); <pc group of size 64 with 6 generators> gap> H := DirectProduct(AllSmallGroups(8)); <pc group of size 32768 with 15 generators>