> < ^ Date: Wed, 21 Aug 1996 17:12:00 +0100 (MET)
> < ^ From: Thomas Breuer <Thomas.Breuer@Math.RWTH-Aachen.DE >
^ Subject: FIX 20 for DANGEROUS bug in GAP/lib 3.4.3.0 'PermChars'

This mail contains a fix for a dangerous problem in GAP/lib 3.4.3.
*You should apply this fix as soon as possible if you are using
'PermChars' or 'PermComb'*. The problem is in 'PermChars' when called
with a character degree as second argument and in 'PermComb', and may
cause the character table to become inconsistent without a warning.

VERSION

GAP/lib 3.4.3.0

PRIORITY

The problem is a dangerous problem, because it may cause a computation to
produce incorrect results without a warning. Thus the fix has high
priority, and we recommend that you apply it as soon as possible.

HOW TO APPLY

Go to the GAP directory (the directory with the 'lib/' subdirectory),
name this mail 'fix20lib.dif', and issue the command:

patch -p0 < fix20lib.dif

If 'patch' writes "I can't seem to find a patch in there" try 'patch -v'.
If 'patch -v' gives an error message or reports a version older than 2.1,
get 2.1 from 'ftp://FTP.Math.RWTH-Aachen.DE/pub/gap/utils/patch2_1.zoo'.

This fix changes only the library.
Thus you need not recompile the GAP kernel.

DESCRIPTION

When 'PermChars' is called with a character degree as second argument, it
calls the function 'PermComb'. 'PermComb' sorts the characters in the
'irreducibles' component of the character table given as first argument
w.r.t. to their degrees, but does not update the 'irredinfo' component.

CORRECT BEHAVIOUR

gap> t:= CharTable( "Symmetric", 4 );;
gap> t.irreducibles;
[ [ 1, -1, 1, 1, -1 ], [ 3, -1, -1, 0, 1 ], [ 2, 0, 2, -1, 0 ],
  [ 3, 1, -1, 0, -1 ], [ 1, 1, 1, 1, 1 ] ]
gap> t.irredinfo;
[ rec(
      charparam := [ 1, [ 1, 1, 1, 1 ] ] ), rec(
      charparam := [ 1, [ 2, 1, 1 ] ] ), rec(
      charparam := [ 1, [ 2, 2 ] ] ), rec(
      charparam := [ 1, [ 3, 1 ] ] ), rec(
      charparam := [ 1, [ 4 ] ] ) ]
gap> PermChars( t, 3 );
[ [ 3, 1, 3, 0, 1 ] ]
gap> t.irreducibles;
[ [ 1, -1, 1, 1, -1 ], [ 3, -1, -1, 0, 1 ], [ 2, 0, 2, -1, 0 ],
  [ 3, 1, -1, 0, -1 ], [ 1, 1, 1, 1, 1 ] ]
gap> t.irredinfo;
[ rec(
      charparam := [ 1, [ 1, 1, 1, 1 ] ] ), rec(
      charparam := [ 1, [ 2, 1, 1 ] ] ), rec(
      charparam := [ 1, [ 2, 2 ] ] ), rec(
      charparam := [ 1, [ 3, 1 ] ] ), rec(
      charparam := [ 1, [ 4 ] ] ) ]

COMMENT

Making a shallow copy of the first argument, as is done in 'PermComb',
is not sufficient to avoid the sideeffect, since the 'irreducibles'
component is sorted in place. Moreover, since the 'irredinfo' component
is not sorted in place, but replaced by a sorted copy, it may cause the
original character table to be incorrect afterwards.

DIFFS

Prereq: 3.24.1.2
--- lib/ctpermch.g      Mon Aug 19 08:49:49 1996
+++ lib/ctpermch.g      Mon Aug 19 09:34:18 1996
@@ -3,7 +3,7 @@
 #A  ctpermch.g                  GAP library                     Thomas Breuer
 #A                                                           & Goetz Pfeiffer
 ##
-#A  @(#)$Id: 1.html,v 1.2 2004/04/21 15:03:10 felsch Exp $
+#A  @(#)$Id: 1.html,v 1.2 2004/04/21 15:03:10 felsch Exp $
 ##
 #Y  Copyright 1990-1992,  Lehrstuhl D fuer Mathematik,  RWTH Aachen,  Germany
 ##
@@ -15,7 +15,10 @@
 #N  - 'Constituent' und 'Maxdeg' - Optionen in 'PermComb'
 ##
 #H  $Log: 1.html,v $
 #H  Revision 1.2  2004/04/21 15:03:10  felsch
 #H  Corrected links in the Forum Archive pages.   VF
 #H
 #H  Revision 1.1.1.1  2004/04/20 13:39:30  felsch
 #H  The final GAP-Forum archive until 2003.
 #H
 #H  Revision 1.4  2003/06/12 19:20:34  gap
 #H  Further update. AH
 #H
 #H  Revision 1.3  1997/08/15 11:19:38  gap
 #H  New forum setup. AH
 #H
 #H  Revision 1.2  1997/04/24 15:33:16  gap
 #H  These files were replaced by the versions in WWW. The content is basically the
 #H  same but the formatting has been much more friendly towards the HTML-Converter.
 #H  AH
 #H
 #H  Revision 1.1  1996/10/30 13:07:07  gap
 #H  added forum archive and translation files.
 #H
-#H  Revision 3.24.1.2  1994/11/14  16:29:39  sam
+#H  Revision 3.24.1.3  1996/08/19 07:33:28  sam
+#H  fixed sideeffect of 'PermComb' because of sorting characters
+#H
+#H  Revision 3.24.1.2  1994/11/14 16:29:39  sam
 #H  fixed a bug in error message,
 #H  changed ATLAS component in case of high multiplicities
 #H
@@ -855,6 +858,7 @@
    if not ForAll( tbl.irreducibles[1], x -> x = 1 ) then

tbl:= ShallowCopy( tbl );
+ tbl.irreducibles:= ShallowCopy( tbl.irreducibles );
SortCharactersCharTable( tbl, "degree" );
# (will be wrong if 'arec' contains component 'bounds' ...)

END OF  fix20lib.dif ________________________________________________________

> < [top]