|
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
Some functions in this section work for general number fields
(notably TwoSelmerGroup),
while many are only implemented over Q.
Subsections
RationalPoints(J) : JacHyp -> SetIndx
Bound: RngInt Default: 0
Given a Jacobian J of a genus 2 hyperelliptic curve
defined over the rationals of the form
y2 = f(x), where f has integral coefficients,
determine all rational points on the Jacobian J whose
naive height on the associated Kummer surface is
less than or equal to Bound.
Given the Jacobian J of a genus 2 curve C defined over a number
field K, the function returns J(K)[2] as an abstract group, together
with a map sending elements of the abstract group to points on J.
The curve C must be given in the simplified form y2=f(x).
Given the Jacobian J of a hyperelliptic curve defined over the
rationals, this function returns a bound on the size of the rational
torsion subgroup of the Jacobian. The bound is obtained by examining
the group J(Fp) for the first n good primes p.
Given the Jacobian J of a genus 2 curve defined over the
rationals, this function returns the rational torsion subgroup
of J, and the map from the group into J. The curve must have
the form y2 = f(x) with integral coefficients.
For the curve
C : y2= (x + 3) * (x + 2) * (x + 1) * x * (x - 1) * (x - 2),
the only Q-rational torsion on the Jacobian is 2-torsion.
> _<x> := PolynomialRing(Rationals());
> C := HyperellipticCurve(&*[x-n : n in [-3..2]]);
> J := Jacobian(C);
> T, m := TwoTorsionSubgroup(J);
> T;
Abelian Group isomorphic to Z/2 + Z/2 + Z/2 + Z/2
Defined on 4 generators
Relations:
2*P[1] = 0
2*P[2] = 0
2*P[3] = 0
2*P[4] = 0
> [ m(T.i) : i in [1..4] ];
[ (x^2 - 3*x + 2, 0, 2), (x^2 - 2*x, 0, 2), (x^2 - x - 2, 0, 2),
(x^2 - 4, 0, 2) ]
> #T eq #TorsionSubgroup(J);
true
The Jacobian for the following curve has torsion subgroup Z/24 over Q.
> C := HyperellipticCurve((2*x^2-2*x-1)*(2*x^4-10*x^3+7*x^2+4*x-4));
> J := Jacobian(C);
> T, m := TwoTorsionSubgroup(J);
> T;
Abelian Group isomorphic to Z/2
Defined on 1 generator
Relations:
2*P[1] = 0
> m(T.1);
(x^2 - x - 1/2, 0, 2)
> A,h := TorsionSubgroup(J);
> #T eq #A;
false
> A;
Abelian Group isomorphic to Z/24
Defined on 1 generator
Relations:
24*P[1] = 0
> P := h(A.1);
> P;
(x^2 - 1/2, -1, 2)
> Order(P);
24
> 12 * P eq m(T.1);
true
This section pertains to height functions on the Mordell--Weil group
of the Jacobian of genus two curves over Q. The canonical
height is computed using the algorithm of Flynn and Smart[FS97]
with improvements by Stoll[Sto99].
Notes on the theory: Heights are a useful tool for proving things
about rational points on varieties. The most standard applications
concerning points on Jacobians are
 - proving independence of points in J(Q)/Jtors(Q)
(in particular, the regulator is defined in terms of the canonical height), and
 - proving non-divisibility:
given P ∈J(Q) and n ∈Z,
proving that P is not of the form nR for some R ∈J(Q).
The heights in this section are logarithmic, and they measure the size of the
coordinates of the image of P on the Kummer surface associated to J
(embedded in ( P)3). The naive height h is simply the height of
the image of P in ( P)3. One can refine this, taking advantage of the group law on J,
defining a canonical height
which has nice properties with respect to the group law,
for instance hcan(nP) = n2 hcan(P). In particular,
hcan(P) = 0 if and only if P is a torsion point.
The function h - hcan is bounded on J(/line(Q)).
Computationally, one generally wants an upper bound on this, because then
one can find all points up to a given canonical height by doing a naive search.
NaiveHeight(P) : SrfKumPt -> FldPrElt
Given a point P on the Jacobian of a hyperelliptic curve (or on the
associated Kummer surface),
the function returns the logarithmic height of the image of P in ( P)3
under the maps J -> K -> ( P)3.
Height(P: Precision) : SrfKumPt -> FldPrElt
CanonicalHeight(P: Precision) : JacHypPt -> FldPrElt
CanonicalHeight(P: Precision) : SrfKumPt -> FldPrElt
Precision: RngIntElt Default: 0
The canonical height of a point on the Jacobian of a hyperelliptic curve over Q
(or on the associated Kummer surface).
Effort: RngIntElt Default: 0
Factor: BoolElt Default: false
Given the Jacobian J of a genus 2 curve over Q of
the form y2 = f(x) with integral coefficients, this computes a
real number c such that h(P) ≤hcan(P) + c for all P in J(Q),
where h is the naive height and hcan is the canonical height.
The parameter Effort (which can be 0, 1 or 2)
indicates how much effort should be put
into finding a good bound. The second value returned is a bound
for μ_∞, the contribution from the infinite place.
If the parameter Factor is true, then
the discriminant will be factored, and its prime divisors will be
considered individually, usually resulting in an improvement of
the bound.
Precision: RngIntElt Default: 0
The value of the canonical height pairing for rational points
P and Q on the Jacobian of a genus 2 curve. The pairing can be defined as
< P, Q > := (h(P + Q) - h(P) - h(Q))/2.
Precision: RngIntElt Default: 0
Given a sequence [P1, ... Pn] of points on the Jacobian J of a hyperelliptic
curve, this function returns the matrix with entries < Pi, Pj >,
where this denotes the canonical height pairing.
Precision: RngIntElt Default: 0
Given a sequence S of points on the Jacobian J of a hyperelliptic
curve, the function returns the determinant of the height pairing matrix
of S. The regulator is equal to zero when the points are dependent
in the Mordell--Weil group, and otherwise is equal to the square of the
volume of the parallelotope spanned by the points in the subgroup of
the free quotient of J(Q) generated by S.
ReducedBasis(S: Precision) : @JacHypPt@ -> SeqEnum, AlgMatElt
ReducedBasis(S: Precision) : JacHypPt -> SeqEnum, AlgMatElt
Precision: RngIntElt Default: 0
Given a sequence of points on the Jacobian J of a hyperelliptic
curve, this function returns an LLL-reduced basis for the subgroup
of J(Q)/Jtors(Q) generated by the given points (that is,
the function reduces the real lattice formed by the points,
under the positive definite quadratic form given by the canonical height pairing).
The height pairing matrix of the sequence is returned as a second value.
This example illustrates some basic properties of heights,
and proves that a certain point in J(Q) is not a nontrivial multiple
of any other point in J(Q).
Let J be the Jacobian of y2 = x6 + x2 + 2.
> P<x> := PolynomialRing(Rationals());
> C := HyperellipticCurve(x^6+x^2+2);
> J := Jacobian(C);
Find some small points on C and map them to J:
> ptsC := Points(C : Bound:=1000);
> ptsJ := [ ptsC[i] - ptsC[1] : i in [2,3,4,5,6] ];
> ptsJ;
[ (1, x^3, 2), (x + 1, x^3 - 1, 2), (x + 1, x^3 + 3, 2), (x - 1, x^3 - 3, 2),
(x - 1, x^3 + 1, 2) ]
The canonical heights of these five points:
> [ Height(P) : P in ptsJ ];
[ 0.479839797450405152023279542502, 0.000000000000000000000000000000,
0.479839797450405152023279542491, 0.479839797450405152023279542491,
0.000000000000000000000000000000 ]
We see that two of them are torsion (hcan = 0), and the others are
probably equal or inverse to each other modulo torsion, because they appear
to have the same canonical height. If so, they would generate a subgroup
of rank 1 in J(Q)/Jtors(Q). The next command verifies this.
> ReducedBasis(ptsJ);
[ (x + 1, x^3 + 3, 2) ]
[0.479839797450405152023279542491]
> P := ptsJ[3];
> P;
(x + 1, x^3 + 3, 2)
So this point (which is the third point in our list) generates the others.
We proceed to check that the other two non-torsion points in our list
are equal to P + T or -P + T for some torsion point T.
> Jtors, maptoJ := TorsionSubgroup(J);
> {ptsJ[1], ptsJ[4]} subset { pt + maptoJ(T) : pt in {P,-P}, T in Jtors };
true
Now we check the property hcan(nP) = n2 hcan(P) for n=23.
> Height(23*P)/Height(P);
529.000000000000000000000000000
Of course, the naive height does not behave so nicely,
but at least it should satisfy
h ≤hcan + HeightConstant(J).
> HC := HeightConstant(J : Effort:=2, Factor);
> HC;
3.73654623288305720113473940376
In particular, all torsion points should have naive height less than this.
> for T in Jtors do
> NaiveHeight(maptoJ(T));
> end for;
0.000000000000000000000000000000
0.693147180559945309417232121458
0.693147180559945309417232121458
0.693147180559945309417232121458
0.693147180559945309417232121458
0.693147180559945309417232121458
0.693147180559945309417232121458
0.693147180559945309417232121458
> // Does the inequality hold for 23*P?
> NaiveHeight(23*P) - Height(23*P) le HeightConstant(J);
true
Finally, we show that P is not a nontrivial multiple of
another point in J(Q)/Jtors(Q) (implying that P
generates J(Q)/Jtors(Q) if this has rank 1).
For suppose that P = n Q + T for some Q ∈J(Q), T ∈Jtors(Q).
Then hcan(Q) = (1/n2) hcan(P) < hcan(P),
and the following search shows there is no Q satisfying this bound.
> LogarithmicBound := Height(P) + HeightConstant(J); // Bound on the naive h(Q)
> AbsoluteBound := Ceiling(Exp(LogarithmicBound));
> PtsUpToAbsBound := Points(J : Bound:=AbsoluteBound );
> ReducedBasis( [ pt : pt in PtsUpToAbsBound ]);
[ (x^2 + 1/2*x + 1/2, 1/4*x - 5/4, 2) ]
[0.479839797450405152023279542491]
If Q exists, it would have to be in the set PtsUpToAbsBound.
But the results of the final command indicate that the group generated by
PtsUpToAbsBound is also
generated by a single point of canonical height
0.479839797450405152023279542491, so there are no
nontorsion points Q in PtsUpToAbsBound with hcan(Q) < hcan(P).
This example is continued in Example H116E30,
where we prove that J(Q) has rank 1,
and then use the fact that P generates J(Q)/Jtors(Q)
to find all rational points on C.
We compute a reduced basis for a set of points on the Jacobian J
on the genus two curve C: y2 = x6 + x2 + 1.
> P<x> := PolynomialRing(Rationals());
> C := HyperellipticCurve(x^6+x^2+1);
> J := Jacobian(C);
We construct some points on C:
> Z := PointsAtInfinity(C);
> Z;
{@ (1 : -1 : 0), (1 : 1 : 0) @}
> P1 := Z[1];
> P2 := Z[2];
> P3 := C![1/2,9/8,1];
> P4 := C![-1/2,9/8,1];
We now map them to J (for example Q1 is the divisor P1 - P2):
> Q1 := J![P1, P2];
> Q2 := J![P1, P3];
> Q3 := J![P3, P4];
> B, M := ReducedBasis([Q1, Q2, Q3] : Precision := 12);
> B; // This will be a basis for <Q1, Q2, Q3>
[ (1, -x^3, 2), (x^2, 1, 2) ]
> M; // The height pairing matrix for the new basis B
[0.2797317933688278287667056839 -5.005347463630776922E-17]
[ -5.005347463630776922E-17 0.9524462128097307697800077959]
> Determinant(M);
0.2664294871966142247655164984
Since Det(M) is nonzero, the two generators in B are independent.
The principal functions in this section provide information about
the Mordell-Weil group J(K) of a hyperelliptic Jacobian
defined over the rationals or a number field. Two descent
provides an upper bound (since J(K)/(2J(K)) embeds in the
2-Selmer group of J). Finer information is provided by
HasSquareSha, which determines the parity of the
2-rank of the Shafarevich--Tate group, and RankBounds
collects together all the information that is computable in Magma.
In Magma 2.13, there is now a simpler user interface for
computing 2-Selmer groups. The two implementations that
were previously available still exist internally, and
when TwoSelmerGroup is called, it chooses one of
them (or the user may choose).
BadPrimes(J) : JacHyp -> SeqEnum
Badness: RngIntElt Default: 1
Given a hyperelliptic curve C with integral coefficients
defined over a number field (or the Jacobian of such a curve),
the function returns a sequence containing the primes where the given
model has bad reduction.
IsEven(J) : JacHyp -> BoolElt
Given the Jacobian of a hyperelliptic curve over Q
or a number field, and assuming that
the Shafarevich-Tate group of J is finite,
this returns true if and only if the order of the Shafarevich-Tate group
is a square. (Otherwise, the order is twice a square, as shown by
Poonen and Stoll in [PS99]). The order is square
if and only if the number of "deficient" primes for C is even
(see below).
For a genus 2 curve defined over Q or a number field,
this returns true if C is "deficient" at p.
By definition, the curve is deficient if there are no points on C defined over
any extension of odd degree over Qp (when p is a prime)
or over R (when p is 0).
Equivalently, C is deficient if there is no Qp-rational divisor of odd degree on C.
RankBounds(J) : JacHyp -> RngIntElt, RngIntElt
An upper bound, or a lower and an upper bound, on the rank of the Mordell-Weil group
of J, which should be the Jacobian of a hyperelliptic curve over the rationals
or a number field, for which the TwoSelmerGroup can be computed.
Al: MonStgElt Default:
Fields: SetEnum Default:
ReturnFakeSelmerData: BoolElt Default: false
ReturnRawData: BoolElt Default: false
SetVerbose("Selmer", n): Maximum: 3
The 2-Selmer group of the Jacobian of a hyperelliptic curve defined over Q
or a number field. The curve must either have a single point at infinity
(for curves in the simplified form y2=f(x), this is equivalent to f(x) having odd degree),
or else the curve must be of genus 2 and defined over Q.
The algorithm may work better when an integral model of the curve
is given (or better yet, a minimal model).
The Selmer group is returned as a finite abelian group S, together with a
map from S to some affine algebra A, which represents the standard map
from the Selmer group to A^ * /(A^ * )2 or to A^ * /(A^ * )2Q^ * (depending
whether the degree of f is odd or even).
Two separate implementations exist internally in Magma.
(Prior to V2.13 these were available as
the intrinsics TwoSelmerGroup and TwoSelmerGroupData).
The user can specify which implementation is used, by setting the
optional parameter Al to "TwoSelmerGroupOld" or to
"TwoSelmerGroupData"; otherwise, an appropriate choice is made
automatically.
Much of the computation time is usually spent on class group and unit calculations.
These computations can be speeded up by using non-rigorous bounds, and there are two
ways to control which bounds are used. The recommended way is to
preset them using one of the intrinsics SetClassGroupBounds
or SetClassGroupBoundMaps (see Setting the Class Group Bounds Globally).
The other way is to precompute the class groups of the fields involved
(with the desired optional parameters in ClassGroup),
and then pass these fields to TwoSelmerGroup via the optional parameter Fields.
The class group data is stored, and if TwoSelmerGroup
requires a field that is isomorphic to one of the given Fields,
the stored data will automatically be used.
The relevant fields are those given by the roots of f, where y2=f(x)
is the SimplifiedModel of the curve.
When called with ReturnFakeSelmerData, the program returns an additional
item, which specifies the "fake Selmer group" in the terminology of
[Sto01]. (This is only relevant to the even degree case.)
The returned object is a tuple < B1, B2, B3 >, where B1
is a sequence of elements in A that span a subgroup S1 of
A^ * /(A^ * )2, and B2 and B3 are
sequences of integers that span subgroups S2 and S3
of Q^ * /(Q^ * )2. The fake Selmer group S is then
determined by the exact sequence 0 -> S3 -> S2 -> S1 -> S -> 0. See [Sto01] for
a full explanation of this.
When called with ReturnRawData (which is only available in the odd degree case),
the program additionally returns a third item expvecs and a fourth item factorbase.
These specify the images in A^ * /(A^ * )2 of the Selmer group generators (in unexpanded form).
The factorbase is a sequence of elements fj of A, and expvecs is a sequence
of vectors in ZF, where F is the number of elements in the factorbase.
The image in A^ * /(A^ * )2 of the ith Selmer group generator is then the
sum over j of fjej where (ej) is the ith exponent vector.
In this example, we find out as much as we can
about the Mordell-Weil group of the Jacobian of
y2 = x(x + 13442)(x + 108152)(x + 54062)(x + 27002).
First define the curve and its Jacobian:
> _<x> := PolynomialRing(Rationals());
> pol := x*(x+1344^2)*(x+10815^2)*(x+5406^2)*(x+2700^2);
> C := HyperellipticCurve( pol );
> J := Jacobian(C);
> J;
Jacobian of Hyperelliptic Curve defined by
y^2 = x^5 + 155285397*x^4 + 4761213301312596*x^3 + 33018689414366470785600*x^2
+ 45012299099933971943424000000*x over Rational Field
We can search for points on C (with x-coordinate up to Bound):
> ptsC := Points(C : Bound := 10^6);
> ptsC;
{@ (1 : 0 : 0), (0 : 0 : 1), (43264 : -44828581639628800 : 1),
(43264 : 44828581639628800 : 1) @}
> pointAtInfinity := ptsC[1];
This pointAtInfinity (1 : 0 : 0) might not seem to lie on C, but
recall that in Magma, a hyperelliptic curve lives in a weighted projective plane.
We can also search for points on the Jacobian, which takes longer:
> time ptsJ := Points(J : Bound := 2000);
Time: 0.670
> ptsJ;
{@ (1, 0, 0), (x, 0, 1) @}
The notation for points on J is explained in the section
"Points on the Jacobian" in this chapter.
The points appearing above are the trivial point on J, and the point
corresponding to the divisor
(0:0:1) - (1:0:0)
on C.
> ptsJ[1] eq J!0; // Is the first point equal to 0 on J?
true
> Order( ptsJ[2] );
2
So far, we have only found some trivial points on J.
In fact, we can see from the equation that J has full 2-torsion, which we now confirm.
> Jtors, map := TorsionSubgroup(J);
> Jtors;
Abelian Group isomorphic to Z/2 + Z/2 + Z/2 + Z/4
Defined on 4 generators
Relations:
2*P[1] = 0
2*P[2] = 0
2*P[3] = 0
4*P[4] = 0
Jtors is an abstract group, and map converts
elements of Jtors to actual points on J.
Here are the generator of the Z/4 and its inverse.
> map(Jtors.4);
> map(3*Jtors.4);
(x^2 + 32963094*x - 212161021632000, 94792247622*x - 2005558137487296000, 2)
(x^2 + 32963094*x - 212161021632000, -94792247622*x + 2005558137487296000, 2)
Looking at the points on C we found above,
the third of them looks nontrivial, so we find its order on J:
> P := ptsC[3];
> PJ := J![ P, pointAtInfinity ];
> PJ;
(x - 43264, -44828581639628800, 1)
> Order(PJ);
0
This means PJ has infinite order on J.
Now we do two-descent on J:
> #TwoSelmerGroup(J);
64
We already knew that J(Q)[2] has order 16, and that the rank of J(Q) is at least 1,
so we now know that the rank is either 1 or 2.
We now ask whether the order of Sha(J) is a square or twice a square
(assuming it is finite):
> HasSquareSha(J);
true
It follows (assuming Sha(J) is finite)
that Sha(J) has odd order, and that J(Q) has rank 2,
even though the other generator of J(Q) is probably not easy to find,
especially if does not come from a point on C.
For more examples of Selmer group computations, see the next section.
We produce some Jacobians for which the order of the Tate-Shafarevich
group is twice a square (assuming it is finite).
We then observe how this affects the rank bounds.
A good source of examples are curves
y2 = 3(x6 - x2 + a) for a = 1 mod 3,
since these curves are "deficient" at 3 (for the definition, see above);
this can be proved by elementary arguments.
We now list those (for a up to 50) which have nonsquare Sha.
> _<x> := PolynomialRing(Rationals());
> for a := 1 to 50 do
> if a mod 3 eq 1 then
> Ca := HyperellipticCurve( 3*(x^6-x^2+a) );
> assert IsDeficient(Ca,3);
> // (This causes a failure if our assertion is wrong.)
> if not HasSquareSha(Jacobian(Ca)) then print Ca; end if;
> end if;
> end for;
Hyperelliptic Curve defined by y^2 = 3*x^6 - 3*x^2 + 12 over Rational Field
Hyperelliptic Curve defined by y^2 = 3*x^6 - 3*x^2 + 21 over Rational Field
Hyperelliptic Curve defined by y^2 = 3*x^6 - 3*x^2 + 30 over Rational Field
Hyperelliptic Curve defined by y^2 = 3*x^6 - 3*x^2 + 48 over Rational Field
Hyperelliptic Curve defined by y^2 = 3*x^6 - 3*x^2 + 57 over Rational Field
Hyperelliptic Curve defined by y^2 = 3*x^6 - 3*x^2 + 66 over Rational Field
Hyperelliptic Curve defined by y^2 = 3*x^6 - 3*x^2 + 84 over Rational Field
Hyperelliptic Curve defined by y^2 = 3*x^6 - 3*x^2 + 93 over Rational Field
Hyperelliptic Curve defined by y^2 = 3*x^6 - 3*x^2 + 102 over Rational Field
Hyperelliptic Curve defined by y^2 = 3*x^6 - 3*x^2 + 129 over Rational Field
Hyperelliptic Curve defined by y^2 = 3*x^6 - 3*x^2 + 138 over Rational Field
Aside: we could have tried simply y2 = 3(x6 + a) for a = 1 mod 3,
but this won't produce any examples: it's a cute exercise to show that
for these curves, the number of deficient primes is always even.
Now consider the Mordell-Weil rank of the second curve listed (where a=7),
> C7 := HyperellipticCurve( 3*(x^6-x^2+7) );
> J := Jacobian(C7);
> #TwoTorsionSubgroup(J);
1
> #TwoSelmerGroup(J);
2
> RankBound(J);
0
There is no nontrivial 2-torsion in J(Q), and the Selmer group has order 2.
The program has checked that the order of the Tate-Shafarevich group is twice
a square (hence the 2-rank of Sha is exactly 1), and therefore it has returned
a RankBound indicating that J(Q) has rank 0.
This rank bound is unconditional. In fact, the computation
proves that there is a subgroup Z/2 in Sha modulo the subgroup of infinitely
divisible elements; therefore one may also deduce unconditionally that
the 2-power part of Sha is finite cyclic (since if there was an infinitely
2-divisible part, it would still contribute to the 2-Selmer group).
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|