0

Based on the data provided on page 21 of the book Computer Algebra and Materials Physics, I tried to do the following testing in GAP:

gap> M1Right:=[[0,0,1,0],[1,0,0,0],[0,-1,0,0],[1/4,1/4,1/4,1]];;
gap> M2Right:=[[0,0,-1,0],[0,-1,0,0],[1,0,0,0],[0,0,0,1]];;
gap> SGGenSetAK227Right:=[M1Right,M2Right];;
gap> SGAK227Right:=AffineCrystGroupOnRight(SGGenSetAK227Right);
<matrix group with 2 generators>
gap> SGGenSet227Right:=[
>   [ [ 1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1/4, 1/4, -7/4, 1 ] ],
>   [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, -1, 0, 0 ], [ -1/4, 3/4, -3/4, 1 ] ],
>   [ [ 0, 1, 0, 0 ], [ 0, 0, -1, 0 ], [ -1, 0, 0, 0 ], [ 1, -1/2, -1/2, 1 ] ],
>   [ [ 1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 0, 0, 1 ] ],
>   [ [ -1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1/2, -1/2, 1 ] ],
>   [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1/2, 0, 1/2, 1 ] ],
>   [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1/2, 1/2, 1 ] ],
>   [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 1, 1 ] ]];;
gap> SG227Right:=AffineCrystGroup(SGGenSet227Right);
<matrix group with 8 generators>
gap> SG227Right=SGAK227Right;
true

As you can see, I've created two AffineCrystGroups using 2 and 8 generators respectively, and they are exactly the same one. Therefore, are there any feasible methods to find the minimum generators set of a specific AffineCrystGroup? In short, starting with case 2 as the starting point and obtaining the generator of case 1.

Regards, HZ

Hongyi Zhao
  • 77
  • 1
  • 6
  • Have you tried `MinimalGeneratingSet` or `SmallGeneratingSet`? To see the documentation, enter `?MinimalGeneratingSet` in GAP. – Olexandr Konovalov May 19 '22 at 09:46
  • Hi @OlexandrKonovalov See my reply and testing in the OP. – Hongyi Zhao May 19 '22 at 10:04
  • I see. Perhaps there is no `MinimalGeneratingSet` method available - see `?MinimalGeneratingSet` in GAP to read about its current limitations. You can try to reduce the `SmallGeneratingSet` output further manually - e.g. `S=AffineCrystGroup(sgs{[1..3]});` also returns `true`. If you are interested how `=` works for two infinite groups, see the underpinning code by calling `PageSource(ApplicableMethod(\=,[S,h1]));` – Olexandr Konovalov May 19 '22 at 11:08
  • Thank you for the trick, and I also added corresponding comments in the OP. – Hongyi Zhao May 19 '22 at 13:32
  • You can also post an answer to your own question, please feel free to do so. – Olexandr Konovalov May 19 '22 at 14:56
  • Thank you for your advice. But I still haven't any substantive findings to address the issues raised here. Finding the smallest generator set of a group systematically and programmatically is a difficult task. – Hongyi Zhao May 20 '22 at 02:28

1 Answers1

1

This is not the final solution, but it is an improvement in a way and a response to Olexandr Konovalov:

  1. MinimalGeneratingSet doesn't work in this situation:
gap> MinimalGeneratingSet(h1);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 3rd choice method found for `MinimalGeneratingSet' on 1 arguments at /home/werner/Public/repo/github.com/gap-system/gap.git/lib/methsel2.g:249 called from
<function "HANDLE_METHOD_NOT_FOUND">( <arguments> )
 called from read-eval loop at *stdin*:9
type 'quit;' to quit to outer loop
  1. SmallGeneratingSet can only reduce to 4 generators. Based on your advice, I tried with the following trick, but only can reduce to 3 generators. In short, a set of less than three generators taken from the result given by SmallGeneratingSet cannot generate the same space group:
gap> SGGenSet227Right:=[
>   [ [ 1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1/4, 1/4, -7/4, 1 ] ],
>   [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, -1, 0, 0 ], [ -1/4, 3/4, -3/4, 1 ] ],
>   [ [ 0, 1, 0, 0 ], [ 0, 0, -1, 0 ], [ -1, 0, 0, 0 ], [ 1, -1/2, -1/2, 1 ] ],
>   [ [ 1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 0, 0, 1 ] ],
>   [ [ -1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1/2, -1/2, 1 ] ],
>   [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1/2, 0, 1/2, 1 ] ],
>   [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1/2, 1/2, 1 ] ],
>   [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 1, 1 ] ]];;
gap> SG227Right:=AffineCrystGroup(SGGenSet227Right);
<matrix group with 8 generators>
gap> SGSmallGenSet227Right:=SmallGeneratingSet(SG227Right);
[ [ [ 0, 1, 0, 0 ], [ 0, 0, -1, 0 ], [ -1, 0, 0, 0 ], [ 1, -1/2, -1/2, 1 ] ], [ [ 1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1/4, 1/4, -7/4, 1 ] ], 
  [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, -1, 0, 0 ], [ -1/4, 3/4, -3/4, 1 ] ], [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1/2, 0, 1/2, 1 ] ] ]
gap> List(Combinations(SGSmallGenSet227Right,2),x -> AffineCrystGroup(x)=SG227Right);
[ false, false, false, false, false, false ]
gap> List(Combinations(SGSmallGenSet227Right,3),x -> AffineCrystGroup(x)=SG227Right);
[ true, false, false, false ]
Hongyi Zhao
  • 77
  • 1
  • 6