COMPUTATIONAL SOLUTIONS OF SOME PROBLEMS ABOUT ALGEBRAIC CURVES

MASSIMO GIULIETTI

Abstract. We report some MAGMA instructions about algebraic curves defined over a finite field. The sections below are logically independent; in the former we treat some global properties, while the latter is about local properties.

1. Singular Rational Points

Let K be the finite field of order q = p^{r} and let F be its algebraic closure. A plane algebraic curve C of P G(2, F) defined over K is the projective algebraic set defined by the principal ideal generated by a homogeneous polynomial f of K[x_{0}, x_{1}, x_{2}] (briefly C = V (f)). Let C(K) be the set of the K-rational points of C, S the set of its singular points and S(K) the set of its singular K-rational points. The following instructions define the environment.

  K:=GF(q);
  P,V,L:=ProjectivePlane(q);
  W:=VectorSpace(K,3);
  R<x0,x1,x2>:=PolynomialRing(K,3,"lex");

Suppose that f is defined as a homogeneous element of R .

1.1. How many K-rational points? We count the number of K-rational points of C and we call it NRatPts .

  NRatPts:=0;
  for pt in V do
    if (Evaluate(f,[pt[1],pt[2],pt[3]]) eq 0) then
      NRatPts:=NRatPts+1;
    end if;
  end for;

The research was supported by Italian MURST progetto 40% Strutture Geometriche, Combinatoria e loro applicazioni, by CNR Progetto strategico Applicazioni della matematica per la tecnologia e la societá sottoprogetto Calcolo Simbolico and by GNSAGA.

2 MASSIMO GIULIETTI

1.2. What are the singular K-rational points? We find the set of the singular K-rational points of C and we call it RatSgPt ; we put these points in a sequence called RSP .

f0:=Derivative(f,x0);
f1:=Derivative(f,x1);
f2:=Derivative(f,x2);
RatSgPt:={};
for pt in V do
if (Evaluate(f0,[pt[1],pt[2],pt[3]]) eq 0) and
            (Evaluate(f1,[pt[1],pt[2],pt[3]]) eq 0) and
            (Evaluate(f2,[pt[1],pt[2],pt[3]]) eq 0) then
  RatSgPt:=RatSgPt join {pt};
end if;
end for;
RSP:=SetToSequence(RatSgPt);

1.3. Do there exist singular non-K-rational points? The boolean variable AreAllSg will indicate whether all the singular points are K-rational or not.

1.3.1. Case 1: S(K) = ∅. We establish whether S = ∅ or not, i. e. whether V (M) = ∅ or not, where M is the ideal of F [x_{0}, x_{1}, x_{2}] generated by the derivatives of f. We use Hilbert’s Nullstellensatz.

M:=ideal<R|f0,f1,f2>;
if #RSP eq 0 then
BasM:=GroebnerBasis(M);
B1:=false;
for g in BasM do
  B1:=B1 or (Evaluate(LeadingTerm(g),[1,0,0]) ne 0);
end for;
B2:=false;
for g in BasM do
  B2:=B2 or (Evaluate(LeadingTerm(g),[0,1,0]) ne 0);
end for;
B3:=false;
for g in BasM do
  B3:=B3 or (Evaluate(LeadingTerm(g),[0,0,1]) ne 0);
end for;
AreAllSg:=B1 and B2 and B3;
end if;

COMPUTATIONAL SOLUTIONS OF SOME PROBLEMS ABOUT ALGEBRAIC CURVES 3

1.3.2. Case 2: S(K) ≠ ∅. We establish whether S ⊆ S(K) or not. Observe that S(K) = V (J) and I(S(K)) = J, where J := ⋂_{P ∈S(K)} J_{P} and

J_{P} := \{ \begin{matrix}< a_{0}x_{1} − a_{1}x_{0}, a_{0}x_{2} − a_{2}x_{0} >, & se a_{0} ≠ 0 \\ < a_{1}x_{0} − a_{0}x_{1}, a_{1}x_{2} − a_{2}x_{1} >, & se a_{1} ≠ 0, a_{0} = 0 \\ < a_{2}x_{0} − a_{0}x_{2}, a_{2}x_{1} − a_{1}x_{2} >, & se a_{2} ≠ 0, a_{0} = 0, a_{1} = 0 \end{matrix} ,

(P = [a_{0}, a_{1}, a_{2}]). So S ⊆ S(K) ⇔ V (M) ⊆ V (J) ⇔ I(V (J)) ⊆ I(V (M)) ⇔ J ⊆ \sqrt{M} by Hilbert’s Nullstellensatz. The following instructions determine J; we construct a procedure Intersect which compute the intersection between two ideals by using Groebner Basis (see [3]).

T<t,y0,y1,y2>:=PolynomialRing(K,4,"lex");
im:=hom<R->T|y0,y1,y2>;
imin:=hom<T->R|1,x0,x1,x2>;
procedure Intersect(J1,J2,~J1meetJ2);
Jt:={T|};
for a in J1 do
  Jt:=Jt join {t*im(a)};
end for;
for a in J2 do
  Jt:=Jt join {(1-t)*im(a)};
end for;
Jtt:=SetToSequence(Jt);
JJ:=ideal<T|Jtt>;
G:=GroebnerBasis(JJ);
J1meetJ2:={R|};
for g in G do
  if Evaluate(LeadingTerm(g),[0,1,1,1]) ne 0 then
    J1meetJ2:=J1meetJ2 join {R!imin(g)};
  end if;
end for;
end procedure;
if #RSP gt 0 then
J:=[R|1];
JmeetL:={R|}
for P in RSP do
  if P[1] ne 0 then
    l1:=(P[1]*x1-P[2]*x0);
    l2:=(P[1]*x2-P[3]*x0);

4 MASSIMO GIULIETTI

end if;
if (P[1] eq 0) and (P[2] ne 0) then
  l1:=(P[2]*x0-P[1]*x1);
  l2:=(P[2]*x2-P[3]*x1);
end if;
if (P[1] eq 0) and (P[2] eq 0) then
  l1:=(P[3]*x0-P[1]*x2);
  l2:=(P[3]*x1-P[2]*x2);
end if;
L:=[R|l1,l2];
Intersect(J,L,~JmeetL);
J:=SetToSequence(JmeetL);
end for;

We finally establish whether J ⊆ \sqrt{M}.

B4:=true;
for h in J  do
if not IsInRadical(h,M) then
  B4:=false;
  break;
end if;
end for;
AreAllSg:=B4;
end if;

2. Local Properties

Let K be the finite field of order q = p^{r} and let F be its algebraic closure. A plane algebraic curve C of P G(2, F) defined over K is the projective algebraic set defined by the principal ideal generated by a homogeneous polynomial f of K[x_{0}, x_{1}, x_{2}] (briefly C = V (f)). Let C(K) be the set of the K-rational points of C, S the set of its singular points and S(K) the set of its singular K-rational points. The following instructions define the environment.

K:=GF(q);
P,V,L:=ProjectivePlane(q);
W:=VectorSpace(K,3);
R<x0,x1,x2>:=PolynomialRing(K,3,"lex");

Suppose that f is defined as a homogeneous element of R .

COMPUTATIONAL SOLUTIONS OF SOME PROBLEMS ABOUT ALGEBRAIC CURVES 5

2.1. What are the singular K-rational points? We find the set of the singular K-rational points of C and we call it RatSgPt ; we put these points in a sequence called RSP .

  f0:=Derivative(f,x0);
  f1:=Derivative(f,x1);
  f2:=Derivative(f,x2);
  RatSgPt:={};
  for pt in V do
    if (Evaluate(f0,[pt[1],pt[2],pt[3]]) eq 0) and
                 (Evaluate(f1,[pt[1],pt[2],pt[3]]) eq 0) and
                 (Evaluate(f2,[pt[1],pt[2],pt[3]]) eq 0) then
       RatSgPt:=RatSgPt join {pt};
    end if;
  end for;
  RSP:=SetToSequence(RatSgPt);

2.2. The singular K-rational points are ordinary singularities or not? We will construct a procedure Ordinary which establish whether a singular K-rational point is an ordinary singularity or not. Then we can easily say if all the K-rational points are ordinary:

  AreAllOrd:=true;
  for sp in RSP do
    IsOrdSg:=false;
    Ordinary(sp,~IsOrdSg);
    if not IsOrdSg then
      AreAllOrd:=false;
      break;
    end if;
  end for;

2.2.1. A singular K-rational poiont is an ordinary singularity or not? We write the procedure we promised:

  procedure Ordinary(sp,~IsOrdSg);

First of all, we change the frame of reference bringing the point sp to the origin [0, 0, 1]; the new polynomial of C will be called ff.

    if sp[1] ne 0 then
      ff:=Evaluate(f,[sp[1]*x0,x1+sp[2]*x0,x2+sp[3]*x0]);

6 MASSIMO GIULIETTI

end if;
if (sp[1] eq 0) and (sp[2] ne 0) then
  ff:=Evaluate(f,[x1,sp[2]*x0,x2+sp[3]*x0]);
end if;
if (sp[1] eq 0) and (sp[2] eq 0) then
  ff:=Evaluate(f,[x1,x2,sp[3]*x0]);
end if;

We now find the monomials of ff that have x0 to the highest power. Their sum will be called ProdTg.

ProdTg:=LeadingTerm(ff);
comolt:=Degree(prodtg,x0);
fftemp:=ff-prodtg;
B5:=true;
while B5 do
  if Degree(LeadingTerm(fftemp),x0) eq comolt then
    ProdTg:=ProdTg+LeadingTerm(fftemp);
    fftemp:=fftemp-LeadingTerm(fftemp);
                                       else
    B7:=false;
  end if;
end while;

We finally write ProdTg in an affine form and we check whether it has multiple factors or not.

ProdTgAff:=Evaluate(ProdTg,[1,x1,x2]);
B6:=false;
d1:=Discriminant(ProdTgAff,x1);
d2:=Discriminant(ProdTgAff,x2);
if (d1 ne 0) and (d2 ne 0) then
  B6:=true;
end if;
IsOrdSg:=B6;
end procedure;

References

[1] W.BOSMA, S.CANNON, Handbook of MAGMA Functions, University of Sydney, 1996.

[2] W.BOSMA, S.CANNON, C.PLAYOUST, A.STEEL, Solving problems with MAGMA, University of Sydney, 1996.

[3] D. COX - J. LITTLE - D. O‘SHEA, Ideals, Varieties, and Algorithms, Springer-Verlag, 1991.

[4] W. FULTON, Algebraic Curves, Addison-Wesley, 1969.

[5] J.W.P. HIRSCHFELD, Projective Geometries over Finite Fields, Oxford, Clarendon Press, 1979.

[6] A. SEIDENBERG, Elements of the theory of Algebraic Curves, Addison-Wesley, 1968.

[7] H. STICHTENOTH, Algebraic Function Fields and Codes, Springer-Verlag, 1993.

[8] R.J. WALKER, Algebraic curves, Springer-Verlag, 1978.