This repository houses the code used to work with cubic fourfolds over F2. The vast majority of the software is written in the Magma computer algebra language.
- Macaulay2 (For
FunctionalEquationSign
) - Sage 9+ (For certain scripts in
article-scripts
) - The
magma-parallel-cookbook
is needed to run the parallelized versions of the scripts in thesurveys/
directory. - C++ for point_counting functionality. Specifically,
g++
must be available.
- Clone this repository.
- run
source install.sh
to create data directories and download arXiv data. - Use
AttachSpec(".../cubic-fourfolds/src/CubicLib/CubicLib.spec");
(Or attach in your.magmarc
file.)
Included in this library is the ability to replicate the datasets of the associated to the associated cubic fourfolds paper. The database is built up in stages. We provide some of the data files on arXiv, which are downloaded automatically with the installation script. Nevertheless, if you need to generate the data from scratch, run the scripts indicated in the table below (in order from top to bottom).
Type | Script | Run inside directory | Generated file(s) |
---|---|---|---|
Magma | orbitsfromfullfiltration.m | orbit_calculation | orbitreps-X.data |
Magma | smooth-single.m | surveys | smooth.csv, singular.csv |
Magma | stabsurvey.m (Parallelized) | surveys | stabilizer_counts.csv |
Magma | stabsurvey-single.m (Single thread) | surveys | stabilizer_counts.csv |
Magma | zetasurvey.m (Parallelized) | surveys | point_counts.csv |
Magma | zetasurvey-single.m (Single thread) | surveys | point_counts.csv |
Magma/M2 | compute_zeta_functions.m | article_scripts | zeta_coefficients.csv |
Sage | weil_search.sage | article_scripts | transcendental_weil_polynomials_up_to_deg_22.csv |
This is where the source code of the library is located.
This is a series of questions Jack asked about lines in cubic fourfolds, and the code set up to answer them.
This directory contains the scripts that are important for the paper. One must have available the data generated by the scripts in the orbit_calculation, surveys folders. A full breakdown is:
-
artin_tate.m : This script computes the set of observed Artin-Tate special values.
-
feasibility_check.m : This script compares for various
$(n, d, q)$ whether applying union-find or our methods are computationally feasible. The script is meant to validate a pair of tables appearing in the article. -
newton-polygons-survey.m : Computes the list of Newton Polygons of the zeta functions observed in the database.
-
weil_compare.m : This script runs various queries about the set of zeta functions from cubic fourfolds in relation to the zeta functions of K3-type discussed in [Kedlaya-Sutherland].
-
weil_search.sage : Used to generate the list of Weil polynomials of degrees up to 22 satisfying the conditions outlined in [Kedlaya-Sutherland].
To generate the data from scratch, these scripts should be run third.
These are scripts for submitting batch jobs on the Discovery cluster at Dartmouth College. We advise ignoring this directory.
This directory contains depreciated code. Please ignore.
This directory contains the two scripts for determining the set of lines (resp. planes) in P5(F2) passing through the chosen orbit representatives of the cubic fourfolds.
Contains the Macaulay2 code used to determine the sign of the functional equation of the
zeta functions. The function FunctionalEquationSign
within CubicLib
accomplishes this
task for a single example. However, to avoid overhead costs in generating the database,
we use a Macaulay2 script.
Contains scripts used to determine the list of orbit representatives. Two scripts exist for this task for the sake of timing comparisons, distinguished by the particular choice of filtration used for the task.
To generate the data from scratch, these scripts should be run first.
Contains scripts used to compute various features of each orbit representatives (Orbit sizes, point counts). A single threaded and parallelize version of the scripts are available.
To generate the data from scratch, these scripts should be run second.
Specific documentation strings can be found for most intrinsics in CubicLib. In general, the most relevant functions are as follows:
// Reading data into a session.
LoadCubicOrbitData;
ReadOrbitSizeData;
ReadStabilizerSizeData;
ReadZetaFunctions;
// Group theory
CountOrbits;
IsFeasible;
IsFeasibleUnionFind;
// Working with cubics
IsEquivalentCubics;
PointCounts;
// Working with Polynomials/Zeta functions
FunctionalEquationSign;
ZetaFunctionOfCubic;
Charpoly;
IsWeilPolynomial;
TranscendentalFactor;
TranscendentalRank;
IrrationalFactor;
TateTwist;
CubicLPolynomialToPointCounts;
CubicWeilPolynomialToLPolynomial; // (Alias CWTL)
CubicWeilPolynomialToPointCounts;
ArtinTateValue;
IsOrdinary;
// Lines and Planes
LinesThrough;
// Standard forms
ConicFibrationCoefficients;
ConifFibrationForm;