GAP

Main Branches

Downloads  Installation  Overview  Data Libraries  Packages  Documentation  Contacts  FAQ  GAP 3 

GAP 4.4 Update 6 (September 2005)

Attribution of bugfixes and improved functionalities to those who reported or provided these, respectively, is still fairly incomplete and inconsistent with this update. We apologise for this fact and will discuss until the next update how to improve this feature.

Fixed bugs which could produce wrong results

  1. The perfect group library does not contain any information on the trivial group, so the trivial group must be handled specially. PerfectGroup and NrPerfectLibraryGroups were changed to indicate that the trivial group is not part of the library.
  2. The descriptions of PerfectGroup(734832,3) and PerfectGroup(864000,3) were corrected in the library of perfect groups.
  3. The functions EpimorphismSchurCover and AbelianInvariantsMultiplier may have produced wrong results without warning. [Reported by Colin Ingalls]. These problems are fixed. However, the methods currently used can be expected to be slower than the ones used before; we hope to fix this for the next version of GAP.
  4. DerivedSubgroup and CommutatorSubgroup for permutation groups sometimes returned groups with an incorrect stabilizer chain due to a missing verification step after a random Schreier Sims.
  5. NaturalHomomorphismByNormalSubgroup for FpGroups did unnecessary rewrites.
  6. The alternating group A3 incorrectly claimed to be not simple.
  7. ExponentSyllable for straight line program elements gave a wrong result.
  8. PrimePGroup is defined to return fail for trivial groups, but if the group was constructed as a factor or subgroup of a known p-group, the value of p was retained.
  9. The functions TestPackageAvailability and LoadPackage did not work correctly when one asked for a particular version of the package, via a version number starting with the character =, in the sense that a version with a larger version number was loaded if it was available. [Reported by Burkhard Höfling]
  10. The generator names constructed by AlgebraByStructureConstants were nonsense.
  11. The undocumented function (but recently advertised on gap-dev) COPY_LIST_ENTRIES did not handle overlapping source and destination areas correctly in some cases.
  12. The elements in a free magma ring have the filter IsAssociativeElement set whenever the elements in the underlying magma and in the coefficients ring have this filter set. [Reported by Randy Cone]
  13. The function InstallValue must not be used for objects in the filter IsFamily because these objects are compared via IsIdenticalObj. [Reported by Max Neunhöffer]

Fixed bugs which could lead to crashes

  1. Problem in composition series for permutation groups for non-Frobenius groups with regular point stabilizer.
  2. After lots of computations with compressed GF(2) vectors GAP occasionally crashed. The reason were three missing CHANGED_BAGs in SemiEchelonPListGF2Vecs. They were missing, because a garbage collection could be triggered during the computation such that newly created bags could become "old". It is not possible to provide test code because the error condition cannot easily be reproduced. [Reported by Klaus Lux]
  3. Minor bug that crashed GAP: The type of IMPLICATIONS could not be determined in a fresh session. [Reported by Marco Costantini]
  4. Assert caused an infinite loop if called as the first line of a function called from another function.

Other fixed bugs

  1. Wrong choice of prime in Dixon-Schneider if prime is bigger than group order (if group has large exponent).
  2. Groebner basis code ran into problems when comparing monomial orderings.
  3. When testing for conjugacy of a primitive group to an imprimitive group, GAP runs into an error in EARNS calculation. [Reported by John Jones]
  4. The centre of a magma is commonly defined to be the set of elements that commute and associate with all elements. The previous definition left out 'associate' and caused problems with extending the functionality to nonassociative loops. [Reported by Petr Vojtechovsky]
  5. New kernel methods for taking the intersection and difference between sets of substantially different sizes give a big performance increase.
  6. The commands IsNaturalSymmetricGroup and IsNaturalAlternatingGroup are faster and should run much less often into inefficient tests.
  7. The perfect group library is split into several files which are loaded and unloaded to keep memory usage down. The global variable PERFSELECT is a blist which indicates which orders are currently loaded. An off-by-one error wrongly added the last order of the previous file into the list of valid orders when a new file was loaded. A subsequent access to this order raises an error.
  8. Up to now, the method installed for testing the membership of rationals in the field of rationals via IsRat was not called; instead a more general method was used that called Conductor and thus was much slower. Now the special method has been ranked up by changing the requirements in the method installation.
  9. Fixed a bug in APPEND_VEC8BIT, which was triggered in the following situation: Let e be the number of field elements stored in one byte. If a compressed 8bit-vector v had length not divisible by e and another compressed 8bit-vector w was appended, such that the sum of the lengths became divisible by e, then one 0 byte too much was written which destroyed the TNUM of the next GAP object in memory. [Reported by Klaus Lux]
  10. PermutationCycle returned fail if the cycle was not a contiguous subset of the specified domain. [Reported by Luc Teirlinck]
  11. Now Inverse correctly returns fail for zeros in finite fields (and does no longer enter a break loop).
  12. Up to now, CharacterDegrees ignored the attribute Irr if the argument was a group that knew that it was solvable.
  13. The function Debug now prints a meaningful message if the user tries to debug an operation. Also, the help file for vi is now available in the case of several GAP root directories.
  14. It is no longer possible to create corrupt objects via ranges of length >2^28, resp. >2^60 (depending on the architecture). The limitation concerning the arguments of ranges is documented. [Reported by Stefan Kohl]
  15. Now IsElementaryAbelian and ClassPositionsOfMinimalNormalSubgroups are available for ordinary character tables. Now the operation CharacterTableIsoclinic is an attribute, and there is another new attribute SourceOfIsoclinicTable that points back to the original table; this is used for computing the Brauer tables of those tables in the character table library that are computed using CharacterTableIsoclinic. Now ClassPositionsOfDerivedSubgroup avoids calling Irr, since LinearCharacters is sufficient. Now ClassPositionsOfElementaryAbelianSeries works also for the table of the trivial group. Restrictions of character objects know that they are characters.
    A few formulations in the documentation concerning character tables have been improved slightly.
  16. Up to now, IsPGroup has rarely been set. Now many basic operations such as SylowSubgroupOp set this attribute on the returned result.
  17. Computing an enumerator for a semigroup required too much time because it used all elements instead of the given generators. [Reported by Manuel Delgado]
  18. Avoid potential error message when working with automorphism groups.
  19. Fixed wrong page references in manual indices.
  20. Make MutableCopyMat an operation and install the former function which does call List with ShallowCopy the default method for lists. Also use this in a few appropriate places.
  21. An old DEC compiler doesn't like C preprocessor directives that are preceded by whitespace. Removed such whitespace. [Reported by Chris Wensley]

New or improved functionality

  1. The primitive groups library has been extended to degree 2499.
  2. New operation Remove and extended functionality of Add with an optional argument giving the position of the insertion. They are based on an efficient kernel function COPY_LIST_ENTRIES.
  3. Added fast kernel implementation of Tarjan's algorithm for strongly connected components of a directed graph.
  4. Now IsProbablyPrimeInt can be used with larger numbers. (Made internal function TraceModQF non-recursive.)
  5. A new operation PadicValuation and a corresponding method for rationals.
  6. A new operation PartialFactorization has been added, and a corresponding method for integers has been installed. This method allows one to specify the amount of work to be spent on looking for factors.
  7. The generators of full s. c. algebras can now be accessed with the dot operator. [Reported by Marcus Bishop]
  8. New Conway polynomials computed by Kate Minola, John Bray, Richard Parker.
  9. A new attribute EpimorphismFromFreeGroup. The code has been written by Alexander Hulpke.
  10. The functions Lambda, Phi, Sigma, and Tau have been turned into operations, to admit the installation of methods for arguments other than integers.
  11. Up to now, one could assign only lists with InstallFlushableValue. Now also records are admitted.
  12. InstallMethod now admits entering a list of strings instead of a list of required filters. Each such string must evaluate to a filter when used as the argument of EvalString. The advantage of this variant is that these strings are used to compose an info string (which is shown by ApplicableMethod) that reflects exactly the required filters.
  13. In test files that are read with ReadTest, the assertion level is set to 2 between START_TEST and STOP_TEST. This may result in runtimes for the tests that are substantially longer than the usual runtimes with default assertion level 0. In particular this is the reason why some of the standard test files require more time in GAP 4.4.6 than in GAP 4.4.5.
  14. Some very basic functionality for floats.