Integers mod n
Integers mod $n$ are implemented via the Singular n_Zn
type for any positive modulus that can fit in a Julia Int
.
The associated ring of integers mod $n$ is represented by a parent object which can be constructed by a call to the residue_ring
constructor.
The types of the parent objects and elements of the associated rings of integers modulo n are given in the following table according to the library providing them.
Library | Element type | Parent type |
---|---|---|
Singular | n_Zn | Singular.N_ZnRing |
All integer mod $n$ element types belong directly to the abstract type RingElem
and all the parent object types belong to the abstract type Ring
.
Integer mod $n$ functionality
Singular.jl integers modulo $n$ provide all the AbstractAlgebra ring and residue ring functionality.
https://nemocas.github.io/AbstractAlgebra.jl/latest/ring
https://nemocas.github.io/AbstractAlgebra.jl/latest/residue
Parts of the Euclidean Ring interface may also be implemented, though Singular will report an error if division is meaningless (even after cancelling zero divisors).
https://nemocas.github.io/AbstractAlgebra.jl/latest/euclidean_interface
Below, we describe the functionality that is specific to the Singular integers mod $n$ ring and not already listed at the given links.
Constructors
Given a ring $R$ of integers modulo $n$, we also have the following coercions in addition to the standard ones expected.
R(n::n_Z)
R(n::ZZRingElem)
Coerce a Singular or Flint integer value into the ring.
Basic manipulation
Examples
julia> R, = residue_ring(ZZ, 26);
julia> a = R(5)
5
julia> is_unit(a)
true
julia> c = characteristic(R)
26