Open afkafkafk13 opened 1 year ago
additional information: I am talking about src/Rings/groebner.jl and the functions
function normal_form(f::T, J::MPolyIdeal; ordering::MonomialOrdering = default_ordering(base_ring(J))) where { T <: MPolyRingElem }
function normal_form(A::Vector{T}, J::MPolyIdeal; ordering::MonomialOrdering=default_ordering(base_ring(J))) where { T <: MPolyRingElem }
Editorial remark: use triple backticks, not triple quotes, to format code blocks :-)
Describe the bug Applying
normal_form
to an ideal I and an ideal J w.r.t. a local ordering provides a correct answer, i.e. a set of polynomials in weak normal form in R which generate I/J in R/J. But applying normal_form to a polynomial or a vector provides polynomials in R in weak normal form which are not in the same class modulo J as the original ones.To Reproduce
Expected behavior Output of 'normal_form(f,J)` should be a polynomial g, whose leading monomial is not in L(J) and such that g differs from f only by multiples of the elements of a standard basis of J, say a_alpha f_alpha with LT(a_alphy f_alpha) \leq LT(f)
System (please complete the following information):
Additional context The key to the problem lies in the design decision to handle normal forms of polynomials via normal forms of the ideal they generate. This is fine for the global case, but causes huge problems in the local case, as units might pop up/disappear. Both functionalities are required (i.e. ideals for idealtheoretic work, as they are handled now, and separately polynomials and vectors for element oriented work as described above).