A hyperelliptic curve isomorphism curve defined by the data of a linear fractional transformation t(x:z) = (ax + bz:cx + dz), a scale factor e, and a polynomial u(x) of degree at most g + 1, where g is the genus of the curve. This data defines the isomorphism of weighted projective points
(x : y : z) |-> (ax + bz : ey + tilde(u)(x, z) : cx + dz),
where tilde(u) is the degree g + 1 homogenization of u. When not specified, the values of e and u are by default taken to be 1 and 0, respectively.
An isomorphism can be created from the parent structures by coercing a tuple < [a, b, c, d], e, u > into the structure of isomorphisms between two hyperelliptic curves, or by creating it as a transformation of a given curve, i.e. creating the codomain curve together with the isomorphism from the given data.
Note that due to the projective weighting of the ambient space of the curve, two equal isomorphisms may have different representations.
Given a hyperelliptic curve C, returns the structure of all automorphisms of the curve.
Given hyperelliptic curves C1 and C2 of the same genus and base field, returns the structure of all isomorphisms between them.
Given the structure M = ( Isom)(C, C') of isomorphisms between curves C and C', returns the isomorphism specified by the linear fractional transformation data sequence t = [a, b, c, d] or by the tuple of data < t, e, u > as an element of M.
Returns the hyperelliptic curve C' which is the codomain of the isomorphism specified by the data t, e and u, followed by the the isomorphism to the curve.
> P<x> := PolynomialRing(Rationals());
> H1 := HyperellipticCurve(x^5-7);
> H2, phi := Transformation(H1, [0,1,1,0], 1/2, x^2+1);
> H2;
Hyperelliptic Curve defined by y^2 + (-2*x^2 - 2)*y = -7/4*x^6 - x^4 - 2*x^2 +
1/4*x - 1 over Rational Field
> phi;
(x : y : z) :-> (z : 1/2*y + x^2*z + z^3 : x)
> IsIsomorphic(H1, H2);
true (x : y : z) :-> (z : 1/2*y + x^3 + x*z^2 : x)
Hyperelliptic curve isomorphisms can be evaluated, inverted, and composed on points as right operators. Note that the functional notation f(P) is not presently available for these maps of curves. However the available map syntax @ is more consistent with functions as operating on the right (which determines and is apparent from the way composition is defined).
The composition of the maps f and g as right operators.
The inverse of the hyperelliptic curve isomorphism f.
Given an isomorphism of hyperelliptic curves, and the structure of isomorphisms between two hyperelliptic curves, returns true if and only if they share the same domains and codomains.
Returns the evaluation of f at a point P in its domain. The same functions apply equally to points in the Jacobian of the domain curve.
Returns the inverse image of the isomorphism f at a point P in its codomain. The same functions apply equally to points in the Jacobian of the codomain curve.
Given isomorphisms f and g of hyperelliptic curves having the same domain and codomain, this function returns true if and only if they are equal. Note that two isomorphisms may be equal even if their defining data are distinct (see example below).
Given an isomorphism between two hyperelliptic curves, returns the parent structure of isomorphisms between the domain and codomain.
Given a hyperelliptic curve isomorphism or the structure of isomorphisms between two hyperelliptic curves, returns the domain.
Given a hyperelliptic curve isomorphism or the structure of isomorphisms between two hyperelliptic curves, returns the codomain.
This section details the features for computing isomorphisms between two curves and determining the group of automorphisms. The function IsGL2Equivalent plays a central role in the isomorphism testing, and is documented here due to its central role in these computations.
Returns true if and only if f and g are in the same GL_2(k)-orbit, where k is the coefficient field of their parent, modulo scalars. The polynomials are considered as homogeneous polynomials of degree n, where n must be at least 4. The second return value is the sequence of all matrix entries [a, b, c, d] such that g(x) is a constant times f((ax + b)/(cx + d)) (cx + d)^n.
SetVerbose("CrvHypIso", n): Maximum: 3
Returns true if and only if the hyperelliptic curves C1 and C2 are isomorphic over their common base field. If the curves are isomorphic, an isomorphism is returned.
Given a hyperelliptic curve C of characteristic different from 2, returns a permutation group followed by an isomorphism to the group of automorphisms of the curve over its base ring. The curve must be of genus at least one, and the automorphism group is defined to consist of those automorphisms which commute with the hyperelliptic involution, i.e. which induce a well-defined automorphism of its quotient projective line. A third return value gives the action C x G -> C.
> P<x> := PolynomialRing(GF(3));
> C1 := HyperellipticCurve(x^3+x);
> G1, m1 := AutomorphismGroup(C1);
> #G1;
> [ m1(g) : g in G1 ];
[
(x : y : z) :-> (x : y : z),
(x : y : z) :-> (x : -y : z),
(x : y : z) :-> (z : y : x),
(x : y : z) :-> (z : -y : x)
]
We note that due to the weighted projective space, the same map
may have a non-unique representation, however the equality function
is able to identify equivalence on representations.
> f := m1(G1.3); > f; (x : y : z) :-> (z : y : x) > g := Inverse(f); > g; (x : y : z) :-> (2*z : y : 2*x) > f eq g; trueWe see that the geometric automorphism group is much larger. By base extending the curve to a quadratic extension, we find the remaining automorphisms of the curve.
> K<t> := GF(3,2);
> C2 := BaseExtend(C1,K);
> G2, m2 := AutomorphismGroup(C2);
> #G2;
48
> O := C2![1,0,0];
> auts := [ m2(g) : g in G2 ];
> [ f : f in auts | O@f eq O ];
[
(x : y : z) :-> (x : y : z),
(x : y : z) :-> (x : -y : z),
(x : y : z) :-> (x : t^2*y : 2*z),
(x : y : z) :-> (x + t^6*z : t^2*y : 2*z),
(x : y : z) :-> (x + t^6*z : y : z),
(x : y : z) :-> (x + t^2*z : y : z),
(x : y : z) :-> (x + t^2*z : t^2*y : 2*z),
(x : y : z) :-> (x : t^6*y : 2*z),
(x : y : z) :-> (x + t^6*z : t^6*y : 2*z),
(x : y : z) :-> (x + t^6*z : -y : z),
(x : y : z) :-> (x + t^2*z : -y : z),
(x : y : z) :-> (x + t^2*z : t^6*y : 2*z)
]
> #$1;
12
Note that this curve is an example of a supersingular elliptic
curve in characteristic 3. In the final computation we restrict
to the automorphisms as an elliptic curve, i.e. those which fix the
point at infinity --- the identity element of the group law.
In the context of hyperelliptic curves of genus one, the group of automorphisms must stabilize the ramification points of the hyperelliptic involution. These are precisely the 2-torsion elements as an elliptic curve. So we have an group extension by the 2-torsion elements, acting by translation. Converting to an elliptic curve, we find that there are two 2-torsion elements over F_3:
> E1 := EllipticCurve(C1);
> A1 := AbelianGroup(E1);
> A1;
Abelian Group isomorphic to Z/4
Defined on 1 generator
Relations:
4*$.1 = 0
We see that two of the 2-torsion elements are defined over F_3,
and the remaining ones appear over the quadratic extension. So in
the former case the automorphism group is an extension of the
elliptic curve automorphism group (of order 2) by Z/2Z, and in
latter case the automorphism group is an extension (of the group of
order 12) by the abelian group isomorphic to Z/2Z x Z/2Z.
Note that there exist other curve automorphisms given by translations by other torsion points (under the addition as an elliptic curve), but that do not commute with the hyperelliptic involution, hence do not enter into the hyperelliptic automorphism group.