60.3 Integral Bases of Abelian Number Fields

Each abelian number field is naturally a vector space over ? ? ? . Moreover, if the abelian number field F 𝐹 F contains the n 𝑛 n -th cyclotomic field ? n subscript ? 𝑛 ?_{n} then F 𝐹 F is a vector space over ? n subscript ? 𝑛 ?_{n} . In GAP, each field object represents a vector space object over a certain subfield S 𝑆 S , which depends on the way F 𝐹 F was constructed. The subfield S 𝑆 S can be accessed as the value of the attribute LeftActingDomain (57.1-11).

The return values of NF (60.1-2) and of the one argument versions of CF (60.1-1) represent vector spaces over ? ? ? , and the return values of the two argument version of CF (60.1-1) represent vector spaces over the field that is given as the first argument. For an abelian number field F and a subfield S of F, a GAP object representing F as a vector space over S can be constructed using AsField (58.1-9).

Let F be the cyclotomic field ? n subscript ? 𝑛 ?_{n} , represented as a vector space over the subfield S. If S is the cyclotomic field ? m subscript ? 𝑚 ?_{m} , with m 𝑚 m a divisor of n 𝑛 n , then CanonicalBasis( F ) returns the Zumbroich basis of F relative to S, which consists of the roots of unity E(n)^i where i is an element of the list ZumbroichBase( n, m ) (see ZumbroichBase (60.3-1)). If S is an abelian number field that is not a cyclotomic field then CanonicalBasis( F ) returns a normal S-basis of F, i.e., a basis that is closed under the field automorphisms of F.

Let F be the abelian number field NF( n, stab ), with conductor n, that is itself not a cyclotomic field, represented as a vector space over the subfield S. If S is the cyclotomic field ? m subscript ? 𝑚 ?_{m} , with m 𝑚 m a divisor of n 𝑛 n , then CanonicalBasis( F ) returns the Lenstra basis of F relative to S that consists of the sums of roots of unity described by LenstraBase( n, stab, stab, m ) (see LenstraBase (60.3-2)). If S is an abelian number field that is not a cyclotomic field then CanonicalBasis( F ) returns a normal S-basis of F.

gap> f:= CF(8);;   # a cycl. field over the rationals
gap> b:= CanonicalBasis( f );;  BasisVectors( b );
[ 1, E(8), E(4), E(8)^3 ]
gap> Coefficients( b, Sqrt(-2) );
[ 0, 1, 0, 1 ]
gap> f:= AsField( CF(4), CF(8) );;  # a cycl. field over a cycl. field
gap> b:= CanonicalBasis( f );;  BasisVectors( b );
[ 1, E(8) ]
gap> Coefficients( b, Sqrt(-2) );
[ 0, 1+E(4) ]
gap> f:= AsField( Field( [ Sqrt(-2) ] ), CF(8) );;
gap> # a cycl. field over a non-cycl. field
gap> b:= CanonicalBasis( f );;  BasisVectors( b );
[ 1/2+1/2*E(8)-1/2*E(8)^2-1/2*E(8)^3, 
  1/2-1/2*E(8)+1/2*E(8)^2+1/2*E(8)^3 ]
gap> Coefficients( b, Sqrt(-2) );
[ E(8)+E(8)^3, E(8)+E(8)^3 ]
gap> f:= Field( [ Sqrt(-2) ] );   # a non-cycl. field over the rationals
NF(8,[ 1, 3 ])
gap> b:= CanonicalBasis( f );;  BasisVectors( b );
[ 1, E(8)+E(8)^3 ]
gap> Coefficients( b, Sqrt(-2) );
[ 0, 1 ]