This file is indexed.

/usr/share/gap/doc/ref/chap75.html is in gap-doc 4r6p5-3.

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
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
<?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 75: Monomiality Questions</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="chap75"  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="chap74.html">[Previous Chapter]</a>&nbsp;  &nbsp;<a href="chap76.html">[Next Chapter]</a>&nbsp;  </div>

<p id="mathjaxlink" class="pcenter"><a href="chap75_mj.html">[MathJax on]</a></p>
<p><a id="X80D9CA647E680B19" name="X80D9CA647E680B19"></a></p>
<div class="ChapSects"><a href="chap75.html#X80D9CA647E680B19">75 <span class="Heading">Monomiality Questions</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap75.html#X7F2F753F7B354F09">75.1 <span class="Heading">InfoMonomial (Info Class)</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X8103DD607C7F2CD2">75.1-1 InfoMonomial</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap75.html#X842D10BC7CA9C2DE">75.2 <span class="Heading">Character Degrees and Derived Length</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X86A900897819E5AC">75.2-1 Alpha</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X82C33CF282FC5A73">75.2-2 Delta</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X7D0D26267A9D37DD">75.2-3 <span class="Heading">IsBergerCondition</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap75.html#X82C21037806B52CE">75.3 <span class="Heading">Primitivity of Characters</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X81FD26947924C500">75.3-1 TestHomogeneous</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X7BC72ECE822D4245">75.3-2 IsPrimitiveCharacter</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X82BFA6968415F308">75.3-3 TestQuasiPrimitive</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X84860E3A7FECDBA3">75.3-4 TestInducedFromNormalSubgroup</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap75.html#X86567D7F781BBCAE">75.4 <span class="Heading">Testing Monomiality</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X84EB92B57DAF5C93">75.4-1 <span class="Heading">TestMonomial</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X787CCCBB7FC17F5E">75.4-2 TestMonomialUseLattice</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X8261B5AA7BCFFCC2">75.4-3 IsMonomialNumber</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X822E03EF7B8F92D3">75.4-4 <span class="Heading">TestMonomialQuick</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X7E56A0EA868CC34A">75.4-5 <span class="Heading">TestSubnormallyMonomial</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X83EF7B8D7C1C2CA3">75.4-6 <span class="Heading">TestRelativelySM</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap75.html#X7B5735897DE29BCB">75.5 <span class="Heading">Minimal Nonmonomial Groups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X7D7E2667821A23CD">75.5-1 IsMinimalNonmonomial</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap75.html#X7B416BBD80072079">75.5-2 MinimalNonmonomialGroup</a></span>
</div></div>
</div>

<h3>75 <span class="Heading">Monomiality Questions</span></h3>

<p>This chapter describes functions dealing with the monomiality of finite (solvable) groups and their characters.</p>

<p>All these functions assume <em>characters</em> to be class function objects as described in Chapter <a href="chap72.html#X7C91D0D17850E564"><span class="RefLink">72</span></a>, lists of character <em>values</em> are not allowed.</p>

<p>The usual <em>property tests</em> of <strong class="pkg">GAP</strong> that return either <code class="keyw">true</code> or <code class="keyw">false</code> are not sufficient for us. When we ask whether a group character <span class="SimpleMath">χ</span> has a certain property, such as quasiprimitivity, we usually want more information than just yes or no. Often we are interested in the reason <em>why</em> a group character <span class="SimpleMath">χ</span> was proved to have a certain property, e.g., whether monomiality of <span class="SimpleMath">χ</span> was proved by the observation that the underlying group is nilpotent, or whether it was necessary to construct a linear character of a subgroup from which <span class="SimpleMath">χ</span> can be induced. In the latter case we also may be interested in this linear character. Therefore we need test functions that return a record containing such useful information. For example, the record returned by the function <code class="func">TestQuasiPrimitive</code> (<a href="chap75.html#X82BFA6968415F308"><span class="RefLink">75.3-3</span></a>) contains the component <code class="code">isQuasiPrimitive</code> (which is the known boolean property flag), and additionally the component <code class="code">comment</code>, a string telling the reason for the value of the <code class="code">isQuasiPrimitive</code> component, and in the case that the argument <span class="SimpleMath">χ</span> was <em>not</em> quasiprimitive also the component <code class="code">character</code>, which is an irreducible constituent of a nonhomogeneous restriction of <span class="SimpleMath">χ</span> to a normal subgroup. Besides these test functions there are also the known properties, e.g., the property <code class="func">IsQuasiPrimitive</code> (<a href="chap75.html#X82BFA6968415F308"><span class="RefLink">75.3-3</span></a>) which will call the attribute <code class="func">TestQuasiPrimitive</code> (<a href="chap75.html#X82BFA6968415F308"><span class="RefLink">75.3-3</span></a>), and return the value of the <code class="code">isQuasiPrimitive</code> component of the result.</p>

<p>A few words about how to use the monomiality functions seem to be necessary. Monomiality questions usually involve computations in many subgroups and factor groups of a given group, and for these groups often expensive calculations such as that of the character table are necessary. So one should be careful not to construct the same group over and over again, instead the same group object should be reused, such that its character table need to be computed only once. For example, suppose you want to restrict a character to a normal subgroup <span class="SimpleMath">N</span> that was constructed as a normal closure of some group elements, and suppose that you have already computed with normal subgroups (by calls to <code class="func">NormalSubgroups</code> (<a href="chap39.html#X80237A847E24E6CF"><span class="RefLink">39.19-8</span></a>) or <code class="func">MaximalNormalSubgroups</code> (<a href="chap39.html#X82ECAA427C987318"><span class="RefLink">39.19-9</span></a>)) and their character tables. Then you should look in the lists of known normal subgroups whether <span class="SimpleMath">N</span> is contained, and if so you can use the known character table. A mechanism that supports this for normal subgroups is described in <a href="chap71.html#X81272CEE79F13E7B"><span class="RefLink">71.23</span></a>.</p>

<p>Also the following hint may be useful in this context. If you know that sooner or later you will compute the character table of a group <span class="SimpleMath">G</span> then it may be advisable to compute it as soon as possible. For example, if you need the normal subgroups of <span class="SimpleMath">G</span> then they can be computed more efficiently if the character table of <span class="SimpleMath">G</span> is known, and they can be stored compatibly to the contained <span class="SimpleMath">G</span>-conjugacy classes. This correspondence of classes list and normal subgroup can be used very often.</p>

<p>Several <em>examples</em> in this chapter use the symmetric group <span class="SimpleMath">S_4</span> and the special linear group <span class="SimpleMath">SL(2,3)</span>. For running the examples, you must first define the groups, for example as follows.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">S4:= SymmetricGroup( 4 );;  SetName( S4, "S4" );</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Sl23:= SL( 2, 3 );;</span>
</pre></div>

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

<h4>75.1 <span class="Heading">InfoMonomial (Info Class)</span></h4>

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

<h5>75.1-1 InfoMonomial</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; InfoMonomial</code></td><td class="tdright">( info class )</td></tr></table></div>
<p>Most of the functions described in this chapter print some (hopefully useful) <em>information</em> if the info level of the info class <code class="func">InfoMonomial</code> is at least <span class="SimpleMath">1</span>, see <a href="chap7.html#X7A9C902479CB6F7C"><span class="RefLink">7.4</span></a> for details.</p>

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

<h4>75.2 <span class="Heading">Character Degrees and Derived Length</span></h4>

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

<h5>75.2-1 Alpha</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Alpha</code>( <var class="Arg">G</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>For a group <var class="Arg">G</var>, <code class="func">Alpha</code> returns a list whose <span class="SimpleMath">i</span>-th entry is the maximal derived length of groups <span class="SimpleMath"><var class="Arg">G</var> / ker(χ)</span> for <span class="SimpleMath">χ ∈ Irr(<var class="Arg">G</var>)</span> with <span class="SimpleMath">χ(1)</span> at most the <span class="SimpleMath">i</span>-th irreducible degree of <var class="Arg">G</var>.</p>

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

<h5>75.2-2 Delta</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Delta</code>( <var class="Arg">G</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>For a group <var class="Arg">G</var>, <code class="func">Delta</code> returns the list <span class="SimpleMath">[ 1, alp[2] - alp[1], ..., alp[<var class="Arg">n</var>] - alp[<var class="Arg">n</var>-1] ]</span>, where <span class="SimpleMath">alp =</span><code class="code">Alpha( <var class="Arg">G</var> )</code> (see <code class="func">Alpha</code> (<a href="chap75.html#X86A900897819E5AC"><span class="RefLink">75.2-1</span></a>)).</p>

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

<h5>75.2-3 <span class="Heading">IsBergerCondition</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsBergerCondition</code>( <var class="Arg">G</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">&#8227; IsBergerCondition</code>( <var class="Arg">chi</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Called with an irreducible character <var class="Arg">chi</var> of a group <span class="SimpleMath">G</span>, <code class="func">IsBergerCondition</code> returns <code class="keyw">true</code> if <var class="Arg">chi</var> satisfies <span class="SimpleMath">M' ≤ ker(χ)</span> for every normal subgroup <span class="SimpleMath">M</span> of <span class="SimpleMath">G</span> with the property that <span class="SimpleMath">M ≤ ker(ψ)</span> holds for all <span class="SimpleMath">ψ ∈ Irr(G)</span> with <span class="SimpleMath">ψ(1) &lt; χ(1)</span>, and <code class="keyw">false</code> otherwise.</p>

<p>Called with a group <var class="Arg">G</var>, <code class="func">IsBergerCondition</code> returns <code class="keyw">true</code> if all irreducible characters of <var class="Arg">G</var> satisfy the inequality above, and <code class="keyw">false</code> otherwise.</p>

<p>For groups of odd order the result is always <code class="keyw">true</code> by a theorem of T. R. Berger (see <a href="chapBib.html#biBBer76">[Ber76, Thm. 2.2]</a>).</p>

<p>In the case that <code class="keyw">false</code> is returned, <code class="func">InfoMonomial</code> (<a href="chap75.html#X8103DD607C7F2CD2"><span class="RefLink">75.1-1</span></a>) tells about a degree for which the inequality is violated.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Alpha( Sl23 );</span>
[ 1, 3, 3 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Alpha( S4 );</span>
[ 1, 2, 3 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Delta( Sl23 );</span>
[ 1, 2, 0 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Delta( S4 );</span>
[ 1, 1, 1 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsBergerCondition( S4 );</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsBergerCondition( Sl23 );</span>
false
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">List( Irr( Sl23 ), IsBergerCondition );</span>
[ true, true, true, false, false, false, true ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">List( Irr( Sl23 ), Degree );</span>
[ 1, 1, 1, 2, 2, 2, 3 ]
</pre></div>

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

<h4>75.3 <span class="Heading">Primitivity of Characters</span></h4>

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

<h5>75.3-1 TestHomogeneous</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; TestHomogeneous</code>( <var class="Arg">chi</var>, <var class="Arg">N</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>For a group character <var class="Arg">chi</var> of the group <span class="SimpleMath">G</span>, say, and a normal subgroup <var class="Arg">N</var> of <span class="SimpleMath">G</span>, <code class="func">TestHomogeneous</code> returns a record with information whether the restriction of <var class="Arg">chi</var> to <var class="Arg">N</var> is homogeneous, i.e., is a multiple of an irreducible character.</p>

<p><var class="Arg">N</var> may be given also as list of conjugacy class positions w.r.t. the character table of <span class="SimpleMath">G</span>.</p>

<p>The components of the result are</p>


<dl>
<dt><strong class="Mark"><code class="code">isHomogeneous</code></strong></dt>
<dd><p><code class="keyw">true</code> or <code class="keyw">false</code>,</p>

</dd>
<dt><strong class="Mark"><code class="code">comment</code></strong></dt>
<dd><p>a string telling a reason for the value of the <code class="code">isHomogeneous</code> component,</p>

</dd>
<dt><strong class="Mark"><code class="code">character</code></strong></dt>
<dd><p>irreducible constituent of the restriction, only bound if the restriction had to be checked,</p>

</dd>
<dt><strong class="Mark"><code class="code">multiplicity</code></strong></dt>
<dd><p>multiplicity of the <code class="code">character</code> component in the restriction of <var class="Arg">chi</var>.</p>

</dd>
</dl>

<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">n:= DerivedSubgroup( Sl23 );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">chi:= Irr( Sl23 )[7];</span>
Character( CharacterTable( SL(2,3) ), [ 3, 0, 0, 3, 0, 0, -1 ] )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestHomogeneous( chi, n );</span>
rec( character := Character( CharacterTable( Group(
    [ [ [ 0*Z(3), Z(3) ], [ Z(3)^0, 0*Z(3) ] ], 
      [ [ Z(3), 0*Z(3) ], [ 0*Z(3), Z(3) ] ], 
      [ [ Z(3)^0, Z(3) ], [ Z(3), Z(3) ] ] ]) ), [ 1, -1, 1, -1, 1 ] )
    , comment := "restriction checked", isHomogeneous := false, 
  multiplicity := 1 )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">chi:= Irr( Sl23 )[4];</span>
Character( CharacterTable( SL(2,3) ), [ 2, 1, 1, -2, -1, -1, 0 ] )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">cln:= ClassPositionsOfNormalSubgroup( CharacterTable( Sl23 ), n );</span>
[ 1, 4, 7 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestHomogeneous( chi, cln );</span>
rec( comment := "restricts irreducibly", isHomogeneous := true )
</pre></div>

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

<h5>75.3-2 IsPrimitiveCharacter</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsPrimitiveCharacter</code>( <var class="Arg">chi</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>For a character <var class="Arg">chi</var> of the group <span class="SimpleMath">G</span>, say, <code class="func">IsPrimitiveCharacter</code> returns <code class="keyw">true</code> if <var class="Arg">chi</var> is not induced from any proper subgroup, and <code class="keyw">false</code> otherwise.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsPrimitive( Irr( Sl23 )[4] );</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsPrimitive( Irr( Sl23 )[7] );</span>
false
</pre></div>

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

<h5>75.3-3 TestQuasiPrimitive</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; TestQuasiPrimitive</code>( <var class="Arg">chi</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">&#8227; IsQuasiPrimitive</code>( <var class="Arg">chi</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p><code class="func">TestQuasiPrimitive</code> returns a record with information about quasiprimitivity of the group character <var class="Arg">chi</var>, i.e., whether <var class="Arg">chi</var> restricts homogeneously to every normal subgroup of its group. The result record contains at least the components <code class="code">isQuasiPrimitive</code> (with value either <code class="keyw">true</code> or <code class="keyw">false</code>) and <code class="code">comment</code> (a string telling a reason for the value of the component <code class="code">isQuasiPrimitive</code>). If <var class="Arg">chi</var> is not quasiprimitive then there is additionally a component <code class="code">character</code>, with value an irreducible constituent of a nonhomogeneous restriction of <var class="Arg">chi</var>.</p>

<p><code class="func">IsQuasiPrimitive</code> returns <code class="keyw">true</code> or <code class="keyw">false</code>, depending on whether the character <var class="Arg">chi</var> is quasiprimitive.</p>

<p>Note that for solvable groups, quasiprimitivity is the same as primitivity (see <code class="func">IsPrimitiveCharacter</code> (<a href="chap75.html#X7BC72ECE822D4245"><span class="RefLink">75.3-2</span></a>)).</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">chi:= Irr( Sl23 )[4];</span>
Character( CharacterTable( SL(2,3) ), [ 2, 1, 1, -2, -1, -1, 0 ] )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestQuasiPrimitive( chi );</span>
rec( comment := "all restrictions checked", isQuasiPrimitive := true )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">chi:= Irr( Sl23 )[7];</span>
Character( CharacterTable( SL(2,3) ), [ 3, 0, 0, 3, 0, 0, -1 ] )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestQuasiPrimitive( chi );</span>
rec( character := Character( CharacterTable( Group(
    [ [ [ 0*Z(3), Z(3) ], [ Z(3)^0, 0*Z(3) ] ], 
      [ [ Z(3), 0*Z(3) ], [ 0*Z(3), Z(3) ] ], 
      [ [ Z(3)^0, Z(3) ], [ Z(3), Z(3) ] ] ]) ), [ 1, -1, 1, -1, 1 ] )
    , comment := "restriction checked", isQuasiPrimitive := false )
</pre></div>

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

<h5>75.3-4 TestInducedFromNormalSubgroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; TestInducedFromNormalSubgroup</code>( <var class="Arg">chi</var>[, <var class="Arg">N</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; IsInducedFromNormalSubgroup</code>( <var class="Arg">chi</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p><code class="func">TestInducedFromNormalSubgroup</code> returns a record with information whether the irreducible character <var class="Arg">chi</var> of the group <span class="SimpleMath">G</span>, say, is induced from a proper normal subgroup of <span class="SimpleMath">G</span>. If the second argument <var class="Arg">N</var> is present, which must be a normal subgroup of <span class="SimpleMath">G</span> or the list of class positions of a normal subgroup of <span class="SimpleMath">G</span>, it is checked whether <var class="Arg">chi</var> is induced from <var class="Arg">N</var>.</p>

<p>The result contains always the components <code class="code">isInduced</code> (either <code class="keyw">true</code> or <code class="keyw">false</code>) and <code class="code">comment</code> (a string telling a reason for the value of the component <code class="code">isInduced</code>). In the <code class="keyw">true</code> case there is a component <code class="code">character</code> which contains a character of a maximal normal subgroup from which <var class="Arg">chi</var> is induced.</p>

<p><code class="func">IsInducedFromNormalSubgroup</code> returns <code class="keyw">true</code> if <var class="Arg">chi</var> is induced from a proper normal subgroup of <span class="SimpleMath">G</span>, and <code class="keyw">false</code> otherwise.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">List( Irr( Sl23 ), IsInducedFromNormalSubgroup );</span>
[ false, false, false, false, false, false, true ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">List( Irr( S4 ){ [ 1, 3, 4 ] },</span>
<span class="GAPprompt">&gt;</span> <span class="GAPinput">         TestInducedFromNormalSubgroup );</span>
[ rec( comment := "linear character", isInduced := false ), 
  rec( character := Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), 
        [ 1, 1, E(3)^2, E(3) ] ), 
      comment := "induced from component '.character'", 
      isInduced := true ), 
  rec( comment := "all maximal normal subgroups checked", 
      isInduced := false ) ]
</pre></div>

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

<h4>75.4 <span class="Heading">Testing Monomiality</span></h4>

<p>A character <span class="SimpleMath">χ</span> of a finite group <span class="SimpleMath">G</span> is called <em>monomial</em> if <span class="SimpleMath">χ</span> is induced from a linear character of a subgroup of <span class="SimpleMath">G</span>. A finite group <span class="SimpleMath">G</span> is called <em>monomial</em> (or <em><span class="SimpleMath">M</span>-group</em>) if each ordinary irreducible character of <span class="SimpleMath">G</span> is monomial.</p>

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

<h5>75.4-1 <span class="Heading">TestMonomial</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; TestMonomial</code>( <var class="Arg">chi</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">&#8227; TestMonomial</code>( <var class="Arg">G</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">&#8227; TestMonomial</code>( <var class="Arg">chi</var>, <var class="Arg">uselattice</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; TestMonomial</code>( <var class="Arg">G</var>, <var class="Arg">uselattice</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Called with a group character <var class="Arg">chi</var> of a group <var class="Arg">G</var>, <code class="func">TestMonomial</code> returns a record containing information about monomiality of the group <var class="Arg">G</var> or the group character <var class="Arg">chi</var>, respectively.</p>

<p>If <code class="func">TestMonomial</code> proves the character <var class="Arg">chi</var> to be monomial then the result contains components <code class="code">isMonomial</code> (with value <code class="keyw">true</code>), <code class="code">comment</code> (a string telling a reason for monomiality), and if it was necessary to compute a linear character from which <var class="Arg">chi</var> is induced, also a component <code class="code">character</code>.</p>

<p>If <code class="func">TestMonomial</code> proves <var class="Arg">chi</var> or <var class="Arg">G</var> to be nonmonomial then the value of the component <code class="code">isMonomial</code> is <code class="keyw">false</code>, and in the case of <var class="Arg">G</var> a nonmonomial character is the value of the component <code class="code">character</code> if it had been necessary to compute it.</p>

<p>A Boolean can be entered as the second argument <var class="Arg">uselattice</var>; if the value is <code class="keyw">true</code> then the subgroup lattice of the underlying group is used if necessary, if the value is <code class="keyw">false</code> then the subgroup lattice is used only for groups of order at most <code class="func">TestMonomialUseLattice</code> (<a href="chap75.html#X787CCCBB7FC17F5E"><span class="RefLink">75.4-2</span></a>). The default value of <var class="Arg">uselattice</var> is <code class="keyw">false</code>.</p>

<p>For a group whose lattice must not be used, it may happen that <code class="func">TestMonomial</code> cannot prove or disprove monomiality; then the result record contains the component <code class="code">isMonomial</code> with value <code class="code">"?"</code>. This case occurs in the call for a character <var class="Arg">chi</var> if and only if <var class="Arg">chi</var> is not induced from the inertia subgroup of a component of any reducible restriction to a normal subgroup. It can happen that <var class="Arg">chi</var> is monomial in this situation. For a group, this case occurs if no irreducible character can be proved to be nonmonomial, and if no decision is possible for at least one irreducible character.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestMonomial( S4 );</span>
rec( comment := "abelian by supersolvable group", isMonomial := true )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestMonomial( Sl23 );</span>
rec( comment := "list Delta( G ) contains entry &gt; 1", 
  isMonomial := false )
</pre></div>

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

<h5>75.4-2 TestMonomialUseLattice</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; TestMonomialUseLattice</code></td><td class="tdright">( global variable )</td></tr></table></div>
<p>This global variable controls for which groups the operation <code class="func">TestMonomial</code> (<a href="chap75.html#X84EB92B57DAF5C93"><span class="RefLink">75.4-1</span></a>) may compute the subgroup lattice. The value can be set to a positive integer or <code class="func">infinity</code> (<a href="chap18.html#X8511B8DF83324C27"><span class="RefLink">18.2-1</span></a>), the default is <span class="SimpleMath">1000</span>.</p>

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

<h5>75.4-3 IsMonomialNumber</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsMonomialNumber</code>( <var class="Arg">n</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>For a positive integer <var class="Arg">n</var>, <code class="func">IsMonomialNumber</code> returns <code class="keyw">true</code> if every solvable group of order <var class="Arg">n</var> is monomial, and <code class="keyw">false</code> otherwise. One can also use <code class="code">IsMonomial</code> instead.</p>

<p>Let <span class="SimpleMath">ν_p(n)</span> denote the multiplicity of the prime <span class="SimpleMath">p</span> as factor of <span class="SimpleMath">n</span>, and <span class="SimpleMath">ord(p,q)</span> the multiplicative order of <span class="SimpleMath">p mod q</span>.</p>

<p>Then there exists a solvable nonmonomial group of order <span class="SimpleMath">n</span> if and only if one of the following conditions is satisfied.</p>


<dl>
<dt><strong class="Mark">1.</strong></dt>
<dd><p><span class="SimpleMath">ν_2(n) ≥ 2</span> and there is a <span class="SimpleMath">p</span> such that <span class="SimpleMath">ν_p(n) ≥ 3</span> and <span class="SimpleMath">p ≡ -1 mod 4</span>,</p>

</dd>
<dt><strong class="Mark">2.</strong></dt>
<dd><p><span class="SimpleMath">ν_2(n) ≥ 3</span> and there is a <span class="SimpleMath">p</span> such that <span class="SimpleMath">ν_p(n) ≥ 3</span> and <span class="SimpleMath">p ≡ 1 mod 4</span>,</p>

</dd>
<dt><strong class="Mark">3.</strong></dt>
<dd><p>there are odd prime divisors <span class="SimpleMath">p</span> and <span class="SimpleMath">q</span> of <span class="SimpleMath">n</span> such that <span class="SimpleMath">ord(p,q)</span> is even and <span class="SimpleMath">ord(p,q) &lt; ν_p(n)</span> (especially <span class="SimpleMath">ν_p(n) ≥ 3</span>),</p>

</dd>
<dt><strong class="Mark">4.</strong></dt>
<dd><p>there is a prime divisor <span class="SimpleMath">q</span> of <span class="SimpleMath">n</span> such that <span class="SimpleMath">ν_2(n) ≥ 2 ord(2,q) + 2</span> (especially <span class="SimpleMath">ν_2(n) ≥ 4</span>),</p>

</dd>
<dt><strong class="Mark">5.</strong></dt>
<dd><p><span class="SimpleMath">ν_2(n) ≥ 2</span> and there is a <span class="SimpleMath">p</span> such that <span class="SimpleMath">p ≡ 1 mod 4</span>, <span class="SimpleMath">ord(p,q)</span> is odd, and <span class="SimpleMath">2 ord(p,q) &lt; ν_p(n)</span> (especially <span class="SimpleMath">ν_p(n) ≥ 3</span>).</p>

</dd>
</dl>
<p>These five possibilities correspond to the five types of solvable minimal nonmonomial groups (see <code class="func">MinimalNonmonomialGroup</code> (<a href="chap75.html#X7B416BBD80072079"><span class="RefLink">75.5-2</span></a>)) that can occur as subgroups and factor groups of groups of order <var class="Arg">n</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Filtered( [ 1 .. 111 ], x -&gt; not IsMonomial( x ) );</span>
[ 24, 48, 72, 96, 108 ]
</pre></div>

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

<h5>75.4-4 <span class="Heading">TestMonomialQuick</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; TestMonomialQuick</code>( <var class="Arg">chi</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">&#8227; TestMonomialQuick</code>( <var class="Arg">G</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="func">TestMonomialQuick</code> does some cheap tests whether the irreducible character <var class="Arg">chi</var> or the group <var class="Arg">G</var>, respectively, is monomial. Here "cheap" means in particular that no computations of character tables are involved. The return value is a record with components</p>


<dl>
<dt><strong class="Mark"><code class="code">isMonomial</code></strong></dt>
<dd><p>either <code class="keyw">true</code> or <code class="keyw">false</code> or the string <code class="code">"?"</code>, depending on whether (non)monomiality could be proved, and</p>

</dd>
<dt><strong class="Mark"><code class="code">comment</code></strong></dt>
<dd><p>a string telling the reason for the value of the <code class="code">isMonomial</code> component.</p>

</dd>
</dl>
<p>A group <var class="Arg">G</var> is proved to be monomial by <code class="func">TestMonomialQuick</code> if <var class="Arg">G</var> is nilpotent or Sylow abelian by supersolvable, or if <var class="Arg">G</var> is solvable and its order is not divisible by the third power of a prime, Nonsolvable groups are proved to be nonmonomial by <code class="func">TestMonomialQuick</code>.</p>

<p>An irreducible character <var class="Arg">chi</var> is proved to be monomial if it is linear, or if its codegree is a prime power, or if its group knows to be monomial, or if the factor group modulo the kernel can be proved to be monomial by <code class="func">TestMonomialQuick</code>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestMonomialQuick( Irr( S4 )[3] );</span>
rec( comment := "whole group is monomial", isMonomial := true )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestMonomialQuick( S4 );</span>
rec( comment := "abelian by supersolvable group", isMonomial := true )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestMonomialQuick( Sl23 );</span>
rec( comment := "no decision by cheap tests", isMonomial := "?" )
</pre></div>

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

<h5>75.4-5 <span class="Heading">TestSubnormallyMonomial</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; TestSubnormallyMonomial</code>( <var class="Arg">G</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">&#8227; TestSubnormallyMonomial</code>( <var class="Arg">chi</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">&#8227; IsSubnormallyMonomial</code>( <var class="Arg">G</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">&#8227; IsSubnormallyMonomial</code>( <var class="Arg">chi</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A character of the group <span class="SimpleMath">G</span> is called <em>subnormally monomial</em> (SM for short) if it is induced from a linear character of a subnormal subgroup of <span class="SimpleMath">G</span>. A group <span class="SimpleMath">G</span> is called SM if all its irreducible characters are SM.</p>

<p><code class="func">TestSubnormallyMonomial</code> returns a record with information whether the group <var class="Arg">G</var> or the irreducible character <var class="Arg">chi</var> of <var class="Arg">G</var> is SM.</p>

<p>The result has the components <code class="code">isSubnormallyMonomial</code> (either <code class="keyw">true</code> or <code class="keyw">false</code>) and <code class="code">comment</code> (a string telling a reason for the value of the component <code class="code">isSubnormallyMonomial</code>); in the case that the <code class="code">isSubnormallyMonomial</code> component has value <code class="keyw">false</code> there is also a component <code class="code">character</code>, with value an irreducible character of <span class="SimpleMath">G</span> that is not SM.</p>

<p><code class="func">IsSubnormallyMonomial</code> returns <code class="keyw">true</code> if the group <var class="Arg">G</var> or the group character <var class="Arg">chi</var> is subnormally monomial, and <code class="keyw">false</code> otherwise.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestSubnormallyMonomial( S4 );</span>
rec( character := Character( CharacterTable( S4 ), [ 3, -1, -1, 0, 1 
     ] ), comment := "found non-SM character", 
  isSubnormallyMonomial := false )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestSubnormallyMonomial( Irr( S4 )[4] );</span>
rec( comment := "all subnormal subgroups checked", 
  isSubnormallyMonomial := false )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestSubnormallyMonomial( DerivedSubgroup( S4 ) );</span>
rec( comment := "all irreducibles checked", 
  isSubnormallyMonomial := true )
</pre></div>

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

<h5>75.4-6 <span class="Heading">TestRelativelySM</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; TestRelativelySM</code>( <var class="Arg">G</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">&#8227; TestRelativelySM</code>( <var class="Arg">chi</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">&#8227; TestRelativelySM</code>( <var class="Arg">G</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; TestRelativelySM</code>( <var class="Arg">chi</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; IsRelativelySM</code>( <var class="Arg">G</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">&#8227; IsRelativelySM</code>( <var class="Arg">chi</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>In the first two cases, <code class="func">TestRelativelySM</code> returns a record with information whether the argument, which must be a SM group <var class="Arg">G</var> or an irreducible character <var class="Arg">chi</var> of a SM group <span class="SimpleMath">G</span>, is relatively SM with respect to every normal subgroup of <var class="Arg">G</var>.</p>

<p>In the second two cases, a normal subgroup <var class="Arg">N</var> of <var class="Arg">G</var> is the second argument. Here <code class="func">TestRelativelySM</code> returns a record with information whether the first argument is relatively SM with respect to <var class="Arg">N</var>, i.e, whether there is a subnormal subgroup <span class="SimpleMath">H</span> of <span class="SimpleMath">G</span> that contains <var class="Arg">N</var> such that the character <var class="Arg">chi</var> resp. every irreducible character of <span class="SimpleMath">G</span> is induced from a character <span class="SimpleMath">ψ</span> of <span class="SimpleMath">H</span> such that the restriction of <span class="SimpleMath">ψ</span> to <var class="Arg">N</var> is irreducible.</p>

<p>The result record has the components <code class="code">isRelativelySM</code> (with value either <code class="keyw">true</code> or <code class="keyw">false</code>) and <code class="code">comment</code> (a string that describes a reason). If the argument is a group <var class="Arg">G</var> that is not relatively SM with respect to a normal subgroup then additionally the component <code class="code">character</code> is bound, with value a not relatively SM character of such a normal subgroup.</p>

<p><code class="func">IsRelativelySM</code> returns <code class="keyw">true</code> if the SM group <var class="Arg">G</var> or the irreducible character <var class="Arg">chi</var> of the SM group <var class="Arg">G</var> is relatively SM with respect to every normal subgroup of <var class="Arg">G</var>, and <code class="keyw">false</code> otherwise.</p>

<p><em>Note</em> that it is <em>not</em> checked whether <var class="Arg">G</var> is SM.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsSubnormallyMonomial( DerivedSubgroup( S4 ) );</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TestRelativelySM( DerivedSubgroup( S4 ) );</span>
rec( 
  comment := "normal subgroups are abelian or have nilpotent factor gr\
oup", isRelativelySM := true )
</pre></div>

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

<h4>75.5 <span class="Heading">Minimal Nonmonomial Groups</span></h4>

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

<h5>75.5-1 IsMinimalNonmonomial</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsMinimalNonmonomial</code>( <var class="Arg">G</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A group <var class="Arg">G</var> is called <em>minimal nonmonomial</em> if it is nonmonomial, and all proper subgroups and factor groups are monomial.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsMinimalNonmonomial( Sl23 );  IsMinimalNonmonomial( S4 );</span>
true
false
</pre></div>

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

<h5>75.5-2 MinimalNonmonomialGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; MinimalNonmonomialGroup</code>( <var class="Arg">p</var>, <var class="Arg">factsize</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>is a solvable minimal nonmonomial group described by the parameters <var class="Arg">factsize</var> and <var class="Arg">p</var> if such a group exists, and <code class="keyw">false</code> otherwise.</p>

<p>Suppose that the required group <span class="SimpleMath">K</span> exists. Then <var class="Arg">factsize</var> is the size of the Fitting factor <span class="SimpleMath">K / F(K)</span>, and this value is 4, 8, an odd prime, twice an odd prime, or four times an odd prime. In the case that <var class="Arg">factsize</var> is twice an odd prime, the centre <span class="SimpleMath">Z(K)</span> is cyclic of order <span class="SimpleMath">2^{<var class="Arg">p</var>+1}</span>. In all other cases <var class="Arg">p</var> is the (unique) prime that divides the order of <span class="SimpleMath">F(K)</span>.</p>

<p>The solvable minimal nonmonomial groups were classified by van der Waall, see <a href="chapBib.html#biBvdW76">[vdW76]</a>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">MinimalNonmonomialGroup(  2,  3 ); # the group SL(2,3)</span>
2^(1+2):3
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">MinimalNonmonomialGroup(  3,  4 );</span>
3^(1+2):4
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">MinimalNonmonomialGroup(  5,  8 );</span>
5^(1+2):Q8
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">MinimalNonmonomialGroup( 13, 12 );</span>
13^(1+2):2.D6
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">MinimalNonmonomialGroup(  1, 14 );</span>
2^(1+6):D14
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">MinimalNonmonomialGroup(  2, 14 );</span>
(2^(1+6)Y4):D14
</pre></div>


<div class="chlinkprevnextbot">&nbsp;<a href="chap0.html">[Top of Book]</a>&nbsp;  <a href="chap0.html#contents">[Contents]</a>&nbsp;  &nbsp;<a href="chap74.html">[Previous Chapter]</a>&nbsp;  &nbsp;<a href="chap76.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>