This mail contains a bugfix for a serious problem in GAP 3.4.3.12.
You should apply this bugfix soon if you are using homomorphisms.
The problem is in 'PreImage' and causes it to fail for non surjective
group homomorphisms.
HOW TO APPLY
The problem is a serious problem, because if may cause a computation to
fail. Thus the bugfix has medium priority, and we recommend that you
apply it soon if you are using homomorphisms.Before applying this bugfix you *must* already have applied bugfix12.
Go to the GAP directory (the directory with the 'lib/' subdirectory),
name this mail 'bugfix13.dif', and issue the command:patch -p0 < bugfix13.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 bugfix changes only the library.
Thus you need not recompile the GAP kernel.
VERSION
GAP 3.4.3.12
DESCRIPTION
If one creates a non surjective group homomorphisms, then 'PreImage'
may fail and signalError, <elm> must lie in the preimage of <hom> in
map.operations.ImagesRepresentative( map, elm ) called from
...
COMMENT
This bugfix actually fixes two problems.
In the case where this problem first occured, the preimage of the map in
question was already known from the beginning. However it was stored in
the homomorphism record as '<hom>.preimage', whereas 'PreImage' looks for
the component '<hom>.preImage'. This bugfix changes all references to
'<hom>.preimage' to references to '<hom>.preImage' (and there are lots).'PreImage' then calls 'PreImages' to compute the set of preimages of the
range. This fails because 'PreImages' tries to compute a preimage for
the generators of the range that are not in the image. This bugfix fixes
'PreImages' to intersect the images set with 'Image(<hom>)'.
CORRECT BEHAVIOUR
gap> G := Group( (1,2), (3,4) );;
gap> H := Group( (1,2), (5,6) );
gap> h := GroupHomomorphismByImages( G, H, [G.1], [H.1] );;
gap> PreImage( h );
Subgroup( Group( (1,2), (3,4) ), [ (1,2) ] )
PATCH
Prereq: 3.31.1.4
--- lib/aghomomo.g 1995/12/21 15:29:50
+++ lib/aghomomo.g 1996/06/11 16:47:50
@@ -2,13 +2,16 @@
##
#A aghomomo.g GAP library Frank Celler
##
-#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
+#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
##
#Y Copyright 1990-1992, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
##
## This file contains functions for homomorphisms of aggroups.
##
#H $Log: 1.html,v $
#H Revision 1.2 2004/04/21 15:06:55 felsch
#H Corrected links in the Forum Archive pages. VF
#H
#H Revision 1.1.1.1 2004/04/20 13:39:39 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.31.1.5 1996/06/11 14:47:26 mschoene
+#H fixed '.preimage' to '.preImage'
+#H
#H Revision 3.31.1.4 1995/12/05 15:01:25 mschoene
#H replaced 'Filtered( <list>, IsBound )' by 'Compacted( <list> )'
#H
@@ -664,7 +667,7 @@
prd := GroupHomomorphismByImages( b.source, a.range, gens, imgs );
prd.isMapping := true;
prd.isHomomorphism := true;
- prd.preimage := b.source;
+ prd.preImage := b.source;
else
prd := MappingOps.CompositionMapping( a, b );
fi;
@@ -828,7 +831,7 @@
domain := Mappings,
generators := gens,
genimages := imgs,
- preimage := D,
+ preImage := D,
image := R.operations.Subgroup( Parent(R), imgs ),
isGeneralMapping := true,
operations := AgGroupHomomorphismByImagesOps );
Prereq: 3.0
--- lib/alghomom.g 1995/12/21 15:29:56
+++ lib/alghomom.g 1996/06/11 16:48:26
@@ -2,7 +2,7 @@
##
#A alghomom.g GAP library Thomas Breuer ?
##
-#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
+#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
##
#Y Copyright 1990-1993, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
##
@@ -12,6 +12,9 @@
## 'grphomom.g'. (Avoid this!)
##
#H $Log: 1.html,v $
#H Revision 1.2 2004/04/21 15:06:55 felsch
#H Corrected links in the Forum Archive pages. VF
#H
#H Revision 1.1.1.1 2004/04/20 13:39:39 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.0.1.1 1996/06/11 14:48:18 mschoene
+#H fixed '.preimage' to '.preImage'
+#H
#H Revision 3.0 1994/05/19 13:20:43 sam
#H Initial Revision under RCS
#H
@@ -570,9 +573,9 @@
# enter useful information (precious little)
if IsEqualSet( gens, G.generators ) then
- hom.preimage := G;
+ hom.preImage := G;
else
- hom.preimage := Parent(G).operations.Subalgebra( Parent(G), gens );
+ hom.preImage := Parent(G).operations.Subalgebra( Parent(G), gens );
fi;
if IsEqualSet( imgs, H.generators ) then
hom.image := H;
@@ -658,7 +661,7 @@
if not IsBound( hom.coKernel ) then
hom.coKernel := hom.operations.CoKernel( hom );
fi;
- return hom.source = hom.preimage
+ return hom.source = hom.preImage
and IsTrivial( hom.coKernel );
end;
@@ -694,8 +697,8 @@
AlgebraHomomorphismByImagesOps.ImagesSet := function( hom, elms )
if IsAlgebra( elms ) and IsSubset( hom.source, elms ) then
- if hom.preimage <> hom.source then
- elms := Intersection( hom.preimage, elms );
+ if hom.preImage <> hom.source then
+ elms := Intersection( hom.preImage, elms );
fi;
if not IsBound( hom.coKernel ) then
hom.coKernel := hom.operations.CoKernel( hom );
@@ -778,7 +781,7 @@
# enter useful information
prd.isMapping := true;
prd.isHomomorphism := true;
- prd.preimage := hom2.source;
+ prd.preImage := hom2.source;
prd.elements := ShallowCopy( hom2.elements );
prd.images := List( [ 1 .. Length( prd.elements ) ],
i -> hom1.images[
Prereq: 3.23.1.10
--- lib/fpgrp.g 1995/12/21 15:30:12
+++ lib/fpgrp.g 1996/06/11 16:48:47
@@ -2,13 +2,16 @@
##
#A fpgrp.g GAP library Martin Schoenert
##
-#H @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
+#H @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
##
#Y Copyright 1990-1992, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
##
## This file contains the functions dealing with finitely presented groups.
##
#H $Log: 1.html,v $
#H Revision 1.2 2004/04/21 15:06:55 felsch
#H Corrected links in the Forum Archive pages. VF
#H
#H Revision 1.1.1.1 2004/04/20 13:39:39 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.23.1.11 1996/06/11 14:48:40 mschoene
+#H fixed '.preimage' to '.preImage'
+#H
#H Revision 3.23.1.10 1995/11/25 22:42:44 mschoene
#H allowed list of names as only argument of 'FreeGroup' (3.28 -> 3.29)
#H
@@ -1852,9 +1855,9 @@
# enter usefull information (precious little)
if IsEqualSet( gens, G.generators ) then
- hom.preimage := G;
+ hom.preImage := G;
else
- hom.preimage := Parent(G).operations.Subgroup( Parent(G), gens );
+ hom.preImage := Parent(G).operations.Subgroup( Parent(G), gens );
fi;
if IsSubsetSet( imgs, H.generators ) then
hom.image := H;
@@ -1883,7 +1886,7 @@
end;
FpGroupHomomorphismByImagesOps.IsMapping := function ( hom )
- return hom.source = hom.preimage
+ return hom.source = hom.preImage
and ForAll( hom.source.relators,
rel -> MappedWord( rel, hom.generators, hom.genimages )
= hom.range.identity );
Prereq: 3.85.1.5
--- lib/group.g 1995/12/21 15:30:14
+++ lib/group.g 1996/06/11 16:51:33
@@ -2,7 +2,7 @@
##
#A group.g GAP library Frank Celler
##
-#H @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
+#H @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
##
#Y Copyright 1990-1992, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
##
@@ -21,6 +21,9 @@
## 'grphomom.g', 'grpprods.g' and 'operatio.g'.
##
#H $Log: 1.html,v $
#H Revision 1.2 2004/04/21 15:06:55 felsch
#H Corrected links in the Forum Archive pages. VF
#H
#H Revision 1.1.1.1 2004/04/20 13:39:39 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.85.1.6 1996/06/11 14:51:24 mschoene
+#H fixed '.preimage' to '.preImage'
+#H
#H Revision 3.85.1.5 1995/03/02 14:31:48 vfelsch
#H bug fixed in 'IsomorphismTypeFiniteSimpleGroup'
#H
@@ -3911,7 +3914,7 @@
P.bijection.isEpimorphism := true;
P.bijection.isIsomorphism := true;
P.bijection.image := G;
- P.bijection.preimage := P;
+ P.bijection.preImage := P;
P.bijection.kernel := TrivialSubgroup( P );
# return the permutation group
Prereq: 3.33.1.4
--- lib/grphomom.g 1995/12/21 15:30:18
+++ lib/grphomom.g 1996/06/11 16:50:55
@@ -3,13 +3,22 @@
#A grphomom.g GAP library Frank Celler
#A & Martin Schoenert
##
-#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
+#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
##
#Y Copyright 1990-1992, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
##
## This file contains dispatcher and default functions for grp homomorphism.
##
#H $Log: 1.html,v $
#H Revision 1.2 2004/04/21 15:06:55 felsch
#H Corrected links in the Forum Archive pages. VF
#H
#H Revision 1.1.1.1 2004/04/20 13:39:39 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.33.1.7 1996/06/11 14:50:50 mschoene
+#H fixed '.preimage' to '.preImage'
+#H
+#H Revision 3.33.1.6 1996/06/11 08:48:43 htheisse
+#H 'GHO.ImagesSet' now looks at 'isMapping' before calling 'CoKernel'
+#H
+#H Revision 3.33.1.5 1996/06/10 13:33:40 mschoene
+#H fixed 'GHO.ImagesSet' and 'GHO.PreImagesSet' to intersect
+#H
#H Revision 3.33.1.4 1995/12/11 11:03:19 mschoene
#H changed 'CompositionGH' and 'IdentityGH' to inherit from 'GHOps'
#H
@@ -425,8 +434,21 @@
##
GroupHomomorphismOps.ImagesSet := function ( hom, elms )
if IsGroup( elms ) and IsSubset( hom.source, elms ) then
- return Parent( hom.range ).operations.Subgroup( Parent( hom.range ),
- List( elms.generators, gen -> Image( hom, gen ) ) );
+ if PreImage(hom) <> hom.source then
+ elms := Intersection( PreImage(hom), elms );
+ fi;
+ if not IsBound( hom.coKernel ) then
+ if IsBound( hom.isMapping ) and hom.isMapping then
+ hom.coKernel := TrivialSubgroup( hom.range );
+ else
+ hom.coKernel := hom.operations.CoKernel( hom );
+ fi;
+ fi;
+ return Closure( hom.coKernel,
+ Parent( hom.range ).operations.Subgroup(
+ Parent( hom.range ),
+ List( elms.generators,
+ gen -> ImagesRepresentative( hom, gen ) ) ) );
else
return MappingOps.ImagesSet( hom, elms );
fi;
@@ -449,6 +471,9 @@
##
GroupHomomorphismOps.PreImagesSet := function ( hom, elms )
if IsGroup( elms ) and IsSubset( hom.range, elms ) then
+ if Image(hom) <> hom.range then
+ elms := Intersection( Image(hom), elms );
+ fi;
return Closure( KernelGroupHomomorphism( hom ),
Parent( hom.source ).operations.Subgroup(
Parent( hom.source ),
@@ -938,9 +963,9 @@
# enter usefull information (precious little)
if IsEqualSet( Difference( gens, [ G.identity ] ), G.generators ) then
- hom.preimage := G;
+ hom.preImage := G;
else
- hom.preimage := Parent(G).operations.Subgroup( Parent(G), gens );
+ hom.preImage := Parent(G).operations.Subgroup( Parent(G), gens );
fi;
if IsEqualSet( Difference( imgs, [ H.identity ] ), H.generators ) then
hom.image := H;
@@ -1030,7 +1055,7 @@
if not IsBound( hom.coKernel ) then
hom.coKernel := hom.operations.CoKernel( hom );
fi;
- return hom.source = hom.preimage
+ return hom.source = hom.preImage
and IsTrivial( hom.coKernel );
end;
@@ -1080,8 +1105,8 @@
GroupHomomorphismByImagesOps.ImagesSet := function ( hom, elms )
if IsGroup( elms ) and IsSubset( hom.source, elms ) then
- if hom.preimage <> hom.source then
- elms := Intersection( hom.preimage, elms );
+ if hom.preImage <> hom.source then
+ elms := Intersection( hom.preImage, elms );
fi;
if not IsBound( hom.coKernel ) then
hom.coKernel := hom.operations.CoKernel( hom );
@@ -1160,7 +1185,7 @@
# enter useful information
prd.isMapping := true;
prd.isHomomorphism := true;
- prd.preimage := hom2.source;
+ prd.preImage := hom2.source;
# note the images only, if they were already neccessary for hom1
Prereq: 3.16.1.2
--- lib/mapping.g 1995/12/21 15:30:22
+++ lib/mapping.g 1996/06/11 16:50:28
@@ -3,13 +3,16 @@
#A mapping.g GAP library Martin Schoenert
#A & Frank Celler
##
-#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
+#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
##
#Y Copyright 1990-1992, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
##
## This file contains the functions that mainly deal with mappings.
##
#H $Log: 1.html,v $
#H Revision 1.2 2004/04/21 15:06:55 felsch
#H Corrected links in the Forum Archive pages. VF
#H
#H Revision 1.1.1.1 2004/04/20 13:39:39 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.16.1.3 1996/06/11 14:50:23 mschoene
+#H fixed '.preimage' to '.preImage'
+#H
#H Revision 3.16.1.2 1995/12/11 12:03:58 mschoene
#H allowed 'MappingByFunction' with inverse function
#H
@@ -937,10 +940,10 @@
inv.source := map.range;
inv.range := map.source;
if IsBound( map.image ) then
- inv.preimge := map.image;
+ inv.preImage := map.image;
fi;
- if IsBound( map.preimage ) then
- inv.image := map.preimage;
+ if IsBound( map.preImage ) then
+ inv.image := map.preImage;
fi;
# maybe we know that this mapping is single valued
Prereq: 3.22.1.8
--- lib/permhomo.g 1996/06/11 16:23:33
+++ lib/permhomo.g 1996/06/11 16:49:41
@@ -3,13 +3,16 @@
#A permhomo.g GAP library Martin Schoenert
#A & Udo Polis
##
-#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
+#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
##
#Y Copyright 1990-1992, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
##
## This file contains functions that implement homomorphisms for permgroups.
##
#H $Log: 1.html,v $
#H Revision 1.2 2004/04/21 15:06:55 felsch
#H Corrected links in the Forum Archive pages. VF
#H
#H Revision 1.1.1.1 2004/04/20 13:39:39 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.22.1.9 1996/06/11 14:49:34 mschoene
+#H fixed '.preimage' to '.preImage'
+#H
#H Revision 3.22.1.8 1996/06/10 13:06:45 mschoene
#H fixed 'PGHBIO.CoKernel', it is a normal subgroup of the image
#H
@@ -133,9 +136,9 @@
# enter useful information (precious little)
if IsEqualSet( Difference(gens,[G.identity]), G.generators ) then
- hom.preimage := G;
+ hom.preImage := G;
else
- hom.preimage := Parent(G).operations.Subgroup( Parent(G), gens );
+ hom.preImage := Parent(G).operations.Subgroup( Parent(G), gens );
fi;
if IsEqualSet( Difference(imgs,[H.identity]), H.generators ) then
hom.image := H;
@@ -227,7 +230,7 @@
size := Length( hom.orbit );
# create new elements until we have reached the size
- while size <> Size( hom.preimage ) do
+ while size <> Size( hom.preImage ) do
# make a new element from the generators
elm := rnd[rni];
@@ -512,8 +515,8 @@
PermGroupHomomorphismByImagesOps.ImagesSet := function ( hom, elms )
if IsGroup( elms ) and IsSubset( hom.source, elms ) then
- if hom.preimage <> hom.source then
- elms := Intersection( hom.preimage, elms );
+ if hom.preImage <> hom.source then
+ elms := Intersection( hom.preImage, elms );
fi;
if not IsBound( hom.coKernel ) then
hom.coKernel := hom.operations.CoKernel( hom );
@@ -599,7 +602,7 @@
# enter useful information
prd.isMapping := true;
prd.isHomomorphism := true;
- prd.preimage := hom2.source;
+ prd.preImage := hom2.source;
# copy the stabilizer chain and update the images of the sgs
gens := [ prd.source.identity ];
@@ -698,10 +701,10 @@
fi;
# get the degree of the preimage and image
- if hom.preimage.generators = [] then
+ if hom.preImage.generators = [] then
sourcedeg := 0;
else
- sourcedeg := PermGroupOps.LargestMovedPoint( hom.preimage );
+ sourcedeg := PermGroupOps.LargestMovedPoint( hom.preImage );
fi;
if hom.image.generators = [] then
rangedeg := 0;
@@ -734,10 +737,10 @@
and IsBound( hom.source.stabChainOptions.random )
then
options.randomsource := hom.source.stabChainOptions.random;
- elif IsBound( hom.preimage.stabChainOptions )
- and IsBound( hom.preimage.stabChainOptions.random )
+ elif IsBound( hom.preImage.stabChainOptions )
+ and IsBound( hom.preImage.stabChainOptions.random )
then
- options.randomsource := hom.preimage.stabChainOptions.random;
+ options.randomsource := hom.preImage.stabChainOptions.random;
elif IsBound( StabChainOptions.random ) then
options.randomsource := StabChainOptions.random;
else
@@ -779,12 +782,12 @@
if IsBound( hom.source.size ) then
options.size := hom.source.size;
- elif IsBound( hom.preimage.size ) then
- options.size := hom.preimage.size;
+ elif IsBound( hom.preImage.size ) then
+ options.size := hom.preImage.size;
elif IsBound( hom.source.stabChain ) then
options.size := Size( hom.source );
- elif IsBound( hom.preimage.stabChain ) then
- options.size := Size( hom.preimage );
+ elif IsBound( hom.preImage.stabChain ) then
+ options.size := Size( hom.preImage );
fi;
if not IsBound( options.size ) then
if IsBound( Parent(hom.source).size ) then
@@ -797,14 +800,14 @@
and IsBound( hom.source.stabChainOptions.knownBase )
then
options.knownBase := hom.source.stabChainOptions.knownBase;
- elif IsBound( hom.preimage.stabChainOptions )
- and IsBound( hom.preimage.stabChainOptions.knownBase )
+ elif IsBound( hom.preImage.stabChainOptions )
+ and IsBound( hom.preImage.stabChainOptions.knownBase )
then
- options.knownBase := hom.preimage.stabChainOptions.knownBase;
+ options.knownBase := hom.preImage.stabChainOptions.knownBase;
elif IsBound( hom.source.stabChain ) then
options.knownBase := Base( hom.source );
- elif IsBound( hom.preimage.stabChain ) then
- options.knownBase := Base( hom.preimage );
+ elif IsBound( hom.preImage.stabChain ) then
+ options.knownBase := Base( hom.preImage );
elif IsBound( Parent(hom.source).stabChainOptions )
and IsBound( Parent(hom.source).stabChainOptions.knownBase )
then
@@ -818,14 +821,14 @@
if IsBound( hom.source.size ) then
options.limitsource := hom.source.size;
- elif IsBound( hom.preimage.size ) then
- options.limitsource := hom.preimage.size;
+ elif IsBound( hom.preImage.size ) then
+ options.limitsource := hom.preImage.size;
elif IsBound( Parent(hom.source).size ) then
options.limitsource := Parent(hom.source).size;
elif IsBound( hom.source.stabChain ) then
options.limitsource := Size( hom.source );
- elif IsBound( hom.preimage.stabChain ) then
- options.limitsource := Size( hom.preimage );
+ elif IsBound( hom.preImage.stabChain ) then
+ options.limitsource := Size( hom.preImage );
elif IsBound( Parent(hom.source).stabChain ) then
options.limitsource := Size( Parent(hom.source) );
fi;
@@ -834,10 +837,10 @@
and IsBound( hom.source.stabChainOptions.knownBase )
then
options.knownBasesource := hom.source.stabChainOptions.knownBase;
- elif IsBound( hom.preimage.stabChainOptions )
- and IsBound( hom.preimage.stabChainOptions.knownBase )
+ elif IsBound( hom.preImage.stabChainOptions )
+ and IsBound( hom.preImage.stabChainOptions.knownBase )
then
- options.knownBasesource := hom.preimage.stabChainOptions.knownBase;
+ options.knownBasesource := hom.preImage.stabChainOptions.knownBase;
elif IsBound( Parent(hom.source).stabChainOptions )
and IsBound( Parent(hom.source).stabChainOptions.knownBase )
then
@@ -845,8 +848,8 @@
:= Parent(hom.source).stabChainOptions.knownBase;
elif IsBound( hom.source.stabChain ) then
options.knownBasesource := Base( hom.source );
- elif IsBound( hom.preimage.stabChain ) then
- options.knownBasesource := Base( hom.preimage );
+ elif IsBound( hom.preImage.stabChain ) then
+ options.knownBasesource := Base( hom.preImage );
elif IsBound( Parent(hom.source).stabChain ) then
options.knownBasesource := Base( Parent(hom.source) );
fi;
Prereq: 3.1.1.2
--- lib/sq.g 1995/12/21 15:30:42
+++ lib/sq.g 1996/06/11 16:50:12
@@ -3,7 +3,7 @@
#A sq.g GAP library Frank Celler
#A Alexander Wegner
##
-#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
+#A @(#)$Id: 1.html,v 1.2 2004/04/21 15:06:55 felsch Exp $
##
#Y Copyright 1990-1992, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
##
@@ -11,6 +11,9 @@
## groups.
##
#H $Log: 1.html,v $
#H Revision 1.2 2004/04/21 15:06:55 felsch
#H Corrected links in the Forum Archive pages. VF
#H
#H Revision 1.1.1.1 2004/04/20 13:39:39 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.1.1.3 1996/06/11 14:50:08 mschoene
+#H fixed '.preimage' to '.preImage'
+#H
#H Revision 3.1.1.2 1994/10/07 13:10:39 fceller
#H added 'SQOps.AgGroup'
#H
@@ -126,7 +129,7 @@
a.naturalHomomorphism.isMapping := true;
a.naturalHomomorphism.isSurjective := true;
a.naturalHomomorphism.image := a;
- a.naturalHomomorphism.preimage := Q.source;
+ a.naturalHomomorphism.preImage := Q.source;
fi;
a.sqSource := Q.source;
return a;
END OF bugfix13.dif ________________________________________________________