Numerical Jacobian Algorithm

Thirteen general points in complex projective 3-space will not lie on an aCM sextic of genus three, but this cannot be detected from the graded betti numbers of a minimal free resolution. In Section 6 of our paper, we outline an algorithm which we call the 'Jacobian algorithm' which can verify that a given collection of points do not lie on a curve of a particular degree and genus. We illustrate the numerical implementation of this algorithm. We will work with high precision real and complex fields throughout.
For the reasoning behind the setup of the Jacobian algorithm, please refer to Section 6 of our paper or the tutorial Jacobian Algorithm (Algorithm 3) . The explanations here will mostly be targeted to the adaptations necessary to handle numerical instead of symbolic input.

Load functions to verify maximal Kruskal ranks

Click the "Evaluate" button below to define the functions in the file MaximalKruskalRanks .

Load functions to compute Numerical Syzygies

Click the "Evaluate" button below to define the functions in the file NumericalSyzygies .

Using Jacobian algorithm to verify that thirteen general points do not lie on an aCM sextic of genus three

The following code generates a list of thirdteen points randomly in complex projective three-space. We verify numerically that there is no integral aCM sextic curve of genus three containing these points.
We will need 12 new variables to fill out the coefficients for four linear combinations of cubics in the ideal of the points. We define these variables and the substitutions that we will use later.
Now we get the cubics that vanish on the points (there should be seven of these).
For a reality check, let's verify that the polynomials in F indeed vanish at the points in POINTS.
To increase the probability of numerical stability, multiply F by a random unitary matrix (this amounts to a random orthogonal change of basis applied to the basis of cubics we found). Verify that the result still consists of polynomials that vanish on the points.
We now produce the 7x4 matrix B from the description of Algorithm 3 in Section 6 of our paper.
We produce the generators of the ideal EQN that is described in Section 6 of our paper. If 1 is in this ideal, then there is no integral aCM sextic of genus three that vanishes at the thirteen points.
Our goal is now to decide if 1 is a linear combination of the polynomials in JACLISTMIN. We first normalize the polynomials in JACLISTMIN.
We then convert the polynomials in JACLISTMIN into a large matrix ARRY (this is actually a list of lists).
Let e1 be the vector representation of the polynomial 1. Use a least squares solver from NumPy to get a least squares solution to ARRY*x=e1.
The following provides a ground truth - since ARRYnp*w=chck is clearly solvable, the norm of chck-ARRYnp*wls (where wls is a least squares solution) gives us an idea of how small the norm e1-ARRYnp*xls should be (where xls is a least squares solution) to consider the linear system ARRYnp*x=e1 'solvable'.
If the last two inputs are of comparable magnitude, we should conclude that 1 is in the linear span of F, and hence the polynomial system reppresented by JACLISTNORM is not solvable. That is, the set of thirteen points in the list POINTS is not contained in an integral aCM sextic curve of genus three.

Jacobian algorithm fails for thirteen points sampled from an aCM sextic curve of genus three

The following line records a list of points that have been sampled from an aCM sextic curve of genus three using Bertini (here are Bertini input and output files we used to obtain these points). We verify numerically that there could be a solution to the equations coming out of the Jacobian algorithm, meaning that the algorithm fails to verify that the points do not lie on an aCM sextic curve of genus three (as expected).
Let's verify that the points have maximal Kruskal ranks.
We produce the polynomial ring that has all the relevant variables.
The acM sextic curve of genus 3 from which we sampled the points is defined by the three by three minors of the matrix M below. We verify that the given points do in fact lie on this curve.
That the minors of the above matrix actually define a smooth aCM sextic curve of genus three can be verified in this Macaulay2 tutorial . Now we run through the same code as before.
For a reality check, let's verify that the polynomials in F indeed vanish at the points in POINTS.
To increase the probability of numerical stability, multiply F by a random unitary matrix (this amounts to a random orthogonal change of basis applied to the basis of cubics we found). Verify that the result still consists of polynomials that vanish on the points.
We now produce the 7x4 matrix B from the description of Algorithm 3 in Section 6 of our paper.
We produce the generators of the ideal EQN that is described in Section 6 of our paper. If 1 is in this ideal, then there is no integral aCM sextic of genus three that vanishes at the thirteen points.
Our goal is now to decide if 1 is a linear combination of the polynomials in JACLISTMIN. We first normalize the polynomials in JACLISTMIN.
We then convert the polynomials in JACLISTMIN into a large matrix ARRY (this is actually a list of lists).
Let e1 be the vector representation of the polynomial 1. Use a least squares solver from NumPy to get a least squares solution to ARRY*x=e1.
The following provides a ground truth - since ARRYnp*w=chck is clearly solvable, the norm of chck-ARRYnp*wls (where wls is a least squares solution) gives us an idea of how small the norm e1-ARRYnp*xls should be (where xls is a least squares solution) to consider the linear system ARRYnp*x=e1 'solvable'.
If the last two inputs are of quite different magnitude, we should conclude that 1 is NOT in the linear span of F, and hence the polynomial system represented by JACLISTNORM could be solvable. That is, we cannot guarantee that the set of thirteen points in the list POINTS is not contained in an integral aCM sextic curve of genus three (as expected!).