Localized Rings and Their Ideals
We recall the definition of localization. All rings considered are commutative, with multiplicative identity 1. Let $R$ be a ring, and let $U \subset R$ be a multiplicatively closed subset. That is,
\[1 \in U \;\text{ and }\; u, v \in U \;\Rightarrow \; u\cdot v \in U.\]
Consider the equivalence relation on $R\times U$ defined by setting
\[(r,u)\sim (r', u') \;\text{ iff }\; v(r u'-u r')=0 \;{\text{ for some }}\; v\in U.\]
Write $\frac{r}{u}$ for the equivalence class of $(r, u)$ and $R[U^{-1}]$ for the set of all equivalence classes. Mimicking the standard arithmetic for fractions, $R[U^{-1}]$ can be made into a ring. This ring is called the localization of $R$ at $U$. It comes equipped with the natural ring homomorphism
\[\iota : R\to R[U^{-1}],\; r \mapsto \frac{r}{1}.\]
Given an $R$-module $M$, the analogous construction yields an $R[U^{-1}]$-module $M[U^{-1}]$ which is called the localization of $M$ at $U$. See the section on modules.
Our focus in this section is on localizing both multivariate polynomial rings and quotients of multivariate polynomial rings by ideals. The starting point for this is to provide functionality for handling (several types of) multiplicatively closed subsets of multivariate polynomial rings. Given such a polynomial ring R
and a multiplicatively closed subset U
of R
whose type is supported by OSCAR, entering localization(R, U)
creates the localization, say, RL
of R
at U
.
Given a quotient RQ
of R
by an ideal, with projection map p
: R
$\to$ RQ
, and given a multiplicatively closed subset U
of R
, entering localization(RQ, U)
creates the localization, say, RQL
of RQ
at p(U)
: Since every multiplicatively closed subset of RQ
is of type p(U)
for some U
, there is no need to support an extra type for multiplicatively closed subsets of quotients.
Since localization commutes with passing to quotients by ideals, there is also no need to support an extra type for forming quotients of localized rings:
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> I = ideal(R, [2*x^2-y^3, 2*x^2-y^5])
Ideal generated by
2*x^2 - y^3
2*x^2 - y^5
julia> U = complement_of_point_ideal(R, [0, 0])
Complement
of maximal ideal corresponding to rational point with coordinates (0, 0)
in multivariate polynomial ring in 2 variables over QQ
julia> RQ, _ = quo(R, I);
julia> RQL, _ = localization(RQ, U);
julia> RL, iota = localization(R, U);
julia> RLQ, _ = quo(RL, iota(I));
julia> typeof(RLQ) == typeof(RQL)
true
Most functions described here rely on the computation of standard bases. Recall that OSCAR supports standard bases for multivariate polynomial rings over fields (exact fields supported by OSCAR) and for multivariate polynomial rings over the integers.
Types
The OSCAR types discussed in this section are all parametrized. To simplify the presentation, details on the parameters are omitted.
All types for multiplicatively closed subsets of rings belong to the abstract type AbsMultSet
. For multiplicatively closed subsets of multivariate polynomial rings, there are the abstract subtype AbsMPolyMultSet
and its concrete descendants
MPolyComplementOfKPointIdeal
,MPolyComplementOfPrimeIdeal
,MPolyPowersOfElement
, andMPolyProductOfMultSets
to model products of multiplicatively closed sets already given.
The general abstract type for localizations of rings is AbsLocalizedRing
. For localizations of multivariate polynomial rings, there is the concrete subtype MPolyLocRing
. For localizations of quotients of multivariate polynomial rings, there is the concrete subtype MPolyQuoLocRing
.
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_point_ideal
— Methodcomplement_of_point_ideal(R::MPolyRing, a::Vector)
Given a multivariate polynomial ring $R$ over a field $K$, 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.\]
Examples
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z]);
julia> U = complement_of_point_ideal(R, [0, 0 ,0])
Complement
of maximal ideal corresponding to rational point with coordinates (0, 0, 0)
in multivariate polynomial ring in 3 variables over QQ
complement_of_prime_ideal
— Methodcomplement_of_prime_ideal(P::MPolyIdeal; check::Bool = true)
Given a prime ideal $P$ of a multivariate polynomial ring $R$, say, return the multiplicatively closed subset $R\setminus P.$
If check
is set to true
(default), the function checks whether $P$ is indeed a prime ideal.
This may take some time.
Examples
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z]);
julia> P = ideal(R, [x])
Ideal generated by
x
julia> U = complement_of_prime_ideal(P, check = false)
Complement
of prime ideal (x)
in multivariate polynomial ring in 3 variables over QQ
powers_of_element
— Methodpowers_of_element(f::MPolyRingElem)
Given an element f
of a multivariate polynomial ring R
, say, return the multiplicatively closed subset of R
which is formed by the powers of f
.
Examples
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z]);
julia> f = x
x
julia> U = powers_of_element(f)
Multiplicative subset
of multivariate polynomial ring in 3 variables over QQ
given by the products of [x]
product
— Methodproduct(T::AbsMPolyMultSet, U::AbsMPolyMultSet)
Return the product of the multiplicative subsets T
and U
.
Alternatively, write T*U
.
Examples
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z]);
julia> T = complement_of_point_ideal(R, [0, 0 ,0])
Complement
of maximal ideal corresponding to rational point with coordinates (0, 0, 0)
in multivariate polynomial ring in 3 variables over QQ
julia> f = x
x
julia> U = powers_of_element(f)
Multiplicative subset
of multivariate polynomial ring in 3 variables over QQ
given by the products of [x]
julia> S = product(T, U)
Product of the multiplicative sets
complement of maximal ideal of point (0, 0, 0)
products of (x)
Localized Rings
localization
— Methodlocalization(R::MPolyRing, U::AbsMPolyMultSet)
Return the localization of R
at U
, together with the localization map.
Examples
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z]);
julia> P = ideal(R, [x])
Ideal generated by
x
julia> U = complement_of_prime_ideal(P)
Complement
of prime ideal (x)
in multivariate polynomial ring in 3 variables over QQ
julia> RL, iota = localization(R, U);
julia> RL
Localization
of multivariate polynomial ring in 3 variables x, y, z
over rational field
at complement of prime ideal (x)
julia> iota
Ring homomorphism
from multivariate polynomial ring in 3 variables over QQ
to localization of multivariate polynomial ring in 3 variables over QQ at complement of prime ideal (x)
defined by
x -> x
y -> y
z -> z
localization
— Methodlocalization(RQ::MPolyQuoRing, U::AbsMPolyMultSet)
Given a quotient RQ
of a multivariate polynomial ring R
with projection map p : R -> RQ
, say, and given a multiplicatively closed subset U
of R
, return the localization of RQ
at p(U)
, together with the localization map.
Examples
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> I = ideal(R, [2*x^2-y^3, 2*x^2-y^5])
Ideal generated by
2*x^2 - y^3
2*x^2 - y^5
julia> U = complement_of_point_ideal(R, [0, 0])
Complement
of maximal ideal corresponding to rational point with coordinates (0, 0)
in multivariate polynomial ring in 2 variables over QQ
julia> RQ, _ = quo(R, I);
julia> RQL, iota = localization(RQ, U);
julia> RQL
Localization
of quotient
of multivariate polynomial ring in 2 variables x, y
over rational field
by ideal (2*x^2 - y^3, 2*x^2 - y^5)
at complement of maximal ideal of point (0, 0)
julia> iota
Map defined by a julia-function
from quotient of multivariate polynomial ring by ideal (2*x^2 - y^3, 2*x^2 - y^5)
to localization of RQ at complement of maximal ideal
Tests on Multiplicatively Closed Subsets
Being able to check membership in multiplicatively closed subsets is indispensable to our way of implementing localization:
in
— Methodin(f::MPolyRingElem, U::AbsMPolyMultSet)
Return true
if f
is contained in U
, false
otherwise.
Examples
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z]);
julia> S = complement_of_point_ideal(R, [0, 0 ,0])
Complement
of maximal ideal corresponding to rational point with coordinates (0, 0, 0)
in multivariate polynomial ring in 3 variables over QQ
julia> y in S
false
julia> P = ideal(R, [x])
Ideal generated by
x
julia> T = complement_of_prime_ideal(P)
Complement
of prime ideal (x)
in multivariate polynomial ring in 3 variables over QQ
julia> y in T
true
julia> U = powers_of_element(x)
Multiplicative subset
of multivariate polynomial ring in 3 variables over QQ
given by the products of [x]
julia> x^3 in U
true
julia> (1+y)*x^2 in product(S, U)
true
Data associated to Localized Rings
If RL
is the localization of a multivariate polynomial ring R
at a multiplicatively closed subset U
of R
, then
base_ring(RL)
refers toR
, andinverted_set(RL)
toU
.
If RQ
is a quotient of a multivariate polynomial ring R
, p
: R
$\to$ RQ
is the projection map, U
is a multiplicatively closed subset of R
, and RQL
is the localization of RQ
at p(U)
, then
base_ring(RQL)
refers toR
, andinverted_set(RQL)
toU
.
This reflects the way of creating localizations of quotients of multivariate polynomial rings in OSCAR.
Entering gens(RL)
and gens(RQL)
, we get the images of the generators of R
in RL
and RQL
, respectively. These images print as do the original generators.
Entering dim(RL)
and dim(RQL)
, we get the respective Krull dimensions.
Examples
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z]);
julia> P = ideal(R, [x])
Ideal generated by
x
julia> U = complement_of_prime_ideal(P)
Complement
of prime ideal (x)
in multivariate polynomial ring in 3 variables over QQ
julia> RL, _ = localization(U);
julia> R === base_ring(RL)
true
julia> U === inverted_set(RL)
true
julia> dim(RL)
1
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> I = ideal(R, [2*x^2-y^3, 2*x^2-y^5])
Ideal generated by
2*x^2 - y^3
2*x^2 - y^5
julia> U = complement_of_point_ideal(R, [0, 0])
Complement
of maximal ideal corresponding to rational point with coordinates (0, 0)
in multivariate polynomial ring in 2 variables over QQ
julia> RQ, _ = quo(R, I);
julia> RQL, _ = localization(RQ, U);
julia> R == base_ring(RQL)
true
julia> U == inverted_set(RQL)
true
julia> dim(RQL)
0
Furthermore, we have:
monomial_basis
— Methodmonomial_basis(RQL::MPolyQuoLocRing{<:Field, <:Any, <:Any, <:Any, <:MPolyComplementOfKPointIdeal})
Given a localized ring $RQL$ of type $RQL = (R/I)_P$, where
- $R$ is a multivariate polynomial ring over a field $K$, say $R = K[x_1,\dots, x_n]$,
- $I$ is an ideal of $R$ such that $R/I$ is finite-dimensional as a $K$-vector space, and
- $P$ is of type $P = \langle x_1-a_1,...,x_n-a_n\rangle$, with $a_1,\dots, a_n\in K$,
return a vector of monomials of $R$ such that the images of these monomials under the composition of the localization map with the projection map form a $K$-basis of $RQL$.
Examples
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> f = (y-1)^3-(x)^2;
julia> g = (y-1)^5-(x)^2;
julia> I = ideal(R, [f, g]); # tangential cusps at [0, 1] and transversal
# intersections at [1, 2], [-1, 2], [1, i], [1, -i]
julia> RQ, _ = quo(R, I);
julia> monomial_basis(RQ)
10-element Vector{QQMPolyRingElem}:
x*y^2
y^2
x^3*y
x^2*y
x*y
y
x^3
x^2
x
1
julia> P = [0, 1]
2-element Vector{Int64}:
0
1
julia> U = complement_of_point_ideal(R, P)
Complement
of maximal ideal corresponding to rational point with coordinates (0, 1)
in multivariate polynomial ring in 2 variables over QQ
julia> RQL, _ = localization(RQ, U);
julia> monomial_basis(RQL)
6-element Vector{MPolyLocRingElem{QQField, QQFieldElem, QQMPolyRing, QQMPolyRingElem, MPolyComplementOfKPointIdeal{QQField, QQFieldElem, QQMPolyRing, QQMPolyRingElem}}}:
x*y^2
y^2
x*y
y
x
1
julia> C = plane_curve(f);
julia> D = plane_curve(g);
julia> intersection_multiplicity(C, D, C(P))
6
julia> R, (x,y) = QQ["x","y"];
julia> f = (x^2-y^3)*(y-1); # 3 singularities, a cusp and two nodes
julia> Tf = tjurina_algebra(f)
Quotient
of multivariate polynomial ring in 2 variables x, y
over rational field
by ideal (x^2*y - x^2 - y^4 + y^3, 2*x*y - 2*x, x^2 - 4*y^3 + 3*y^2)
julia> monomial_basis(Tf)
4-element Vector{QQMPolyRingElem}:
y^2
y
x
1
julia> TfL0,_ = localization(Tf, complement_of_point_ideal(R, [0,0]));
julia> monomial_basis(TfL0)
2-element Vector{MPolyLocRingElem{QQField, QQFieldElem, QQMPolyRing, QQMPolyRingElem, MPolyComplementOfKPointIdeal{QQField, QQFieldElem, QQMPolyRing, QQMPolyRingElem}}}:
y
1
julia> TfL1,_ = localization(Tf, complement_of_point_ideal(R, [1,1]));
julia> monomial_basis(TfL1)
1-element Vector{MPolyLocRingElem{QQField, QQFieldElem, QQMPolyRing, QQMPolyRingElem, MPolyComplementOfKPointIdeal{QQField, QQFieldElem, QQMPolyRing, QQMPolyRingElem}}}:
1
julia> TfL2,_ = localization(Tf, complement_of_point_ideal(R, [-1,1]));
julia> monomial_basis(TfL2)
1-element Vector{MPolyLocRingElem{QQField, QQFieldElem, QQMPolyRing, QQMPolyRingElem, MPolyComplementOfKPointIdeal{QQField, QQFieldElem, QQMPolyRing, QQMPolyRingElem}}}:
1
julia> vector_space_dimension(Tf) == vector_space_dimension(TfL0) + vector_space_dimension(TfL1) + vector_space_dimension(TfL2)
true
Elements of Localized Rings
Types
The general abstract type for elements of localized rings is AbsLocalizedRingElem
. For elements of localizations of multivariate polynomial rings, there is the concrete subtype MPolyLocRingElem
. For elements of localizations of quotients of multivariate polynomial rings, there is the concrete subtype MPolyQuoLocRingElem
.
Creating Elements of Localized Rings
If RL
is the localization of a multivariate polynomial ring R
at a multiplicatively closed subset U
of R
, then elements of RL
are created as (fractions of) images of elements of R
under the localization map or by coercing (pairs of) elements of R
into fractions.
If RQ
is a quotient of a multivariate polynomial ring R
, p
: R
$\to$ RQ
is the projection map, U
is a multiplicatively closed subset of R
, and RQL
is the localization of RQ
at p(U)
, then elements of RQL
are created similarly, starting from elements of R
.
Examples
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z])
(Multivariate polynomial ring in 3 variables over QQ, QQMPolyRingElem[x, y, z])
julia> P = ideal(R, [x])
Ideal generated by
x
julia> U = complement_of_prime_ideal(P)
Complement
of prime ideal (x)
in multivariate polynomial ring in 3 variables over QQ
julia> RL, iota = localization(U);
julia> iota(x)
x
julia> RL(x)
x
julia> f = iota(y)/iota(z)
y/z
julia> g = RL(y, z)
y/z
julia> X, Y, Z = RL.(gens(R));
julia> h = Y/Z
y/z
julia> f == g == h
true
julia> f+g
2*y/z
julia> f*g
y^2/z^2
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> I = ideal(R, [2*x^2-y^3, 2*x^2-y^5])
Ideal generated by
2*x^2 - y^3
2*x^2 - y^5
julia> U = complement_of_point_ideal(R, [0, 0])
Complement
of maximal ideal corresponding to rational point with coordinates (0, 0)
in multivariate polynomial ring in 2 variables over QQ
julia> RQ, p = quo(R, I);
julia> RQL, iota = localization(RQ, U);
julia> phi = compose(p, iota);
julia> phi(x)
x
julia> RQL(x)
x
julia> f = phi(x)/phi(y-1)
x/(y - 1)
julia> g = RQL(x, y-1)
x/(y - 1)
julia> X, Y = gens(RQL);
julia> h = X/(Y-1)
x/(y - 1)
julia> f == g == h
true
julia> f+g
2*x/(y - 1)
julia> f*g
x^2/(y^2 - 2*y + 1)
Data Associated to Elements of Localized Rings
If RL
is a localization of a multivariate polynomial ring R
, and f
is an element of RL
, internally represented by a pair (r, u)
of elements of R
, then
parent(f)
refers toRL
,numerator(f)
tor
, anddenominator(f)
tou
.
If RQL
is a localization of a quotient RQ
of a multivariate polynomial ring R
, and f
is an element of RQL
, internally represented by a pair (r, u)
of elements of R
, then
parent(f)
refers toRQL
,numerator(f)
to the image ofr
inRQ
, anddenominator(f)
to the image ofu
inRQ
.
Thus, the behavior of the functions numerator
and denominator
reflects the mathematical viewpoint of representing f
by pairs of elements of RQ
and not the internal representation of f
as pairs of elements of R
.
Examples
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z]);
julia> P = ideal(R, [x])
Ideal generated by
x
julia> U = complement_of_prime_ideal(P)
Complement
of prime ideal (x)
in multivariate polynomial ring in 3 variables over QQ
julia> RL, iota = localization(U);
julia> f = iota(x)/iota(y)
x/y
julia> parent(f)
Localization
of multivariate polynomial ring in 3 variables x, y, z
over rational field
at complement of prime ideal (x)
julia> g = iota(y)/iota(z)
y/z
julia> r = numerator(f*g)
x
julia> u = denominator(f*g)
z
julia> typeof(r) == typeof(u) <: MPolyRingElem
true
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> I = ideal(R, [2*x^2-y^3, 2*x^2-y^5])
Ideal generated by
2*x^2 - y^3
2*x^2 - y^5
julia> U = complement_of_point_ideal(R, [0, 0])
Complement
of maximal ideal corresponding to rational point with coordinates (0, 0)
in multivariate polynomial ring in 2 variables over QQ
julia> RQ, p = quo(R, I);
julia> RQL, iota = localization(RQ, U);
julia> phi = compose(p, iota);
julia> f = phi(x)
x
julia> parent(f)
Localization
of quotient
of multivariate polynomial ring in 2 variables x, y
over rational field
by ideal (2*x^2 - y^3, 2*x^2 - y^5)
at complement of maximal ideal of point (0, 0)
julia> g = f/phi(y-1)
x/(y - 1)
julia> r = numerator(f*g)
x^2
julia> u = denominator(f*g)
y - 1
julia> typeof(r) == typeof(u) <: MPolyQuoRingElem
true
Tests on Elements of Localized Rings
is_unit
— Methodis_unit(f::MPolyLocRingElem)
Return true
, if f
is a unit of parent(f)
, false
otherwise.
Examples
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z]);
julia> P = ideal(R, [x])
Ideal generated by
x
julia> U = complement_of_prime_ideal(P)
Complement
of prime ideal (x)
in multivariate polynomial ring in 3 variables over QQ
julia> RL, iota = localization(U);
julia> is_unit(iota(x))
false
julia> is_unit(iota(y))
true
is_unit
— Methodis_unit(f::MPolyQuoLocRingElem)
Return true
, if f
is a unit of parent(f)
, true
otherwise.
Examples
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> I = ideal(R, [2*x^2-y^3, 2*x^2-y^5])
Ideal generated by
2*x^2 - y^3
2*x^2 - y^5
julia> U = complement_of_point_ideal(R, [0, 0])
Complement
of maximal ideal corresponding to rational point with coordinates (0, 0)
in multivariate polynomial ring in 2 variables over QQ
julia> RQ, p = quo(R, I);
julia> RQL, iota = localization(RQ, U);
julia> phi = compose(p, iota);
julia> is_unit(phi(x-1))
true
Homomorphisms from Localized Rings
The general abstract type for ring homomorphisms starting from localized rings is AbsLocalizedRingHom
. For ring homomorphisms starting from localizations of multivariate polynomial rings, there is the concrete subtype MPolyLocalizedRingHom
. For ring homomorphisms starting from quotients of multivariate polynomial rings, there is the concrete subtype MPolyQuoLocalizedRingHom
. We describe the construction of such homomorphisms. Let
R
be a multivariate polynomial ring,U
be a multiplicatively closed subset ofR
,RQ = R/I
be a quotient ofR
with projection mapp
:R
$\to$RQ
,RL
(RQL
) be the localization ofR
atU
(ofRQ
atp(U)
), andS
be another commutative ring with 1.
Then, to give a ring homomorphism PHI
from RL
to S
(fromRQL
to S
) is the same as to give a ring homomorphism phi
from R
to S
which sends elements of U
to units in S
(and elements of I
to zero). That is, PHI
is determined by composing it with the localization map R
$\to$ RL
(by composing it with the composition of the localization map RQ
$\to$ RQL
and the projection map R
$\to$ RQ
). The constructors below take this into account.
hom
— Methodhom(RL::MPolyLocRing, S::Ring, phi::Map)
Given a localized ring RL
of type MPolyLocRing
, say RL
is the localization of a 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 RL
to S
whose composition with the localization map is phi
.
hom(RL::MPolyLocRing, S::Ring, V::Vector)
Given a localized ring RL
as above, and given a vector V
of nvars
elements of S
, let phi
be the homomorphism from R
to S
which is determined by the entries of V
as the images of the generators of R
. If phi
satisfies the condition above, proceed as above.
hom(RQL::MPolyQuoLocRing, S::Ring, phi::Map)
Given a localized ring RQL
of type MPolyQuoLocRing
, say RQL
is the localization of a quotient ring RQ
of a 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
and elements of the modulus of RQ
to zero, return the homomorphism from RQL
to S
whose composition with the localization map RQ -> RQL
and the projection map R -> RQ
is phi
.
hom(RQL::MPolyQuoLocRing, S::Ring, V::Vector)
Given a localized ring RQL
as above, and given a vector V
of nvars
elements of S
, let phi
be the homomorphism from R
to S
which is determined by the entries of V
as the images of the generators of R
. If phi
satisfies the condition above, proceed as above.
Except from the case where the type of U
is <: MPolyPowersOfElement
, the condition on phi
requiring that elements of U
are send to units in S
is not checked by the hom
constructor.
Examples
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z]);
julia> I = ideal(R, [y-x^2, z-x^3]);
julia> RQ, p = quo(R, I);
julia> UR = complement_of_point_ideal(R, [0, 0, 0]);
julia> RQL, _ = localization(RQ, UR);
julia> T, (t,) = polynomial_ring(QQ, [:t]);
julia> UT = complement_of_point_ideal(T, [0]);
julia> TL, _ = localization(T, UT);
julia> PHI = hom(RQL, TL, TL.([t, t^2, t^3]))
Ring homomorphism
from localization of RQ at complement of maximal ideal
to localization of multivariate polynomial ring in 1 variable over QQ at complement of maximal ideal of point (0)
defined by
x -> t
y -> t^2
z -> t^3
julia> PSI = hom(TL, RQL, RQL.([x]))
Ring homomorphism
from localization of multivariate polynomial ring in 1 variable over QQ at complement of maximal ideal of point (0)
to localization of RQ at complement of maximal ideal
defined by
t -> x
julia> PHI(RQL(z))
t^3
julia> PSI(TL(t))
x
Given a ring homomorphism PHI
from RL
to S
(from RQL
to S
), domain(PHI)
and codomain(PHI)
refer to RL
and S
(RQL
and S
), respectively. The corresponding homomorphism phi
from R
to S
is recovered as follows:
restricted_map
— Methodrestricted_map(PHI::MPolyLocalizedRingHom)
restricted_map(PHI::MPolyQuoLocalizedRingHom)
Given a ring homomorphism PHI
starting from a localized multivariate polynomial ring (a localized quotient of a multivariate polynomial ring), return the composition of PHI
with the localization map (with the composition of the localization map and the projection map).
Examples
julia> R, (x, y, z) = polynomial_ring(QQ, [:x, :y, :z]);
julia> I = ideal(R, [y-x^2, z-x^3]);
julia> RQ, p = quo(R, I);
julia> UR = complement_of_point_ideal(R, [0, 0, 0]);
julia> RQL, _ = localization(RQ, UR);
julia> T, (t,) = polynomial_ring(QQ, [:t]);
julia> UT = complement_of_point_ideal(T, [0]);
julia> TL, _ = localization(T, UT);
julia> PHI = hom(RQL, TL, TL.([t, t^2, t^3]));
julia> PSI = hom(TL, RQL, RQL.([x]));
julia> phi = restricted_map(PHI)
Ring homomorphism
from multivariate polynomial ring in 3 variables over QQ
to localization of multivariate polynomial ring in 1 variable over QQ at complement of maximal ideal of point (0)
defined by
x -> t
y -> t^2
z -> t^3
julia> psi = restricted_map(PSI)
Ring homomorphism
from multivariate polynomial ring in 1 variable over QQ
to localization of RQ at complement of maximal ideal
defined by
t -> x
Ideals in Localized Rings
Types
The general abstract type for ideals in localized rings is AbsLocalizedIdeal
. For ideals in localizations of multivariate polynomial rings, there is the concrete subtype MPolyLocalizedIdeal
. For ideals in localizations of quotients of multivariate polynomial rings, there is the concrete subtype MPolyQuoLocalizedIdeal
.
Constructors
Given a localization RL
of a multivariate polynomial ring R
, and given a vector V
of elements of RL
(of R
), the ideal of RL
generated by (the images) of the entries of V
is created by entering ideal(RL, V)
.
The construction of ideals in localizations of quotients of multivariate polynomial rings is similar.
Examples
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> f = x^3+y^4
x^3 + y^4
julia> V = [derivative(f, i) for i=1:2]
2-element Vector{QQMPolyRingElem}:
3*x^2
4*y^3
julia> U = complement_of_point_ideal(R, [0, 0]);
julia> RL, _ = localization(R, U);
julia> MI = ideal(RL, V)
Ideal generated by
3*x^2
4*y^3
Data Associated to Ideals
If I
is an ideal of a localized multivariate polynomial ring RL
, then
base_ring(I)
refers toRL
,gens(I)
to the generators ofI
,number_of_generators(I)
/ngens(I)
to the number of these generators, andgen(I, k)
as well asI[k]
to thek
-th such generator.
We also have:
minimal_generating_set
— Methodminimal_generating_set(I::MPolyLocalizedIdeal{<:MPolyLocRing{<:Field, <:FieldElem, <:MPolyRing, <:MPolyRingElem, <:MPolyComplementOfKPointIdeal}})
Given an ideal $I$ in a localized ring $RL$ of type $RL = R_P$, where
- $R$ is a multivariate polynomial ring over a field $K$, say $R = K[x_1,\dots, x_n]$, and
- $P$ is of type $P = \langle x_1-a_1,...,x_n-a_n\rangle$, with $a_1,\dots, a_n\in K$,
return a vector containing a minimal set of generators of I
.
If I
is the zero ideal, then an empty list is returned.
Examples
julia> R, (x, y) = QQ[:x, :y];
julia> RL, _ = localization(R, complement_of_point_ideal(R, [1, 2]));
julia> I = ideal(RL, [x-1, y-2])^2
Ideal generated by
x^2 - 2*x + 1
x*y - 2*x - y + 2
x*y - 2*x - y + 2
y^2 - 4*y + 4
julia> minimal_generating_set(I)
3-element Vector{MPolyLocRingElem{QQField, QQFieldElem, QQMPolyRing, QQMPolyRingElem, MPolyComplementOfKPointIdeal{QQField, QQFieldElem, QQMPolyRing, QQMPolyRingElem}}}:
y^2 - 4*y + 4
x*y - 2*x - y + 2
x^2 - 2*x + 1
Retrieving data as above works similarly if I
is an ideal of a localized quotient of a multivariate polynomial ring RQL
.
Operations on Ideals
If I
, J
are ideals of a localized multivariate polynomial ring RL
, then
I^k
refers to thek
-th power ofI
,I+J
,I*J
, andintersect(I, J)
to the sum, product, and intersection ofI
andJ
,I:J
/quotient(I, J)
to the ideal quotient ofI
byJ
, andsaturation(I)
as well assaturation_with_index(I)
to the saturation ofI
byJ
.
With respect to the decomposition of ideals, we have
radical(I)
,minimal_primes(I)
, andprimary_decomposition(I)
.
Similarly, if I
and J
are ideals of a localized quotient of a multivariate polynomial ring.
Tests on Ideals
The usual tests f in I
/ ideal_membership(f, I)
, issubset(I, J)
, I == J
, and is_prime(I)
are available.
Saturation
If $RL$ is the localization of a multivariate polynomial ring $R$ at a multiplicative subset $U$ of $R$, then the ideal theory of $RL$ is a simplified version of the ideal theory of $R$ (see, for instance, [Eis95]). In particular, each ideal $I$ of $RL$ is the extension $J\cdot RL$ 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 by entering saturated_ideal(I)
.
If $RQL$ is the localization of a quotient $RQ$ of a multivariate polynomial ring $R$, and $I$ is an ideal of $RQL$, then the return value of saturated_ideal(I)
is the preimage of the saturation of $I$ over $RQ$ under the projection map $R \to RQ$ (and not the saturation of $I$ over $RQ$ itself).
saturated_ideal
— Methodsaturated_ideal(I::MPolyLocalizedIdeal)
Given an ideal I
of a localization, say, RL
of a multivariate polynomial ring, say, R
, return the saturation of I
over R
. That is, return the largest ideal of R
whose extension to RL
is I
. This is the preimage of I
under the localization map.
saturated_ideal(I::MPolyQuoLocalizedIdeal)
Given an ideal I
of a localization, say, RQL
of a quotient, say, RQ
of a multivariate polynomial ring, say, R
, return the preimage of the saturation of I
over RQ
under the projection map R -> RQ
.
Examples
julia> R, (x,) = polynomial_ring(QQ, [:x]);
julia> U = powers_of_element(x)
Multiplicative subset
of multivariate polynomial ring in 1 variable over QQ
given by the products of [x]
julia> RL, _ = localization(R, U);
julia> I = ideal(RL, [x+x^2])
Ideal generated by
x^2 + x
julia> SI = saturated_ideal(I)
Ideal generated by
x + 1
julia> base_ring(SI)
Multivariate polynomial ring in 1 variable x
over rational field
julia> U = complement_of_point_ideal(R, [0])
Complement
of maximal ideal corresponding to rational point with coordinates (0)
in multivariate polynomial ring in 1 variable over QQ
julia> RL, _ = localization(R, U);
julia> I = ideal(RL, [x+x^2])
Ideal generated by
x^2 + x
julia> saturated_ideal(I)
Ideal generated by
x