|
A hyperelliptic curve C given by a generalized Weierstrass equation
y2 + h(x) y = f(x) is created by specifying polynomials h(x) and
f(x) over a field K. The class of hyperelliptic curves includes
curves of genus one, and a hyperelliptic curve may also be constructed
by type change from an elliptic curve E. Note that the ambient
space of C is a weighted projective space in which the one or two
points at infinity are nonsingular.
HyperellipticCurve(f, h) : RngElt, RngUPolElt -> CrvHyp
HyperellipticCurve(f, h) : RngUPolElt, RngElt -> CrvHyp
HyperellipticCurve(f) : RngUPolElt -> CrvHyp
HyperellipticCurve([f, h]) : [ RngUPolElt ] -> CrvHyp
Given two polynomials h and f ∈R[x] where R is a field or
integral domain, this function returns the nonsingular hyperelliptic
curve C: y2 + h(x)y = f(x). If h(x) is not given, then it is
taken as zero. If R is an integral domain rather than a field,
the base field of the curve is taken to be the field of fractions of
R. An error is returned if the given curve C is singular.
Create the hyperelliptic curve as described above using the projective space
P as the ambient. The ambient P should have dimension 2.
HyperellipticCurveOfGenus(g, f, h) : RngIntElt, RngElt, RngUPolElt -> CrvHyp
HyperellipticCurveOfGenus(g, f, h) : RngIntElt, RngUPolElt, RngElt -> CrvHyp
HyperellipticCurveOfGenus(g, f) : RngIntElt, RngUPolElt -> CrvHyp
HyperellipticCurveOfGenus(g, [f, h]) : RngIntElt, [RngUPolElt] -> CrvHyp
Given a positive integer g and two polynomials h and f ∈R[x]
where R is a field or integral domain, this function returns the
nonsingular hyperelliptic curve of genus g given by C: y2 + h(x)y = f(x).
If h(x) is not given, then it is taken as zero. Before attempting to
create C, the function checks that its genus will be g by testing
various numerical conditions on f and g. If the genus is not correct,
a runtime error is raised. If R is an integral domain rather than a field,
the base field of C is taken to be the field of fractions of R. An
error is returned if the curve C is singular.
Returns the hyperelliptic curve C corresponding to the elliptic
curve E, followed by the map from E to C.
Given a sequence containing two polynomials h, f ∈R[x], where
R is an integral domain, return true if and only if C: y2 + h(x)y =
f(x) is a hyperelliptic curve. In this case, the curve is returned as
a second value.
Given a positive integer g and a sequence containing two polynomials
h, f ∈R[x] where R is an integral domain, return true if and
only if C: y2 + h(x)y = f(x) is a hyperelliptic curve of genus g.
In this case, the curve is returned as a second value.
Create a hyperelliptic curve over the rationals:
> P<x> := PolynomialRing(RationalField());
> C := HyperellipticCurve(x^6+x^2+1);
> C;
Hyperelliptic Curve defined by y^2 = x^6 + x^2 + 1 over Rational Field
> C![0,1,1];
(0 : 1 : 1)
Now create the same curve over a finite field:
> P<x> := PolynomialRing(GF(7));
> C := HyperellipticCurve(x^6+x^2+1);
> C;
Hyperelliptic Curve defined by y^2 = x^6 + x^2 + 1 over GF(7)
> C![0,1,1];
(0 : 1 : 1)
BaseExtend(C, K) : Sch, Fld -> Sch
Given a hyperelliptic curve C defined over a field k, and a field K
which is an extension of k, return a hyperelliptic curve C' over K
using the natural inclusion of k in K to map the coefficients of C
into elements of K.
BaseExtend(C, j) : Sch, Map -> Sch
Given a hyperelliptic curve C defined over a field k and a ring map
j : k -> K, return a hyperelliptic curve C' over K by
applying j to the coefficients of E.
BaseExtend(C, n) : Sch, RngIntElt -> Sch
If C is a hyperelliptic curve defined over a finite field k and a
positive integer n, let K denote the extension of k of degree n.
This function returns a hyperelliptic curve C' over K using the
natural inclusion of k in K to map the coefficients of C into
elements of K.
Given a hyperelliptic curve C defined over a field k, and a field K,
return a hyperelliptic curve C' over K that is obtained from C by
by mapping the coefficients of C into K using the standard coercion
map from k to K. This is useful when there is no appropriate ring
homomorphism between k and K (e.g., when k=Q and K is a finite
field).
We construct a curve C over the rationals and use ChangeRing
to construct the corresponding curve C1 over GF(101).
> P<x> := PolynomialRing(RationalField());
> C := HyperellipticCurve([x^9-x^2+57,x+1]);
> C1 := ChangeRing(C, GF(101));
> C1;
Hyperelliptic Curve defined by y^2 + (x + 1)*y = x^9 + 100*x^2 + 57
over GF(101)
> Q<t> := PolynomialRing(GF(101));
> HyperellipticPolynomials(C1);
t^9 + 100*t^2 + 57
t + 1
> C2, f := SimplifiedModel(C1);
> HyperellipticPolynomials(C2);
4*t^9 + 98*t^2 + 2*t + 27
0
> P1 := C1![31,30,1];
> P1;
(31 : 30 : 1)
> Q := P1@f; // evaluation
> Q;
(31 : 92 : 1)
> Q@@f; // pullback
(31 : 30 : 1)
An explanation of the syntax for isomorphisms of hyperelliptic
curves and the functions for models is given below.
Given a hyperelliptic curve C defined over a field of characteristic
not equal to 2, this function returns an isomorphic hyperelliptic
curve C' of the form y2 = f(x), followed by the isomorphism
C -> C'.
Given a hyperelliptic curve C, this function returns true if
C has a model C' of the form y2 = f(x), with f of odd
degree. If so, C' is returned together with the isomorphism
C -> C'.
Reduce: BoolElt Default: false
Given a hyperelliptic curve C defined over the rationals, this
function returns an isomorphic curve C' given by polynomials with
integral coefficients, together with the isomorphism C -> C'.
If Reduce is set true, common divisors of the coefficients
are eliminated as far as possible.
Bound: RngIntElt Default: 0
SetVerbose("CrvHypMinimal", n): Maximum: 3
Given a hyperelliptic curve C defined over the rationals, this
function returns a globally minimal Weierstrass model C' of C.
If Bound is set, it gives an upper bound for the bad primes
that are checked. As this calculation uses trial division,
Bound should not be set much larger than 107. The
isomorphism C -> C' is returned as a second value.
pIntegralModel(C, p) : CrvHyp, FldRatElt -> CrvHyp, MapIsoSch
pIntegralModel(C, p) : CrvHyp, RngUPolElt -> CrvHyp, MapIsoSch
pIntegralModel(C, p) : CrvHyp, FldFunRatUElt -> CrvHyp, MapIsoSch
pIntegralModel(C, p) : CrvHyp, Infty -> CrvHyp, MapIsoSch
SetVerbose("CrvHypMinimal", n): Maximum: 3
Given a hyperelliptic curve C defined over Q or a rational
function field, this function returns a model C'
of the curve that is integral at the place p given as an
integer, rational, polynomial, rational function or ∞. The isomorphism
C -> C' is returned as a second value.
pNormalModel(C, p) : CrvHyp, FldRatElt -> CrvHyp, MapIsoSch
pNormalModel(C, p) : CrvHyp, RngUPolElt -> CrvHyp, MapIsoSch
pNormalModel(C, p) : CrvHyp, FldFunRatUElt -> CrvHyp, MapIsoSch
pNormalModel(C, p) : CrvHyp, Infty -> CrvHyp, MapIsoSch
SetVerbose("CrvHypMinimal", n): Maximum: 3
Given a hyperelliptic curve C defined over Q or a rational
function field, this function returns a model C'
of the curve that is normal at the place p given as an integer,
rational, polynomial, rational function or ∞. The isomorphism
C -> C' is returned as a second value.
pMinimalWeierstrassModel(C, p) : CrvHyp, FldRatElt -> CrvHyp, MapIsoSch
pMinimalWeierstrassModel(C, p) : CrvHyp, RngUPolElt -> CrvHyp, MapIsoSch
pMinimalWeierstrassModel(C, p) : CrvHyp, FldFunRatUElt -> CrvHyp, MapIsoSch
pMinimalWeierstrassModel(C, p) : CrvHyp, Infty -> CrvHyp, MapIsoSch
SetVerbose("CrvHypMinimal", n): Maximum: 3
Given a hyperelliptic curve C defined over Q or a rational
function field, this function returns a Weierstrass model C'
of the curve that is minimal at the place p given as an integer,
rational, polynomial, rational function or ∞. The isomorphism
C -> C' is returned as a second value.
Smallest: BoolElt Default: false
Height: BoolElt Default: false
SetVerbose("CrvHypReduce", n): Maximum: 3
Given a curve with integral coefficients, computes a model
that is reduced with respect to the action of SL2(Z).
If Smallest is set, return a model whose SimplifiedModel is given by
a binary form of minimal euclidean length (Height := false)
or minimal height (Height := true).
Smallest: BoolElt Default: false
Height: BoolElt Default: false
SetVerbose("CrvHypMinimal", n): Maximum: 3
SetVerbose("CrvHypReduce", n): Maximum: 3
Given a hyperelliptic curve C defined over the rationals, this
function returns a globally minimal integral Weierstrass model C'
of C that is reduced with respect to the action of SL2(Z),
using ReducedModel, which makes use of the parameters Smallest and Height.
The isomorphism C -> C' is returned as a second value.
This sets the verbose printing level for the curve reduction algorithms
of Stoll and Wamelen. The second argument can take integral values
in the interval [0, 3], or boolean values: false (equivalent to 0)
and true (equivalent to 1).
Intrinsics are provided to perform the minimization and reduction routines directly
on binary forms over the rationals or integers. These are slightly more general, in
that they apply to homogeneous forms whose associated polynomial may have repeated
roots. In the case of non-square-free forms, the routines are applied to the square-free
part and the reducing transformation is then applied to the original form.
This sets the verbose printing level for the minimization
phases of the following intrinsics. The second argument can take integral values
in the interval [0, 2], or boolean values: false (equivalent to 0)
and true (equivalent to 1).
The first argument, f, should be a homogeneous polynomial in two variables
either defined over the integer ring or defined over the rational field with
integral coefficients. The second argument p should be a prime.
Computes a transformation f(x, y) |-> F(x, y)=p - rf(ax + by, cx + dy) with r ≥0
and a, b, c, d ∈Z, ad - bc ≠0, such that F still has integral coefficients
but whose discriminant has minimal p-part amongst all integral forms GL2(Q)-equivalent
to f.
Returns F, the transformation matrix (matrix( a & b c & d )), and
the scaling factor s=pr.
The argument, f, should be a homogeneous polynomial in two variables defined over the
rational field.
Computes a transformation f(x, y) |-> F(x, y)=s - 1f(ax + by, cx + dy) with 1 ≤s ∈Z
and a, b, c, d ∈Z, ad - bc ≠0, such that F has integral coefficients and is
minimized and reduced.
Here, if F0 is the square-free part of F, minimized means that the absolute value of the
discriminant of F0 is minimal amongst all integral forms GL2(Q)-equivalent to the square-free
part of f. Reduced means that F0 is reduced up to SL2(Z)-equivalence following Stoll's
reduction algorithm, as for the ReducedModel intrinsic on hyperelliptic curves.
Returns F, the transformation matrix (matrix( a & b c & d )), and
the scaling factor s.
Note that the CrvHypReduce verbose level should be set to obtain verbose output for
the reduction phase of this intrinsic.
degree: RngIntElt Default: Degree(f)
Variant of the previous intrinsic, taking a univariate polynomial over Q, f,
and applying the minimization and reduction to the binary form fh which is
the homogenisation of f, the homogenising variable being the second one. If
the parameter degree is set to an integer d greater than Degree(f)
(it's default is Degree(f)), then fh is taken as the degree d homogenisation.
The return values are the same as for the previous intrinsic, except that the first
return value is the dehomogenised F computed for fh, i.e. F(x, 1).
> P<x,y> := PolynomialRing(Rationals(),2);
> f := 65537*x^8 + 131104*x^7*y + 115136*x^6*y^2 + 60928*x^5*y^3 +
> 35840*x^4*y^4 + 60928*x^3*y^5 + 115136*x^2*y^6 + 131104*x*y^7 + 65537*y^8;
> F,M,s := MinRedBinaryForm(f);
> F;M;s;
x^8 + y^8
[ 1 4]
[-4 -1]
2562890625
> s*F eq f^ChangeRing(M,Rationals());
true;
Returns true if the hyperelliptic curve C is of the form y2 = f(x).
Given a hyperelliptic curve C, the function returns true
if C has integral coefficients, and false otherwise.
IspIntegral(C, p) : CrvHyp, RngUPolElt -> BoolElt
IspIntegral(C, p) : CrvHyp, Infty -> BoolElt
Given a hyperelliptic curve C defined over Q or a rational
function field, this function returns true
if the given model of C is integral at the given place.
IspNormal(C, p) : CrvHyp, RngUPolElt -> BoolElt
IspNormal(C, p) : CrvHyp, Infty -> BoolElt
Given a hyperelliptic curve C defined over Q or a rational
function field, this function returns true
if the given model of C is normal at the given place.
IspMinimal(C, p) : CrvHyp, RngUPolElt -> BoolElt, BoolElt
IspMinimal(C, p) : CrvHyp, Infty -> BoolElt, BoolElt
Given a hyperelliptic curve C defined over Q or a rational
function field, this function decides whether
the given model of C is minimal at the given place.
The returned values as follows:
 - false, false if C is not an integral
minimal model at the given place.
 - true, false if C is integral and minimal at the given place,
but not the unique minimal model (up to transformations that are invertible over the local ring).
 - true, false if C is the unique integral minimal model at the given place,
(up to transformations that are invertible over the local ring).
The function returns true if and only if C is a genus one hyperelliptic curve of odd
degree, in which case it also returns an elliptic curve E isomorphic to
C followed by the isomorphism C -> E and the inverse
isomorphism E -> C.
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|