Genus One Models as Coverings

The curve defined by a genus one model of degree n is a principal homogeneous space for some elliptic curve (namely the Jacobian of the curve). The data of the Jacobian, and the covering map of degree n2, can be read from the invariants and covariants of the model.

Any two models with the same Jacobian can be added together as elements of the WeilChat group. Below are functions for adding two models of degree 3, and for "doubling" models of degree 4 or 5.

A related function for degree 3 models is ThreeSelmerElement (see Section Three-Descent and Five-Descent). For degree 4 models the maps can also be computed using AssociatedEllipticCurve and AssociatedHyperellipticCurve from the package on four descent (see Section Four-Descent).

Jacobian(model) : ModelG1 -> CrvEll
Jacobian(C) : Crv -> CrvEll
The Jacobian, returned as an elliptic curve, of the given genus one model, or of the curve C corresponding to a genus one model.
nCovering(model : parameters) : ModelG1 -> Crv, CrvEll, MapSch
    E: CrvEll                           Default: 
The covering map from the given genus one model to its Jacobian. Three values are returned: the curve C of degree n corresponding to the given model, its Jacobian as an elliptic curve E, and a map of schemes C to E.

If an elliptic curve E is given it must be isomorphic to the Jacobian and then this curve will be the image of the map.

AddCubics(cubic1, cubic2 : parameters) : RngMPolElt, RngMPolElt -> RngMPolElt
AddCubics(model1, model2 : parameters) : ModelG1, ModelG1 -> ModelG1
model1 + model2 : ModelG1, ModelG1 -> ModelG1
    E: CrvEll                           Default: 
    ReturnBoth: BoolElt                 Default: false
Given two ternary cubic polynomials, or two genus one models of degree 3, that both have the same invariants, returns the sum of the corresponding elements of H1(Q, E[3]).

An error results if the two cubics do not belong to the same elliptic curve E, See Section Three-Descent and Five-Descent for more information about AddCubics.

DoubleGenusOneModel(model) : ModelG1 -> ModelG1
Given a genus one model of degree 4 or 5, this function computes twice the associated element in the WeilChat group and returns this as a genus one model (which will have degree 2 or 5, respectively).
FourToTwoCovering(model : parameters) : ModelG1 -> Crv, Crv, MapSch
FourToTwoCovering(C : parameters) : Crv -> Crv, Crv, MapSch
    C2: Crv                             Default: 
Given a genus one model of degree 4 or an associated curve, this function returns three values: the curve C4 in P3 corresponding to the model, a plane quartic curve C2 representing twice the model in the WeilChat group, and the map of schemes C4 to C2. Calling AssociatedHyperellipticCurve(Curve(model)) provides the same information.
V2.28, 13 July 2023