Transformations between Genus One Models

A transformation between two genus one models of degree n=2, 3, 4, or 5 is an isomorphism of the underlying data which preserves some additional structure.

Transformations of genus one models have their own type TransG1. A transformation can be applied to a model using '*'. The syntax for creating transformations, and for extracting data from them, is described in this section.

For degree 2 models q(x, z) without cross terms, or for degree 3 models, a transformation is a tuple < k, S >, where k is an element of the coefficient ring; the transformed model is obtained by making the substitution of coordinate variables determined by S and multiplying the equation by k. For degree 2 models with cross terms a transformation is a tuple < k, [A, B, C], S >, where k and S are as above and in addition y + Ax2 + Bx z + Cz2 is substituted for y in the transformation. For degree 4, the first element is a 2 x 2 matrix; a model of degree 4 is given by two quadric equations, and the 2 x 2 matrix determines a change of basis of the quadrics (acting on them from the left). A transformation of degree 5 models is a tuple < T, S > where T and S are both 5 x 5 matrices; a model of degree 5 is given by a 5 x 5 matrix of linear forms M, and the transformed model is given by TMSTtr where MS is obtained from M by making the substitution of coordinate variables specified by S.

Two genus one models are said to be equivalent if they differ by such a transformation. Equivalent models have the same invariants up to scaling by the 4th and 6th powers of some element.

IsTransformation(n, g) : RngIntElt, Tup -> BoolElt, TransG1
This returns true if and only if the tuple g represents a transformation of genus one models of degree n. If so, it also returns the transformation as an object of type TransG1.
Tuple(g) : TransG1 -> Tup
This returns a tuple containing the data that defines the given transformation of genus one models.
ChangeRing(g, R) : TransG1, Rng -> TransG1
For a transformation g of genus one models, this constructs the same transformation over the ring R.
IdentityTransformation(n, R) : RngIntElt, Rng -> TransG1
The identity transformation of genus one models of degree n.
RandomTransformation(n : parameters) : RngIntElt -> TransG1
    Size: RngIntElt                     Default: 5
    Unimodular: BoolElt                 Default: false
    CrossTerms: BoolElt                 Default: false
A random transformation of genus one models of degree n. When Unimodular is set to true then the returned transformation is integrally invertible.

The optional parameter Size is passed to RandomSL or RandomGL.

In degree 2, if CrossTerms is false then the returned transformation preserves the set of models with no cross terms.

g * model : TransG1, ModelG1 -> ModelG1
ApplyTransformation(g, model) : TransG1, ModelG1 -> ModelG1
The result of applying the transformation g to the genus one model.
g1 * g2 : TransG1, TransG1 -> TransG1
ComposeTransformations(g1, g2) : TransG1, TransG1 -> TransG1
MultiplyTransformations(g1, g2) : TransG1, TransG1 -> TransG1
The composition g1 * g2 of two transformations of genus one models. Transformations of genus one models act on the left: (g1 * g2) * model = g1 * (g2 * model) .
Inverse(g) : TransG1 -> TransG1
InverseTransformation(g) : TransG1 -> TransG1
InverseTransformation(n, g) : RngIntElt, TransG1 -> TransG1
The inverse of the transformation g of genus one models.
ScalingFactor(g) : TransG1 -> RngElt
ScalingFactor(n, g) : RngIntElt, TransG1 -> RngElt
The scaling factor of the transformation g of genus one models. This an element λ such that if a genus one model has invariants c4 and c6 then the transformed model has invariants λ4 c4 and λ6 c6.
Determinant(g) : TransG1 -> RngElt
The determinant of the matrix associated with the transformation g.
V2.28, 13 July 2023