This mail contains a bugfix for a dangerous problem in GAP 3.4.3.
*You should apply this bugfix as soon as possible*.
The problem is in permutation group normalizer, centralizer, stabilizer,
and intersection. They produce correct results, but if one does further
computations with the results, one may get incorrect results.
ACKNOWLEDGEMENT
We thank Erzsebet Horvath (Budapest Technical University) for bringing
the problem to our attention via private communication in September 1996.
VERSION
GAP/lib 3.4.3.24
Before applying this fix you *must* already have applied fix24lib.
PRIORITY
The problem is a dangerous problem, because it may cause a computation
to produce incorrect results without a warning. Thus the bugfix 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 'fix26lib.dif', and issue the command:patch -p0 < fix26lib.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
The results of permutation group normalizer, centralizer, stabilizer,
and intersection computations may have a 'stabChain' component which
is identical to the group record. This may lead to problems in
following computations.
CORRECT BEHAVIOUR
gap> HS := Group( > ( 2, 8, 13, 17, 20, 22, 7)( 3, 9, 14, 18, 21, 6, 12) > ( 4, 10, 15, 19, 5, 11, 16)( 24, 77, 99, 72, 64, 82, 40) > ( 25, 92, 49, 88, 28, 65, 90)( 26, 41, 70, 98, 91, 38, 75) > ( 27, 55, 43, 78, 86, 87, 45)( 29, 69, 59, 79, 76, 35, 67) > ( 30, 39, 42, 81, 36, 57, 89)( 31, 93, 62, 44, 73, 71, 50) > ( 32, 53, 85, 60, 51, 96, 83)( 33, 37, 58, 46, 84,100, 56) > ( 34, 94, 80, 61, 97, 48, 68)( 47, 95, 66, 74, 52, 54, 63), > ( 1, 35)( 3, 81)( 4, 92)( 6, 60)( 7, 59)( 8, 46)( 9, 70) > ( 10, 91)( 11, 18)( 12, 66)( 13, 55)( 14, 85)( 15, 90)( 17, 53) > ( 19, 45)( 20, 68)( 21, 69)( 23, 84)( 24, 34)( 25, 31)( 26, 32) > ( 37, 39)( 38, 42)( 40, 41)( 43, 44)( 49, 64)( 50, 63)( 51, 52) > ( 54, 95)( 56, 96)( 57,100)( 58, 97)( 61, 62)( 65, 82)( 67, 83) > ( 71, 98)( 72, 99)( 74, 77)( 76, 78)( 87, 89) );; HS.name := "HS";; gap> s5 := SylowSubgroup( HS, 5 );; gap> cc := ConjugacyClassesSubgroups( s5 );; gap> n5 := Normalizer( HS, cc[8].representative );; n5.name := "n5";; gap> CharTable( n5 ); CharTable( n5 )
COMMENT
The problem was that 'StabChain' mistook a group as a stabilizer chain
record. This fix changes 'StabChain' so that it correctly recognizes
whether a group or a stabilizer chain record is passed as argument.
DIFFS
Prereq: 3.13.1.4 --- lib/permstbc.g Fri Sep 27 15:22:02 1996 +++ lib/permstbc.g Fri Sep 27 14:42:13 1996 @@ -3,13 +3,16 @@ #A permstbc.g GAP library Udo Polis #A & Akos Seress ## -#H @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:19 felsch Exp $ +#H @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:19 felsch Exp $ ## #Y Copyright (C) 1994, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file contains the functions to compute and change stabilizer chains. ## #H $Log: 1.html,v $ #H Revision 1.2 2004/04/21 15:06:19 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.13.1.5 1996/09/27 12:41:47 mschoene +#H fixed 'StabChain' from treating groups as stabchains +#H #H Revision 3.13.1.4 1996/09/17 12:28:56 mschoene #H changed 'StabChain', it should not enter 'G.stabChainOptions.knownBase' #H @@ -125,6 +128,12 @@ options.strongGenerators, options.base ); + # if it is a base change for a stabchain record (instead of a group) + elif not IsBound( grp.operations ) then + chain := PermGroupOps.StabChainChange( + grp, + options.base ); + # if it is base change elif IsBound( grp.stabChain ) then if IsBound( options.base ) then @@ -135,18 +144,20 @@ chain := grp.stabChain; fi; - # if grp itself is a stabChain record - elif IsBound( grp.stabilizer ) then - + # if it is a base change but the group has no stabChain component + elif IsBound( grp.stabilizer ) then + #N 1996/09/30 M.Schoenert maybe we should signal an error + grp.stabChain := rec(); + grp.stabChain.identity := (); + grp.stabChain.generators := grp.generators; + grp.stabChain.orbit := grp.orbit; + grp.stabChain.transversal := grp.transversal; + grp.stabChain.stabilizer := grp.stabilizer; if IsBound( options.base ) then - #N akos 6/24/94 should be grp.operations when stabChain records - #N will have operations record - chain := PermGroupOps.StabChainChange( - grp, + chain := grp.operations.StabChainChange( + grp.stabChain, options.base ); else - # will give error for a perm group with stabilizer but not with - # stabChain (on purpose) chain := grp.stabChain; fi; END OF fix26lib.dif ________________________________________________________