This chapter lists most important changes between GAP 4.5.7 and GAP 4.6.2 (i.e. between the last release of GAP 4.5 and the first public release of GAP 4.6). It also contains information about subsequent update releases for GAP 4.6.
Improved and extended functionality:
It is now possible to declare a name as an operation with two or more arguments (possibly several times) and THEN declare it as an attribute. Previously this was only possible in the other order. This should make the system more independent of the order in which packages are loaded.
Words in fp groups are now printed in factorised form if possible and not too time-consuming, i.e. a*b*a*b*a*b
will be printed as (a*b)^3
.
Added methods to calculate Hall subgroups in nonsolvable groups.
Added a generic method for IsPSolvable
(Reference: IsPSolvable) and a better generic method for IsPNilpotent
(Reference: IsPNilpotent) for groups.
Improvements to action homomorphisms: image of an element can use existing stabiliser chain of the image group (to reduce the number of images to compute), preimages under linear/projective action homomorphisms use linear algebra to avoid factorisation.
To improve efficiency, additional code was added to make sure that the HomePcgs
of a permutation group is in IsPcgsPermGroupRep
representation in more cases.
Added an operation SortBy
(Reference: SortBy) with arguments being a function f of one argument and a list l to be sorted in such a way that l(f[i]) <= l(f[i+1])
.
Added a kernel function MEET_BLIST
which returns true
if the two boolean lists have true
in any common position and false
otherwise. This is useful for representing subsets of a fixed set by boolean lists.
When assigning to a position in a compressed FFE vector GAP now checks to see if the value being assigned can be converted into an internal FFE element if it isn't one already. This uses new attribute AsInternalFFE
(Reference: AsInternalFFE), for which methods are installed for internal FFEs, Conway FFEs and ZmodpZ objects.
Replaced ViewObj
(Reference: ViewObj) method for fields by ViewString
(Reference: ViewString) method to improve the way how polynomial rings over algebraic extenstions of fields are displayed.
Made the info string (optional 2nd argument to InstallImmediateMethod
(Reference: InstallImmediateMethod)) behave similarly to the info string in InstallMethod
(Reference: InstallMethod). In particular, TraceImmediateMethods
(Reference: TraceImmediateMethods) now always prints the name of the operation.
Syntax errors such as Unbind(x,1)
had the unhelpful property that x
got unbound before the syntax error was reported. A specific check was added to catch this and similar cases a little earlier.
Allow a GAPARGS
parameter to the top-level GAP Makefile
to pass extra arguments to the GAP used for manual building.
Added an attribute UnderlyingRingElement
(Reference: UnderlyingRingElement) for Lie objects.
The function PrimeDivisors
(Reference: PrimeDivisors) now became an attribute. [suggested by Mohamed Barakat]
Added an operation DistancePerms
(Reference: DistancePerms) with a kernel method for internal permutations and a generic method.
Added a method for Subfields
(Reference: Subfields) to support large finite fields. [reported by Inneke van Gelder]
Fixed bugs which could lead to crashes:
The extremely old DEBUG_DEADSONS_BAGS
compile-time option has not worked correctly for many years and indeed crashes GAP. The type of bug it is there to detect has not arisen in many years and we have certainly not used this option, so it has been removed. [Reported by Volker Braun]
Other fixed bugs:
Scanning of floating point literals collided with iterated use of integers as record field elements in expressions like r.1.2
.
Fixed two potential problems in NorSerPermPcgs
, one corrupting some internal data and one possibly mixing up different pcgs.
Fixed a performance problem with NiceMonomorphism
(Reference: NiceMonomorphism). [reported by John Bamberg]
Fixed a bug in ReadCSV
(Reference: ReadCSV) that caused some .csv
files being parsed incorrectly.
No longer supported:
The file lib/consistency.g
, which contained three undocumented auxiliary functions, has been removed from the library. In addition, the global record Revision
is now deprecated, so there is no need to bind its components in GAP packages.
At the time of the release of GAP 4.5 there were 99 packages redistributed with GAP. The first public release of GAP 4.6 contains 106 packages.
The new packages that have been added to the redistribution since the release of GAP 4.5.4 are:
AutoDoc package by S. Gutsche, providing tools for automated generation of GAPDoc manuals.
Congruence package by A. Konovalov, which provides functions to construct various canonical congruence subgroups in \(SL_2(ℤ)\), and also intersections of a finite number of such subgroups, implements the algorithm for generating Farey symbols for congruence subgroups and uses it to produce a system of independent generators for these subgroups.
Convex package by S. Gutsche, which provides structures and algorithms for convex geometry.
Float package by L. Bartholdi, which extends GAP floating-point capabilities by providing new floating-point handlers for high-precision real, interval and complex arithmetic using MPFR, MPFI, MPC or CXSC external libraries. It also contains a very high-performance implementation of the LLL (Lenstra-Lenstra-Lovász) lattice reduction algorithm via the external library FPLLL.
PolymakeInterface package by T. Baechler and S. Gutsche, providing a link to the callable library of the polymake system (http://www.polymake.org).
ToolsForHomalg package by M. Barakat, S. Gutsche and M. Lange-Hegermann, which provides some auxiliary functionality for the homalg project (http://homalg.math.rwth-aachen.de/).
ToricVarieties package by S. Gutsche, which provides data structures to handle toric varieties by their commutative algebra structure and by their combinatorics.
Furthermore, some packages have been upgraded substantially since the GAP 4.5.4 release:
Starting from 2.x.x, the functionality for iterated monodromy groups has been moved from the FR package by L. Bartholdi to a separate package IMG (currently undeposited, available from https://github.com/laurentbartholdi/img). This completely removes the dependency of FR on external library modules, and should make its installation much easier.
Improved functionality:
Several changes were made to IdentityMat
(Reference: IdentityMat) and NullMat
(Reference: NullMat). First off, the documentation was changed to properly state that these functions support arbitrary rings, and not just fields. Also, more usage examples were added to the manual.
For NullMat
, it is now also always possible to specify a ring element instead of a ring, and this is documented. This matches existing IdentityMat
behavior, and partially worked before (undocumented), but in some cases could run into error or infinite recursion.
In the other direction, if a finite field element, IdentityMat
now really creates a matrix over the smallest field containing that element. Previously, a matrix over the prime field was created instead, contrary to the documentation.
Furthermore, IdentityMat
over small finite fields is now substantially faster when creating matrices of large dimension (say a thousand or so).
Finally, MutableIdentityMat
(Reference: MutableIdentityMat) and MutableNullMat
(Reference: MutableNullMat) were explicitly declared obsolete (and may be removed in GAP 4.7). They actually were deprecated since GAP 4.1, and their use discouraged by the manual. Code using them should switch to IdentityMat
(Reference: IdentityMat) respectively NullMat
(Reference: NullMat).
Two new PerfectResiduum
(Reference: PerfectResiduum) methods were added for solvable and perfect groups, handling these cases optimally. Moreover, the existing generic method was improved by changing it to use DerivedSeriesOfGroup
(Reference: DerivedSeriesOfGroup). Previously, it would always compute the derived series from scratch and then throw away the result.
A new MinimalGeneratingSet
(Reference: MinimalGeneratingSet) method for groups handled by a nice monomorphisms was added, similar to the existing SmallGeneratingSet
(Reference: SmallGeneratingSet) method. This is useful if the nice monomorphism is already mapping into a pc or pcp group.
Added a special method for DerivedSubgroup
(Reference: DerivedSubgroup) if the group is known to be abelian.
Fixed bugs:
Fixed a bug in PowerModInt
(Reference: PowerModInt) computing \(r^e\) mod \(m\) in a special case when \(e=0\) and \(m=0\). [Reported by Ignat Soroko]
CoefficientsQadic
(Reference: CoefficientsQadic) now better checks its arguments to avoid an infinite loop when being asked for a q-adic representation for \(q=1\). [Reported by Ignat Soroko]
Methods for SylowSubgroupOp
(see SylowSubgroup
(Reference: SylowSubgroup)) for symmetric and alternating group did not always set IsPGroup
(Reference: IsPGroup) and PrimePGroup
(Reference: PrimePGroup) for the returned Sylow subgroup.
Display of matrices consisting of Conway field elements (which are displayed as polynomials) did not print constant 1 terms.
Added an extra check and a better error message in the method to access natural generators of domains using the .
operator (see GeneratorsOfDomain
(Reference: GeneratorsOfDomain)).
Trying to solve the word problem in an fp group where one or more generators has a name of more than one alphabetic character led to a break loop.
Provided the default method for AbsoluteIrreducibleModules
(Reference: AbsoluteIrreducibleModules) as a temporary workaround for the problem which may cause returning wrong results or producing an error when being called for a non-prime field.
A bug in the GAP kernel caused RNamObj
to error out when called with a string that had the IsSSortedList
(Reference: IsSSortedList) property set (regardless of whether it was set to true
or false
). This in turn would lead to strange (and inappropriate) errors when using such a string to access entries of a record.
GAP can store vectors over small finite fields (size at most 256) in a special internal data representation where each entry of the vector uses exactly one byte. Due to an off-by-one bug, the case of a field with exactly 256 elements was not handled properly. As a result, GAP failed to convert a vector to the special data representation, which in some situations could lead to a crash. The off-by-one error was fixed and now vectors over \(GF(256)\) work as expected.
A bug in the code for accessing sublist via the list{poss}
syntax could lead to GAP crashing. Specifically, if the list was a compressed vector over a finite field, and the sublist syntax was nested, as in vec{poss1}{poss2}
. This now correctly triggers an error instead of crashing.
New packages added for the redistribution with GAP:
SpinSym package by L. Maas, which contains Brauer tables of Schur covers of symmetric and alternating groups and provides some related functionalities.
New functionality:
New command line option -O
was introduced to disable loading obsolete variables. This option may be used, for example, to check that they are not used in a GAP package or one's own GAP code. For further details see Reference: options and Reference: Replaced and Removed Command Names.
Fixed bugs which could lead to incorrect results:
Fixed the bug in NewmanInfinityCriterion
(Reference: NewmanInfinityCriterion) which may cause returning true
instead of false
. [Reported by Lev Glebsky]
Fixed bugs which could lead to crashes:
Fixed the kernel method for Remove
(Reference: Remove) which did not raise an error in case of empty lists, but corrupted the object. The error message in a library method is also improved. [Reported by Roberto Ràdina]
Fixed bugs that could lead to break loops:
Fixed requirements in a method to multiply a list and an algebraic element. [Reported by Sebastian Gutsche]
Fixed a bug in NaturalCharacter
(Reference: NaturalCharacter for a group) entering a break loop when being called on a homomorphism whose image is not a permutation group. [Reported by Sebastian Gutsche]
Fixed a bug in ExponentsConjugateLayer
(Reference: ExponentsConjugateLayer) which occured, for example, in some calls of SubgroupsSolvableGroup
(Reference: SubgroupsSolvableGroup) [Reported by Ramon Esteban-Romero]
Fixed a problem with displaying function fields, e.g. Field(Indeterminate(Rationals,"x"))
. [Reported by Jan Willem Knopper]
Fixed two bugs in the code for NaturalHomomorphismByIdeal
(Reference: NaturalHomomorphismByIdeal) for polynomial rings. [Reported by Martin Leuner]
Added missing method for String
(Reference: String) for -infinity
.
Fixed the bug with ONanScottType
(Reference: ONanScottType) not recognising product action properly in some cases.
The method for SlotUsagePattern
(Reference: SlotUsagePattern) for straight line programs had a bug which triggered an error, if the straight line program contained unnecessary steps.
Improved functionality:
TraceMethods
(Reference: TraceMethods for operations) and UntraceMethods
(Reference: UntraceMethods for operations) now better check their arguments and provide a sensible error message if being called without arguments. Also, both variants of calling them are now documented.
Library methods for Sortex
(Reference: Sortex) are now replaced by faster ones using the kernel SortParallel
(Reference: SortParallel) functionality instead of making expensive zipped lists.
Fixed bugs which could lead to incorrect results:
IntHexString
(Reference: IntHexString) wrongly produced a large integer when there were too many leading zeros. [Reported by Joe Bohanon]
Fixed bugs that could lead to break loops:
A bug that may occur in some cases while calling TransitiveIdentification
(Reference: TransitiveIdentification). [Reported by Izumi Miyamoto]
The new code for semidirect products of permutation groups, introduced in GAP 4.6, had a bug which was causing problems for Projection
(Reference: Projection). [Reported by Graham Ellis]
generated by GAPDoc2HTML