Handbook of Computational Group Theory by Derek F. Holt (Discrete Mathematics and Its Applications: Chapman & Hall/CRC) is about computational group theory, which we shall frequently abbreviate to CGT. The origins of this lively and active branch of mathematics can he traced back to the nineteenth and early twentieth centuries, but it has been flourishing particularly during the past 30 to 40 years. The aim of this book is to provide as complete a treatment as possible of all of the fundamental methods and algorithms in CGT, without straying above a level suitable for a beginning postgraduate student.
The most basic algorithms in CGT tend to be representation specific; that is, there are separate methods for groups given as permutation or matrix groups, groups defined by means of polycyclic presentations, and groups that are defined using a general finite presentation. The author has devoted separate chapters to algorithms that apply to groups in these different types of representations, but there are other chapters that cover important methods involving more than one type. For example, Chapter 6 is about finding presentations of permutation groups and the connections between coset enumeration and methods for finding the order of a finite permutation group.
There is also included a chapter (Chapter 11) on the increasing number of precomputed stored libraries and databases of groups, character tables, etc. that are now publicly available. They have been playing a major rôle in CGT in recent years, both as an invaluable resource for the general mathematical public, and as components for use in some advanced algorithms in CGT. The library of all finite groups of order up to 2000 (except for order 1024) has proved to be particularly popular with the wider community.
It is inevitable that our choice of topics and treatment of the individual topics will reflect the authors' personal expertise and preferences to some extent. On the positive side, the final two chapters of the book cover applications of string-rewriting techniques to CGT (which is, however, treated in much greater detail, and the application of finite state automata to the computation of automatic structures of finitely presented groups. On the other hand, there may be some topics for which our treatment is more superficial than it would ideally be.
One such area is the complexity analysis of the algorithms of CGT. During the 1980s and 1990s some, for the most part friendly and respectful, rivalry developed between those whose research in CGT was principally directed to-wards producing better performance of their code, and those who were more interested in proving theoretical results concerning the complexity of the algorithms. This study of complexity began with the work of Eugene Luks, who established a connection in his 1982 article between permutation group algorithms and the problem of testing two finite graphs for isomorphism. Our emphasis in this book will be more geared towards algorithms that per-form well in practice, rather than those with the best theoretical complexity. Fortunately, Seress' book includes a very thorough treatment of complexity issues, and so we can safely refer the interested reader there. In any case, as machines become faster, computer memories larger, and bigger and bigger groups come within the range of practical computation, it is becoming more and more the case that those algorithms with the more favourable complexity will also run faster when implemented.
The important topic of computational group representation theory and computations with group characters is perhaps not treated as thoroughly as it might be in this book. Some of the basic material is covered in Chapter 7, but there is unfortunately no specialized book on this topic.
One of the most active areas of research in CGT at the present time, both from the viewpoint of complexity and of practical performance, is the development of effective methods for computing with large finite groups of matrices. Much of this material is beyond the scope of this book. It is, in any case, developing and changing too rapidly to make it sensible to attempt to cover it properly here. Some pointers to the literature will of course be provided, mainly in Section 7.8.
Yet another topic that is beyond the scope of this book, but which is of increasing importance in CGT, is computational Lie theory. This includes computations with Coxeter groups, reflection groups, and groups of Lie type and their representations. It also connects with computations in Lie algebras, which is an area of independent importance. The article by Cohen, Murray, and Taylor provides a possible starting point for the interested reader.
The author firmly believes that the correct way to present a mathematical algorithm is by means of pseudocode, since a textual description will generally lack precision, and will usually involve rather vague instructions like "carry on in a similar manner". So we have included pseudocode for all of the most basic algorithms, and it is only for the more advanced procedures that we have occasionally lapsed into sketchy summaries. We are very grateful to Thomas Cormen who has made his LATEX package `clrscode' for displaying algorithms publicly available. This was used by him and his coauthors in the well-known textbook on algorithms.
Although working through all but the most trivial examples with procedures that are intended to be run on a computer can be very tedious, the author attempted to include illustrative examples for as many algorithms as is practical.
At the end of each chapter, or sometimes section, the reader's attention directed to some applications of the techniques developed in that chapter either to other areas of mathematics or to other sciences. It is generally difficult to do this effectively. Although there are many important and interesting applications of CGT around, the most significant of them will typically use methods of CGT as only one of many components, and so it not possible to do them full justice without venturing a long way outside of the main topic of the book.
The author assumes that the reader is familiar with group theory up to an advanced undergraduate level, and has a basic knowledge of other topics in algebra, such as ring and field theory. Chapter 2 includes a more or less complete survey of the required background material in group theory, but we shall assume that at least most of the topics reviewed will be already familiar to readers. Chapter 7 assumes some basic knowledge of group representation theory, such as the equivalence between matrix representations of a group G over a field K and KG-modules, but it is interesting to note that many of the most fundamental algorithms in the area, such as the `Meataxe', use only rather basic linear algebra.
insert content here