Dear GAP Forum,

This is to announce bugfix number 5 for GAP 4.3. The priority of this fix
is high.

You should not apply this fix to any version of GAP before GAP 4.3. (If you
run such an old version, please update to GAP 4.3 (and this bugfix) as
release 4.3 corrects many problems.)
GAP Bugfixes now are comprehensive. If you forgot to install prior bugfixes,
you do only need to install this, and no prior ones.

Please note that one of the changes made in bugfix 4 and included in
this bugfix breaks two packages, namely AutPGrp and ANUPQ. If you have
either of these packages installed then you will need to also upgrade
these packages. A mechanism has been provided with the bugfix to
detect out-dated packages, prevent their being autoloaded and inform
of where to find the latest version. More details about the new
versions of the AutPGrp and ANUPQ packages will follow in subsequent
announcements to the forum.

In addition, please note that dangerous bugs have been found in the
PqDescendants function of the current version (1.4) of the ANUPQ
package. This bugfix adds a mechanism to warn you if you are loading
this version of the package.

This fix corrects:

 1) A wrong return format for `IsomorphicSubgroups' applied to cyclic groups.
 2) A wrong `true' result of `IsSubset' for certain algebras.
 3) Segmentation faults and other strange behaviour when assigning
    finite field elements of different characteristics into compressed vectors
 4) A bug in the subgroup conjugation test for permutation groups that are
    not subgroups.
 5) A missing method for `BaseOrthogonalSpaceMat'.
 6) A missing `Set' call in the construction of the global variable
    `AUTOLOAD_PACKAGES'.
 7) A wrong display string of the numerator in rational functions returned
    by `MolienSeries' (in the case that the constant term of this numerator
    is zero).
 8) A strange behaviour of `Intersection' for the case that a strictly
    sorted list is the unique entry of the list that is given as the
    argument; in this situation, this entry itself was returned instead of
    a shallow copy.
 9) An error in the basis of a product space of algebras.
10) Possibly wrong result of `Centre' for pc groups.
11) Possibly wrong result of `DirectSumDecomposition' for matrix Lie algebras. 
12) An error in `LieNormalizer', `LieCentralizer' for zero subspaces.
13) An error in the computation of matrices of adjoint modules.
14) A strange error message when constructing the simple Lie algebra of type B1.
15) An error in `ModuleByRestriction'.
16) An error in `IrrBaumClausen' for the trivial group.
17) An error with vector space bases of row spaces over fields which
    neither are prime fields nor contain all entries of the vectors.
18) An error with `IsMonomial', when it uses the function
    `TestMonomialFromLattice' (i.e., in hard cases, likely for characters of
    nonsolvable groups).

Errors 1, 3, 5, 6, 9, 12, 13, 14 and 16 may cause GAP to stop with an error message,
errors 2, 4, 7, 10, 17, and 18 may cause wrong results.

Many thanks to Edgar Fuss, J"urgen M"uller, Dima Pasechnik, Luc Teirlinck,
Leonard Soicher, Ignat Soroko, Peter M"uller, Kimball Martin, and Rafael
Villarroel Flores who reported problems. 

The following errors were corrected in earlier bugfixes, which are
incorporated into this one:

Corrections from bugfix 1

1) A bug in the handling of Processes with empty input or output streams.
2) An error in the function for computing quotients of algebra modules.
3) An error in computing the strongly connected components of a binary
   relation in which incorrect results can be returned.
4) A "no method found" error in OrbitStabilizerAlgorithm for infinite
groups.
5) Calculation of iterated automorphism groups might stop with an error message.
6) A segmentation fault when converting length 0 compressed vectors to
   larger fields
7) The output of the internal pager (see 'Pager') is no longer copied to
   log files.
8) Some memory is not freed up as soon as it could be, resulting in
   over-use of memory and over-large saved workspaces
9) Saving and loading a workspace using a kernel containing a
   statically loaded user module (most likely a compiled GAP file)
   did not work.
10) Problems with EulerianFunction for certain types of groups

Corrections from bugfix 2

 1) A segmentation fault when appending to a length 0 compressed vector
    over GF2.
 2) An error in the computation of inverses in quaternion algebras with
    non-standard parameters.
 3) The result of 'ProjectiveSymplecticGroup(n,q);'.
 4) `GeneratorOfCyclicGroup' for a trivial pc group.
 5) A problem in backtrack routines using `Suborbits' if the group has
    fixed points in the range [1..max(Omega)].
 6) A problem with `CharacterTableDirectProduct' if exactly one argument
    is a Brauer table.
 7) Problems with `IntScalarProduct' and `NonnegIntScalarProducts'
    if the third argument is not a plain list (this situation does not occur
    in GAP library functions).
 8) A Problem with GQuotient
 9) A problem with the linear algebra methods for Lie algebra cohomology.
10) A Problem with requesting transitive groups of degree including 1
11) A Problem with inverting lists of compressed vectors over fields
    of order greater than 2.
12) An error in computing whether an element is in a Green's D equivalence
    class or not.
13) A missing method for `MovedPoints(<perm>)'
14) The method IsGreensLessThanOrEqual should work for Green's D classes for
    finite groups.
15) The method GroupHClassOfGreensDClass was not implemented and is required
    for the Rees Matrix methods.
16) The methods AssociatedReesMatrixSemigroupOfDClass, IsZeroSimpleSemigroup,
    IsomorphismReesMatrixSemigroup, and SandwichMatrixOfReesZeroMatrixSemigroup
    all create Greens classes using obsolete methods which for some semigroups
    leads to infinite recursion or causes GAP to stop with an error message.
17) A problem with `CentralizerModulo' for permutation groups.
18) A wrong name for PGL(2,49) in the primitive groups library of degree 50
20) Missing `Representative' methods for certain trivial groups and
    trivial spaces.
21) A missing setting of `IndicesNormalSteps'

Corrections from bugfix 3

1) An error in IdGroup that mistakenly was not corrected in Bugfix 2.
2) An inconsistent setting of IndicesNormalSteps.
3) A problem with the inversion routine for quaternions.

Corrections from bugfix 4

 1. A problem with a homomorphism from a free group in the trivial
    permutation group.
 2. A problem with the multiplication of rationals and elements in
    large prime fields.
 3. A problem with composing a homomorphism from an fp group with another
    homomorphism (images may be wrong).
 4. A problem with attempting to create univariate polynomials of very
    high degree.
 5. A problem with output going to *errout* incorrectly after a syntax error
 6. An error in the function ReducedSCTable.
 7. An error in computing the Rees Matrix semigroup.
 8. A compatibility problem with earlier versions of gap in semigroup
    and monoid rewriting systems.
 9. An error in the comparison routine for univariate rational functions.
10. The behaviour of PQuotient() when an attempt is made to compute a
    p-quotient with more generators than the underlying data structure
    was initialised with. 
11. A problem with computing `BasisVectors' for a basis of an algebraic
    field extension.
12. A problem with the definition of `IsRowVector' (which previously
    returned `true' also for matrices).
13. A problem with `BaumClausenInfo'.
14. A problem with `IsRowModule' for infinite dimensional vector spaces
    (which are not row spaces).
15. A problem when calculating representations of a group in which class
    arrangement in group and character table are not identical.
16. A problem with `Difference' with first argument a list that is not a set
    and second argument an empty list.
17. The failure of Elements() to compute the elements of a pc group
    with non-prime relative orders.
18. A wrong computation of single character values of Weyl groups of type B
    and character tables of Weyl groups of type D. Furthermore, a much more
    efficient function for computing all character values is provided.
19. Packages accidentally overwriting the setting of `InfoWarning'.
20. A missing method for `IsPolynomial' for univariate rational functions.
21. A problem in the on-line help which sometimes returned a blank entry for
    a topic even though the topic was documented.
22. A problem in the help system where a tilde in a filename was replaced by
    a blank.
23. A problem that prevented the documentation of some packages from 
    autoloading.
24. Three missing primitive groups of degree 441 were addded.

     Installing the bugfix.
     ======================

Load the zoo archive `fix4r3n5.zoo' from the bugfixes web page
http://www-gap.dcs.st-and.ac.uk/~gap/Info4/bugfixes.html
Alternatively you can find this file in the `bugfixes' directory of the
GAP4 ftp distribution.

Unpack the file in the home directory of your GAP distribution (the
directory containing the `lib' and `grp' directories) using `unzoo -x
fix4r3n5.zoo'. `unzoo' may ask you for permissions to overwrite files,
answer this with Y)es or A)ll. This will replace the erroneous files by
fixed versions.

(On a PC or a Mac you will have to copy `unzoo' in the same directory and
enter the argument line after the call to `unzoo'.)
Make sure you have write permissions when applying the fix.

This fix changes the kernel. You have to recompile the kernel after
unpacking the fix. The safest way to do this is to execute the three
commands:

make clean
./configure
make

in the directory in which you unpacked the fix.

Windows users can find a new binary in the file `wbin4r3n5.zoo' in the
`bugfixes' directory: Extract this archive in the same place as the fix
archive to get a new `bin/gapw95.exe' file.

Macintosh users should download the file 'bin4r3n5-PPC.sit' (for PPC
machines) or 'bin4r3n5-68k.sit' (for 68k machines), from the 'bugfixes'
directory.

If you get one of these precompiled binaries you do not need to get any
precompiled binaries that would have come with earlier fixes (these old
binaries are obsolete now). Similarly, if you cannot find these binaries but
have further, newer, fixes to install check whether new binaries with these
fixes did not make the binaries of this fix obsolete.

You can remove the file `description5' afterwards.

After installing the bugfix you can test whether the bugfix has been applied
correctly by starting GAP from the `gap4r3' directory and issuing

gap> ReadTest("tst/bugfix.tst");
+ bugfixes test
+ GAP4stones: 6220
true

(The output should be like this if the bugfixes have been installed
correctly. The number of GAP4stones may vary according to your system. If
your screen width is not 80 characters you must start GAP with the command
line option -x 80 for reading in test files.)

Running this test is not a necessary part of installing a bug fix, but only
serves as a confirmation that everything went well. The test might run for
a long time and GAP will not output information while running. Note that it
is not possible to run the test twice without restarting GAP and that an
interruption of the test with CTRL-C will produce lots of (harmless) error
messages.

Steve Linton

June 2003



