Generic Element Functions#

Parent and Category#

Parent(r): RngElt -> Rng#

The (default) parent ring of ring element \(r\). Usually the parent of \(r\) has been created explicitly before, but in certain cases, such as literal integers, rationals, reals, and values returned by certain functions a default parent is created in the background.

Category(r): RngElt -> Cat#
Type(r): RngElt -> Cat#

The ‘type’ of \(r\), that is, the Magma category to which the ring element \(r\) belongs. The procedure call ListCategories() gives a list of all the categories, as does the Appendix.

Creation of Elements#

Zero(R): Rng -> RngElt#

The zero element of ring \(R\); this is equivalent to R ! 0.

One(R): Rng -> RngElt#
Id(R): Rng -> RngElt#

The multiplicative identity \(1\) of ring \(R\); this is equivalent to R ! 1.

R ! a: Rng, RngElt -> RngElt#

Coerce the element \(a\) of some ring into the ring \(R\). (The rules on coercion are explained earlier in this Chapter.) If \(a\) is an integer, the coercion will always succeed: the element \(a\cdot 1_R\) will be returned, where \(1_R\) is the unit element of \(R\).

Random(R): Rng -> RngElt#

A random element of the finite ring \(R\) (every element of \(R\) has the same probability of being returned).

Representative(R): Rng -> RngElt#
Rep(R): Rng -> RngElt#

A representative element of the finite ring \(R\).

Arithmetic Operations#

+ a: RngElt -> RngElt#

Element \(a\).

- a: RngElt -> RngElt#

The negation (additive inverse) of element \(a\).

a + b: RngElt, RngElt -> RngElt#

The sum of the ring elements \(a\) and \(b\); if \(a\) and \(b\) do not belong to the same ring \(R\), an attempt will be made to find a common overstructure in which the sum can be taken.

a - b: RngElt, RngElt -> RngElt#

The difference of the ring elements \(a\) and \(b\); if \(a\) and \(b\) do not belong to the same ring \(R\), an attempt will be made to find a common overstructure in which the difference can be taken.

a * b: RngElt, RngElt -> RngElt#

The product of the ring elements \(a\) and \(b\); if \(a\) and \(b\) do not belong to the same ring \(R\), an attempt will be made to find a common overstructure in which the product can be taken.

a ^ k: RngElt, RngIntElt -> RngElt#

Form the \(k\)-th power of the ring element \(a\), for small \(k\). If \(k = 0\), then \(a^k\) returns \(1\), even when \(a = 0\). If \(k\) is negative, \(a\) must have a multiplicative inverse and the result is \((a^{-1})^{-k}\).

a / b: RngElt, RngElt -> RngElt#

Given an element \(a\) of \(R\) and a unit \(b\) of \(R\), form the quotient of the elements \(a\) and \(b\). If \(b\) is not invertible in \(R\), an error results, unless both \(a\) and \(b\) are integers, in which case a / b returns the rational number \(a/b\). If \(a\) and \(b\) do not belong to the same ring \(R\), an attempt will be made to find a common overstructure in which the quotient can be taken.

a +:= b: RngElt, RngElt -> RngElt#

Mutation assignment: change \(a\) into the sum of \(a\) and \(b\).

a -:= b: RngElt, RngElt -> RngElt#

Mutation assignment: change \(a\) into the difference of \(a\) and \(b\).

a *:= b: RngElt, RngElt -> RngElt#

Mutation assignment: change \(a\) into the product of \(a\) and \(b\).

a /:= b: RngElt, RngElt -> RngElt#

Mutation assignment: change \(a\) into the quotient of \(a\) and \(b\).

a ^:= k: RngElt, RngIntElt -> RngElt#

Mutation assignment: change \(a\) into the power \(a^k\).

Equality and Membership#

a eq b: RngElt, RngElt -> BoolElt#

Returns true if the elements \(a\) and \(b\) of \(R\) are the same, otherwise false.

a ne b: RngElt, RngElt -> BoolElt#

Returns true if the elements \(a\) and \(b\) of \(R\) are distinct, otherwise false.

R eq S: Rng, Rng -> BoolElt#

Returns true if the rings \(R\) and \(S\) are the same, otherwise false.

R ne S: Rng, Rng -> BoolElt#

Returns true if the rings \(R\) and \(S\) are distinct, otherwise false.

a in R: RngElt, Rng -> BoolElt#

Returns true if and only if \(a\) is an element of \(R\).

a notin R: RngElt, Rng -> BoolElt#

Returns true if and only if \(a\) is not an element of \(R\).

Predicates on Ring Elements#

IsZero(a): RngElt -> BoolElt#

Returns true if and only if the element \(a\) of \(R\) equals \(0_R\).

IsOne(a): RngElt -> BoolElt#

Returns true if and only if the element \(a\) of \(R\) equals \(1_R\).

IsMinusOne(a): RngElt -> BoolElt#

Returns true if and only if the element \(a\) of \(R\) equals the element \(-1\) of \(R\).

IsUnit(a): RngElt -> BoolElt#

Returns true if \(a\) is a unit in its parent \(R\), false otherwise.

IsIdempotent(x): RngElt -> BoolElt#

Returns true if and only if \(x^2\) equals \(x\).

IsNilpotent(x): RngElt -> BoolElt#

Returns true if and only if some integer power \(x^i\) of \(x\) is zero.

IsZeroDivisor(x): RngElt -> BoolElt#

Returns true if and only if \(x\) is a zero-divisor, that is, there exists an element \(y\) in the parent \(R\) of \(x\) such that \(xy=0\).

IsIrreducible(x): RngElt -> BoolElt#

Returns true if and only if the parent \(R\) of the element \(x\) is a domain and \(x\) is irreducible in \(R\), that is, \(x\) is a non-unit of \(R\) and whenever a product \(ab\) of elements of \(R\) divides \(x\) then \(a\) or \(b\) is a unit of \(R\).

IsPrime(x): RngElt -> BoolElt#

Returns true if and only if the parent \(R\) of the element \(x\) is a domain and \(x\) is a prime element of \(R\), that is, \(x\) is neither \(0\) nor a unit and whenever \(x\) divides the product \(ab\) of two elements of \(R\) it divides \(a\) or \(b\).

Comparison of Ring Elements#

The comparison operations are only defined on types of ring that are ordered.

a gt b: RngElt, RngElt -> BoolElt#

Returns true if the ring element \(a\) is greater than the ring element \(b\), otherwise false.

a ge b: RngElt, RngElt -> BoolElt#

Returns true if the ring element \(a\) is greater than or equal to the ring element \(b\), otherwise false.

a lt b: RngElt, RngElt -> BoolElt#

Returns true if the ring element \(a\) is less than the ring element \(b\), otherwise false.

a le b: RngElt, RngElt -> BoolElt#

Returns true if the ring element \(a\) is less than or equal to the ring element \(b\), otherwise false.

Maximum(a, b): RngElt, RngElt -> RngElt#

The maximum of the ring elements \(a\) and \(b\); if \(a\) and \(b\) do not belong to the same ring \(R\), an attempt will be made to find a common overstructure in which the maximum can be taken.

Maximum(Q): [RngIntElt] -> RngElt#

The maximum of the sequence \(Q\) of ring elements.

Minimum(a, b): RngElt, RngElt -> RngElt#

The minimum of the ring elements \(a\) and \(b\); if \(a\) and \(b\) do not belong to the same ring \(R\), an attempt will be made to find a common overstructure in which the minimum can be taken.

Minimum(Q): [RngIntElt] -> RngElt#

The minimum of the sequence \(Q\) of ring elements.