\\ \\ short PARI/GP tutorial for using the companion list of unimodular lattices \\ unimodular_lattices_no_roots.gp \\ and the scrips gathered in the auxilliary file \\ tools_unimodular_lattices_no_roots.gp \\ \\ by Bill Allombert and Gaetan Chenevier, 29/09/2020 \\ \\ 06/2025 : minor modifications, tested with GP/PARI version 2.15.4 \\ \\ this file may also be run using gp tutorial_unimodular_lattices_no_roots.txt \\ default(parisize,"40M"); default(parisizemax,"13G"); \r tools_unimodular_lattices_no_roots.gp \\ prepare for parallel computations default(nbthreads,128); exportall(); \\ upload lists of unimodular lattices without nonzero vectors of norm <=2 \r unimodular_lattices_no_roots.gp print(U23[1]); \\ the Shorter Leech lattice in neighbor form G=nei(U23[1]); print(G); \\ a (not so nice) Gram matrix of the shorter Leech lattice print(lllgram(G)); \\ a nicer one print(nicegram(G)); \\ an even nicer one, with maximal diagonal coordinate 3 \\ WARNING : nicegram is a probablistic algorithm \\ U29 = list of rank 29 unimodular lattices without nonzero vectors of norm <=2 \\ U28 = Bacher-Venkov's similar list in rank 28 print(#U29); \\ there are 10092 lattices in U29 gram=parapply(nei,U29); \\ Gram matrices for these lattices \\ needs about 500M invariants=parapply(HBV,gram); \\ compute the hashed BV invariant of each element of U29 \\ WARNING : requires about 5h16 (CPU time) and 5G of memory \\ \\ the same computation but for U28 requires about 2 min print(#Set(invariants)==#invariants); \\ returns 1 : the 10092 lattices in U29 are non isomorphic print(mass[29]); \\ returns 49612728929/11136000, the mass of rank 29 unimodular lattices without \\ roots computed by King print(vecsum(vector(#U29,u,U29[u][4]))==mass[29]); \\ returns 1 : the list is complete, as it checks the mass formula print(order( nei(U29[1234]) )); \\ computes the order of the automorphism group of the lattice U29[1234] \\ return 2 in about 20s (CPU time) print(1/U29[1234][4]==2); \\ returns 1 print(matreduce(vector(#U29,u,1/U29[u][4]))~); \\ print statistics for order of automorphism groups of the elements of U29 \\ compare with Table 1.1 in the paper EX=parselect(x->is_exceptional(nei(x)),U29); \\ EX is the list of exceptional unimodular lattices in U29 (i.e. those with a \\ characteristic vector of norm 4) print(#EX); \\ there are 105 such lattices print(matreduce(vector(#EX,u,1/EX[u][4]))~); \\ Table 1.2 of the paper