<html><head><title>[new] 3 Quotient groups by homomorphisms</title></head> <body text="#000000" bgcolor="#ffffff"> [<a href="../index.htm">Top</a>] [<a href = "chapters.htm">Up</a>] [<a href ="CHAP002.htm">Previous</a>] [<a href ="CHAP004.htm">Next</a>] [<a href = "theindex.htm">Index</a>] <h1>3 Quotient groups by homomorphisms</h1><p> <P> <H3>Sections</H3> <oL> <li> <A HREF="CHAP003.htm#SECT001">Creating hom cosets and quotient groups</a> <li> <A HREF="CHAP003.htm#SECT002">Operations on hom cosets</a> </ol><p> <p> 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. <p> <strong>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.</strong> <p> <a name = ""></a> <li><code>IsHomCoset( </code><var>obj</var><code> ) C</code> <p> <code>IsHomCoset</code> has one category for each kind of image (and corresponding representations). <p> <a name = ""></a> <li><code>IsHomCosetToPerm( </code><var>obj</var><code> ) C</code> <p> <a name = ""></a> <li><code>IsHomCosetToPermRep( </code><var>obj</var><code> ) R</code> <p> <a name = ""></a> <li><code>IsHomCosetToMatrix( </code><var>obj</var><code> ) C</code> <p> gdc - We need <code>HomCosetToMatrix</code> to be in same family as <code>Matrix</code>, so that <font face="Gill Sans,Helvetica,Arial">GAP</font> allows vector * for <code>HomCosetToMatrix</code> and other algorithms that take elements of the <code>HomCosetToMatrix</code>. Unfortunately, I don't know how to set the family correctly for compatibility. <p> <a name = ""></a> <li><code>IsHomCosetToMatrixRep( </code><var>obj</var><code> ) R</code> <p> <a name = ""></a> <li><code>IsHomCosetToFp( </code><var>obj</var><code> ) C</code> <p> <a name = ""></a> <li><code>IsHomCosetToFpRep( </code><var>obj</var><code> ) R</code> <p> <a name = ""></a> <li><code>IsHomCosetToTuple( </code><var>obj</var><code> ) C</code> <p> <a name = ""></a> <li><code>IsHomCosetToTupleRep( </code><var>obj</var><code> ) R</code> <p> <a name = ""></a> <li><code>IsHomCosetToAdditiveElt( </code><var>obj</var><code> ) C</code> <p> Here the image is an ADDITIVE group of matrices. <p> <a name = ""></a> <li><code>IsHomCosetToAdditiveEltRep( </code><var>obj</var><code> ) R</code> <p> <a name = ""></a> <li><code>IsHomCosetToObjectRep( </code><var>obj</var><code> ) R</code> <p> The generic representation. <p> It also has one property for each kind of source. <a name = ""></a> <li><code>IsHomCosetOfPerm( </code><var>obj</var><code> ) P</code> <p> <a name = ""></a> <li><code>IsHomCosetOfMatrix( </code><var>obj</var><code> ) P</code> <p> <a name = ""></a> <li><code>IsHomCosetOfFp( </code><var>obj</var><code> ) P</code> <p> <a name = ""></a> <li><code>IsHomCosetOfTuple( </code><var>obj</var><code> ) P</code> <p> <a name = ""></a> <li><code>IsHomCosetOfAdditiveElt( </code><var>obj</var><code> ) P</code> <p> <p> <h2><a name="SECT001">3.1 Creating hom cosets and quotient groups</a></h2> <p><p> <a name = "SSEC001.1"></a> <li><code>HomCoset( </code><var>hom</var><code>, </code><var>elt</var><code> ) F</code> <p> Creates a hom coset. It is better to use one of the <code>QuotientGroupBy...</code> functions. <p> <a name = "SSEC001.2"></a> <li><code>HomCosetWithImage( </code><var>hom</var><code>, </code><var>srcElt</var><code>, </code><var>imgElt</var><code> ) F</code> <p> Creates a hom coset with given homomorphism <var>hom</var>, source element <var>srcElt</var> and image element <var>imgElt</var>. It is better to use one of the <code>QuotientGroupBy...</code> functions. <p> <a name = "SSEC001.3"></a> <li><code>QuotientGroupHom( </code><var>hom</var><code> ) A</code> <p> The quotient group associated with the homomorphism <var>hom</var>. It is better to use one of the <code>QuotientGroupBy...</code> functions. <p> <a name = "SSEC001.4"></a> <li><code>QuotientGroupByHomomorphism( </code><var>hom</var><code> ) F</code> <p> The quotient group associated with the homomorphism <var>hom</var>. <p> <a name = "SSEC001.5"></a> <li><code>QuotientGroupByImages( </code><var>srcGroup</var><code>, </code><var>rangeGroup</var><code>, </code><var>srcGens</var><code>, </code><var>imgGens</var><code> ) F</code> <p> creates a quotient group from the homomorphism which takes maps <code></code><var>srcGens</var><code>[</code><var>i</var><code>]</code> in <var>srcGroup</var> to <code></code><var>imgGens</var><code>[</code><var>i</var><code>]</code> in <var>rangeGroup</var>. <p> <a name = "SSEC001.6"></a> <li><code>QuotientGroupByImagesNC( </code><var>srcGroup</var><code>, </code><var>rangeGroup</var><code>, </code><var>srcGens</var><code>, </code><var>imgGens</var><code> ) F</code> <p> Same as <code>QuotientGroupByImages</code> (see <a href="CHAP003.htm#SSEC001.5">QuotientGroupByImages</a>) but without checking that the homomorphism makes sense. <p> <p> <h2><a name="SECT002">3.2 Operations on hom cosets</a></h2> <p><p> <a name = "SSEC002.1"></a> <li><code>Homomorphism( </code><var>hcoset</var><code> ) O</code> <li><code>Homomorphism( </code><var>Q</var><code> ) O</code> <p> The homomorphism of a hom coset <var>hcoset</var>, respectively a hom quotient group <var>Q</var>. <p> <a name = "SSEC002.2"></a> <li><code>SourceElt( </code><var>hcoset</var><code> ) O</code> <p> The source element of a hom coset <var>hcoset</var>. <p> <a name = "SSEC002.3"></a> <li><code>ImageElt( </code><var>hcoset</var><code> ) A</code> <p> The image element of a hom coset <var>hcoset</var>. <p> <a name = "SSEC002.4"></a> <li><code>CanonicalElt( </code><var>hcoset</var><code> ) A</code> <p> A canonical element of a hom coset <var>hcoset</var>. Note that SourceElt may be different for non-identical equal cosets. <code>CanonicalElt</code> 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. <p> <a name = "SSEC002.5"></a> <li><code>Source( </code><var>Q</var><code> ) A</code> <p> Source group of a hom quotient group <var>Q</var>. <p> <a name = "SSEC002.6"></a> <li><code>Range( </code><var>Q</var><code> ) A</code> <p> Range group of a hom quotient group <var>Q</var>. <p> <a name = "SSEC002.7"></a> <li><code>ImagesSource( </code><var>Q</var><code> ) A</code> <p> Image group of a hom quotient group <var>Q</var>. <p> <p> [<a href="../index.htm">Top</a>] [<a href = "chapters.htm">Up</a>] [<a href ="CHAP002.htm">Previous</a>] [<a href ="CHAP004.htm">Next</a>] [<a href = "theindex.htm">Index</a>] <P> <font face="Gill Sans,Helvetica,Arial">GAP 4 manual<br>December 2008 </font></body></html>