ssl_graph: computes the supersingular isogeny graph. Does both the l and L isogeny graphs.ssl_graphadjmat: returns the adjacency matrix of said graphssl_graph_scipy: does not return the graph but saves it to a file. This file can be used to import this data into python, and efficiently compute its eigenvalues.
sparseadjmtx: load the saved file (fromssl_graph_scipy) as a sparse array in scipysecondeval: returns the second largest eigenvaluesecondabseval: returns the second largest eigenvalue in absolute valueallevals: returns all eigenvalues
ssl_adjmat: computes the supersingular isogeny graph using the PARI/GP code, and makes the adjacency matrix as a sparse matrix in Sage. This is about twice as fast asssl_graph, as we don't need to make a DiGraph and add the edges.ssl_graph: computes the supersingular isogeny graph using the PARI/GP code, and converts it to a Sage object. The output is a DiGraph with vertices labelled by supersingular j-invariants. This is the replacement forE.isogeny_ell_graph(l, directed = True, label_by_j = True): it will give an isomorphic graph, where the F_p^2 vertices may be presented differently (the choice of generator for F_p^2 may be different). Note that the vertices are labelled by the actual j-invariants in GF(p^2), and not the strings that give the j-invariants (which is what isogeny_ell_graph does).
You need to make sure that you configure the project with the installation of PARI/GP inside the copy of Sage you are using. Once this is done and the project is built, you can open Sage and call:
load("ssl_pari.sage")
G = ssl_graph(101, 8)
M = ssl_adjmat(15013, [2, 3])
to create the supersingular 8-isogeny graph for p = 101 as a DiGraph, and the adjacency matrix for the [2, 3]-isogeny graph for p=15013. Note that this is a bit slower than the native PARI/GP methods, as there is overhead in converting them to Sage, as well as making the DiGraph object. If you want to play with the native PARI/GP methods in Sage, then:
-
Open Sage and call
gp.read('isogeny.gp')to load the methods -
To use the methods, the syntax is
g = gp.ssl_graph(101, [2, 3, 11])(which computes the graph for p=103 and l=[2, 3, 11]). Note that this returns a PARI/GP object, which you may have to modify a bit to use with other sage methods. -
?gp.isogenyaccesses the help
However, I suggest simply using PARI/GP instead if this is the case. Every call to gp.METHOD has a significant overhead (perhaps as much as 5ms).
The easiest way to use this package in a different directory (to the installation location) is to create soft links to the relevant files. Let D be the directory containing this project, and navigate in the terminal to the folder where you want to run the project from. Call:
ln -s D/isogeny.gp
ln -s D/libisogeny-X-Y-Z.so
ln -s D/modpolys/
where X.Y.Z is the version of PARI/GP you are using; it's in the file name created with make. If you want to use it with sage, also link ln -s D/ssl_pari.sage.
Now the program will work exactly the same as if you were running it from the installation directory.