Tropical hypersurfaces
Introduction
A tropical hypersurface is a balanced polyhedral complex of codimension one. It is dual to a regular subdivision of a Newton polytope. For more on tropical hypersurfaces, see
Objects of type TropicalHypersurface
need to be embedded, abstract tropical hypersurfaces are currently not supported.
Constructors
In addition to converting from TropicalVariety
, objects of type TropicalHypersurface
can be constructed from:
- polynomials over a tropical semiring,
- polynomials over a field and a tropical semiring map,
- subdivision of points and a choice of min- or max-convention.
tropical_hypersurface
— Functiontropical_hypersurface(f::MPolyRingElem{<:TropicalSemiringElem}, weighted_polyhedral_complex_only::Bool=false)
Return the tropical hypersurface of the tropical polynomial f
. If weighted_polyhedral_complex==true
, will not cache any extra information.
Examples
julia> T = tropical_semiring()
Min tropical semiring
julia> R,(x,y) = T["x","y"];
julia> f = x+y+1
x + y + (1)
julia> tropical_hypersurface(f)
Min tropical hypersurface
tropical_hypersurface(f::MPolyRingElem, val::TropicalSemiringMap; weighted_polyhedral_complex_only::Bool=false)
Return the tropical hypersurface of the tropical polynomial that is the image of f
under coefficient-wise val
. If weighted_polyhedral_complex==true
, will not cache any extra information.
Examples
julia> R,(x,y) = QQ["x","y"];
julia> val = tropical_semiring_map(QQ,2)
Map into Min tropical semiring encoding the 2-adic valuation on Rational field
julia> f = x+y+2
x + y + 2
julia> tropical_hypersurface(f,val)
Min tropical hypersurface
tropical_hypersurface(Delta::SubdivisionOfPoints, minOrMax::Union{typeof(min),typeof(max)}=min; weighted_polyhedral_complex_only::Bool=false)
Construct the tropical hypersurface dual to a regular subdivision Delta
in convention minOrMax
. To be precise, the tropical hypersurface of the tropical polynomial with exponent vectors points(Delta)
and coefficients min_weight(Delta)
(min-convention) or -min_weight(Delta)
(max-convention). If weighted_polyhedral_complex==true
, will not cache any extra information.
There is a known bug when the subdivision is too simple, e.g., tropical_hypersurface(subdivision_of_points(simplex(2),[0,0,1]))
see issue 2628.
Examples
julia> Delta = subdivision_of_points([0 0; 1 0; 0 1; 2 0],[0,0,0,1])
Subdivision of points in ambient dimension 2
julia> tropical_hypersurface(Delta)
Min tropical hypersurface
Properties
In addition to the properties inherited from TropicalVariety
, objects of type TropicalHypersurface
have the following exclusive properties:
algebraic_polynomial
— Methodalgebraic_polynomial(TropH::TropicalHypersurface)
Return the polynomial over a valued field used to construct TropH
. Raises an error if it is not cached.
tropical_polynomial
— Methodtropical_polynomial(TropH::TropicalHypersurface)
Return the tropical polynomial used to construct TropH
. Raises an error if it is not cached.
dual_subdivision
— Methoddual_subdivision(TropH::TropicalHypersurface)
Return the dual subdivision used to construct TropH
. Raises an error if it is not cached.
Examples
julia> Delta = subdivision_of_points([0 0; 1 0; 0 1; 2 0],[0,0,0,1])
Subdivision of points in ambient dimension 2
julia> th = tropical_hypersurface(Delta)
Min tropical hypersurface
julia> sop = dual_subdivision(th)
Subdivision of points in ambient dimension 2
julia> points(sop)
4-element SubObjectIterator{PointVector{QQFieldElem}}:
[0, 0]
[1, 0]
[0, 1]
[2, 0]
julia> maximal_cells(sop)
2-element SubObjectIterator{Vector{Int64}}:
[1, 2, 3]
[2, 3, 4]