# TropicalCubics

This is the software companion to the article “The Schläfli fan” by Michael Joswig, Marta Panizzut and Bernd Sturmfels, arXiv:1905.11951

Smooth tropical cubic surfaces are parameterized by maximal cones in the unimodular secondary fan of the triple tetrahedron. There are 344 843 867 such cones, organized into a database of 14 373 645 symmetry classes. The Schläfli fan gives a further refinement of these cones. It reveals all possible patterns of the 27 or more lines on tropical cubic surfaces, thus serving as a combinatorial base space for the universal Fano variety. This article develops the relevant theory and offers a blueprint for the analysis of big data in tropical algebraic geometry. We conclude with a sparse model for cubic surfaces over a field with valuation.

While the database or rather the relevant collection TropicalCubics can be accessed directly via a web front end or though mongodb's API, using this extension to polymake is recommended for an enhanced experience.

## Download

TropicalCubics-0.1.tar.xz [28 May 2019], for polymake versions 3.5 and 3.6

## Installation

This requires an installation of polymake, version 3.5 or 3.6.

After download you first need to extract the code.

tar Jxpf TropicalCubics-0.1.tar.xz

Suppose this ends up at `/your/path/TropicalCubics-0.1`

. Then you start up polymake. Within the polymake shell do:

import_extension "/your/path/TropicalCubics-0.1";

Do not forget to use an absolute path! Afterwards you are good to run the code. This import needs to be performed only once. The reference to the extension is permanently stored in `$HOME/.polymake/prefer.pl`

. For more details there is a guide to polymake's extension system.

## Examples

This extension contributes to the applications `fan`

and `tropical`

.

In the application `tropical`

you can create a dense tropical cubic surface by just specifying the coordinates.
The monomials, which correspond to the 20 lattice points in the triple tetrahedron $3 \Delta_3$, have a fixed ordering.

> $S = new CubicSurface<Min>(COEFFICIENTS=>[5,1,1,5,2,0,2,2,2,5,2,0,2,0,0,1,2,2,1,5]); > print $S->DEGREE; 3

A `CubicSurface`

is derived from`Hypersurface`

; so it has all its properties.

The bulk of the functionality sits in the application `fan`

and the type `DualSubdivisionOfCubic`

.
The latter is derived from `SubdivisionOfPoints`

.

> print $S->DUAL_SUBDIVISION->type->full_name; DualSubdivisionOfCubic > $T = new DualSubdivisionOfCubic(MAXIMAL_CELLS=>[[0,1,4,10],[9,13,14,15],[11,12,13,16],[15,16,17,18],[16,17,18,19],[13,15,16,17],[5,8,11,12],[1,4,5,11],[5,7,9,13],[5,6,8,12],[13,14,15,17],[1,5,11,12],[1,2,5,12],[4,5,7,13],[8,9,13,14],[3,5,6,12],[2,3,5,12],[4,11,13,16],[12,13,14,17],[5,8,9,13],[5,8,11,13],[1,4,11,16],[1,4,10,16],[8,11,12,13],[12,13,16,17],[8,12,13,14],[4,5,11,13]]); > print $T->GKZ_VECTOR; 1 6 2 2 7 12 2 2 7 4 2 9 11 15 5 4 8 6 2 1

In the article we consider the running example #5054117. This is how you can get that regular unimodular triangulation of $3 \Delta_3$ from the database. Everything below requires `common::polydb.rules`

to be correctly configured.

> $X=retrieve_by_id(5054117); > print $X->MAXIMAL_CELLS; {0 1 4 10} {1 2 5 11} {1 4 7 13} ...

This example has one occurrence of the motif 3J.

> print $X->N_MOTIF_TYPES; 6 5 0 24 0 2 4 7 2 1 > $X->MOTIFS3J->[0]->properties(); type: Motif TYPE J POINTS 11 9 15 1 2 EXITS 0 3 1 2 TETRAHEDRA 10 19

Suppose you have a triangulation of $3 \Delta_3$ and you want to find it. The next example comes from §6.2 of Hampe & Joswig: Tropical computations in polymake, in: Algorithmic and experimental methods in algebra, geometry, and number theory, Springer 2017. This is again in application `tropical`

.

> $F = toTropicalPolynomial("min(12+3*x0,-131+2*x0+x1, -67+2*x0+x2,-9+2*x0+x3,-131+x0+2*x1,-129+x0+x1+x2, -131+x0+x1+x3,-116+x0+2*x2,-76+x0+x2+x3,-24+x0+2*x3,-95+3*x1, -108+2*x1+x2,-92+2*x1+x3,-115+x1+2*x2,-117+x1+x2+x3, -83+x1+2*x3,-119+3*x2,-119+2*x2+x3,-82+x2+2*x3,-36+3*x3)"); > $V = new Hypersurface<Min>(POLYNOMIAL=>$F); > $h = canonical_hash($V->DUAL_SUBDIVISION->MAXIMAL_CELLS); > $Y = retrieve_by_canonical_hash($h); > print $Y->name; 5054117

So this corresponds to the triangulation #5054117 constructed above (and stored in the variable `$X`

).
For about 99.5% of all triangulations the canonical hash value (computed by nauty) identifies the triangulations uniquely. In the remaining cases the function `retrieve_by_canonical_hash`

returns the first triangulation and issues a warning.