Localized Rings and Their Ideals

Let $R$ be a commutative ring with 1, and let $U \subset R$ be a multiplicatively closed subset, that is,

\[s, t \in U \;\Rightarrow \; s\cdot t \in U \;\text{ and }\; 1 \in U.\]

Then we can form the localization of $R$ at $U,$ that is, the set

\[ R[U^{-1}] = \left\{ \frac{p}{q} : p,q \in R, \, q \in U \right\},\]

equipped with its standard arithmetic for fractions. See, for instance, David Eisenbud (1995).

In this section, we describe OSCAR functionality for handling localizations of multivariate polynomial rings, as well as localizations of affine algebras, at various types of multiplicatively closed subsets. For the convenience of the developer, in an appendix, we outline a general framework for creating new concrete instances of localized rings in OSCAR, describing relevant abstract types and indicating the functionality to be implemented.

Note

All OSCAR types discussed in this section are parametrized. For simplicity of the presentation, we omit corresponding details.

Most functions for handling localizations of multivariate polynomial rings rely on Gröbner bases. More precisely, if $R$ is a multivariate polynomial ring, Gröbner bases allow one to solve ideal- and module-theoretic questions concerning $R[U^{-1}]$ by computations over $R$.

Note

Recall that in OSCAR, Gröbner bases are implemented for multivariate polynomial rings over fields (exact fields supported by OSCAR) and for multivariate polynomial rings over the integers.

Note

In the local context, following Hironaka and Grauert, it is often common to use the name standard basis instead of Gröbner basis. See, for example, Gert-Martin Greuel, Gerhard Pfister (2008).

Types

All OSCAR types for multiplicatively closed subsets of commutative rings with unit belong to the abstract type AbsMultSet. For multiplicatively closed subsets of multivariate polynomial rings, there are the concrete descendants MPolyComplementOfKPointIdeal, MPolyComplementOfPrimeIdeal, and MPolyPowersOfElement.

The general abstract type for localizations of commutative rings with unit is AbsLocalizedRing. For localizations of multivariate polynomial rings, there is the concrete subtype MPolyLocalizedRing.

Constructors

Multiplicatively Closed Subsets

In accordance with the above mentioned types, we have the following constructors for multiplicatively closed subsets of multivariate polynomial rings.

complement_of_idealMethod
complement_of_ideal(R::MPolyRing, a::Vector)

Given a polynomial ring $R$, say $R = K[x_1,\dots, x_n]$, and given a vector $a = (a_1, \dots, a_n)$ of $n$ elements of $K$, return the multiplicatively closed subset $R\setminus M$, where $M$ is the maximal ideal

\[M = \langle x_1-a_1,\dots, x_n-a_n\rangle \subset R.\]

complement_of_ideal(P::MPolyIdeal; check::Bool=false)

Given a prime ideal $P$ of a polynomial ring $R$, say, return the multiplicatively closed subset $R\setminus P.$

Note

If check is set to true, the function checks whether $P$ is indeed a prime ideal.

This may take some time.

Examples

julia> R, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])

julia> U = complement_of_ideal(R, [0, 0 ,0])
complement of maximal ideal corresponding to point with coordinates fmpq[0, 0, 0]

julia> P = ideal(R, [x])
ideal(x)

julia> U = complement_of_ideal(P)
complement of ideal(x)
source
powers_of_elementMethod
powers_of_element(f::MPolyElem)

Given an element f of a polynomial ring, return the multiplicatively closed subset of the polynomial ring which is formed by the powers of f.

Examples

julia> R, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])

julia> f = x
x

julia> U = powers_of_element(f)
powers of fmpq_mpoly[x]
source

It is also possible to build products of multiplicatively closed sets already given:

productMethod
product(T::AbsMPolyMultSet, U::AbsMPolyMultSet)

Return the product of the multiplicative subsets T and U.

Alternatively, write T*U.

Examples

julia> R, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])

julia> T = complement_of_ideal(R, [0, 0 ,0])
complement of maximal ideal corresponding to point with coordinates fmpq[0, 0, 0]

julia> f = x
x

julia> U = powers_of_element(f)
powers of fmpq_mpoly[x]

julia> S = product(T, U)
product of the multiplicative sets [complement of maximal ideal corresponding to point with coordinates fmpq[0, 0, 0], powers of fmpq_mpoly[x]]
source

Containment in multiplicatively closed subsets can be checked via the in function as indicated below:

Examples
julia> R, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])

julia> S = complement_of_ideal(R, [0, 0 ,0])
complement of maximal ideal corresponding to point with coordinates fmpq[0, 0, 0]

julia> y in S
false

julia> P = ideal(R, [x])
ideal(x)

julia> T = complement_of_ideal(P)
complement of ideal(x)

julia> y in T
true

julia> f = x
x

julia> U = powers_of_element(f)
powers of fmpq_mpoly[x]

julia> x^3 in U
true

julia> (1+y)*x^2 in product(S, U)
true

Localized Rings

LocalizationMethod
Localization(U::AbsMPolyMultSet)

Given a multiplicatively closed subset of a multivariate polynomial ring $R$, say, return the localization of $R$ at $U$ together with the localization map from $R$ to $R[U^{-1}]$.

Localization(R::MPolyRing, U::AbsMPolyMultSet)

Given a multiplicatively closed subset $U$ of $R$, proceed as above.

Examples

julia> R, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])

julia> P = ideal(R, [x])
ideal(x)

julia> U = complement_of_ideal(P)
complement of ideal(x)

julia> Rloc, iota = Localization(R, U);

julia> Rloc
localization of Multivariate Polynomial Ring in x, y, z over Rational Field at the complement of ideal(x)

julia> iota
Map with following data
Domain:
=======
Multivariate Polynomial Ring in x, y, z over Rational Field
Codomain:
=========
localization of Multivariate Polynomial Ring in x, y, z over Rational Field at the complement of ideal(x)
source

Data associated to Localized Rings

If Rloc is the localization of a multivariate polynomial ring R at a multiplicatively closed subset U of R, then

  • base_ring(Rloc) refers to R, and
  • inverted_set(Rloc) to U.
Examples
julia> R, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])

julia> P = ideal(R, [x])
ideal(x)

julia> U = complement_of_ideal(P)
complement of ideal(x)

julia> Rloc, _ = Localization(U);

julia> R === base_ring(Rloc)
true

julia> U === inverted_set(Rloc)
true

Elements of Localized Rings

Types

The general abstract type for elements of localizations of commutative rings with unit is AbsLocalizedRingElem. For elements of localizations of multivariate polynomial rings, there is the concrete subtype MPolyLocalizedRingElem.

Creating Elements of Localized Rings

Elements of a localized multivariate polynomial ring $R[U^{-1}]$ are created as (fractions of) images of elements of $R$ under the localization map or by directly coercing (pairs of) elements of $R$ into fractions.

Examples
julia> R, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])

julia> P = ideal(R, [x])
ideal(x)

julia> U = complement_of_ideal(P)
complement of ideal(x)

julia> Rloc, iota = Localization(U);

julia> f = iota(x)
x//1

julia> f == Rloc(x)
true

julia> g = Rloc(y, z)
y//z

julia> f+g
(x*z + y)//z

julia> f*g
(x*y)//z

Data Associated to Elements of Localized Rings

Given an element f of a localized multivariate ring polynomial Rloc,

  • parent(f) refers to Rloc,
  • numerator(f) to the numerator of the internal representative of f, and
  • denominator(f) to the denominator of the internal representative of f.
Examples
julia> R, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])

julia> P = ideal(R, [x])
ideal(x)

julia> U = complement_of_ideal(P)
complement of ideal(x)

julia> Rloc, iota = Localization(U);

julia> f = iota(x)//iota(y)
x//y

julia> parent(f)
localization of Multivariate Polynomial Ring in x, y, z over Rational Field at the complement of ideal(x)

julia> g = iota(y)//iota(z)
y//z

julia> numerator(f*g)
x

julia> denominator(f*g)
z

Homomorphisms from Localized Rings

Let $R[U^{-1}]$ be the localization of a multivariate polynomial ring $R$ at a multiplicatively closed subset U of $R$. Then, by the universal property of localization, each homomorphism from $R[U^{-1}]$ to a commutative ring $S$ with unit is determined as the extension of a ring homomorphism $R \to S$ sending elements of $U$ to units in $S$. In OSCAR, such homomorphisms are of type MPolyLocalizedRingHom. They are created using the following constructor:

homMethod
hom(Rloc::MPolyLocalizedRing, S::Ring, phi::Map)

Given a localized ring Rlocof type MPolyLocalizedRing, say Rloc is the localization of the multivariate polynomial ring R at the multiplicatively closed subset U of R, and given a homomorphism phi from R to S sending elements of U to units in S, return the homomorphism from Rloc to S whose composition with the localization map is phi.

hom(Rloc::MPolyLocalizedRing, S::Ring, images::Vector)

Given a localized ring Rloc with notation as above, and given a vector images of nvars elements of S, let phi be the homomorphism from R to S which is defined by the entries of images, and proceed as above.

Note

Since most multiplicative sets are infinite, the extra condition on phi is typically not checked by this constructor.

Examples

julia> R, (x,) = PolynomialRing(QQ, ["x"])
(Multivariate Polynomial Ring in x over Rational Field, fmpq_mpoly[x])

julia> U = powers_of_element(x)
powers of fmpq_mpoly[x]

julia> Rloc, iota = Localization(R, U);

julia> Sprime, (X, Y) = PolynomialRing(QQ, ["X", "Y"])
(Multivariate Polynomial Ring in X, Y over Rational Field, fmpq_mpoly[X, Y])

julia> S, p = quo(Sprime, ideal(Sprime, [X*Y-1]))
(Quotient of Multivariate Polynomial Ring in X, Y over Rational Field by ideal(X*Y - 1), Map from
Multivariate Polynomial Ring in X, Y over Rational Field to Quotient of Multivariate Polynomial Ring in X, Y over Rational Field by ideal(X*Y - 1) defined by a julia-function with inverse)

julia> PHI = hom(Rloc, S, [p(X)])
morphism from the localized ring localization of Multivariate Polynomial Ring in x over Rational Field at the powers of fmpq_mpoly[x] to Quotient of Multivariate Polynomial Ring in X, Y over Rational Field by ideal(X*Y - 1)

julia> PHI(iota(x))
X

julia> is_unit(PHI(iota(x)))
true
source

Given a ring homomorphism PHI from Rloc to S as above, domain(PHI) and codomain(PHI) refer to Rloc and S, respectively. Moreover, the composition of PHI with the localization map is recovered as follows:

restricted_mapMethod
restricted_map(PHI::MPolyLocalizedRingHom)

Given a ring homomorphism PHI from a localized multivariate polynomial ring, return the composition of PHI with the localization map.

Examples

julia> R, (x,) = PolynomialRing(QQ, ["x"])
(Multivariate Polynomial Ring in x over Rational Field, fmpq_mpoly[x])

julia> U = powers_of_element(x)
powers of fmpq_mpoly[x]

julia> Rloc, iota = Localization(R, U);

julia> Sprime, (X, Y) = PolynomialRing(QQ, ["X", "Y"])
(Multivariate Polynomial Ring in X, Y over Rational Field, fmpq_mpoly[X, Y])

julia> S, p = quo(Sprime, ideal(Sprime, [X*Y-1]))
(Quotient of Multivariate Polynomial Ring in X, Y over Rational Field by ideal(X*Y - 1), Map from
Multivariate Polynomial Ring in X, Y over Rational Field to Quotient of Multivariate Polynomial Ring in X, Y over Rational Field by ideal(X*Y - 1) defined by a julia-function with inverse)

julia> PHI = hom(Rloc, S, [p(X)])
morphism from the localized ring localization of Multivariate Polynomial Ring in x over Rational Field at the powers of fmpq_mpoly[x] to Quotient of Multivariate Polynomial Ring in X, Y over Rational Field by ideal(X*Y - 1)

julia> phi = restricted_map(PHI)
Map with following data
Domain:
=======
Multivariate Polynomial Ring in x over Rational Field
Codomain:
=========
Quotient of Multivariate Polynomial Ring in X, Y over Rational Field by ideal(X*Y - 1)
source

Ideals in Localized Rings

Types

Ideals in localized rings are of concrete type MPolyLocalizedIdeal.

Constructors

Given a localization Rloc of a multivariate polynomial ring R, and given a vector V of elements of Rloc (of R), the ideal of Rloc which is generated by (the images) of the entries of V is created by entering ideal(Rloc, V).

Data Associated to Ideals

If I is an ideal of a localized multivariate polynomial ring Rloc, then

  • base_ring(I) refers to Rloc,
  • gens(I) to the generators of I,
  • ngens(I) to the number of these generators, and
  • gen(I, k) as well as I[k] to the k-th such generator.

Operations on Ideals

If I, J are ideals of a localized multivariate polynomial ring Rloc, then

  • I^k refers to the k-th power of I,
  • I+J, I*J, and intersect(I, J) to the sum, product, and intersection of I and J, and
  • quotient(I, J) as well as I:J to the ideal quotient of I by J.

Tests on Ideals

The usual tests f in J, issubset(I, J), and I == J are available.

Saturation

If $Rloc$ is the localization of a multivariate polynomial ring $R$ at a multplicative subset $U$ of $R$, then the ideal theory of $Rloc$ is a simplified version of the ideal theory of $R$ (see, for instance, David Eisenbud (1995)). In particular, each ideal $I$ of $Rloc$ is the extension $J\cdot Rloc$ of an ideal $J$ of $R$. The ideal

\[\{f\in R \mid uf\in J \text{ for some } u\in U\}\]

is independent of the choice of $J$ and is the largest ideal of $R$ which extends to $I$. It is, thus, the contraction of $I$ to $R$, that is, the preimage of $I$ under the localization map. We call this ideal the saturation of $I$ over $R$. In OSCAR, it is obtained as follows:

saturated_idealMethod
saturated_ideal(I::MPolyLocalizedIdeal)

Given an ideal I of a localization, say, Rloc of a multivariate polynomial ring, say, R, return the largest ideal of R whose extension to Rloc is I. This is the preimage of I under the localization map.

Note

The function does not necessarily return a minimal set of generators for the resulting ideal.

Examples

julia> R, (x,) = PolynomialRing(QQ, ["x"])
(Multivariate Polynomial Ring in x over Rational Field, fmpq_mpoly[x])

julia> U = powers_of_element(x)
powers of fmpq_mpoly[x]

julia> Rloc, iota = Localization(R, U);

julia> I = ideal(Rloc, [x+x^2])
ideal in localization of Multivariate Polynomial Ring in x over Rational Field at the powers of fmpq_mpoly[x] generated by the elements (x^2 + x)//1

julia> saturated_ideal(I)
ideal(x + 1)

julia> U = complement_of_ideal(R, [0])
complement of maximal ideal corresponding to point with coordinates fmpq[0]

julia> Rloc, iota = Localization(R, U);

julia> I = ideal(Rloc, [x+x^2])
ideal in localization of Multivariate Polynomial Ring in x over Rational Field at the complement of maximal ideal corresponding to point with coordinates fmpq[0] generated by the elements (x^2 + x)//1

julia> saturated_ideal(I)
ideal(x)
source