Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 91213ddcfbe7f54821d42c2d9e091326 > files > 1202

gap-system-packages-4.4.12-5mdv2010.0.i586.rpm

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>GAP (Gpd) - Chapter 4: Groupoids</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
</head>
<body>


<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<div class="chlinkprevnexttop">&nbsp;<a href="chap0.html">Top of Book</a>&nbsp;  &nbsp;<a href="chap3.html">Previous Chapter</a>&nbsp;  &nbsp;<a href="chap5.html">Next Chapter</a>&nbsp;  </div>

<p><a id="X82F6A1AB798648F4" name="X82F6A1AB798648F4"></a></p>
<div class="ChapSects"><a href="chap4.html#X82F6A1AB798648F4">4 <span class="Heading">Groupoids</span></a>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap4.html#X7A7355C58610A48C">4.1 <span class="Heading">Groupoids: their elements and attributes</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap4.html#X8406913B7ED86CFE">4.1-1 SinglePieceGroupoid</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap4.html#X8382678F86F18DA8">4.1-2 Pieces</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap4.html#X8511D3EE845CC930">4.1-3 IsPermGroupoid</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap4.html#X7D028B3B8385ED07">4.1-4 GroupoidElement</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap4.html#X7C0911667FF90DB2">4.1-5 IsSinglePiece</a></span>
</div>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap4.html#X7BDBA72C852C4625">4.2 <span class="Heading">Subgroupoids</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap4.html#X7AEA9BF780CD6957">4.2-1 SubgroupoidByPieces</a></span>
</div>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap4.html#X793A3BBE81410B11">4.3 <span class="Heading">Stars, Costars and Homsets</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap4.html#X7B561BAE7D471C60">4.3-1 ObjectStar</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap4.html#X7E30871D78B9F81C">4.3-2 IdentityElement</a></span>
</div>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap4.html#X831AA9E8780235F2">4.4 <span class="Heading">Left, right and double cosets</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap4.html#X8412ABD57986B9FC">4.4-1 RightCoset</a></span>
</div>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap4.html#X8653FC9786E3209A">4.5 <span class="Heading">Conjugation</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap4.html#X8123456781234567">4.5-1 \^</a></span>
</div>
</div>

<h3>4 <span class="Heading">Groupoids</span></h3>

<p><em>Many of the names of the functions described in this chapter have changed, due to the introduction of magmas with objects, so the chapter is full of errors. A new version will be released as soon as possible.</em></p>

<p>A <em>groupoid</em> is a (mathematical) category in which every element is invertible. It consists of a set of <em>pieces</em>, each of which is a connected groupoid. (The usual terminology is `connected component', but in <strong class="pkg">GAP</strong> `component' is used for `record component'.)</p>

<p>A <em>single piece groupoid</em> is determined by a set of <em>objects</em> <code class="code">obs</code> and an <em>object group</em> <code class="code">grp</code>. The objects of a single piece groupoid are generally chosen to be consecutive negative integers, but any suitable ordered set is acceptable, and `consecutive' is not a requirement. The object groups will usually be taken to be permutation groups, but pc-groups and fp-groups are also supported.</p>

<p>A <em>group</em> is a single piece groupoid with one object.</p>

<p>A <em>groupoid</em> is a set of one or more single piece groupoids, its single piece <em>pieces</em>, and is represented as <code class="code">IsGroupoidRep</code>, with attribute <code class="code">PiecesOfGroupoid</code>.</p>

<p>For the definitions of the standard properties of groupoids we refer to R. Brown's book ``Topology'' <a href="chapBib.html#biBBrTop">[Bro88]</a>, recently revised and reissued as ``Topology and Groupoids'' <a href="chapBib.html#biBBrTopGpd">[Bro06]</a>.</p>

<p><a id="X7A7355C58610A48C" name="X7A7355C58610A48C"></a></p>

<h4>4.1 <span class="Heading">Groupoids: their elements and attributes</span></h4>

<p><a id="X8406913B7ED86CFE" name="X8406913B7ED86CFE"></a></p>

<h5>4.1-1 SinglePieceGroupoid</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; SinglePieceGroupoid</code>( <var class="Arg">grp, obs</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Groupoid</code>( <var class="Arg">args</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>There are a variety of constructors for groupoids, with one or two parameters. The global function <code class="code">Groupoid</code> will normally find the appropriate one to call, the options being:</p>


<ul>
<li><p>the object group, a list of objects;</p>

</li>
<li><p>a group being converted to a groupoid, a single object;</p>

</li>
<li><p>a list of groupoids which have already been constructed.</p>

</li>
</ul>
<p>Methods for <code class="code">ViewObj</code>, <code class="code">PrintObj</code> and <code class="code">Display</code> are provided for groupoids and the other types of object in this package. Users are advised to supply names for all the groups and groupoids they construct.</p>


<table class="example">
<tr><td><pre>

gap&gt; d8 := Group( (1,2,3,4), (1,3) );;
gap&gt; SetName( d8, "d8" );
gap&gt; Gd8 := SinglePieceGroupoid( d8, [-9,-8,-7] );
Perm single piece groupoid:
&lt; d8, [ -9, -8, -7 ] &gt;
gap&gt; c6 := Group( (5,6,7)(8,9) );;
gap&gt; SetName( c6, "c6" );
gap&gt; Gc6 := DomainWithSingleObject( c6, -6 );
Perm SinglePiece Groupoid:
&lt; c6, [ -6 ] &gt;
gap&gt; Gd8c6 := UnionOfPieces( [ Gd8, Gc6 ] );;
gap&gt; Display( Gd8c6 );
Perm Groupoid with 2 pieces:
&lt; objects: [ -9, -8, -7 ]
    group: d8 = &lt;[ (1,2,3,4), (1,3) ]&gt; &gt;
&lt; objects: [ -6 ]
    group: c6 = &lt;[ (5,6,7)(8,9) ]&gt; &gt;
gap&gt; SetName( Gd8, "Gd8" );  SetName( Gc6, "Gc6" );  SetName( Gd8c6, "Gd8+Gc6" );

</pre></td></tr></table>

<p><a id="X8382678F86F18DA8" name="X8382678F86F18DA8"></a></p>

<h5>4.1-2 Pieces</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Pieces</code>( <var class="Arg">gpd</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; ObjectList</code>( <var class="Arg">gpd</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>When a groupoid consists of two or more pieces, we require their object lists to be disjoint. The pieces are sorted by the first object in their object lists, which must be disjoint. The list <code class="code">ObjectsOfGroupoid</code> of a groupoid is the sorted concatenation of the objects in the pieces.</p>


<table class="example">
<tr><td><pre>

gap&gt; Pieces( Gd8c6 );
[ Gd8, Gc6 ]
gap&gt; ObjectList( Gd8c6 );
[ -9, -8, -7, -6 ]

</pre></td></tr></table>

<p><a id="X8511D3EE845CC930" name="X8511D3EE845CC930"></a></p>

<h5>4.1-3 IsPermGroupoid</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; IsPermGroupoid</code>( <var class="Arg">gpd</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; IsPcGroupoid</code>( <var class="Arg">gpd</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; IsFpGroupoid</code>( <var class="Arg">gpd</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A groupoid is a permutation groupoid if all its pieces have permutation groups. Most of the examples in this chapter are permutation groupoids, but in principle any type of group known to <strong class="pkg">GAP</strong> may be used.</p>

<p>In the following example <code class="code">Gf2</code> is an fp-groupoid, while <code class="code">Gq8</code> is a pc-groupoid.</p>


<table class="example">
<tr><td><pre>

gap&gt; f2 := FreeGroup( 2 );;
gap&gt; SetName( f2, "f2" );
gap&gt; Gf2 := Groupoid( f2, -22 );;
gap&gt; q8 := SmallGroup( 8, 4 );;
gap&gt; Gq8 := Groupoid( q8, [ -28, -27 ] );;
gap&gt; SetName( q8, "q8" );  SetName( Gq8, "Gq8" );
gap&gt; Gf2q8 := Groupoid( [ Gf2, Gq8 ] );;
gap&gt; [ IsFpGroupoid( Gf2 ), IsPcGroupoid( Gq8 ), IsPcGroupoid( Gf2q8 ) ];
[ true, true, false ]
gap&gt; G4 := Groupoid( [ Gd8c6, Gf2, Gq8 ] );;
gap&gt; Display( G4 );
Groupoid with 4 pieces:
&lt; objects: [ -28, -27 ]
    group: q8 = &lt;[ f1, f2, f3 ]&gt; &gt;
&lt; objects: [ -22 ]
    group: f2 = &lt;[ f1, f2 ]&gt; &gt;
&lt; objects: [ -9, -8, -7 ]
    group: d8 = &lt;[ (1,2,3,4), (1,3) ]&gt; &gt;
&lt; objects: [ -6 ]
    group: c6 = &lt;[ (5,6,7)(8,9) ]&gt; &gt;
gap&gt; G4 = Groupoid( [ Gq8, Gf2, Gd8c6 ] );
true

</pre></td></tr></table>

<p><a id="X7D028B3B8385ED07" name="X7D028B3B8385ED07"></a></p>

<h5>4.1-4 GroupoidElement</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; GroupoidElement</code>( <var class="Arg">gpd, elt, tail, head</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; IsElementOfGroupoid</code>( <var class="Arg">elt</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Arrow</code>( <var class="Arg">elt</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Arrowtail</code>( <var class="Arg">elt</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Arrowhead</code>( <var class="Arg">elt</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Size</code>( <var class="Arg">gpd</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>A <em>groupoid element</em> <code class="code">e</code> is a triple consisting of a group element, <code class="code">Arrow(e)</code> or <code class="code">e![1]</code>; the tail (source) object, <code class="code">Arrowtail(e)</code> or <code class="code">e![2]</code>; and the head (target) object, <code class="code">Arrowhead(e)</code> or <code class="code">e![3]</code>.</p>

<p>The <code class="code">Size</code> of a groupoid is the number of its elements which, for a single piece groupoid, is the product of the size of the group with the square of the number of objects.</p>

<p>Groupoid elements have a <em>partial composition</em>: two elements may be multiplied when the head of the first coincides with the tail of the second.</p>


<table class="example">
<tr><td><pre>

gap&gt; e1 := GroupoidElement( Gd8, (1,2)(3,4), -9, -8 );
[(1,2)(3,4) : -9 -&gt; -8]
gap&gt; e2 := GroupoidElement( Gd8, (1,3), -8, -7 );;
gap&gt; Print( [ Arrow( e2 ), Arrowtail( e2 ), Arrowhead( e2 ) ], "\n" );
[ (1,3), -8, -7 ]
gap&gt; prod := e1*e2;
[(1,2,3,4) : -9 -&gt; -7]
gap&gt; e3 := GroupoidElement( Gd8, (1,3)(2,4), -7, -9 );;
gap&gt; cycle := prod*e3;
[(1,4,3,2) : -9 -&gt; -9]
gap&gt; cycle^2;
[(1,3)(2,4) : -9 -&gt; -9]
gap&gt; Order( cycle );
4
gap&gt; cycle^e1;
[(1,2,3,4) : -8 -&gt; -8]
gap&gt; [ Size( Gd8 ), Size( Gc6 ), Size( Gd8c6 ), Size( Gf2q8 ) ];
[ 72, 6, 78, infinity ]

</pre></td></tr></table>

<p><a id="X7C0911667FF90DB2" name="X7C0911667FF90DB2"></a></p>

<h5>4.1-5 IsSinglePiece</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; IsSinglePiece</code>( <var class="Arg">gpd</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; IsDiscrete</code>( <var class="Arg">gpd</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>The forgetful functor, which forgets the composition of elements, maps the category of groupoids and their morphisms to the category of digraphs and their morphisms. Applying this functor to a particular groupoid gives the <em>underlying digraph</em> of the groupoid. A groupoid is <em>connected</em> if its underlying digraph is connected (and so complete). A groupoid is <em>discrete</em> if it is a union of groups, so that all the arcs in its underlying digraph are loops. It is sometimes convenient to call a groupoid element a <em>loop</em> when its tail and head are the same object.</p>

<p><a id="X7BDBA72C852C4625" name="X7BDBA72C852C4625"></a></p>

<h4>4.2 <span class="Heading">Subgroupoids</span></h4>

<p><a id="X7AEA9BF780CD6957" name="X7AEA9BF780CD6957"></a></p>

<h5>4.2-1 SubgroupoidByPieces</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; SubgroupoidByPieces</code>( <var class="Arg">gpd, obhoms</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Subgroupoid</code>( <var class="Arg">args</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; FullSubgroupoid</code>( <var class="Arg">gpd, obs</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; MaximalDiscreteSubgroupoid</code>( <var class="Arg">gpd</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; DiscreteSubgroupoid</code>( <var class="Arg">gpd, obs, sgps</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; FullIdentitySubgroupoid</code>( <var class="Arg">gpd</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; DiscreteIdentitySubgroupoid</code>( <var class="Arg">gpd</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>A <em>subgroupoid</em> <code class="code">sgpd</code> of <code class="code">gpd</code> has as objects a subset of the objects of <code class="code">gpd</code>. It is <em>wide</em> if all the objects are included. It is <em>full</em> if, for any two objects in <code class="code">sgpd</code>, the <code class="code">Homset</code> is the same as in <code class="code">gpd</code>. The elements of <code class="code">sgpd</code> are a subset of those of <code class="code">gpd</code>, closed under multiplication and with tail and head in the chosen object set.</p>

<p>There are a variety of constructors for a subgroupoid of a groupoid. The operation <code class="code">SubgroupoidByPieces</code> is the most general. Its two parameters are a groupoid and a list of pieces, where each piece is specified as a list <code class="code">[obs,sgp]</code>, <code class="code">obs</code> is a subset of the objects in one of the pieces of <code class="code">gpd</code>, and <code class="code">sgp</code> is a subgroup of the group in that piece.</p>

<p>The <code class="code">FullSubgroupoid</code> of a groupoid <code class="code">gpd</code> on a subset <code class="code">obs</code> of its objects contains all the elements of <code class="code">gpd</code> with tail and head in <code class="code">obs</code>.</p>

<p>A subgroupoid is <em>discrete</em> if it is a union of groups. The <code class="code">MaximalDiscreteSubgroupoid</code> of <code class="code">gpd</code> is the union of all the single-object full subgroupoids of <code class="code">gpd</code>.</p>

<p>An <em>identity subgroupoid</em> has trivial object groups, but need not be discrete. A single piece identity groupoid is sometimes called a <em>tree groupoid</em>.</p>

<p>The global function <code class="code">Subgroupoid</code> should call the appropriate operation.</p>


<table class="example">
<tr><td><pre>

gap&gt; c4d := Subgroup( d8, [ (1,2,3,4) ] );;
gap&gt; k4d := Subgroup( d8, [ (1,2)(3,4), (1,3)(2,4) ] );;
gap&gt; SetName( c4d, "c4d" );  SetName( k4d, "k4d" );
gap&gt; Ud8 := Subgroupoid( Gd8, [ [ k4d,[-9] ], [ c4d, [-8,-7] ] ] );;
gap&gt; SetName( Ud8, "Ud8" );
gap&gt; Display( Ud8 );
Perm Groupoid with 2 pieces:
&lt; objects: [ -9 ]
    group: k4d = &lt;[ (1,2)(3,4), (1,3)(2,4) ]&gt; &gt;
&lt; objects: [ -8, -7 ]
    group: c4d = &lt;[ (1,2,3,4) ]&gt; &gt;
gap&gt; FullSubgroupoid( Gd8c6, [-7,-6] );
Perm Groupoid with pieces:
&lt; [ -7 ], d8 &gt;
&lt; [ -6 ], c6 &gt;
gap&gt; DiscreteSubgroupoid( Gd8c6, [-9,-8], [ c4d, k4d ] );
Perm Groupoid with pieces:
&lt; [ -9 ], c4d &gt;
&lt; [ -8 ], k4d &gt;
gap&gt; FullIdentitySubgroupoid( Ud8 );
Perm Groupoid with pieces:
&lt; [ -9 ], id(k4d) &gt;
&lt; [ -8, -7 ], id(c4d) &gt;

</pre></td></tr></table>

<p><a id="X793A3BBE81410B11" name="X793A3BBE81410B11"></a></p>

<h4>4.3 <span class="Heading">Stars, Costars and Homsets</span></h4>

<p><a id="X7B561BAE7D471C60" name="X7B561BAE7D471C60"></a></p>

<h5>4.3-1 ObjectStar</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; ObjectStar</code>( <var class="Arg">gpd, obj</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; ObjectCostar</code>( <var class="Arg">gpd, obj</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Homset</code>( <var class="Arg">gpd, tail, head</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>The <em>star</em> at <code class="code">obj</code> is the set of groupoid elements which have <code class="code">obj</code> as tail, while the <em>costar</em> is the set of elements which have <code class="code">obj</code> as head. The <em>homset</em> from <code class="code">obj1</code> to <code class="code">obj2</code> is the set of elements with the specified tail and head, and so is bijective with the elements of the group. Thus every star and every costar is a union of homsets.</p>

<p>In order not to create unneccessary long lists, these operations return objects of type <code class="code">IsHomsetCosetsRep</code> for which an <code class="code">Iterator</code> is provided. (An <code class="code">Enumerator</code> is not yet implemented.)</p>


<table class="example">
<tr><td><pre>

gap&gt; star9 := ObjectStar( Gd8, -9 );
&lt;star at [ -9 ] with group d8&gt;
gap&gt; for e in star9 do
&gt;      if ( Order( e![1] ) = 4 ) then Print( e, "\n" ); fi;
&gt;    od;
[(1,4,3,2) : -9 -&gt; -9]
[(1,4,3,2) : -9 -&gt; -8]
[(1,4,3,2) : -9 -&gt; -7]
[(1,2,3,4) : -9 -&gt; -9]
[(1,2,3,4) : -9 -&gt; -8]
[(1,2,3,4) : -9 -&gt; -7]
gap&gt; costar6 := ObjectCostar( Gc6, -6 );
&lt;costar at [ -6 ] with group c6&gt;
gap&gt; hset78 := Homset( Ud8, -7, -8 );
&lt;homset -7 -&gt; -8 with group c4d&gt;
gap&gt; for e in hset78 do  Print( e, "\n" );  od;
[() : -7 -&gt; -8]
[(1,3)(2,4) : -7 -&gt; -8]
[(1,4,3,2) : -7 -&gt; -8]
[(1,2,3,4) : -7 -&gt; -8]

</pre></td></tr></table>

<p><a id="X7E30871D78B9F81C" name="X7E30871D78B9F81C"></a></p>

<h5>4.3-2 IdentityElement</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; IdentityElement</code>( <var class="Arg">gpd, obj</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>The identity groupoid element <code class="code">1\_{o}</code> of <code class="code">gpd</code> at object <code class="code">o</code> is <code class="code">[e,o,o]</code> where <code class="code">e</code> is the identity group element in the object group. It is a left identity for the star and a right identity for the costar at that object.</p>


<table class="example">
<tr><td><pre>

gap&gt; i7 := IdentityElement( Gd8, -7 );;
gap&gt; i8 := IdentityElement( Gd8, -8 );;
gap&gt; L := [ i7, i8 ];;
gap&gt; for e in hset78 do  Add( L, i7*e*i8 = e );  od;
gap&gt; L;
[ [() : -7 -&gt; -7], [() : -8 -&gt; -8], true, true, true, true ]

</pre></td></tr></table>

<p><a id="X831AA9E8780235F2" name="X831AA9E8780235F2"></a></p>

<h4>4.4 <span class="Heading">Left, right and double cosets</span></h4>

<p><a id="X8412ABD57986B9FC" name="X8412ABD57986B9FC"></a></p>

<h5>4.4-1 RightCoset</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; RightCoset</code>( <var class="Arg">G, U, elt</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; RightCosetRepresentatives</code>( <var class="Arg">G, U</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; RightCosetsNC</code>( <var class="Arg">G, U</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; LeftCoset</code>( <var class="Arg">G, U, elt</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; LeftCosetRepresentatives</code>( <var class="Arg">G, U</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; LeftCosetRepresentativesFromObject</code>( <var class="Arg">G, U, obj</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; LeftCosetsNC</code>( <var class="Arg">G, U</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; DoubleCoset</code>( <var class="Arg">G, U, elt, V</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; DoubleCosetRepresentatives</code>( <var class="Arg">G, U, V</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; DoubleCosetsNC</code>( <var class="Arg">G, U, V</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>If <code class="code">U</code> is a wide subgroupoid of G, the <em>right cosets</em> of U in G are the equivalence classes of the relation on the elements of G where g1 is related to g2 if and only if g2 = u*g1 for some element u of U. The right coset containing g is written Ug. These right cosets refine the costars of G and, in particular, U1_o is the costar of U at o, so that (unlike groups) U is itself a coset only when G has a single object.</p>

<p>The <em>right coset representatives</em> for U in G form a list containing one groupoid element for each coset where, in a particular piece of U, the group element chosen is the right coset representative of the group of U in the group of G.</p>

<p>Similarly, the <em>left cosets</em> gU refine the stars of G, while <em>double cosets</em> are unions of left cosets and of right cosets. The operation <code class="code">LeftCosetRepresentativesFromObject( G, U, obj )</code> is used in Chapter 4, and returns only those representatives which have tail at <code class="code">obj</code>.</p>

<p>As with stars and homsets, these cosets are implemented with representation <code class="code">IsHomsetCosetsRep</code> and provided with an iterator. Note that, when U has more than one piece, cosets may have differing lengths.</p>


<table class="example">
<tr><td><pre>

gap&gt; re2 := RightCoset( Gd8, Ud8, e2 );
RightCoset(c4d,[(1,3) : -8 -&gt; -7])
gap&gt; for x in re2 do Print( x, "\n" ); od;
[(1,3) : -8 -&gt; -8]
[(1,3) : -7 -&gt; -8]
[(2,4) : -8 -&gt; -8]
[(2,4) : -7 -&gt; -8]
[(1,4)(2,3) : -8 -&gt; -8]
[(1,4)(2,3) : -7 -&gt; -8]
[(1,2)(3,4) : -8 -&gt; -8]
[(1,2)(3,4) : -7 -&gt; -8]
gap&gt; rcrd8 := RightCosetRepresentatives( Gd8, Ud8 );
[ [() : -9 -&gt; -9], [() : -9 -&gt; -8], [() : -9 -&gt; -7], [(2,4) : -9 -&gt; -9],
  [(2,4) : -9 -&gt; -8], [(2,4) : -9 -&gt; -7], [() : -8 -&gt; -9], [() : -8 -&gt; -8],
  [() : -8 -&gt; -7], [(2,4) : -8 -&gt; -9], [(2,4) : -8 -&gt; -8], [(2,4) : -8 -&gt; -7]
 ]
gap&gt; lcr7 := LeftCosetRepresentativesFromObject( Gd8, Ud8, -7 );
[ [() : -7 -&gt; -9], [(2,4) : -7 -&gt; -9], [() : -7 -&gt; -8], [(2,4) : -7 -&gt; -8] ]

</pre></td></tr></table>

<p><a id="X8653FC9786E3209A" name="X8653FC9786E3209A"></a></p>

<h4>4.5 <span class="Heading">Conjugation</span></h4>

<p><a id="X8123456781234567" name="X8123456781234567"></a></p>

<h5>4.5-1 \^</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; \^</code>( <var class="Arg">e1, e2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>When e2 = c : p -&gt; q and e1 has group element b, the conjugate e1^e2 has a complicated definition, but may be remembered as follows. All objects are fixed except p,q, which are interchanged. For p,q as source, multiply b on the left by c^-1,c respectively; and for p,q as target, multiply b on the right by c,c^-1. This product gives the group element of the conjugate.</p>


<table class="example">
<tr><td><pre>

gap&gt; x := GroupoidElement( Gd8, (2,4), -9, -9 );; 
gap&gt; y := GroupoidElement( Gd8, (1,2,3,4), -8, -9 );; 
gap&gt; z := GroupoidElement( Gd8, (1,3)(2,4), -7, -8 );; 
gap&gt; Print( "\nConjugation with elements x, y, and z in Gd8:\n" );
gap&gt; Print( "x = ", x, ",  y = ", y, ",  z = ", z, "\n" );
x = [(2,4) : -9 -&gt; -9],  y = [(1,2,3,4) : -8 -&gt; -9],  z = [(1,3) : -8 -&gt; -8]
gap&gt; Print( "x^x = ", x^x, ",  x^y = ", x^y, ",  x^z = ", x^z, "\n" );
x^x = [(2,4) : -9 -&gt; -9],  x^y = [(1,3) : -8 -&gt; -8],  x^z = [(2,4) : -9 -&gt; -9]
gap&gt; Print( "y^x = ", y^x, ",  y^y = ", y^y, ",  y^z = ", y^z, "\n" );
y^x = [() : -8 -&gt; -9],  y^y = [(1,4,3,2) : -9 -&gt; -8],  y^z = [(1,4)(2,3) : -8 -&gt; -9]
gap&gt; Print( "z^x = ", z^x, ",  z^y = ", z^y, ",  z^z = ", z^z, "\n" );
z^x = [(1,3) : -8 -&gt; -8],  z^y = [(2,4) : -9 -&gt; -9],  z^z = [(1,3) : -8 -&gt; -8]

</pre></td></tr></table>

<p>More examples of all these operations may be found in the example file <code class="file">gpd/examples/gpd.g</code>.</p>


<div class="chlinkprevnextbot">&nbsp;<a href="chap0.html">Top of Book</a>&nbsp;  &nbsp;<a href="chap3.html">Previous Chapter</a>&nbsp;  &nbsp;<a href="chap5.html">Next Chapter</a>&nbsp;  </div>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<hr />
<p class="foot">generated by <a href="http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>