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.2.tar.xz [04 Feb 2020], for polymake version 4.0
TropicalCubics-0.1.tar.xz [28 May 2019], for polymake versions 3.5 and 3.6
Installation
This requires an installation of polymake, version 4.0. For polymake 3.5 or 3.6 use version 0.1 of this extension instead.
After download you first need to extract the code.
tar Jxpf TropicalCubics-0.2.tar.xz
Suppose this ends up at /your/path/TropicalCubics-0.2
. Then you start up polymake. Within the polymake shell do:
import_extension "/your/path/TropicalCubics-0.2";
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/settings
. 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 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.