Groebner theory
Introduction
Tropical algebraic geometry incorporates the valuation of the underlying ground field, and therefore so does its Groebner theory. Tropical Groebner theory is a generalization of its classical counterpart to fields with valuation, and the classical Groebner theory is a specialization of tropical Groebner theory to fields with trivial valuation. Instead of monomial orderings there are term orderings which take the valuation into account, and initial forms and ideals live over the residue field. For details, see Chapter 2.4 in [MS15].
Groebner bases
Groebner bases in [MS15] are only defined for homogeneous ideals and they are finite sets whose initial forms generate the initial ideal. Groebner bases in OSCAR are defined for all ideals and they are finite generating sets whose initial forms generate the initial ideal. For homogeneous ideals generating the initial ideal implies generating the original ideal, so both notions coincide.
No general algorithm exists for computing Groebner bases for inhomogeneous ideals. The command groebner_basis
computes a Groebner basis if it knows how, and raises an error if it does not. The cases in which a Groebner basis of an ideal I
with respect to the tropical semiring map nu
and weight vector w
is returned are:
I
looks principalI
looks binomial andw
lies intropical_variety(I)
I
looks affine linear andnu
is trivialnu
is trivial and (w
is negative ifconvention(nu)==min
orw
is positive ifconvention(nu)==max
)I
is homogeneous
Here, "looks" means gens(I)
having the desired property. We are not computing a classical reduced Groebner basis to verify that I
actually has the desired property.
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
.
No general algorithm for (tropical) computing Groebner bases exist and groebner_basis
will return an error if it does not know how to compute one for the input. For a list of cases in which Groebner bases can be computed, see Section "Groebner Theory" in the documentation.
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 = [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
x^3 - 5*x^2*y
-2*x^2*y + 3*y^3