CurrentModule = Oscar
DocTestSetup = Oscar.doctestsetup()
The OSCAR type for ideals in multivariate polynomial rings is of parametrized form
MPolyIdeal{T}
, where T
is the element type of the polynomial ring.
ideal(R::MPolyRing, g::Vector)
If I
is an ideal of a multivariate polynomial ring R
, then
base_ring(I)
refers toR
,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.
julia> R, (x, y) = polynomial_ring(QQ, ["x", "y"])
(Multivariate polynomial ring in 2 variables over QQ, QQMPolyRingElem[x, y])
julia> I = ideal(R, [x, y])^2
Ideal generated by
x^2
x*y
y^2
julia> base_ring(I)
Multivariate polynomial ring in 2 variables x, y
over rational field
julia> gens(I)
3-element Vector{QQMPolyRingElem}:
x^2
x*y
y^2
julia> number_of_generators(I)
3
julia> gen(I, 2)
x*y
dim(I::MPolyIdeal)
codim(I::MPolyIdeal)
In the graded case, we additionally have:
minimal_generating_set(I::MPolyIdeal{<:MPolyDecRingElem})
cm_regularity(I::MPolyIdeal)
degree(I::MPolyIdeal)
^(I::MPolyIdeal, m::Int)
+(I::MPolyIdeal{T}, J::MPolyIdeal{T}) where T
*(I::MPolyIdeal{T}, J::MPolyIdeal{T}) where T
intersect(I::MPolyIdeal{T}, Js::MPolyIdeal{T}...) where T
Given two ideals
quotient(I::MPolyIdeal{T}, J::MPolyIdeal{T}) where T
Given two ideals
saturation(I::MPolyIdeal{T}, J::MPolyIdeal{T}) where T
saturation_with_index(I::MPolyIdeal{T}, J::MPolyIdeal{T}) where T
eliminate(I::MPolyIdeal{T}, V::Vector{T}) where T <: MPolyRingElem
truncate(I::MPolyIdeal, g::FinGenAbGroupElem)
is_zero(I::MPolyIdeal)
is_one(I::MPolyIdeal)
is_monomial(f::MPolyRingElem)
is_subset(I::MPolyIdeal, J::MPolyIdeal)
==(I::MPolyIdeal, J::MPolyIdeal)
ideal_membership(f::T, I::MPolyIdeal{T}) where T
radical_membership(f::T, I::MPolyIdeal{T}) where T
is_prime(I::MPolyIdeal)
is_primary(I::MPolyIdeal)
We discuss various decomposition techniques. They are implemented for polynomial rings over fields and, if explicitly mentioned, also for polynomial rings over the integers. See DGP99 for a survey.
radical(I::MPolyIdeal)
primary_decomposition(I::MPolyIdeal; algorithm::Symbol = :GTZ)
absolute_primary_decomposition(I::MPolyIdeal{QQMPolyRingElem})
minimal_primes(I::MPolyIdeal; algorithm::Symbol = :GTZ)
equidimensional_decomposition_weak(I::MPolyIdeal)
equidimensional_decomposition_radical(I::MPolyIdeal)
equidimensional_hull(I::MPolyIdeal)
equidimensional_hull_radical(I::MPolyIdeal)
Referring to KR05 for definitions and technical details, we discuss homogenization and dehomogenization in the context of
homogenizer(P::MPolyRing{T}, h::VarName; pos::Int=1+ngens(P)) where T
homogenizer(P::MPolyRing{T}, W::Union{ZZMatrix, Matrix{<:IntegerUnion}}, h::VarName; pos::Int) where T
dehomogenizer(H::Homogenizer)
julia> P, (x, y) = polynomial_ring(QQ, ["x", "y"]);
julia> I = ideal([x^2+y, x*y+y^2]);
julia> H = homogenizer(P, "h");
julia> Ih = H(I) # homogenization of ideal I
Ideal generated by
x*y + y^2
x^2 + y*h
y^3 + y^2*h
julia> DH = dehomogenizer(H);
julia> DH(Ih) == I # dehomogenization of Ih
true
ideal_as_module(I::MPolyIdeal)
These systems appeared in a problem of magnetism in physics.
For a given katsura(n)
has R
with katsura(R)
defines the
corresponding system with
katsura(n::Int)
katsura(R::MPolyRing)