\\ short turorial for using some functions implemented in masses_calc.gp \\ see masses_calc.gp for more explanations \\ as well as the main paper "Characteristic masses of Niemeier lattices" \r masses_calc.gp \\ load the vector X24 of Gram matrices of Niemeier lattices (on the website) X24=read("X24"); \\ consider the Niemeier lattice L with root system 4A5 D4 L=X24[18]; print(root_system(L)); \\ now we compute the characteristic masses of L \\ IMPORTANT: check first that GAP is installed and that the following line in \\ masses_calc.gp is the correct gap.sh path of GAP on your computer \\ gap_path()={return(Str("gap"));}; \\ (replace "gap" by the correct gap.sh PATH string otherwise) \\ also, the line \\ gap_memory()={ return(10);} \\ sets GAP's memory as 10G (enough for all computations of the paper). allocatemem(2^28); M=masses_calc(L); \\ the computation takes a few seconds \\ M is a vector of 4 components \\ M[1] is the vector of characteristic masses of L \\ they have the form \\ [[[m_1, k_1], ..., [m_r, k_r]]],mass] \\ where mass is m_O(L)(P) and P is the polynomial \\ Phi_{m_1}^{k_1}...Phi_{m_r}^{k_r}, \\ with Phi_m the m-th cyclotomic polynomial. \\ \\ for instance M[1][5] \\ returns [[[1, 1], [2, 23]], 1/34398535680000] \\ other representation of masses : vector of [P, mass] with P a polynomial N=ccar(M[1]); N[5] \\ returns [x^24 + 22*x^23 + 230*x^22 + 1518*x^21 + 7084*x^20 + 24794*x^19 + \\ 67298*x^18 + 144210*x^17 + 245157*x^16 + 326876*x^15 + 326876*x^14 + \\ 208012*x^13 - 208012*x^11 - 326876*x^10 - 326876*x^9 - 245157*x^8 - \\ 144210*x^7 - 67298*x^6 - 24794*x^5 - 7084*x^4 - 1518*x^3 - 230*x^2 \\ - 22*x - 1, 1/34398535680000] \\ M[2] is the root system of gram \\ M[3] and M[4] are vectors of size the number of conjugacy classes of G(L) \\ we can extract the G(R)-conjugacy classes of elements of G(L) using umbral_Gconjclasses(M); \\ here it returns \\ \\ |A5| 1^4 |D4| 1^1 : 1/48 \\ |A5| 1^1 c1^1 2^1 |D4| c1^1 : 1/4 \\ |A5| 1^1 3^1 |D4| m1^1 : 1/6 \\ |A5| c1^4 |D4| 1^1 : 1/48 \\ |A5| c1^1 c3^1 |D4| m1^1 : 1/6 \\ |A5| c2^2 |D4| 1^1 : 1/8 \\ |A5| c4^1 |D4| c1^1 : 1/8 \\ |A5| c4^1 |D4| c1^1 : 1/8 \\ \\ \\ similarily umbral_Gconjclasses(masses_calc(X24[22])) \\ returns Table 8 \\ \\ now compute dimension of W_p^O(L) for the 12-admissible integer partition p \\ with p = [3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 1]; p = [3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 1]; dimO(p,N) \\ returns 54 \\ p is not self associate, now compute dimension of (W_p \otimes \det)^O(L) q=dual(p,24); dimO(q,N) \\ q is [3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 1, 1, 1] \\ and the dimension is 11 \\ now print all non zero dimensions of W_p^O(L) for p_1 <= 2 \\ and p 24-positive and 24-admissible, as well as W_ass(p)^O(L) when \\ p is not self associate print_dim_ordered(2,N); \\ returns \\ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] : 1 0 \\ [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] : 1 0 \\ [2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] : 2 0 \\ [2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0] : 3 0 \\ [2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0] : 5 0 \\ [2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0] : 5 0 \\ [2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0] : 7 0 \\ [2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0] : 7 0 \\ [2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0] : 8 0 \\ [2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0] : 6 0 \\ [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0] : 6 0 \\ [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0] : 3 0 \\ [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] : 2 \\ \\ the format is as in format_dimensions.txt \\ now compute dim M_W(O(16)) for W=W_p and p=[4,4,4,2,2,2]; \\ either download MO16 or recompute it as follows E8E8=concatgram([cartan("E",8),cartan("E",8)]); E16=pneighb(E8E8,Mod(1,2)*[1;1;1;0;0;0;0;0;1;1;1;0;0;0;0;0]); print(root_system(E16)); massE8E8=masses_calc(E8E8)[1]; massE16=masses_calc(E16)[1]; MO16=concatmasse([massE8E8,massE16]); N=ccar(MO16); p=[4,4,4,2,2,2]; dimO(p,N) \\ dimension is 0 \\ now we check the computation of the masses of O23 \\ for the first lattice it takes more than a minute, \\ but only a few seconds for the others allocatemem(2^36); X23=read("X23"); V=vector(#X23); {for(i=1,#V, V[i]=masses_calc(X23[i])[1]; print("Masses of the lattice with root system ", root_system(X23[i]), " computed") );} M23=concatmasse(V); \\ compare with the file of the website MO23=read("MO23"); M23==MO23 \\ returns 1