From 19a211e2d54d4f07419ef92b0e5000883aa64215 Mon Sep 17 00:00:00 2001 From: Tommy Hofmann Date: Fri, 14 Jul 2023 19:04:32 +0200 Subject: [PATCH] Wrap saturation2 and use it for Laurent polynomials (#2562) --- experimental/Laurent/src/Laurent.jl | 2 +- src/Rings/mpoly-ideals.jl | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/experimental/Laurent/src/Laurent.jl b/experimental/Laurent/src/Laurent.jl index c94e4a350aad..3fbb71e50cd4 100644 --- a/experimental/Laurent/src/Laurent.jl +++ b/experimental/Laurent/src/Laurent.jl @@ -160,7 +160,7 @@ function preimage(f::MPolyAnyMap{X, <: LaurentMPolyRing, Y, Z}, I::LaurentMPolyI # the Laurent polynomial ring R _R = base_ring(II) for g in gens(_R) - II = saturation(II, g*_R) + II = Oscar._saturation2(II, g*_R) end # We need to translate to an ideal of R return ideal(R, map(x -> map_coefficients(identity, x, parent = R), gens(II))) diff --git a/src/Rings/mpoly-ideals.jl b/src/Rings/mpoly-ideals.jl index 9618230a4c4a..e0485d88fe85 100644 --- a/src/Rings/mpoly-ideals.jl +++ b/src/Rings/mpoly-ideals.jl @@ -276,6 +276,16 @@ function saturation(I::MPolyIdeal{T}, J::MPolyIdeal{T}) where T K, _ = Singular.saturation(I.gens.S, J.gens.S) return MPolyIdeal(base_ring(I), K) end + +# the following is corresponding to saturation2 from Singular +# TODO: think about how to use use this properly/automatically +function _saturation2(I::MPolyIdeal{T}, J::MPolyIdeal{T}) where T + singular_assure(I) + singular_assure(J) + K, _ = Singular.saturation2(I.gens.S, J.gens.S) + return MPolyIdeal(base_ring(I), K) +end + ####################################################### @doc raw""" saturation_with_index(I::MPolyIdeal{T}, J::MPolyIdeal{T}) where T