GAP

Main BranchesDownloads Installation Overview Data Libraries Packages Documentation Contacts FAQ GAP 3 

Find us on GitHubNavigation Tree

From the Preface of GAP 4.1GAP stands for Groups, Algorithms and Programming. The name was chosen to reflect the aim of the system, which is introduced in this tutorial manual. Since that choice, the system has become somewhat broader, and you will also find information about algorithms and programming for other algebraic structures, such as semigroups and algebras. There are three further manuals in addition to this one: the "Reference Manual" containing detailed documentation of the mathematical functionality of GAP; "Extending GAP" containing some tutorial material on various aspects of GAP programming; and "Programming in GAP 4" containing detailed documentation of various aspects of the system of interest mainly to programmers. GAP is a free, open and extensible software package for computation in discrete abstract algebra. The terms "free" and "open" describe the conditions under which the system is distributed  in brief, it is free of charge (except possibly for the immediate costs of delivering it to you), you are free to pass it on within certain limits, and all of the workings of the system are open for you to examine and change. Details of these conditions can be found in the reference manual in chapter "Copyright Notice". The system is "extensible" in that you can write your own programs in the GAP language, and use them in just the same way as the programs which form part of the system (the "library"). Indeed, we actively support the contribution, refereeing and distribution of extensions to the system, in the form of "share packages". Further details of this can be found in chapter "Share Packages" in the reference manual, and on our World Wide Web site. Development of GAP began at Lehrstuhl D für Mathematik, RWTHAachen, under the leadership of Prof. Joachim Neubüser in 1985. Version 2.4 was released in 1988 and version 3.1 in 1992. The final full release of GAP 3, version 3.4, was made in 1994. A more detailed account of the motivation and development of these versions of GAP is contained in section "From the Preface for GAP 3.4, June 1994", below. Since then, there have been two dramatic transitions in the GAP project. Firstly, in 1997, Prof. Neubüser retired, and overall coordination of GAP development, now very much an international effort, was transferred to St Andrews. Secondly a complete internal redesign and almost complete rewrite of the system, which was already in progress in Aachen, has been completed. Following five, increasingly usable, betatest releases, version 4.1 is the first version of the rewritten system to be released without qualification for general use. For those readers who have used an earlier version of GAP, an overview of the changes from the betatest releases and from GAP 3 is given in section "Changes from Earlier Versions" below. The system that you are getting now consists of four parts.
Together with the system we distribute GAP share packages, which are separate packages which have been written by various groups of people and remain under their responsibility. Some of these packages are written completely in the GAP language, others totally or in part in C (or even other languages). However the functions in these packages can be called directly from GAP and results are returned to GAP. We operate a refereeing system for such packages, both to ensure the quality of the software we distribute, and to provide recognition for the authors. A number of GAP 4 share packages have already been accepted. Some others that have been submitted for review are available as "preprints". More information can be found on our World Wide Web site, see section "Further Information about GAP". . . . [We omit a copy of the acknowledgements from the preface of GAP 4.B.1.] Before going on to mention more recent contributions, I must express my heartfelt thanks, and I am sure, that of the wider community of GAP developers and users for the immense work that Joachim Neubüser himself has put into GAP over many years. The system would never have existed, let alone grown and prospered as it has, without his clear vision of what he wanted it to become, his ceaseless vigilance for opportunities for development, his championing of the cause of computation in group theory, his high standards which would not admit "merely adequate" solutions and his constant encouragement of everyone working on and with the system. We are all the richer for his efforts. Many people have contributed to GAP development over the last two years. Alexander Hulpke has been a tower of strength, coordinating the work on the library, finding subtle bugs in code whose authors were no longer contactable, supporting the beta testers and, most recently coordinating the process of stabilization and debugging leading up to this release. Thomas Breuer in Aachen has remained our "conscience", pointing out to us when we were misusing GAP 4 concepts and so storing up trouble for later. He has also done an enormous amount of work on the support for representation theory in GAP. Others I would like to point out here include Bettina Eick, Volkmar Felsch, Willem de Graaf, Werner Nickel and Andrew Solomon. I should like to thank all of these people, and all the other contributors whom I have not mentioned explicitly for their efforts, their cheerfulness and their perseverance. I should also like to thank all the GAP4 betatesters, package developers, manual proof readers and others who have given us extremely valuable and positive feedback. GAP development in St Andrews has been financially supported by the Engineering and Physical Sciences Research Council, the Leverhulme Trust, the European Commission (ESPRIT programme), the Royal Society of Edinburgh and the British Council, to all of whom we are very grateful. Development also takes place at other centres with support from other funding bodies. It finally remains for me to wish you all pleasure and success in using GAP, and to invite your constructive comment and criticism. St Andrews 26 July 1999\hfill Steve Linton Changes from Earlier VersionsThe main changes from the final betatest release GAP 4 beta 5 are in the documentation and in performance, both of which are much improved and in the fixing of many bugs. The installation process has also been improved a little, and there are some new algorithms, especially in the areas of semigroups and finitelypresented groups. As far as we know any programs that worked with 4 beta 5 should still work in GAP 4.1. The changes since the final release of GAP 3 (version 3.4.4) are much more wideranging. The general philosophy of the changes is twofold. Firstly, many assumptions in the design of GAP 3 revealed its authors' primary interest in group theory, and indeed in finite group theory. Although much of the GAP 4 library is concerned with groups, the basic design now allows extension to other algebraic structures, as witnessed by the inclusion of substantial bodies of algorithms for computation with semigroups and Lie algebras. Secondly, as the scale of the system, and the number of people using and contributing to it has grown, some aspects of the underlying system have proved to be restricting, and these have been improved as part of comprehensive reengineering of the system. This has included the new method selection system, which underpins the library, and a new, much more flexible, share package interface. Details of these changes can be found in chapter "Migrating to GAP 4" of this manual. It is perhaps worth mentioning a few points here. Firstly, much remains unchanged, from the perspective of the mathematical user:
A number of visible aspects have changed:
Behind the scenes, much has changed:
A very few features of GAP 3 are not yet available in GAP 4.
. . . [We omit a copy of a part of the preface of GAP 3.4.4.] 