[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Conic Curves

In this section we discuss creation and the basic attributes of conic curves. See Section Finding Points on Conics for functions which find points on conics and construct parametrisations of conics.

Subsections

Construction of a Conic

A conic is defined by a polynomial of degree 2 in some two-dimensional ambient space. The ambient can be either an affine or a projective space.

Conic(X,f:parameters) : Sch, RngMPolElt -> CrvCon
    Prime: BoolElt                      Default: false
    Maxtrial: RngInt                    Default: 13
Construct the conic C defined by the polynomial f in the ambient space X. The ambient X can de defined over any ring. However, the most specialised algorithms for finding points of conics require that X be defined over the integers or the rationals, or over a field such that the coefficients of f are rational numbers.

If the defining polynomial f of C is in diagonal form and if it is known that its coefficients are prime then one can set the parameter Prime. This can be of particular relevance when searching for a solution of the conic as one needs to factorize the coefficients of C's reduced form.

It is possible to set the parameter Maxtrial which sets the highest prime for which to perform a trial division. Trial division is used in conjunction with partial factorization when searching for a solution. More on this in Section Finding Points on Conics.

IsConic(X) : Sch -> BoolElt, CrvCon
Returns true if and only if X is a conic. If true returns X as a CrvCon object.

Example CrvCon_Creation (H84E5)

The following statements create two conics: C is defined over a projective space over a number field, and Caff is defined over an affine space over the integers. The first thing we do here is to create a number field which will be the base field of the conic.

> Q := RationalField();
> PU<x1> := PolynomialRing(Q);
> h := 119/44*x1^2 - 908/555*x1 + 723/259;
> IsIrreducible(h);
true
> NF := NumberField(h);
Next we make a two-dimensional projective space over the number field NF and create a conic in that space.

> P<x,y,z> := ProjectiveSpace(NF,2);
> f := 1/11*34*x^2 - 1/3629*28523*x*y - 1/32375*41003*x*z
>            - 1/697*953*y^2 - 1/7656*3347*y*z - 1/852*245*z^2;
> C := Conic(P, f);    
> C;
Conic over NF defined by
34/11*x^2 - 28523/3629*x*y - 41003/32375*x*z - 953/697*y^2 - 3347/7656*y*z - 
    245/852*z^2
As a second example, we create a conic in an affine space over the integers.

> Z := Integers();
> A<x2,y2> := AffineSpace(Z,2); 
> Caff := Conic(A, 171*x2^2 - 758*x2*y2 + 213*x2 + 399*y2^2 - 731*y2);
> Caff;
Conic over Integer Ring defined by
171*x2^2 - 758*x2*y2 + 213*x2 + 399*y2^2 - 731*y2

Access Functions

The functions described here provide access to basic information stored for a conic C.

Polynomial(C) : CrvCon -> RngMPolElt
Equation(C) : CrvCon -> RngMPolElt
The defining polynomial of the conic C. This intrinsic is inherited from the general scheme machinery.
LegendreEquation(C) : CrvCon -> RngMPolElt, ModMatRngElt
DiagonalForm(C) : CrvCon -> RngMPolElt, ModMatRngElt
The Legendre equation of the conic C, that is, the diagonal form of the defining polynomial of C. Also returned as the second value is the matrix of the transformation of coordinates taking C to the special form.

Except when the base ring of C is the integers Z, both the polynomial and the matrix live in BaseRing(C). When BaseRing(C) is Z, then the polynomial and the matrix are given in Q.

ReducedForm(C) : CrvCon -> RngMPolElt, ModMatRngElt
The reduced form of the Legendre equation of the conic C, that is, the diagonal form whose coefficients have been made pairwise coprime and square-free. Also returned as the second value is the matrix of the transformation of coordinates taking C to the special form.

As for LegendreEquation, both the polynomial and the matrix live in BaseRing(C) except when BaseRing(C) is Z, in which case the polynomial and the matrix are given in Q.

HasSolubilityCertificate(C) : CrvCon -> BoolElt, SeqEnum
Returns true if and only if the conic C has a solubility certificate. If true, returns this certificate as the second value.

If a x^2 + b y^2 + c z^2 is C's reduced form then the solubility certificate of C is given by [k_1, k_2, k_3] such that

k_1^2 = - bc (( mod) a), k_2^2 = - ca (( mod) b) ( and) k_3^2 = - ab (( mod) c).

The local solubility criterion says that as long as the coefficients of the Legendre equation of C do not all have the same sign (the obvious first obstruction to the existence of a solution) then C has a solution if and only if a solubility certificate exists.

HasSolubilityCertificate(S) : SeqEnum[RngIntElt] -> BoolElt, SeqEnum
    Prime: BoolElt                      Default: false
Returns true if and only if S = [a, b, c] has a solubility certificate. If true, returns this certificate as the second value. Setting Prime to true bypasses factorizing a, b, and c.
SolubilityCertificate(C) : CrvCon -> SeqEnum
A sequence of three integers containing the solubility certificate of the conic C, if it exists.

Example CrvCon_Access (H84E6)

The following statements give simple examples of the use of some of the access functions. They use the same conics as defined in Section Construction of a Conic, but we repeat their definition for clarity.

> Q := RationalField();
> PU<x1> := PolynomialRing(Q);
> NF := NumberField(119/44*x1^2 - 908/555*x1 + 723/259);
> P<x,y,z> := ProjectiveSpace(NF,2);
> f := 1/11*34*x^2 - 1/3629*28523*x*y - 1/32375*41003*x*z
>            - 1/697*953*y^2 - 1/7656*3347*y*z - 1/852*245*z^2;
> C := Conic(P, f);
> LegendreEquation(C);
98974*$.1^2 - 12409257568917902*$.2^2 - 
  31365148370980073527421441401780154556880127002*$.3^2
> ReducedForm(C);
5140537518193*$.1^2 - 41*$.2^2 - 310766637002701863989569733062051*$.3^2
> HasSolubilityCertificate(C);
true
The next example shows that, although it is more mathematically correct to think of conics as being projective curves, the machinery here works even in the case of affine curves.

> A<x2,y2> := AffineSpace(Integers(),2);
> Caff := Conic(A, 171*x2^2 - 758*x2*y2 + 213*x2 + 399*y2^2 - 731*y2);
> LegendreEquation(Caff);
171*$.1^2 - 12895452*$.2^2 - 161097225936
> ReducedForm(Caff);
18853*$.1^2 - $.2^2 - 10147083
> HasSolubilityCertificate(Caff);
true

 [Next][Prev] [Right] [Left] [Up] [Index] [Root]