This file is indexed.

/usr/share/gap/doc/ref/chap49.html is in gap-doc 4r7p9-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
<?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 (ref) - Chapter 49: Group Products</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" />
<script src="manual.js" type="text/javascript"></script>
<script type="text/javascript">overwriteStyle();</script>
</head>
<body class="chap49"  onload="jscontent()">


<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="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chap11.html">11</a>  <a href="chap12.html">12</a>  <a href="chap13.html">13</a>  <a href="chap14.html">14</a>  <a href="chap15.html">15</a>  <a href="chap16.html">16</a>  <a href="chap17.html">17</a>  <a href="chap18.html">18</a>  <a href="chap19.html">19</a>  <a href="chap20.html">20</a>  <a href="chap21.html">21</a>  <a href="chap22.html">22</a>  <a href="chap23.html">23</a>  <a href="chap24.html">24</a>  <a href="chap25.html">25</a>  <a href="chap26.html">26</a>  <a href="chap27.html">27</a>  <a href="chap28.html">28</a>  <a href="chap29.html">29</a>  <a href="chap30.html">30</a>  <a href="chap31.html">31</a>  <a href="chap32.html">32</a>  <a href="chap33.html">33</a>  <a href="chap34.html">34</a>  <a href="chap35.html">35</a>  <a href="chap36.html">36</a>  <a href="chap37.html">37</a>  <a href="chap38.html">38</a>  <a href="chap39.html">39</a>  <a href="chap40.html">40</a>  <a href="chap41.html">41</a>  <a href="chap42.html">42</a>  <a href="chap43.html">43</a>  <a href="chap44.html">44</a>  <a href="chap45.html">45</a>  <a href="chap46.html">46</a>  <a href="chap47.html">47</a>  <a href="chap48.html">48</a>  <a href="chap49.html">49</a>  <a href="chap50.html">50</a>  <a href="chap51.html">51</a>  <a href="chap52.html">52</a>  <a href="chap53.html">53</a>  <a href="chap54.html">54</a>  <a href="chap55.html">55</a>  <a href="chap56.html">56</a>  <a href="chap57.html">57</a>  <a href="chap58.html">58</a>  <a href="chap59.html">59</a>  <a href="chap60.html">60</a>  <a href="chap61.html">61</a>  <a href="chap62.html">62</a>  <a href="chap63.html">63</a>  <a href="chap64.html">64</a>  <a href="chap65.html">65</a>  <a href="chap66.html">66</a>  <a href="chap67.html">67</a>  <a href="chap68.html">68</a>  <a href="chap69.html">69</a>  <a href="chap70.html">70</a>  <a href="chap71.html">71</a>  <a href="chap72.html">72</a>  <a href="chap73.html">73</a>  <a href="chap74.html">74</a>  <a href="chap75.html">75</a>  <a href="chap76.html">76</a>  <a href="chap77.html">77</a>  <a href="chap78.html">78</a>  <a href="chap79.html">79</a>  <a href="chap80.html">80</a>  <a href="chap81.html">81</a>  <a href="chap82.html">82</a>  <a href="chap83.html">83</a>  <a href="chap84.html">84</a>  <a href="chap85.html">85</a>  <a href="chap86.html">86</a>  <a href="chap87.html">87</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;  <a href="chap0.html#contents">[Contents]</a>&nbsp;  &nbsp;<a href="chap48.html">[Previous Chapter]</a>&nbsp;  &nbsp;<a href="chap50.html">[Next Chapter]</a>&nbsp;  </div>

<p id="mathjaxlink" class="pcenter"><a href="chap49_mj.html">[MathJax on]</a></p>
<p><a id="X7D5C75647DB168F1" name="X7D5C75647DB168F1"></a></p>
<div class="ChapSects"><a href="chap49.html#X7D5C75647DB168F1">49 <span class="Heading">Group Products</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap49.html#X7D39232A84CD8DBD">49.1 <span class="Heading">Direct Products</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap49.html#X861BA02C7902A4F4">49.1-1 DirectProduct</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap49.html#X87FE512E7DB7346C">49.2 <span class="Heading">Semidirect Products</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap49.html#X7D905A5778D7ACDE">49.2-1 <span class="Heading">SemidirectProduct</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap49.html#X815AFC537B215D7B">49.3 <span class="Heading">Subdirect Products</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap49.html#X82112D768085AD98">49.3-1 SubdirectProduct</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap49.html#X814204E97812894C">49.3-2 SubdirectProducts</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap49.html#X7DF2AEBC8518FFA4">49.4 <span class="Heading">Wreath Products</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap49.html#X8786EFBC78D7D6ED">49.4-1 WreathProduct</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap49.html#X8589DCFA7C2E5FAA">49.4-2 WreathProductImprimitiveAction</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap49.html#X82B8DD1C868A3726">49.4-3 WreathProductProductAction</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap49.html#X80634C3180E0C593">49.4-4 KuKGenerators</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap49.html#X7AC1AD17833117DF">49.5 <span class="Heading">Free Products</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap49.html#X837AC5A081EECF50">49.5-1 <span class="Heading">FreeProduct</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap49.html#X798FDA1386A0EAC6">49.6 <span class="Heading">Embeddings and Projections for Group Products</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap49.html#X784149B8847B20FF">49.6-1 Embedding</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap49.html#X86F275AC7C625626">49.6-2 Projection</a></span>
</div></div>
</div>

<h3>49 <span class="Heading">Group Products</span></h3>

<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.html#X8589DCFA7C2E5FAA"><span class="RefLink">49.4-2</span></a>) and <code class="func">WreathProductProductAction</code> (<a href="chap49.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.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.html#X798FDA1386A0EAC6"><span class="RefLink">49.6</span></a>.</p>

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

<h4>49.1 <span class="Heading">Direct Products</span></h4>

<p>The direct product of groups is the cartesian product of the groups (considered as element sets) with component-wise multiplication.</p>

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

<h5>49.1-1 DirectProduct</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; 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">&#8227; 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.html#X86452F8587CBAEA0"><span class="RefLink">32.2-10</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.html#X8769E8DA80BC96C1"><span class="RefLink">32.2-11</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.html#X798FDA1386A0EAC6"><span class="RefLink">49.6</span></a>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">g:=Group((1,2,3),(1,2));;</span>
<span class="GAPprompt">gap&gt;</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&gt;</span> <span class="GAPinput">Size(d);</span>
216
<span class="GAPprompt">gap&gt;</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&gt;</span> <span class="GAPinput">Image(e,(1,2));</span>
(4,5)
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Image(Projection(d,2),(1,2,3)(4,5)(8,9));</span>
(1,2)
</pre></div>

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

<h4>49.2 <span class="Heading">Semidirect Products</span></h4>

<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">α</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 × N</span> with the multiplication <span class="SimpleMath">(g, n) ⋅ (h, m) = (gh, n^{h^α}m)</span>.</p>

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

<h5>49.2-1 <span class="Heading">SemidirectProduct</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; 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">&#8227; 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 <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 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.html#X87677B0787B4461A"><span class="RefLink">40.7-1</span></a>)) you have to test <code class="func">IsGroupOfAutomorphisms</code> (<a href="chap40.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&gt;</span> <span class="GAPinput">n:=AbelianGroup(IsPcGroup,[5,5]);</span>
&lt;pc group of size 25 with 2 generators&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">au:=DerivedSubgroup(AutomorphismGroup(n));;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Size(au);</span>
120
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">p:=SemidirectProduct(au,n);</span>
&lt;permutation group with 5 generators&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Size(p);</span>
3000
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">n:=Group((1,2),(3,4));;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">au:=AutomorphismGroup(n);;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">au:=First(Elements(au),i-&gt;Order(i)=3);;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">au:=Group(au);</span>
&lt;group with 1 generators&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsGroupOfAutomorphisms(au);</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">SemidirectProduct(au,n);</span>
&lt;pc group with 3 generators&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">n:=AbelianGroup(IsPcGroup,[2,2]);</span>
&lt;pc group of size 4 with 2 generators&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">au:=AutomorphismGroup(n);</span>
&lt;group of size 6 with 2 generators&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">apc:=IsomorphismPcGroup(au);</span>
CompositionMapping( Pcgs([ (2,3), (1,2,3) ]) -&gt; 
[ f1, f2 ], &lt;action isomorphism&gt; )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">g:=Image(apc);</span>
Group([ f1, f2 ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">apci:=InverseGeneralMapping(apc);</span>
[ f1*f2^2, f1*f2 ] -&gt; [ Pcgs([ f1, f2 ]) -&gt; [ f1*f2, f2 ], 
  Pcgs([ f1, f2 ]) -&gt; [ f2, f1 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsGroupHomomorphism(apci);</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">p:=SemidirectProduct(g,apci,n);</span>
&lt;pc group of size 24 with 4 generators&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsomorphismGroups(p,Group((1,2,3,4),(1,2)));</span>
[ f1, f2, f3, f4 ] -&gt; [ (3,4), (1,4,3), (1,2)(3,4), (1,3)(2,4) ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">SemidirectProduct(SU(3,3),GF(9)^3);</span>
&lt;matrix group of size 4408992 with 3 generators&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">SemidirectProduct(Group((1,2,3),(2,3,4)),GF(5)^4);</span>
&lt;matrix group of size 7500 with 3 generators&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">g:=Group((3,4,5),(1,2,3));;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">mats:=[[[Z(2^2),0*Z(2)],[0*Z(2),Z(2^2)^2]],</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">         [[Z(2)^0,Z(2)^0], [Z(2)^0,0*Z(2)]]];;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">hom:=GroupHomomorphismByImages(g,Group(mats),[g.1,g.2],mats);;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">SemidirectProduct(g,hom,GF(4)^2);</span>
&lt;matrix group of size 960 with 3 generators&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">SemidirectProduct(g,hom,GF(16)^2);</span>
&lt;matrix group of size 15360 with 4 generators&gt;
</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.html#X86452F8587CBAEA0"><span class="RefLink">32.2-10</span></a>) with <span class="SimpleMath">P</span> and <code class="code">1</code> yields the embedding of <var class="Arg">G</var>, calling <code class="func">Embedding</code> (<a href="chap32.html#X86452F8587CBAEA0"><span class="RefLink">32.2-10</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.html#X8769E8DA80BC96C1"><span class="RefLink">32.2-11</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.html#X798FDA1386A0EAC6"><span class="RefLink">49.6</span></a>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Size(Image(Embedding(p,1)));</span>
6
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Embedding(p,2);</span>
[ f1, f2 ] -&gt; [ f3, f4 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Projection(p);</span>
[ f1, f2, f3, f4 ] -&gt; [ f1, f2, &lt;identity&gt; of ..., &lt;identity&gt; of ... ]
</pre></div>

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

<h4>49.3 <span class="Heading">Subdirect Products</span></h4>

<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">φ: G → A</span> and <span class="SimpleMath">ψ: H → A</span> (for a common group <span class="SimpleMath">A</span>) is the subgroup of the direct product <span class="SimpleMath">G × H</span> consisting of the elements <span class="SimpleMath">(g,h)</span> for which <span class="SimpleMath">g^φ = h^ψ</span>. It is the pull-back of the following diagram.</p>


<pre class="normal">

                   G
                   | phi
             psi   V
          H  --->  A

</pre>

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

<h5>49.3-1 SubdirectProduct</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; 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">( operation )</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.html#X8769E8DA80BC96C1"><span class="RefLink">32.2-11</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="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">g:=Group((1,2,3),(1,2));</span>
Group([ (1,2,3), (1,2) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">hom:=GroupHomomorphismByImagesNC(g,g,[(1,2,3),(1,2)],[(),(1,2)]);</span>
[ (1,2,3), (1,2) ] -&gt; [ (), (1,2) ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">s:=SubdirectProduct(g,g,hom,hom);</span>
Group([ (1,2,3), (1,2)(4,5), (4,5,6) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Size(s);</span>
18
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">p:=Projection(s,2);</span>
2nd projection of Group([ (1,2,3), (1,2)(4,5), (4,5,6) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Image(p,(1,3,2)(4,5,6));</span>
(1,2,3)
</pre></div>

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

<h5>49.3-2 SubdirectProducts</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; 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><a id="X7DF2AEBC8518FFA4" name="X7DF2AEBC8518FFA4"></a></p>

<h4>49.4 <span class="Heading">Wreath Products</span></h4>

<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"><var class="Arg">G</var>^n</span> with the group <span class="SimpleMath">P</span> which acts on <span class="SimpleMath"><var class="Arg">G</var>^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.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 = ⟨ (1,2,3) ⟩</span> and <span class="SimpleMath">P = ⟨ (1,3,5) ⟩</span> result in isomorphic wreath products. (If fixed points are desired the wreath product <span class="SimpleMath">G ≀ 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 ≀ T → T</span> has to be taken.)</p>

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

<h5>49.4-1 WreathProduct</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; 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">&#8227; 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 ≤ i ≤ n</span> calling <code class="func">Embedding</code> (<a href="chap32.html#X86452F8587CBAEA0"><span class="RefLink">32.2-10</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"><var class="Arg">G</var>^n</span> of <span class="SimpleMath">W</span>. For <span class="SimpleMath">i = n+1</span>, <code class="func">Embedding</code> (<a href="chap32.html#X86452F8587CBAEA0"><span class="RefLink">32.2-10</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.html#X8769E8DA80BC96C1"><span class="RefLink">32.2-11</span></a>) with <span class="SimpleMath">W</span> yields the projection onto the acting group <span class="SimpleMath">P</span>, see <a href="chap49.html#X798FDA1386A0EAC6"><span class="RefLink">49.6</span></a>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">g:=Group((1,2,3),(1,2));</span>
Group([ (1,2,3), (1,2) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">p:=Group((1,2,3));</span>
Group([ (1,2,3) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">w:=WreathProduct(g,p);</span>
Group([ (1,2,3), (1,2), (4,5,6), (4,5), (7,8,9), (7,8), 
  (1,4,7)(2,5,8)(3,6,9) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Size(w);</span>
648
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Embedding(w,1);</span>
1st embedding into Group( [ (1,2,3), (1,2), (4,5,6), (4,5), (7,8,9), 
  (7,8), (1,4,7)(2,5,8)(3,6,9) ] )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Image(Embedding(w,3));</span>
Group([ (7,8,9), (7,8) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Image(Embedding(w,4));</span>
Group([ (1,4,7)(2,5,8)(3,6,9) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Image(Projection(w),(1,4,8,2,6,7,3,5,9));</span>
(1,2,3)
</pre></div>

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

<h5>49.4-2 WreathProductImprimitiveAction</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; 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 ⋅ 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.html#X86452F8587CBAEA0"><span class="RefLink">32.2-10</span></a>) and <code class="func">Projection</code> (<a href="chap32.html#X8769E8DA80BC96C1"><span class="RefLink">32.2-11</span></a>) operate on this product as described for general wreath products.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">w:=WreathProductImprimitiveAction(g,p);;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LargestMovedPoint(w);</span>
9
</pre></div>

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

<h5>49.4-3 WreathProductProductAction</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; 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.html#X86452F8587CBAEA0"><span class="RefLink">32.2-10</span></a>) and <code class="func">Projection</code> (<a href="chap32.html#X8769E8DA80BC96C1"><span class="RefLink">32.2-11</span></a>) operate on this product as described for general wreath products.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">w:=WreathProductProductAction(g,p);</span>
&lt;permutation group of size 648 with 7 generators&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LargestMovedPoint(w);</span>
27
</pre></div>

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

<h5>49.4-4 KuKGenerators</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; 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 <var class="Arg">alpha</var>) ≀ (<var class="Arg">G</var> <var class="Arg">beta</var>)</span>. (This is the Krasner-Kaloujnine embedding theorem.)</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">g:=Group((1,2,3,4),(1,2));;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">hom:=GroupHomomorphismByImages(g,Group((1,2)),</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">GeneratorsOfGroup(g),[(1,2),(1,2)]);;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">u:=PreImage(hom,Stabilizer(Image(hom),1));</span>
Group([ (2,3,4), (1,2,4) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">hom2:=GroupHomomorphismByImages(u,Group((1,2,3)),</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">GeneratorsOfGroup(u),[ (1,2,3), (1,2,3) ]);;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">KuKGenerators(g,hom,hom2);</span>
[ (1,4)(2,5)(3,6), (1,6)(2,4)(3,5) ]
</pre></div>

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

<h4>49.5 <span class="Heading">Free Products</span></h4>

<p>Let <span class="SimpleMath">G</span> and <span class="SimpleMath">H</span> be groups with presentations <span class="SimpleMath">⟨ X ∣ R ⟩</span> and <span class="SimpleMath">⟨ Y ∣ S ⟩</span>, respectively. Then the free product <span class="SimpleMath">G*H</span> is the group with presentation <span class="SimpleMath">⟨ X ∪ Y ∣ R ∪ S ⟩</span>. This construction can be generalized to an arbitrary number of groups.</p>

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

<h5>49.5-1 <span class="Heading">FreeProduct</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; 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">&#8227; 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.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.html#X86452F8587CBAEA0"><span class="RefLink">32.2-10</span></a>) operates on this product.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">g := DihedralGroup(8);;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">h := CyclicGroup(5);;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">fp := FreeProduct(g,h,h);</span>
&lt;fp group on the generators [ f1, f2, f3, f4, f5 ]&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">fp := FreeProduct([g,h,h]);</span>
&lt;fp group on the generators [ f1, f2, f3, f4, f5 ]&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Embedding(fp,2);</span>
[ f1 ] -&gt; [ f4 ]
</pre></div>

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

<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>

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

<h5>49.6-1 Embedding</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Embedding</code>( <var class="Arg">P</var>, <var class="Arg">nr</var> )</td><td class="tdright">( function )</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>

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

<h5>49.6-2 Projection</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Projection</code>( <var class="Arg">P</var>, <var class="Arg">nr</var> )</td><td class="tdright">( function )</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>


<div class="chlinkprevnextbot">&nbsp;<a href="chap0.html">[Top of Book]</a>&nbsp;  <a href="chap0.html#contents">[Contents]</a>&nbsp;  &nbsp;<a href="chap48.html">[Previous Chapter]</a>&nbsp;  &nbsp;<a href="chap50.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="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chap11.html">11</a>  <a href="chap12.html">12</a>  <a href="chap13.html">13</a>  <a href="chap14.html">14</a>  <a href="chap15.html">15</a>  <a href="chap16.html">16</a>  <a href="chap17.html">17</a>  <a href="chap18.html">18</a>  <a href="chap19.html">19</a>  <a href="chap20.html">20</a>  <a href="chap21.html">21</a>  <a href="chap22.html">22</a>  <a href="chap23.html">23</a>  <a href="chap24.html">24</a>  <a href="chap25.html">25</a>  <a href="chap26.html">26</a>  <a href="chap27.html">27</a>  <a href="chap28.html">28</a>  <a href="chap29.html">29</a>  <a href="chap30.html">30</a>  <a href="chap31.html">31</a>  <a href="chap32.html">32</a>  <a href="chap33.html">33</a>  <a href="chap34.html">34</a>  <a href="chap35.html">35</a>  <a href="chap36.html">36</a>  <a href="chap37.html">37</a>  <a href="chap38.html">38</a>  <a href="chap39.html">39</a>  <a href="chap40.html">40</a>  <a href="chap41.html">41</a>  <a href="chap42.html">42</a>  <a href="chap43.html">43</a>  <a href="chap44.html">44</a>  <a href="chap45.html">45</a>  <a href="chap46.html">46</a>  <a href="chap47.html">47</a>  <a href="chap48.html">48</a>  <a href="chap49.html">49</a>  <a href="chap50.html">50</a>  <a href="chap51.html">51</a>  <a href="chap52.html">52</a>  <a href="chap53.html">53</a>  <a href="chap54.html">54</a>  <a href="chap55.html">55</a>  <a href="chap56.html">56</a>  <a href="chap57.html">57</a>  <a href="chap58.html">58</a>  <a href="chap59.html">59</a>  <a href="chap60.html">60</a>  <a href="chap61.html">61</a>  <a href="chap62.html">62</a>  <a href="chap63.html">63</a>  <a href="chap64.html">64</a>  <a href="chap65.html">65</a>  <a href="chap66.html">66</a>  <a href="chap67.html">67</a>  <a href="chap68.html">68</a>  <a href="chap69.html">69</a>  <a href="chap70.html">70</a>  <a href="chap71.html">71</a>  <a href="chap72.html">72</a>  <a href="chap73.html">73</a>  <a href="chap74.html">74</a>  <a href="chap75.html">75</a>  <a href="chap76.html">76</a>  <a href="chap77.html">77</a>  <a href="chap78.html">78</a>  <a href="chap79.html">79</a>  <a href="chap80.html">80</a>  <a href="chap81.html">81</a>  <a href="chap82.html">82</a>  <a href="chap83.html">83</a>  <a href="chap84.html">84</a>  <a href="chap85.html">85</a>  <a href="chap86.html">86</a>  <a href="chap87.html">87</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>