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.difIf '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 ________________________________________________________