This page includes the Macaulay2 code generating examples of smooth space filling curves in .
The paper On algebraic space filling curves (with A. Campbell, F. Dedvukaj, D. McCormick III, and J. Morales) describes the background and details of the construction.
On over a finite field
or order
, we construct a space filling curve by taking a complete intersection
where
and
are two space filling surfaces. Since the ideal of space filling surfaces is
we need to find two polynomials such that
is a smooth curve. We choose the smallest degree polynomial
such that
is a smooth space filling surface. For the second polynomial
, we know that the smallest possible degree is
. So we construct a random degree
polynomial in
and check:
- If
is smooth;
- If
is two. Here the dimension of
is the affine dimension, so if it is two,
is a projective curve in
.
Here is the Macaulay2 code doing this job.
needsPackage(“SpaceCurves”);
p = 3; — Fix the characteristic of the base field.
r = 1;
q = p^r; — Fix the order of the field.
K = GF(q, Variable => a); — K is the finite field of order q.
d = 1;
S = K[x, y, z, w]; — Define the polynomial ring with four variables.
g = x^q*y-x*y^q+z^q*w-z*w^q; — Set the polynomial g defining a smooth space filling surface of minimal degree.
J = ideal(x^q*y-x*y^q, x^q*z-x*z^q, x^q*w-x*w^q, y^q*z-y*z^q, y^q*w-y*w^q, z^q*w-z*w^q); — The ideal of space filling surfaces.
found = false;
counter = 0;
while not found do — Run the routine until it finds an example.
{
f = random(q+1+d, J); — Construct a random space filling surface of degree q+2, by choosing a polynomial in J.
I = ideal(f, g); — Construct an ideal I generated by f and g.
if isSmooth(I) and dim I == 2 then — If V(I) is a smooth space filling curve:
{
print f; — Print the polynomial f.
print counter; — Print the number of tries.
found = true; — End the routine.
}
else counter = counter + 1;
}
Output:
1. q=2
2. q=3
3. q=4
4. q=5
This page will be updated with more computational outputs.