Equidimensional Decomposition
Introduction
AlgebraicSolving allows to compute equidimensional decompositions of polynomial ideals. This is to be understood in a geometric sense, i.e. given a polynomial ideal $I$ it computes ideals $I_1,\dots,I_k$ s.t. $V(I)=\bigcup_{i=1}^{k} V(I_j)$ and such that each $V(I_j)$ is equidimensional.
The implemented algorithm is the one given in this paper.
Functionality
AlgebraicSolving.equidimensional_decomposition
— Methodfunction equidimensionaldecomposition(I::Ideal{T}, infolevel::Int=0) where {T <: MPolyRingElem}
Given a polynomial ideal I
, return a list of ideals dec
s.t. each ideal in dec
is equidimensional (i.e. has minimal primes only of one fixed dimension) and s.t. the radical of I
equals the intersection of the radicals of the ideals in dec
.
Note: At the moment only ground fields of characteristic p
, p
prime, p < 2^{31}
are supported.
Arguments
I::Ideal{T} where T <: MpolyElem
: input ideal.info_level::Int=0
: info level printout: off (0
, default), computational details (1
)
Example
julia> using AlgebraicSolving
julia> R, (x, y, z) = polynomial_ring(GF(65521), ["x", "y", "z"])
(Multivariate polynomial ring in 3 variables over GF(65521), FqMPolyRingElem[x, y, z])
julia> I = Ideal([x*y - x*z, x*z^2 - x*z, x^2*z - x*z])
FqMPolyRingElem[x*y + 65520*x*z, x*z^2 + 65520*x*z, x^2*z + 65520*x*z]
julia> equidimensional_decomposition(I)
3-element Vector{Ideal{FqMPolyRingElem}}:
FqMPolyRingElem[x]
FqMPolyRingElem[z, y]
FqMPolyRingElem[z + 65520, y + 65520, x + 65520]