> P<x,y,z>:=ProjectiveSpace(Rationals(),2);
> C:=Curve(P,x^3+9*y^3+73*z^3);
> time PointsCubicModel(C,10^4);
[ (31/2 : -15/2 : 1), (-353/824 : -1655/824 : 1), (-463/106 : 111/106
: 1), (-1 : -2 : 1), (-2347/526 : 635/526 : 1), (-206/5 : 99/5 : 1),
(22/5 : -13/5 : 1), (-43/16 : -29/16 : 1), (-25 : 12 : 1), (-4493/1076
: -299/1076 : 1), (-215/47 : 64/47 : 1), (-631/151 : -22/151 : 1), (-4
: -1 : 1), (278/193 : -393/193 : 1), (-328/55 : 137/55 : 1), (311/88 :
-207/88 : 1), (145/71 : -148/71 : 1) ]
Time: 2.790
Let F be a global field (the rationals, a number field or a function field)
with ring of integers OF.
Given a curve C over F with integral defining equations,
the associated arithmetic surface is the scheme of relative dimension 1
over (Spec) OF defined by the same equations.
In Magma, one can compute a regular model of the arithmetic surface locally
at a given prime of OF, and extract information from it.
The `model' is a data structure which contains several affine patches with
maps between them, as well as the components of the special fibre, and
other data. This raw data is quite bulky; the interesting information
is accessed via the functions described in this section.
This functionality may be expanded (on request) in later versions.
The Magma category for these data structures is CrvRegModel.
Caveat: in the initial implementation there are some restrictions on which curves,
and which fields, can be handled. These restrictions are not documented here,
and may be lifted in the near future.
SetVerbose("RegularModel", n): Maximum: 2
This computes a regular model of the curve C at the prime P.
Here C is a curve over a field F (the rationals, a number field
or a univariate rational function field), and P is a prime of the maximal order
OF of F (given as an element or as an ideal). The defining equations
of C must have integral coefficients, and the reduction of C modulo P must have
dimension 1.
The function returns a model of C: this consists of several affine patches,
given by integral equations, which together describe a scheme over OF whose
generic fibre is isomorphic to C. (The gluing maps, and the isomorphism to C,
are part of the stored data).
The model is regular on the special fibre above P.
However it is not necessarily a minimal model.
In some cases, the function may replace F by a finite extension L/F
in which P is unramified, and return a regular model for the base change CL.
(This occurs when there is a non-regular point or component in the special fibre
that is not geometrically irreducible over the residue field.) When this occurs,
a warning message is printed.
Given a regular model, this returns a matrix whose entries are the intersection
multiplicities of the (reduced, irreducible) components of the special fibre.
Given a regular model, this returns a sequence giving the multiplicities of the components.
The components of the model always come in the same order.
Given a regular model of a curve C at a prime P, this returns (as an abstract
abelian group) the group of components of the Neron model of the Jacobian of C
over the completion at P.
(This is computed from the IntersectionMatrix of the model.)
Given a regular model of a curve C over a global field F, and a point
x ∈C(F), this lifts x to a point on the regular model. More precisely,
it finds a patch of the model, and a point on the generic fibre of that patch which
maps to x (under the isomorphism between the generic fibres of M and C).
Three objects are returned: a sequence giving coordinates of the point, a sequence
containing the equations of the relevant patch, and (for internal use) the `index'
of the patch.
Minimization and reduction is a search for a linear transformation, that leads to
a nice equation.
The first step is called minimization. It searches for linear changes of the coordinates
that result in models with smaller invariants. This is done locally for each prime of
sufficiently bad reduction.
Then the reduction step searches for a unimodular transformation that results in
smaller coefficients.
Here, we describe the routines for the minimization and reduction
for plane curves of degree at least 3.
MinimizeReduce(C) : CrvPln -> CrvPln, AlgMatElt
AdHocOnly: BoolElt Default: false
Given a plane curve C or equivalently a ternary form F, this function returns an isomorphic model
with small coefficients and the transformation matrix used.
The computation is done by calling the minimization and the reduction function described in this section.
SetVerbose("Minimisation", n): Maximum: 3
Given a plane curve represented by a ternary form, this function returns a form representing
a p-minimal model of the curve and the transformation matrix used.
AdHocRed: BoolElt Default: false
Given a plane curve represented by a ternary form, this function returns a form representing
a model of the curve that is p-minimal for all primes p and the transformation matrix used.
If AdHocRed is set, the function applies a reduction steps to intermediate results.
ReducePlaneCurve(f) : MPolElt -> RngMPolElt, Mtrx
ReduceTernaryForm(f) : MPolElt -> RngMPolElt, Mtrx
AdHocOnly: BoolElt Default: false
SetVerbose("Reduction", n): Maximum: 3
Given a ternary form f or a plane curve C of degree > 2 with integer or rational coefficients.
A new form or curve with smaller coefficients and the unimodular transformation matrix used are returend.
If AdHocOnly is set, only a quick and simple reduction is done. Otherwise,
the routine computes a covariant cluster and applies cluster reduction to it.
The reduction of point clusters can be called directly as follows:
ReduceCluster(C) : Clstr -> Clstr, Mtrx, Bool
eps: FldReElt Default: 1e - 6
c: FldReElt Default: 1
SetVerbose("ClusterReduction", n): Maximum: 3
Here X is a sequence of n-dimensional vectors of complex numbers
or C is a cluster of points in projective space.
The routine returns the cluster in a better embedded form,
the transformation matrix applied and its inverse.
Optional arguments: eps is the bound used to decide whether a
floating point number is zero, and c is the initial value of the
acceleration factor.
This routine can be used for reduction of any variety that has a finite and stable
set of special points, by using the transformation that reduces the point set.
The algorithm is due to Stoll (see [Sto11]).
Here we test the code by taking a bad embedding and a of curve.
> _<x,y,z> := PolynomialRing(Integers(), 3);
> C := -3*x^4 + 7*x^3*y - 2*x^3*z + 6*x^2*y^2 + 9*x^2*y*z - 9*x^2*z^2
> + 10*x*y^3 - 7*x*y^2*z + 5*x*y*z^2 - 6*x*z^3 - 3*y^4 + 5*y^3*z
> - 3*y^2*z^2 + 4*y*z^3 + 6*z^4;
> C2 := Evaluate(C,[45*x+346*y,74*y+43*z,62324*z+3462*x]);
> C2;
850482855369981*x^4 - 77028319604430*x^3*y + 61459466820119559*x^3*z -
11625449190228*x^2*y^2 - 4102113209795298*x^2*y*z + 1665400384362332772*x^2*z^2
- 62468022936*x*y^3 - 417499281622764*x*y^2*z - 72808467360772908*x*y*z^2 +
20055880711976359332*x*z^3 - 16293798512*y^4 - 875035770696*y^3*z -
3749491014537304*y^2*z^2 - 430694749052979580*y*z^3 + 90567449117290511049*z^4
> MinRedTernaryForm(C2);
-3*x^4 + 10*x^3*y + 5*x^3*z + 6*x^2*y^2 - 7*x^2*y*z - 3*x^2*z^2 + 7*x*y^3 +
9*x*y^2*z + 5*x*y*z^2 + 4*x*z^3 - 3*y^4 - 2*y^3*z - 9*y^2*z^2 - 6*y*z^3 +
6*z^4
[-21564104 4611976 14878]
[ 2804580 148866 -1935]
[ 1197852 -256188 3330]
4503096885342604502174706246410496
We do not get the initial curve, but we get a curve with coefficients of the same size.
[Next][Prev] [Right] [Left] [Up] [Index] [Root]