GAP

Main BranchesDownloads Installation Overview Data Libraries Packages Documentation Contacts FAQ GAP 3 
Find us on GitHubNavigation Tree 
Preface of GAP 3.4.3GAP stands for Groups, Algorithms and Programming. The name was chosen to reflect the aim of the system, which is introduced in this manual. Until well into the eighties the interest of pure mathematicians in computational group theory was stirred by, but in most cases also confined to the information that was produced by group theoretical software for their special research problems  and hampered by the uneasy feeling that one was using black boxes of uncontrollable reliability. However the last years have seen a rapid spread of interest in the understanding, design and even implementation of group theoretical algorithms. These are gradually becoming accepted both as standard tools for a working group theoretician, like certain methods of proof, and as worthwhile objects of study, like connections between notions expressed in theorems. GAP was started as an attempt to meet this interest. Therefore a primary design goal has been to give its user full access to algorithms and the data structures used by them, thus allowing critical study as well as modification of existing methods. We also intend to relieve the user from unwanted technical chores and to assist him in the programming, thus supporting invention and implementation of new algorithms as well as experimentation with them. We have tried to achieve these goals by a design which in addition makes GAP easily portable, even to computers such as Atari ST and Amiga, and at the same time facilitates the maintenance of GAP with the limited resources of an academic environment. While I had felt for some time rather strongly the wish for such a truly open system for computational group theory, the concrete idea of GAP was born when, together with a larger group of students, among whom were Johannes Meier, Werner Nickel, Alice Niemeyer, and Martin Schönert who eventually wrote the first version of GAP, I had my first contact with the Maple system at the EUROCAL meeting in Linz/Austria in 1985. Maple demonstrated to us the feasibility of a strong and efficient computer algebra system built from a small kernel, with an interpreted library of routines written in a problemadapted language. The discussion of the plan of a system for computational group theory organized in a similar way started in the fall of 1985, programming only in the second half of 1986. A first version of GAP was operational by the end of 1986. The system was first presented at the Oberwolfach meeting on computational group theory in May 1988. Version 2.4 was the first officially to be given away from Aachen starting in December 1988. The strong interest in this version, in spite of its still rather small collection of group theoretical routines, as well as constructive criticism by many colleagues, confirmed our belief in the general design principles of the system. Nevertheless over three years had passed until in April 1992 version 3.1 was released, which was followed in February 1993 by version 3.2, in November 1993 by version 3.3 and is now in June 1994 followed by version 3.4. A main reason for the long time between versions 2.4 and 3.1 and the fact that there had not been intermediate releases was that we had found it advisable to make a number of changes to basic data structures until with version 3.1 we hoped to have reached a state where we could maintain upward compatibility over further releases, which were planned to follow much more frequently. Both goals have been achieved over the last two years. Of course the time has also been used to extend the scope of the methods implemented in GAP. A rough estimate puts the size of the program library of version 3.4 at about sixteen times the size of that of version 2.4, while for version 3.1 the factor was about eight. Compared to GAP 3.2, which was the last version with major additions, new features of GAP 3.4 include the following:
Work on the extension of GAP is going on in Aachen as well as in an increasing number of other places. We hope to be able to have the next release of GAP after about 9 months again, that is in the first half of 1995. The system that you are getting now consists of four parts:
Together with the system we distribute GAP share libraries, 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 parts in C (or even other languages). However the functions in these packages can be called directly from GAP and results are returned to GAP. At present there are 10 such share libraries (cf. chapter "Share Libraries"). The policy for the further development of GAP is to keep the kernel as small as possible, extending the set of basic functions only by very selected ones that have proved to be timecritical and, wherever feasible, of general use. In the interest of the possibility of exchanging functions written in the GAP language the kernel has to be maintained in a single place which in the foreseeable future will be Aachen. On the other hand we hoped from the beginning that the design of GAP would allow the library of GAP functions and the library of data to grow not only by continued work in Aachen but, as does any other part of mathematics, by contributions from many sides, and these hopes have been fulfilled very well. There are some other points to make on further policy:
GAP is given away under the conditions that have always been in use between mathematicians, i.e. in particular completely in source and free of charge. We hope that the possibility offered by modern technology of depositing GAP on a number of computers to be fetched from them by 'ftp', will assist us in this policy. We want to emphasize, however, two points. GAP is not public domain software; we want to maintain a copyright that in particular forbids commercialization of GAP. Further we ask that use of GAP be quoted in publications like the use of any other mathematical work, and we would be grateful if we could keep track of where GAP is implemented. Therefore we ask you to notify us if you have got GAP, e.g., by sending a short email message to 'gap@samson.math.rwthaachen.de'. The simple reason, on top of our curiosity, is that as anybody else in an academic environment we have from time to time to prove that we are doing meaningful work. We have established a GAP forum, where interested users can discuss GAP related topics by email. In particular this forum is for questions about GAP, general comments, bug reports, and maybe bug fixes. We will read this forum and answer questions and comments, and distribute bug fixes. Of course others are also invited to answer questions, etc. We will also announce future releases of GAP in this forum. To subscribe send an email message to 'miles@samson.math.rwthaachen.de' containing the line 'subscribe gapforum <yourname>', where <yourname> should be your full name, not your email address. You will receive an acknowledgement, and from then on all email messages sent to 'gapforum@samson.math.rwthaachen.de'. 'miles@samson.math.rwthaachen.de' also accepts the following requests. 'help' for a short help on how to use 'miles', 'unsubscribe gapforum' to unsubscribe, 'recipients gapforum' to get a list of subscribers, and 'statistics gapforum' to see how many email messages each subscriber has sent so far. The reliability of large systems of computer programs is a well known general problem and, although over the past year the record of GAP in this respect has not been too bad, of course GAP is not exempt from this problem. We therefore feel that it is mandatory that we, but also other users, are warned of bugs that have been encountered in GAP or when doubts have arisen. We ask all users of GAP to use the GAP forum for issuing such warnings. We have also established an email address 'gaptrouble' to which technical problems of a more local character such as installation problems can be sent. Together with some experienced GAP users abroad we try to give advice on such problems. GAP was started as a joint Diplom project of four students whose names have already been mentioned. Since then many more finished Diplom projects have contributed to GAP as well as other members of Lehrstuhl D and colleagues from other institutes. Their individual contributions to the programs and to the manual are documented in the respective files. To all of them as well as to all who have helped proofreading and improving this manual I want to express my thanks for their engagement and enthusiasm as well as to many users of GAP who have helped us by pointing out deficiencies and suggesting improvements. Very special thanks however go to Martin Schönert. Not only does GAP owe many of its basic design features to his profound knowledge of computer languages and the techniques for their implementation, but in many long discussions he has in the name of future users always been the strongest defender of clarity of the design against my impatience and the temptation for "quick and dirty", solutions. Since 1992 the development of GAP has been financially supported by the Deutsche Forschungsgemeinschaft in the context of the Forschungsschwerpunkt "Algorithmische Zahlentheorie und Algebra". This very important help is gratefully acknowledged. As with the previous versions we send this version out hoping for further feedback of constructive criticism. Of course we ask to be notified about bugs, but moreover we shall appreciate any suggestion for the improvement of the basic system as well as of the algorithms in the library. Most of all, however, we hope that in spite of such criticism you will enjoy working with GAP. Aachen, June 1, 1994, Joachim Neubüser. 
The GAP Group 