The usual Kronecker construction with an irreducible polynomial can be used to construct extensions of the p-adic numbers. Let L be such an extension. Then there is a subfield K < L such that K is an unramified extension of the p-adic numbers and L/K is purely ramified. (For an explanation of ``ramification'' see for example neukirch, section II.7 or another book on algebraic number theory. Essentially, an extension L of the p-adic numbers generated by a rational polynomial f is unramified if f remains squarefree modulo p and is completely ramified if modulo p the polynomial f is a power of a linear factor while remaining irreducible over the p-adic numbers.) The representation of extensions of p-adic numbers in GAP uses this subfield.
PadicExtensionNumberFamily( p, precision, unram, ram ) F
An extended p-adic field L is given by two polynomials h and g with coeff.-lists unram (for the unramified part) and ram (for the ramified part). Then L is isomorphic to Qp[x,y]/(h(x),g(y)).
This function takes the prime number p and the two coefficient lists unram and ram for the two polynomials. The polynomial given by the coefficients in unram must be a cyclotomic polynomial and the polynomial given by ram an Eisenstein-polynomial (or 1+x). This is not checked by sf GAP.
Every number out of L is represented as a coeff.-list for the basis {1,x,x2,...,y,xy,x2y,...} of L. The integer precision is the number of ``digits'' that all the coefficients have.
A general comment: the polynomials with which
PadicExtensionNumberFamily is called define an extension of Qp. It
must be ensured that both polynomials are really irreducible over
Qp! For example x^2+x+1 is not irreducible over Q_p. Therefore the
``extension'' PadicExtensionNumberFamily(3, 4, [1,1,1], [1,1]) contains
non-invertible ``pseudo- p-adic numbers''. Conversely, if an
``extension'' contains noninvertible elements one of the polynomials was
not irreducible.
PadicNumber( fam, rat ) O
PadicNumber( purefam, list ) O
PadicNumber( extfam, list ) O
create a p-adic number in the p-adic numbers family fam. The first usage returns the p-adic number corresponding to the rational rat.
The second usage takes a pure p-adic numbers family purefam and a
list list of length 2 and returns the number p^list[1] *
list[2]. It must be guaranteed that no entry of list[2] is
divisible by the prime p. (Otherwise precision will get lost.)
The third usage creates a number in the family extfam of a p-adic extension. The second entry must be a list L of length 2 such that list[2] is the list of coeff. for the basis {1,¼,xf-1·ye-1} of the extended p-adic field and list[1] is a common p-part of all the coeff.
p-adic numbers allow the usual field operations.
gap> efam:=PadicExtensionNumberFamily(3, 5, [1,1,1], [1,1]);; gap> PadicNumber(efam,7/9); padic(120(3),0(3))
A word of warning:
Depending on the actual representation of quotients, precision may seem
to ``vanish''.
For example in PadicExtensionNumberFamily(3, 5, [1,1,1], [1,1]) the
number (1.2000, 0.1210)(3) can be represented as [ 0, [ 1.2000, 0.1210
] ] or as [-1, [ 12.000, 1.2100 ] ] (here the coefficients have to be
multiplied by p-1).
So there may be a number (1.2, 2.2)(3) which seems to have only two
digits of precision instead of the declared 5. But internally the number
is stored as [-3, [ 0.0012, 0.0022 ] ] and so has in fact maximum
precision.
IsPadicExtensionNumber( obj ) C
IsPadicExtensionNumberFamily( fam ) C
GAP 4 manual