diff --git a/src/Rings/groebner.jl b/src/Rings/groebner.jl index a2219e0da0db..0a29dc6b0b17 100644 --- a/src/Rings/groebner.jl +++ b/src/Rings/groebner.jl @@ -1157,11 +1157,13 @@ julia> Oscar._normal_form_singular(A, J, default_ordering(base_ring(J))) ``` """ function _normal_form_singular(A::Vector{T}, J::MPolyIdeal, ordering::MonomialOrdering) where { T <: MPolyRingElem } - SR = singular_poly_ring(base_ring(J), ordering) - IS = Singular.Ideal(SR, [SR(x) for x in A]) GS = singular_groebner_generators(J, ordering) - K = ideal(base_ring(J), reduce(IS, GS)) - return [J.gens.Ox(x) for x = gens(K.gens.S)] + SR = base_ring(GS) + tmp = map(SR, A) + IS = Singular.Ideal(SR, tmp) + K = reduce(IS, GS) + OR = base_ring(J) + return map(OR, gens(K)) end @doc raw""" diff --git a/test/Rings/groebner.jl b/test/Rings/groebner.jl index c65060be5a55..933e37e18fd5 100644 --- a/test/Rings/groebner.jl +++ b/test/Rings/groebner.jl @@ -122,6 +122,13 @@ @test_throws ArgumentError standard_basis_highest_corner(I) end +@testset "normal form graded" begin + R, (a, b, c) = graded_polynomial_ring(QQ, ["a", "b", "c"]) + I = ideal([a^2+b^2, c^3]) + # verify normal form of inhomogeneous polynomial work + @test normal_form(a^2+b, I) == -b^2+b +end + @testset "groebner leading ideal" begin R, (t, x, y, z) = polynomial_ring(QQ, ["t", "x", "y", "z"])