Dear GAP Forum,
The GAP group is delighted to announce the availability for general use of GAP
4 release 2. This release builds upon GAP 4.1 released last July, and we
recommend all GAP 4 users to upgrade to it. Except as noted below, it should
be upwards compatible with all documented functionality of GAP 4.1.
You can find detailed information about the new version on our World Wide
Web site, which is located at
with mirror sites at:
http://www.math.rwth-aachen.de/~GAP/ Aachen, Germany
http://mirrors.ccs.neu.edu/GAP/ Boston, USA
Australian National University
These sites are linked to the FTP archive from which you can download the
software, which you can also find directly at ftp-gap.dcs.st-and.ac.uk in
There have been changes in almost every subdirectory of the GAP system, so we
do not recommend attempting to upgrade from GAP 4.1 to GAP 4.2 "in place".
Instead, we recommend that you should download and install the entire system
If you install GAP 4.2, please send a brief message to
`firstname.lastname@example.org' confirming that you have done so. Please cite GAP
in any publication resulting from its use. The correct form of citation
can be found on the Web pages.
Following this release we expect (sadly) to release bugfixes from time to
time. They will be announced on the GAP Forum. Please take note of these
announcements and apply the bug fixes to your installation.
What has changed from 4r1 =========================
There is (as far as we know) just one change to the documented functionality
of GAP 4.1, which concerns the Category IsTable. In brief, a list of lists
may be now in IsTable (and so possibly in IsMatrix) even when it is not
rectangular, and a new Property IsRectangularTable has been added. The first
appendix of this email includes an explanation of the need for this change,
and its possible consequences.
If you discover other changes to documented functionality, then these are
bugs, please inform us.
Other new features:
* A much extended and improved library of small groups, now includes all
of order <= 2000, except those of order 1024, as well as those of orders 5^5
and 7^4, those whose order factorises in at most 3 primes and those of order
q^n * p for a prime-power q^n dividing 2^8, 3^6, 5^5 or 7^4 and an arbitrary
prime p different to q.
* Associated IdGroup routines to identify a given group of any of these orders
(except 512 and 1536) with the corresponding library entry.
* The primitive groups library, the use of which after the release of
GAP 4.1 was hampered a few times by changes in functions that helped
construct the indvidual groups from more basic data, has been made more
independent of the rest of GAP by listing explicit generators for the
groups. In the process some errors were corrected, and some additional checks
have been performed.
* An enhanced library of character tables.
* New (and often much faster) infrastructure for orbit computation, based on a
general "dictionary" abstraction
* There is new functionality for dealing with representations of algebras, and
in particular for semisimple Lie algebras.
* New functionality for binary relations on arbitrary sets, magmas and
semigroups. A brief summary is attached as the second appendix to this mail.
* A prototype implementation of Luks' algorithms for computation with solvable
matrix groups, currently restricted to the nilpotent case, and associated
infrastructure, including an abstraction for general subgroup chains
* Bidirectional streams, allowing an external process to be started and then
controlled "interactively" by GAP
* Changes in the behaviour of vectors over small finite fields -- the system
is now less eager to convert these automatically into compressed form, since
this can result in vectors being compressed over too small a field
* Numerous bug fixes and performance improvements
* A fifth book has been added to the GAP manual "New features for Developers"
describing some features that are likely to be of interest mainly to
developers of complex GAP applications, and which we may wish, in consultation
with these developers to modify in a future release of GAP. See the manual
section "about new features for developers" for more details.
Share Packages ==============
Alongside this release, we have wrapped up new "anthologies" of share
packages: allshare4r2.zoo containing all refereed share packages as of the
release, and submitshare4r2.zoo containing those packages submitted for
refereeing which their authors wish to see circulated. Note in particular that
these files include new versions of the LAG, GUAVA and grpconst packages,
which are needed in order for them to work correctly with GAP 4 release 2,
while the newly accepted packages ITC, CrystGAP, CrystCat and Carat, are
included for the first time. These new packages will be announced separately
on the GAP Forum very shortly.
Cooperating with others to develop a piece of software is rarely easy, and
this is especially so when most of the authors rarely or never meet
face-to-face and when some are employed partly or wholly to work on GAP, while
others have GAP development as just a part of their research activity and
still others work on it in their evenings and weekends. Nevertheless, it never
ceases to amaze me how well the GAP team operates and how good designs and
implementations can emerge from the interplay of different viewpoints.
This is not the place to list everyone who contributed, but I must thank: all
the authors who have contributed to this version; the various non-authors who
have provided a great deal of helpful advice (they know who they are); the
package authors and others who have tested development versions of the system
and provided feedback and the authors and maintainers of the free software
tools (especially CVS) without which our cooperation would have been far more
Financial support for GAP development has come, at least, from the
Engineering and Physical Sciences Research Council, the Leverhulme Trust,
the European Commission (ESPRIT programme), the Royal Society of
Edinburgh, the British Council, the Deutsche Forschungsgemeinschaft, the
National Science Foundation and the Australian Research Council, to all of
whom we are very grateful.
It finally remains for me to wish you all pleasure and success in using this
version of GAP, and to invite your constructive comment and criticism.
St Andrews 28 February 2000 Steve Linton for the GAP Team
Appendix 1 -- More about IsTable ================================
This concerns the definition of the Category IsTable. In GAP 4.1,
this Category contained homogeneous lists of homogeneous lists, all the same
length (so that all tables were rectangular). This proved to present a serious
performance problem in handling mutable matrices, since their rectangularity
had to be checked every time their Type was needed. In extreme cases (such as
a list of enumerators of finitely-presented groups) this could even be a
non-terminating computation. Accordingly, we have redefined IsTable to apply
to any homogeneous lists of homogeneous lists, and added a Property
IsRectangularTable. The implication of this is that if you install a method
with the requirement IsMatrix (which includes IsTable) then it may be called
on a non-rectangular table argument. You may wish to check for this, or
document that your functions will fail if they are passed such an object.
Appendix 2 -- Summary of new features for relations magmas and semigroups =========================================================================
o Binary Relations
- Operations for reflexive, symmetric and transitive closure and
methods for testing if a binary relation has these properties.
o Equivalence Relations
- New constructors
. Construct the smallest equivalence on a set containing a given
relation on the set
. Construct the smallest equivalence containing a set of generating
- Join and meet operations for equivalence relations
o Magma congruences
- Left, right and two sided congruences are computed for finite magmas
- Meet and joins operations
o Semigroup congruences
- Left, right and two sided congruences can be computed for finite and
some finitely generated semigroups
- Meet and join operations