This section lists the commutative rings that are currently supported in Magma.
The calculations that can be performed with a given ring depend upon the abstract properties of a ring (whether or not a field, for example) and the availability of effective algorithms. The various rings are grouped in this section according to their key algebraic properties.
It is important to note at the outset that commutative rings in Magma are divided into two classes: exact rings and non-exact rings. Exact rings are characterised as rings whose elements have finite representations and so calculations with them produce an exact result. An example is the ring ℚ[x] of univariate polynomials with rational numbers as coefficients. Non-exact rings, on the other hand, are rings whose elements have infinite representations in general. The real field is an example of a non-exact ring, recalling that real numbers such as π or √2, given as real numbers, have infinite representations.
At present all of the non-exact rings are fields: the real and complex fields and the p-adic and formal power series fields. So with these four exceptions, the reader should assume all other rings discussed in this section are exact.
All commutative rings support the following standard operations:
In the case of exact rings, the zero has to be a specific element. In the case of non-exact rings, the test for zero may be weakened to require that the value being tested lies in a small disk or interval.
A computable field in Magma is a field which contains internal algorithms for the standard ring arithmetic operations together with division. The following list summarises each of the computable fields that are supported:
A commutative ring R is said to have an euclidean function if:
A computable euclidean domain is a computable integral domain R having a euclidean function. The computable euclidean domains supported in Magma are:
The integral domains in Magma that are not euclidean domains are:
The rings in this section may have zero divisors and hence are not integral domains in general, but they do satisfy two useful conditions:
The list below contains the computable rings in Magma which are not integral domains, are principal and which have an euclidean function:
The commutative rings which are neither integral domains nor have an euclidean function are as follows:
Recall that non-exact fields are those whose elements have infinite representations and so calculations have to be carried out using a finite approximation to the element and any answer is returned as a finite approximation. The various non-exact fields in Magma allow the user to work at any precision desired. Thus, when computing in the real and complex fields, the user sets the precision and the calculations will be performed to that precision.
When computing in a non-exact field, obvious difficulties arise when deciding whether an element is a identity or whether two elements are equal. If the precision chosen for the calculation is insufficient, it may well result in the calculation crashing or returning meaningless results. In fact a number of algorithms used in Magma that return exact results perform some part of the calculation in non-exact structures. Just as is the case in numerical analysis, careful error analysis has to be undertaken to ensure that the results of a non-exact calculation fall into a bounded region. However, for complex algebraic algorithms the error analysis is often very difficult and has been undertaken in the case of very few algorithms. In the case of Magma, it was decided to avoid developing numerical versions of exact algebraic algorithms because of the very large amount of work that would be needed with an uncertain outcome.
If K is a non-exact computable field then rings defined over K will also be non-exact. For example, the polynomial ring K[x] will also be non-exact. However, basic operations such as addition, subtraction, and multiplication of elements of polynomial rings and matrix rings defined over a non-exact ring or field K are supported.
The six families of non-exact fields are as follows:
All of the non-exact commutative rings that are not fields are listed in this section.