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
3 Changes between GAP 4.6 and GAP 4.7
3
4
This chapter contains an overview of most important changes introduced in
5
GAP 4.7.2 release (the first public release of GAP 4.7). It also contains
6
information about subsequent update releases for GAP 4.7.
7
8
9
3.1 GAP 4.7.2 (December 2013)
10
11
12
3.1-1 Changes in the core GAP system introduced in GAP 4.7
13
14
Improved and extended functionality:
15
16
 The methods for computing conjugacy classes of permutation groups have
17
been rewritten from scratch to enable potential use for groups in
18
different representations. As a byproduct the resulting code is
19
(sometimes notably) faster. It also now is possible to calculate
20
canonical conjugacy class representatives in permutation groups, which
21
can be beneficial when calculating character tables.
22
23
 The methods for determining (conjugacy classes of) subgroups in
24
non-solvable groups have been substantially improved in speed and
25
scope for groups with multiple nonabelian composition factors.
26
27
 There is a new method for calculating the maximal subgroups of a
28
permutation group (with chief factors of width less or equal 5)
29
without calculating the whole subgroup lattice.
30
31
 If available, information from the table of marks library is used to
32
speed up subgroup calculations in almost simple factor groups.
33
34
 The broader availability of maximal subgroups is used to improve the
35
calculation of double cosets.
36
37
 To illustrate the improvements listed above, one could try, for
38
example
39
40
  Example 
41
g:=WreathProduct(MathieuGroup(11),Group((1,2)));
42
Length(ConjugacyClassesSubgroups(g));
43

44
45
and
46
47
  Example 
48
g:=SemidirectProduct(GL(3,5),GF(5)^3);
49
g:=Image(IsomorphismPermGroup(g));
50
MaximalSubgroupClassReps(g);
51

52
53
 Computing the exponent of a finite group G could be extremely slow.
54
This was due to a slow default method being used, which computed all
55
conjugacy classes of elements in order to compute the exponent. We now
56
instead compute Sylow subgroups P_1, ..., P_k of G and use the easily
57
verified equality exp(G) = exp(P_1) x ... x exp(P_k). This is usually
58
at least as fast and in many cases orders of magnitude faster.
59
60
  Example 
61
gap> G:=SmallGroup(2^7*9,33);;
62
gap> H:=DirectProduct(G, ElementaryAbelianGroup(2^10));;
63
gap> Exponent(H); # should take at most a few milliseconds
64
72
65
gap> K := PerfectGroup(2688,3);;
66
gap> Exponent(K); # should take at most a few seconds
67
168
68

69
70
 The functionality in GAP for transformations and transformation
71
semigroups has been rewritten and extended. Partial permutations and
72
inverse semigroups have been newly implemented. The documentation for
73
transformations and transformation semigroups has been improved.
74
Transformations and partial permutations are implemented in the GAP
75
kernel. Methods for calculating attributes of transformations and
76
partial permutations, and taking products, and so are also implemented
77
in the kernel. The new implementations are largely backwards
78
compatible; some exceptions are given below.
79
80
The degree of a transformation f is usually defined as the largest
81
positive integer where f is defined. In previous versions of GAP,
82
transformations were only defined on positive integers less than their
83
degree, it was only possible to multiply transformations of equal
84
degree, and a transformation did not act on any point exceeding its
85
degree. Starting with GAP 4.7, transformations behave more like
86
permutations, in that they fix unspecified points and it is possible
87
to multiply arbitrary transformations.
88
89
 in the display of a transformation, the trailing fixed points
90
are no longer printed. More precisely, in the display of a
91
transformation f if n is the largest value such that n^f<>n or
92
i^f=n for some i<>n, then the values exceeding n are not
93
printed.
94
95
 the display for semigroups of transformations now includes more
96
information, for example <transformation semigroup on 10 pts
97
with 10 generators> and <inverse partial perm semigroup on 10
98
pts with 10 generators>.
99
100
 transformations which define a permutation can be inverted, and
101
groups of transformations can be created.
102
103
Further information regarding transformations and partial
104
permutations, can be found in the relevant chapters of the reference
105
manual.
106
107
The code for Rees matrix semigroups has been completely rewritten to
108
fix the numerous bugs in the previous versions. The display of a Rees
109
matrix semigroup has also been improved to include the numbers of rows
110
and columns, and the underlying semigroup. Again the new
111
implementations should be backwards compatible with the exception that
112
the display is different.
113
114
The code for magmas with a zero adjoined has been improved so that it
115
is possible to access more information about the original magma. The
116
display has also been changed to indicate that the created magma is a
117
magma with zero adjoined (incorporating the display of the underlying
118
magma). Elements of a magma with zero are also printed so that it is
119
clear that they belong to a magma with zero.
120
121
If a semigroup is created by generators in the category
122
IsMultiplicativeElementWithOneCollection and CanEasilyCompareElements,
123
then it is now checked if the One of the generators is given as a
124
generator. In this case, the semigroup is created as a monoid.
125
126
 Added a new operation GrowthFunctionOfGroup (Reference:
127
GrowthFunctionOfGroup) that gives sizes of distance spheres in the
128
Cayley graph of a group.
129
130
 A new group constructor FreeAbelianGroup (Reference: FreeAbelianGroup)
131
for free abelian groups has been added. By default, it creates
132
suitable fp groups. Though free abelian groups groups do not offer
133
much functionality right now, in the future other implementations may
134
be provided, e.g. by the Polycyclic package.
135
136
 The message about halving the pool size at startup is only shown when
137
-D command line option is used (see 'Reference: Command Line
138
Options'). [Suggested by Volker Braun]
139
140
 An info class called InfoObsolete (Reference: InfoObsolete) with the
141
default level 0 is introduced. Setting it to 1 will trigger warnings
142
at runtime if an obsolete variable declared with
143
DeclareObsoleteSynonym is used. This is recommended for testing GAP
144
distribution and packages.
145
146
 The GAP help system now recognises some common different spelling
147
patterns (for example, -ise/-ize, -isation/-ization, solvable/soluble)
148
and searches for all possible spelling options even when the synonyms
149
are not declared.
150
151
 Added new function Cite (Reference: Cite) which produces citation
152
samples for GAP and packages.
153
154
 It is now possible to compile GAP with user-supplied CFLAGS which now
155
will not be overwritten by GAP default settings. [Suggested by Jeroen
156
Demeyer]
157
158
Fixed bugs:
159
160
 Union (Reference: Union) had O(n^3) behaviour when given many ranges
161
(e.g. it could take 10 seconds to find a union of 1000 1-element
162
sets). The new implementation reduces that to O(n log n) (and 4ms for
163
the 10 second example), at the cost of not merging ranges as well as
164
before in some rare cases.
165
166
 IsLatticeOrderBinaryRelation only checked the existence of upper
167
bounds but not the uniqueness of the least upper bound (and dually for
168
lower bounds), so in some cases it could return the wrong answer.
169
[Reported by Attila Egri-Nagy]
170
171
 LowIndexSubgroupsFpGroup (Reference: LowIndexSubgroupsFpGroup)
172
triggered a break loop if the list of generators of the 2nd argument
173
contained the identity element of the group. [Reported by Ignat
174
Soroko]
175
176
 Fixed regression in heuristics used by
177
NaturalHomomorphismByNormalSubgroup (Reference:
178
NaturalHomomorphismByNormalSubgroup) that could produce a permutation
179
representation of an unreasonably large degree. [Reported by Izumi
180
Miyamoto]
181
182
 Fixed inconsistent behaviour of QuotientMod( Integers, r, s, m ) in
183
the case where s and m are not coprime. This fix also corrects the
184
division behaviour of ZmodnZ objects, see QuotientMod (Reference:
185
QuotientMod) and ZmodnZ (Reference: ZmodnZ). [Reported by Mark
186
Dickinson]
187
188
 Fixed an oversight in the loading process causing OnQuit (Reference:
189
OnQuit) not resetting the options stack after exiting the break loop.
190
191
 Empty strings were treated slightly differently than other strings in
192
the GAP kernel, for historical reasons. This resulted in various
193
inconsistencies. For example, IsStringRep("") returned true, but a
194
method installed for arguments of type IsStringRep would NOT be
195
invoked when called with an empty string.
196
197
We remove this special case in the GAP kernel (which dates back the
198
very early days of GAP 4 in 1996). This uncovered one issue in the
199
kernel function POSITION_SUBSTRING (when calling it with an empty
200
string as second argument), which was also fixed.
201
202
 The parser for floating point numbers contained a bug that could cause
203
GAP to crash or to get into a state where the only action left to the
204
user was to exit GAP via Ctrl-D. For example, entering four dots with
205
spaces between them on the GAP prompt and then pressing the return key
206
caused GAP to exit.
207
208
The reason was (ironically) an error check in the innards of the float
209
parser code which invoked the GAP Error() function at a point where it
210
should not have.
211
212
 Removing the last character in a string was supposed to overwrite the
213
old removed character in memory with a zero byte, but failed to do so
214
due to an off-by-one error. For most GAP operations, this has no
215
visible effect, except for those which directly operate on the
216
underlying memory representation of strings. For example, when trying
217
to use such a string to reference a record entry, a (strange) error
218
could be triggered.
219
220
 ViewString (Reference: ViewString) and DisplayString (Reference:
221
DisplayString) are now handling strings, characters and immediate FFEs
222
in a consistent manner.
223
224
 Multiple fixes to the build process for less common Debian platforms
225
(arm, ia64, mips, sparc, GNU/Hurd). [Suggested by Bill Allombert]
226
227
 Fixes for several regressions in the gac script. [Suggested by Bill
228
Allombert]
229
230
Changed functionality:
231
232
 It is not possible now to call WreathProduct (Reference:
233
WreathProduct) with 2nd argument H not being a permutation group,
234
without using the 3rd argument specifying the permutation
235
representation. This is an incompatible change but it will produce an
236
error instead of a wrong result. The former behaviour of WreathProduct
237
(Reference: WreathProduct) may now be achieved by using
238
StandardWreathProduct (Reference: StandardWreathProduct) which returns
239
the wreath product for the (right regular) permutation action of H on
240
its elements.
241
242
 The function ViewLength to specify the maximal number of lines that
243
are printed in ViewObj (Reference: ViewObj) became obsolete, since
244
there was already a user preference ViewLength to specify this. The
245
value of this preference is also accessible in GAPInfo.ViewLength.
246
247
248
3.1-2 New and updated packages since GAP 4.6.5
249
250
At the time of the release of GAP 4.6.5 there were 107 packages
251
redistributed with GAP. The first public release of GAP 4.7 contains 114
252
packages.
253
254
One of essential changes is that the Citrus package by J.Mitchell has been
255
renamed to Semigroups. The package has been completely overhauled, the
256
performance has been improved, and the code has been generalized so that in
257
the future the same code can be used to compute with other types of
258
semigroups.
259
260
Furthermore, new packages that have been added to the redistribution since
261
the release of GAP 4.6.5 are:
262
263
 4ti2interface package by Sebastian Gutsche, providing an interface to
264
4ti2, a software package for algebraic, geometric and combinatorial
265
problems on linear spaces (http://www.4ti2.de).
266
267
 CoReLG by Heiko Dietrich, Paolo Faccin and Willem de Graaf for
268
calculations in real semisimple Lie algebras.
269
270
 IntPic package by Manuel Delgado, aimed at providing a simple way of
271
getting a pictorial view of sets of integers. The main goal of the
272
package is producing Tikz code for arrays of integers. The code
273
produced is to be included in a LaTeX file, which can then be
274
processed. Some of the integers are emphasized by using different
275
colors for the cells containing them.
276
277
 LieRing by Serena Cicalo and Willem de Graaf for constructing
278
finitely-presented Lie rings and calculating the Lazard
279
correspondence. The package also provides a database of small n-Engel
280
Lie rings.
281
282
 LiePRing package by Michael Vaughan-Lee and Bettina Eick, introducing
283
a new datastructure for nilpotent Lie rings of prime-power order. This
284
allows to define such Lie rings for specific primes as well as for
285
symbolic primes and other symbolic parameters. The package also
286
includes a database of nilpotent Lie rings of order at most p^7 for
287
all primes p > 3.
288
289
 ModIsom by Bettina Eick, which contains various methods for computing
290
with nilpotent associative algebras. In particular, it contains a
291
method to determine the automorphism group and to test isomorphisms of
292
such algebras over finite fields and of modular group algebras of
293
finite p-groups. Further, it contains a nilpotent quotient algorithm
294
for finitely presented associative algebras and a method to determine
295
Kurosh algebras.
296
297
 SLA by Willem de Graaf for computations with simple Lie algebras. The
298
main topics of the package are nilpotent orbits, theta-groups and
299
semisimple subalgebras.
300
301
Furthermore, some packages have been upgraded substantially since the
302
GAP 4.6.5 release:
303
304
 ANUPQ package by Greg Gamble, Werner Nickel and Eamonn O'Brien has
305
been updated after Max Horn joined it as a maintainer. As a result, it
306
is now much easier to install and use it with the current GAP release.
307
308
 Wedderga package by Osnel Broche Cristo, Allen Herman, Alexander
309
Konovalov, Aurora Olivieri, Gabriela Olteanu, Ángel del Río and Inneke
310
Van Gelder has been extended to include functions for calculating
311
local and global Schur indices of ordinary irreducible characters of
312
finite groups, cyclotomic algebras over abelian number fields, and
313
rational quaternion algebras (contribution by Allen Herman).
314
315
316
3.2 GAP 4.7.3 (February 2014)
317
318
Fixed bugs which could lead to incorrect results:
319
320
 Incorrect result returned by AutomorphismGroup(PSp(4,2^n)). [Reported
321
by Anvita]
322
323
 The Order (Reference: Order) method for group homomorphisms newly
324
introduced in GAP 4.7 had a bug that caused it to sometimes return
325
incorrect results. [Reported by Benjamin Sambale]
326
327
Fixed bugs that could lead to break loops:
328
329
 Several bugs were fixed and missing methods were introduced in the new
330
code for transformations, partial permutations and semigroups that was
331
first included in GAP 4.7. Some minor corrections were made in the
332
documentation for transformations.
333
334
 Break loop in IsomorphismFpMonoid when prefixes in generators names
335
were longer than one letter. [Reported by Dmytro Savchuk and Yevgen
336
Muntyan]
337
338
 Break loop while displaying the result of
339
MagmaWithInversesByMultiplicationTable (Reference:
340
MagmaWithInversesByMultiplicationTable). [Reported by Grahame Erskine]
341
342
Improved functionality:
343
344
 Better detection of UTF-8 terminal encoding on some systems.
345
[Suggested by Andries Brouwer]
346
347
348
3.3 GAP 4.7.4 (February 2014)
349
350
This release was prepared immediately after GAP 4.7.3 to revert the fix of
351
the error handling for the single quote at the end of an input line,
352
contained in GAP 4.7.3. It happened that (only on Windows) the fix caused
353
error messages in one of the packages.
354
355
356
3.4 GAP 4.7.5 (May 2014)
357
358
Fixed bugs which could lead to incorrect results:
359
360
 InstallValue (Reference: InstallValue) cannot handle immediate values,
361
characters or booleans for technical reasons. A check for such values
362
was introduced to trigger an error message and prevent incorrect
363
results caused by this. [Reported by Sebastian Gutsche]
364
365
 KnowsDictionary (Reference: KnowsDictionary) and LookupDictionary
366
(Reference: LookupDictionary) methods for IsListLookupDictionary were
367
using PositionFirstComponent (Reference: PositionFirstComponent); the
368
latter is only valid on sorted lists, but in IsListLookupDictionary
369
the underlying list is NOT sorted in general, leading to bogus
370
results.
371
372
Other fixed bugs:
373
374
 A bug in DirectProductElementsFamily which used
375
CanEasilyCompareElements (Reference: CanEasilyCompareElements) instead
376
of CanEasilySortElements (Reference: CanEasilySortElements).
377
378
 Fixed wrong Infolevel message that caused a break loop for some
379
automorphism group computations.
380
381
 Fixed an error that sometimes caused a break loop in HallSubgroup
382
(Reference: HallSubgroup). [Reported by Benjamin Sambale]
383
384
 Fixed a rare error in computation of conjugacy classes of a finite
385
group by homomorphic images, providing fallback to a default
386
algorithm.
387
388
 Fixed an error in the calculation of Frattini subgroup in the case of
389
the trivial radical.
390
391
 Several minor bugs were fixed in the documentation, kernel, and
392
library code for transformations.
393
394
 Fixed errors in NumberPerfectGroups (Reference: NumberPerfectGroups)
395
and NumberPerfectLibraryGroups (Reference: NumberPerfectLibraryGroups)
396
not being aware that there are no perfect groups of odd order.
397
398
 Restored the ability to build GAP on OS X 10.4 and 10.5 which was
399
accidentally broken in the previous GAP release by using the build
400
option not supported by these versions.
401
402
 Fixed some problems for ia64 and sparc architectures. [Reported by
403
Bill Allombert and Volker Braun]
404
405
New package added for the redistribution with GAP:
406
407
 permut package by A.Ballester-Bolinches, E.Cosme-Llópez, and
408
R.Esteban-Romero to deal with permutability in finite groups.
409
410
411
3.5 GAP 4.7.6 (November 2014)
412
413
Fixed bugs which could lead to incorrect results:
414
415
 A bug that may cause ShortestVectors (Reference: ShortestVectors) to
416
return an incomplete list. [Reported by Florian Beye]
417
418
 A bug that may lead to incorrect results and infinite loops when GAP
419
is compiled without GMP support using gcc 4.9.
420
421
 A bug that may cause OrthogonalEmbeddings (Reference:
422
OrthogonalEmbeddings) to return an incomplete result. [Reported by
423
Benjamin Sambale]
424
425
Fixed bugs that could lead to break loops:
426
427
 ClosureGroup (Reference: ClosureGroup) should be used instead of
428
ClosureSubgroup (Reference: ClosureSubgroup) in case there is no
429
parent group, otherwise some calculations such as e.g. NormalSubgroups
430
(Reference: NormalSubgroups) may fail. [Reported by Dmitrii Pasechnik]
431
432
 Fixed a line in the code that used a hard-coded identity permutation,
433
not a generic identity element of a group. [Reported by Toshio Sumi]
434
435
 Fixed a problem in the new code for calculating maximal subgroups that
436
caused a break loop for some groups from the transitive groups
437
library. [Reported by Petr Savicky]
438
439
 Fixed a problem in ClosureSubgroup (Reference: ClosureSubgroup) not
440
accepting some groups without Parent (Reference: Parent). [Reported by
441
Inneke van Gelder]
442
443
Other fixed bugs:
444
445
 Eliminated a number of compiler warnings detected with some newer
446
versions of C compilers.
447
448
 Some minor bugs in the transformation and partial permutation code and
449
documentation were resolved.
450
451
452
3.6 GAP 4.7.7 (February 2015)
453
454
New features:
455
456
 Introduced some arithmetic operations for infinity and negative
457
infinity, see Reference: infinity.
458
459
 Introduced new property IsGeneratorsOfSemigroup (Reference:
460
IsGeneratorsOfSemigroup) which reflects wheter the list or collection
461
generates a semigroup.
462
463
Fixed bugs which could lead to incorrect results:
464
465
 Fixed a bug in Union (Reference: Union) (actually, in the internal
466
library function JoinRanges) caused by downward running ranges.
467
[Reported by Matt Fayers]
468
469
 Fixed a bug where recursive records might be printed with the wrong
470
component name, coming from component names being ordered differently
471
in two different pieces of code. [Reported by Thomas Breuer]
472
473
 The usage of abs in src/gmpints.c was replaced by AbsInt. The former
474
is defined to operate on 32-bit integers even if GAP is compiled in
475
64-bit mode. That lead to truncating GAP integers and caused a crash
476
in RemInt (Reference: RemInt), reported by Willem De Graaf and Heiko
477
Dietrich. Using AbsInt fixes the crash, and ensures the correct
478
behaviour on 32-bit and 64-bit builds.
479
480
Fixed bugs that could lead to break loops:
481
482
 A problem with ProbabilityShapes (Reference: ProbabilityShapes) not
483
setting frequencies list for small degrees. [Reported by Daniel
484
Błażewicz and independently by Mathieu Gagne]
485
486
 An error when generating a free monoid of rank infinity. [Reported by
487
Nick Loughlin]
488
489
 Several bugs with the code for Rees matrix semigroups not handling
490
trivial cases properly.
491
492
 A bug in IsomorphismTypeInfoFiniteSimpleGroup (Reference:
493
IsomorphismTypeInfoFiniteSimpleGroup) affecting one particular group
494
due to a misformatting in a routine that translates between the
495
Chevalley type and the name used in the table (in this case, "T" was
496
used instead of ["T"]). [Reported by Petr Savicky]
497
498
Other fixed bugs:
499
500
 The Basis (Reference: Basis) method for full homomorphism spaces of
501
linear mappings did not set basis vectors which could be obtained by
502
GeneratorsOfLeftModule (Reference: GeneratorsOfLeftModule).
503
504
 A problem with GaloisType (Reference: GaloisType) entering an infinite
505
loop in the routine for approximating a root. [Reported by Daniel
506
Błażewicz]
507
508
 Fixed the crash when GAP is called when the environment variables HOME
509
or PATH are unset. [Reported by Bill Allombert]
510
511
Furthermore, new packages that have been added to the redistribution since
512
the release of GAP 4.7.6 are:
513
514
 json package by Christopher Jefferson, providing a mapping between the
515
JSON markup language and GAP
516
517
 SglPPow package by Bettina Eick and Michael Vaughan-Lee, providing the
518
database of p-groups of order p^7 for p > 11, and of order 3^8.
519
520
521
3.7 GAP 4.7.8 (June 2015)
522
523
Fixed bugs which could lead to incorrect results:
524
525
 Added two groups of degree 1575 which were missing in the library of
526
first primitive groups. [Reported by Gordon Royle]
527
528
 Fixed the error in the code for algebra module elements in packed
529
representation caused by the use of Objectify (Reference: Objectify)
530
with the type of the given object instead of ObjByExtRep (Reference:
531
ObjByExtRep) as recommended in 'Reference: Further Improvements in
532
Implementing Residue Class Rings'. The problem was that after
533
calculating u+v where one of the summands was known to be zero, this
534
knowledge was wrongly passed to the sum via the type. [Reported by
535
Istvan Szollosi]
536
537
 Fixed a bug in PowerMod (Reference: PowerMod) causing wrong results
538
for univariate Laurent polynomials when the two polynomial arguments
539
are stored with the same non-zero shift. [Reported by Max Horn]
540
541
Furthermore, new packages that have been added to the redistribution since
542
the release of GAP 4.7.7 are:
543
544
 PatternClass by Michael Albert, Ruth Hoffmann and Steve Linton,
545
allowing to explore the permutation pattern classes build by token
546
passing networks. Amongst other things, it can compute the basis of a
547
permutation pattern class, create automata from token passing networks
548
and check if the deterministic automaton is a possible representative
549
of a token passing network.
550
551
 QPA by Edward Green and Øyvind Solberg, providing data structures and
552
algorithms for computations with finite dimensional quotients of path
553
algebras, and with finitely generated modules over such algebras. It
554
implements data structures for quivers, quotients of path algebras,
555
and modules, homomorphisms and complexes of modules over quotients of
556
path algebras.
557
558
559