This repository consists of code and data associated to the paper "Space vectors forming rational angles" by Kiran S. Kedlaya, Alexander Kolpakov, Bjorn Poonen, and Michael Rubinstein (arXiv:2011.14232).
The code uses a combination of platforms: C++, SageMath version 9.2, and Magma version 2.25-6. (SageMath also uses Singular as an embedded component.) The C++ code depends on Bailey's quad double library QD version 2.3.22 for floating-point computations in quad-double precision. Some of the SageMath code is embedded in Jupyter notebooks; these were originally run on CoCalc.
-
Numerical computations/
:-
README.md
: C++ compilation notes. -
low_order_solutions.cc
: C++ code to enumerate configurations of 4 lines whose angles are multiples of$\pi/N$ for a fixed value of$N$ (Section 8, Proposition 8.1). The rigorous analysis of the paper shows that this code produces no false negatives. -
DATA/
: output of the C++ code. -
algebraic_verification.ipynb
: Jupyter/SageMath notebook to rule out false positives in the C++ output using algebraic computations (Section 8, Proposition 8.1). -
group-sporadics.ipynb
: Jupyter/SageMath notebook to generate the table of sporadic tetrahedra from the output of the C++ code (Section 11, Table 3).
-
-
Algebraic computations/
:-
torsion_closure.sage
: SageMath code to compute torsion closures of general ideals in Laurent polynomial rings (Section 7; see also below). -
tetrahedra_degenerate.ipynb
: Jupyter/SageMath notebook to compute solutions of the Gram determinant equation corresponding to degenerate tetrahedra (Section 9, Lemma 9.3). -
tetrahedra.ipynb
: Jupyter/SageMath notebook to compute solutions of the Gram determinant equation corresponding to nondegenerate tetrahedra (Section 9, Lemma 9.5). This depends ontorsion_closure.sage
.
-
-
Conversion to angles/
:-
4-vector-configurations-1-parameter-families.ipynb
,4-vector-configurations-2-parameter-families.ipynb
: Jupyter/SageMath notebooks to convert parametric solutions of the Gram determinant equation into families of rational-angle line configurations (Section 1, Theorem 1.2, as well as Section 9, Lemma 9.3 and Lemma 9.5). -
4-vector-configurations-tetrahedra.ipynb
: Jupyter/SageMath notebook to run consistency checks on the output stored in theDATA/
folder and to interpret it in human-readable format (Section 1, Theorem 1.8, as well as Section 9, Lemma 9.6).
-
-
Larger configurations/
:-
tetrahedra.m
,tetrahedra-compute.m
: Magma code to assemble rational-angle line configurations with more than 4 lines (Section 10), and to generate the tables of these (Section 11). -
Maximal_Configurations.txt
: output of the previous code. -
all-2.24-5.save
,all-2.25-6
: Magma saved workspaces with the tables generated (for the indicated versions of Magma).
-