Macaulay2 » Documentation
Packages » ReflexivePolytopesDB :: ReflexivePolytopesDB
next | previous | forward | backward | up | index | toc

# ReflexivePolytopesDB -- simple access to Kreuzer-Skarke database of reflexive polytopes of dimensions 3 and 4

## Description

In each given dimension $d$, it is known that the number of distinct (up to invertible integral change of basis) reflexive polytopes of dimension $d$ is finite in number. For example, in dimension 1 there is 1, in dimension 2, there are 16, in dimension 3, there are 4319 distinct reflexive polytopes.

In a major work, Max Kreuzer and Harold Skarke found algorithms for computing the set of such polytopes. They used these algorithms to show that there are 473,800,776 distinct 4-dimensional reflexive polytopes. The number is sufficiently large that they created a website http://hep.itp.tuwien.ac.at/~kreuzer/CY/ and an interface to access these examples. See their website for references to the algorithms used.

This package, ReflexivePolytopesDB, provides access to this database of reflexive polytopes of dimension 3 and dimension 4.

This package also contains a small part of this database for offline use, in case one cannot access the database.

Here we describe a simple use of the package. The actual investigation of the corresponding polytope or toric variety, or Calabi-Yau hypersurface, is done in Macaulay2 with the aid of other packages, such as Polyhedra and NormalToricVarieties.

Let's take one example polytope from the database, one whose corresponding Calabi-Yau 3-fold has Hodge numbers $h^{1,1}(X) = 9$ and $h^{1,2}(X) = 21$.

    i1 : topes = kreuzerSkarke(9, 21);
    using offline data file: ks9+21-n10.txt

This returns a list of single entries from the Kreuzer-Skarke database. Each one is essentially a string, containing a description line, together with the vertices of the corresponding polytope.

In Macaulay2, each entry is an object of class KSEntry (meaning: Kreuzer-Skarke database entry). Use matrix(KSEntry) to create the matrix whose columns are the vertices of the reflexive polytope. Use description(KSEntry) to see the associated description from the database (see Kreuzer-Skarke description headers for the description of the format of this description).

    i2 : topes_1

    o2 = 4 7  M:26 7 N:12 6 H:9,21 [-24] id:1
            1   1   0   0  -4   0   2
            0   3   0   0  -6   3   6
            0   0   1   1  -1  -2  -1
            0   0   0   2  -2  -1   1

    o2 : KSEntry

    i3 : A = matrix topes_1

    o3 = | 1 1 0 0 -4 0  2  |
         | 0 3 0 0 -6 3  6  |
         | 0 0 1 1 -1 -2 -1 |
         | 0 0 0 2 -2 -1 1  |

                  4       7
    o3 : Matrix ZZ  <-- ZZ

    i4 : description topes_1

    o4 = 4 7  M:26 7 N:12 6 H:9,21 [-24] id:1

The corresponding reflexive polytope has 7 vertices, the columns of this matrix.

    i5 : needsPackage "Polyhedra"

    o5 = Polyhedra

    o5 : Package

    i6 : P = convexHull A

    o6 = P

    o6 : Polyhedron

    i7 : assert isReflexive P

    i8 : P2 = polar P

    o8 = P2

    o8 : Polyhedron

    i9 : (numColumns vertices P, numColumns vertices P2)

    o9 = (7, 6)

    o9 : Sequence

    i10 : (# latticePoints P, # latticePoints P2)

    o10 = (26, 12)

    o10 : Sequence

We can process many examples at one time, using the list facilities in Macaulay2. For instance, use List / Function to apply matrix to each element of the list, returning a list of the resulting matrices:

    i11 : L = topes/matrix;

    i12 : netList L

          +-----------------------------+
    o12 = || 1 0 0 2 -4 |               |
          || 0 1 1 5 -7 |               |
          || 0 0 3 0 -3 |               |
          || 0 0 0 6 -6 |               |
          +-----------------------------+
          || 1 1 0 0 -4 0  2  |         |
          || 0 3 0 0 -6 3  6  |         |
          || 0 0 1 1 -1 -2 -1 |         |
          || 0 0 0 2 -2 -1 1  |         |
          +-----------------------------+
          || 1 0 0 -1 1 -1 |            |
          || 0 1 1 2  0 -4 |            |
          || 0 0 3 3  0 -6 |            |
          || 0 0 0 0  3 -3 |            |
          +-----------------------------+
          || 1 0 0 0 -3 -3 3  |         |
          || 0 1 1 0 2  0  -4 |         |
          || 0 0 3 0 3  0  -6 |         |
          || 0 0 0 1 -1 -2 2  |         |
          +-----------------------------+
          || 1 0 0 0 -2 -4 4  -4 |      |
          || 0 1 0 0 -2 -2 2  -3 |      |
          || 0 0 1 1 1  3  -5 2  |      |
          || 0 0 0 2 2  4  -6 3  |      |
          +-----------------------------+
          || 1 0 0 1 -2 -1 1  -1 -1 3  ||
          || 0 1 0 0 0  2  -2 0  0  -3 ||
          || 0 0 1 0 0  -1 1  1  -1 1  ||
          || 0 0 0 2 -1 -1 -1 -1 1  0  ||
          +-----------------------------+
          || 1 0 0 0 2  0  0  -1 -3 |   |
          || 0 1 1 0 -1 -1 -1 -1 3  |   |
          || 0 0 2 0 -1 -1 1  -2 0  |   |
          || 0 0 0 1 -1 1  -1 1  1  |   |
          +-----------------------------+
          || 1 0 1 0 -2 -1 -1 1  -1 3  ||
          || 0 1 0 0 1  2  0  -2 0  -3 ||
          || 0 0 2 0 -2 -1 -1 -1 1  0  ||
          || 0 0 0 1 0  -1 1  1  -1 1  ||
          +-----------------------------+
          || 1 0 0 -1 0 0 1  -4 3  -6 | |
          || 0 1 0 1  0 1 1  0  -1 -2 | |
          || 0 0 1 1  0 1 -2 4  -2 4  | |
          || 0 0 0 0  1 0 -1 1  -1 1  | |
          +-----------------------------+
          || 1 0 0 1  1  0 -2 4  -2 0  ||
          || 0 1 0 0  -1 0 3  -4 1  -2 ||
          || 0 0 1 -1 0  0 1  -4 3  -2 ||
          || 0 0 0 0  0  1 -1 1  -1 1  ||
          +-----------------------------+

## Author

- Mike Stillman <mike@math.cornell.edu>

## Version

This documentation describes version 1.0 of ReflexivePolytopesDB, released 22 May 2019.

## Citation

If you have used this package in your research, please cite it as follows:

    @misc{ReflexivePolytopesDBSource,
      title = {{ReflexivePolytopesDB: A \emph{Macaulay2} package. Version~1.0}},
      author = {Mike Stillman},
      howpublished = {A \emph{Macaulay2} package available at
        \url{https://github.com/Macaulay2/M2/tree/stable/M2/Macaulay2/packages}}
    }

## Exports

- Types
  - KSEntry -- an entry from the Kreuzer-Skarke database of dimension 3 and 4 reflexive polytopes
- Functions and commands
  - availableOffline -- which Kreuzer-Skarke items are available offline
  - description -- the description header
  - generateOffline -- generate tables of reflexive 4d polytopes from the Kreuzer-Skarke list
  - kreuzerSkarke -- access Kreuzer-Skarke dimension 4 reflexive polytopes database
  - kreuzerSkarkeDim3 -- the list of 4319 dimension 3 reflexive polytopes in the Kreuzer-Skarke database
  - matrixFromString -- convert a string to a matrix of integers
  - onlineTests -- run a few tests which test access to the Kreuzer-Skarke database
- Methods
  - `description(KSEntry)` -- see description -- the description header
  - `generateOffline(ZZ)` -- see generateOffline -- generate tables of reflexive 4d polytopes from the Kreuzer-Skarke list
  - `generateOffline(ZZ,ZZ)` -- see generateOffline -- generate tables of reflexive 4d polytopes from the Kreuzer-Skarke list
  - `kreuzerSkarke(String)` -- see kreuzerSkarke -- access Kreuzer-Skarke dimension 4 reflexive polytopes database
  - `kreuzerSkarke(ZZ)` -- see kreuzerSkarke -- access Kreuzer-Skarke dimension 4 reflexive polytopes database
  - `kreuzerSkarke(ZZ,ZZ)` -- see kreuzerSkarke -- access Kreuzer-Skarke dimension 4 reflexive polytopes database
  - matrix(KSEntry) -- convert a Kreuzer-Skarke entry to a matrix of integers
  - `matrixFromString(String)` -- see matrixFromString -- convert a string to a matrix of integers
  - toExternalString(KSEntry) -- a string suitable for input to Macaulay2
  - toString(KSEntry) -- the underlying string of a KSEntry
- Symbols
  - `Expected` -- see generateOffline -- generate tables of reflexive 4d polytopes from the Kreuzer-Skarke list
  - `Access` -- see kreuzerSkarke -- access Kreuzer-Skarke dimension 4 reflexive polytopes database
  - `DualLatticePoints` -- see kreuzerSkarke -- access Kreuzer-Skarke dimension 4 reflexive polytopes database
  - `Facets` -- see kreuzerSkarke -- access Kreuzer-Skarke dimension 4 reflexive polytopes database
  - `H12` -- see kreuzerSkarke -- access Kreuzer-Skarke dimension 4 reflexive polytopes database
  - `LatticePoints` -- see kreuzerSkarke -- access Kreuzer-Skarke dimension 4 reflexive polytopes database
  - `Vertices` -- see kreuzerSkarke -- access Kreuzer-Skarke dimension 4 reflexive polytopes database

## For the programmer

The object ReflexivePolytopesDB is a package, defined in ReflexivePolytopesDB.m2, with auxiliary files in ReflexivePolytopesDB/.

The source of this document is in /build/macaulay2-88fgJW/macaulay2-1.25.11+ds/M2/Macaulay2/packages/ReflexivePolytopesDB.m2:439:0.