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_basis
— Methodgroebner_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].
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
Initial forms and initial ideals
initial
— Methodinitial(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
initial
— Methodinitial(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