[GAP Forum] Fwd: Question about SubdirectProduct

Hulpke,Alexander Alexander.Hulpke at colostate.edu
Thu Jul 26 17:48:55 BST 2018


Dear Forum, Dear Graham,

The problem you run into is the conjunction of forced tests to ensure that input is correct, and the fact that D (as an infinite matrix group) does not seem to have a membership test for arbitrary integral matrices implemented. (G probably has, but that is not carried through with the standard direct product construction.)

This is a problem that arises more generakky for larger matrix groups, and for which we do not have a universally satisfactory solution. (Other systems e.g. get around this issue by forcefully casting matrices or parmutations into a particular group and then take this as assured membership. With permutation groups we were able to avoid any such casting, for matrix groups the problem is still open.

By far the easiest way around the problem thus is to not use `Image` (which does extensive tests on the input to establish that the second argument is indeed a matrix in the group, and not a list of objects to be mapped, etc.), but `ImagesRepresentative`, which is more trusting of user input:

ImagesRepresentative(DhomDD,x);

works (at least on my computer). I have done similarly in other code for matrix groups, e.g. in the matgrp package.

Hope this helps,

   Alexander

> On Jul 26, 2018, at 9:58 AM, Ellis, Grahamj <graham.ellis at nuigalway.ie> wrote:
> 
> Dear Forum and Alexander,
> 
> I have a related question. Does anyone know an easy way to get around the difficulty arising in the second of the following two examples? I'm looking for a general method of embedding an element w in GxG as the element (1,w) in the direct product Gx(GxG) which I'd like to work for a range of groups G..
> 
> gap> G:=SymmetricGroup(3);;
> gap> D:=DirectProduct(G,G);;
> gap> gensD:=GeneratorsOfGroup(D);;
> gap> DD:=DirectProduct(G,D);;
> gap> DhomDD:=Embedding(DD,2);;
> gap> x:=gensD[1]*gensD[2];
> (2,3)
> gap> y:=Image(DhomDD,x);
> (5,6)
> gap> 
> gap> 
> gap> G:=SpaceGroup(4,122);;
> gap> D:=DirectProduct(G,G);;
> gap> gensD:=GeneratorsOfGroup(D);;
> gap> DD:=DirectProduct(G,D);;
> gap> DhomDD:=Embedding(DD,2);;
> gap> x:=gensD[1]*gensD[2];
> [ [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ], 
>  [ 0, 0, -1, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0 ], 
>  [ 0, -1/2, 1/2, -1/2, 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 ], 
>  [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ], 
>  [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ] ]
> gap> y:=Image(DhomDD,x);
> Error, no method found! For debugging hints type ?Recovery from NoMethodFound
> Error, no 3rd choice method found for `Enumerator' on 1 arguments called from
> Enumerator( D ) at /usr/local/lib/gap4r8/lib/domain.gi:247 called from
> elm in Source( map ) at /usr/local/lib/gap4r8/lib/mapping.gi:190 called from
> <function "Image">( <arguments> )
> called from read-eval loop at line 275 of *stdin*
> you can 'quit;' to quit to outer loop, or
> you can 'return;' to continue
> brk> 
> 
> 
> Thanks,
> 
> Graham



More information about the Forum mailing list