% This file was created automatically from quogphom.msk.
% DO NOT EDIT!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%A  quogphom.msk               GAP documentation               Gene Cooperman
%A							     and Scott Murray
%%
%A  @(#)$Id: quogphom.msk,v 1.7 2002/04/15 10:02:33 sal Exp $
%%
%Y  (C) 2000 School Math and Comp. Sci., University of St.  Andrews, Scotland
%Y  Copyright (C) 2002 The GAP Group
%%
\PreliminaryChapter{Quotient groups by homomorphisms}

Given a group homomorphism, the cosets of its kernel correspond to
elements in the image.  Our hom coset representation
stores the homomorphism and the element in the source group.  The
image is an attribute which is computed as necessary.  Two cosets
are equal if their images are the same.  Where ever practical a coset
is identified with its image.  For example, if the homomorphism maps
into a permutation group, the cosets are considered to be permutations.
Since cosets can be multiplied, we can use them to form
a quotient group.  Any computation in this quotient group will be
``shadowed'' in the source group.



*The functions and operations described in this chapter have been added
very recently and are still undergoing development. It is conceivable that
names of variants of the functionality might change in future versions. If
you plan to use these functions in your own code, please contact us.*

\>IsHomCoset( <obj> ) C

`IsHomCoset' has one category for each kind of image (and corresponding
representations).


\>IsHomCosetToPerm( <obj> ) C


\>IsHomCosetToPermRep( <obj> ) R


\>IsHomCosetToMatrix( <obj> ) C

gdc - We need `HomCosetToMatrix' to be in same family as `Matrix',
      so that {\GAP} allows vector $\*$ for `HomCosetToMatrix'
      and other algorithms that take elements of the `HomCosetToMatrix'.
      Unfortunately, I don't know how to set the family correctly
      for compatibility.


\>IsHomCosetToMatrixRep( <obj> ) R


\>IsHomCosetToFp( <obj> ) C


\>IsHomCosetToFpRep( <obj> ) R


\>IsHomCosetToTuple( <obj> ) C


\>IsHomCosetToTupleRep( <obj> ) R


\>IsHomCosetToAdditiveElt( <obj> ) C

Here the image is an ADDITIVE group of matrices.


\>IsHomCosetToAdditiveEltRep( <obj> ) R


\>IsHomCosetToObjectRep( <obj> ) R

The generic representation.



It also has one property for each kind of source.
\>IsHomCosetOfPerm( <obj> ) P


\>IsHomCosetOfMatrix( <obj> ) P


\>IsHomCosetOfFp( <obj> ) P


\>IsHomCosetOfTuple( <obj> ) P


\>IsHomCosetOfAdditiveElt( <obj> ) P



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Creating hom cosets and quotient groups}

\>HomCoset( <hom>, <elt> ) F

Creates a hom coset.  It is better to use one of the `QuotientGroupBy...'
functions.


\>HomCosetWithImage( <hom>, <srcElt>, <imgElt> ) F

Creates a hom coset with given homomorphism <hom>, source element <srcElt>
and image element <imgElt>. 
It is better to use one of the `QuotientGroupBy...'  functions.


\>QuotientGroupHom( <hom> ) A

The quotient group associated with the homomorphism <hom>.
It is better to use one of the `QuotientGroupBy...'  functions.


\>QuotientGroupByHomomorphism( <hom> ) F

The quotient group associated with the homomorphism <hom>.


\>QuotientGroupByImages( <srcGroup>, <rangeGroup>, <srcGens>, <imgGens> ) F

creates a quotient group from the homomorphism which takes maps 
`<srcGens>[<i>]' in <srcGroup> to `<imgGens>[<i>]' in <rangeGroup>.


\>QuotientGroupByImagesNC( <srcGroup>, <rangeGroup>, <srcGens>, <imgGens> ) F

Same as `QuotientGroupByImages' (see~"QuotientGroupByImages") but without
checking that the homomorphism makes sense.



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Operations on hom cosets}

\>Homomorphism( <hcoset> )!{for quotient groups by homomorphisms} O
\>Homomorphism( <Q> )!{for quotient groups by homomorphisms} O

The homomorphism of a hom coset <hcoset>, respectively a hom quotient 
group <Q>.


\>SourceElt( <hcoset> ) O

The source element of a hom coset <hcoset>.


\>ImageElt( <hcoset> ) A

The image element of a hom coset <hcoset>.


\>CanonicalElt( <hcoset> ) A

A canonical element of a hom coset <hcoset>.  Note that SourceElt may be
different for non-identical equal cosets.  `CanonicalElt' gives the same 
element for different representation of a coset.  This will compute a chain
for the range group if one does not already exist.


\>Source( <Q> ) A

Source group of a hom quotient group <Q>.


\>Range( <Q> ) A

Range group of a hom quotient group <Q>.


\>ImagesSource( <Q> ) A

Image group of a hom quotient group <Q>.




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%E

