Groebner theory

Introduction

Groebner bases and related notions in tropical geometry are a generalization of its classical counterparts to fields with valuation. The Groebner bases take the valuation into account, the initial ideals live over the residue field, and consequently the Groebner complex is not necessarily a polyhedral fan. For details, see

  • Chapter 2.4 and 2.5 in [MS15]

Groebner bases

groebner_basisMethod
groebner_basis(I::MPolyIdeal, nu::TropicalSemiringMap, w::Vector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}})

Return a (tropical) Groebner basis of I with respect to the tropical semiring map nu and weight vector w, that is a finite generating set of I whose initial forms with respect to nu and w generate the initial ideal.

For the definitions of initial form, initial ideal and Groebner basis see Section 2.4 of [MS15].

Warning

Groebner bases over fields with valuation are still in an experimental stage. If nu is non-trivial, then I must be generated by homogeneous polynomials.

Examples

julia> R,(x,y) = QQ["x","y"];

julia> I = ideal([x^3-5*x^2*y,3*y^3-2*x^2*y]);

julia> nu = tropical_semiring_map(QQ,2);

julia> w = QQ.([0,0]);

julia> groebner_basis(I,nu,w)
2-element Vector{QQMPolyRingElem}:
 x^3 - 5*x^2*y
 -2*x^2*y + 3*y^3
source

Initial forms and initial ideals

initialMethod
initial(f::MPolyRingElem, nu::TropicalSemiringMap, w::Vector; perturbation::Vector=[])

Return the initial form of f with respect to the tropical semiring map nu and weight vector w.

Examples (trivial and $p$-adic valuation)

julia> R,(x,y) = QQ["x", "y"];

julia> nu_0 = tropical_semiring_map(QQ,max);

julia> nu_2 = tropical_semiring_map(QQ,2);

julia> w = [0,0];

julia> f = x+y+2;

julia> initial(f,nu_2,w) # polynomial over GF(2)
x + y

julia> initial(f,nu_0,w) # polynomial over QQ
x + y + 2

Examples ($t$-adic valuation)

julia> K,t = rational_function_field(GF(2),"t");

julia> nu_t = tropical_semiring_map(K,t,max);

julia> R,(x,y) = K["x", "y"];

julia> w = [1,1];

julia> f = t*x+t*y+1;

julia> initial(f,nu_t,w) # polynomial over GF(2)
x + y + 1
source
initialMethod
initial(I::MPolyIdeal, nu::TropicalSemiringMap, w::Vector; skip_groebner_basis_computation::Bool=false)

Return the initial ideal of I with respect to the tropical semiring map nu and weight vector w. If skip_groebner_basis_computation=true, skips the necessary Groebner basis computation and returns the ideal generated by the initial forms of gens(I).

Examples

julia> R,(x,y) = QQ["x","y"];

julia> I = ideal([x^3-5*x^2*y,3*y^3-2*x^2*y]);

julia> nu_2 = tropical_semiring_map(QQ,2);

julia> nu_0 = tropical_semiring_map(QQ);

julia> w = [0,0];

julia> initial(I,nu_2,w)
Ideal generated by
  x^3 + x^2*y
  y^3

julia> initial(I,nu_0,w)
Ideal generated by
  2*x^2*y - 3*y^3
  x^3 - 5*x^2*y
  x*y^3 - 5*y^4
  y^5
source