

		     CoCoA: A User-Friendly System for doing
      		      Computations in Commutative Algebra


                    Alessandro Giovini & Gianfranco Niesi
                        November 17, 1992


   CoCoA is a small special-purpose system for doing Computations in Com-
mutative Algebra, which runs on any computer of the Macintosh family provided
with at least 1Mb of RAM (and now also on IBM/PC or compatibles with at
least 512K of RAM).
   Several motivations led us to the development of an entirely new system for
symbolic computations. We noticed that mathematicians working in the fields
of commutative algebra and algebraic geometry, and which do not have much
experience of computers, do not use very frequently (or effectively) existing
general purpose powerful systems; in out opinion the main reason is that these
packages run essentially on microcomputers or mainframes and their use implies
an account on a machine and some knowledge of its operating system; very often
instead one needs a software system for sophisticated but reasonably simple
tasks for which a microcomputer (not to say a mainframe) is really oversized;
we noticed instead that many mathematicians use frequently a computer of the
Macintosh family due to its very cleverly designed user interface.  Finally, we
felt the need of a system entirely developed within our research group to test
and check algorithms and theoretical ideas.
   In late 1987 we started to work on the prototype of a small system capable
of handling multivariate polynomial rings, embodying algorithms which use the
most recent algebraic techniques and completely integrated within the Macin-
tosh environment. At the beginning of 1989 a first version of the system was
ready to be given to -external users-; since then the system has been presented,
among other places, at the COCOA II meeting (Genova, May 29|June 3,
1989), at the Computers & Mathematics 1989 conference (MIT, Cambridge,
Massachusetts, June 13|17, 1989), at the DISCO'90 conference (Capri, Italy,
April 10|12, 1990) and, the last release (1.5), at the Meeting on Computational
Algebraic Geometry and Commutative Algebra (Cortona, Italy, June 17|21,
1991).
   The main characteristics of CoCoA can be in our opinion so summarized:

   * it is a small system, and we make any effort in keeping it small; it runs
     on a machine one can have on the desktop, and even at home, but takes
     advantage of additional hardware provided;

   * it uses consistently the classical Macintosh user interface and it is com-
     pletely integrated within that environment;

   * it gives the user great freedom in organizing the computations and in
     writing commands and expressions in a very intuitive way while being
     very forgiving w.r.t. errors;

   * it implements advanced algorithms and strategies without supposing the
     user knowing them;

   * and, yes!, it is reasonably fast.

Presently CoCoA is being used in several research centres in Canada, England,
France, Germany, Holland, Italy, Japan, Nigeria, Spain, Sweden and USA.
   CoCoA is capable of performing both simple and sophisticated operations on
multivariate polynomial rings and on various data connected with them (essen-
tially rational functions, ideals, modules and matrices); polynomials may have
coefficients either in the field Q of rational numbers or in the residue ring 
Zp.
   Every operation is performed within a current ring, which is determined by
the ring name, the field of coefficients, the names (and weights) of the 
variables and the term-ordering. The default ring is Q  t; x; y; z : with all 
weights set to 1 and with the degree reverse lexicographic term-ordering. At 
any time the user can easily modify this ring by just pulling down a menu and 
editing some values.
   The advanced user has also the possibility of changing the values of some
parameters affecting the way in which some specialized algorithms work. The
values to which the system defaults should however suffice in most cases for an
optimum use of the system.
   The user can open standard text-editing Macintosh windows in which data
can be entered in a very simple format. Several kinds of computations can then
be performed on the entered data and the results can be assigned to variables
for later use. If the user modifies the ring, then the already entered or 
computed data can be easily transferred to the new ring (whenever the operation
makes sense).
   The system is capable of performing basic operations on the data, as for
example the following ones:
 
   * sums, products, powers, derivatives, gcd, lcm of polynomials,

   * sums, products, powers, derivatives of rational functions,

   * sums, products, powers of ideals,

   * sums of modules,

   * sums, products, powers, determinants of matrices,

   * operations between heterogeneous values, like the product of a polynomial
     and an ideal, etc.

and more advanced operations like the following ones:

   * Grobner bases of ideals and modules;

   * the normal form of a polynomial w.r.t. an ideal;

   * syzygies of ideals and modules;

   * standard bases and tangent cones of ideals.

   * elimination and substitution of variables;

   * homogeneization of ideals;

   * intersection and division of ideals and modules;

   * inclusion or equality test for ideal and modules;

   * minimalization of a system of generators of an ideal or a module;

   * minimal free resolutions of ideals and modules;

   * Poincare series and Hilbert function of an ideal;

   * dimension and multiplicity of an ideal;

   * computing particular classes of ideals (for example, the ideals of the mi*
 *nors
     of a matrix, or the ideal of a finite set of points of the projective spac*
 *e).

   * resultant of two polynomials;

The syntax for the expressions that the system can evaluate has been chosen to
be as close as possible to the usual mathematical notation; the system displays
the exponents as superscripts and the indexes as subscripts, taking advantage
of the graphics capabilities of the Macintosh.  For example, to eliminate the
indeterminate t from the ideal generated by the three polynomials t31+t6x,
t8y and t10 z one has simply to evaluate the following expression (whose
result is a value of type ideal):


          Elim(t; Ideal(t  31+ t  6  x; t  8  y; t  10 z)):


   The core of the system is an implementation of Buchberger's algorithm for
computing the Grobner basis of an ideal; the algorithm (and an adaptation to
the case of modules) has been optimized in several senses and it is used as a
building block for some of the operations that the system is capable of doing;
for most uses the user can however completely ignore the theory of Grobner
bases and even their existence: the system will do all the necessary Grobner
stuff in the background.  However, for an optimum use of the system (and of
some system parameters) some knowledge of the theory may be useful.
   Requests for the current release of the system (1.5) and suggestions can be
sent directly to the authors or to the following email address:

                       cocoa@igecuniv.bitnet                       .

