Each abelian number field is naturally a vector space over . Moreover, if the abelian number field contains the -th cyclotomic field then is a vector space over . In GAP, each field object represents a vector space object over a certain subfield , which depends on the way was constructed. The subfield 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 , represented as a vector space over the subfield S. If S is the cyclotomic field , with a divisor of , 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 , with a divisor of , 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 ]