  
  [1X3 [33X[0;0YAutomorphism groups and Canonical Forms[133X[101X
  
  [33X[0;0YWe  refer  to [Eic08] for background on the algorithms used in this chapter.
  Throughout the chapter, we assume that [22XF[122X is a finite field.[133X
  
  
  [1X3.1 [33X[0;0YAutomorphism groups[133X[101X
  
  [33X[0;0YLet  [22XT[122X  be  a  nilpotent table over [22XF[122X. The following function can be used to
  determine  the  automorphism  group  of  the  algebra  described  by  [22XT[122X. The
  automorphism  group is determined as a subgroup of [22XGL(T.dim, T.fld)[122X given by
  generators  and  its  order. There is a variation available to determine the
  automorphism  group of a modular group algebra [22XFG[122X, where [22XF[122X is a finite field
  and [22XG[122X is a [22Xp[122X-group.[133X
  
  [1X3.1-1 AutGroupOfTable[101X
  
  [33X[1;0Y[29X[2XAutGroupOfTable[102X( [3XT[103X ) [32X function[133X
  [33X[1;0Y[29X[2XAutGroupOfRad[102X( [3XFG[103X ) [32X function[133X
  
  [33X[0;0YIn both cases, the automorphism group is described by a record. The matrices
  in  the  lists [10XglAutos[110X and [10XagAutos[110X generate together the automorphism group.
  The  matrices  in  [10XagAutos[110X  generate  a [22Xp[122X-group. The entry [10Xsize[110X contains the
  order of the automorphism group.[133X
  
  
  [1X3.2 [33X[0;0YCanonical forms[133X[101X
  
  [33X[0;0YLet  [22XT[122X be a nilpotent table. The following function can be used to determine
  the  canonical  form  of  [22XT[122X  if  the  underlying  field  of [22XT[122X is finite. The
  canonical form is a nilpotent table which is unique for the isomorphism type
  of  the  algebra  defined  by  [22XT[122X.  Again  there is a variation available for
  modular group algebras.[133X
  
  [1X3.2-1 CanonicalFormOfTable[101X
  
  [33X[1;0Y[29X[2XCanonicalFormOfTable[102X( [3XT[103X ) [32X function[133X
  [33X[1;0Y[29X[2XCanonicalFormOfRad[102X( [3XFG[103X ) [32X function[133X
  
  [33X[0;0YThe automorphism group of [22XT[122X is determined as a side-product of computing the
  canonical form. The following functions can be used to return both.[133X
  
  [1X3.2-2 CanoFormWithAutGroupOfTable[101X
  
  [33X[1;0Y[29X[2XCanoFormWithAutGroupOfTable[102X( [3XT[103X ) [32X function[133X
  [33X[1;0Y[29X[2XCanoFormWithAutGroupOfRad[102X( [3XFG[103X ) [32X function[133X
  
  [33X[0;0YIn both cases, these functions return a record with entries [10Xcano[110X and [10Xauto[110X.[133X
  
  
  [1X3.3 [33X[0;0YExample of canonical form computation[133X[101X
  
  [33X[0;0YWe compute the automorphism group and a canonical form for the modular group
  algebra of the dihedral group of order 8.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XA := GroupRing(GF(2), SmallGroup(8,3));;[127X[104X
    [4X[25Xgap>[125X [27XT := TableByWeightedBasisOfRad(A);;[127X[104X
    [4X[25Xgap>[125X [27XC := CanoFormWithAutGroupOfTable(T);;[127X[104X
    [4X[28X[128X[104X
    [4X[28X# check that the canonical form is not equal to T[128X[104X
    [4X[25Xgap>[125X [27XCompareTables(C.cano, T);[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[28X[128X[104X
    [4X[28X# the order of the automorphism group[128X[104X
    [4X[25Xgap>[125X [27XC.auto.size;[127X[104X
    [4X[28X512[128X[104X
    [4X[28X[128X[104X
    [4X[28X# the entries of the canonical table as far as they are bounded[128X[104X
    [4X[25Xgap>[125X [27XC.cano.tab;[127X[104X
    [4X[28X[ [ <a GF2 vector of length 7>, <a GF2 vector of length 7>, [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ] ], [128X[104X
    [4X[28X  [ <a GF2 vector of length 7>, <a GF2 vector of length 7>, [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ] ], [128X[104X
    [4X[28X  [ [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ] ], [128X[104X
    [4X[28X  [ [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ] ], [128X[104X
    [4X[28X  [ [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ] ], [128X[104X
    [4X[28X  [ [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ], [128X[104X
    [4X[28X      [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ] ] ][128X[104X
  [4X[32X[104X
  
