This mail contains a bugfix for a serious problem in GAP 3.4.3.
You should apply this bugfix soon if you are computing with AgGroups.
The problem is in 'Intersection' for AgGroups, and may cause it
to fail with a cryptic error message.
HOW TO APPLY
The problem is a serious problem, because it may cause a computation to
fail. Thus the bugfix has medium priority, and we recommend that you
apply it soon if you are computing with AgGroups.Go to the GAP directory (the directory with the 'lib/' subdirectory),
name this mail 'bugfix05.dif', and issue the command:patch -p0 < bugfix05.difThis workaround changes only the library. Thus you need not recompile
the GAP kernel.
VERSION
GAP 3.4.3.0
DESCRIPTION
'Intersection' may fail for subgroups of AgGroups and signal
Error, sorry, the elements of <arg> lie in no common ring domain in
Domain( [ obj ] ) called from
Base( V ) called from
U.operations.AffineOperation( U, V, phi, tau ) called from
AffineOperation( A, base, phi, tau ) called from
GlasbyStabilizer( G, A, B, N, R ) called from
...
CORRECT BEHAVIOUR
gap> F := FreeGroup( 7 );; gap> G := AgGroupFpGroup( F / [ > F.1^3, F.2^3, F.3^2/F.5, F.4^2/F.5, F.5^2, F.6^7, F.7^7, > Comm(F.3,F.1)/(F.3*F.4*F.5), Comm(F.4,F.1)/(F.3), > Comm(F.6,F.1)/(F.6^3), Comm(F.7,F.1)/F.7, > Comm(F.3,F.2)/(F.4*F.5), Comm(F.4,F.2)/(F.3*F.4), > Comm(F.6,F.2)/(F.6^3), Comm(F.4,F.3)/(F.5), > Comm(F.6,F.3)/(F.6^3*F.7^4), Comm(F.7,F.3)/(F.6*F.7^2), > Comm(F.6,F.4)/(F.6^3*F.7^2), Comm(F.7,F.4)/(F.6^2*F.7^2), > Comm(F.6,F.5)/F.6^5, Comm(F.7,F.5)/F.7^5 ] );; gap> U := Subgroup( G, [ G.1^2*G.2*G.3*G.5*G.6^4*G.7^4, > G.1^2*G.2^2*G.6*G.7^6 ] );; gap> V := Subgroup( G, [ G.1*G.2^2*G.4*G.5*G.6^5*G.7^5, > G.1^2*G.2^2*G.3*G.6^5*G.7^6 ] );; gap> Intersection( U, V ); Subgroup( Group( f.1, f.2, f.3, f.4, f.5, f.6, f.7 ), [ f.2*f.3*f.4*f.5*f.6^5*f.7^6 ] )
COMMENT
'AffineOperation' did not accept a list of base vectors,
as called indirectly from 'AgGroupOps.Intersection'
via 'GlasbyIntersection' and 'GlasbyStabilizer'.
PATCH
Prereq: 3.30.1.2 --- lib/agsubgrp.g 1995/12/05 15:10:40 +++ lib/agsubgrp.g 1996/02/08 12:07:06 @@ -2,7 +2,7 @@ ## #A agsubgrp.g GAP library Frank Celler ## -#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:18 felsch Exp $ +#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:18 felsch Exp $ ## #Y Copyright 1990-1992, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## @@ -11,6 +11,10 @@ ## aggroups and all functions for orbit-stabilizer calculation. ## #H $Log: 1.html,v $ #H Revision 1.2 2004/04/21 15:06:18 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.5 2003/06/12 19:20:33 gap #H Further update. AH #H #H Revision 1.4 2003/06/12 17:28:25 gap #H Address updates by JN. AH #H #H Revision 1.3 1997/08/15 11:19:33 gap #H New forum setup. AH #H #H Revision 1.2 1997/04/24 15:32:47 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:04 gap #H added forum archive and translation files. #H +#H Revision 3.30.1.3 1996/02/08 12:07:06 sam +#H fixed change in 'AffineOperation' (somehow this was lost here, +#H and since it was not lost in 'aginters.g' this caused errors) +#H #H Revision 3.30.1.2 1995/12/05 15:10:40 mschoene #H replaced 'Filtered( <list>, IsBound )' by 'Compacted( <list> )' #H @@ -1388,10 +1392,10 @@ ############################################################################# ## -#F AffineOperationp( <G>, <V>, <phi>, <tau> ) . . . . . . . . . . affine op +#F AffineOperation( <G>, <vectors>, <phi>, <tau> ) . . . . . . . . affine op ## -AgGroupOps.AffineOperation := function( U, V, phi, tau ) - local i, v, m, l, one, zero, mats, M, B; +AgGroupOps.AffineOperation := function( U, vectors, phi, tau ) + local i, v, m, l, one, zero, mats, M; # Catch trivial cases. U := Igs( U ); @@ -1399,15 +1403,20 @@ return rec( images := [] ); fi; - B := Base( V ); - if B = [] then - mats := List( U, x -> [ [ V.field.one ] ]); + if IsRec( vectors ) then +#T The manual allows this. +#T Of course it should be changed, the basis not the space should be +#T the argument ... + vectors:= Base( vectors ); + fi; + one := tau( U[ 1 ] )[ 1 ] ^ 0; + if Length( vectors ) = 0 then + mats := List( U, x -> [ [ one ] ]); else - one := tau( U[ 1 ] )[ 1 ] ^ 0; zero := 0 * one; # First the linear operation. - mats := List( U, x -> List( B, y -> phi( y, x ) ) ); + mats := List( U, x -> List( vectors, y -> phi( y, x ) ) ); for m in mats do for l in m do Add( l, zero ); END OF bugfix05.dif ________________________________________________________