Version a1-2 January 14, 1998
The Projective Noether Package User’s Manual
Gr´ egoire Lecerf
Laboratoire GAGE, ´Ecole Polytechnique, F-91128 Palaiseau, France [email protected]
Abstract
LetV be a projective variety given by a list of homogeneous polynomials. We are interested in computing its dimensionr. So far the most efficient implemented algorithms rely on Gr¨obner basis computations. The present paper reports on an implementation done by M. Giusti1, G. Lecerf2, Jo¨el Marchand3 and B.
Salvy4, at the laboratory GAGE5 within the TERA6 project of new kinds of algorithms based on an evaluation strategy.
1M. Giusti:[email protected]
2G. Lecerf:[email protected]
3J. Marchand:[email protected]
4B. Salvy:[email protected]
5Laboratoire GAGE, ´Ecole Polytechnique, F-91128 Palaiseau, France
6Turbo Evaluation Rapid Algorithms. http://medicis.polytechnique.fr/tera or http://hilbert.matesco.unican.es/tera
Contents
1 Introduction 2
2 Algorithm 2
2.1 Mathematical description of the algorithm . . . . 2
2.2 Implementation of the algorithm . . . . 3
3 The Projective Noether Package 6 3.1 berkowitz. . . . 6
3.2 detBerkowitz. . . . 7
3.3 projectiveNoether . . . . 8
3.4 projectiveNullstellensatz . . . . 9
4 The Polynomial System Families Package 10 4.1 hcyclic . . . . 10
4.2 hicyclic . . . . 11
4.3 sacados . . . . 12
5 A full example 13
A Installation guide 14
1 Introduction
The present paper reports on the implementation done by Marc Giusti, Gr´egoire Lecerf, Jo¨el Marchand and Bruno Salvy at the laboratory GAGE and INRIA Rocquencourt within the TERA project. The package provides some functions to compute upper bounds on the dimension of a projective variety and relies mainly on the algorithm described in [3], section 4.
This package has been written in Maple7 in order to take advantage of its internal data structures: the Directed Acyclic Graphs (DAG).
The main features of this package are:
1. Portability: generic Unix station running Maple.
2. The complete source is readable and quite well-documented. Each function has a full online Maple help and can be used in the same way as Maple’s built in functions.
3. The installation requires almost no knowledge of the Unix system. The distribution provides a full installation guide.
4. The package provides some generators for polynomial system families.
5. The package is available via anonymousftp:
ftp://medicis.polytechnique.fr/pub/tera/soft/pnp/.
This package is an experimental prototype for showing one possible way for a low level implementation.
The manual contains the description of the algorithm implemented and a full documentation on each function. It also describes some families of polynomial systems which have been used to test it.
First, we recall the theoretical results of [3], then describe the different imple- mentations. The description of each function of the package is given in section 3 and 4. In section 5 we show a full example session using the package. Appendix A is devoted to the installation procedure.
Acknowledgment: I thank K. H¨agele8, for his comments on this text. Any comment, bug report or proposition will be considered with great attention.
2 Algorithm
2.1 Mathematical description of the algorithm
Letk be an entire9, infinite and commutative ring, k0 be its field of fractions.
Letk0 bet an algebraic closure ofk0. Letf1, . . . , fsbe a system of non constant
7Maple is a trademark of Waterloo Maple Software.
8Departamento de Matem´aticas, Estad´ıstica y Computaci´on, Facultad de Ciencias, Univer- sidad de Cantabria, E-39071 SANTANDER, Spain, email: [email protected]
9An entire ring is also called an integral domain.
homogeneous polynomials ink[x0, . . . , xn]. We denote byV =V(f1, . . . , fs) the projective variety defined by f1, . . . , fs in P =P(k0)n and by dthe maximum of the degrees of the fi. The variables x0, . . . , xm are said to be dependent with respect to V if (f1, . . . , fs)∩k[x0, . . . , xm] is not (0). Otherwise they are independent. xm+1, . . . , xn are said to be in Noetherian position with respect toV andx0, . . . , xmif the canonical homomorphism
k[x0, . . . , xm]−→k[x0, . . . , xn]/(f1, . . . , fs)
is an integral ring extension. And ifx0, . . . , xmare independent we say thatV is in Noetherian position.
We recall the algorithm of [3], section 4, to put the varietyV into Noetherian position with respect to the variablesx0, . . . , xn.
The algorithm is incremental on the variablesx0, . . . , xn. We enter then−mth iteration with the condition: xm+1, . . . , xn are already in Noetherian position with respect toV andx0, . . . , xm. We want to test ifx0, . . . , xmare dependent or not. If they are dependent we want to find a linear change of variables leaving unchanged xm+1, . . . , xn such that in the new coordinates y0, . . . , yn, the variablesym, ym+1, . . . , yn are in Noetherian position.
Letz be a new variable. Let R(m) be k[x0, . . . , xm] andK(m) its field of frac- tions. We denote byfi(m) the polynomial fi(zx0, zx1, . . . , zxm, xm+1, . . . , xn).
The later is an homogeneous polynomial in R(m)[xm+1, . . . , xn, z]. Let W be the projective variety in Pn−m(Km) defined by f1(m), . . . , fs(m). We have the criterium for dependency:
Assume thatxm+1, . . . , xn are in Noetherian position with respect to V. The variablesx0, . . . , xmare dependent with respect toV if and only ifW is empty.
We recall the main statement of [3], p.27:
Theorem 1: After a suitable preprocessing, one can compute the dimensionr of V in time sO(1)dO(n) with a well parallelizable algorithm without divisions.
Moreover, one can find a non singular(n+ 1, n+ 1)matrixM with coefficients ink such that, ify0, . . . , yn are the new variables M(x0, . . . , xn),y0, . . . , yr are independent with respect toV. The new variablesyi are in Noetherian position.
The next part of this section shows the implementations of this algorithm.
2.2 Implementation of the algorithm
Here is the practical description of the algorithm implemented in Maple. Ac- cording to the above notations,kequals toZfrom now.
• Input:
– sys: a list of homogeneous polynomialsf1, . . . , fs.
– lvars: the list of the variables of the above polynomialsx0, x1, . . . , xn. – smax: an integer bound on the height of the random points used.
– atmax: an integer specifying the maximum number of random points used to decide whether a polynomial is zero or not (discussed below).
– strategy: a string choosing the method used to determine the di- mension: BDE, EDor EG(discussed below).
– chvars: (optional) a global variable passed by reference.
• Output: An upper bound on the dimension of the projective variety V given bysys. chvarscontains the change of variables.
• Algorithm:
projectiveNoether:= proc(sys,lvar,smax,atmax,strategy,chvars)
# Initialisation step localsys:= sys chvars:= lvars
# Iteration step
for m from n by -1 to 0 do localpar:= [x0,...,xm]
localvar:= [x.(m+1),...,xn]
pivot:= findPivot[strategy](localsys, localpar, localvar, smax, atmax);
if pivot=FAIL then RETURN(m) fi
localsys:= changeOfVariables(localsys, localpar, pivot) chvars:= changeOfVariables(chvars, localpar, pivot) od
RETURN(-1) end
Following the above algorithm, which consists just of one main loop, we have the following situation: At each step of the looplocalvaris a set of variables already in Noetherian position with respect to the variables oflocalpar. The question is: are the variables oflocalparindependent or not ? This is decided by the functionfindPivot.
The Subroutines
Letf1, . . . , fs be the homogeneous polynomials of localsys. At themth step localparisx0, . . . , xmandlocalvarisxm+1, . . . , xn. fi(m)=fi(x0·z, . . . , xm· z, xm+1, . . . , xn). Following the criterium for dependency, the dependency of
localparcan be checked applying the projective Nullstellensatz to thefi(m). Ifais the point (a0, a1, . . . , am),spec(fi(m), a) denotes the polynomial
fi(a0z, a1z, . . . , amz, xm+1, . . . , xn) It is the specialization offi(m) ona.
The criterium for dependency becomes:
The variableslocalparare dependent if and only if there exists a point(a0, . . . ,- am−1,1)such that the spec(fi(m), a)defines an empty projective variety.
So, findPivot gives such a point, called pivot. It is found by successively choosing a point in [0..smax−1]m×1 at random. The first point tested is always (0, . . . ,0,1). If such a point can not be found within atmax attempts, the variables inlocalparare assumed to be independent and the dimension is bounded bym. Otherwise the resulting change of variables is modified to take the point found to (0, . . . ,0,1), thus leaving the other coordinates unchanged, namely
xi←xi+ai·xm, for 0≤i≤m−1 Strategies for finding a good pivot
We have implemented four different strategies, namely:
[BDE] The pure SLP strategy
This is the implementation which follows closest the strategy proposed in [3].
[B] LetN = 1 +Ps
i=1(deg(fi)−1). Create Q, the matrix of the linear application h1f1(m)+. . .+hsfs(m). Its coefficients are some polyno- mials over localpar. hi is an homogeneous polynomial of degree N−deg(fi).
[D] Use Berkowitz-Mulmuley linear algebra ([2], [5]) to construct the arithmetic network (DAG) corresponding to the algorithm deciding whether the linear application associated withQis surjective or not.
This is done by considering the determinant of the product matrix QtQ, the resulting DAG takeslocalparas input.
[E] Using the Maple functions optimize and makeproc, the resulting DAG is transformed into aMapleprocedure which can be evaluated on the input, which are the points chosen at random.
[ED] The evaluation and determinant strategy
Here we swap the steps [E] and [D] stated in the previous strategy. The variableslocalparare first specialized before performing the linear alge- bra. These two steps are repeated for each set of values forlocalpar.
[E] Specialize thefi(m) for a given set of values forlocalpar.
[D] Again, build the matrixQas before, but then use the Maple deter- minant function to decide whether the linear application associated withQis surjective or not.
[EG] The evaluation and Gr¨obner basis strategy
Here we replace the determinant step [D] of the previous strategy by a Gr¨obner basis computation.
[E] Specialize thefi(m) for a given set of values forlocalpar.
[G] Apply a Gr¨obner basis algorithm with total degree ordering to the specializedfi(m) to compute a basis of the projective variety.
[EGb] The same as EG, Gr¨obner basis computation beeing handled by gb(See [4]).
3 The Projective Noether Package
We now describe the available functions of the package. The interested reader is invited to read the sources, which are in the filenoether.mpl. Before using the package, typewith(noether):.
3.1 berkowitz
Function: Characteristic polynomial of a matrix Calling Sequence:
• berkowitz(A) Parameters:
• A- a square matrix Synopsis:
• The function berkowitzcomputes the characteristic polynomial of A. It returns a vectorv of the coefficients of the characteristic polynomial. Ifn is the dimension ofAthenv[i] is the coefficient of degree n+ 1−i.
Reference: [1].
Complexity: The time complexity isO(n3logn).
Implementation: Non recursive. The elementary linear algebra functions have been rewritten in order to ensure the correct DAG structure.
Example:
> with(noether):with(linalg):
> A:=matrix([[a,b,c],[d,e,f],[g,h,i]]);
[ a b c ]
[ ]
A := [ d e f ]
[ ]
[ g h i ]
> berkowitz(A);print(");
Vect
[ -1, i + e + a, g c + h f + i (- e - a) + d b - e a,
g (a c + b f) + h (d c + e f) + (g c + h f) (- e - a) + i (- d b + e a) ]
See also: detBerkowitz
3.2 detBerkowitz
Function: Matrix Determinant, based on Berkowitz’s algorithm.
Calling Sequence:
• detBerkowitz(A) Parameters:
• A- a square matrix Synopsis:
• The functionsdetBerkowitz computes the determinant of a square ma- trix. It uses the Berkowitz algorithm, implemented in the berkowitz function.
Reference: [1].
Complexity: The time complexity isO(n3logn).
Implementation: Seeberkowitz Example:
> with(noether):with(linalg):
> A:=matrix([[a,b,c],[d,e,f],[g,h,i]]);
[ a b c ]
[ ]
A := [ d e f ]
[ ]
[ g h i ]
> detBerkowitz(A);
g (a c + b f) + h (d c + e f) + (g c + h f) (- e - a) + i (- d b + e a)
See also: berkowitz
3.3 projectiveNoether
Function: Finds a Noetherian position for a projective variety Calling Sequence:
• projectiveNoether(sys,lvar,smax,atmax,strategy)
• projectiveNoether(sys,lvar,smax,atmax,strategy,’chvars’) Parameters:
• sys- a list of homogeneous polynomials
• lvars- a list of variables
• smax- a strictly positive integer
• atmax- a strictly positive integer
• strategy- a string
• chvars- (optional) an unevaluated names Synopsis:
• The function returns an upper bound on the dimension of the projective variety defined bysys, over the variableslvar.
• chvars is an optional argument. If the upper bound on the dimension is exact, it returns the change of variables found to put the variety in Noetherian position. The change of variables is : lvars[i]←−chvars[i]
for alli.
• Letabe the dimension returned. After the previous change of coordinates ofsys, the variableslvars[a+2]. . . lvars[#(lvars)]are in Noetherian position with respect tolvars[1]. . . lvars[a+ 1].
• The strategy is one of the following strings : BDE,ED,EG,EGb.
• One can set the global variable infolevel[noether]to 2 to see the list of points chosen at random.
• The returned upper bound on the dimension may exactly be the dimen- sion. Indeed there exists sufficiently effective big values forsmaxandatmax such that the result is correct for a given variety.
• For more precisions please consult the references.
Reference: [3], [4].
Complexity: time sO(1)dO(n), whered=degree(lpol), n= #(lvar) and s=
#(sys).
Example:
> with(noether):
> with(syspoly):
> sys:= [hcyclic(2,x)];
2
sys := [x1 x2 - x0 , x1 + x2]
> var:= [x0,x1,x2];
var := [x0, x1, x2]
> projectiveNoether(sys,var,10,3,’EG’);
0
See also: projectiveNullstellensatz
3.4 projectiveNullstellensatz
Function: projectiveNullstellensatz Calling Sequence:
• projectiveNullstellensatz[B](lpol,lvar)
• projectiveNullstellensatz[D](lpol,lvar)
• projectiveNullstellensatz[Gb](lpol,lvar) Parameters:
• lpol- a list of homogeneous polynomial expressions
• lvar- a list of variables Synopsis:
• The functionprojectiveNullstellensatz returns a polynomial expres- sion. This expression is zero if and only if the projective variety described bylpolis non empty.
• The argument in [ ] specifies the strategy : [B] : uses Berkowitz to generate a DAG depending on the parameters of lpol, the result is this DAG, [D] : uses Maple’s determinant, it is used when the polynomials have integer coefficients, [G] : uses Maple’s Gr¨obner, the polynomials must have integer coefficients. And it returns either 0 or 1. [Gb] : uses gb’s Gr¨obner, via gblink package. The polynomials must have integer coefficients. And it returns either 0 or 1.
Reference: [3], [4].
Complexity: timesO(1)dO(n), whered=degree(lpol) andn=cardinal(lvar).
In the case[B]the DAG returned has sizedO(n) and depthO(n2∗log2(sd)).
Example:
> with(noether):
> lvar:=[x0,x1,x2];
lvar := [x0, x1, x2]
> lpol:= [x1^2-x0*x1,x2^2-x0*x2,x1+2*x2-4*x0];
2 2
lpol := [x1 - x0 x1, x2 - x0 x2, x1 + 2 x2 - 4 x0]
> projectiveNullstellensatz[’B’](lpol,lvar);
304704
See also: projectiveNoether
4 The Polynomial System Families Package
We have tried to find some interesting families of polynomial equations in order to test our code. Here are the families we have chosen. To use this package type with(syspoly):.
4.1 hcyclic
Function: Homogeneous cyclic system Calling Sequence:
• hcyclic(n,x) Parameters:
• n- a strictly positive integer
• x- an unevaluated name
Synopsis:
• Generates the homogeneous cyclic polynomial system over the variables x0, . . . , xn :letσ be the cycle (1,2, . . . , n) of the nth permutation group.
We define theith equation of thenth system as :
Hni =
n−1X
k=0
σk(Mi) for 1≤i≤n−1 andHnn =Mn−xn0
Example:
> with(syspoly):
> sys:= hcyclic(4,x);
x1 x2 x3 x4 - x0**4,
x1 x2 x3 + x2 x3 x4 + x3 x4 x1 + x4 x1 x2, x1 x2 + x2 x3 + x3 x4 + x4 x1,
x1 + x2 + x3 + x4
See also: cyclic,hicyclic,sacados
4.2 hicyclic
Function: Homogeneous cyclic system Calling Sequence:
• hicyclic(n,x) Parameters:
• n- a strictly positive integer
• x- an unevaluated name.
Synopsis:
• Generates the homogeneous cyclic polynomial system over the variables x1, . . . , xn: let σbe the cycle (1,2, . . . , n) of the nth permutation group.
We define theith equation of thenth system as:
Hni =
n−1X
k=0
σk(Mi) for 1≤i≤n−1 andHnn=Mn
Example:
> with(syscpoly):
> sys:= hicyclic(4,x);
x1 x2 x3 x4,
x1 x2 x3 + x2 x3 x4 + x3 x4 x1 + x4 x1 x2, x1 x2 + x2 x3 + x3 x4 + x4 x1,
x1 + x2 + x3 + x4
See also: cyclic,hcyclic,sacados
4.3 sacados
Function: Sac a Dos (French for knapsack) polynomial system Calling Sequence:
• sacados(n,k,x) Parameters:
• n- a strictly positive integer
• k- a strictly positive integer
• x- an unevaluated name Synopsis:
• This function generates the homogeneous polynomial system:
forj= 1 tokdofj =x2j−xj∗x0
fk+1=−x0+ Xn j=1
2j−1xj
Example:
> with(syspoly):
> sys:= [sacados(3,2,x)];
2 2
sys := [x1 - x1 x0, x2 - x2 x0, - x0 + x1 + 2 x2 + 4 x3]
See also: hcyclic,hicyclic
5 A full example
# Loading the projective Noether Package
> with(noether):with(syspoly):
>
# Let us study the following system
> sys:=[sacados(2,2,x)];
2 2
sys := [x1 - x1 x0, x2 - x2 x0, - x0 + x1 + 2 x2]
> lvar:=[x0,x1,x2];
lvar := [x0, x1, x2]
>
# We want to see the list of points picked up at random.
> infolevel[noether]:=2;
infolevel[noether] := 2
>
# Let’s us now compute the dimension through the
# probabilistic method EG.
>
> d:=projectiveNoether(sys,lvar,10,3,‘EG‘,chvars);
noether/findPivot[EG] Checking the point : 0, 0, 1 noether/findPivot[EG] Checking the point : 0, 1 noether/findPivot[EG] Checking the point : 1
d := 0
>
# Here is the change of variable found to put the
# variety into Noetherian position.
> chvars;
[x0, x1, x2]
>
# Let us now compute the new system
> sys:=subs([seq(x.i=chvars[i+1],i=0..2)],sys);
2 2
sys := [x1 - x1 x0, x2 - x2 x0, - x0 + x1 + 2 x2]
> sys:=expand(sys);
2 2
sys := [x1 - x1 x0, x2 - x2 x0, - x0 + x1 + 2 x2]
>
# x1, x2 are thus in noetherian position
# with respect to x0. We want to prove
# that x0 is independant.
>
> blow:= seq(x.i=z*x.i,i=0..d);
blow := x0 = z x0
>
> localsys:= subs([blow],sys);
2 2
localsys := [x1 - x1 z x0, x2 - x2 z x0, - z x0 + x1 + 2 x2]
>
> p:= projectiveNullstellensatz[‘B‘](localsys,[x1,x2,z]):
bytes used=1000076, alloc=786288, time=0.41 bytes used=2051248, alloc=1441528, time=6.28 bytes used=3066752, alloc=1638100, time=8.44
>
# Now we need to prove that p is zero.
> simplify(p);
0
>
> quit;
bytes used=3653756, alloc=1638100, time=11.80
A Installation guide
The current distribution supports: only Unix, Maple V, release 3 and 4.
To find and install the package do:
1. Go via ftp into ftp://medicis.polytechnique.fr/pub/tera/soft/pnp/. Ei- ther using the Unix commandftpor via your favoritewebbrowser.
2. Read theREADMEfile and follow the instructions.
3. Updated documentation is also available in thisftpsite.
If you run into problems, report to [email protected]: fill up the formregistrationformand send it with your favorite mailer.
References
[1] J. Abdeljoued. Sur l’algorithm de Berkowitz pour le calcul du d´etermi- nant dans un anneau conmutatif arbitraire. preprint, Universit´e de Franche Compte, Besancon, 1995.
[2] S. J. Berkowitz. On Computing the determinant in small parallel time using a small number of processors. Information Processing Letters, vol. 18:pp. 147–150, 1984.
[3] M. Giusti and J. Heintz. La d´etermination des points isol´es et de la di- mension d’une vari´et´e alg´ebrique peut se faire en temps polynomial. In D. Eisenbud and L. Robbiano, eds.,Computational Algebraic Geometry and Commutative Algebra, vol. XXXIV of Symposia Matematica, pp. 216–256.
Cambridge University Press, 1993.
[4] G. Lecerf and E. Schost. Maple Package:GB link. GAGE laboratory, ftp://medicis.polytechnique.fr/pub/tera/soft/gblink, 1997.
[5] K. Mulmuley. A Fast Parallel Algorithm to Compute the Rank of a Matrix over an Arbitrary Field. Combinatorica,vol. 7 (1):pp. 101–104, 1987.