CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

| Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

Views: 418346
1
2
5 Changes between GAP 4.4 and GAP 4.5
3
4
This chapter lists most important changes between GAP 4.4.12 and the first
5
public release of GAP 4.5. It also contains information about subsequent
6
update releases for GAP 4.5. It is not meant to serve as a complete account
7
on all improvements; instead, it should be viewed as an introduction to GAP
8
4.5, accompanying its release announcement.
9
10
11
5.1 Changes in the core GAP system introduced in GAP 4.5
12
13
In this section we list most important new features and bugfixes in the core
14
system introduced in GAP 4.5. For the list of changes in the interface
15
between the core system and packages as well as for an overview of new and
16
updated packages, see Section 5.2.
17
18
19
5.1-1 Improved functionality
20
21
Performance improvements:
22
23
 The GAP kernel now uses GMP (GNU multiple precision arithmetic
24
library, http://gmplib.org/) for faster large integer arithmetic.
25
26
 Improved performance for records with large number of components.
27
28
 Speedup of hash tables implementation at the GAP library level.
29
30
 MemoryUsage (Reference: MemoryUsage) is now much more efficient, in
31
particular for large objects.
32
33
 Speedups in the computation of low index subgroups, Tietze
34
transformations, calculating high powers of matrices over finite
35
fields, Factorial (Reference: Factorial), etc.
36
37
New and improved kernel functionality:
38
39
 By default, the GAP kernel compiles with the GMP and readline
40
libraries. The GMP library is supplied with GAP and we recommend that
41
you use the version we supply. There are some problems with some other
42
versions. It is also possible to compile the GAP kernel with the
43
system GMP if your system has it. The readline library must be
44
installed on your system in advance to be used with GAP.
45
46
 Floating point literals are now supported in the GAP language, so
47
that, floating point numbers can be entered in GAP expressions in a
48
natural way. Support for floats is now properly documented, see
49
'Reference: Floats'. GAP has an interface using which packages may add
50
new floating point implementations and integrate them with the parser.
51
In particular, we expect that there will soon be a package that
52
implements arbitrary precision floating point arithmetic.
53
54
 The Mersenne twister random number generator has been made independent
55
of endianness, so that random seeds can now be transferred between
56
architectures. See 'Reference: GlobalMersenneTwister' for details.
57
58
 Defaults for -m and -o options have been increased. Changes have been
59
made to the way that GAP obtains memory from the Operating System, to
60
make GAP more compatible with C libraries. A new -s option has been
61
introduced to control or turn off the new behaviour, see 'Reference:
62
Command Line Options'.
63
64
 The filename and lines from which a function was read can now be
65
recovered using FilenameFunc (Reference: FilenameFunc), StartlineFunc
66
(Reference: StartlineFunc) and EndlineFunc (Reference: EndlineFunc).
67
This allows you, for example, to implement a function such as
68
PageSource (Reference: PageSource) to show the file containing the
69
source code of a function or a method in a pager, see Pager
70
(Reference: Pager).
71
72
 CallFuncList (Reference: CallFuncList) was made into an operation so
73
that it can be used to define behaviour of a non-function when called
74
as a function.
75
76
 Improvements to the cyclotomic number arithmetic for fields with large
77
conductors.
78
79
 Better and more flexible viewing of some large objects.
80
81
 Opportunity to interrupt some long kernel computations, e.g.
82
multiplication of compressed matrices, intercepting Ctrl-C in
83
designated places in the kernel code by means of a special kernel
84
function for that purpose.
85
86
 ELM_LIST now allows you to install methods where the second argument
87
is NOT a positive integer.
88
89
 Kernel function DirectoryContents (Reference: DirectoryContents) to
90
get the list of names of files and subdirectories in a directory.
91
92
 Kernel functions for Kronecker product of compressed matrices, see
93
KroneckerProduct (Reference: KroneckerProduct).
94
95
New and improved library functionality:
96
97
 Extensions of data libraries:
98
99
 Functions and iterators are now available to create and
100
enumerate simple groups by their order up to isomorphism:
101
SimpleGroup (Reference: SimpleGroup), SmallSimpleGroup
102
(Reference: SmallSimpleGroup), SimpleGroupsIterator (Reference:
103
SimpleGroupsIterator) and AllSmallNonabelianSimpleGroups
104
(Reference: AllSmallNonabelianSimpleGroups).
105
106
 See also packages CTblLib, IRREDSOL and Smallsemi listed in
107
Section 5.2-2.
108
109
 Many more methods are now available for the built-in floating point
110
numbers, see 'Reference: Floats'.
111
112
 The bound for the proper primality test in IsPrimeInt (Reference:
113
IsPrimeInt) increased up to 10^18.
114
115
 Improved code for determining transversal and double coset
116
representatives in large groups.
117
118
 Improvements in Normalizer (Reference: Normalizer) for S_n.
119
120
 Smith normal form of a matrix may be computed over arbitrary euclidean
121
rings, see NormalFormIntMat (Reference: NormalFormIntMat).
122
123
 Improved algorithms to determine the subgroup lattice of a group, as
124
well as the function DotFileLatticeSubgroups (Reference:
125
DotFileLatticeSubgroups) to save the lattice structure in .dot file to
126
view it e.g. with GraphViz.
127
128
 Special teaching mode which simplifies some output and provides more
129
basic functionality, see 'Reference: Teaching Mode'.
130
131
 Functionality specific for use in undergraduate abstract algebra
132
courses, e.g. checksums ('Reference: Check Digits'); string/integer
133
list conversion; rings of small orders; the function SetNameObject
134
(Reference: SetNameObject) to set display names for objects for more
135
informative examples, e.g. constructing groups from named objects,
136
such as, for example, R90 for a 90-degree rotation).
137
138
 Functions DirectoryDesktop (Reference: DirectoryDesktop) and
139
DirectoryHome (Reference: DirectoryHome) which provide uniform access
140
to default directories under Windows, Mac OS X and Unix.
141
142
 Improved methods for hashing when computing orbits.
143
144
 Functionality to call external binaries under Windows.
145
146
 Symplectic groups over residue class rings, see SymplecticGroup
147
(Reference: SymplecticGroup).
148
149
 Basic version of the simplex algorithm for matrices.
150
151
 New functions, operations and attributes: PrimeDivisors (Reference:
152
PrimeDivisors), Shuffle (Reference: Shuffle) for lists,
153
IteratorOfPartitions (Reference: IteratorOfPartitions),
154
IteratorOfCombinations (Reference: IteratorOfCombinations),
155
EnumeratorOfCombinations (Reference: EnumeratorOfCombinations) and
156
others.
157
158
 The behaviour of Info (Reference: Info) statements can now be
159
configured per info class, this applies to the way the arguments are
160
printed and to the output stream, see 'Reference: Info Functions'.
161
162
 New function Test (Reference: Test) which is a more flexible and
163
informative substitute of ReadTest operation.
164
165
 ConnectGroupAndCharacterTable is replaced by more robust function
166
CharacterTableWithStoredGroup (Reference:
167
CharacterTableWithStoredGroup).
168
169
Many problems in GAP have have been fixed, among them the following:
170
171
 Polynomial factorisation over rationals could miss factors of degree
172
greater than deg(f)/2 if they have very small coefficients, while the
173
cofactor has large coefficients.
174
175
 IntermediateSubgroups (Reference: IntermediateSubgroups) called on a
176
group and a normal subgroup did not properly calculate maximal
177
inclusion relationships.
178
179
 CentreOfCharacter (Reference: CentreOfCharacter) and
180
ClassPositionsOfCentre (Reference: ClassPositionsOfCentre for a
181
character) called for a group character could return a perhaps too
182
large result.
183
184
 Trace (Reference: Traces of field elements and matrices) called for an
185
element of a finite field that was created with AlgebraicExtension
186
(Reference: AlgebraicExtension) ran into an error.
187
188
 IrreducibleRepresentationsDixon (Reference:
189
IrreducibleRepresentationsDixon) did not accept a list with one
190
character as a second argument.
191
192
 Composing a homomorphism from a permutation group to a finitely
193
presented group with another homomorphism could give wrong results.
194
195
 For certain arguments, the function EU (Reference: EU) returned wrong
196
results.
197
198
 In the table of marks of cyclic groups, NormalizersTom (Reference:
199
NormalizersTom) value was wrong.
200
201
 The function PermChars (Reference: PermChars) returned a perhaps wrong
202
result when the second argument was a positive integer (not a record)
203
and the trivial character of the character table given as the first
204
argument was not the first in the list of irreducibles.
205
206
 GAP crashed when the intersection of ranges became empty.
207
208
 IsPSL, and in turn StructureDescription (Reference:
209
StructureDescription), erroneously recognised non-PSL groups of the
210
right order as PSL.
211
212
 The semidirect product method for pcgs computable groups sometimes
213
tried to use finite presentations which were not polycyclic. This
214
usually happened when the groups were not pc groups, and there was a
215
very low risk of getting a wrong result.
216
217
 The membership test for a group of finite field elements ran into an
218
error if the zero element of the field was given as the first
219
argument.
220
221
 Constant polynomials were not recognised as univariate in any
222
variable.
223
224
 The kernel recursion depth counter was not reset properly when running
225
into many break loops.
226
227
 GAP did not behave well when printing of a (large) object was
228
interrupted with Ctrl-C. Now the object is no longer corrupted and the
229
indentation level is reset.
230
231
Potentially incompatible changes:
232
233
 The zero polynomial now has degree -infinity, see
234
DegreeOfLaurentPolynomial (Reference: DegreeOfLaurentPolynomial).
235
236
 Multiple unary + or - signs are no longer allowed (to avoid confusion
237
with increment/decrement operators from other programming languages).
238
239
 Due to changes to improve the performance of records with large number
240
of components, the ordering of record components in View'ed records
241
has changed.
242
243
 Due to improvements for vectors over finite fields, certain objects
244
have more limitations on changing their base field. For example, one
245
can not create a compressed matrix over GF(2) and then assign an
246
element of GF(4) to one of its entries.
247
248
No longer supported:
249
250
 Completion files mechanism.
251
252
 GAP 3 compatibility mode.
253
254
In addition, we no longer recommend using the GAP compiler gac to compile
255
GAP code to C, and may withdraw it in future releases. Compiling GAP code
256
only ever gave a substantial speedup for rather specific types of
257
calculation, and much more benefit can usually be achieved quite easily by
258
writing a small number of key functions in C and loading them into the
259
kernel as described in LoadDynamicModule (Reference: LoadDynamicModule). The
260
gac script will remain available as a convenient way of compiling such
261
kernel modules from C.
262
263
Also, the following functions and operations were made obsolete:
264
AffineOperation, AffineOperationLayer, FactorCosetOperation,
265
DisplayRevision, ProductPol, TeXObj, LaTeXObj.
266
267
268
5.1-2 Changes in distribution formats
269
270
The GAP 4.5 source distribution has the form of a single archive containing
271
the core system and the most recent stable versions of all currently
272
redistributed packages. There are no optional archives to download: the
273
TomLib package now contains all its tables of marks in one archive; we do
274
not provide separate versions of manuals for Internet Explorer, and the
275
former tools archive is now included as an archive in the etc directory. To
276
unpack and install the archive, user the script etc/install-tools.sh.
277
278
We no longer distribute separate bugfix archives when the core GAP system
279
changes, or updated packages archives when a redistributed package is
280
updated. Instead, the single GAP source distribution archive will be
281
labelled by the version of the core GAP system and also by a timestamp. This
282
archive contains the core system and the stable versions of the relevant
283
packages on that date. To upgrade, you simply replace the whole directory
284
containing the GAP installation, and rebuild binaries for the GAP kernel and
285
packages. For new versions of packages, we will also continue to
286
redistribute individual package archives so it will be possible to update a
287
single package without changing the rest of the GAP installation.
288
289
Furthermore, by default GAP will now automatically read a user-specific GAP
290
root directory (unless GAP is called with the -r option). All user settings
291
can be made in that directory, so there will be no risk of them being lost
292
during an update (see Section 5.1-3 below for more details). Private
293
packages can also be installed in this directory for the same reason.
294
295
There are some changes in archive formats used for the distribution: we
296
continue to provide .tar.gz, .tar.bz2 and -win.zip archives. We have added
297
.zip, and stopped providing .zoo archives. We no longer provide GAP binaries
298
for Mac OS 9 (Classic) any more. For installations from source on Mac OS X
299
one may follow the instructions for UNIX.
300
301
With the release of GAP 4.5, we also encourage more users to take advantage
302
of the increasingly mature binary distributions which are now available.
303
These include:
304
305
 The binary rsync distribution for GAP on Linux PCs with i686 or x86_64
306
compatible processors provided by Frank Lübeck, see
307
http://www.math.rwth-aachen.de/~Frank.Luebeck/gap/rsync.
308
309
 BOB, a tool for Linux and Mac OS X to download and build GAP and its
310
packages from source provided by M. Neunhöffer:
311
http://www-groups.mcs.st-and.ac.uk/~neunhoef/Computer/Software/Gap/bob.html.
312
313
 The GAP installer for Windows provided by Alexander Konovalov:
314
https://www.gap-system.org/ukrgap/wininst/.
315
316
In the near future, we also hope to have a binary distribution for Mac OS X.
317
318
Internally, we now have infrastructure to support more robust and frequent
319
releases, and an improved system to fetch and test new versions of the
320
increasingly large number of packages. The Example package documents
321
technical requirements for packages, many of which are checked automatically
322
by our systems. This will allow us to check the compatibility of packages
323
with the system and with other packages more thoroughly before publishing
324
them on the GAP website.
325
326
327
5.1-3 Improvements to the user interface
328
329
By default, GAP now uses the readline library for command line editing. It
330
provides such advantages as working with unicode terminals, nicer handling
331
of long input lines, improved TAB-completion and flexible configuration. For
332
further details, see 'Reference: Editing using the readline library'.
333
334
We have extended facilities for user interface customisation. By default GAP
335
automatically scans a user specific GAP root directory (unless GAP is called
336
with the -r option). The name of this user specific directory depends on the
337
operating system and is contained in GAPInfo.UserGapRoot. This directory can
338
be used to tell GAP about personal preferences, to load some additional
339
code, to install additional packages, or to overwrite some GAP files, see
340
'Reference: GAP Root Directories'. Instead of a single .gaprc file we now
341
use more flexible setup based on two files: gap.ini which is read early in
342
the startup process, and gaprc which is read after the startup process, but
343
before the first input file given on the command line. These files may be
344
located in the user specific GAP root directory GAPInfo.UserGapRoot which by
345
default is the first GAP root directory, see 'Reference: The gap.ini and
346
gaprc files'. For compatibility, the .gaprc file is still read if the
347
directory GAPInfo.UserGapRoot does not exist. See 'Reference: The former
348
.gaprc file' for the instructions how to migrate your old setup.
349
350
Furthermore, there are functions to deal with user preferences, for example,
351
to specify how GAP's online help is shown or whether the coloured prompt
352
should be used. Calls to set user preferences may appear in the user's
353
gap.ini file, as explained in 'Reference: Configuring User preferences'.
354
355
In the Windows version, we include a new shell which uses the mintty
356
terminal in addition to the two previously used shells (Windows command line
357
and RXVT). The mintty shell is now recommended. It supports Unicode encoding
358
and has flexible configurations options. Also, GAP under Windows now starts
359
in the %HOMEDRIVE%%HOMEPATH% directory, which is the user's home directory.
360
Besides this, a larger workspace is now permitted without a need to modify
361
the Windows registry.
362
363
Other changes in the user interface include:
364
365
 the command line history is now implemented at the GAP level, it can
366
be stored on quitting a GAP session and reread when starting a new
367
session, see 'Reference: The command line history'.
368
369
 SetPrintFormattingStatus("stdout",false); may be used to switch off
370
the automatic line breaking in terminal output, see
371
SetPrintFormattingStatus (Reference: SetPrintFormattingStatus).
372
373
 GAP supports terminals with up to 4096 columns (extendable at compile
374
time).
375
376
 Directories in -l command-line option can now be specified starting
377
with ~/, see 'Reference: Command Line Options'.
378
379
 Large integers are now displayed by a short string showing the first
380
and last few digits, and the threshold to trigger this behaviour is
381
user configurable (call UserPreference("MaxBitsIntView") to see the
382
default value).
383
384
 The GAP banner has been made more compact and informative.
385
386
 SetHelpViewer (Reference: SetHelpViewer) now supports the Google
387
Chrome browser.
388
389
 Multiple matches in the GAP online help are displayed via a function
390
from the Browse package, which is loaded in the default configuration.
391
This feature can be replaced by the known pager using the command
392
393
SetUserPreference( "browse", "SelectHelpMatches", false );
394
395
396
5.1-4 Better documentation
397
398
The main GAP manuals have been converted to the GAPDoc format provided by
399
the GAPDoc package by Frank Lübeck and Max Neunhöffer
400
(http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc). This documentation
401
format is already used by many packages and is now recommended for all GAP
402
documentation.
403
404
Besides improvements to the documentation layout in all formats (text, PDF
405
and HTML), the new GAP manuals incorporate a large number of corrections,
406
clarifications, additions and updated examples.
407
408
We now provide two HTML versions of the manual, one of them with MathJax
409
(http://www.mathjax.org) support for better display of mathematical symbols.
410
Also, there are two PDF versions of the manual - a coloured and a monochrome
411
one.
412
413
Several separate manuals now became parts of the GAP Reference manual. Thus,
414
now there are three main GAP manual books:
415
416
 GAP Tutorial
417
418
 GAP Reference manual
419
420
 GAP - Changes from Earlier Versions (this manual)
421
422
Note that there is no index file combining these three manuals. Instead of
423
that, please use the GAP help system which will search all of these and
424
about 100 package manuals.
425
426
427
5.2 Packages in GAP 4.5
428
429
Here we list most important changes affecting packages and present new or
430
essentially changed packages. For the changes in the core GAP system, see
431
Section 5.1.
432
433
434
5.2-1 Interface between the core system and packages
435
436
The package loading mechanism has been improved. The most important new
437
feature is that all dependencies are evaluated in advance and then used to
438
determine the order in which package files are read. This allows GAP to
439
handle cyclic dependencies as well as situations where package A requires
440
package B to be loaded completely before any file of package A is read. To
441
avoid distortions of the order in which packages will be loaded, package
442
authors are strongly discouraged from calling LoadPackage (Reference:
443
LoadPackage) and TestPackageAvailability (Reference:
444
TestPackageAvailability) in a package code in order to determine whether
445
some other package will be loaded before or together with the current
446
package - instead, one should use IsPackageMarkedForLoading (Reference:
447
IsPackageMarkedForLoading). In addition, there is now a better error
448
management if package loading fails for packages that use the new
449
functionality to log package loading messages (see DisplayPackageLoadingLog
450
(Reference: DisplayPackageLoadingLog) and the rest of the Chapter
451
'Reference: Using GAP Packages' which documents how to use GAP packages),
452
and package authors are very much encouraged to use these logging
453
facilities.
454
455
In GAP 4.4 certain packages were marked as autoloaded and would be loaded,
456
if present, when GAP started up. In GAP 4.5, this notion is divided into
457
three. Certain packages are recorded as needed by the GAP system and others
458
as suggested, in the same way that packages may need or suggest other
459
packages. If a needed package is not loadable, GAP will not start. Currently
460
only GAPDoc is needed. If a suggested package is loadable, it will be
461
loaded. Typically these are packages which install better methods for
462
Operations and Objects already present in GAP. Finally, the user preferences
463
mechanism can be used to specify additional packages that should be loaded
464
if possible. By default this includes most packages that were autoloaded in
465
GAP 4.4.12, see ShowUserPreferences (Reference: ShowUserPreferences).
466
467
GAP packages may now use local namespaces to avoid name clashes for global
468
variables introduced in other packages or in the GAP library, see
469
'Reference: Namespaces for GAP packages'.
470
471
All guidance on how to develop a GAP package has been consolidated in the
472
Example package which also contains a checklist for upgrading a GAP package
473
to GAP 4.5, see 'Example: Guidelines for Writing a GAP Package'.
474
475
476
5.2-2 New and updated packages since GAP 4.4.12
477
478
At the time of the release of GAP 4.4.12 there were 75 packages
479
redistributed with GAP (including the TomLib which was distributed in the
480
core GAP archive). The first public release of GAP 4.5 contains precisely 99
481
packages.
482
483
The new packages that have been added to the redistribution since the
484
release of GAP 4.4.12 are:
485
486
 Citrus package by J.D. Mitchell for computations with transformation
487
semigroups and monoids (this package is a replacement of the Monoid
488
package).
489
490
 cvec package by M. Neunhöffer, providing an implementation of compact
491
vectors over finite fields.
492
493
 fwtree package by B. Eick and T. Rossmann for computing trees related
494
to some pro-p-groups of finite width.
495
496
 GBNP package by A.M. Cohen and J.W. Knopper, providing algorithms for
497
computing Grobner bases of noncommutative polynomials over fields with
498
respect to the total degree first then lexicographical ordering.
499
500
 genss package by M. Neunhöffer and F. Noeske, implementing the
501
randomised Schreier-Sims algorithm to compute a stabiliser chain and a
502
base and a strong generating set for arbitrary finite groups.
503
504
 HAPprime package by P. Smith, extending the HAP package with an
505
implementation of memory-efficient algorithms for the calculation of
506
resolutions of small prime-power groups.
507
508
 hecke package by D. Traytel, providing functions for calculating
509
decomposition matrices of Hecke algebras of the symmetric groups and
510
q-Schur algebras (this package is a port of the GAP 3 package Specht
511
2.4 to GAP 4).
512
513
 Homalg project by M. Barakat, S. Gutsche, M. Lange-Hegermann et al.,
514
containing the following packages for the homological algebra: homalg,
515
ExamplesForHomalg, Gauss, GaussForHomalg, GradedModules,
516
GradedRingForHomalg, HomalgToCAS, IO_ForHomalg, LocalizeRingForHomalg,
517
MatricesForHomalg, Modules, RingsForHomalg and SCO (see
518
http://homalg.math.rwth-aachen.de/).
519
520
 MapClass package by A. James, K. Magaard and S. Shpectorov to
521
calculate the mapping class group orbits for a given finite group.
522
523
 recogbase package by M. Neunhöffer and A. Seress, providing a
524
framework to implement group recognition methods in a generic way
525
(suitable, in particular, for permutation groups, matrix groups,
526
projective groups and black box groups).
527
528
 recog package by M. Neunhöffer, A. Seress, N. Ankaralioglu, P.
529
Brooksbank, F. Celler, S. Howe, M. Law, S. Linton, G. Malle, A.
530
Niemeyer, E. O'Brien and C.M. Roney-Dougal, extending the recogbase
531
package and provides a collection of methods for the constructive
532
recognition of groups (mostly intended for permutation groups, matrix
533
groups and projective groups).
534
535
 SCSCP package by A. Konovalov and S. Linton, implementing the Symbolic
536
Computation Software Composability Protocol (SCSCP, see
537
http://www.symbolic-computation.org/scscp) for GAP, which provides
538
interfaces to link a GAP instance with another copy of GAP or other
539
SCSCP-compliant system running locally or remotely.
540
541
 simpcomp package by F. Effenberger and J. Spreer for working with
542
simplicial complexes.
543
544
 Smallsemi package by A. Distler and J.D. Mitchell, containing the data
545
library of all semigroups with at most 8 elements as well as various
546
information about them.
547
548
 SymbCompCC package by D. Feichtenschlager for computations with
549
parametrised presentations for finite p-groups of fixed coclass.
550
551
Furthermore, some packages have been upgraded substantially since the
552
GAP 4.4.12 release:
553
554
 Alnuth package by B. Assmann, A. Distler and B. Eick uses an interface
555
to PARI/GP system instead of the interface to KANT (thanks to B.
556
Allombert for the GP code for the new interface and help with the
557
transition) and now also works under Windows.
558
559
 CTblLib package (the GAP Character Table Library) by T. Breuer has
560
been extended by many new character tables, a few bugs have been
561
fixed, and new features have been added, for example concerning the
562
relation to GAP's group libraries, better search facilities, and
563
interactive overviews. For details, see the package manual.
564
565
 DESIGN package by L.H. Soicher:
566
567
 The functions PointBlockIncidenceMatrix, ConcurrenceMatrix, and
568
InformationMatrix compute matrices associated with block
569
designs.
570
571
 The function BlockDesignEfficiency computes certain statistical
572
efficiency measures of a 1-(v,k,r) design, using exact algebraic
573
computation.
574
575
 Example package by W. Nickel, G. Gamble and A. Konovalov has a more
576
detailed and up-to-date guidance on developing a GAP package, see
577
'Example: Guidelines for Writing a GAP Package'.
578
579
 FR package by L. Bartholdi now uses floating-point numbers to compute
580
approximations of rational maps given by their group-theoretical
581
description.
582
583
 The GAPDoc package by F. Lübeck and M. Neunhöffer provides various
584
improvements, for example:
585
586
 The layout of the text version of the manuals can be configured
587
quite freely, several standard themes are provided. The display
588
is now adjusted to the current screen width.
589
590
 Some details of the layout of the HTML version of the manuals
591
can now be configured by the user. All manuals are available
592
with and without MathJax support for display of mathematical
593
formulae.
594
595
 The text and HTML versions of manuals make more use of unicode
596
characters (but the text version is also still reasonably good
597
on terminals with latin1 or ASCII encoding).
598
599
 The PDF version of the manuals uses better fonts.
600
601
 Of course, there are various improvements for authors of manuals
602
as well, for example new functions ExtractExamples (GAPDoc:
603
ExtractExamples) and RunExamples (GAPDoc: RunExamples) for
604
automatic testing and correcting of manual examples.
605
606
 Gpd package by E.J. Moore and C.D. Wensley has been substantially
607
rewritten. The main extensions provide functions for:
608
609
 Subgroupoids of a direct product with complete graph groupoid,
610
specified by a root group and choice of rays.
611
612
 Automorphisms of finite groupoids - by object permutations; by
613
root group automorphisms; and by ray images.
614
615
 The automorphism group of a finite groupoid together with an
616
isomorphism to a quotient of permutation groups.
617
618
 Homogeneous groupoids (unions of isomorphic groupoids) and their
619
morphisms, in particular homogeneous discrete groupoids: the
620
latter are used in constructing crossed modules of groupoids in
621
the XMod package.
622
623
 GRAPE package by L.H. Soicher:
624
625
 With much help from A. Hulpke, the interface between GRAPE and
626
dreadnaut is now done entirely in GAP code.
627
628
 A 32-bit nauty/dreadnaut binary for Windows (XP and later) is
629
included with GRAPE, so now GRAPE provides full functionality
630
under Windows, with no installation necessary.
631
632
 Graphs with ordered partitions of their vertices into
633
colour-classes are now handled by the graph automorphism group
634
and isomorphism testing functions. An automorphism of a graph
635
with colour-classes is an automorphism of the graph which
636
additionally preserves the list of colour-classes (classwise),
637
and an isomorphism from one graph with colour-classes to a
638
second is a graph isomorphism from the first graph to the second
639
which additionally maps the first list of colour-classes to the
640
second (classwise).
641
642
 The GAP code and old standalone programs for the undocumented
643
functions Enum and EnumColadj have been removed as their
644
functionality can now largely be handled by current documented
645
GAP and GRAPE functions.
646
647
 IO package by M. Neunhöffer:
648
649
 New build system to allow for more flexibility regarding the use
650
of compiler options and adjusting to GAP 4.5.
651
652
 New functions to access time like IO_gettimeofday, IO_gmtime and
653
IO_localtime.
654
655
 Some parallel skeletons built on fork like: ParListByFork,
656
ParMapReduceByFork, ParTakeFirstResultByFork and
657
ParWorkerFarmByFork.
658
659
 IOHub objects for automatic I/O multiplexing.
660
661
 New functions IO_gethostbyname and IO_getsockname.
662
663
 IRREDSOL package by B. Höfling now covers all irreducible soluble
664
subgroups of GL(n,q) for q^n < 1000000 and primitive soluble
665
permutation groups of degree < 1000000 (previously, the bound was
666
65536). It also has faster group recognition and adds a few omissions
667
for GL(3,8) and GL(6,5).
668
669
 ParGAP package by G. Cooperman is now compiled using a system-wide MPI
670
implementation by default to facilitate running it on proper clusters.
671
There is also an option to build it with the MPINU library which is
672
still supplied with the package (thanks to P. Smith for upgrading
673
ParGAP build process).
674
675
 OpenMath package by M. Costantini, A. Konovalov, M. Nicosia and A.
676
Solomon now supports much more OpenMath symbols to facilitate
677
communication by the remote procedure call protocol implemented in the
678
SCSCP package. Also, a third-party external library to support binary
679
OpenMath encoding has been replaced by a proper implementation made
680
entirely in GAP.
681
682
 Orb package by J. Müller, M. Neunhöffer and F. Noeske:
683
684
There have been numerous improvements to this package:
685
686
 A new fast implementation of AVL trees (balanced binary trees)
687
in C.
688
689
 New interface to hash table functionality and implementation in
690
C for speedup.
691
692
 Some new hash functions for various object types like
693
transformations.
694
695
 New function ORB_EstimateOrbitSize using the birthday paradox.
696
697
 Improved functionality for product replacer objects.
698
699
 New tree hash tables.
700
701
 New functionality to compute weak and strong orbits for
702
semigroups and monoids.
703
704
 OrbitGraph for Orb orbits.
705
706
 Fast C kernel methods for the following functions:
707
708
PermLeftQuoTransformationNC, MappingPermSetSet,
709
MappingPermListList, ImageSetOfTransformation, and
710
KernelOfTransformation.
711
712
 New build system to allow for more flexibility regarding the use
713
of compiler options and to adjust to GAP 4.5.
714
715
 RCWA package by S. Kohl among the new features and other improvements
716
has the following:
717
718
 A database of all 52394 groups generated by 3 class
719
transpositions of ℤ which interchange residue classes with
720
modulus less than or equal to 6. This database contains the
721
orders and the moduli of all of these groups. Also it provides
722
information on what is known about which of these groups are
723
equal and how their finite and infinite orbits on ℤ look like.
724
725
 More routines for investigating the action of an rcwa group on
726
ℤ. Examples are a routine which attempts to find out whether a
727
given rcwa group acts transitively on the set of nonnegative
728
integers in its support and a routine which looks for finite
729
orbits on the set of all residue classes of ℤ.
730
731
 Ability to deal with rcwa permutations of ℤ^2.
732
733
 Important methods have been made more efficient in terms of
734
runtime and memory consumption.
735
736
 The output has been improved. For example, rcwa permutations are
737
now Display'ed in ASCII text resembling LaTeX output.
738
739
 The XGAP package by F. Celler and M. Neunhöffer can now be used on
740
64-bit architectures (thanks to N. Eldredge and M. Horn for sending
741
patches). Furthermore, there is now an export to XFig option (thanks
742
to Russ Woodroofe for this patch). The help system in XGAP has been
743
adjusted to GAP 4.5.
744
745
 Additionally, some packages with kernel modules or external binaries
746
are now available in Windows. The -win.zip archive and the GAP
747
installer for Windows include working versions of the following
748
packages: Browse, cvec, EDIM, GRAPE, IO and orb, which were previously
749
unavailable for Windows users.
750
751
Finally, the following packages are withdrawn:
752
753
 IF package by M. Costantini is unmaintained and no longer usable. More
754
advanced functionality for interfaces to other computer algebra
755
systems is now available in the SCSCP package by A. Konovalov and S.
756
Linton.
757
758
 Monoid package by J. Mitchell is superseded by the Citrus package by
759
the same author.
760
761
 NQL package by R. Hartung has been withdrawn by the author.
762
763
764
5.3 GAP 4.5.5 (July 2012)
765
766
Fixed bugs which could lead to crashes:
767
768
 For small primes (compact fields) ZmodnZObj(r,p) now returns the
769
corresponding FFE to avoid crashes when compacting matrices. [Reported
770
by Ignat Soroko]
771
772
Other fixed bugs:
773
774
 Fixed a bug in CommutatorSubgroup (Reference: CommutatorSubgroup) for
775
fp groups causing infinite recursion, which could, for example, be
776
triggered by computing automorphism groups.
777
778
 Previously, the list of factors of a polynomial was mutable, and hence
779
could be accidentally corrupted by callers. Now the list of
780
irreducible factors is stored immutable. To deal with implicit
781
reliance on old code, always a shallow copy is returned. [reported by
782
Jakob Kroeker]
783
784
 Computing high powers of matrices ran into an error for matrices in
785
the format of the cvec package. Now the library function also works
786
with these matrices. [reported by Klaus Lux]
787
788
 The pseudo tty code which is responsible for spawning subprocesses has
789
been partially rewritten to allow more than 128 subprocesses on
790
certain systems. This mechanism is for example used by ANUPQ and nq
791
packages to compute group quotients via an external program.
792
Previously, on Mac OS X this could be done precisely 128 times, and
793
then an error would occur. That is, one could e.g. compute 128
794
nilpotent quotients, and then had to restart GAP to compute more. This
795
also affected other systems, such as OpenBSD, where it now also works
796
correctly.
797
798
 On Mac OS X, using GAP compiled against GNU readline 6.2, pasting text
799
into the terminal session would result in this text appearing very
800
slowly, with a 0.1 sec delay between each keystroke. This is not the
801
case with versions 6.1 and older, and has been reported to the GNU
802
readline team. In the meantime, we work around this issue in most
803
situations by setting rl_event_hook only if OnCharReadHookActive is
804
set.
805
806
 ShowUserPreferences (Reference: ShowUserPreferences) ran into a break
807
loop in case of several undeclared user preferences. [Reported by
808
James Mitchell]
809
810
 GAP did not start correctly if the user preference
811
"InfoPackageLoadingLevel" was set to a number >= 3. The reason is that
812
PrintFormattedString was called before it was installed. The current
813
fix is a temporary solution.
814
815
 The "hints" member of TypOutputFile used to contain 3*100 entries, yet
816
addLineBreakHint would write entries with index up to and including
817
3*99+3=300, leading to a buffer overflow. This would end up
818
overwriting the "stream" member with -1. Fixed by incrementing the
819
size of "hints" to 301. [Reported by Jakob Kroeker]
820
821
 The function IsDocumentedWord tested the given word against strings
822
obtained by splitting help matches at non-letter characters. This way,
823
variable names containing underscores or digits were erroneously not
824
regarded as documented, and certain substrings of these names were
825
erroneously regarded as documented.
826
827
 On Windows, an error occurred if one tried to use the default Windows
828
browser as a help viewer (see SetHelpViewer (Reference:
829
SetHelpViewer)). Now the browser opens the top of the correspoding
830
manual chapter. The current fix is a temporary solution since the
831
problem remains with the positioning at the required manual section.
832
833
Improved functionality:
834
835
 WriteGapIniFile (Reference: WriteGapIniFile) on Windows now produces
836
the gap.ini file with Windows style line breaks. Also, an info message
837
is now printed if an existing gap.ini file was moved to a backup file
838
gap.ini.bak.
839
840
 The CTblLib and TomLib packages are removed from the list of suggested
841
packages of the core part of GAP. Instead they are added to the
842
default list of the user preference "PackagesToLoad". This way it is
843
possible to configure GAP to not load these packages via changing the
844
default value of "PackagesToLoad".
845
846
 The conjugacy test in S_n for intransitive subgroups was improved.
847
This deals with inefficiency issue in the case reported by Stefan
848
Kohl.
849
850
 Added InstallAndCallPostRestore to lib/system.g and call it in
851
lib/init.g instead of CallAndInstallPostRestore for the function that
852
reads the files listed in GAP command line. This fixes the problem
853
reported by Yevgen Muntyan when SaveWorkspace (Reference:
854
SaveWorkspace) was used in a file listed in GAP command line (before,
855
according to the documentation, SaveWorkspace (Reference:
856
SaveWorkspace) was only allowed at the main GAP prompt).
857
858
 There is now a new user preference PackagesToIgnore, see
859
SetUserPreference (Reference: SetUserPreference). It contains a list
860
of names of packages that shall be regarded as not available at all in
861
the current session, both for autoloading and for later calls of
862
LoadPackage (Reference: LoadPackage). This preference is useful for
863
testing purposes if one wants to run some code without loading certain
864
packages.
865
866
867
5.4 GAP 4.5.6 (September 2012)
868
869
Improved functionality:
870
871
 The argument of SaveWorkspace (Reference: SaveWorkspace) can now start
872
with ~/ which is expanded to the users home directory.
873
874
 Added the method for Iterator (Reference: Iterator) for
875
PositiveIntegers (Reference: PositiveIntegers). [Suggested by Attila
876
Egri-Nagy].
877
878
 Changed kernel tables such that list access functionality for
879
T_SINGULAR objects can be installed by methods at the GAP level.
880
881
 In case of saved history, UP arrow after starting GAP yields last
882
stored line. The user preference HistoryMaxLines is now used when
883
storing and saving history (see SetUserPreference (Reference:
884
SetUserPreference)).
885
886
Fixed bugs which could lead to crashes:
887
888
 A crash occuring during garbage collection following a call to
889
AClosVec for a GF(2) code. [Reported by Volker Braun]
890
891
 A crash when parsing certain syntactically invalid code. [Reported by
892
multiple users]
893
894
 Fixed and improved command line editing without readline support.
895
Fixed a segfault which could be triggered by a combination of UP and
896
DOWN arrows. [Reported by James Mitchell]
897
898
 Fixed a bug in the kernel code for floats that caused a crash on SPARC
899
Solaris in 32-bit mode. [Reported by Volker Braun]
900
901
Other fixed bugs:
902
903
 Very large (more than 1024 digit) integers were not being coded
904
correctly in function bodies unless the integer limb size was 16 bits.
905
[Reported by Stefan Kohl]
906
907
 An old variable was used in assertion, causing errors in a debugging
908
compilation. [Reported by Volker Braun]
909
910
 The environment variable PAGER is now correctly interpreted when it
911
contains the full path to the pager program. Furthermore, if the
912
external pager less is found from the environment it is made sure that
913
the option -r is used (same for more -f). [Reported by Benjamin
914
Lorenz]
915
916
 Fixed a bug in PermliftSeries. [Reported by Aiichi Yamasaki]
917
918
 Fixed discarder function in lattice computation to distinguish general
919
and zuppo discarder. [Reported by Leonard Soicher]
920
921
 The GL (Reference: GL for dimension and a ring) and SL (Reference: SL
922
for dimension and a ring) constructors did not correctly handle
923
GL(filter,dim,ring).
924
925
 The names of two primitive groups of degree 64 were incorrect.
926
927
 The \in (Reference: \in operation for testing membership) method for
928
groups handled by a nice monomorphism sometimes could produce an error
929
in situations where it should return false. This only happened when
930
using SeedFaithfulAction to influence how NiceMonomorphism (Reference:
931
NiceMonomorphism) builds the nice monomorphims for a matrix groups.
932
933
 Wrong PrintObj (Reference: PrintObj) method was removed to fix
934
delegations accordingly to 'Reference: View and Print'.
935
936
 Fixed a method for Coefficients (Reference: Coefficients) which, after
937
Gaussian elimination, did not check that the coefficients actually lie
938
in the left-acting-domain of the vector space. This could lead to a
939
wrong answer in a vector space membership test. [Reported by Kevin
940
Watkins]
941
942
Improved documentation:
943
944
 Removed outdated statements from the documentation of
945
StructureDescription (Reference: StructureDescription) which now
946
non-ambiguosly states that StructureDescription is not an isomorphism
947
invariant: non-isomorphic groups can have the same string value, and
948
two isomorphic groups in different representations can produce
949
different strings.
950
951
 GAP now allows overloading of a loaded help book by another one. In
952
this case, only a warning is printed and no error is raised. This
953
makes sense if a book of a not loaded package is loaded in a workspace
954
and then GAP is started with a root path that contains a newer
955
version. [Reported by Sebastian Gutsche]
956
957
 Provided a better description of user preferences mechanism
958
('Reference: Configuring User preferences') and a hint to familiarise
959
with them using WriteGapIniFile (Reference: WriteGapIniFile) function
960
to create a file which contains descriptions of all known user
961
preferences and also sets those user preferences which currently do
962
not have their default value. One can then edit that file to customize
963
(further) the user preferences for future GAP sessions.
964
965
New packages added for the redistribution with GAP:
966
967
 AutoDoc package by S. Gutsche, providing tools for automated
968
generation of GAPDoc manuals.
969
970
 Convex package by S. Gutsche, which provides structures and algorithms
971
for convex geometry.
972
973
 PolymakeInterface package by T. Baechler and S. Gutsche, providing a
974
link to the callable library of the polymake system
975
(http://www.polymake.org).
976
977
 ToolsForHomalg package by M. Barakat, S. Gutsche and M.
978
Lange-Hegermann, which provides some auxiliary functionality for the
979
homalg project (http://homalg.math.rwth-aachen.de/).
980
981
982
5.5 GAP 4.5.7 (December 2012)
983
984
Fixed bugs which could lead to crashes:
985
986
 Closing with LogInputTo (or LogOutputTo) a logfile opened with LogTo
987
(Reference: LogTo) left the data structures corrupted, resulting in a
988
crash.
989
990
 On 32-bit systems we can have long integers n such that Log2Int(n) is
991
not an immediate integer. In such cases Log2Int gave wrong or
992
corrupted results which in turn could crash GAP, e.g., in ViewObj(n).
993
994
 Some patterns of use of UpEnv (Reference: UpEnv) and DownEnv
995
(Reference: DownEnv) were leading to a segfault.
996
997
Other fixed bugs:
998
999
 Viewing of long negative integers was broken, because it went into a
1000
break loop.
1001
1002
 Division by zero in ZmodnZ (Reference: ZmodnZ) (n not prime) produced
1003
invalid objects. [Reported by Mark Dickinson]
1004
1005
 Fixed a bug in determining multiplicative inverse for a zero
1006
polynomial.
1007
1008
 Fixed a bug causing infinite recursion in
1009
NaturalHomomorphismByNormalSubgroup (Reference:
1010
NaturalHomomorphismByNormalSubgroup).
1011
1012
 A workaround was added to deal with a package method creating pcgs for
1013
permutation groups for which the entry permpcgsNormalSteps is missing.
1014
1015
 For a semigroup of associative words that is not the full semigroup of
1016
all associative words, the methods for Size (Reference: Size) and
1017
IsTrivial (Reference: IsTrivial) called one another causing infinite
1018
recursion.
1019
1020
 The 64-bit version of the gac script produced wrong (>= 2^31) CRC
1021
values because of an integer conversion problem.
1022
1023
 It was not possible to compile GAP on some systems where HAVE_SELECT
1024
detects as false.
1025
1026
 Numbers in memory options on the command line exceeding 2^32 could not
1027
be parsed correctly, even on 64-bit systems. [Reported by Volker
1028
Braun]
1029
1030
New packages added for the redistribution with GAP:
1031
1032
 Float package by L. Bartholdi, which extends GAP floating-point
1033
capabilities by providing new floating-point handlers for
1034
high-precision real, interval and complex arithmetic using MPFR, MPFI,
1035
MPC or CXSC external libraries. It also contains a very
1036
high-performance implementation of the LLL (Lenstra-Lenstra-Lovász)
1037
lattice reduction algorithm via the external library FPLLL.
1038
1039
 ToricVarieties package by S. Gutsche, which provides data structures
1040
to handle toric varieties by their commutative algebra structure and
1041
by their combinatorics.
1042
1043
1044