Generic Ring Functions

The generic functions described in this Chapter apply in principle to every type of ring. For certain rings these are the only applicable functions. The qualification ‘in principle’ in the first sentence is made because for some classes of rings an algorithm to compute certain of these functions does not exist, or has not been implemented. In that case an error will result.

This general list is provided primarily to avoid duplication of common descriptions. In the following Chapters the generic functions will be listed merely without further description, and the emphasis can be on the functions specific to a particular type of ring.

Numerical Invariants

Characteristic(R): Rng -> RngIntElt

The characteristic of the ring \(R\), which is the smallest positive integer \(m\) such that \(m\cdot r=0\) for every \(r\in R\), or zero if such \(m\) does not exist.

# R: Rng -> RngIntElt

The cardinality of the ring \(R\); here \(R\) must be finite.

Predicates and Boolean Operations

IsCommutative(R): Rng -> BoolElt

Returns true if it is known that the ring \(R\) is commutative, false if it is known that \(R\) is not commutative. An error results if the answer is not known.

IsUnitary(R): Rng -> BoolElt

Returns true if the ring \(R\) is known to be unitary (that is, if \(R\) has a multiplicative identity), false if \(R\) has no \(1\).

IsFinite(R): Rng -> BoolElt

Returns true if the ring \(R\) is known to be a finite ring, false if it is known to be infinite. An error results if the answer is not known.

IsOrdered(R): Rng -> BoolElt

Returns true if the ring \(R\) has a total ordering defined on the set of its elements, false otherwise.

IsField(R): Rng -> BoolElt

Returns true if the ring \(R\) is known to be a field, false if it is known to not be a field. An error results if the answer is not known.

IsDivisionRing(R): Rng -> BoolElt

Returns true if the ring \(R\) is known to be a division ring (that is, every non-zero element is invertible), false if it is known that \(R\) is not a division ring. An error results if the answer is not known.

IsEuclideanDomain(R): Rng -> BoolElt

Returns true if the ring \(R\) is known to be a euclidean domain, false if it is known that \(R\) is not a euclidean domain. An error results if the answer is not known.

IsEuclideanRing(R): Rng -> BoolElt

Returns true if the ring \(R\) is known to be euclidean, false if it is known that \(R\) is not euclidean. An error results if the answer is not known.

IsMagmaEuclideanRing(R): Rng -> BoolElt

Returns true iff the ring \(R\) is a computable euclidean ring within Magma (i.e., iff the necessary euclidean operations are defined for \(R\) so algorithms requiring a euclidean ring will work).

IsPID(R): Rng -> BoolElt
IsPrincipalIdealDomain(R): Rng -> BoolElt

Returns true if the ring \(R\) is known to be a principal ideal domain, false if it is known that \(R\) is not a principal ideal domain. An error results if the answer is not known.

IsPIR(R): Rng -> BoolElt
IsPrincipalIdealRing(R): Rng -> BoolElt

Returns true if the ring \(R\) is known to be a principal ideal ring, false if it is known that \(R\) has non-principal ideals. An error results if the answer is not known.

IsUFD(R): Rng -> BoolElt
IsUniqueFactorizationDomain(R): Rng -> BoolElt

Returns true if the ring \(R\) is known to be a unique factorization domain, false if it is known that \(R\) is not a unique factorization domain. An error results if the answer is not known.

IsDomain(R): Rng -> BoolElt
IsIntegralDomain(R): Rng -> BoolElt

Returns true if it is known that \(R\) is an integral domain (i.e., \(R\) has no zero divisors), false if \(R\) is known to have zero divisors. An error results if the answer is not known.

HasGCD(R): Rng -> BoolElt

Returns true iff there is a GCD algorithm for elements of ring \(R\) in Magma.

R eq S: Rng, Rng -> Rng

For certain pairs \(R, S\) of rings, this returns true if \(R\) and \(S\) refer to the same ring, and false otherwise. However, if \(R\) and \(S\) belong to different categories an error may result.

R ne S: Rng, Rng -> Rng

For certain pairs \(R, S\) of rings, this returns true if \(R\) and \(S\) refer to different rings, and false otherwise. However, if \(R\) and \(S\) belong to different categories an error may result.