[GAP Forum] Question about SubdirectProduct

Hulpke,Alexander Alexander.Hulpke at colostate.edu
Thu Jul 26 15:49:30 BST 2018


Dear GAP Forum, Dear German Combariza,

I am having problems with the function SubdirectProduct. Looks like GAP does not recognize the SubdirectProduct as a subgroup of the DirectProduct, but It does for small groups.

s4  := Group((1,2,3,4),(1,2));;
list := AllSmallGroups(48);;
n := 48;;
g := list[n];;
hom := AllHomomorphisms(list[n], s4)[53];;
gamma := SubdirectProduct(g,g,hom,hom);;
wprod := DirectProduct(g,g);;
IsSubgroup( wprod, gamma);  # This returns False

Let me explain what happens here and clear up the misapprehensions in prior responses.

When you construct a group product in GAP, you construct a new group (what is sometimes called an ``external direct product'' in the literature). GAP will decide internally how this product is to be represented, but in general it will be a new group that might be in a representation quite different than that of the groups one started with.

As described in the manual,
https://www.gap-system.org/Manuals/doc/ref/chap49_mj.html
the attributes stores certain homomorphisms from the factors to the product (operation `Embedding`) or from the product to the constituent factors (operation `Projection`).

When working with products on paper, there might be further homomorphisms, for example the embedding of a subdirect product in a direct product.   This embedding is in fact a homomorphism, albeit one that when working on paper is not written down and assumed.
GAP will need such a homomorphism to be constructed.

An even more drastic case happens if you construct the direct product of the same two groups twice. GAP will construct two different direct products whose elements have nothing to do with each other.

Of course it is possible to construct the embedding you are interested in explicitly from the embeddings and constructions: Project from the subdirect product on both components and embed into the direct product, do so simultaneously for both factors.

gap> p1:=Projection(gamma,1);p2:=Projection(gamma,2);
[ f1, f2, f3, f4, f5, f6, f7, f8 ] -> [ f1, f2, f3, f4, f5, <identity> of ...,
  <identity> of ..., <identity> of ... ]
[ f1, f2, f3, f4, f5, f6, f7, f8 ] -> [ f1*f4*f5, f2*f3^2, <identity> of ...,
  <identity> of ..., <identity> of ..., f3, f4, f5 ]
gap> e1:=Embedding(wprod,1);e2:=Embedding(wprod,2);
Pcgs([ f1, f2, f3, f4, f5 ]) -> [ f1, f2, f3, f4, f5 ]
Pcgs([ f1, f2, f3, f4, f5 ]) -> [ f6, f7, f8, f9, f10 ]
gap> emb:=GroupHomomorphismByImages(gamma,wprod,GeneratorsOfGroup(gamma),
> List(GeneratorsOfGroup(gamma),x->Image(e1,Image(p1,x))*Image(e2,Image(p2,x))));
[ f1, f2, f3, f4, f5, f6, f7, f8 ] -> [ f1*f6*f9*f10, f2*f7*f8^2, f3, f4, f5, f8, f9,
  f10 ]
gap> IsInjective(emb);
true
gap> Size(Image(emb));
576
gap> Index(wprod,Image(emb));
4

Now the image of `emb` will be the subdirect product as a subset of the direct product,
IsSubgroup(wprod, Image(emb));

returns `true` as desired.

The weird bit is in fact that the ``automatic'' embedding works in the case of permutation groups. This is a byproduct of the methods GAP uses for permutation groups, shifting the domain of the second group to larger points, and writing it as permutations. In this particular case thus the elements of a subdirect product can be elements of the dirct product (though that might fail if the factors are not transitive). The method I described above is the only general way.



What also should be noted (and seems to be the problem behind the wrong answers given before) is that if GAP constructs a new group as words in generators (as is done in general for solvable groups) these generators will display as f1,f2,f3,..., but there is no relation between the f1 onf one group and the f1 of another group and neither is bound to the variable f1.
You need to use (e.g.)

gens:=GeneratorsOfGroup(group);
gens[3];
to get the third generator, etc.

Hope this helps,

  Alexander Hulpke

-- Colorado State University, Department of Mathematics,
Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA
email: hulpke at colostate.edu<mailto:hulpke at colostate.edu>, Phone: ++1-970-4914288
http://www.math.colostate.edu/~hulpke



More information about the Forum mailing list