<p>This chapter describes the various group product constructions that are possible in <strong class="pkg">GAP</strong>.</p>
<p>At the moment for some of the products methods are available only if both factors are given in the same representation or only for certain types of groups such as permutation groups and pc groups when the product can be naturally represented as a group of the same kind.</p>
<p><strong class="pkg">GAP</strong> does not guarantee that a product of two groups will be in a particular representation. (Exceptions are <code class="func">WreathProductImprimitiveAction</code> (<a href="chap49_mj.html#X8589DCFA7C2E5FAA"><span class="RefLink">49.4-2</span></a>) and <code class="func">WreathProductProductAction</code> (<a href="chap49_mj.html#X82B8DD1C868A3726"><span class="RefLink">49.4-3</span></a>) which are construction that makes sense only for permutation groups, see <code class="func">WreathProduct</code> (<a href="chap49_mj.html#X8786EFBC78D7D6ED"><span class="RefLink">49.4-1</span></a>)).</p>
<p><strong class="pkg">GAP</strong> however will try to choose an efficient representation, so products of permutation groups or pc groups often will be represented as a group of the same kind again.</p>
<p>Therefore the only guaranteed way to relate a product to its factors is via the embedding and projection homomorphisms, see <a href="chap49_mj.html#X798FDA1386A0EAC6"><span class="RefLink">49.6</span></a>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DirectProduct</code>( <var class="Arg">G</var>[, <var class="Arg">H</var>, <var class="Arg">...</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">‣ DirectProductOp</code>( <var class="Arg">list</var>, <var class="Arg">expl</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>These functions construct the direct product of the groups given as arguments. <code class="func">DirectProduct</code> takes an arbitrary positive number of arguments and calls the operation <code class="func">DirectProductOp</code>, which takes exactly two arguments, namely a nonempty list <var class="Arg">list</var> of groups and one of these groups, <var class="Arg">expl</var>. (This somewhat strange syntax allows the method selection to choose a reasonable method for special cases, e.g., if all groups are permutation groups or pc groups.)</p>
<p><strong class="pkg">GAP</strong> will try to choose an efficient representation for the direct product. For example the direct product of permutation groups will be a permutation group again and the direct product of pc groups will be a pc group.</p>
<p>If the groups are in different representations a generic direct product will be formed which may not be particularly efficient for many calculations. Instead it may be worth to convert all factors to a common representation first, before forming the product.</p>
<p>For a direct product <span class="SimpleMath">\(P\)</span>, calling <code class="func">Embedding</code> (<a href="chap32_mj.html#X86452F8587CBAEA0"><span class="RefLink">32.2-11</span></a>) with <span class="SimpleMath">\(P\)</span> and <span class="SimpleMath">\(n\)</span> yields the homomorphism embedding the <span class="SimpleMath">\(n\)</span>-th factor into <span class="SimpleMath">\(P\)</span>; calling <code class="func">Projection</code> (<a href="chap32_mj.html#X8769E8DA80BC96C1"><span class="RefLink">32.2-12</span></a>) with <var class="Arg">P</var> and <var class="Arg">n</var> yields the projection of <span class="SimpleMath">\(P\)</span> onto the <span class="SimpleMath">\(n\)</span>-th factor, see <a href="chap49_mj.html#X798FDA1386A0EAC6"><span class="RefLink">49.6</span></a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=Group((1,2,3),(1,2));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">d:=DirectProduct(g,g,g);</span>
Group([ (1,2,3), (1,2), (4,5,6), (4,5), (7,8,9), (7,8) ])
<span class="GAPprompt">gap></span> <span class="GAPinput">Size(d);</span>
216
<span class="GAPprompt">gap></span> <span class="GAPinput">e:=Embedding(d,2);</span>
2nd embedding into Group([ (1,2,3), (1,2), (4,5,6), (4,5), (7,8,9),
(7,8) ])
<span class="GAPprompt">gap></span> <span class="GAPinput">Image(e,(1,2));</span>
(4,5)
<span class="GAPprompt">gap></span> <span class="GAPinput">Image(Projection(d,2),(1,2,3)(4,5)(8,9));</span>
(1,2)
<span class="GAPprompt">gap></span> <span class="GAPinput">f:=FreeGroup("a","b");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=f/ParseRelators(f,"a2,b3,(ab)5");</span>
<fp group on the generators [ a, b ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">f2:=FreeGroup("x","y");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">h:=f2/ParseRelators(f2,"x2,y4,xy=Yx");</span>
<fp group on the generators [ x, y ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">d:=DirectProduct(g,h);</span>
<fp group on the generators [ a, b, x, y ]>
</pre></div>
<p>The semidirect product of a group <span class="SimpleMath">\(N\)</span> with a group <span class="SimpleMath">\(G\)</span> acting on <span class="SimpleMath">\(N\)</span> via a homomorphism <span class="SimpleMath">\(\alpha\)</span> from <span class="SimpleMath">\(G\)</span> into the automorphism group of <span class="SimpleMath">\(N\)</span> is the cartesian product <span class="SimpleMath">\(G \times N\)</span> with the multiplication <span class="SimpleMath">\((g, n) \cdot (h, m) = (gh, n^{{h^\alpha}}m)\)</span>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SemidirectProduct</code>( <var class="Arg">G</var>, <var class="Arg">alpha</var>, <var class="Arg">N</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">‣ SemidirectProduct</code>( <var class="Arg">autgp</var>, <var class="Arg">N</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>constructs the semidirect product of <var class="Arg">N</var> with <var class="Arg">G</var> acting via <var class="Arg">alpha</var>, which must be a homomorphism from <var class="Arg">G</var> into a group of automorphisms of <var class="Arg">N</var>.</p>
<p>If <var class="Arg">N</var> is a group, <var class="Arg">alpha</var> must be a homomorphism from <varclass="Arg">G</var> into a group of automorphisms of <var class="Arg">N</var>.</p>
<p>If <var class="Arg">N</var> is a full row space over a field <var class="Arg">F</var>, <var class="Arg">alpha</var> must be a homomorphism from <var class="Arg">G</var> into a matrix group of the right dimension over a subfield of <var class="Arg">F</var>, or into a permutation group (in this case permutation matrices are taken).</p>
<p>In the second variant, <var class="Arg">autgp</var> must be a group of automorphism of <var class="Arg">N</var>, it is a shorthand for <code class="code">SemidirectProduct(<var class="Arg">autgp</var>,IdentityMapping(<var class="Arg">autgp</var>),<var class="Arg">N</var>)</code>. Note that (unless <var class="Arg">autgrp</var> has been obtained by the operation <code class="func">AutomorphismGroup</code> (<a href="chap40_mj.html#X87677B0787B4461A"><span class="RefLink">40.7-1</span></a>)) you have to test <code class="func">IsGroupOfAutomorphisms</code> (<a href="chap40_mj.html#X7FC631B786C1DC8B"><span class="RefLink">40.7-2</span></a>) for <var class="Arg">autgrp</var> to ensure that <strong class="pkg">GAP</strong> knows that <var class="Arg">autgrp</var> consists of group automorphisms.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">n:=AbelianGroup(IsPcGroup,[5,5]);</span>
<pc group of size 25 with 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">au:=DerivedSubgroup(AutomorphismGroup(n));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Size(au);</span>
120
<span class="GAPprompt">gap></span> <span class="GAPinput">p:=SemidirectProduct(au,n);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Size(p);</span>
3000
<span class="GAPprompt">gap></span> <span class="GAPinput">n:=Group((1,2),(3,4));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">au:=AutomorphismGroup(n);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">au:=First(AsSet(au),i->Order(i)=3);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">au:=Group(au);</span>
<group with 1 generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsGroupOfAutomorphisms(au);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">SemidirectProduct(au,n);</span>
<pc group with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">n:=AbelianGroup(IsPcGroup,[2,2]);</span>
<pc group of size 4 with 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">au:=AutomorphismGroup(n);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">apc:=IsomorphismPcGroup(au);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=Image(apc);</span>
Group([ f1, f2 ])
<span class="GAPprompt">gap></span> <span class="GAPinput">apci:=InverseGeneralMapping(apc);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsGroupHomomorphism(apci);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">p:=SemidirectProduct(g,apci,n);</span>
<pc group of size 24 with 4 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsomorphismGroups(p,Group((1,2,3,4),(1,2))) <> fail;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">SemidirectProduct(SU(3,3),GF(9)^3);</span>
<matrix group of size 4408992 with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">SemidirectProduct(Group((1,2,3),(2,3,4)),GF(5)^4);</span>
<matrix group of size 7500 with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=Group((3,4,5),(1,2,3));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">mats:=[[[Z(2^2),0*Z(2)],[0*Z(2),Z(2^2)^2]],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [[Z(2)^0,Z(2)^0], [Z(2)^0,0*Z(2)]]];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">hom:=GroupHomomorphismByImages(g,Group(mats),[g.1,g.2],mats);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SemidirectProduct(g,hom,GF(4)^2);</span>
<matrix group of size 960 with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">SemidirectProduct(g,hom,GF(16)^2);</span>
<matrix group of size 15360 with 4 generators>
</pre></div>
<p>For a semidirect product <span class="SimpleMath">\(P\)</span> of <var class="Arg">G</var> with <var class="Arg">N</var>, calling <code class="func">Embedding</code> (<a href="chap32_mj.html#X86452F8587CBAEA0"><span class="RefLink">32.2-11</span></a>) with <span class="SimpleMath">\(P\)</span> and <code class="code">1</code> yields the embedding of <var class="Arg">G</var>, calling <codeclass="func">Embedding</code> (<a href="chap32_mj.html#X86452F8587CBAEA0"><span class="RefLink">32.2-11</span></a>) with <span class="SimpleMath">\(P\)</span> and <code class="code">2</code> yields the embedding of <var class="Arg">N</var>; calling <code class="func">Projection</code> (<a href="chap32_mj.html#X8769E8DA80BC96C1"><span class="RefLink">32.2-12</span></a>) with <var class="Arg">P</var> yields the projection of <span class="SimpleMath">\(P\)</span> onto <var class="Arg">G</var>, see <a href="chap49_mj.html#X798FDA1386A0EAC6"><span class="RefLink">49.6</span></a>.</p>
<p>The subdirect product of the groups <span class="SimpleMath">\(G\)</span> and <span class="SimpleMath">\(H\)</span> with respect to the epimorphisms <span class="SimpleMath">\(\varphi\colon G \rightarrow A\)</span> and <span class="SimpleMath">\(\psi\colon H \rightarrow A\)</span> (for a common group <span class="SimpleMath">\(A\)</span>) is the subgroup of the direct product <span class="SimpleMath">\(G \times H\)</span> consisting of the elements <span class="SimpleMath">\((g,h)\)</span> for which <span class="SimpleMath">\(g^{\varphi} = h^{\psi}\)</span>. It is the pull-back of the following diagram.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SubdirectProduct</code>( <var class="Arg">G</var>, <var class="Arg">H</var>, <var class="Arg">Ghom</var>, <var class="Arg">Hhom</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs the subdirect product of <var class="Arg">G</var> and <var class="Arg">H</var> with respect to the epimorphisms <var class="Arg">Ghom</var> from <var class="Arg">G</var> onto a group <span class="SimpleMath">\(A\)</span> and <var class="Arg">Hhom</var> from <var class="Arg">H</var> onto the same group <span class="SimpleMath">\(A\)</span>.</p>
<p>For a subdirect product <span class="SimpleMath">\(P\)</span>, calling <code class="func">Projection</code> (<a href="chap32_mj.html#X8769E8DA80BC96C1"><span class="RefLink">32.2-12</span></a>) with <span class="SimpleMath">\(P\)</span> and <span class="SimpleMath">\(n\)</span> yields the projection on the <span class="SimpleMath">\(n\)</span>-th factor. (In general the factors do not embed into a subdirect product.)</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SubdirectProducts</code>( <var class="Arg">G</var>, <var class="Arg">H</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>this function computes all subdirect products of <var class="Arg">G</var> and <var class="Arg">H</var> up to conjugacy in the direct product of Parent(<var class="Arg">G</var>) and Parent(<var class="Arg">H</var>). The subdirect products are returned as subgroups of this direct product.</p>
<p>The wreath product of a group <span class="SimpleMath">\(G\)</span> with a permutation group <span class="SimpleMath">\(P\)</span> acting on <span class="SimpleMath">\(n\)</span> points is the semidirect product of the normal subgroup <span class="SimpleMath">\(\textit{G}^n\)</span> with the group <span class="SimpleMath">\(P\)</span> which acts on <span class="SimpleMath">\(\textit{G}^n\)</span> by permuting the components.</p>
<p>Note that <strong class="pkg">GAP</strong> always considers the domain of a permutation group to be the points moved by elements of the group as returned by <code class="func">MovedPoints</code> (<a href="chap42_mj.html#X85E61B9C7A6B0CCA"><span class="RefLink">42.3-3</span></a>), i.e. it is not possible to have a domain to include fixed points, I.e. <span class="SimpleMath">\(P = \langle (1,2,3) \rangle\)</span> and <span class="SimpleMath">\(P = \langle (1,3,5) \rangle\)</span> result in isomorphic wreath products. (If fixed points are desired the wreath product <span class="SimpleMath">\(G \wr T\)</span> has to be formed with a transitive overgroup <span class="SimpleMath">\(T\)</span> of <span class="SimpleMath">\(P\)</span> and then the pre-image of <span class="SimpleMath">\(P\)</span> under the projection <span class="SimpleMath">\(G \wr T \rightarrow T\)</span> has to be taken.)</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ WreathProduct</code>( <var class="Arg">G</var>, <var class="Arg">H</var>[, <var class="Arg">hom</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">‣ StandardWreathProduct</code>( <var class="Arg">G</var>, <var class="Arg">H</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><code class="code">WreathProduct</code> constructs the wreath product of the group <var class="Arg">G</var> with the group <var class="Arg">H</var>, acting as a permutation group.</p>
<p>If a third argument <var class="Arg">hom</var> is given, it must be a homomorphism from <var class="Arg">H</var> into a permutation group, and the action of this group on its moved points is considered.</p>
<p>If only two arguments are given, <var class="Arg">H</var> must be a permutation group.</p>
<p><code class="code">StandardWreathProduct</code> returns the wreath product for the (right regular) permutation action of <var class="Arg">H</var> on its elements.</p>
<p>For a wreath product <span class="SimpleMath">\(W\)</span> of <var class="Arg">G</var> with a permutation group <span class="SimpleMath">\(P\)</span> of degree <span class="SimpleMath">\(n\)</span> and <span class="SimpleMath">\(1 \leq i \leq n\)</span> calling <code class="func">Embedding</code> (<a href="chap32_mj.html#X86452F8587CBAEA0"><span class="RefLink">32.2-11</span></a>) with <span class="SimpleMath">\(W\)</span> and <span class="SimpleMath">\(i\)</span> yields the embedding of <var class="Arg">G</var> in the <span class="SimpleMath">\(i\)</span>-th component of the direct product of the base group <span class="SimpleMath">\(\textit{G}^n\)</span> of <span class="SimpleMath">\(W\)</span>. For <span class="SimpleMath">\(i = n+1\)</span>, <code class="func">Embedding</code> (<a href="chap32_mj.html#X86452F8587CBAEA0"><span class="RefLink">32.2-11</span></a>) yields the embedding of <span class="SimpleMath">\(P\)</span> into <span class="SimpleMath">\(W\)</span>. Calling <code class="func">Projection</code> (<a href="chap32_mj.html#X8769E8DA80BC96C1"><span class="RefLink">32.2-12</span></a>) with <span class="SimpleMath">\(W\)</span> yields the projection onto the acting group <span class="SimpleMath">\(P\)</span>, see <a href="chap49_mj.html#X798FDA1386A0EAC6"><span class="RefLink">49.6</span></a>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ WreathProductImprimitiveAction</code>( <var class="Arg">G</var>, <var class="Arg">H</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>For two permutation groups <var class="Arg">G</var> and <var class="Arg">H</var>, this function constructs the wreath product of <var class="Arg">G</var> and <var class="Arg">H</var> in the imprimitive action. If <var class="Arg">G</var> acts on <span class="SimpleMath">\(l\)</span> points and <var class="Arg">H</var> on <span class="SimpleMath">\(m\)</span> points this action will be on <span class="SimpleMath">\(l \cdot m\)</span> points, it will be imprimitive with <span class="SimpleMath">\(m\)</span> blocks of size <span class="SimpleMath">\(l\)</span> each.</p>
<p>The operations <code class="func">Embedding</code> (<a href="chap32_mj.html#X86452F8587CBAEA0"><span class="RefLink">32.2-11</span></a>) and <code class="func">Projection</code> (<a href="chap32_mj.html#X8769E8DA80BC96C1"><span class="RefLink">32.2-12</span></a>) operate on this product as described for general wreath products.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ WreathProductProductAction</code>( <var class="Arg">G</var>, <var class="Arg">H</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>For two permutation groups <var class="Arg">G</var> and <var class="Arg">H</var>, this function constructs the wreath product in product action. If <var class="Arg">G</var> acts on <span class="SimpleMath">\(l\)</span> points and <var class="Arg">H</var> on <span class="SimpleMath">\(m\)</span> points this action will be on <span class="SimpleMath">\(l^m\)</span> points.</p>
<p>The operations <code class="func">Embedding</code> (<a href="chap32_mj.html#X86452F8587CBAEA0"><span class="RefLink">32.2-11</span></a>) and <code class="func">Projection</code> (<a href="chap32_mj.html#X8769E8DA80BC96C1"><span class="RefLink">32.2-12</span></a>) operate on this product as described for general wreath products.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">w:=WreathProductProductAction(g,p);</span>
<permutation group of size 648 with 7 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">LargestMovedPoint(w);</span>
27
</pre></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ KuKGenerators</code>( <var class="Arg">G</var>, <var class="Arg">beta</var>, <var class="Arg">alpha</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>If <var class="Arg">beta</var> is a homomorphism from <var class="Arg">G</var> into a transitive permutation group, <span class="SimpleMath">\(U\)</span> the full preimage of the point stabilizer and <var class="Arg">alpha</var> a homomorphism defined on (a superset) of <span class="SimpleMath">\(U\)</span>, this function returns images of the generators of <var class="Arg">G</var> when mapping to the wreath product <span class="SimpleMath">\((U \textit{alpha}) \wr (\textit{G} \textit{beta})\)</span>. (This is the Krasner-Kaloujnine embedding theorem.)</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ListWreathProductElement</code>( <var class="Arg">G</var>, <var class="Arg">x</var>[, <var class="Arg">testDecomposition</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">‣ ListWreathProductElementNC</code>( <var class="Arg">G</var>, <var class="Arg">x</var>, <var class="Arg">testDecomposition</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Let <var class="Arg">x</var> be an element of a wreath product <var class="Arg">G</var> where <span class="SimpleMath">\(G = K \wr H\)</span> and <span class="SimpleMath">\(H\)</span> acts as a finite permutation group of degree <span class="SimpleMath">\(m\)</span>. We can identify the element <var class="Arg">x</var> with a tuple <span class="SimpleMath">\((f_1, \ldots, f_m; h)\)</span>, where <span class="SimpleMath">\(f_i \in K\)</span> is the <span class="SimpleMath">\(i\)</span>-thbase component of <var class="Arg">x</var> and <span class="SimpleMath">\(h \in H\)</span> is the top component of <var class="Arg">x</var>.</p>
<p><code class="func">ListWreathProductElement</code> returns a list <span class="SimpleMath">\([f_1, \ldots, f_m, h]\)</span> containing the components of <var class="Arg">x</var> or <code class="keyw">fail</code> if <var class="Arg">x</var> cannot be decomposed in the wreath product.</p>
<p>If omitted, the argument <var class="Arg">testDecomposition</var> defaults to true. If <var class="Arg">testDecomposition</var> is true, <code class="func">ListWreathProductElement</code> makes additional tests to ensure that the computed decomposition of <var class="Arg">x</var> is correct, i.e. it checks that <var class="Arg">x</var> is an element of the parent wreath product of <varclass="Arg">G</var>:</p>
<p>If <span class="SimpleMath">\(K \leq \mathop{Sym}(l)\)</span>, this ensures that <span class="SimpleMath">\(x \in \mathop{Sym}(l) \wr \mathop{Sym}(m)\)</span> where the parent wreath product is considered in the same action as <var class="Arg">G</var>, i.e. either in imprimitive action or product action.</p>
<p>If <span class="SimpleMath">\(K \leq \mathop{GL}(n,q)\)</span>, this ensures that <span class="SimpleMath">\(x \in \mathop{GL}(n,q) \wr \mathop{Sym}(m)\)</span>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ WreathProductElementList</code>( <var class="Arg">G</var>, <var class="Arg">list</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">‣ WreathProductElementListNC</code>( <var class="Arg">G</var>, <var class="Arg">list</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Let <var class="Arg">list</var> be equal to <span class="SimpleMath">\([f_1, \ldots, f_m, h]\)</span> and <var class="Arg">G</var> be a wreath product where <span class="SimpleMath">\(G = K \wr H\)</span>, <span class="SimpleMath">\(H\)</span> acts as a finite permutation group of degree <span class="SimpleMath">\(m\)</span>, <span class="SimpleMath">\(f_i \in K\)</span> and <span class="SimpleMath">\(h \in H\)</span>.</p>
<p><code class="func">WreathProductElementList</code> returns the element <span class="SimpleMath">\(x \in G\)</span> identified by the tuple <span class="SimpleMath">\((f_1, \ldots, f_m; h)\)</span>.</p>
<p>Let <span class="SimpleMath">\(G\)</span> and <span class="SimpleMath">\(H\)</span> be groups with presentations <span class="SimpleMath">\(\langle X \mid R \rangle\)</span> and <span class="SimpleMath">\(\langle Y \mid S \rangle\)</span>, respectively. Then the free product <span class="SimpleMath">\(G*H\)</span> is the group with presentation <span class="SimpleMath">\(\langle X \cup Y \mid R \cup S \rangle\)</span>. This construction can be generalized to an arbitrary number of groups.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeProduct</code>( <var class="Arg">G</var>[, <var class="Arg">H</var>, <var class="Arg">...</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">‣ FreeProduct</code>( <var class="Arg">list</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs a finitely presented group which is the free product of the groups given as arguments. If the group arguments are not finitely presented groups, then <code class="func">IsomorphismFpGroup</code> (<a href="chap47_mj.html#X7F28268F850F454E"><span class="RefLink">47.11-1</span></a>) must be defined for them.</p>
<p>The operation <code class="func">Embedding</code> (<a href="chap32_mj.html#X86452F8587CBAEA0"><span class="RefLink">32.2-11</span></a>) operates on this product.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := DihedralGroup(8);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">h := CyclicGroup(5);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">fp := FreeProduct(g,h,h);</span>
<fp group on the generators [ f1, f2, f3, f4, f5 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">fp := FreeProduct([g,h,h]);</span>
<fp group on the generators [ f1, f2, f3, f4, f5 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">Embedding(fp,2);</span>
[ f1 ] -> [ f4 ]
</pre></div>
<h4>49.6 <span class="Heading">Embeddings and Projections for Group Products</span></h4>
<p>The relation between a group product and its factors is provided via homomorphisms, the embeddings in the product and the projections from the product. Depending on the kind of product only some of these are defined.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Embedding</code>( <var class="Arg">P</var>, <var class="Arg">nr</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>returns the <var class="Arg">nr</var>-th embedding in the group product <var class="Arg">P</var>. The actual meaning of this embedding is described in the manual section for the appropriate product.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Projection</code>( <var class="Arg">P</var>, <var class="Arg">nr</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>returns the (<var class="Arg">nr</var>-th) projection of the group product <var class="Arg">P</var>. The actual meaning of the projection returned is described in the manual section for the appropriate product.</p>
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.