  
  [1X58 [33X[0;0YFields and Division Rings[133X[101X
  
  [33X[0;0YA  [13Xdivision  ring[113X is a ring (see Chapter [14X56[114X) in which every non-zero element
  has  an  inverse.  The  most  important  class  of  division  rings  are the
  commutative ones, which are called [13Xfields[113X.[133X
  
  [33X[0;0Y[5XGAP[105X  supports  finite fields (see Chapter [14X59[114X) and abelian number fields (see
  Chapter [14X60[114X), in particular the field of rationals (see Chapter [14X17[114X).[133X
  
  [33X[0;0YThis  chapter  describes  the  general [5XGAP[105X functions for fields and division
  rings.[133X
  
  [33X[0;0YIf a field [3XF[103X is a subfield of a commutative ring [3XC[103X, [3XC[103X can be considered as a
  vector  space  over  the  (left)  acting  domain [3XF[103X (see Chapter [14X61[114X). In this
  situation, we call [3XF[103X the [13Xfield of definition[113X of [3XC[103X.[133X
  
  [33X[0;0YEach  field  in  [5XGAP[105X  is  represented  as  a  vector  space  over a subfield
  (see [2XIsField[102X  ([14X58.1-2[114X)),  thus  each field is in fact a field extension in a
  natural  way,  which  is  used  by functions such as [2XNorm[102X ([14X58.3-4[114X) and [2XTrace[102X
  ([14X58.3-5[114X) (see [14X58.3[114X).[133X
  
  
  [1X58.1 [33X[0;0YGenerating Fields[133X[101X
  
  [1X58.1-1 IsDivisionRing[101X
  
  [29X[2XIsDivisionRing[102X( [3XD[103X ) [32X Category
  
  [33X[0;0YA  [13Xdivision  ring[113X  in  [5XGAP[105X  is  a  nontrivial  associative  algebra [3XD[103X with a
  multiplicative  inverse for each nonzero element. In [5XGAP[105X every division ring
  is  a  vector  space  over a division ring (possibly over itself). Note that
  being  a division ring is thus not a property that a ring can get, because a
  ring is usually not represented as a vector space.[133X
  
  [33X[0;0YThe  field  of  coefficients  is  stored  as  the  value  of  the  attribute
  [2XLeftActingDomain[102X ([14X57.1-11[114X) of [3XD[103X.[133X
  
  [1X58.1-2 IsField[101X
  
  [29X[2XIsField[102X( [3XD[103X ) [32X filter
  
  [33X[0;0YA   [13Xfield[113X  is  a  commutative  division  ring  (see [2XIsDivisionRing[102X  ([14X58.1-1[114X)
  and [2XIsCommutative[102X ([14X35.4-9[114X)).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsField( GaloisField(16) );           # the field with 16 elements[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsField( Rationals );                 # the field of rationals[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xq:= QuaternionAlgebra( Rationals );;  # noncommutative division ring[127X[104X
    [4X[25Xgap>[125X [27XIsField( q );  IsDivisionRing( q );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xmat:= [ [ 1 ] ];;  a:= Algebra( Rationals, [ mat ] );;[127X[104X
    [4X[25Xgap>[125X [27XIsDivisionRing( a );   # algebra not constructed as a division ring[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [1X58.1-3 Field[101X
  
  [29X[2XField[102X( [3Xz[103X, [3X...[103X ) [32X function
  [29X[2XField[102X( [[3XF[103X, ][3Xlist[103X ) [32X function
  
  [33X[0;0Y[2XField[102X returns the smallest field [22XK[122X that contains all the elements [22X[3Xz[103X, ...[122X, or
  the  smallest  field  [22XK[122X  that  contains all elements in the list [3Xlist[103X. If no
  subfield  [3XF[103X is given, [22XK[122X is constructed as a field over itself, i.e. the left
  acting  domain  of  [22XK[122X  is  [22XK[122X.  Called  with a field [3XF[103X and a list [3Xlist[103X, [2XField[102X
  constructs  the  field  generated by [3XF[103X and the elements in [3Xlist[103X, as a vector
  space over [3XF[103X.[133X
  
  [1X58.1-4 DefaultField[101X
  
  [29X[2XDefaultField[102X( [3Xz[103X, [3X...[103X ) [32X function
  [29X[2XDefaultField[102X( [3Xlist[103X ) [32X function
  
  [33X[0;0Y[2XDefaultField[102X  returns  a field [22XK[122X that contains all the elements [22X[3Xz[103X, ...[122X, or a
  field [22XK[122X that contains all elements in the list [3Xlist[103X.[133X
  
  [33X[0;0YThis  field  need  not  be  the  smallest  field  in which the elements lie,
  cf. [2XField[102X  ([14X58.1-3[114X).  For  example,  for  elements  from  cyclotomic  fields
  [2XDefaultField[102X  returns  the  smallest  cyclotomic field in which the elements
  lie,  but  the  elements  may  lie  in a smaller number field which is not a
  cyclotomic field.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XField( Z(4) );  Field( [ Z(4), Z(8) ] );  # finite fields[127X[104X
    [4X[28XGF(2^2)[128X[104X
    [4X[28XGF(2^6)[128X[104X
    [4X[25Xgap>[125X [27XField( E(9) );  Field( CF(4), [ E(9) ] ); # abelian number fields[127X[104X
    [4X[28XCF(9)[128X[104X
    [4X[28XAsField( GaussianRationals, CF(36) )[128X[104X
    [4X[25Xgap>[125X [27Xf1:= Field( EB(5) );  f2:= DefaultField( EB(5) );[127X[104X
    [4X[28XNF(5,[ 1, 4 ])[128X[104X
    [4X[28XCF(5)[128X[104X
    [4X[25Xgap>[125X [27Xf1 = f2;  IsSubset( f2, f1 );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X58.1-5 DefaultFieldByGenerators[101X
  
  [29X[2XDefaultFieldByGenerators[102X( [[3Xz[103X, [3X...[103X] ) [32X operation
  
  [33X[0;0Yreturns  the default field containing the elements [3Xz[103X, [22X...[122X. This field may be
  bigger than the smallest field containing these elements.[133X
  
  [1X58.1-6 GeneratorsOfDivisionRing[101X
  
  [29X[2XGeneratorsOfDivisionRing[102X( [3XD[103X ) [32X attribute
  
  [33X[0;0Ygenerators  with  respect  to  addition, multiplication, and taking inverses
  (the identity cannot be omitted ...)[133X
  
  [1X58.1-7 GeneratorsOfField[101X
  
  [29X[2XGeneratorsOfField[102X( [3XF[103X ) [32X attribute
  
  [33X[0;0Ygenerators  with  respect  to addition, multiplication, and taking inverses.
  This attribute is the same as [2XGeneratorsOfDivisionRing[102X ([14X58.1-6[114X).[133X
  
  [1X58.1-8 DivisionRingByGenerators[101X
  
  [29X[2XDivisionRingByGenerators[102X( [[3XF[103X, ][3Xgens[103X ) [32X operation
  [29X[2XFieldByGenerators[102X( [[3XF[103X, ][3Xgens[103X ) [32X operation
  
  [33X[0;0YCalled  with  a field [3XF[103X and a list [3Xgens[103X of scalars, [2XDivisionRingByGenerators[102X
  returns  the  division  ring  over  [3XF[103X  generated  by [3Xgens[103X. The unary version
  returns  the division ring as vector space over [10XFieldOverItselfByGenerators(
  [3Xgens[103X[10X )[110X.[133X
  
  [33X[0;0Y[2XFieldByGenerators[102X is just a synonym for [2XDivisionRingByGenerators[102X.[133X
  
  [1X58.1-9 AsDivisionRing[101X
  
  [29X[2XAsDivisionRing[102X( [[3XF[103X, ][3XC[103X ) [32X operation
  [29X[2XAsField[102X( [[3XF[103X, ][3XC[103X ) [32X operation
  
  [33X[0;0YIf  the collection [3XC[103X can be regarded as a division ring then [10XAsDivisionRing(
  [3XC[103X[10X  )[110X  is  the  division ring that consists of the elements of [3XC[103X, viewed as a
  vector space over its prime field; otherwise [9Xfail[109X is returned.[133X
  
  [33X[0;0YIn the second form, if [3XF[103X is a division ring contained in [3XC[103X then the returned
  division ring is viewed as a vector space over [3XF[103X.[133X
  
  [33X[0;0Y[2XAsField[102X is just a synonym for [2XAsDivisionRing[102X.[133X
  
  
  [1X58.2 [33X[0;0YSubfields of Fields[133X[101X
  
  [1X58.2-1 Subfield[101X
  
  [29X[2XSubfield[102X( [3XF[103X, [3Xgens[103X ) [32X function
  [29X[2XSubfieldNC[102X( [3XF[103X, [3Xgens[103X ) [32X function
  
  [33X[0;0YConstructs the subfield of [3XF[103X generated by [3Xgens[103X.[133X
  
  [1X58.2-2 FieldOverItselfByGenerators[101X
  
  [29X[2XFieldOverItselfByGenerators[102X( [[3Xz[103X, [3X...[103X] ) [32X operation
  
  [33X[0;0YThis operation is needed for the call of [2XField[102X ([14X58.1-3[114X) or [2XFieldByGenerators[102X
  ([14X58.1-8[114X)  without  explicitly  given  subfield, in order to construct a left
  acting domain for such a field.[133X
  
  [1X58.2-3 PrimitiveElement[101X
  
  [29X[2XPrimitiveElement[102X( [3XD[103X ) [32X attribute
  
  [33X[0;0Yis  an  element  of  [3XD[103X that generates [3XD[103X as a division ring together with the
  left acting domain.[133X
  
  [1X58.2-4 PrimeField[101X
  
  [29X[2XPrimeField[102X( [3XD[103X ) [32X attribute
  
  [33X[0;0YThe  [13Xprime  field[113X  of  a  division  ring  [3XD[103X  is  the smallest field which is
  contained  in [3XD[103X. For example, the prime field of any field in characteristic
  zero is isomorphic to the field of rational numbers.[133X
  
  [1X58.2-5 IsPrimeField[101X
  
  [29X[2XIsPrimeField[102X( [3XD[103X ) [32X property
  
  [33X[0;0YA  division  ring  is  a  prime  field  if  it  is  equal to its prime field
  (see [2XPrimeField[102X ([14X58.2-4[114X)).[133X
  
  [1X58.2-6 DegreeOverPrimeField[101X
  
  [29X[2XDegreeOverPrimeField[102X( [3XF[103X ) [32X attribute
  
  [33X[0;0Yis the degree of the field [3XF[103X over its prime field (see [2XPrimeField[102X ([14X58.2-4[114X)).[133X
  
  [1X58.2-7 DefiningPolynomial[101X
  
  [29X[2XDefiningPolynomial[102X( [3XF[103X ) [32X attribute
  
  [33X[0;0Yis the defining polynomial of the field [3XF[103X as a field extension over the left
  acting  domain  of [3XF[103X. A root of the defining polynomial can be computed with
  [2XRootOfDefiningPolynomial[102X ([14X58.2-8[114X).[133X
  
  [1X58.2-8 RootOfDefiningPolynomial[101X
  
  [29X[2XRootOfDefiningPolynomial[102X( [3XF[103X ) [32X attribute
  
  [33X[0;0Yis  a  root  in  the field [3XF[103X of its defining polynomial as a field extension
  over  the  left  acting domain of [3XF[103X. The defining polynomial can be computed
  with [2XDefiningPolynomial[102X ([14X58.2-7[114X).[133X
  
  [1X58.2-9 FieldExtension[101X
  
  [29X[2XFieldExtension[102X( [3XF[103X, [3Xpoly[103X ) [32X operation
  
  [33X[0;0Yis the field obtained on adjoining a root of the irreducible polynomial [3Xpoly[103X
  to the field [3XF[103X.[133X
  
  [1X58.2-10 Subfields[101X
  
  [29X[2XSubfields[102X( [3XF[103X ) [32X attribute
  
  [33X[0;0Yis the set of all subfields of the field [3XF[103X.[133X
  
  
  [1X58.3 [33X[0;0YGalois Action[133X[101X
  
  [33X[0;0YLet [22XL > K[122X be a field extension of finite degree. Then to each element [22Xα ∈ L[122X,
  we  can associate a [22XK[122X-linear mapping [22Xφ_α[122X on [22XL[122X, and for a fixed [22XK[122X-basis of [22XL[122X,
  we can associate to [22Xα[122X the matrix [22XM_α[122X (over [22XK[122X) of this mapping.[133X
  
  [33X[0;0YThe  [13Xnorm[113X  of  [22Xα[122X  is  defined  as  the determinant of [22XM_α[122X, the [13Xtrace[113X of [22Xα[122X is
  defined  as  the  trace  of  [22XM_α[122X,  the  [13Xminimal polynomial[113X [22Xμ_α[122X and the [13Xtrace
  polynomial[113X  [22Xχ_α[122X  of [22Xα[122X are defined as the minimal polynomial (see [14X66.8-1[114X) and
  the  characteristic  polynomial  (see [2XCharacteristicPolynomial[102X ([14X24.13-1[114X) and
  [2XTracePolynomial[102X  ([14X58.3-3[114X))  of [22XM_α[122X. (Note that [22Xμ_α[122X depends only on [22XK[122X whereas
  [22Xχ_α[122X depends on both [22XL[122X and [22XK[122X.)[133X
  
  [33X[0;0YThus  norm and trace of [22Xα[122X are elements of [22XK[122X, and [22Xμ_α[122X and [22Xχ_α[122X are polynomials
  over [22XK[122X, [22Xχ_α[122X being a power of [22Xμ_α[122X, and the degree of [22Xχ_α[122X equals the degree of
  the field extension [22XL > K[122X.[133X
  
  [33X[0;0YThe [13Xconjugates[113X of [22Xα[122X in [22XL[122X are those roots of [22Xχ_α[122X (with multiplicity) that lie
  in [22XL[122X; note that if only [22XL[122X is given, there is in general no way to access the
  roots outside [22XL[122X.[133X
  
  [33X[0;0YAnalogously, the [13XGalois group[113X of the extension [22XL > K[122X is defined as the group
  of all those field automorphisms of [22XL[122X that fix [22XK[122X pointwise.[133X
  
  [33X[0;0YIf [22XL > K[122X is a Galois extension then the conjugates of [22Xα[122X are all roots of [22Xχ_α[122X
  (with multiplicity), the set of conjugates equals the roots of [22Xμ_α[122X, the norm
  of  [22Xα[122X equals the product and the trace of [22Xα[122X equals the sum of the conjugates
  of  [22Xα[122X,  and the Galois group in the sense of the above definition equals the
  usual Galois group,[133X
  
  [33X[0;0YNote that [10XMinimalPolynomial( [3XF[103X[10X, [3Xz[103X[10X )[110X is a polynomial [13Xover[113X [3XF[103X, whereas [10XNorm( [3XF[103X[10X,
  [3Xz[103X[10X  )[110X  is  the  norm  of  the  element  [3Xz[103X [13Xin[113X [3XF[103X w.r.t. the field extension [10X[3XF[103X[10X >
  LeftActingDomain( [3XF[103X[10X )[110X.[133X
  
  [33X[0;0YThe  default  methods  for  field elements are as follows. [2XMinimalPolynomial[102X
  ([14X66.8-1[114X)  solves  a  system  of  linear  equations, [2XTracePolynomial[102X ([14X58.3-3[114X)
  computes  the appropriate power of the minimal polynomial, [2XNorm[102X ([14X58.3-4[114X) and
  [2XTrace[102X  ([14X58.3-5[114X)  values  are  obtained as coefficients of the characteristic
  polynomial,   and   [2XConjugates[102X   ([14X58.3-6[114X)  uses  the  factorization  of  the
  characteristic polynomial.[133X
  
  [33X[0;0YFor  elements  in  finite  fields and cyclotomic fields, one wants to do the
  computations  in  a different way since the field extensions in question are
  Galois extensions, and the Galois groups are well-known in these cases. More
  general,  if  a field is in the category [10XIsFieldControlledByGaloisGroup[110X then
  the  default  methods  are  the  following.  [2XConjugates[102X ([14X58.3-6[114X) returns the
  sorted  list  of  images (with multiplicity) of the element under the Galois
  group,  [2XNorm[102X ([14X58.3-4[114X) computes the product of the conjugates, [2XTrace[102X ([14X58.3-5[114X)
  computes   the   sum   of   the  conjugates,  [2XTracePolynomial[102X  ([14X58.3-3[114X)  and
  [2XMinimalPolynomial[102X  ([14X66.8-1[114X) compute the product of linear factors [22Xx - c[122X with
  [22Xc[122X ranging over the conjugates and the set of conjugates, respectively.[133X
  
  [1X58.3-1 GaloisGroup[101X
  
  [29X[2XGaloisGroup[102X( [3XF[103X ) [32X attribute
  
  [33X[0;0YThe  [13XGalois  group[113X of a field [3XF[103X is the group of all field automorphisms of [3XF[103X
  that fix the subfield [22XK =[122X[10XLeftActingDomain( [3XF[103X[10X )[110X pointwise.[133X
  
  [33X[0;0YNote that the field extension [22X[3XF[103X > K[122X need [13Xnot[113X be a Galois extension.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg:= GaloisGroup( AsField( GF(2^2), GF(2^12) ) );;[127X[104X
    [4X[25Xgap>[125X [27XSize( g );  IsCyclic( g );[127X[104X
    [4X[28X6[128X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xh:= GaloisGroup( CF(60) );;[127X[104X
    [4X[25Xgap>[125X [27XSize( h );  IsAbelian( h );[127X[104X
    [4X[28X16[128X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X58.3-2 MinimalPolynomial[101X
  
  [29X[2XMinimalPolynomial[102X( [3XF[103X, [3Xz[103X[, [3Xind[103X] ) [32X operation
  
  [33X[0;0Yreturns the minimal polynomial of [3Xz[103X over the field [3XF[103X. This is a generator of
  the  ideal in [22X[3XF[103X[x][122X of all polynomials which vanish on [3Xz[103X. (This definition is
  consistent  with  the  general  definition of [2XMinimalPolynomial[102X ([14X66.8-1[114X) for
  rings.)[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XMinimalPolynomial( Rationals, E(8) );[127X[104X
    [4X[28Xx_1^4+1[128X[104X
    [4X[25Xgap>[125X [27XMinimalPolynomial( CF(4), E(8) );[127X[104X
    [4X[28Xx_1^2+(-E(4))[128X[104X
    [4X[25Xgap>[125X [27XMinimalPolynomial( CF(8), E(8) );[127X[104X
    [4X[28Xx_1+(-E(8))[128X[104X
  [4X[32X[104X
  
  [1X58.3-3 TracePolynomial[101X
  
  [29X[2XTracePolynomial[102X( [3XL[103X, [3XK[103X, [3Xz[103X[, [3Xinum[103X] ) [32X operation
  
  [33X[0;0Yreturns  the polynomial that is the product of [22X(X - c)[122X where [22Xc[122X runs over the
  conjugates  of [3Xz[103X in the field extension [3XL[103X over [3XK[103X. The polynomial is returned
  as  a  univariate  polynomial  over  [3XK[103X  in  the  indeterminate  number  [3Xinum[103X
  (defaulting to 1).[133X
  
  [33X[0;0YThis  polynomial is sometimes also called the [13Xcharacteristic polynomial[113X of [3Xz[103X
  w.r.t. the  field  extension  [22X[3XL[103X  >  [3XK[103X[122X.  Therefore  methods are installed for
  [2XCharacteristicPolynomial[102X  ([14X24.13-1[114X) that call [2XTracePolynomial[102X in the case of
  field extensions.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XTracePolynomial( CF(8), Rationals, E(8) );[127X[104X
    [4X[28Xx_1^4+1[128X[104X
    [4X[25Xgap>[125X [27XTracePolynomial( CF(16), Rationals, E(8) );[127X[104X
    [4X[28Xx_1^8+2*x_1^4+1[128X[104X
  [4X[32X[104X
  
  [1X58.3-4 Norm[101X
  
  [29X[2XNorm[102X( [[3XL[103X[, [3XK[103X, ]][3Xz[103X ) [32X attribute
  
  [33X[0;0Y[2XNorm[102X  returns  the  norm  of  the field element [3Xz[103X. If two fields [3XL[103X and [3XK[103X are
  given  then the norm is computed w.r.t. the field extension [3XL[103X[22X>[122X[3XK[103X, if only one
  field  [3XL[103X  is  given  then  [10XLeftActingDomain( [3XL[103X[10X )[110X is taken as default for the
  subfield  [3XK[103X,  and  if  no  field is given then [10XDefaultField( [3Xz[103X[10X )[110X is taken as
  default for [3XL[103X.[133X
  
  
  [1X58.3-5 [33X[0;0YTraces of field elements and matrices[133X[101X
  
  [29X[2XTrace[102X( [[3XL[103X[, [3XK[103X, ]][3Xz[103X ) [32X attribute
  [29X[2XTrace[102X( [3Xmat[103X ) [32X attribute
  
  [33X[0;0Y[2XTrace[102X  returns  the  trace of the field element [3Xz[103X. If two fields [3XL[103X and [3XK[103X are
  given  then  the trace is computed w.r.t. the field extension [22X[3XL[103X > [3XK[103X[122X, if only
  one  field [3XL[103X is given then [10XLeftActingDomain( [3XL[103X[10X )[110X is taken as default for the
  subfield  [3XK[103X,  and  if  no  field is given then [10XDefaultField( [3Xz[103X[10X )[110X is taken as
  default for [3XL[103X.[133X
  
  [33X[0;0YThe  [13Xtrace of a matrix[113X is the sum of its diagonal entries. Note that this is
  [13Xnot[113X  compatible  with  the  definition  of  [2XTrace[102X for field elements, so the
  one-argument  version  is  not  suitable  when matrices shall be regarded as
  field elements.[133X
  
  [1X58.3-6 Conjugates[101X
  
  [29X[2XConjugates[102X( [[3XL[103X[, [3XK[103X, ]][3Xz[103X ) [32X attribute
  
  [33X[0;0Y[2XConjugates[102X  returns  the  list  of [13Xconjugates[113X of the field element [3Xz[103X. If two
  fields  [3XL[103X  and [3XK[103X are given then the conjugates are computed w.r.t. the field
  extension  [3XL[103X[22X>[122X[3XK[103X,  if  only one field [3XL[103X is given then [10XLeftActingDomain( [3XL[103X[10X )[110X is
  taken  as  default  for  the  subfield  [3XK[103X,  and  if  no  field is given then
  [10XDefaultField( [3Xz[103X[10X )[110X is taken as default for [3XL[103X.[133X
  
  [33X[0;0YThe result list will contain duplicates if [3Xz[103X lies in a proper subfield of [3XL[103X,
  or  of  the  default  field  of [3Xz[103X, respectively. The result list need not be
  sorted.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XNorm( E(8) );  Norm( CF(8), E(8) );[127X[104X
    [4X[28X1[128X[104X
    [4X[28X1[128X[104X
    [4X[25Xgap>[125X [27XNorm( CF(8), CF(4), E(8) );[127X[104X
    [4X[28X-E(4)[128X[104X
    [4X[25Xgap>[125X [27XNorm( AsField( CF(4), CF(8) ), E(8) );[127X[104X
    [4X[28X-E(4)[128X[104X
    [4X[25Xgap>[125X [27XTrace( E(8) );  Trace( CF(8), CF(8), E(8) );[127X[104X
    [4X[28X0[128X[104X
    [4X[28XE(8)[128X[104X
    [4X[25Xgap>[125X [27XConjugates( CF(8), E(8) );[127X[104X
    [4X[28X[ E(8), E(8)^3, -E(8), -E(8)^3 ][128X[104X
    [4X[25Xgap>[125X [27XConjugates( CF(8), CF(4), E(8) );[127X[104X
    [4X[28X[ E(8), -E(8) ][128X[104X
    [4X[25Xgap>[125X [27XConjugates( CF(16), E(8) );[127X[104X
    [4X[28X[ E(8), E(8)^3, -E(8), -E(8)^3, E(8), E(8)^3, -E(8), -E(8)^3 ][128X[104X
  [4X[32X[104X
  
  [1X58.3-7 NormalBase[101X
  
  [29X[2XNormalBase[102X( [3XF[103X[, [3Xelm[103X] ) [32X attribute
  
  [33X[0;0YLet   [3XF[103X   be   a   field   that  is  a  Galois  extension  of  its  subfield
  [10XLeftActingDomain(  [3XF[103X[10X )[110X. Then [2XNormalBase[102X returns a list of elements in [3XF[103X that
  form a normal basis of [3XF[103X, that is, a vector space basis that is closed under
  the action of the Galois group (see [2XGaloisGroup[102X ([14X58.3-1[114X)) of [3XF[103X.[133X
  
  [33X[0;0YIf a second argument [3Xelm[103X is given, it is used as a hint for the algorithm to
  find a normal basis with the algorithm described in [Art73].[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XNormalBase( CF(5) );[127X[104X
    [4X[28X[ -E(5), -E(5)^2, -E(5)^3, -E(5)^4 ][128X[104X
    [4X[25Xgap>[125X [27XNormalBase( CF(4) );[127X[104X
    [4X[28X[ 1/2-1/2*E(4), 1/2+1/2*E(4) ][128X[104X
    [4X[25Xgap>[125X [27XNormalBase( GF(3^6) );[127X[104X
    [4X[28X[ Z(3^6)^2, Z(3^6)^6, Z(3^6)^18, Z(3^6)^54, Z(3^6)^162, Z(3^6)^486 ][128X[104X
    [4X[25Xgap>[125X [27XNormalBase( GF( GF(8), 2 ) );[127X[104X
    [4X[28X[ Z(2^6), Z(2^6)^8 ][128X[104X
  [4X[32X[104X
  
