Classifying the space groups of a given point group (in the context of studying compact hyperKähler 8-orbifolds)
This repository accompanies the paper "On Classifying HyperKähler Kummer 8-Orbifolds" - B.S.Acharya, D.A.Baldwin, https://arxiv.org/pdf/2501.03692. To support the results stated in appendix B.
In section 3.3, there are three tables with some rows higlighted blue and some rows starred. The blue rows correspond to groups G such that
These correspond to the folders 'Table 1', 'Table 2' and 'Table 3'. Within each of these folders there are two subfolders: 'Blue Rows' and 'Starred Rows'. Within these there are files named by their row number.
Each file contains three variables: matgens_t_r translations_t_r and fixpointsets_t_r where t is the table number and r the row number. So, e.g. for row 71 of table 1, we have matgens_1_71 etc.
This variable is a list of length
G := Group(matgens_t_r);;
This variable contains a list of all the representatives of the classes of equivalent vector systems, each element of this list defines a space group #no normaliser computed then translations_t_r is a list of representatives of the classes of strongly equivalent vector systems and some of the space groups will be in the same affine equivalence class). Each element is a list of length matgens_t_r is given by,
trans_gen_j := translations_t_r[ i ]{ [ 1 + 8*(j-1) .. 8 + 8*(j-1) ] };;
One can build each space group
LoadPackage("CRYST");
TransMats := [];;
for i in [1..8] do
vec := NullMat(1,8)[1];
vec[i] := 1;
mat := IdentityMat(8);
Add(mat,vec);
mat := TransposedMatMutable(mat);
Add(mat,[0,0,0,0,0,0,0,0,1]);
Add(TransMats, mat);
od;
j := 1 #choose which translation from translations_t_r
matgens_spacegrp := [];;
for i in [1..Length(matgens_t_r)] do
gen := matgens_t_r[i];
vec := translations_t_r[ j ]{ [ 1 + 8*(i-1) .. 8 + 8*(i-1) ] };
mat := TransposedMatMutable(ShallowCopy(gen));
Add(mat,vec);
mat := TransposedMatMutable(mat);
Add(mat,[0,0,0,0,0,0,0,0,1]);
Add(matgens_spacegrp, mat);
od;
Append(matgens_spacegrp, TransMats);;
G_hat := AffineCrystGroupOnLeft(matgens_spacegrp);;
We then computed the singular set of WyckoffPositions in the Cryst package very useful and wrote a function that takes
This is a list of the same length as translations_t_r. The translations_t_r[i]. It is a list of the form,
[Small Group ID of stabiliser group, gens_of_stabiliser, "n fixpoints", "codimension c"]
Here, gens_of_stabiliser is a list of words in the generators matgens_t_r where Fi corresponds to matgens_t_r[i], together these generate the stabiliser group
Comments welcome