This version of Magma incorporates an interface to the KANT Version 4 system for algebraic number field computations. This online help node and the nodes below it describe all Magma functions that use the KANT code. Special functions for rational, quadratic and cyclotomic fields are described in special nodes for those fields.
Number fields in Magma are created in Magma by means of the polynomial ring machinery. This creates the `feeling' of working in the field Q[X]/f(X) for some monic, irreducible univariate polynomial f. It is useful, however, to know that this is not the internal representation used by the KANT package.
It is possible to obtain output in Magma generated by the KANT package
(some of the low level output, meant for debugging only, is even in German).
SetKantVerbose(s, n) : MonStgElt, RngIntElt ->
This function provides the opportunity to inspect internal KANT comments; the first argument is a string indicating for which area of computation output is desired, the second argument is an integer specifying a level, varying from 0 (no additional output, the default setting), to 5, giving all possible KANT comments. It is not advised to use n >= 4. Some output will not correspond to Magma features in an obvious way, and some of it may be in German.Currently the following strings are allowed: "ClassGroup", "MaximalOrder", "NormEq", "Subfields", "UnitGroup", "All".
For internal real computations, the KANT function use real arithmetic to a fixed precision; this precision (in decimal digits) will be the maximum of P and 4 times the degree of the number field for which calculations are performed. By default P=52, but that value can be changed to the value of n by SetKantPrecision(n). Certain calculations that fail if the precision is too small may succeed after restarting with increased precision. If the order O is given, then the precision change will apply only to that order.
Procedure to change the names of the generating elements in the number field K (a in K) to the contents of the sequence of strings s.This procedure only changes the names used in printing the elements of K. It does not assign to an identifier called k the value of the generator in K; to do this, use an assignment statement, or use angle brackets when creating the field.
Note that since this is a procedure that modifies K, it is necessary to have a reference ~K to K in the call to this function.
Given a number field K, return the element which has the i-th name attached to it, that is, return the element K.i of K. Here i must be in the range 1 <= i <= m, where m is the number of equations used to define K as a number field over Q.
To specify homomorphisms from number fields or orders in number
fields, it is necessary to specify the image of the generating elements,
and possible to specify a map on the ground field.
hom< K -> R | r > : FldNum, Rng, RngElt -> HomFld
Given a number field K, defined as an extension of the ground field G, as well as some ring R, build the homomorphism phi obtained by sending the defining primitive element alpha of K=G(alpha) to the element r in R.It is possible (if G=Q) and sometimes necessary (if G != Q) to specify a homomorphism phi on G(alpha) by specifying its action on G (by providing a homomorphism h with G as its domain) together with the image of alpha.
Note that, by the general rules for homomorphisms
the homomorphism must be a field homomorphism; it is the responsibility of the user to ensure that the image of phi is a field of characteristic zero, and that phi is a homomorphism.
Given an order O with field of fractions K, and a ring R as well as an element r in R, build a homomorphism phi.
In the case in which O is an equation order then phi may be given by specifying that the image of the primitive element alpha of K=Q(alpha) is to be the element r in R. Here alpha is the primitive element K.1.
In an order such that O supset Z[alpha], phi may be given by specifying that the image of the generating element alpha of K=Q(alpha) is to be the element r in R.
As in the field case, it is possible to specify the image of phi by the image of the `coefficients' Q -- by means of a homomorphism taking Q as its domain -- and the image of the `generator' alpha.
Given an order O with field of fractions K, and a ring R as well as an element r in R, build a homomorphism phi.
In general orders, phi may be given by specifying the image of a basis for O (i.e., the basis that is returned by the function Basis(O).
> R<x> := PolynomialRing(Integers()); > K<y> := NumberField(x^2-2); > KL<w> := NumberField(x^4-10*x^2+1); > H := hom< K -> KL | (9*w-w^3)/2 >; > H(y); -1/2*w^3 + 9/2*w > H(y)^2; 2