||The book contains many worked examples of the algorithms considered, and Maple implementations of them are presented. Furthermore, a lot of exercises encourage the readers to do their own implementations in Maple, and to study the topics included in detail. Exercises that demand Maple implementations are marked by a diamond (O).
In all chapters, an introduction to the corresponding g-theory is given. Whereas in the hypergeometric case, the algorithms are rigorously presented and detailed proofs of the statements are given, in the g-case we state only the results, indicate their proofs, present Maple implementations, and give examples and exercises.
A basic knowledge of a programming language such as Pascal or С should be sufficient to understand the Maple programs and to solve the corresponding exercises since all major Maple procedures that are used are briefly described. On the other hand, a deeper familiarity with Maple might help the reader to understand the code in more detail. To obtain such a knowledge, the books [I]—[III] on p. 223 might be helpful.
I could have presented the algorithms in pseudo code, without giving preference to a particular computer algebra system. On the other hand, an implementation in an existing and widely distributed computer algebra system makes the algorithms ready for execution, and therefore fills them with life. As a result, every student can execute all the examples no matter how complicated they may be.
Hence I had to decide on one of the major systems. Of the most important general purpose systems, Axiom [JS93], Macsyma [Macsyma], Maple [I]—[II], Mathematica [Wolfram96] and REDUCE [Hearn95], undoubtedly Maple and Mathematica have the largest audiences, since they are accessible at most universities and research institutions.
I wished to write my code as near as possible to the mathematical description of the corresponding algorithms, and since the latter depend heavily on the fast symbolic solution of (sometimes very complicated) systems of linear equations, the poor performance of Mathematica's Solve command for linear systems (see [PS95]) supported my decision to choose Maple. Furthermore Maple is much friendlier with respect to user information (e.g., the inf olevel routine).
Readers who use one of these systems can access some of the algorithms considered:
Axiom: The sum command contains an implementation of Gosper's algorithm.
Macsyma: The sum command contains an implementation of Gosper's algorithm, written by Gosper.
Maple: Maple's sum command contains an implementation of Gosper's algorithm, completely rewritten by the author for Maple V.4. There are implementations of Zeilberger ([Zeilberger91b], [PWZ96]) and Koornwinder [Koornwinder93]
of Zeilberger's algorithm; Almkvist and Zeilberger [AZ91] implemented the continuous version. Maple V.4's sumtools package was written by the author [Koepf96], and contains an implementation of Zeilberger's algorithm. In the present book structured implementations of Gosper's algorithm, Zeilberger's algorithm, Petkovsek's algorithm and their «/-analogues are developed. Salvy and Zimmermann's Generating Functions package GFUN [SZ94] and Chyzak's Mgf un package [Chyzak94] are also strongly connected with the algorithms developed in the current book.
Mathematica: Implementations of Gosper's and Zeilberger's algorithms were done by Paule and Schorn [PS95], and Petkovsek implemented his algorithm and the corresponding g-version ([Petkovsek92], [PWZ96], and [APP98]). Also Paule and Riese [PR97] implemented the g-analogue of Zeilberger's algorithm. A package on multidimensional summation is due to Wegschaider [Weg-schaider97].
REDUCE: Gosper's and Zeilberger's algorithms are accessible by an implementation of Koepf and Stolting [Koepf95b]; Boing and Koepf [BK97] implemented the g-analogues of Gosper's and Zeilberger's algorithm.
The Maple programs for the current book are discussed in detail in the text. Some of the implementations are even printed in the book. The programs are collected in the package hsum, and can be obtained from the URL http: //www. vieweg. de. Detailed information on how to download and install the software are given in an appendix on p. 214. Worksheets containing the examples given in the text, as well as Maple solutions of the exercises are available at the same URL. The corresponding ^-analogues of Gosper's, Zeilberger's and Petkovsek's algorithms are implemented in the package qsum [BK98], written by Harald Boing, and can be obtained from the same site.
The present book is designed for use in the framework of a seminar. In seminars at German universities, every participating student is asked to present a lecture about a certain topic. The arrangement of the book makes the division into lectures easy. Each chapter covers a certain subtopic which can be presented by one or two students. Obviously the book is also suitable for a lecture course in this area since it was written in connection with such a course presented by the author. Special notational conventions used in the book are defined at their first occurrence, and are listed in the List of Symbols on page 224.
I would like to thank Peter Deuflhard, who introduced me to the study of this topic, for his support and encouragement. Furthermore, I thank Martin Grotschel, without whose support the final version would not have been possible. Thanks go to Herbert Melenk for his advice on Grobner bases, and for his excellent REDUCE implementation [MA94]. Due to his severe bicycling accident, the paper [MK95] is still unfinished. Also, I am very grateful for the warm hospitality of the ETH Zurich, where I visited to install my code in the Maple library, and especially to Mike Mon-agan, who headed the installation. Furthermore, thanks go to Tom Koornwinder for