\\ \\ 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 \\ \\ tested with GP/PARI version 2.13 \\ default(parisize,"40M"); default(parisizemax,"13G"); \r unimodular_lattices_no_roots.gp \r tools_unimodular_lattices_no_roots.gp print(U23[1]); \\ the Shorter Leech lattice in neighbor form G=nei(U23[1]) \\ a (not so nice) Gram matrix of the shorter Leech lattice lllgram(G) \\ a nicer one for(i=1,#U28, print(U28[i]) ); \\ the Bacher-Venkov list of unimodular lattices of rank 28 and without roots #U29 \\ there are 10092 unimodular lattices of rank 29 and without roots gram=apply(nei,U29); \\ Gram matrices for these lattices \\ needs about 500M exportall(); invariants=parapply(BV,gram); \\ compute the invariant BV 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. #Set(invariants)==#invariants \\ returns 1 : the 10092 lattices in U29 are non isomorphic mass[29] \\ returns 49612728929/11136000, the mass of rank 29 unimodular lattices without \\ roots computed by King vecsum(vector(#U29,u,U29[u][4]))==mass[29] \\ returns 1 : the list is complete, as it checks the mass formula order( nei(U29[1234]) ) \\ computes the order of the automorphism group of the lattice U29[1234] \\ return 2 in about 20s (CPU time) 1/U29[1234][4]==2 \\ returns 1 matreduce(vector(#U29,u,1/U29[u][4]))~ \\ print statistics for order of automorphism groups of the elements of U29 EX=select(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) #EX \\ there are 105 such lattices