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_decompositionMethod

function 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]
source