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. For principal and binomial ideals the algorithm simply returns its input.
groebner_basis
— Methodgroebner_basis(I::MPolyIdeal, nu::TropicalSemiringMap, w::AbstractVector{<:Union{QQFieldElem,ZZRingElem,Rational,Integer}})
Return a (tropical) Groebner basis of I
with respect to the tropical semiring map nu
and weight vector w
.
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)
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