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

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.

The descriptions of PerfectGroup(734832,3)
and PerfectGroup(864000,3) were corrected
in the library of perfect
groups.

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.

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.

NaturalHomomorphismByNormalSubgroup
for FpGroups did unnecessary rewrites.

The alternating group A3 incorrectly claimed to be not simple.

ExponentSyllable for straight line program elements
gave a wrong result.

PrimePGroup is defined to return fail
for trivial groups, but if the group was constructed as a
factor or subgroup of a known pgroup, the value of p
was retained.

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]

The generator names constructed by
AlgebraByStructureConstants were nonsense.

The undocumented function (but recently advertised on gapdev)
COPY_LIST_ENTRIES did not handle overlapping source and
destination areas correctly in some cases.

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]

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

Problem in composition series for permutation groups for nonFrobenius
groups with regular point stabilizer.

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]

Minor bug that crashed GAP:
The type of IMPLICATIONS
could not be determined in a fresh session. [Reported by Marco Costantini]

Assert
caused an infinite loop if called
as the first line of a function called from another function.
Other fixed bugs

Wrong choice of prime in DixonSchneider if prime is bigger than group order
(if group has large exponent).

Groebner basis code ran into problems when comparing monomial orderings.

When testing for conjugacy of a primitive group to an imprimitive group,
GAP runs into an error in EARNS calculation. [Reported by John Jones]

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]

New kernel methods for taking the intersection and difference between
sets of substantially different sizes give a big performance increase.

The commands
IsNaturalSymmetricGroup and
IsNaturalAlternatingGroup are faster and should run much less
often into inefficient tests.

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 offbyone 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.

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.

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 8bitvector v had length not divisible by e and
another compressed 8bitvector 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]

PermutationCycle returned fail if the
cycle was not a contiguous subset of the specified domain. [Reported by Luc Teirlinck]

Now Inverse
correctly returns fail for zeros in finite fields
(and does no longer enter a break loop).

Up to now,
CharacterDegrees ignored the attribute
Irr
if the argument was a group that knew that it was solvable.

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.

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]

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.

Up to now,
IsPGroup has rarely been set. Now many basic operations
such as
SylowSubgroupOp set this attribute on the returned result.

Computing an enumerator for a semigroup required too much time
because it used all elements instead of the given generators. [Reported by Manuel Delgado]

Avoid potential error message when working with automorphism groups.

Fixed wrong page references in manual indices.

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.

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

The primitive groups
library has been extended to degree 2499.

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.

Added fast kernel implementation of Tarjan's
algorithm for strongly connected components of a
directed graph.

Now
IsProbablyPrimeInt can be used with larger numbers.
(Made internal function TraceModQF nonrecursive.)

A new operation
PadicValuation and a corresponding method for rationals.

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.

The generators of full s. c. algebras can now be accessed with the dot
operator. [Reported by Marcus Bishop]

New Conway polynomials computed by Kate Minola, John Bray, Richard Parker.

A new attribute EpimorphismFromFreeGroup.
The code has been written by Alexander Hulpke.

The functions
Lambda,
Phi,
Sigma, and
Tau
have been turned into operations, to admit the installation of methods
for arguments other than integers.

Up to now, one could assign only lists with
InstallFlushableValue.
Now also records are admitted.

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.

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.

Some very basic functionality for floats.
