This repository contains Magma code for reconstruction and isomorphisms of hyperelliptic curves.
This package is now included by default in Magma-v2.26.
You need to have Magma installed on your machine to use this code.
You can enable the functionality of this package in Magma by attaching the hyperelliptic/magma/spec
file with AttachSpec
. To make this independent of the directory in which you find yourself, and to active this on startup by default, you may want to indicate the relative path in your ~/.magmarc
file, by adding a line like
AttachSpec("~/Programs/hyperelliptic/magma/spec");
Examples that test the routines in this package can be found in the directory
examples
(a full list of intrinsics is here).
Verbose comments are enabled by
SetVerbose("Hyperelliptic", n);
where n
is either 1
or 2
. A higher value gives more comments.
Basic use of the package is as follows.
- Compute Shioda Invariants [J2, J3, J4, J5, J6, J7, J8, J9, J10] of a genus 3 hyperelliptic curve
_<x> := PolynomialRing(Rationals());
H := HyperellipticCurve(x^8+x^6-x^2+x-1);
JI := ShiodaInvariants(H);
JI;
[ -29/14, 0, 158041/230496, 25/87808, 242163085/1084253184, -97577/14751744, -12622697959/330576748544, -2165139797/1942981705728, -750879849570517/62201321006039040 ];
- Conversely, given the first 6 free invariants J2, J3, J4, J5, J6, J7, compute all the possible algebraically compatible invariants J8, J9, J10 (here, there is only one solution, the one we start from);
JIs := ShiodaAlgebraicInvariants(JI[1..6]);
- Reconstruct from these invariants a model, and the geometric automorphism group of the curve.
C, aut := HyperellipticCurveFromShiodaInvariants(JIs[1]);
- Check that H and C are twists.
ShiodaInvariantsEqual(JI, ShiodaInvariants(C));
Please cite the following preprint if this code has been helpful in your research:
Reynald Lercier, Jeroen Sijsling, Christophe Ritzenthaler, Functionalities for genus 2 and 3 curves, arXiv:2102.04372