There are various ways in which to order the families of rings . We look at some in this section.
It is important to realize at the outset that to work comfortably with a ring, it should be finitely generated (over some subring); indeed, the only violations of this rule occur for real and complex fields, and p-adic and power series type structures, in which we necessarily have to cope with approximations. All other rings we will label as exact.
All rings in Magma can be obtained from the ring of rational integers Z by repeated application of a handful of fundamental mathematical constructions. The first such construction is forming fractions: the rational field Q can be obtained as the field of fractions of Z. The second construction is that of forming quotients: in this way the rings Z/mZ are obtained from Z. The third important construction is that of transcendental extension: by adjoining an element that satisfies no relation over the coefficient ring, a polynomial ring is obtained. An algebraic extension can be obtained by a combination of a transcendental extension and a quotient. Finally, completion of a ring at a prime leads in general to the rings that were labelled above as not exact. Some other constructions are: tensoring, taking direct products (leading to tuple modules), and taking valuation rings (an operation inverse to taking fields of fractions).
Most of these constructions are supported by Magma. In many situations the quo and ext constructors will perform the quotient and algebraic extension operations, just like sub creates sub-structures. Note an important distinction: usually sub creates structures of exactly the same type as the original structure---this is precisely why the construction of sub-object does not appear as an important construction for creating new objects in the previous paragraph.
Care should be taken not to confuse the mathematical properties of rings (or objects in Magma in general) and the properties of the object that Magma is aware of. For example, if one creates the ring of residue classes Z/pZ for a prime number p, using the command IntegerRing(p), the Magma object created is a residue class ring (whose modulus happens to be prime) and not a finite field; the functions applicable are the residue class ring functions, and it is, for instance, not possible to create a field extension over this object. If the intention was to create a finite field, the FiniteField(p) command should have been used, and for that object it is possible to create a field extension.
Similarly, a convenient way of thinking about a number field K=Q(α) is to regard it as a quotient of the polynomial ring Q[X] and the ideal generated by the minimal polynomial f of the primitive element α: K=Q(α) isomorphic to Q[X]/(f). This is, however, not the way to create number fields in Magma. The quotient ring of a polynomial ring will be an object to which only the generic ring functions apply, whereas to obtain the number field with all the machinery to manipulate it one has to use a command like NumberField(f).