From 6b48af31229fba818604d47dbe4e5a4f47fbd11f Mon Sep 17 00:00:00 2001 From: Yue Ren Date: Mon, 19 Aug 2024 19:38:26 +0100 Subject: [PATCH 1/4] TropicalGeometry: fixes initial issue https://github.com/oscar-system/Oscar.jl/issues/4025 --- src/TropicalGeometry/initial.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TropicalGeometry/initial.jl b/src/TropicalGeometry/initial.jl index 191b43523a98..3c07ab71c63f 100644 --- a/src/TropicalGeometry/initial.jl +++ b/src/TropicalGeometry/initial.jl @@ -54,7 +54,7 @@ function initial(f::MPolyRingElem, nu::TropicalSemiringMap, w::Vector{<:Union{QQ ### coeffs = collect(coefficients(f)) expvs = collect(exponents(f)) - tropTermsEvaluated = [nu(c)*dot(w,alpha) for (c,alpha) in zip(coeffs,expvs)] + tropTermsEvaluated = [nu(c)*tropical_semiring(nu)(dot(w,alpha)) for (c,alpha) in zip(coeffs,expvs)] tropPolyEvaluated = sum(tropTermsEvaluated) termsAttainingValue = findall(isequal(tropPolyEvaluated),tropTermsEvaluated) coeffs = coeffs[termsAttainingValue] From 18b65a7626d07b1f00273f4d5aef8c2a6234d76c Mon Sep 17 00:00:00 2001 From: Yue Ren Date: Mon, 19 Aug 2024 19:51:41 +0100 Subject: [PATCH 2/4] TropicalGeometry: allow point_vector as input for initial --- docs/src/TropicalGeometry/groebner_theory.md | 4 ++-- src/TropicalGeometry/initial.jl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/src/TropicalGeometry/groebner_theory.md b/docs/src/TropicalGeometry/groebner_theory.md index e96f1b98ed7d..f697c68affe5 100644 --- a/docs/src/TropicalGeometry/groebner_theory.md +++ b/docs/src/TropicalGeometry/groebner_theory.md @@ -19,6 +19,6 @@ groebner_basis(I::MPolyIdeal, nu::TropicalSemiringMap, w::Vector{<:Union{QQField ## Initial forms and initial ideals ```@docs -initial(f::MPolyRingElem, nu::TropicalSemiringMap, w::Vector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}) -initial(I::MPolyIdeal, nu::TropicalSemiringMap, w::Vector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}; skip_groebner_basis_computation::Bool=false) +initial(f::MPolyRingElem, nu::TropicalSemiringMap, w::AbstractVector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}) +initial(I::MPolyIdeal, nu::TropicalSemiringMap, w::AbstractVector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}; skip_groebner_basis_computation::Bool=false) ``` diff --git a/src/TropicalGeometry/initial.jl b/src/TropicalGeometry/initial.jl index 3c07ab71c63f..32ea2dd64794 100644 --- a/src/TropicalGeometry/initial.jl +++ b/src/TropicalGeometry/initial.jl @@ -46,7 +46,7 @@ x + y + 1 ``` """ -function initial(f::MPolyRingElem, nu::TropicalSemiringMap, w::Vector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}; perturbation::Union{Nothing,Vector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}}=nothing) +function initial(f::MPolyRingElem, nu::TropicalSemiringMap, w::AbstractVector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}; perturbation::Union{Nothing,AbstractVector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}}=nothing) ### # Evaluate the tropicalization of f and all its terms at w, @@ -110,7 +110,7 @@ Ideal generated by -2*x^2*y + 3*y^3 ``` """ -function initial(I::MPolyIdeal, nu::TropicalSemiringMap, w::Vector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}; skip_groebner_basis_computation::Bool=false) +function initial(I::MPolyIdeal, nu::TropicalSemiringMap, w::AbstractVector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}; skip_groebner_basis_computation::Bool=false) G = (skip_groebner_basis_computation ? gens(G) : groebner_basis(I,nu,w)) return ideal(initial.(G,Ref(nu),Ref(w))) end From 92289bc6c12996b7e73d6a91040924a05f2d43c7 Mon Sep 17 00:00:00 2001 From: Yue Ren Date: Mon, 19 Aug 2024 22:29:24 +0100 Subject: [PATCH 3/4] TropicalGeometry: removing unused optional perturbation input --- src/TropicalGeometry/initial.jl | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/TropicalGeometry/initial.jl b/src/TropicalGeometry/initial.jl index 32ea2dd64794..196dc60a856c 100644 --- a/src/TropicalGeometry/initial.jl +++ b/src/TropicalGeometry/initial.jl @@ -5,7 +5,7 @@ ################################################################################ @doc raw""" - initial(f::MPolyRingElem, nu::TropicalSemiringMap, w::Vector; perturbation::Vector=[]) + initial(f::MPolyRingElem, nu::TropicalSemiringMap, w::Vector) Return the initial form of `f` with respect to the tropical semiring map `nu` and weight vector `w`. @@ -46,8 +46,7 @@ x + y + 1 ``` """ -function initial(f::MPolyRingElem, nu::TropicalSemiringMap, w::AbstractVector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}; perturbation::Union{Nothing,AbstractVector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}}=nothing) - +function initial(f::MPolyRingElem, nu::TropicalSemiringMap, w::AbstractVector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}) ### # Evaluate the tropicalization of f and all its terms at w, # mark the terms which attain the evaluated value @@ -60,15 +59,6 @@ function initial(f::MPolyRingElem, nu::TropicalSemiringMap, w::AbstractVector{<: coeffs = coeffs[termsAttainingValue] expvs = expvs[termsAttainingValue] - # if perturbation passed, further filter the marked terms - if !isnothing(perturbation) - tropTermsEvaluated = [tropical_semiring(nu)(dot(w,alpha)) for (c,alpha) in zip(coeffs,expvs)] - tropPolyEvaluated = sum(tropTermsEvaluated) - termsAttainingValue = findall(isequal(tropPolyEvaluated),tropTermsEvaluated) - coeffs = coeffs[termsAttainingValue] - expvs = expvs[termsAttainingValue] - end - ### # Construct the initial form ### From 8a2755c32596aaa819012c322463cc3816119508 Mon Sep 17 00:00:00 2001 From: Yue Ren Date: Tue, 20 Aug 2024 09:20:22 +0100 Subject: [PATCH 4/4] Update src/TropicalGeometry/initial.jl Co-authored-by: Benjamin Lorenz --- src/TropicalGeometry/initial.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TropicalGeometry/initial.jl b/src/TropicalGeometry/initial.jl index 196dc60a856c..a5315f86bd57 100644 --- a/src/TropicalGeometry/initial.jl +++ b/src/TropicalGeometry/initial.jl @@ -101,6 +101,6 @@ Ideal generated by ``` """ function initial(I::MPolyIdeal, nu::TropicalSemiringMap, w::AbstractVector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}}; skip_groebner_basis_computation::Bool=false) - G = (skip_groebner_basis_computation ? gens(G) : groebner_basis(I,nu,w)) + G = (skip_groebner_basis_computation ? gens(I) : groebner_basis(I,nu,w)) return ideal(initial.(G,Ref(nu),Ref(w))) end