(appeared in SIGSAM Bulletin Vol. 38 Issue 2 (2004))It is assumed authors start writing a book with

pleasure. As they keep going on the project, their basic mood might turn out from joy tohope(of getting soon to the very end of an overwhelming project). Conversely, readers are expected to start browsing a book withhope(of finding out something interesting) but, just in some special cases, they keep reading it withpleasure...Well, there is little doubt that the authors of this book have worked it out, from the Introduction to the Index, with a considerable amount of joy... for every paragraph of the book shows how much the authors have enjoyed translating into printed matter the outcome of a long, large, deep and personal relation with computationally oriented commutative algebra. And the result is an excellent and non-standard, elementary and self-contained, introduction to the theory of Gröbner Bases and its applications, focusing on polynomial rings over a field.

Let us sustain these affirmations by picking out three --out of many more-- remarkable characteristics of the book:

- The first one is the very early consideration of modules (the definition of module appears in section 1.1, even before the definition of a polynomial ring), so that the development of the theory of Gröbner Bases is made in full generality over the P --module P^r where P = K[x_1,\ldots,x_n] and where K is a field.

Thanks to this early appearance of Module Theory one can find, already in section 3.3, an introduction to computations in Homological Algebra, showing how to determine a presentation of Hom--modules, Ext--modules, etc.- The second one is the inclusion of an excellent collection of 44 tutorials, dealing with topics that range from classical algebraic issues (such as the Extended Euclidean Algorithm or the proof of Hilbert's Syzygy Theorem) to the description of Modern Portfolio Theory. Tutorials are informal calls to the complicity of the reader, asking him/her

- to develop useful examples in order to check her/his understanding of some topic;
- to get involved on implementation tasks, e.g. about operations with ideals and modules, or
- to make a short detour on complementary topics such as Invariant Theory or Primary Decomposition.
- The third one is the tight and careful integration of the Computer Algebra System CoCoA as a tool for exploring the tutorials (we do remember only two tutorials that are not developed via CoCoA, namely, the tutorial concerning Homogeneous Polynomials and the one about Newton Polytopes).
The list of peculiarities could be extended, as well, to the Bibliography section. The twelve references include just a collection of recent books on computational commutative algebra, with three exceptions: the Ph. D. thesis of Buchberger and the classical books of Kunz and Lang (on Commutative Algebra and general Algebra, respectively). As stated by the authors in the introduction "although at the end of the book you will find some references, we decided not to cite everything everywhere. More correctly, we did not cite anything anywhere."

Again, as another mark of personality, the book is divided in three substantial chapters, containing in total twenty sections; as a question of personal taste we would have preferred a different scheme, with a larger number of chapters, since at some moment it is easy to get confused and to think that the sections are the real chapters!

The first chapter is entitled

Foundationsand it introduces, starting from scratch, the algebraic preliminaries required for the other two chapters, dealing with the Theory of Gröbner Bases and with some of its applications. This first chapter presents the basics on polynomial rings and modules, monomial ideals and modules, Dickson's Lemma for ideals in polynomial rings and monomial modules, term orderings, leading terms, gradings and the division algorithm in the P --module P^r .The second chapter, entitled

Gröbner Bases, is the kernel of the book and it is devoted to present Gröbner Bases of ideals and modules together with Buchberger's Algorithm for computing the Gröbner Basis of a submodule of the P --module P^r . The chosen Module Theory framework makes specially simple and natural the derivation of the Extended Buchberger Algorithm, generalizing the Extended Euclidean Algorithm for K[x] , which provides the polynomial matrix relating the obtained Gröbner Basis with the original system of generators of the considered submodule of P^r .Section 2.2 about Rewrite Rules is somehow cumbersome, due to its technical character. For forthcoming editions we dare to advise the authors that splitting Proposition 2.2.2 (now containing eight properties of rewrite relations) in several different parts with some more additional examples (even including a new tutorial) could be helpful to make it easier the reading of this section. Something similar could be said about section 2.3 on Syzygies, but here the advice is to the reader: we think that tutorials 19 and 20 could be really more helpful if they are attempted by the reader after (or while) a first reading of this section.

Most of the tutorials in these two first chapters are devoted to implement in CoCoA the already introduced algorithms and to check with more examples what is the meaning of the performed computations. The particularly nice way these implementations are proposed and described in a natural language makes very easy for novice readers even to implement their own version of Buchberger algorithm (see Tutorial 24)!

The last chapter collects a very interesting set of direct applications of Gröbner Bases. These applications deal, mainly, with the algorithmic manipulation of modules, submodules and their homomorphisms: in this way, this chapter can be used as a stand-alone introduction to Module Theory. Here the reader might find algorithms for P --modules inside P^r , computing Syzygy modules, annihilators, intersections, colon modules, elimination modules, kernel and pullbacks of module homomorphisms, saturations, Hom-modules, etc.

Last section of this chapter 3 is devoted to one of the, probably, most successful application of Gröbner Bases: polynomial system solving. The chapter is specially well written and with a extremely nice and motivating introduction which explains, in authors' own words, why systems of polynomial equations "lie at the heart of Computational Commutative Algebra".

The third chapter tutorials fall into two different categories. Either they continue to increase reader's training on the topic (by proposing her/him to implement in CoCoA some of the algorithms described in the different sections) or they show new applications to Invariant Theory, Splines, Integer Programming, Algebraic Geometry or, even, Economics (specially interesting is Tutorial 44 about Modern Portfolio Theory).

Four Appendices close the book: the first three are devoted to CoCoA (a CoCoA primer, a programming guide and a collection of CoCoA programs, mainly related to the tutorials) and the last one presents hints for selected exercises (have not we mentioned yet that each section comes with a collection of interesting exercises?).

Well, we have stated at the beginning of the review that this book seems to have been written with pleasure...what about reading it with pleasure, too?

The book is carefully written and the authors follow very strictly the self--imposed guidelines described in the introduction:

- how was this book written (for instance, with the compromise that "statements called Lemma, Proposition, Theorem, etc. have to be followed by a complete proof ... avoid(ing) relegating proofs to exercises, giving a proof which consists of a reference,..."
- what is (and what is not) the book about,
- what is the book good for, etc.
Surely, if the reader goes on after the introduction, he/she can not claim to be cheated!! Moreover, the style is very friendly and relaxing (with wonderful quotes scattered all around) and helps the reader to keep on reading: specially helpful and clarifying are the introductions to every section (and there are 20 of these!).

To write a book with such a personal flavor has pros and cons. The authors recognize that "from the very first glimpse it should be clear ... this book is not a typical undergraduate book." The behavior of ideals under extensions and contractions is not addressed in the book; local algebra is (at best) hidden; integral extensions, Noether normalization and dimension theory for affine algebras are missing. One can only say that the classical Atiyah's (and Sharp's) first steps to commutative algebra are not in the main stream of the book. Yet the authors claim that "... it is primarily intended to serve as a textbook for courses on Computational Commutative Algebra at the undergraduate or graduate level."

We agree. It is the word "Computational" what makes the difference. One can not expect to address all the topics of the classic textbooks plus introducing the computational approach, all within one course/book. As it is now, this book can be used either to introduce the theory of Gröbner Bases to students with a basic knowledge of Algebra or to provide a first introduction to Commutative Algebra providing Module Theory, Noetherianity, Hilbert's Basis Theorem, Hilbert's Nullstellensatz, Homological Algebra basics, primary decomposition of ideals, etc. but with the additional by--product of including Gröbner Bases as a computational tool. And this is already a lot and it is well done in this book.

It only remains to ask the authors to finish soon the promised second volume, since we would like to see how the three announced chapters in volume II (The Homogeneous Case, Hilbert Functions and Further Applications of Gröbner Bases) cover several interesting topics such as Projective Algebraic Geometry, Dimension Theory, more advanced Homological Algebra and, why not, some of those classical issues we have mentioned above (this is a guess !)

Laureano González--Vega and Tomás Recio

Universidad de Cantabria