Tropical varieties

Introduction

Tropial varieties (in OSCAR) are weighted polyhedral complexes. They may arise as tropicalizations of polynomial ideals or from operations on the more specialized types of tropical varieties, such as the stable intersection of tropical hypersurfaces. For more on the first, see

Note:

  • Objects of type TropicalVariety need to be embedded, abstract tropical varieties are currently not supported.
  • The type TropicalVariety can be thought of as supertype of TropicalHypersurface, TropicalCurve, and TropicalLinearSpace in the sense that the latter three should have all properties and features of the former.
  • Embedded tropical varieties are polyhedral complexes with multiplicities and should have all properties of polyhedral complexes

Constructor

Objects of type TropicalVariety can be constructed as follows:

tropical_varietyFunction
tropical_variety(Sigma::PolyhedralComplex, mult, minOrMax::Union{typeof(min),typeof(max)}=min)

Return the TropicalVariety whose polyhedral complex is Sigma with multiplicities mult and convention minOrMax. Here, mult is optional can be specified as a Vector{ZZRingElem} which represents a list of multiplicities on the maximal polyhedra in the order of maximal_polyhedra(Sigma). If mult is unspecified, then all multiplicities are set to one.

Examples

julia> Sigma = polyhedral_complex(incidence_matrix([[1],[2]]), [[0],[1]])
Polyhedral complex in ambient dimension 1

julia> tropical_variety(Sigma)
Min tropical variety

julia> mult = ones(ZZRingElem, n_maximal_polyhedra(Sigma))
2-element Vector{ZZRingElem}:
 1
 1

julia> tropical_variety(Sigma,mult,min)
Min tropical variety

julia> mult = ZZ.([1,2])
2-element Vector{ZZRingElem}:
 1
 2

julia> tropical_variety(Sigma,mult,max)
Max tropical variety
source

Properties

Objects of type TropicalVariety (and TropicalHypersurface, TropicalCurve, TropicalLinearSpace) have the following properties:

polyhedral_complexMethod
polyhedral_complex(TropV::TropicalVariety)

Return the polyhedral complex of a tropical variety.

source
maximal_polyhedra_and_multiplicitiesMethod
maximal_polyhedra_and_multiplicities(TropV::TropicalVariety)

Return the maximal polyhedra and multiplicities of TropV.

Examples

julia> R,(x1,x2) = polynomial_ring(QQ,4);

julia> nu = tropical_semiring_map(QQ,2);

julia> f = 2*x1^2+x1*x2+x2^2+1
2*x1^2 + x1*x2 + x2^2 + 1

julia> TropH = tropical_hypersurface(f,nu)
Min tropical hypersurface

julia> maximal_polyhedra_and_multiplicities(TropH)
5-element Vector{Tuple{Polyhedron{QQFieldElem}, ZZRingElem}}:
 (Polyhedron in ambient dimension 4, 1)
 (Polyhedron in ambient dimension 4, 1)
 (Polyhedron in ambient dimension 4, 2)
 (Polyhedron in ambient dimension 4, 1)
 (Polyhedron in ambient dimension 4, 2)
source
multiplicitiesMethod
multiplicities(TropV::TropicalVariety)

Return the multiplicities of TropV. Order is the same as maximal_polyhedra.

Examples

julia> R,(x1,x2) = polynomial_ring(QQ,4);

julia> nu = tropical_semiring_map(QQ,2);

julia> f = 2*x1^2+x1*x2+x2^2+1
2*x1^2 + x1*x2 + x2^2 + 1

julia> TropH = tropical_hypersurface(f,nu)
Min tropical hypersurface

julia> multiplicities(TropH)
5-element Vector{ZZRingElem}:
 1
 1
 2
 1
 2
source
tropical_prevarietyFunction
tropical_prevariety(F::Vector{MPolyRingElem},nu::TropicalSemiringMap)

Return the tropical prevariety generated by intersecting tropical hypersurfaces corresponding to elements of F.

If F is a finite collection of polynomials with coefficients from a given field, return the tropical prevariety obtained by tropicalizing elements of F with respect to a given tropicalization map nu.

If no nu is given, default to trivial valuation with min convention.

If F is a collection of tropical polynomials, the function computes and intersects the associated hypersurfaces.

Example

We compute the Dressian $\text{Dr}(2,5)$ below.

julia> Gr25 = grassmann_pluecker_ideal(2,5)
Ideal generated by
  x[[1, 2]]*x[[3, 4]] - x[[1, 3]]*x[[2, 4]] + x[[1, 4]]*x[[2, 3]]
  x[[1, 2]]*x[[3, 5]] - x[[1, 3]]*x[[2, 5]] + x[[1, 5]]*x[[2, 3]]
  x[[1, 2]]*x[[4, 5]] - x[[1, 4]]*x[[2, 5]] + x[[1, 5]]*x[[2, 4]]
  x[[1, 3]]*x[[4, 5]] - x[[1, 4]]*x[[3, 5]] + x[[1, 5]]*x[[3, 4]]
  x[[2, 3]]*x[[4, 5]] - x[[2, 4]]*x[[3, 5]] + x[[2, 5]]*x[[3, 4]]

julia> Dr25 = tropical_prevariety(gens(Gr25)) #Compute Dressian without specified tropicalization map.
Polyhedral complex in ambient dimension 10

julia> rays_modulo_lineality(Dr25)[1]
10-element SubObjectIterator{RayVector{QQFieldElem}}:
 [1, -1//3, -1//3, -1//3, -1//3, -1//3, -1//3, 1//3, 1//3, 1//3]
 [1, 1, -1, -1, 1, -1, -1, -1, -1, 3]
 [1, -1, 1, -1, -1, 1, -1, -1, 3, -1]
 [1, -1, -1, 1, -1, -1, 1, 3, -1, -1]
 [-1, 1, 1, -1, -1, -1, 3, 1, -1, -1]
 [-1, -1, -1, 3, 1, 1, -1, 1, -1, -1]
 [-1, 1, -1, 1, -1, 3, -1, -1, 1, -1]
 [-1, 3, -1, -1, -1, 1, 1, -1, -1, 1]
 [-1, -1, 3, -1, 1, -1, 1, -1, 1, -1]
 [-1, -1, 1, 1, 3, -1, -1, -1, -1, 1]

julia> nu = tropical_semiring_map(QQ,max) #Compute with respect to max convention
Map into Max tropical semiring encoding the trivial valuation on Rational field

julia> Dr25max = tropical_prevariety(gens(Gr25),nu)
Polyhedral complex in ambient dimension 10

julia> Dr25 = tropical_prevariety(tropical_polynomial.([f for f in gens(Gr25)])) #Give input as tropical polynomials
Polyhedral complex in ambient dimension 10
source