CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

| Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

Path: gap4r8 / grp / imf.grp
Views: 418346
#############################################################################
##
#W  imf.grp                     GAP group library              Volkmar Felsch
##
##
#Y  Copyright (C)  1995,  Lehrstuhl D für Mathematik,  RWTH Aachen,  Germany
#Y  Copyright (C)  2000,  Lehrstuhl D für Mathematik,  RWTH Aachen,  Germany
##
##  This is the main secondary file of the GAP library of irreducible maximal
##  finite (imf) integral matrix groups. It contains a list IMFList of length
##  31 and a record IMFRec.
##
##  Each entry IMFList[dim] of IMFList is a record which contains information
##  about the  Z-class  representative groups  (in case  dim < 12  or  dim in
##  {13,17,19,23}, or about the Q-class representative groups (in case dim in
##  {12,14,15,16,18,20,21,22,24,25,26,27,28,29,30,31}) of diminsion dim. More
##  precisely, each of these records contains the following components:
##
##  IMFList[dim].size               the group size,
##  IMFList[dim].isomorphismType    the isomorphism type,
##  IMFList[dim].isSolvable         true, if the group is solvable, or false,
##                                  else,
##  IMFList[dim].elementaryDivisors the elementary divisors  of the quadratic
##                                  form,
##  IMFList[dim].minimalNorm        the norm of the "short vectors",
##  IMFList[dim].orbitReps          representatives  of the  orbits  of short
##                                  vectors,
##  IMFList[dim].degrees            sizes  of the  orbits  of  short vectors,
##                                  i. e.,   the   degrees   of   permutation
##                                  representations  on  the  orbits  of  the
##                                  short vectors.
##
##  Additional lists with the associated  Gram matrices and matrix generators
##  are provided in the files  imf1to9.grp to  imf31.grp  of this library and
##  will be loaded only if necessary.
##
##  The record IMFRec contains the following components:
##
##  IMFRec.maximalDimension the  maximal dimension  covered  by the  library,
##                          i.e., 31,
##  IMFRec.numberQQClasses  a list  containing  for each  dimension  dim  the
##                          number   of   Q-classes   of   imf  subgroups  of
##                          GL(dim,Q),
##  IMFRec.numberQClasses   a list  containing  for each  dimension  dim  the
##                          number of Q-classes of imf subgroups of dimension
##                          dim available in the library,  i. e.,  the number
##                          of Q-classes of  imf subgroups of  GL(dim,Z),  if
##                          dim is at most 11  or a prime at most 23,  or the
##                          number   of   Q-classes   of  imf  subgroups   of
##                          GL(dim,Q), else,
##  IMFRec.repsAreZReps     a list  containing  for each dimension dim a flag
##                          which is true, if dim is at most 11 or a prime at
##                          most 23, or false, else,
##  IMFRec.bNumbers         a list  containing  for each dimension dim a list
##                          of lists which, for each available Q-class,  give
##                          the  list   of  the   position  numbers   of  its
##                          representatives  with  respect  to the  lists  in
##                          IMFList,
##  IMFRec.maximalQClasses  a list  containing  for each dimension dim a list
##                          of lists which, for each available Q-class,  give
##                          the Q-class number  of the corresponding rational
##                          imf class.
##


#############################################################################
##
##
BindGlobal( "IMFRec", rec( ) );

IMFRec.maximalDimension := 31;

IMFRec.numberQQClasses :=
 [1,2,1,3,2,6,2,9,2,8,2,19,4,12,6,31,3,17,2,31,8,12,4,65,5,16,5,37,2,33,4];

IMFRec.numberQClasses :=
 [1,2,1,5,2,9,3,16,8,21,2,19,4,12,6,31,6,17,2,31,8,12,7,65,5,16,5,37,2,33,4];

IMFRec.repsAreZReps :=
 [true,true,true,true,true,true,true,true,true,true,true,false,true,false,
  false,false,true,false,true,false,false,false,true,false,false,false,
  false,false,false,false,false];

IMFRec.bNumbers := [
 [[1]],
 [[1],[2]],
 [[1..3]],
 [[2],[3],[5,6],[1],[4]],
 [[1..3],[4..7]],
 [[1..3],[7],[8,9],[12,13],[14],[15..17],[4,5],[6],[10,11]],
 [[1..3],[6,7],[4,5]],
 [[1..3],[4],[5],[6],[7],[14,15],[16],[18,19],[23..26],[11,12],[20,21],[22],
  [8,9],[10],[13],[17]],
 [[1..3],[15..18],[4..7],[8,9],[10,11],[12,13],[14],[19,20]],
 [[1..3],[14..19],[25],[32,33],[38..41],[42,43],[44,45],[46],[4],[5],[6,7],
  [8,9],[10,11],[12,13],[20..22],[23,24],[26,27],[28],[29,30],[31],[34..37]],
 [[1..3],[4..9]],
 [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],
  [17],[18],[19]],
 [[1..3],[4..7],[8..13],[14..17]],
 [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]],
 [[1],[2],[3],[4],[5],[6]],
 [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],
  [17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],
  [31]],
 [[1..3],[4..9],[17..24],[10,11],[12,13],[14..16]],
 [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],
  [17]],
 [[1..3],[4..9]],
 [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],
  [17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],
  [31]],
 [[1],[2],[3],[4],[5],[6],[7],[8]],
 [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]],
 [[1..8],[9..11],[22..24],[25..28],[16..21],[12,13],[14,15]],
 [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],
  [17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],
  [32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],
  [47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],
  [62],[63],[64],[65]],
 [[1],[2],[3],[4],[5]],
 [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16]],
 [[1],[2],[3],[4],[5]],
 [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],
  [17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],
  [32],[33],[34],[35],[36],[37]],
 [[1],[2]],
 [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],
  [17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],
  [32],[33]],
 [[1],[2],[3],[4]]];

IMFRec.maximalQClasses := [
 [1],
 [1,2],
 [1],
 [1,2,3,1,2],
 [1,2],
 [1,2,3,4,5,6,1,1,2],
 [1,2,2],
 [1,2,3,4,5,6,7,8,9,3,4,4,5,5,5,6],
 [1,2,1,1,1,1,1,2],
 [1,2,3,4,5,6,7,8,1,1,1,1,1,1,2,2,3,3,3,4,4],
 [1,2],
 [1..19],
 [1..4],
 [1..12],
 [1..6],
 [1..31],
 [1,2,3,1,1,2],
 [1..17],
 [1,2],
 [1..31],
 [1..8],
 [1..12],
 [1,2,3,4,1,2,2],
 [1..65],
 [1..5],
 [1..16],
 [1..5],
 [1..37],
 [1,2],
 [1..33],
 [1..4]];


if IsBound( i ) then
  IMFRec.i := i;
fi;

BindGlobal( "IMFList", [ ] );

for i in [ 1 .. 31 ] do
  IMFList[i] := rec( );
od;


#############################################################################
##
##  Sizes  of the  class  representatives  of the  irreducible maximal finite
##  integral matrix groups.
##

IMFList[1].size := [ # Z-classes of dimension 1
 2];

IMFList[2].size := [ # Z-classes of dimension 2
 8,
 12];

IMFList[3].size := [ # Z-classes of dimension 3
 48,
 48,
 48];

IMFList[4].size := [ # Z-classes of dimension 4
 384,
 1152,
 288,
 144,
 240,
 240];

IMFList[5].size := [ # Z-classes of dimension 5
 3840,
 3840,
 3840,
 1440,
 1440,
 1440,
 1440];

IMFList[6].size := [ # Z-classes of dimension 6
 46080,
 46080,
 46080,
 4608,
 4608,
 23040,
 10368,
 103680,
 103680,
 288,
 288,
 10080,
 10080,
 672,
 240,
 240,
 240];

IMFList[7].size := [ # Z-classes of dimension 7
 645120,
 645120,
 645120,
 80640,
 80640,
 2903040,
 2903040];

IMFList[8].size := [ # Z-classes of dimension 8
 10321920,
 10321920,
 10321920,
 2654208,
 696729600,
 6912,
 497664,
 62208,
 62208,
 41472,
 725760,
 725760,
 2592,
 115200,
 115200,
 28800,
 57600,
 1440,
 1440,
 1152,
 1152,
 3456,
 672,
 672,
 672,
 672];

IMFList[9].size := [ # Z-classes of dimension 9
 185794560,
 185794560,
 185794560,
 663552,
 663552,
 663552,
 663552,
 36864,
 36864,
 2304,
 2304,
 165888,
 165888,
 1152,
 7257600,
 7257600,
 7257600,
 7257600,
 1440,
 1440];

IMFList[10].size := [ # Z-classes of dimension 10
 3715891200,
 3715891200,
 3715891200,
 1857945600,
 737280,
 29491200,
 29491200,
 122880,
 122880,
 7680,
 7680,
 23040,
 23040,
 4147200,
 4147200,
 4147200,
 4147200,
 4147200,
 4147200,
 2073600,
 2073600,
 2073600,
 480,
 480,
 29859840,
 1866240,
 1866240,
 38880,
 23040,
 23040,
 103680,
 311040,
 311040,
 8640,
 8640,
 8640,
 8640,
 1440,
 1440,
 1440,
 1440,
 79833600,
 79833600,
 2640,
 2640,
 2640];

IMFList[11].size := [ # Z-classes of dimension 11
 81749606400,
 81749606400,
 81749606400,
 958003200,
 958003200,
 958003200,
 958003200,
 958003200,
 958003200];

IMFList[12].size := [ # Q-classes of dimension 12
 1961990553600,
 9172942848,
 21499084800,
 2149908480,
 78382080,
 31104,
 115200,
 82944000,
 2400,
 2880,
 1440,
 8640,
 203212800,
 903168,
 2688,
 2688,
 60480,
 4032,
 12454041600];

IMFList[13].size := [ # Z-classes of dimension 13
 51011754393600,
 51011754393600,
 51011754393600,
 174356582400,
 174356582400,
 174356582400,
 174356582400,
 22464,
 22464,
 22464,
 22464,
 22464,
 22464,
 31200,
 31200,
 31200,
 31200];

IMFList[14].size := [ # Q-classes of dimension 14
 1428329123020800,
 16855282483200,
 180592312320,
 8491392,
 48384,
 17418240,
 2615348736000,
 10080,
 80640,
 4368,
 2184,
 4368];

IMFList[15].size := [ # Q-classes of dimension 15
 42849873690624000,
 41845579776000,
 103680,
 2903040,
 17915904000,
 10080];

IMFList[16].size := [ # Q-classes of dimension 16
 1371195958099968000,
 970864271032320000,
 42268920643584,
 89181388800,
 17336861982720,
 1036800,
 4180377600,
 95551488,
 3732480,
 79626240000,
 288000,
 57600,
 1658880000,
 3628800,
 138240,
 230400,
 4147200,
 172800,
 86400,
 2880,
 17280,
 960,
 4032,
 4032,
 60480,
 4032,
 903168,
 240,
 240,
 711374856192000,
 9792];

IMFList[17].size := [ # Z-classes of dimension 17
 46620662575398912000,
 46620662575398912000,
 46620662575398912000,
 12804747411456000,
 12804747411456000,
 12804747411456000,
 12804747411456000,
 12804747411456000,
 12804747411456000,
 17825792,
 17825792,
 69632,
 69632,
 4896,
 4896,
 4896,
 32640,
 32640,
 32640,
 32640,
 32640,
 32640,
 32640,
 32640];

IMFList[18].size := [ # Q-classes of dimension 18
 1678343852714360832000,
 3916800,
 6687075336192000,
 50388480,
 1872381094133760,
 82944000,
 105345515520000,
 28800,
 8640,
 43545600,
 6145155072000,
 1820786688,
 225792,
 9792,
 4896,
 243290200817664000,
 13680];

IMFList[19].size := [ # Z-classes of dimension 19
 63777066403145711616000,
 63777066403145711616000,
 63777066403145711616000,
 4865804016353280000,
 4865804016353280000,
 4865804016353280000,
 4865804016353280000,
 4865804016353280000,
 4865804016353280000];

IMFList[20].size := [ # Q-classes of dimension 20
 2551082656125828464640000,
 243468982907043840,
 656916480,
 380160,
 11520,
 224685731296051200,
 193491763200,
 103195607040000,
 829440,
 103680,
 4147200,
 311040,
 95551488000000,
 120000,
 172800,
 161280,
 1774080,
 10080,
 102181884343418880000,
 483840,
 80640,
 12746807377920000,
 15840,
 13939200,
 13939200,
 15840,
 31680,
 479001600,
 15840,
 15840,
 13680];

IMFList[21].size := [ # Q-classes of dimension 21
 107145471557284795514880000,
 146794677780086784000,
 2903040,
 52254720,
 2903040,
 1512000,
 10080,
 2248001455555215360000];

IMFList[22].size := [ # Q-classes of dimension 22
 4714400748520531002654720000,
 110361968640,
 29658516531078758400,
 1835540262420480000,
 5748019200,
 177408000,
 3592512000,
 51704033477769953280000,
 12144,
 12144,
 24288,
 24288];

IMFList[23].size := [ # Z-classes of dimension 23
 1240896803466478878720000,
 1240896803466478878720000,
 1240896803466478878720000,
 1240896803466478878720000,
 1240896803466478878720000,
 1240896803466478878720000,
 1240896803466478878720000,
 1240896803466478878720000,
 216862434431944426122117120000,
 216862434431944426122117120000,
 216862434431944426122117120000,
 85571854663680,
 85571854663680,
 41783132160,
 41783132160,
 489646080,
 489646080,
 489646080,
 489646080,
 489646080,
 489646080,
 84610842624000,
 84610842624000,
 84610842624000,
 991533312000,
 991533312000,
 991533312000,
 991533312000];

IMFList[24].size := [ # Q-classes of dimension 24
 10409396852733332453861621760000,
 2029289625631919702016000000,
 8315553613086720000,
 1728000,
 1682857609853487022080,
 940584960,
 2773263883425546240000,
 103680,
 67184640,
 4270826380475341209600,
 12287500930252800,
 59719680,
 1934917632,
 34560,
 1981355655168,
 1935360,
 1161216,
 31022420086661971968000000,
 137594142720000000,
 79626240000,
 143327232000000,
 145152000,
 11520000,
 16588800,
 230400,
 1728000,
 138240,
 311040,
 4147200,
 149299200,
 17280,
 247772652503040000,
 387072,
 4894274617344,
 387072,
 14450688,
 5806080,
 14450688,
 387072,
 52416,
 112896,
 30240,
 103680,
 5760,
 34560,
 7315660800,
 32514048,
 16128,
 16128,
 310206304349061120000,
 134784,
 74724249600,
 1872,
 12441600,
 17915904000,
 86400,
 14400,
 103680,
 8064,
 5376,
 1820786688,
 1209600,
 80640,
 31680,
 2640];

IMFList[25].size := [ # Q-classes of dimension 25
 520469842636666622693081088000000,
 743008370688000000,
 2073600,
 235200,
 806582922253211271168000000];

IMFList[26].size := [ # Q-classes of dimension 26
 27064431817106664380040216576000000,
 666248915354153228697600,
 1009262592,
 1946880000,
 60800435652415979520000,
 18720000,
 1268047872,
 24261120,
 55024220160,
 18720000,
 62400,
 31200,
 31200,
 187200,
 1046139494400,
 21777738900836704321536000000];

IMFList[27].size := [ # Q-classes of dimension 27
 1461479318123759876522171695104000000,
 2293666840313856000000,
 725760,
 22464,
 609776689223427721003008000000];

IMFList[28].size := [ # Q-classes of dimension 28
 81842841814930553085241614925824000000,
 111929817779497742421196800,
 13570563765858519346053120,
 231158159769600000000,
 1704603285530812549693440000,
 606790169395200,
 144207476195328,
 203212800,
 13005619200,
 4682022912,
 38158848,
 9539712,
 38158848,
 13680098021793595392000000,
 55024220160,
 29030400,
 2090188800,
 349440,
 1672151040,
 2419200,
 101896704,
 1161216,
 290304,
 504000,
 348364800,
 80640,
 2419200,
 60480,
 15692092416000,
 483840,
 52416,
 26208,
 26208,
 26208,
 26208,
 48720,
 17683523987479403909087232000000];

IMFList[29].size := [ # Q-classes of dimension 29
 4746884825265972078944013665697792000000,
 530505719624382117272616960000000];

IMFList[30].size := [ # Q-classes of dimension 30
 284813089515958324736640819941867520000000,
 20147367200309593635815424000,
 6419592322744320000000,
 1437659997167803170816000000,
 12487741686153216000000,
 16444762714275840,
 95551488000000,
 180551034077184000,
 17915904000,
 3052870564457742336000000,
 110398464000,
 110398464000,
 16855282483200,
 21499084800,
 203212800,
 3502105093579160420352000000,
 103680,
 78382080,
 251073478656000,
 67184640,
 8640,
 74649600,
 483840,
 17418240,
 172800,
 60480,
 30240,
 7257600,
 483840,
 48720,
 29760,
 59520,
 16445677308355845635451125760000000];

IMFList[31].size := [ # Q-classes of dimension 31
 17658411549989416133671730836395786240000000,
 327360,
 1488000,
 526261673867387060334436024320000000];


#############################################################################
##
##  Elementary  divisors  of the  quadratic  forms  associated  to the  class
##  representatives of the irreducible maximal finite integral matrix groups,
##  given in form of lists [ d1, exp1, d2, exp2, ... ].
##

IMFList[1].elementaryDivisors := [ # Z-classes of dimension 1
 [1,1]];

IMFList[2].elementaryDivisors := [ # Z-classes of dimension 2
 [1,2],
 [1,1,3,1]];

IMFList[3].elementaryDivisors := [ # Z-classes of dimension 3
 [1,3],
 [1,1,4,2],
 [1,2,4,1]];

IMFList[4].elementaryDivisors := [ # Z-classes of dimension 4
 [1,4],
 [1,2,2,2],
 [1,2,3,2],
 [1,1,3,2,9,1],
 [1,3,5,1],
 [1,1,5,3]];

IMFList[5].elementaryDivisors := [ # Z-classes of dimension 5
 [1,5],
 [1,4,4,1],
 [1,1,4,4],
 [1,1,6,4],
 [1,4,6,1],
 [1,1,3,3,6,1],
 [1,1,2,3,6,1]];

IMFList[6].elementaryDivisors := [ # Z-classes of dimension 6
 [1,6],
 [1,4,2,2],
 [1,2,2,4],
 [1,4,4,2],
 [1,2,4,4],
 [1,1,2,4,4,1],
 [1,3,3,3],
 [1,5,3,1],
 [1,1,3,5],
 [1,3,3,1,12,2],
 [1,2,4,1,12,3],
 [1,1,7,5],
 [1,5,7,1],
 [1,3,7,3],
 [1,3,5,3],
 [1,3,5,1,10,2],
 [1,2,2,1,10,3]];

IMFList[7].elementaryDivisors := [ # Z-classes of dimension 7
 [1,7],
 [1,6,4,1],
 [1,1,4,6],
 [1,1,8,6],
 [1,6,8,1],
 [1,6,2,1],
 [1,1,2,6]];

IMFList[8].elementaryDivisors := [ # Z-classes of dimension 8
 [1,8],
 [1,6,2,2],
 [1,2,2,6],
 [1,4,2,4],
 [1,8],
 [1,4,6,4],
 [1,4,3,4],
 [1,3,3,4,9,1],
 [1,1,3,4,9,3],
 [1,2,3,4,9,2],
 [1,7,9,1],
 [1,1,9,7],
 [1,1,3,3,9,3,27,1],
 [1,6,5,2],
 [1,2,5,6],
 [1,4,5,4],
 [1,1,5,6,25,1],
 [1,2,5,2,15,4],
 [1,4,3,2,15,2],
 [1,2,2,2,6,4],
 [1,4,3,2,6,2],
 [1,2,2,2,6,2,12,2],
 [1,1,3,4,21,3],
 [1,3,7,4,21,1],
 [1,5,7,2,21,1],
 [1,1,3,2,21,5]];

IMFList[9].elementaryDivisors := [ # Z-classes of dimension 9
 [1,9],
 [1,8,4,1],
 [1,1,4,8],
 [1,6,4,3],
 [1,3,4,6],
 [1,7,4,2],
 [1,2,4,7],
 [1,5,4,4],
 [1,4,4,5],
 [1,4,4,4,16,1],
 [1,1,4,4,16,4],
 [1,2,4,6,16,1],
 [1,1,4,6,16,2],
 [1,2,4,5,16,2],
 [1,1,10,8],
 [1,8,10,1],
 [1,1,5,7,10,1],
 [1,1,2,7,10,1],
 [1,1,5,3,10,1,20,4],
 [1,4,2,1,4,3,20,1]];

IMFList[10].elementaryDivisors := [ # Z-classes of dimension 10
 [1,10],
 [1,8,2,2],
 [1,2,2,8],
 [1,1,2,8,4,1],
 [1,4,2,2,4,4],
 [1,8,4,2],
 [1,2,4,8],
 [1,6,4,4],
 [1,4,4,6],
 [1,4,4,4,8,2],
 [1,2,2,4,8,4],
 [1,4,2,1,4,4,8,1],
 [1,1,2,4,4,1,8,4],
 [1,8,3,2],
 [1,2,3,8],
 [1,8,6,2],
 [1,2,6,8],
 [1,2,2,6,6,2],
 [1,2,3,6,6,2],
 [1,1,3,8,9,1],
 [1,1,3,7,6,1,18,1],
 [1,1,3,1,6,7,18,1],
 [1,4,2,2,4,2,12,2],
 [1,2,3,2,6,2,12,4],
 [1,5,3,5],
 [1,4,3,5,9,1],
 [1,1,3,5,9,4],
 [1,1,3,4,9,4,27,1],
 [1,5,3,3,12,2],
 [1,2,4,3,12,5],
 [1,5,3,5],
 [1,5,3,3,6,2],
 [1,2,2,3,6,5],
 [1,4,3,4,6,1,18,1],
 [1,1,3,1,6,4,18,4],
 [1,2,2,2,6,5,18,1],
 [1,1,3,5,9,2,18,2],
 [1,6,6,4],
 [1,4,6,6],
 [1,4,2,2,6,4],
 [1,4,3,2,6,4],
 [1,9,11,1],
 [1,1,11,9],
 [1,7,11,3],
 [1,3,11,7],
 [1,5,11,5]];

IMFList[11].elementaryDivisors := [ # Z-classes of dimension 11
 [1,11],
 [1,10,4,1],
 [1,1,4,10],
 [1,1,12,10],
 [1,1,3,10],
 [1,1,4,9,12,1],
 [1,1,3,9,12,1],
 [1,10,3,1],
 [1,10,12,1]];

IMFList[12].elementaryDivisors := [ # Q-classes of dimension 12
 [1,12],
 [1,6,2,6],
 [1,10,3,2],
 [1,6,3,6],
 [1,6,3,6],
 [1,6,2,2,6,4],
 [1,6,5,6],
 [1,9,5,3],
 [1,8,2,1,10,3],
 [1,8,5,2,10,2],
 [1,6,15,6],
 [1,6,15,6],
 [1,10,7,2],
 [1,6,7,6],
 [1,6,2,4,14,2],
 [1,6,14,6],
 [1,6,3,4,21,2],
 [1,6,21,6],
 [1,11,13,1]];

IMFList[13].elementaryDivisors := [ # Z-classes of dimension 13
 [1,13],
 [1,12,4,1],
 [1,1,4,12],
 [1,1,14,12],
 [1,12,14,1],
 [1,1,7,11,14,1],
 [1,1,2,11,14,1],
 [1,6,3,7],
 [1,7,3,6],
 [1,7,3,5,12,1],
 [1,6,3,6,12,1],
 [1,1,4,5,12,7],
 [1,1,4,6,12,6],
 [1,1,2,8,10,4],
 [1,9,5,3,10,1],
 [1,1,2,3,10,9],
 [1,4,5,8,10,1]];

IMFList[14].elementaryDivisors := [ # Q-classes of dimension 14
 [1,14],
 [1,12,2,2],
 [1,7,3,7],
 [1,7,3,7],
 [1,8,2,4,6,2],
 [1,7,3,5,6,2],
 [1,13,15,1],
 [1,8,5,5,15,1],
 [1,8,2,5,30,1],
 [1,7,13,7],
 [1,7,3,4,39,3],
 [1,9,13,4,39,1]];

IMFList[15].elementaryDivisors := [ # Q-classes of dimension 15
 [1,15],
 [1,14,16,1],
 [1,10,3,5],
 [1,9,2,5,6,1],
 [1,12,6,3],
 [1,10,7,5]];

IMFList[16].elementaryDivisors := [ # Q-classes of dimension 16
 [1,16],
 [1,16],
 [1,8,2,8],
 [1,8,2,8],
 [1,8,3,8],
 [1,8,3,8],
 [1,8,3,8],
 [1,8,6,8],
 [1,8,6,8],
 [1,12,5,4],
 [1,4,5,12],
 [1,10,5,6],
 [1,8,5,8],
 [1,8,5,8],
 [1,8,2,4,10,4],
 [1,8,10,8],
 [1,8,3,4,15,4],
 [1,8,15,8],
 [1,8,15,8],
 [1,8,15,8],
 [1,8,30,8],
 [1,8,6,4,30,4],
 [1,8,3,4,21,4],
 [1,8,3,2,21,6],
 [1,8,21,8],
 [1,8,21,8],
 [1,10,7,4,21,2],
 [1,12,11,4],
 [1,12,55,4],
 [1,15,17,1],
 [1,11,17,5]];

IMFList[17].elementaryDivisors := [ # Z-classes of dimension 17
 [1,17],
 [1,16,4,1],
 [1,1,4,16],
 [1,1,18,16],
 [1,16,18,1],
 [1,1,9,15,18,1],
 [1,1,2,15,18,1],
 [1,16,2,1],
 [1,1,2,16],
 [1,9,4,8],
 [1,8,4,9],
 [1,1,4,8,16,8],
 [1,8,4,8,16,1],
 [1,1,9,7,18,1,36,8],
 [1,8,2,1,4,8],
 [1,8,2,1,4,7,36,1],
 [1,1,3,8,6,8],
 [1,9,2,7,6,1],
 [1,8,2,8,12,1],
 [1,8,2,8,6,1],
 [1,1,2,8,4,7,12,1],
 [1,1,3,7,6,9],
 [1,1,6,8,12,8],
 [1,1,3,7,6,8,12,1]];

IMFList[18].elementaryDivisors := [ # Q-classes of dimension 18
 [1,18],
 [1,10,2,8],
 [1,15,3,3],
 [1,13,3,5],
 [1,9,3,9],
 [1,9,5,9],
 [1,16,10,2],
 [1,9,5,1,10,8],
 [1,9,3,3,15,6],
 [1,9,3,7,30,2],
 [1,15,7,3],
 [1,9,7,9],
 [1,9,7,9],
 [1,9,17,9],
 [1,8,2,5,34,5],
 [1,17,19,1],
 [1,9,19,9]];

IMFList[19].elementaryDivisors := [ # Z-classes of dimension 19
 [1,19],
 [1,1,4,18],
 [1,18,4,1],
 [1,1,20,18],
 [1,18,20,1],
 [1,18,5,1],
 [1,1,5,17,20,1],
 [1,1,4,17,20,1],
 [1,1,5,18]];

IMFList[20].elementaryDivisors := [ # Q-classes of dimension 20
 [1,20],
 [1,10,2,10],
 [1,10,2,10],
 [1,10,2,10],
 [1,12,3,8],
 [1,10,3,10],
 [1,10,3,6,6,4],
 [1,16,6,4],
 [1,8,2,8,6,2,12,2],
 [1,14,6,5,54,1],
 [1,12,6,8],
 [1,10,3,2,6,8],
 [1,15,5,5],
 [1,17,5,3],
 [1,15,5,1,30,4],
 [1,10,7,10],
 [1,10,7,10],
 [1,10,7,10],
 [1,19,21,1],
 [1,18,2,1,42,1],
 [1,13,3,1,6,5,42,1],
 [1,18,11,2],
 [1,18,11,2],
 [1,14,11,6],
 [1,10,11,10],
 [1,10,11,10],
 [1,10,2,6,22,4],
 [1,10,3,8,33,2],
 [1,10,3,4,33,6],
 [1,10,33,10],
 [1,13,19,6,57,1]];

IMFList[21].elementaryDivisors := [ # Q-classes of dimension 21
 [1,21],
 [1,18,2,3],
 [1,15,2,6],
 [1,19,3,2],
 [1,14,6,6,12,1],
 [1,1,2,1,10,19],
 [1,13,5,2,15,5,30,1],
 [1,20,22,1]];

IMFList[22].elementaryDivisors := [ # Q-classes of dimension 22
 [1,22],
 [1,1,3,19,6,2],
 [1,11,3,11],
 [1,20,12,2],
 [1,10,3,10,12,1,36,1],
 [1,21,5,1],
 [1,1,5,20,15,1],
 [1,21,23,1],
 [1,19,23,3],
 [1,17,23,5],
 [1,15,23,7],
 [1,11,23,11]];

IMFList[23].elementaryDivisors := [ # Z-classes of dimension 23
 [1,1,24,22],
 [1,22,24,1],
 [1,22,6,1],
 [1,1,3,21,24,1],
 [1,1,2,21,6,1],
 [1,1,3,21,6,1],
 [1,1,8,21,24,1],
 [1,1,6,22],
 [1,23],
 [1,22,4,1],
 [1,1,4,22],
 [1,1,2,22],
 [1,22,2,1],
 [1,1,8,22],
 [1,22,8,1],
 [1,1,12,22],
 [1,22,12,1],
 [1,1,3,21,12,1],
 [1,22,3,1],
 [1,1,3,22],
 [1,1,4,21,12,1],
 [1,23],
 [1,22,4,1],
 [1,1,4,22],
 [1,1,2,21,6,1],
 [1,22,6,1],
 [1,1,3,21,6,1],
 [1,1,6,22]];

IMFList[24].elementaryDivisors := [ # Q-classes of dimension 24
 [1,24],
 [1,24],
 [1,24],
 [1,16,2,8],
 [1,12,2,12],
 [1,12,2,12],
 [1,20,3,4],
 [1,20,3,4],
 [1,16,3,8],
 [1,12,3,12],
 [1,12,3,12],
 [1,12,2,8,6,4],
 [1,12,2,4,6,8],
 [1,12,2,4,6,8],
 [1,12,6,12],
 [1,12,6,12],
 [1,12,6,12],
 [1,23,25,1],
 [1,18,5,6],
 [1,12,5,12],
 [1,12,5,12],
 [1,12,5,12],
 [1,16,2,2,10,6],
 [1,16,5,4,10,4],
 [1,16,10,8],
 [1,12,5,4,10,8],
 [1,12,10,12],
 [1,12,5,4,15,8],
 [1,12,15,12],
 [1,12,15,12],
 [1,12,3,4,15,4,30,4],
 [1,20,7,4],
 [1,20,7,4],
 [1,12,7,12],
 [1,12,7,12],
 [1,12,2,8,14,4],
 [1,12,2,8,14,4],
 [1,12,14,12],
 [1,12,14,12],
 [1,12,13,12],
 [1,18,2,6],
 [1,12,2,12],
 [1,12,10,12],
 [1,12,15,4,30,8],
 [1,12,30,12],
 [1,12,3,8,21,4],
 [1,12,21,12],
 [1,12,6,8,42,4],
 [1,12,42,12],
 [1,22,13,2],
 [1,22,13,2],
 [1,12,3,10,39,2],
 [1,12,3,10,39,2],
 [1,18,5,2,15,4],
 [1,12,3,6,15,6],
 [1,12,3,6,15,6],
 [1,12,3,4,6,2,30,6],
 [1,14,3,2,6,7,30,1],
 [1,20,7,4],
 [1,18,2,2,14,4],
 [1,15,7,6,21,3],
 [1,18,5,2,35,4],
 [1,12,7,6,35,6],
 [1,12,22,12],
 [1,16,11,7,55,1]];

IMFList[25].elementaryDivisors := [ # Q-classes of dimension 25
 [1,25],
 [1,20,6,5],
 [1,16,6,8,36,1],
 [1,16,7,8,14,1],
 [1,24,26,1]];

IMFList[26].elementaryDivisors := [ # Q-classes of dimension 26
 [1,26],
 [1,13,3,13],
 [1,12,3,14],
 [1,2,2,16,10,8],
 [1,24,14,2],
 [1,26],
 [1,1,3,25],
 [1,19,3,7],
 [1,13,3,13],
 [1,13,5,13],
 [1,16,5,9,15,1],
 [1,12,2,8,10,6],
 [1,13,3,3,15,10],
 [1,13,3,5,15,6,30,2],
 [1,13,3,11,42,2],
 [1,25,27,1]];

IMFList[27].elementaryDivisors := [ # Q-classes of dimension 27
 [1,27],
 [1,24,10,3],
 [1,19,7,7,28,1],
 [1,16,13,10,52,1],
 [1,26,28,1]];

IMFList[28].elementaryDivisors := [ # Q-classes of dimension 28
 [1,28],
 [1,14,3,14],
 [1,14,2,14],
 [1,21,5,7],
 [1,24,2,4],
 [1,14,3,10,6,4],
 [1,14,3,14],
 [1,16,5,10,15,2],
 [1,16,2,10,30,2],
 [1,16,2,8,6,4],
 [1,14,13,14],
 [1,14,3,8,39,6],
 [1,18,13,8,39,2],
 [1,26,15,2],
 [1,2,2,26],
 [1,2,2,26],
 [1,2,2,26],
 [1,2,2,26],
 [1,12,2,14,4,2],
 [1,2,3,26],
 [1,14,3,14],
 [1,4,3,22,6,2],
 [1,12,3,4,6,10,18,2],
 [1,19,5,9],
 [1,21,5,3,10,4],
 [1,21,5,1,10,6],
 [1,1,3,13,15,13,45,1],
 [1,13,3,3,15,11,45,1],
 [1,13,3,13,15,1,45,1],
 [1,2,5,10,10,1,30,14,90,1],
 [1,20,13,6,26,2],
 [1,14,3,8,39,6],
 [1,13,3,5,39,9,117,1],
 [1,14,39,14],
 [1,4,2,10,78,14],
 [1,9,29,19],
 [1,27,29,1]];

IMFList[29].elementaryDivisors := [ # Q-classes of dimension 29
 [1,29],
 [1,28,30,1]];

IMFList[30].elementaryDivisors := [ # Q-classes of dimension 30
 [1,30],
 [1,15,3,15],
 [1,6,6,24],
 [1,25,3,5],
 [1,5,7,25],
 [1,15,7,15],
 [1,15,5,15],
 [1,15,3,9,6,6],
 [1,18,6,12],
 [1,27,11,3],
 [1,21,11,9],
 [1,15,11,15],
 [1,18,2,10,6,2],
 [1,20,3,10],
 [1,20,7,10],
 [1,28,16,2],
 [1,24,4,1,12,5],
 [1,15,3,15],
 [1,15,3,13,48,2],
 [1,24,2,1,6,5],
 [1,12,2,11,6,7],
 [1,20,3,4,6,5,18,1],
 [1,12,2,3,6,15],
 [1,14,3,4,6,11,18,1],
 [1,15,5,9,30,6],
 [1,15,3,5,21,10],
 [1,15,3,3,21,12],
 [1,24,6,1,42,5],
 [1,15,7,9,42,6],
 [1,15,29,15],
 [1,23,31,7],
 [1,15,31,15],
 [1,29,31,1]];

IMFList[31].elementaryDivisors := [ # Q-classes of dimension 31
 [1,31],
 [1,20,2,10,4,1],
 [1,19,5,12],
 [1,30,32,1]];


#############################################################################
##
##  Solvability  of  the  class  representatives  of the  irreducible maximal
##  finite integral matrix groups.
##

IMFList[1].isSolvable := [ # Z-classes of dimension 1
 true];

IMFList[2].isSolvable := [ # Z-classes of dimension 2
 true,
 true];

IMFList[3].isSolvable := [ # Z-classes of dimension 3
 true,
 true,
 true];

IMFList[4].isSolvable := [ # Z-classes of dimension 4
 true,
 true,
 true,
 true,
 false,
 false];

IMFList[5].isSolvable := # Z-classes of dimension 5
 ListWithIdenticalEntries( 7, false );

IMFList[6].isSolvable := [ # Z-classes of dimension 6
 false,
 false,
 false,
 true,
 true,
 false,
 true,
 false,
 false,
 true,
 true,
 false,
 false,
 false,
 false,
 false,
 false];

IMFList[7].isSolvable := # Z-classes of dimension 7
 ListWithIdenticalEntries( 7, false );

IMFList[8].isSolvable := [ # Z-classes of dimension 8
 false,
 false,
 false,
 true,
 false,
 true,
 true,
 true,
 true,
 true,
 false,
 false,
 true,
 false,
 false,
 false,
 false,
 false,
 false,
 true,
 true,
 true,
 false,
 false,
 false,
 false];

IMFList[9].isSolvable := [ # Z-classes of dimension 9
 false,
 false,
 false,
 true,
 true,
 true,
 true,
 true,
 true,
 true,
 true,
 true,
 true,
 true,
 false,
 false,
 false,
 false,
 false,
 false];

IMFList[10].isSolvable := # Z-classes of dimension 10
 ListWithIdenticalEntries( 46, false );

IMFList[11].isSolvable := # Z-classes of dimension 11
 ListWithIdenticalEntries( 9, false );

IMFList[12].isSolvable := [ # Q-classes of dimension 12
 false,
 true,
 false,
 false,
 false,
 true,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false];

IMFList[13].isSolvable := # Z-classes of dimension 13
 ListWithIdenticalEntries( 17, false );

IMFList[14].isSolvable := # Q-classes of dimension 14
 ListWithIdenticalEntries( 12, false );

IMFList[15].isSolvable := # Q-classes of dimension 15
 ListWithIdenticalEntries( 6, false );

IMFList[16].isSolvable := [ # Q-classes of dimension 16
 false,
 false,
 true,
 false,
 false,
 false,
 false,
 true,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 true,
 false,
 false,
 false,
 false,
 false,
 true,
 true,
 false,
 false];

IMFList[17].isSolvable := [ # Z-classes of dimension 17
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 true,
 true,
 true,
 true,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false];

IMFList[18].isSolvable := # Q-classes of dimension 18
 ListWithIdenticalEntries( 17, false );

IMFList[19].isSolvable := # Z-classes of dimension 19
 ListWithIdenticalEntries( 9, false );

IMFList[20].isSolvable := # Q-classes of dimension 20
 ListWithIdenticalEntries( 31, false );

IMFList[21].isSolvable := # Q-classes of dimension 21
 ListWithIdenticalEntries( 8, false );

IMFList[22].isSolvable := # Q-classes of dimension 22
 ListWithIdenticalEntries( 12, false );

IMFList[23].isSolvable := # Z-classes of dimension 23
 ListWithIdenticalEntries( 28, false );

IMFList[24].isSolvable := [ # Q-classes of dimension 24
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 true,
 false,
 true,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 true,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false,
 false];

IMFList[25].isSolvable := # Q-classes of dimension 25
 ListWithIdenticalEntries( 5, false );

IMFList[26].isSolvable := # Q-classes of dimension 26
 ListWithIdenticalEntries( 16, false );

IMFList[27].isSolvable := # Q-classes of dimension 27
 ListWithIdenticalEntries( 5, false );

IMFList[28].isSolvable := # Q-classes of dimension 28
 ListWithIdenticalEntries( 37, false );

IMFList[29].isSolvable := # Q-classes of dimension 29
 ListWithIdenticalEntries( 2, false );

IMFList[30].isSolvable := # Q-classes of dimension 30
 ListWithIdenticalEntries( 33, false );

IMFList[31].isSolvable := # Q-classes of dimension 31
 ListWithIdenticalEntries( 4, false );


#############################################################################
##
##  Descriptions of the isomorphism types of the class representatives of the
##  irreducible maximal finite integral matrix groups.
##

IMFList[1].isomorphismType := [ # Z-classes of dimension 1
 "C2"];

IMFList[2].isomorphismType := [ # Z-classes of dimension 2
 "C2 wr C2 = D8",
 "C2 x S3 = C2 x W(A2) = D12"];

IMFList[3].isomorphismType := [ # Z-classes of dimension 3
 "C2 wr S3 = C2 x S4 = W(B3)",
 "C2 wr S3 = C2 x S4 = C2 x W(A3)",
 "C2 wr S3 = C2 x S4 = C2 x W(A3)"];

IMFList[4].isomorphismType := [ # Z-classes of dimension 4
 "C2 wr S4 = W(B4)",
 "W(F4)",
 "D12 wr C2 = (C2 x W(A2)) wr C2",
 "(D12 Y D12):C2",
 "C2 x S5 = C2 x W(A4)",
 "C2 x S5 = C2 x W(A4)"];

IMFList[5].isomorphismType := [ # Z-classes of dimension 5
 "C2 wr S5 = W(B5)",
 "C2 wr S5 = C2 x W(D5)",
 "C2 wr S5 = C2 x W(D5)",
 "C2 x S6",
 "C2 x S6",
 "C2 x S6",
 "C2 x S6"];

IMFList[6].isomorphismType := [ # Z-classes of dimension 6
 "C2 wr S6 = W(B6)",
 "C2 wr S6 = C2 x W(D6)",
 "C2 wr S6 = C2 x W(D6)",
 "(C2 x S4) wr C2 = (C2 x W(A3)) wr C2",
 "(C2 x S4) wr C2 = (C2 x W(A3)) wr C2",
 "subgroup of index 2 of C2 wr S6",
 "(C2 x S3) wr S3 = (C2 x W(A2)) wr S3 = D12 wr S3",
 "C2 x W(E6)",
 "C2 x W(E6)",
 "C2 x S3 x S4 = D12 x S4 = C2 x W(A2) x W(A3)",
 "C2 x S3 x S4 = D12 x S4 = C2 x W(A2) x W(A3)",
 "C2 x S7 = C2 x W(A6)",
 "C2 x S7 = C2 x W(A6)",
 "C2 x PGL(2,7)",
 "C2 x S5",
 "C2 x S5",
 "C2 x S5"];

IMFList[7].isomorphismType := [ # Z-classes of dimension 7
 "C2 wr S7 = W(B7)",
 "C2 wr S7 = C2 x W(D7)",
 "C2 wr S7 = C2 x W(D7)",
 "C2 x S8 = C2 x W(A7)",
 "C2 x S8 = C2 x W(A7)",
 "W(E7)",
 "W(E7)"];

IMFList[8].isomorphismType := [ # Z-classes of dimension 8
 "C2 wr S8 = W(B8)",
 "C2 wr S8 = C2 x W(D8)",
 "C2 wr S8 = C2 x W(D8)",
 "W(F4) wr C2",
 "W(E8)",
 "S3 x W(F4) = W(A2) x W(F4)",
 "D12 wr S4 = (W(A2) x C2) wr S4",
 "C2 x (S3 wr S4)",
 "C2 x (S3 wr S4)",
 "(C2 x (S3 wr C2)) wr C2",
 "C2 x S9 = C2 x W(A8)",
 "C2 x S9 = C2 x W(A8)",
 "C2 x (S3 wr S3)",
 "(C2 x S5) wr C2",
 "(C2 x S5) wr C2",
 "(SL(2,5) Y SL(2,5)):(C2 x C2)",
 "C2 x (S5 wr C2)",
 "C2 x S5 x S3",
 "C2 x S5 x S3",
 "W(F4)",
 "W(F4)",
 "S3 subd W(F4) = (C3 x (SL(2,3) Y SL(2,3)):C2).C2",
 "C2 x PGL(2,7)",
 "C2 x PGL(2,7)",
 "C2 x PGL(2,7)",
 "C2 x PGL(2,7)"];

IMFList[9].isomorphismType := [ # Z-classes of dimension 9
 "C2 wr S9",
 "C2 wr S9",
 "C2 wr S9",
 "(C2 wr S3) wr S3",
 "(C2 wr S3) wr S3",
 "(C2 wr S3) wr S3",
 "(C2 wr S3) wr S3",
 "C2^9:(S3 wr C2)",
 "C2^9:(S3 wr C2)",
 "C2 x (S4 wr C2)",
 "C2 x (S4 wr C2)",
 "C2 x (S4 wr S3)",
 "C2 x (S4 wr S3)",
 "C2 x S4 x S4",
 "C2 x S10",
 "C2 x S10",
 "C2 x S10",
 "C2 x S10",
 "C2 x S6",
 "C2 x S6"];

IMFList[10].isomorphismType := [ # Z-classes of dimension 10
 "C2 wr S10",
 "C2 wr S10",
 "C2 wr S10",
 "C2^9:S10",
 "C2^10:S6",
 "C2^10:(S5 wr C2)",
 "C2^10:(S5 wr C2)",
 "C2^10:S5",
 "C2^10:S5",
 "C2^6:S5",
 "C2^6:S5",
 "C2^5:S6",
 "C2^5:S6",
 "(C2 x S6) wr C2",
 "(C2 x S6) wr C2",
 "(C2 x S6) wr C2",
 "(C2 x S6) wr C2",
 "(C2 x S6) wr C2",
 "(C2 x S6) wr C2",
 "C2 x (S6 wr C2)",
 "C2 x (S6 wr C2)",
 "C2 x (S6 wr C2)",
 "(C2^2 x A5):C2",
 "(C2^2 x A5):C2",
 "(C2 x S3) wr S5",
 "C2 x (S3 wr S5)",
 "C2 x (S3 wr S5)",
 "C2 x (C3^4:C2):S5",
 "S3 x (C2 wr S5)",
 "S3 x (C2 wr S5)",
 "C2 x SU(4,2):C2",
 "(C6 x SU(4,2)):C2",
 "(C6 x SU(4,2)):C2",
 "D12 x S6",
 "D12 x S6",
 "D12 x S6",
 "D12 x S6",
 "C2 x S6",
 "C2 x S6",
 "C2 x S6",
 "C2 x S6",
 "C2 x S11",
 "C2 x S11",
 "C2 x PGL(2,11)",
 "C2 x PGL(2,11)",
 "C2 x PGL(2,11)"];

IMFList[11].isomorphismType := [ # Z-classes of dimension 11
 "C2 wr S11 = W(B11)",
 "C2 wr S11 = C2 x W(D11)",
 "C2 wr S11 = C2 x W(D11)",
 "C2 x S12 = C2 x W(A11)",
 "C2 x S12 = C2 x W(A11)",
 "C2 x S12 = C2 x W(A11)",
 "C2 x S12 = C2 x W(A11)",
 "C2 x S12 = C2 x W(A11)",
 "C2 x S12 = C2 x W(A11)"];

IMFList[12].isomorphismType := [ # Q-classes of dimension 12
 "C2 wr S12 = W(B12)",
 "W(F4) wr S3",
 "(C2 x W(E6)) wr C2",
 "D12 wr S6 = (C2 x S3) wr S6 = (C2 x W(A2)) wr S6",
 "C6.PSU(4,3).(C2 x C2)",
 "((3+^(1+2):SL(2,3)) x SL(2,3)).C2",
 "(C2 x S5) wr C2",
 "(C2 x S5) wr S3 = (C2 x W(A4)) wr S3",
 "(C2 x D10 x A5):C2",
 "(SL(2,5) Y SL(2,3)).C2",
 "C2 x S3 x S5",
 "(C2 x C3.A6).(C2 x C2)",
 "(C2 x S7) wr C2 = (C2 x W(A6)) wr C2",
 "(C2 x PGL(2,7)) wr C2",
 "(PSL(2,7) x D8):C2",
 "(PSL(2,7) x D8):C2",
 "C2 x S3 x S7 = C2 x W(A2) x W(A6)",
 "C2 x S3 x PGL(2,7)",
 "C2 x S13 = C2 x W(A12)"];

IMFList[13].isomorphismType := [ # Z-classes of dimension 13
 "C2 wr S13 = W(B13)",
 "C2 wr S13 = C2 x W(D13)",
 "C2 wr S13 = C2 x W(D13)",
 "C2 x S14 = C2 x W(A13)",
 "C2 x S14 = C2 x W(A13)",
 "C2 x S14 = C2 x W(A13)",
 "C2 x S14 = C2 x W(A13)",
 "C2 x SL(3,3):C2",
 "C2 x SL(3,3):C2",
 "C2 x SL(3,3):C2",
 "C2 x SL(3,3):C2",
 "C2 x SL(3,3):C2",
 "C2 x SL(3,3):C2",
 "C2 x PSL(2,25):C2",
 "C2 x PSL(2,25):C2",
 "C2 x PSL(2,25):C2",
 "C2 x PSL(2,25):C2"];

IMFList[14].isomorphismType := [ # Q-classes of dimension 14
 "C2 wr S14 = W(B14)",
 "W(E7) wr C2",
 "(C2 x S3) wr S7 = D12 wr S7 = (C2 x W(A2)) wr S7",
 "C2 x G2(3)",
 "(SU(3,3) x C4).C2",
 "S3 x W(E7) = W(A2) x W(E7)",
 "C2 x S15 = C2 x W(A14)",
 "C2 x S7",
 "C2 x S8",
 "C2 x PGL(2,13)",
 "C2 x PSL(2,13)",
 "C2 x PGL(2,13)"];

IMFList[15].isomorphismType := [ # Q-classes of dimension 15
 "C2 wr S15 = W(B15)",
 "C2 x S16 = C2 x W(A15)",
 "C2 x W(E6)",
 "C2 x Sp(6,2)",
 "(C2 x S6) wr S3 = (C2 x W(A5)) wr S3",
 "C2 x S7"];

IMFList[16].isomorphismType := [ # Q-classes of dimension 16
 "C2 wr S16 = W(B16)",
 "W(E8) wr C2",
 "W(F4) wr S4",
 "2+^(1+8).O+(8,2)",
 "(C2 x S3) wr S8 = (C2 x W(A2)) wr S8",
 "(SL(2,9) Y SL(2,9)).(C2 x C2)",
 "W(E8) x W(A2)",
 "(S3 x W(F4)) wr C2 = (W(A2) x W(F4)) wr C2",
 "((Sp(4,3) x C3) Y SL(2,3)).C2",
 "(C2 x S5) wr S4 = (C2 x W(A4)) wr S4",
 "(((SL(2,5) Y SL(2,5)):C2) x D10):C2",
 "C2 x (S5 x S5):C2",
 "((SL(2,5) Y SL(2,5)):(C2 x C2)) wr C2",
 "C2.A10",
 "S5 x W(F4)",
 "(SL(2,5) Y (D8 Y Q8).A5).C2",
 "(C2 x S3 x S5) wr C2",
 "S3 x (SL(2,5) Y SL(2,5)):(C2 x C2)",
 "(SL(2,5) Y SL(2,9)):C2",
 "(C2 x A6).(C2 x C2)",
 "(SL(2,5) Y ((SL(2,3) x C3).C2)).C2",
 "D120.(C4 x C2)",
 "(SL(2,7) Y C2.S3).C2",
 "C2 x S3 x PGL(2,7)",
 "(C2.A7 Y C2.S3).C2",
 "(SL(2,7) Y C2.S3).C2",
 "(C2 x PGL(2,7)) wr C2",
 "D120.C2",
 "D120.C2",
 "C2 x S17 = C2 x W(A16)",
 "C2 x PGL(2,17)"];

IMFList[17].isomorphismType := [ # Z-classes of dimension 17
 "C2 wr S17",
 "C2 wr S17",
 "C2 wr S17",
 "C2 x S18",
 "C2 x S18",
 "C2 x S18",
 "C2 x S18",
 "C2 x S18",
 "C2 x S18",
 "C2^17:(C17:C8)",
 "C2^17:(C17:C8)",
 "C2^9:(C17:C8)",
 "C2^9:(C17:C8)",
 "C2 x PSL(2,17)",
 "C2 x PSL(2,17)",
 "C2 x PSL(2,17)",
 "C2 x SL(2,16):C4",
 "C2 x SL(2,16):C4",
 "C2 x SL(2,16):C4",
 "C2 x SL(2,16):C4",
 "C2 x SL(2,16):C4",
 "C2 x SL(2,16):C4",
 "C2 x SL(2,16):C4",
 "C2 x SL(2,16):C4"];

IMFList[18].isomorphismType := [ # Q-classes of dimension 18
 "C2 wr S18 = W(B18)",
 "(C2 x Sp(4,4)).C2",
 "(C2 x W(E6)) wr S3",
 "(C2 x 3+^(1+4):Sp(4,3)).C2",
 "(C2 x S3) wr S9 = (C2 x W(A2)) wr S9",
 "(C2 x S5) wr S3",
 "(C2 x S10) wr C2 = (C2 x W(A9)) wr C2",
 "(C2 x A5 x A5).(C2 x C2)",
 "(C2 x C3.A6).(C2 x C2)",
 "C2 x S3 x S10 = C2 x W(A2) x W(A9)",
 "(C2 x S7) wr S3 = (C2 x W(A6)) wr S3",
 "(C2 x PGL(2,7)) wr S3",
 "(C2 x PSL(2,7) x PSL(2,7)).(C2 x C2)",
 "C2 x PGL(2,17)",
 "C2 x PSL(2,17)",
 "C2 x S19 = C2 x W(A18)",
 "C2 x PGL(2,19)"];

IMFList[19].isomorphismType := [ # Z-classes of dimension 19
 "C2 wr S19",
 "C2 wr S19",
 "C2 wr S19",
 "C2 x S20",
 "C2 x S20",
 "C2 x S20",
 "C2 x S20",
 "C2 x S20",
 "C2 x S20"];

IMFList[20].isomorphismType := [ # Q-classes of dimension 20
 "C2 wr S20",
 "W(F4) wr S5",
 "(SU(5,2) x SL(2,3)).C2",
 "C2.M12.C2",
 "(D8 x S6).C2",
 "(C2 x S3) wr S10 = (C2 x W(A2)) wr S10",
 "((SU(4,2) x C6):C2) wr C2",
 "(C2 x S6) wr S4 = (C2 x W(A5)) wr S4",
 "W(F4) x S6 = W(F4) x W(A5)",
 "(C2 x SU(4,2)).C2",
 "(C2 x S6) wr C2",
 "(SU(4,2) x C6).C2",
 "(C2 x S5) wr S5 = (C2 x W(A4)) wr S5",
 "C2 x 5+^(1+2):GL(2,5)",
 "C2 x S5 x S6 = C2 x W(A4) x W(A5)",
 "(C2.PSL(3,4)).(C2 x C2)",
 "C2.M22.C2",
 "C2 x S7",
 "C2 x S21 = C2 x W(A20)",
 "(C2 x PSL(3,4)).(C2 x S3)",
 "C2 x S8",
 "(C2 x S11) wr C2 = (C2 x W(A10)) wr C2",
 "(PSL(2,11) x D12).C2",
 "(C2 x PGL(2,11)) wr C2",
 "(C2 x PGL(2,11)) wr C2",
 "(PSL(2,11) x D12).C2",
 "(SL(2,11) Y SL(2,3)).C2",
 "C2 x S3 x S11 = C2 x W(A2) x W(A10)",
 "C2 x S3 x PGL(2,11)",
 "C2 x S3 x PGL(2,11)",
 "C2 x PGL(2,19)"];

IMFList[21].isomorphismType := [ # Q-classes of dimension 21
 "C2 wr S21",
 "W(E7) wr S3",
 "W(E7)",
 "(C2 x PSU(4,3)).D8",
 "C2 x Sp(6,2)",
 "(C2 x PSU(3,5)).S3",
 "C2 x S7",
 "C2 x S22 = C2 x W(A21)"];

IMFList[22].isomorphismType := [ # Q-classes of dimension 22
 "C2 wr S22 = W(B22)",
 "(C2 x PSU(6,2)).S3",
 "(C2 x S3) wr S11 = (C2 x W(A2)) wr S11",
 "(C2 x S12) wr C2 = (C2 x W(A11)) wr C2",
 "C2 x S3 x S12 = C2 x W(A2) x W(A11)",
 "(C2 x HS).C2",
 "(C2 x Mc).C2",
 "C2 x S23 = C2 x W(A22)",
 "C2 x PSL(2,23)",
 "C2 x PSL(2,23)",
 "C2 x PGL(2,23)",
 "C2 x PGL(2,23)"];

IMFList[23].isomorphismType := [ # Z-classes of dimension 23
 "C2 x S24",
 "C2 x S24",
 "C2 x S24",
 "C2 x S24",
 "C2 x S24",
 "C2 x S24",
 "C2 x S24",
 "C2 x S24",
 "C2 wr S23",
 "C2 wr S23",
 "C2 wr S23",
 "C2 wr M23",
 "C2 wr M23",
 "C2^12:M23",
 "C2^12:M23",
 "C2 x M24",
 "C2 x M24",
 "C2 x M24",
 "C2 x M24",
 "C2 x M24",
 "C2 x M24",
 "C2 x Co2",
 "C2 x Co2",
 "C2 x Co2",
 "C2 x Co3",
 "C2 x Co3",
 "C2 x Co3",
 "C2 x Co3"];

IMFList[24].isomorphismType := [ # Q-classes of dimension 24
 "C2 wr S24 = W(B24)",
 "W(E8) wr S3",
 "C2.Co1",
 "(((SL(2,5) Y SL(2,5)):C2) x A5).C2",
 "W(F4) wr S6",
 "(C6 x PSU(4,3).C2 Y SL(2,3)).C2",
 "(C2 x W(E6)) wr S4",
 "((C2 x C3.A6).C2 Y SL(2,3)).C2",
 "(Sp(4,3) x 3+^(1+2):SL(2,3)).C2",
 "(C2 x S3) wr S12 = (C2 x W(A2)) wr S12",
 "(C6.PSU(4,3).(C2 x C2)) wr C2",
 "W(F4) x W(E6)",
 "((3+^(1+2):SL(2,3) x SL(2,3)).C2) wr C2",
 "(C3.S6 x D8).C2",
 "(S3 x W(F4)) wr S3",
 "(C6.PSL(3,4).C2 Y D8).C2",
 "((SL(2,3) Y C4).C2 x PSU(3,3)).C2",
 "C2 x S25 = C2 x W(A24)",
 "(C2 x S5) wr S6 = (C2 x W(A4)) wr S6",
 "(C2 x S5) wr S4",
 "((SL(2,5) Y SL(2,5)):(C2 x C2)) wr S3",
 "(C2.J2 Y SL(2,5)):C2",
 "((C2 x D10 x A5).C2) wr C2",
 "((SL(2,5) Y SL(2,3)).C2) wr C2",
 "(SL(2,5) Y (D8 Y Q8).A5).C2",
 "(((SL(2,5) Y SL(2,5)):C2) x A5):C2",
 "W(F4) x S5",
 "(SL(2,5) Y (C2 x 3+^(1+2)).GL(2,3)).C2",
 "(C2 x S3 x S5) wr C2",
 "((C2 x C3.A6).(C2 x C2)) wr C2",
 "S3 x (SL(2,5) Y SL(2,3)).C2",
 "(C2 x S7) wr S4 = (C2 x W(A6)) wr S4",
 "(PSL(2,7) x W(F4)).C2",
 "(C2 x PGL(2,7)) wr S4",
 "(PSL(2,7) x W(F4)).C2",
 "((PSL(2,7) x D8).C2) wr C2",
 "W(F4) x S7 = W(F4) x W(A6)",
 "((PSL(2,7) x D8).C2) wr C2",
 "W(F4) x PGL(2,7)",
 "(SL(2,13) Y SL(2,3)).C2",
 "(SL(2,7) x PSL(2,7)).C2",
 "C6.A7:C2",
 "(C3.M10 x SL(2,3)).C2",
 "(A5 x ((C3 x D8).C2)).C2",
 "(C3.M10 x D8).C2",
 "(C2 x S3 x S7) wr C2 = (C2 x W(A2) x W(A6)) wr C2",
 "(C2 x S3 x PGL(2,7)) wr C2",
 "S3 x ((PSL(2,7) x D8).C2)",
 "S3 x ((PSL(2,7) x D8).C2)",
 "(C2 x S13) wr C2 = (C2 x W(A12)) wr C2",
 "((C2 x PSL(3,3)).C2 x C3).C2",
 "C2 x S3 x S13 = C2 x W(A2) x W(A12)",
 "(C2 x D78).C12",
 "C2 x S5 x W(E6) = C2 x W(A4) x W(E6)",
 "(C2 x S3 x S5) wr S3 = ((C2 x W(A2)) x W(A4)) wr S3",
 "(C2 x C3.PGL(2,9) x D10).C2",
 "S3 x (C2 x D10 x A5).C2",
 "(C2 x PSU(4,2)).C2",
 "SL(2,7) Y (C2.S4)",
 "(SL(2,7) Y Q16).C2",
 "(C2 x PGL(2,7)) wr S3",
 "C2 x S5 x S7 = C2 x W(A4) x W(A6)",
 "C2 x S5 x PGL(2,7)",
 "(SL(2,11) Y SL(2,3)).C2",
 "C2 x PSL(2,11):C2"];

IMFList[25].isomorphismType := [ # Q-classes of dimension 25
 "C2 wr S25 = W(B25)",
 "(C2 x W(A5)) wr S5 = (C2 x S6) wr S5",
 "C2 x (S6 x S6):C2",
 "C2 x PGL(2,49)",
 "C2 x S26 = C2 x W(A25)"];

IMFList[26].isomorphismType := [ # Q-classes of dimension 26
 "C2 wr S26 = W(B26)",
 "(C2 x S3) wr S13 = (C2 x W(A2)) wr S13",
 "(C2 x PGL(3,3):C2) wr C2",
 "(C2 x PSL(2,25):C2) wr C2",
 "(C2 x S14) wr C2 = (C2 x W(A13)) wr C2",
 "(C2 x PSp(4,5)).C2",
 "C2 x 3D4(2):C3",
 "C2 x PGL(4,3)",
 "(C2 x PSp(6,3) x C3).C2",
 "C2 x PSp(4,5):C2",
 "C2 x PGL(2,25):C2",
 "C2 x PSL(2,25):C2",
 "C2 x PSL(2,25):C2",
 "C2 x S3 x PSL(2,25):C2",
 "C2 x S3 x S14 = C2 x W(A2) x W(A13)",
 "C2 x S27 = C2 x W(A26)"];

IMFList[27].isomorphismType := [ # Q-classes of dimension 27
 "C2 wr S27 = W(B27)",
 "(C2 x S10) wr S3 = (C2 x W(A9)) wr S3",
 "C2 x S9",
 "C2 x PGL(3,3):C2",
 "C2 x S28 = C2 x W(A27)"];

IMFList[28].isomorphismType := [ # Q-classes of dimension 28
 "C2 wr S28 = W(B28)",
 "(C2 x S3) wr S14 = (C2 x W(A2)) wr S14",
 "W(F4) wr S7",
 "(C2 x S5) wr S7 = (C2 x W(A4)) wr S7",
 "W(E7) wr S4",
 "(W(A2) x W(E7)) wr C2",
 "(C2 x G2(3)) wr C2",
 "(C2 x S7) wr C2",
 "(C2 x S8) wr C2",
 "((SU(3,3) x C4).C2) wr C2",
 "(C2 x PGL(2,13)) wr C2",
 "(C2 x PSL(2,13)) wr C2",
 "(C2 x PGL(2,13)) wr C2",
 "(C2 x S15) wr C2 = (C2 x W(A14)) wr C2",
 "(Sp(6,3) x C3).C2",
 "(C2.J2 Y SL(2,3)).C2",
 "(C2 x PO+(8,2)):S3",
 "Sz(8):C3 x C4",
 "W(F4) Y W(E7)",
 "(C2 x J2).C2",
 "(C2 x S3 x G2(3)).C2",
 "(PSU(3,3) x (Q8 Y C4).S3).C2",
 "S3 x (PSU(3,3) x C4).C2",
 "C2 x PSU(3,5):C2",
 "W(A4) x W(E7)",
 "C2 x S8",
 "C2 x J2:C2",
 "C2 x W(A2) x S7",
 "C2 x W(A2) x W(A14)",
 "C2 x W(A2) x S8",
 "(SL(2,13) Y SL(2,3)).C2",
 "(C2 x W(A2) x PSL(2,13)).C2",
 "C2 x W(A2) x PGL(2,13)",
 "C2 x W(A2) x PGL(2,13)",
 "(C2 x PSL(2,13) x S3).C2",
 "C2 x PGL(2,29)",
 "C2 x S29 = C2 x W(A28)"];

IMFList[29].isomorphismType := [ # Q-classes of dimension 29
 "C2 wr S29 = W(B29)",
 "C2 x S30 = C2 x W(A29)"];

IMFList[30].isomorphismType := [ # Q-classes of dimension 30
 "C2 wr S30 = W(B30)",
 "(C2 x W(A2)) wr S15",
 "(C2 x W(A5)) wr S6",
 "(C2 x W(E6)) wr S5",
 "(C2 x W(A6)) wr S5",
 "(C2 x PGL(2,7)) wr S5",
 "(C2 x S5) wr S5",
 "((C6 x PSU(4,2)).C2) wr S3",
 "(C2 x S6) wr S3",
 "(C2 x W(A10)) wr S3",
 "(C2 x PGL(2,11)) wr S3",
 "(C2 x PGL(2,11)) wr S3",
 "(C2 x Sp(6,2)) wr C2",
 "(C2 x W(E6)) wr C2",
 "(C2 x W(A6)) wr C2",
 "(C2 x W(A15)) wr C2",
 "(C2 x PSU(4,2)):C2",
 "(C2 x C3.PSU(4,3)).(C2 x C2)",
 "C2 x W(A2) x W(A15)",
 "(C2 x PSU(4,2) x 3+^(1+2):SL(2,3)).C2",
 "(C2 x C3.S6).C2",
 "C2 x W(A5) x W(E6)",
 "(C2 x C3.PSL(3,4)).(C2 x C2)",
 "C2 x W(A2) x Sp(6,2)",
 "C2 x W(A5) x S5",
 "C2 x W(A2) x W(A6)",
 "C2 x C3.S7",
 "C2 x W(A5) x W(A6)",
 "C2 x W(A5) x PGL(2,7)",
 "C2 x PGL(2,29)",
 "C2 x PSL(2,31)",
 "C2 x PGL(2,31)",
 "C2 x S31 = C2 x W(A30)"];

IMFList[31].isomorphismType := [ # Q-classes of dimension 31
 "C2 wr S31 = W(B31)",
 "C2 x PSL(2,32):C5",
 "C2 x PSL(3,5):C2",
 "C2 x S32 = C2 x W(A31)"];


#############################################################################
##
##  Norms  of  the  short  vectors  for  the  class  representatives  of  the
##  irreducible maximal finite integral matrix groups.
##

IMFList[1].minimalNorm := [ # Z-classes of dimension 1
 1];

IMFList[2].minimalNorm := [ # Z-classes of dimension 2
 1,2];

IMFList[3].minimalNorm := [ # Z-classes of dimension 3
 1,3,2];

IMFList[4].minimalNorm := [ # Z-classes of dimension 4
 1,2,2,4,2,4];

IMFList[5].minimalNorm := [ # Z-classes of dimension 5
 1,2,4,5,2,4,3];

IMFList[6].minimalNorm := [ # Z-classes of dimension 6
 1,2,2,2,3,3,2,2,4,4,6,6,2,4,3,4,5];

IMFList[7].minimalNorm := [ # Z-classes of dimension 7
 1,2,4,7,2,2,3];

IMFList[8].minimalNorm := [ # Z-classes of dimension 8
 1,2,2,2,2,4,2,4,6,4,2,8,8,2,4,4,8,8,4,4,3,6,8,6,4,14];

IMFList[9].minimalNorm := [ # Z-classes of dimension 9
 1,2,4,2,3,2,4,3,4,4,9,6,8,6,9,2,8,4,12,4];

IMFList[10].minimalNorm := [ # Z-classes of dimension 10
 1,2,2,4,4,2,4,3,4,4,5,4,5,2,4,2,5,3,4,5,6,9,4,8,2,4,6,10,4,8,3,4,6,4,10,6,8,
 3,4,4,4,2,10,4,10,6];

IMFList[11].minimalNorm := [ # Z-classes of dimension 11
 1,2,4,11,5,8,6,2,2];

IMFList[12].minimalNorm := [ # Q-classes of dimension 12
 1,2,2,2,4,4,3,2,4,4,6,8,2,4,4,8,4,8,2];

IMFList[13].minimalNorm := [ # Z-classes of dimension 13
 1,2,4,13,2,12,4,3,3,4,4,12,12,5,4,12,6];

IMFList[14].minimalNorm := [ # Q-classes of dimension 14
 1,2,2,4,3,4,2,4,4,7,6,6];

IMFList[15].minimalNorm := [ # Q-classes of dimension 15
 1,2,3,3,2,3];

IMFList[16].minimalNorm := [ # Q-classes of dimension 16
 1,2,2,4,2,4,4,4,6,2,8,4,4,6,4,8,4,8,10,8,12,8,6,8,12,10,4,4,6,2,6];

IMFList[17].minimalNorm := [ # Z-classes of dimension 17
 1,2,4,17,2,16,4,2,4,4,4,16,6,34,4,6,8,3,4,4,7,10,17,8];

IMFList[18].minimalNorm := [ # Q-classes of dimension 18
 1,3,2,4,2,3,2,5,6,4,2,4,6,9,6,2,10];

IMFList[19].minimalNorm := [ # Z-classes of dimension 19
 1,4,2,19,2,2,10,8,9];

IMFList[20].minimalNorm := [ # Q-classes of dimension 20
 1,2,4,4,3,2,4,2,4,4,3,6,2,4,4,5,8,4,2,4,4,2,4,4,6,8,6,4,8,12,8];

IMFList[21].minimalNorm := [ # Q-classes of dimension 21
 1,2,3,3,4,21,6,2];

IMFList[22].minimalNorm := [ # Q-classes of dimension 22
 1,8,2,2,4,3,12,2,4,6,8,12];

IMFList[23].minimalNorm := [ # Z-classes of dimension 23
 23,2,2,6,4,6,16,11,1,2,4,4,2,16,4,23,4,8,3,8,12,3,4,12,5,4,10,15];

IMFList[24].minimalNorm := [ # Q-classes of dimension 24
 1,2,4,4,2,4,2,4,4,2,4,4,4,4,4,8,8,2,2,3,4,8,4,4,6,8,6,8,6,8,8,2,4,4,8,4,4,8,
 8,12,4,4,8,10,16,4,8,8,16,2,4,4,6,4,4,8,8,6,4,4,4,4,8,12,6];

IMFList[25].minimalNorm := [ # Q-classes of dimension 25
 1,2,4,6,2];

IMFList[26].minimalNorm := [ # Q-classes of dimension 26
 1,2,3,5,2,3,8,4,6,5,6,4,6,8,4,2];

IMFList[27].minimalNorm := [ # Q-classes of dimension 27
 1,2,4,6,2];

IMFList[28].minimalNorm := [ # Q-classes of dimension 28
 1,2,2,2,2,4,4,4,4,3,7,6,6,2,6,6,6,6,4,8,6,8,6,4,4,4,16,8,4,24,6,8,12,14,26,
 28,2];

IMFList[29].minimalNorm := [ # Q-classes of dimension 29
 1,2];

IMFList[30].minimalNorm := [ # Q-classes of dimension 30
 1,2,5,2,6,4,3,4,3,2,4,6,3,3,3,2,3,6,4,4,4,4,8,6,6,6,10,4,8,15,8,16,2];

IMFList[31].minimalNorm := [ # Q-classes of dimension 31
 1,4,5,2];


#############################################################################
##
##  Degrees, i.e. orbit sizes of short vectors, for the class representatives
##  of the irreducible maximal finite integral matrix groups.
##

IMFList[1].degrees := [ # Z-classes of dimension 1
 2];

IMFList[2].degrees := [ # Z-classes of dimension 2
 4,
 6];

IMFList[3].degrees := [ # Z-classes of dimension 3
 6,
 8,
 12];

IMFList[4].degrees := [ # Z-classes of dimension 4
 8,
 24,
 12,
 18,
 20,
 10];

IMFList[5].degrees := [ # Z-classes of dimension 5
 10,
 40,
 10,
 12,
 30,
 30,
 20];

IMFList[6].degrees := [ # Z-classes of dimension 6
 12,
 60,
 12,
 24,
 16,
 32,
 18,
 72,
 54,
 36,
 24,
 14,
 42,
 42,
 20,
 30,
 24];

IMFList[7].degrees := [ # Z-classes of dimension 7
 14,
 84,
 14,
 16,
 56,
 126,
 56];

IMFList[8].degrees := [ # Z-classes of dimension 8
 16,
 112,
 16,
 48,
 240,
 72,
 24,
 108,
 24,
 36,
 72,
 18,
 54,
 40,
 20,
 120,
 50,
 30,
 60,
 24,
 32,
 96,
 42,
 56,
 84,
 48];

IMFList[9].degrees := [ # Z-classes of dimension 9
 18,
 144,
 18,
 36,
 24,
 36,
 18,
 48,
 [18,144],
 72,
 32,
 96,
 36,
 48,
 20,
 90,
 90,
 90,
 30,
 90];

IMFList[10].degrees := [ # Z-classes of dimension 10
 20,
 180,
 20,
 180,
 [20,240],
 80,
 20,
 80,
 [20,80],
 40,
 64,
 120,
 32,
 60,
 60,
 60,
 24,
 40,
 60,
 72,
 60,
 40,
 60,
 60,
 30,
 180,
 30,
 162,
 120,
 30,
 80,
 270,
 240,
 90,
 36,
 60,
 90,
 40,
 30,
 90,
 30,
 110,
 22,
 [110,110],
 132,
 110];

IMFList[11].degrees := [ # Z-classes of dimension 11
 22,
 220,
 22,
 24,
 132,
 132,
 132,
 132,
 132];

IMFList[12].degrees := [ # Q-classes of dimension 12
 24,
 72,
 144,
 36,
 756,
 216,
 40,
 60,
 [120,300],
 360,
 60,
 270,
 84,
 84,
 [168,168],
 [168,168],
 126,
 126,
 156];

IMFList[13].degrees := [ # Z-classes of dimension 13
 26,
 312,
 26,
 28,
 182,
 182,
 182,
 52,
 104,
 468,
 234,
 52,
 104,
 52,
 [130,650],
 130,
 130];

IMFList[14].degrees := [ # Q-classes of dimension 14
 28,
 252,
 42,
 756,
 112,
 378,
 210,
 210,
 [420,840],
 156,
 182,
 [182,364]];

IMFList[15].degrees := [ # Q-classes of dimension 15
 30,
 240,
 240,
 240,
 90,
 70];

IMFList[16].degrees := [ # Q-classes of dimension 16
 32,
 480,
 96,
 4320,
 48,
 720,
 720,
 144,
 960,
 80,
 600,
 [200,240],
 240,
 2400,
 240,
 1200,
 120,
 360,
 1440,
 180,
 480,
 [120,240],
 336,
 [168,252],
 1680,
 336,
 168,
 [120,120,120,120],
 [120,120,120],
 272,
 [272,816]];

IMFList[17].degrees := [ # Z-classes of dimension 17
 34,
 544,
 34,
 36,
 306,
 306,
 306,
 306,
 306,
 34,
 34,
 34,
 2176,
 36,
 204,
 [816,1224],
 102,
 136,
 [510,816],
 2040,
 816,
 1020,
 240,
 102];

IMFList[18].degrees := [ # Q-classes of dimension 18
 36,
 240,
 216,
 6480,
 54,
 60,
 180,
 72,
 180,
 270,
 126,
 126,
 336,
 272,
 204,
 342,
 342];

IMFList[19].degrees := [ # Z-classes of dimension 19
 38,
 38,
 684,
 40,
 380,
 380,
 380,
 380,
 380];

IMFList[20].degrees := [ # Q-classes of dimension 20
 40,
 120,
 3960,
 3960,
 80,
 60,
 540,
 120,
 360,
 540,
 80,
 1440,
 100,
 [300,6000,6000],
 300,
 112,
 [1540,4620],
 70,
 420,
 [840,6720,7560],
 420,
 220,
 [660,660,660,1980,1980,2640,3960],
 [220,220],
 220,
 660,
 1320,
 330,
 [330,330],
 330,
 [570,1710]];

IMFList[21].degrees := [ # Q-classes of dimension 21
 42,
 378,
 672,
 1680,
 630,
 300,
 [210,210],
 462];

IMFList[22].degrees := [ # Q-classes of dimension 22
 44,
 1782,
 66,
 264,
 396,
 2200,
 550,
 506,
 [506,506,506],
 [506,506,1012,2024],
 [506,1518,2024],
 506];

IMFList[23].degrees := [ # Z-classes of dimension 23
 48,
 552,
 552,
 552,
 552,
 552,
 552,
 552,
 46,
 1012,
 46,
 46,
 46,
 46,
 [1012,64768],
 48,
 [552,53130],
 1518,
 2576,
 1518,
 2576,
 4600,
 93150,
 4600,
 552,
 75900,
 22356,
 552];

IMFList[24].degrees := [ # Q-classes of dimension 24
 48,
 720,
 196560,
 [3600,8640],
 144,
 3024,
 288,
 [2160,6480,12960],
 2160,
 72,
 1512,
 864,
 432,
 144,
 216,
 [3024,7560],
 [4536,6048],
 600,
 120,
 80,
 360,
 37800,
 [240,600],
 720,
 2400,
 1800,
 240,
 1080,
 120,
 540,
 1080,
 168,
 [1008,3024],
 168,
 [1008,3024],
 [336,336],
 504,
 [336,336],
 504,
 [2184,2184,8736],
 [2352,8064,14112],
 3024,
 1080,
 144,
 [1080,1080],
 252,
 252,
 [504,504],
 [504,504],
 312,
 [936,5616,8424],
 468,
 [624,936],
 720,
 180,
 [1080,2160,2700],
 [360,900],
 [240,1440],
 [1008,1008,2016],
 336,
 252,
 420,
 420,
 1320,
 [220,220,660]];

IMFList[25].degrees := [ # Q-classes of dimension 25
 50,
 150,
 450,
 [350,2450],
 650];

IMFList[26].degrees := [ # Q-classes of dimension 26
 52,
 78,
 104,
 104,
 364,
 3120,
 1638,
 4212,
 21840,
 312,
 [2600,3900],
 130,
 130,
 [390,1950],
 546,
 702];

IMFList[27].degrees := [ # Q-classes of dimension 27
 54,
 270,
 756,
 468,
 756];

IMFList[28].degrees := [ # Q-classes of dimension 28
 56,
 84,
 168,
 140,
 504,
 756,
 1512,
 420,
 [840,1680],
 224,
 312,
 364,
 [364,728],
 420,
 6720,
 6720,
 6720,
 6720,
 1512,
 1260,
 17472,
 1512,
 336,
 350,
 1260,
 1260,
 630,
 630,
 630,
 210,
 2184,
 1092,
 [546,1092],
 468,
 168,
 870,
 812];

IMFList[29].degrees := [ # Q-classes of dimension 29
 58,
 870];

IMFList[30].degrees := [ # Q-classes of dimension 30
 60,
 90,
 72,
 360,
 70,
 210,
 100,
 810,
 120,
 330,
 [330,330],
 330,
 480,
 480,
 140,
 480,
 240,
 [3240,10080],
 720,
 3240,
 180,
 1080,
 3780,
 720,
 300,
 210,
 630,
 630,
 630,
 812,
 [930,1860,3720,3720,7440],
 930,
 930];

IMFList[31].degrees := [ # Q-classes of dimension 31
 62,
 2046,
 372,
 992];


#############################################################################
##
##  Orbit representatives of short vectors  for the  class representatives of
##  the irreducible maximal finite integral matrix groups.
##

i := IdentityMat( 1 );
IMFList[1].orbitReps := [ # Z-classes of dimension 1
 i[1]];

i := IdentityMat( 2 );
IMFList[2].orbitReps := [ # Z-classes of dimension 2
 i[1],
 i[1]];

i := IdentityMat( 3 );
IMFList[3].orbitReps := [ # Z-classes of dimension 3
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 4 );
IMFList[4].orbitReps := [ # Z-classes of dimension 4
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 5 );
IMFList[5].orbitReps := [ # Z-classes of dimension 5
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 6 );
IMFList[6].orbitReps := [ # Z-classes of dimension 6
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 7 );
IMFList[7].orbitReps := [ # Z-classes of dimension 7
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 8 );
IMFList[8].orbitReps := [ # Z-classes of dimension 8
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 9 );
IMFList[9].orbitReps := [ # Z-classes of dimension 9
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[7]-i[8]+i[9],i[1]],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 10 );
IMFList[10].orbitReps := [ # Z-classes of dimension 10
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[2]],
 i[1],
 i[1],
 i[1],
 [i[1],i[2]],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[2]],
 i[1],
 i[1]];

i := IdentityMat( 11 );
IMFList[11].orbitReps := [ # Z-classes of dimension 11
 i[1],
 i[1],
 i[1]+i[2],
 i[1],
 i[1],
 i[1]-i[2],
 i[1]-i[2],
 i[1]-i[2],
 i[1]];

i := IdentityMat( 12 );
IMFList[12].orbitReps := [ # Q-classes of dimension 12
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[4],i[1]],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[7]],
 [i[1],i[6]],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 13 );
IMFList[13].orbitReps := [ # Z-classes of dimension 13
 i[1],
 i[1],
 i[1]+i[2],
 i[1],
 i[1],
 i[1],
 i[1]-i[2],
 i[1]-i[3]+i[6],
 i[1],
 i[1],
 i[1],
 i[1]+i[2]+i[3]-i[6],
 i[1]+i[3],
 i[1],
 [i[1]+i[2],i[1]],
 i[1]+i[2],
 i[1]];

i := IdentityMat( 14 );
IMFList[14].orbitReps := [ # Q-classes of dimension 14
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[6]],
 i[1],
 i[1],
 [i[2],i[1]]];

i := IdentityMat( 15 );
IMFList[15].orbitReps := [ # Q-classes of dimension 15
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 16 );
IMFList[16].orbitReps := [ # Q-classes of dimension 16
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[7]],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[4],i[1]],
 i[1],
 [i[9],i[1]],
 i[1],
 i[1],
 i[1],
 [i[1],i[2],i[4],i[5]],
 [i[1],i[3],i[7]],
 i[1],
 [i[3],i[1]]];

i := IdentityMat( 17 );
IMFList[17].orbitReps := [ # Z-classes of dimension 17
 i[1],
 i[1],
 i[1]+i[2],
 i[1],
 i[1],
 i[1],
 i[1]-i[2],
 i[1]-i[2],
 i[1]-i[2],
 i[1]-i[2]-i[3]+i[4]+i[7]+i[15],
 i[1]-i[2]-i[5]+i[6]-i[12],
 i[1]+i[3]-i[4]+i[5]+i[7]-i[8]+i[9]+i[11],
 i[1]-i[3],
 i[1]-i[3]+i[6]-i[9]+i[11],
 i[1],
 [i[1]-i[9],i[1]],
 i[1]+i[6],
 i[1],
 [i[1],i[1]-i[5]],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 18 );
IMFList[18].orbitReps := [ # Q-classes of dimension 18
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 19 );
IMFList[19].orbitReps := [ # Z-classes of dimension 19
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 20 );
IMFList[20].orbitReps := [ # Q-classes of dimension 20
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[6]-i[7],i[1],i[2]],
 i[1],
 i[1],
 [i[1],i[2]],
 i[1],
 i[1],
 [i[20],i[5],i[1]],
 i[1],
 i[1],
 [i[1],i[8],i[10],i[12],i[13],i[3],i[2]],
 [i[1],i[2]],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[3]],
 i[1],
 [i[5],i[1]]];

i := IdentityMat( 21 );
IMFList[21].orbitReps := [ # Q-classes of dimension 21
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[1]+i[15]+i[20]],
 i[1]];

i := IdentityMat( 22 );
IMFList[22].orbitReps := [ # Q-classes of dimension 22
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[2],i[3]],
 [i[1],i[16],i[3],i[4]],
 [i[4],i[1],i[2]],
 i[1]];

i := IdentityMat( 23 );
IMFList[23].orbitReps := [ # Z-classes of dimension 23
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[2],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[12],
 [i[12],i[1]],
 i[1],
 [i[10],i[1]],
 i[14],
 i[11],
 i[6],
 i[12],
 i[1],
 i[2],
 i[2],
 i[7],
 i[1],
 i[6],
 i[18]];

i := IdentityMat( 24 );
IMFList[24].orbitReps := [ # Q-classes of dimension 24
 i[1],
 i[1],
 i[1],
 [i[2],i[1]],
 i[1],
 i[1],
 i[1],
 [i[1],i[18],i[13]],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[2]],
 [i[2],i[1]],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[4],i[1]],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[10],i[1]],
 i[1],
 [i[7],i[1]],
 [i[1],i[7]],
 i[1],
 [i[1],i[6]],
 i[1],
 [i[5],i[9],i[1]],
 [i[1],i[11],i[6]],
 i[1],
 i[1],
 i[1],
 [i[1],i[4]],
 i[1],
 i[1],
 [i[1],i[7]],
 [i[1],i[6]],
 i[1],
 [i[3],i[10],i[1]],
 i[1],
 [i[11],i[1]],
 i[1],
 i[1],
 [i[4]-i[23]-i[24],i[1],i[2]],
 [i[4],i[1]],
 [i[10],i[1]],
 [i[1],i[14],i[2]],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[2],i[3],i[1]]];

i := IdentityMat( 25 );
IMFList[25].orbitReps := [ # Q-classes of dimension 25
 i[1],
 i[1],
 i[1],
 [i[23],i[1]],
 i[1]];

i := IdentityMat( 26 );
IMFList[26].orbitReps := [ # Q-classes of dimension 26
 i[1],
 i[1],
 i[1]-i[3]+i[6],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[2]],
 i[1],
 i[1],
 [i[22]+i[23]+i[26],i[1]],
 i[1],
 i[1]];

i := IdentityMat( 27 );
IMFList[27].orbitReps := [ # Q-classes of dimension 27
 i[1],
 i[1],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 28 );
IMFList[28].orbitReps := [ # Q-classes of dimension 28
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[28]],
 i[1],
 i[1],
 i[1],
 [i[2],i[1]],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[28]],
 i[1],
 i[1],
 i[1],
 i[1]];

i := IdentityMat( 29 );
IMFList[29].orbitReps := [ # Q-classes of dimension 29
 i[1],
 i[1]];

i := IdentityMat( 30 );
IMFList[30].orbitReps := [ # Q-classes of dimension 30
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[1],i[2]],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[28],i[1]],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 i[1],
 [i[5],i[1],i[2],i[7],i[3]],
 i[1],
 i[1]];

i := IdentityMat( 31 );
IMFList[31].orbitReps := [ # Q-classes of dimension 31
 i[1],
 i[1],
 i[1],
 i[1]];

for i in [ 1 .. 31 ] do
  MakeImmutable( IMFList[i].size );
  MakeImmutable( IMFList[i].elementaryDivisors );
  MakeImmutable( IMFList[i].isSolvable );
  MakeImmutable( IMFList[i].isomorphismType );
  MakeImmutable( IMFList[i].minimalNorm);
  MakeImmutable( IMFList[i].degrees );
  MakeImmutable( IMFList[i].orbitReps );
od;

if IsBound( IMFRec.i ) then
  i := IMFRec.i;
  Unbind( IMFRec.i );
else
  Unbind( i );
fi;

#############################################################################
##
#E