Reconstruction of Space Sextics from their Tritangents

We present a Magma script for reconstructing a space sextic from its tritangents, or rather its Steiner System, as described in

    1. Celik, A. Kulkarni, Y. Ren, M. Sayyary: Tritangents and their space sextics, in preparation (2018).

The script is comprised of four parts:

  • main.m The main script, in which the curve is defined and all top-level functions are called. Also contains functions for reconstructing the defining quadric of the space sextics.

  • genericTritangents.m Contains functions for computing the tritangents of a space sextic, as explained in the previous parts.

  • steinerSolver.m Contains functions for computing the Steiner system of a space sextic.

  • cayleySpaceCode.m Contains functions for computing the defining cubic of the space sextic.

As of now, we assume the quadric to be \(x_0x_2-x_1x_3\). To use the script, simply change the definition of the curve to your liking. The default curve is

kbase := GF(7);
P3base<x0,x1,x2,x3> := ProjectiveSpace(kbase,3);

// **********************************************************************
// Curve defined.

// The smooth quadric (DO NOT CHANGE)
q := x0*x2-x1*x3;

// A transformed Cayley cubic.
f := x0*x1*x2 + x0*x1*x3 + x0*x2*x3 + x1*x2*x3;
f := 1/4*x0*x1*x2 + x0*x1*x3 + x0*x2*x3 + x1*x2*x3;
f := Evaluate(f, [x0-x1, x0-2*x2+x1, x2-x3 + 5*x0, x3-4*x1 + 11*x0]);

// The curve.
C := Curve(Scheme(P3base, [q,f]));
assert IsNonSingular(C);

which yields

bash-3.2$ magma main.m
Magma V2.23-1     Tue May 29 2018 14:31:09 on mb019    [Seed = 407767936]
Type ? for help.  Type <Ctrl>-D to quit.

Loading file "main.m"
Loading "genericTritangents.m"
Loading "steinerSolver.m"

7140
7139
[...]
1
basis of quadrics:
[
  x0^2,
  x0*x1,
  x1^2,
  x0*x2,
  x1*x2,
  x2^2,
  x0*x3,
  x1*x3,
  x2*x3,
  x3^2
]
intersection of steiner subspaces:
Vector space of degree 10, dimension 1 over GF(7^20)
Echelonized basis:
(0 0 0 1 0 0 0 6 0 0)
Quadric equation:
x0*x2 + 6*x1*x3
Loading "cayleySpaceCode.m"
Subspace 1 computed.
Subspace 2 computed.
[...]
Subspace 255 computed.
Check if the reconstruction was successful: true
> Ctest;
Curve over GF(7^20) defined by
x0^3 + x0^2*x1 + 5*x1^3 + 5*x1^2*x2 + x1*x2^2 + 3*x0^2*x3 + 4*x0*x1*x3 + 4*x1^2*x3 + 4*x1*x2*x3 + x2^2*x3 +
    x0*x3^2 + 6*x1*x3^2 + 6*x2*x3^2,
x0^2*x2 + 6*x0*x1*x3,
x0*x1*x2 + 6*x1^2*x3,
x0*x2^2 + 6*x1*x2*x3,
x0*x2*x3 + 6*x1*x3^2

Note: The countdown from 7140 to 1 happens during the construction of the Steiner system from the \(\binom{120}{2}=7140\) pairs of tritangents (which is the computationally hardest part of the script), and the count from 1 to 255 happens during the construction of the \(|JC[2]\setminus \{0\}|=255\) spaces of quadrics \(\mathbb PV_{C,\alpha}\).