extensions:tropicalcubics

This is an old revision of the document!


TropicalCubics

This is the software companion to the article “The Schä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.

This requires an installation of polymake, version 3.5, which is scheduled for July 2019 (or a developer's version no later than 28 May 2019, if you are impatient).

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.

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 fromHypersurface; 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.

  • extensions/tropicalcubics.1559117213.txt.gz
  • Last modified: 2019/05/29 08:06
  • by joswig