Attachment 'group_theory.txt'
Download 1 Group_Theory_Primer
2 system:sage
3
4 <style>
5 /* start css.sty */
6 .cmr-10{font-size:83%;}
7 .cmr-8{font-size:66%;}
8 .cmr-6{font-size:50%;}
9 .cmmi-12{font-style: italic;}
10 .cmmi-8{font-size:66%;font-style: italic;}
11 .cmmi-6{font-size:50%;font-style: italic;}
12 .cmsy-8{font-size:66%;}
13 .cmsy-6{font-size:50%;}
14 .cmex-8{font-size:66%;}
15 .cmex-7x-x-85{font-size:49%;}
16 .msam-8{font-size:66%;}
17 .msam-6{font-size:50%;}
18 .msbm-8{font-size:66%;}
19 .msbm-6{font-size:50%;}
20 .cmr-17{font-size:141%;}
21 .cmsy-10x-x-109{font-size:90%;}
22 .cmbx-12{ font-weight: bold;}
23 .cmtt-12{font-family: monospace;}
24 .cmti-12{ font-style: italic;}
25 p.noindent { text-indent: 0em }
26 td p.noindent { text-indent: 0em; margin-top:0em; }
27 p.nopar { text-indent: 0em; }
28 p.indent{ text-indent: 1.5em }
29 @media print {div.crosslinks {visibility:hidden;}}
30 a img { border-top: 0; border-left: 0; border-right: 0; }
31 center { margin-top:1em; margin-bottom:1em; }
32 td center { margin-top:0em; margin-bottom:0em; }
33 .Canvas { position:relative; }
34 li p.indent { text-indent: 0em }
35 li p:first-child{ margin-top:0em; }
36 li p:last-child, li div:last-child { margin-bottom:0.5em; }
37 li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
38 .enumerate1 {list-style-type:decimal;}
39 .enumerate2 {list-style-type:lower-alpha;}
40 .enumerate3 {list-style-type:lower-roman;}
41 .enumerate4 {list-style-type:upper-alpha;}
42 div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
43 .obeylines-h,.obeylines-v {white-space: nowrap; }
44 div.obeylines-v p { margin-top:0; margin-bottom:0; }
45 .overline{ text-decoration:overline; }
46 .overline img{ border-top: 1px solid black; }
47 td.displaylines {text-align:center; white-space:nowrap;}
48 .centerline {text-align:center;}
49 .rightline {text-align:right;}
50 div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
51 .fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
52 div.fbox {display:table}
53 div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
54 div.minipage{width:100%;}
55 div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
56 div.center div {text-align: left;}
57 div.flushright, div.flushright div.flushright {text-align: right;}
58 div.flushright div {text-align: left;}
59 div.flushleft {text-align: left;}
60 .underline{ text-decoration:underline; }
61 .underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
62 .framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
63 .framebox-c {text-align:center;}
64 .framebox-l {text-align:left;}
65 .framebox-r {text-align:right;}
66 span.thank-mark{ vertical-align: super }
67 span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
68 div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
69 table.tabular td p{margin-top:0em;}
70 table.tabular {margin-left: auto; margin-right: auto;}
71 td p:first-child{ margin-top:0em; }
72 td p:last-child{ margin-bottom:0em; }
73 div.td00{ margin-left:0pt; margin-right:0pt; }
74 div.td01{ margin-left:0pt; margin-right:5pt; }
75 div.td10{ margin-left:5pt; margin-right:0pt; }
76 div.td11{ margin-left:5pt; margin-right:5pt; }
77 table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
78 td.td00{ padding-left:0pt; padding-right:0pt; }
79 td.td01{ padding-left:0pt; padding-right:5pt; }
80 td.td10{ padding-left:5pt; padding-right:0pt; }
81 td.td11{ padding-left:5pt; padding-right:5pt; }
82 table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
83 .hline hr, .cline hr{ height : 1px; margin:0px; }
84 .tabbing-right {text-align:right;}
85 span.TEX {letter-spacing: -0.125em; }
86 span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
87 a span.TEX span.E {text-decoration: none; }
88 span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
89 span.LATEX span.TEX{ position:relative; left: -0.4em; }
90 div.float img, div.float .caption {text-align:center;}
91 div.figure img, div.figure .caption {text-align:center;}
92 .marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
93 .marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
94 .equation td{text-align:center; vertical-align:middle; }
95 td.eq-no{ width:5%; }
96 table.equation { width:100%; }
97 div.math-display, div.par-math-display{text-align:center;}
98 math .texttt { font-family: monospace; }
99 math .textit { font-style: italic; }
100 math .textsl { font-style: oblique; }
101 math .textsf { font-family: sans-serif; }
102 math .textbf { font-weight: bold; }
103 .partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
104 .index-item, .index-subitem, .index-subsubitem {display:block}
105 .caption td.id{font-weight: bold; white-space: nowrap; }
106 table.caption {text-align:center;}
107 h1.partHead{text-align: center}
108 p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
109 p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
110 .paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
111 .subparagraphHead, .likesubparagraphHead { font-weight: bold;}
112 .quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
113 .verse{white-space:nowrap; margin-left:2em}
114 div.maketitle {text-align:center;}
115 h2.titleHead{text-align:center;}
116 div.maketitle{ margin-bottom: 2em; }
117 div.author, div.date {text-align:center;}
118 div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
119 div.author{white-space: nowrap;}
120 .quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
121 .abstract p {margin-left:5%; margin-right:5%;}
122 div.abstract {width:100%;}
123 .equation-star td{text-align:center; }
124 table.equation-star { width:100%; }
125 mtd.align-odd{margin-left:2em; text-align:right;}
126 mtd.align-even{margin-right:2em; text-align:left;}
127 .boxed{border: 1px solid black; padding-left:2px; padding-right:2px;}
128 table.multline td {text-align:left; vertical-align:middle; padding-left: 2em; }
129 table.multline td.eq-no { text-align:center; }
130 table.multline { width:100%; }
131 .boxed{border: 1px solid black; padding-left:2px; padding-right:2px;}
132 .boxed{border: 1px solid black; padding-left:2px; padding-right:2px;}
133 div.verbatiminput {font-family: monospace; white-space: nowrap; }
134 .figure img.graphics {margin-left:10%;}
135 /* jsMath suggested additions for spacing control */
136 .jsMath_hiddenSpan {text-indent: 0px}
137 .typeset {text-indent: 0px}
138 /* end css.sty */
139
140 </style>
141 <div class="center"
142 >
143 <!--l. 63--><p class="noindent" >
144 </p><!--l. 64--><p class="noindent" ><span
145 class="cmr-17">Group Theory and SAGE: A Primer</span><br />
146 Robert A. Beezer<br />
147 University of Puget Sound<br />
148 <span
149 class="cmsy-10x-x-120">©</span>2008 CC-A-SA
150 License<span class="footnote-mark"><a
151 href="sage-group-theory-primer2.html#fn2x0"><sup class="textsuperscript"><!--l. 67--><span class="math"
152 ></span></sup></a></span><a
153 id="x1-2f0"></a><br /><br />
154 <span
155 class="cmbx-12">Version 1.0</span><br />
156 <span
157 class="cmbx-12">January 30, 2009</span></p></div>
158 <h3 class="likesectionHead"><a
159 id="x1-1000"></a>Introduction</h3>
160 <!--l. 77--><p class="noindent" >This <span
161 class="cmtt-12">compilation</span> collects SAGE commands that are useful for a student in an introductory
162 course in group theory. It is not intended to teach SAGE or to teach group theory. (There are
163 many introductory texts on group theory and more information on SAGE can be found via
164 <span
165 class="cmtt-12">sagemath.org</span>.) Rather, by presenting commands roughly in the order a student would learn the
166 corresponding mathematics they might be encouraged to experiment and learn more about
167 mathematics and learn more about SAGE. Not coincidentally, the E in SAGE once stood for
168 Exploration.
169 </p><!--l. 79--><p class="indent" > This guide is distributed in PDF format, and as a SAGE worksheet. The worksheet version can be
170 imported into the SAGE notebook environment running in a web browser, and then the displayed chunks
171 of code may be executed by SAGE if one clicks on the small evaluate link below each cell, for a fully
172 interactive experience.
173 </p>
174 <h3 class="likesectionHead"><a
175 id="x1-2000"></a>Basic Properties of the Integers</h3>
176 <!--l. 83--><p class="noindent" >
177 </p>
178 <h5 class="likesubsubsectionHead"><a
179 id="x1-3000"></a>Integer Division</h5>
180 <!--l. 84--><p class="noindent" ><span
181 class="cmtt-12">a %</span><span
182 class="cmtt-12"> b</span> will return the remainder upon division of
183 <!--l. 84--><span class="math"
184 >a</span> by
185 <!--l. 84--><span class="math"
186 >b</span>. In other words, the value
187 is the unique integer <!--l. 84--><span class="math"
188 >r</span>
189 such that (1) <!--l. 84--><span class="math"
190 >0 ≤ r < b</span>, and
191 (2) <!--l. 84--><span class="math"
192 >a = bq + r</span> for some integer
193 <!--l. 84--><span class="math"
194 >q</span> (the quotient).
195 Then <!--l. 84--><span class="math"
196 >(a − r)∕b</span> will equal
197 <!--l. 84--><span class="math"
198 >q</span>. For example, </p>
199
200 {{{id=0|
201 r = 14 % 3
202 q = (14 - r)/3
203 r, q
204 ///
205 }}}
206
207 <!--l. 92--><p class="indent" > will return <span
208 class="cmtt-12">2</span> for the value of <span
209 class="cmtt-12">r</span>, and <span
210 class="cmtt-12">4</span> for the value of <span
211 class="cmtt-12">q</span>. Note that the <span
212 class="cmtt-12">/</span> is <span
213 class="cmti-12">integer </span>division, where
214 any remainder is cast away and the result is always an integer. So, for example, <span
215 class="cmtt-12">14/3</span> will again equal <span
216 class="cmtt-12">4</span>,
217 not <span
218 class="cmtt-12">4.66666</span>.
219 </p>
220 <h5 class="likesubsubsectionHead"><a
221 id="x1-4000"></a>Greatest Common Divisor</h5>
222 <!--l. 95--><p class="noindent" >The greatest common divisor of <!--l. 95--><span class="math"
223 >a</span>
224 and <!--l. 95--><span class="math"
225 >b</span>
226 is obtained with the command <span
227 class="cmtt-12">gcd(a,b)</span>, where in our first uses,
228 <!--l. 95--><span class="math"
229 >a</span> and
230 <!--l. 95--><span class="math"
231 >b</span> are integers.
232 Later, <!--l. 95--><span class="math"
233 >a</span>
234 and <!--l. 95--><span class="math"
235 >b</span>
236 can be other objects with a notion of divisibility and greatness, such as polynomials. For example, </p>
237
238 {{{id=1|
239 gcd(2776, 2452)
240 ///
241 }}}
242
243 <!--l. 101--><p class="indent" > will return <span
244 class="cmtt-12">4</span>.
245 </p>
246 <h5 class="likesubsubsectionHead"><a
247 id="x1-5000"></a>Extended Greatest Common Divisor</h5>
248 <!--l. 105--><p class="noindent" >The command <span
249 class="cmtt-12">xgcd(a,b)</span> (eXtended GCD) returns a triple where the first element is the greatest common
250 divisor of <!--l. 105--><span class="math"
251 >a</span>
252 and <!--l. 105--><span class="math"
253 >b</span>
254 (as with the <span
255 class="cmtt-12">gcd(a,b)</span> command above), but the next two elements are the values of
256 <!--l. 105--><span class="math"
257 >r</span> and
258 <!--l. 105--><span class="math"
259 >s</span> such
260 that <!--l. 105--><span class="math"
261 >ra + sb =\mathop{ gcd}(a,b)</span>.
262 For example, <span
263 class="cmtt-12">xgcd(633,331)</span> returns <span
264 class="cmtt-12">(1, 194, -371)</span>. Portions of the triple can be extracted using <span
265 class="cmtt-12">[</span><span
266 class="cmtt-12"> ]</span> to
267 access the entries of the triple, starting with the first as number <span
268 class="cmtt-12">0</span>. For example, the following should
269 return the result <span
270 class="cmtt-12">True</span> (even if you change the values of <span
271 class="cmtt-12">a</span> and <span
272 class="cmtt-12">b</span>). Studying this block of code will go a long
273 way towards helping you get the most out of SAGEs output. (Note that <span
274 class="cmtt-12">=</span> is how a value is
275 assigned to a variable, while as in the last line, <span
276 class="cmtt-12">==</span> is how we determine equality of two items.) </p>
277
278 {{{id=2|
279 a = 633
280 b = 331
281 extended = xgcd(a, b)
282 g = extended[0]
283 r = extended[1]
284 s = extended[2]
285 g == r*a + s*b
286 ///
287 }}}
288
289 <!--l. 117--><p class="noindent" >
290 </p>
291 <h5 class="likesubsubsectionHead"><a
292 id="x1-6000"></a>Divisibility</h5>
293 <!--l. 118--><p class="noindent" >A remainder of zero indicates divisibility. So <span
294 class="cmtt-12">(a %</span><span
295 class="cmtt-12"> b) == 0</span> will return <span
296 class="cmtt-12">True</span> if
297 <!--l. 118--><span class="math"
298 >b</span> divides
299 <!--l. 118--><span class="math"
300 >a</span>,
301 and will otherwise return <span
302 class="cmtt-12">False</span>. For example, <span
303 class="cmtt-12">(9 %</span><span
304 class="cmtt-12"> 3) == 0</span> is <span
305 class="cmtt-12">True</span>, but <span
306 class="cmtt-12">(9 %</span><span
307 class="cmtt-12"> 4) == 0</span>
308 is <span
309 class="cmtt-12">False</span>. Try predicting the output of the following before executing it in SAGE. </p>
310
311 {{{id=3|
312 answer1 = ((20 % 5) == 0)
313 answer2 = ((17 % 4) == 0)
314 answer1, answer2
315 ///
316 }}}
317
318 <!--l. 127--><p class="noindent" >
319 </p>
320 <h5 class="likesubsubsectionHead"><a
321 id="x1-7000"></a>Factoring</h5>
322 <!--l. 128--><p class="noindent" >As promised by the Fundamental Theorem of Arithmetic, <span
323 class="cmtt-12">factor(a)</span> will return a unique expression for
324 <!--l. 128--><span class="math"
325 >a</span> as a product
326 of powers of primes. It will print in a nicely-readable form, but can also be manipulated with Python as a list
327 of pairs <!--l. 128--><span class="math"
328 >({p}_{i},{e}_{i})</span>
329 containing primes as bases, and their associated exponents. For example, </p>
330
331 {{{id=4|
332 factor(2600)
333 ///
334 }}}
335
336 <!--l. 136--><p class="indent" > returns <span
337 class="cmtt-12">2^3 * 5^2 * 13</span>. We can strip off pieces of the prime decomposition using two levels of <span
338 class="cmtt-12">[</span><span
339 class="cmtt-12"> ]</span>.
340 This is another good example to study in order to learn about how to drill down into Python lists. </p>
341
342 {{{id=5|
343 n = 2600
344 decomposition = factor(n)
345 print n, " decomposes as ", decomposition
346 secondterm = decomposition[1]
347 print "Base and exponent (pair) for second prime: ", secondterm
348 base = secondterm[0]
349 exponent = secondterm[1]
350 print "Base is ", base
351 print "Exponent is ", exponent
352 thirdbase = decomposition[2][0]
353 thirdexponent = decomposition[2][1]
354 print "Base of third term is ", thirdbase, " with exponent ", thirdexponent
355 ///
356 }}}
357
358 <!--l. 153--><p class="indent" > With a bit more work, the <span
359 class="cmtt-12">factor()</span> command can be used to factor more complicated items, such as
360 polynomials.
361 </p>
362 <h5 class="likesubsubsectionHead"><a
363 id="x1-8000"></a>Multiplicative Inverse, Modular Arithmetic</h5>
364 <!--l. 156--><p class="noindent" ><span
365 class="cmtt-12">inverse</span><span
366 class="cmtt-12">_mod(a, n)</span> yields the multiplicative inverse of
367 <!--l. 156--><span class="math"
368 >a</span> mod
369 <!--l. 156--><span class="math"
370 >n</span> (or an error if it doesnt exist). For example, </p>
371
372 {{{id=6|
373 inverse_mod(352, 917)
374 ///
375 }}}
376
377 <!--l. 162--><p class="indent" > yields <span
378 class="cmtt-12">508</span>. (As a check, find the integer <!--l. 163--><span class="math"
379 >m</span>
380 such that <span
381 class="cmtt-12">352*508 = m*917+1</span>.)
382 </p><!--l. 165--><p class="indent" > Then try </p>
383
384 {{{id=7|
385 inverse_mod(4, 24)
386 ///
387 }}}
388
389 <!--l. 171--><p class="indent" > and explain the result.
390 </p>
391 <h5 class="likesubsubsectionHead"><a
392 id="x1-9000"></a>Powers with Modular Arithmetic</h5>
393 <!--l. 175--><p class="noindent" ><span
394 class="cmtt-12">power</span><span
395 class="cmtt-12">_mod(a, m, n)</span> yields <!--l. 175--><span class="math"
396 >{a}^{m}</span>
397 mod <!--l. 175--><span class="math"
398 >n</span>. For example, </p>
399
400 {{{id=8|
401 power_mod(15, 831, 23)
402 ///
403 }}}
404
405 <!--l. 181--><p class="indent" > returns <span
406 class="cmtt-12">10</span>. If <!--l. 181--><span class="math"
407 >m = −1</span>,
408 then this command will duplicate the function of <span
409 class="cmtt-12">inverse</span><span
410 class="cmtt-12">_mod()</span>.
411 </p>
412 <h5 class="likesubsubsectionHead"><a
413 id="x1-10000"></a>Euler <!--l. 184--><span class="math"
414 >ϕ</span>-function</h5>
415 <!--l. 185--><p class="noindent" ><span
416 class="cmtt-12">euler</span><span
417 class="cmtt-12">_phi(n)</span> will return the number of positive integers less than
418 <!--l. 185--><span class="math"
419 >n</span>, and relatively prime to
420 <!--l. 185--><span class="math"
421 >n</span> (i.e. having greatest
422 common divisor with <!--l. 185--><span class="math"
423 >n</span>
424 equal to <!--l. 185--><span class="math"
425 >1</span>). For example, </p>
426
427 {{{id=9|
428 euler_phi(345)
429 ///
430 }}}
431
432 <!--l. 191--><p class="indent" > should return <!--l. 191--><span class="math"
433 >176</span>.
434 Experiment by running the following code several times: </p>
435
436 {{{id=10|
437 m = random_prime(10000)
438 n = random_prime(10000)
439 m, n, euler_phi(m*n) == euler_phi(m)*euler_phi(n)
440 ///
441 }}}
442
443 <!--l. 199--><p class="indent" > Feel a conjecture coming on? Can you generalize this result?
444 </p>
445 <h5 class="likesubsubsectionHead"><a
446 id="x1-11000"></a>Primes</h5>
447 <!--l. 203--><p class="noindent" >The command <span
448 class="cmtt-12">is</span><span
449 class="cmtt-12">_prime(a)</span> returns <span
450 class="cmtt-12">True</span> or <span
451 class="cmtt-12">False</span> depending on if
452 <!--l. 203--><span class="math"
453 >a</span> is prime or not. For example, </p>
454
455 {{{id=11|
456 is_prime(117371)
457 ///
458 }}}
459
460 <!--l. 209--><p class="indent" > returns <span
461 class="cmtt-12">True</span>, while </p>
462
463 {{{id=12|
464 is_prime(14547073)
465 ///
466 }}}
467
468 <!--l. 215--><p class="indent" > returns <span
469 class="cmtt-12">False</span> since <!--l. 215--><span class="math"
470 >14547073 = 1597 ∗ 9109</span>
471 (as you could determine with the <span
472 class="cmtt-12">factor()</span> command).
473 </p><!--l. 217--><p class="indent" > The command <span
474 class="cmtt-12">random</span><span
475 class="cmtt-12">_prime(a,True)</span> will return a random prime between
476 <!--l. 217--><span class="math"
477 >2</span> and
478 <!--l. 217--><span class="math"
479 >a</span>.<br
480 class="newline" />Experiment with </p>
481
482 {{{id=13|
483 random_prime(10^21,True)
484 ///
485 }}}
486
487 <!--l. 224--><p class="indent" > (Replacing <span
488 class="cmtt-12">True</span> by <span
489 class="cmtt-12">False</span> will speed up the search, but there will be a very small probability the result
490 will not be prime.)
491 </p><!--l. 226--><p class="indent" > The command <span
492 class="cmtt-12">prime</span><span
493 class="cmtt-12">_range(a,b)</span> returns an ordered list of all the primes from
494 <!--l. 226--><span class="math"
495 >a</span> to
496 <!--l. 226--><span class="math"
497 >b − 1</span>, inclusive. For example, </p>
498
499 {{{id=14|
500 prime_range(500,550)
501 ///
502 }}}
503
504 <!--l. 232--><p class="indent" > returns <span
505 class="cmtt-12">[503, 509, 521, 523, 541, 547]</span>.
506 </p><!--l. 234--><p class="indent" > The commands <span
507 class="cmtt-12">next</span><span
508 class="cmtt-12">_prime(a)</span> and <span
509 class="cmtt-12">previous</span><span
510 class="cmtt-12">_prime(a)</span> are other ways to get a single prime number
511 of a desired size. Give em a try.
512 </p>
513 <h3 class="likesectionHead"><a
514 id="x1-12000"></a>Permutation Groups</h3>
515 <!--l. 239--><p class="noindent" >A good portion of SAGEs support for group theory is based on routines from GAP (Groups, Algorithms,
516 and Programming at <span
517 class="cmtt-12">http://www.gap-system.org/</span>). Groups can be described in many different ways,
518 such as sets of matrices or sets of symbols subject to a few defining relations. A very concrete
519 way to represent groups is via permutations (one-to-one and onto functions of the integers
520 <!--l. 240--><span class="math"
521 >1</span> through
522 <!--l. 240--><span class="math"
523 >n</span>), using
524 function composition as the operation in the group. SAGE has many routines designed to work with
525 groups of this type and they are also a good way for those learning group theory to gain experience with
526 the basic ideas of group theory. For both these reasons, we will concentrate on these types of
527 groups.
528 </p>
529 <h5 class="likesubsubsectionHead"><a
530 id="x1-13000"></a>Writing Permutations</h5>
531 <!--l. 243--><p class="noindent" >SAGE uses disjoint cycle notation for permutations, see any introductory text on group theory (such as
532 Judson, Section 4.1) for more on this. Composition occurs <span
533 class="cmti-12">left to right</span>, which is not what you might expect
534 and is exactly the reverse of what Judson and many others use. (There are good reasons to support either
535 direction, you just need to be certain you know which one is in play.) There are two ways to write the
536 permutation <!--l. 243--><span class="math"
537 >σ = (1\kern 1.95872pt 3)(2\kern 1.95872pt 5\kern 1.95872pt 4)</span>,
538 </p><ol class="enumerate1" >
539 <li
540 class="enumerate" id="x1-13002x1">As a text string (include quotes): <span
541 class="cmtt-12">"(1,3)(2,5,4)"</span>
542 </li>
543 <li
544 class="enumerate" id="x1-13004x2">As a Python list of tuples: <span
545 class="cmtt-12">[(1,3), (2,5,4)]</span></li></ol>
546 <!--l. 251--><p class="noindent" >
547 </p>
548 <h5 class="likesubsubsectionHead"><a
549 id="x1-14000"></a>Groups</h5>
550 <!--l. 251--><p class="noindent" >SAGE knows many popular groups as sets of permutations. More are listed
551 below, but for starters, the full symmetric group of all possible permutations of
552 <!--l. 251--><span class="math"
553 >1</span> through
554 <!--l. 251--><span class="math"
555 >n</span> can be
556 built with the command <span
557 class="cmtt-12">SymmetricGroup(n)</span>.
558 </p>
559 <!--l. 254--><p class="noindent" ><span class="paragraphHead"><a
560 id="x1-15000"></a><span
561 class="cmbx-12">Permutation Elements</span></span>
562 Elements of a group can be created, and composed, as follows </p>
563
564 {{{id=15|
565 G = SymmetricGroup(5)
566 sigma = G("(1,3)(2,5,4)")
567 rho = G([(1,4), (1,5)])
568 rho^-1*sigma*rho
569 ///
570 }}}
571
572 <!--l. 263--><p class="indent" > Available functions for elements of a permutation group include finding the order of an element, i.e. for a permutation
573 <!--l. 263--><span class="math"
574 >σ</span> the order is the smallest
575 power of <!--l. 263--><span class="math"
576 >k</span> such that
577 <!--l. 263--><span class="math"
578 >{σ}^{k}</span> equals the identity
579 element <!--l. 263--><span class="math"
580 >()</span>. For example, </p>
581
582 {{{id=16|
583 sigma = G("(1,3)(2,5,4)")
584 sigma.order()
585 ///
586 }}}
587
588 <!--l. 270--><p class="indent" > will return <!--l. 270--><span class="math"
589 >6</span>.
590 </p><!--l. 272--><p class="indent" > The sign of the permutation <!--l. 272--><span class="math"
591 >σ</span> is defined
592 to be <!--l. 272--><span class="math"
593 >1</span> for an even permutation and
594 <!--l. 272--><span class="math"
595 > − 1</span> for an odd permutation. For example, </p>
596
597 {{{id=17|
598 sigma = G("(1,3)(2,5,4)")
599 sigma.sign()
600 ///
601 }}}
602
603 <!--l. 279--><p class="indent" > will return <!--l. 279--><span class="math"
604 > − 1</span>
605 since <!--l. 279--><span class="math"
606 >σ</span> is
607 an odd permutation.
608 </p><!--l. 281--><p class="indent" > Many more available functions that can be applied to a permutation can be found via
609 tab-completion. With <span
610 class="cmtt-12">sigma</span> defined as an element of a permutation group, in a SAGE cell, type <span
611 class="cmtt-12">sigma.</span>
612 (Note the <span
613 class="cmtt-12">.</span>) and then press the tab key. Youll get a list of available functions (you may need to scroll
614 down to see the whole list). Experiment and explore! Its what SAGE is all about. You really cant break
615 anything.
616 </p>
617 <h5 class="likesubsubsectionHead"><a
618 id="x1-16000"></a>Creating Groups</h5>
619 <!--l. 284--><p class="noindent" >This is an annotated list of some small well-known permutation groups that can be created simply in
620 SAGE.<br
621 class="newline" />(You can find more in the source code file <br
622 class="newline" /><span
623 class="cmtt-12">/sage/devel/sage/sage/groups/perm</span><span
624 class="cmtt-12">_gps/permgroup</span><span
625 class="cmtt-12">_named.py</span>)
626 </p><!--l. 285--><p class="noindent" ><span
627 class="cmtt-12">SymmetricGroup(n)</span>: All <!--l. 287--><span class="math"
628 >n!</span>
629 permutations on <!--l. 287--><span class="math"
630 >n</span>
631 symbols.<br
632 class="newline" /><span
633 class="cmtt-12">DihedralGroup(n)</span>: Symmetries of an <!--l. 288--><span class="math"
634 >n</span>-gon.
635 Rotations and flips, <!--l. 288--><span class="math"
636 >2n</span>
637 in total.<br
638 class="newline" /><span
639 class="cmtt-12">CyclicPermutationGroup(n)</span>: Rotations of an
640 <!--l. 289--><span class="math"
641 >n</span>-gon (no
642 flips), <!--l. 289--><span class="math"
643 >n</span>
644 in total.<br
645 class="newline" /><span
646 class="cmtt-12">AlternatingGroup(n)</span>: Alternating group on <!--l. 290--><span class="math"
647 >n</span>
648 symbols having <!--l. 290--><span class="math"
649 >n!∕2</span>
650 elements.<br
651 class="newline" /><span
652 class="cmtt-12">KleinFourGroup()</span>: The non-cyclic group of order 4.
653
654 </p>
655 <h3 class="likesectionHead"><a
656 id="x1-17000"></a>Group Functions</h3>
657 <!--l. 296--><p class="noindent" >Individual elements of permutation groups are important, but we primarily wish to study groups as objects on
658 their own. So a wide-variety of computations are available for groups. Define a group, for example </p>
659
660 {{{id=18|
661 H = DihedralGroup(6)
662 ///
663 }}}
664
665 <!--l. 303--><p class="indent" > and then a variety of functions become available.
666 </p><!--l. 305--><p class="indent" > After trying the examples below, experiment with tab-completion. Having defined <span
667 class="cmtt-12">H</span>, type <span
668 class="cmtt-12">H.</span> (note the
669 <span
670 class="cmtt-12">.</span>) and then press the tab key. Youll get a list of available functions (you may need to scroll
671 down to see the whole list). As before, <span
672 class="cmti-12">experiment and explore </span> its really hard to break
673 anything.
674 </p><!--l. 307--><p class="indent" > Heres another couple of ways to experiment and explore. Find a function that looks interesting, say
675 <span
676 class="cmtt-12">is</span><span
677 class="cmtt-12">_abelian()</span>. Type <span
678 class="cmtt-12">H.is</span><span
679 class="cmtt-12">_abelian(</span> (note there is just an opening parenthesis), followed by the tab key.
680 This will display a portion of the source code for the <span
681 class="cmtt-12">is</span><span
682 class="cmtt-12">_abelian()</span> function, describing the inputs and
683 output, possibly illustrated with example uses.
684 </p><!--l. 309--><p class="indent" > If you want to learn more about how SAGE works, or possibly extend its functionality, then you
685 can start by examining the complete Python source code. For example, try <span
686 class="cmtt-12">H.is</span><span
687 class="cmtt-12">_abelian??</span>,
688 which will allow you to determine that the <span
689 class="cmtt-12">is</span><span
690 class="cmtt-12">_abelian()</span> function is basically riding on GAPs
691 <span
692 class="cmtt-12">IsAbelian()</span> command and asking GAP do the heavy-lifting for us. (To get the maximum
693 advantage of using SAGE it helps to know some basic Python programming, but it is not
694 required.)
695 </p><!--l. 311--><p class="indent" > OK, on to some popular command for groups. If you are using the worksheet, be sure you have defined the
696 group <!--l. 311--><span class="math"
697 >H</span> as the
698 dihedral group <!--l. 311--><span class="math"
699 >{D}_{6}</span>,
700 since we wont keep repeating its definition below.
701 </p>
702 <h5 class="likesubsubsectionHead"><a
703 id="x1-18000"></a>Abelian?</h5>
704 <!--l. 314--><p class="noindent" >The command </p>
705
706 {{{id=19|
707 H.is_abelian()
708 ///
709 }}}
710
711 <!--l. 320--><p class="indent" > will return <span
712 class="cmtt-12">False</span> since <!--l. 320--><span class="math"
713 >{D}_{6}</span>
714 is a non-abelian group.
715 </p>
716 <h5 class="likesubsubsectionHead"><a
717 id="x1-19000"></a>Order</h5>
718 <!--l. 323--><p class="noindent" >The command </p>
719
720 {{{id=20|
721 H.order()
722 ///
723 }}}
724
725 <!--l. 329--><p class="indent" > will return <span
726 class="cmtt-12">12</span> since <!--l. 329--><span class="math"
727 >{D}_{6}</span>
728 is a group of with <!--l. 329--><span class="math"
729 >12</span>
730 elements.
731 </p>
732 <h5 class="likesubsubsectionHead"><a
733 id="x1-20000"></a>All Elements</h5>
734 <!--l. 332--><p class="noindent" >The command </p>
735
736 {{{id=21|
737 H.list()
738 ///
739 }}}
740
741 <!--l. 338--><p class="indent" > will return all of the elements of <!--l. 338--><span class="math"
742 >H</span>
743 in a fixed order as a Python list. Indexing (<span
744 class="cmtt-12">[</span><span
745 class="cmtt-12"> ]</span>) can be used to extract the individual
746 elements of the list, remembering that counting the elements of the list begins at zero. </p>
747
748 {{{id=22|
749 elements = H.list()
750 elements[3]
751 ///
752 }}}
753
754 <!--l. 346--><p class="noindent" >
755 </p>
756 <h5 class="likesubsubsectionHead"><a
757 id="x1-21000"></a>Cayley Table</h5>
758 <!--l. 346--><p class="noindent" >The command </p>
759
760 {{{id=23|
761 H.cayley_table()
762 ///
763 }}}
764
765 <!--l. 352--><p class="indent" > will construct the Cayley table (or multiplication table) of
766 <!--l. 352--><span class="math"
767 >H</span>. The
768 display uses the elements of the group in the same order as the <span
769 class="cmtt-12">list()</span> command, and denoting them as <span
770 class="cmtt-12">xN</span>
771 where <!--l. 352--><span class="math"
772 >N</span>
773 is an integer. For example to determine the element in the table named <span
774 class="cmtt-12">x4</span>, </p>
775
776 {{{id=24|
777 H.list()[4]
778 ///
779 }}}
780
781 <!--l. 359--><p class="noindent" >
782 </p>
783 <h5 class="likesubsubsectionHead"><a
784 id="x1-22000"></a>Center</h5>
785 <!--l. 359--><p class="noindent" >The command <span
786 class="cmtt-12">H.center()</span> will return a subgroup that is the center of the group
787 <!--l. 359--><span class="math"
788 >H</span> (see Exercise 2.46 in Judson). Try </p>
789
790 {{{id=25|
791 H.center().list()
792 ///
793 }}}
794
795 <!--l. 365--><p class="indent" > to see which elements of <!--l. 365--><span class="math"
796 >H</span>
797 commute with <span
798 class="cmti-12">every </span>element of <!--l. 365--><span class="math"
799 >H</span>.
800 </p><!--l. 367--><p class="noindent" >
801 </p>
802 <h5 class="likesubsubsectionHead"><a
803 id="x1-23000"></a>Cayley Graph</h5>
804 <!--l. 367--><p class="noindent" >For fun, try <span
805 class="cmtt-12">show(H.cayley</span><span
806 class="cmtt-12">_graph())</span>.
807 </p>
808 <h3 class="likesectionHead"><a
809 id="x1-24000"></a>Subgroups</h3>
810 <!--l. 371--><p class="noindent" >
811 </p>
812 <h5 class="likesubsubsectionHead"><a
813 id="x1-25000"></a>Cyclic Subgroups</h5>
814 <!--l. 371--><p class="noindent" >If <span
815 class="cmtt-12">G</span> is a group, and <span
816 class="cmtt-12">a</span> is an element of the group (try <span
817 class="cmtt-12">a=G.random</span><span
818 class="cmtt-12">_element()</span>), then </p>
819
820 {{{id=26|
821 a=G.random_element()
822 H=G.subgroup([a])
823 ///
824 }}}
825
826 <!--l. 378--><p class="indent" > will create <span
827 class="cmtt-12">H</span> as the cyclic subgroup of <span
828 class="cmtt-12">G</span> with generator <span
829 class="cmtt-12">a</span>.
830 </p><!--l. 380--><p class="indent" > For example the code below will (1) create <span
831 class="cmtt-12">G</span> as the symmetric group on five symbols,
832 (2) specify <span
833 class="cmtt-12">sigma</span> as an element of <span
834 class="cmtt-12">G</span>, (3) use <span
835 class="cmtt-12">sigma</span> as the generator of a cyclic subgroup
836 <span
837 class="cmtt-12">H</span>, (4) list all the elements of <span
838 class="cmtt-12">H</span>. In more mathematical notation, we might write
839 <!--l. 380--><span class="math"
840 >\langle (1\kern 1.95872pt 2\kern 1.95872pt 3)(4\kern 1.95872pt 5)\rangle = H ⊆ G = {S}_{5}</span>. </p>
841
842 {{{id=27|
843 G=SymmetricGroup(5)
844 sigma=G("(1,2,3)(4,5)")
845 H=G.subgroup([sigma])
846 H.list()
847 ///
848 }}}
849
850 <!--l. 389--><p class="indent" > Experiment by trying different permutations for <span
851 class="cmtt-12">sigma</span> and observing the effect on <span
852 class="cmtt-12">H</span>.
853 </p>
854 <h5 class="likesubsubsectionHead"><a
855 id="x1-26000"></a>Cyclic Groups</h5>
856 <!--l. 393--><p class="noindent" >Groups that are cyclic themselves are both important, and rich in structure. The command
857 <span
858 class="cmtt-12">CyclicPermutationGroup(n)</span> will create a permutation group that is cyclic with <span
859 class="cmtt-12">n</span> elements.
860 Consider the following example (note that the indentation of the third line is critical) which
861 will list the elements of a cyclic group of order 20, preceded by the order of each element. </p>
862
863 {{{id=28|
864 n=20
865 CN = CyclicPermutationGroup(n)
866 for g in CN:
867 print g.order(), " ", g
868 ///
869 }}}
870
871 <!--l. 402--><p class="indent" > By varying the size of the group (change the value of <span
872 class="cmtt-12">n</span>) you can begin to illustrate some of the
873 structure of a cyclic group (for example, try a prime).
874 </p><!--l. 404--><p class="indent" > We can cut/paste an element of order 5 from the output above (in the
875 case when the cyclic group has 20 elements) and quickly build a subgroup, </p>
876
877 {{{id=29|
878 rho = C20("(1,17,13,9,5)(2,18,14,10,6)(3,19,15,11,7)(4,20,16,12,8)")
879 H = C20.subgroup([rho])
880 H.list()
881 ///
882 }}}
883
884 <!--l. 412--><p class="indent" > For a cyclic group, the following command will list <span
885 class="cmti-12">all </span>of the subgroups. </p>
886
887 {{{id=30|
888 C20.conjugacy_classes_subgroups()
889 ///
890 }}}
891
892 <!--l. 418--><p class="indent" > Be careful, this command uses some more advanced ideas, and will not usually list <span
893 class="cmti-12">all </span>of the
894 subgroups of a group here we are relying on special properties of cyclic groups (but see the next
895 section).
896 </p>
897 <h5 class="likesubsubsectionHead"><a
898 id="x1-27000"></a>All Subgroups</h5>
899 <!--l. 420--><p class="noindent" >If <!--l. 420--><span class="math"
900 >H</span> is a
901 subgroup of <!--l. 420--><span class="math"
902 >G</span>
903 and <!--l. 420--><span class="math"
904 >g ∈ G</span>, then
905 <!--l. 420--><span class="math"
906 >gH{g}^{−1} = \{gh{g}^{−1}\mathrel{∣}h ∈ G\}</span> will also be a
907 subgroup of <!--l. 420--><span class="math"
908 >G</span>.
909 If <span
910 class="cmtt-12">G</span> is a group, then the command <span
911 class="cmtt-12">G.conjugacy</span><span
912 class="cmtt-12">_classes</span><span
913 class="cmtt-12">_subgroups()</span> will return a list of subgroups of
914 <span
915 class="cmtt-12">G</span>, but not all of the subgroups. However, every subgroup can be constructed from one on the list by the
916 <!--l. 420--><span class="math"
917 >gH{g}^{−1}</span> construction
918 with a suitable <!--l. 420--><span class="math"
919 >g</span>.
920 As an illustration, the code below (1) creates <span
921 class="cmtt-12">K</span> as the dihedral group of order 24,
922 <!--l. 420--><span class="math"
923 >{D}_{12}</span>, (2)
924 stores the list of subgroups output by <span
925 class="cmtt-12">K.conjugacy</span><span
926 class="cmtt-12">_classes</span><span
927 class="cmtt-12">_subgroups()</span> in the variable <span
928 class="cmtt-12">sg</span>, (3) prints
929 the elements of the list, (4) selects the second subgroup in the list, and lists its elements. </p>
930
931 {{{id=31|
932 K=DihedralGroup(12)
933 sg = K.conjugacy_classes_subgroups()
934 print "sg:\n", sg
935 print "\nAn order two subgroup:\n", sg[1].list()
936 ///
937 }}}
938
939 <!--l. 429--><p class="indent" > It is important to note that this is a nice long list of subgroups, but will rarely create
940 <span
941 class="cmti-12">every </span>such subgroup. For example, the code below (1) creates <span
942 class="cmtt-12">rho</span> as an element of the group
943 <span
944 class="cmtt-12">K</span>, (2) creates <span
945 class="cmtt-12">L</span> as a cyclic subgroup of <span
946 class="cmtt-12">K</span>, (3) prints the two elements of <span
947 class="cmtt-12">L</span>, and finally (4)
948 tests to see if this subgroup is part of the output of the list <span
949 class="cmtt-12">sg</span> created just above (it is not). </p>
950
951 {{{id=32|
952 rho = K("(1,4)(2,3)(5,12)(6,11)(7,10)(8,9)")
953 L=PermutationGroup([rho])
954 print L.list()
955 print L in sg
956 ///
957 }}}
958
959 <!--l. 439--><p class="noindent" >
960 </p>
961 <h3 class="likesectionHead"><a
962 id="x1-28000"></a>Symmetry Groups</h3>
963 <!--l. 441--><p class="noindent" >You can give SAGE a short list of elements of a permutation group and SAGE will find the smallest
964 subgroup that contains those elements. We say the list generates the subgroup. We list a few interesting
965 subgroups you can create this way.
966 </p>
967 <h5 class="likesubsubsectionHead"><a
968 id="x1-29000"></a>Symmetries of an Equilateral Triangle</h5>
969 <!--l. 445--><p class="noindent" >Label the vertices of an equilateral triangle as 1, 2 and 3. Then <span
970 class="cmti-12">any </span>permutation of the vertices will be a
971 symmetry of the triangle. So either <span
972 class="cmtt-12">SymmetricGroup(3)</span> or <span
973 class="cmtt-12">DihedralGroup(3)</span> will create the full
974 symmetry group.
975 </p>
976 <h5 class="likesubsubsectionHead"><a
977 id="x1-30000"></a>Symmetries of an <!--l. 447--><span class="math"
978 >n</span>-gon</h5>
979 <!--l. 449--><p class="noindent" >A regular, <!--l. 449--><span class="math"
980 >n</span>-sided figure in
981 the plane (an <!--l. 449--><span class="math"
982 >n</span>-gon) will have
983 <!--l. 449--><span class="math"
984 >2n</span> symmetries, comprised
985 of <!--l. 449--><span class="math"
986 >n</span> rotations (including
987 the trivial one) and <!--l. 449--><span class="math"
988 >n</span>
989 flips about various axes. The dihedral group <span
990 class="cmtt-12">DihedralGroup(n)</span> is frequently defined as exactly the symmetry
991 group of an <!--l. 449--><span class="math"
992 >n</span>-gon.
993 </p>
994 <h5 class="likesubsubsectionHead"><a
995 id="x1-31000"></a>Symmetries of a Tetrahedron</h5>
996 <!--l. 453--><p class="noindent" >Label the 4 vertices of a regular tetahedron as 1, 2, 3 and 4. Fix the vertex labeled 4 and
997 roate the opposite face through 120 degrees. This will create the permutation/symmetry
998 <!--l. 453--><span class="math"
999 >(1\kern 1.95872pt 2\kern 1.95872pt 3)</span>.
1000 Similarly, fixing vertex 1, and rotating the opposite face will create the permutation
1001 <!--l. 453--><span class="math"
1002 >(2\kern 1.95872pt 3\kern 1.95872pt 4)</span>. These two
1003 permutations are enough to generate the full group of the twelve symmetries of the tetrahedron. Another
1004 symmetry can be visualized by running an axis through the midpoint of an edge of the tetrahedron
1005 through to the midpoint of the opposite edge, and then rotating by 180 degrees about this axis. For
1006 example, the 12 edge is opposite the 34 edge, and the symmetry is described by the permutation
1007 <!--l. 453--><span class="math"
1008 >(1\kern 1.95872pt 2)(3\kern 1.95872pt 4)</span>. This permutation,
1009 along with either of the above permutations will also generate the group. So here are two ways to create this group, </p>
1010
1011 {{{id=33|
1012 tetra_one = PermutationGroup(["(1,2,3)", "(2,3,4)"])
1013 tetra_two = PermutationGroup(["(1,2,3)", "(1,2)(3,4)"])
1014 ///
1015 }}}
1016
1017 <!--l. 460--><p class="indent" > This group has a variety of interesting properties, so it is worth experimenting with. You may also
1018 know it as the alternating group on 4 symbols, which SAGE will create with the command
1019 <span
1020 class="cmtt-12">AlternatingGroup(4)</span>.
1021 </p>
1022 <h5 class="likesubsubsectionHead"><a
1023 id="x1-32000"></a>Symmetries of a Cube</h5>
1024 <!--l. 464--><p class="noindent" >Label vertices of one face of a cube with 1, 2, 3 and 4, and on the opposite face label the
1025 vertices 5, 6, 7 and 8 (5 opposite 1, 6 opposite 2, etc.). Consider three axes that run from
1026 the center of a face to the center of the opposite face, and consider a quarter-turn rotation
1027 about each axis. These three rotations will construct the entire symmetry group. Use </p>
1028
1029 {{{id=34|
1030 cube = PermutationGroup(["(3,2,6,7)(4,1,5,8)",
1031 "(1,2,6,5)(4,3,7,8)", "(1,2,3,4)(5,6,7,8)"])
1032 cube.list()
1033 ///
1034 }}}
1035
1036 <!--l. 473--><p class="indent" > A cube has four distinct diagonals (joining opposite vertices through the center of
1037 the cube). Each symmetry of the cube will cause the diagonals to arrange differently.
1038 In this way, we can view an element of the symmetry group as a permutation of four
1039 symbols the diagonals. It happens that <span
1040 class="cmti-12">each </span>of the 24 permutations of the diagonals
1041 is created by exactly one symmetry of the 8 vertices of the cube. So this subgroup of
1042 <!--l. 473--><span class="math"
1043 >{S}_{8}</span> is the same
1044 as <!--l. 473--><span class="math"
1045 >{S}_{4}</span>. In SAGE, </p>
1046
1047 {{{id=35|
1048 cube.is_isomorphic(SymmetricGroup(4))
1049 ///
1050 }}}
1051
1052 <!--l. 479--><p class="indent" > will test to see if the group of symmetries of the cube are the same as
1053 <!--l. 479--><span class="math"
1054 >{S}_{4}</span> and so
1055 will return <span
1056 class="cmtt-12">True</span>.
1057 </p><!--l. 481--><p class="indent" > Here is an another way to create the symmetries of a cube. Number the six <span
1058 class="cmti-12">faces </span>of
1059 the cube as follows: 1 on top, 2 on the bottom, 3 in front, 4 on the right, 5 in back, 6
1060 on the left. Now the same rotations as before (quarter-turns about axes through the
1061 centers of two opposite faces) can be used as generators of the symmetry group, </p>
1062
1063 {{{id=36|
1064 cubeface = PermutationGroup(["(1,3,2,5)","(1,4,2,6)","(3,4,5,6)"])
1065 cubeface.list()
1066 ///
1067 }}}
1068
1069 <!--l. 488--><p class="indent" > Again, this subgroup of <!--l. 488--><span class="math"
1070 >{S}_{6}</span> is same
1071 as the full symmetric group, <!--l. 488--><span class="math"
1072 >{S}_{4}</span>, </p>
1073
1074 {{{id=37|
1075 cubeface.is_isomorphic(SymmetricGroup(4))
1076 ///
1077 }}}
1078
1079 <!--l. 494--><p class="indent" > It turns out that in each of the above constructions, it is sufficient to use just two of the three
1080 generators (any two). But one generator is not enough. Give it a try, and use SAGE to convince yourself
1081 that a generator can be sacrificed in each case.
1082 </p>
1083 <h3 class="likesectionHead"><a
1084 id="x1-33000"></a>Normal Subgroups</h3>
1085 <!--l. 498--><p class="noindent" >
1086 </p>
1087 <h5 class="likesubsubsectionHead"><a
1088 id="x1-34000"></a>Checking Normality</h5>
1089 <!--l. 499--><p class="noindent" >The code below (1) begins with the alternating group,
1090 <!--l. 499--><span class="math"
1091 >{A}_{4}</span>, (2)
1092 specifies three elements of the group (the three symmetries of the tetrahedron that are 180 degree rotations
1093 about axes through midpoints of opposite edges), (3) uses these three elements to generate a subgroup,
1094 and finally (4) illustrates the command for testing if the subgroup <span
1095 class="cmtt-12">H</span> is a normal subgroup of the group <span
1096 class="cmtt-12">A4</span>. </p>
1097
1098 {{{id=38|
1099 A4=AlternatingGroup(4)
1100 r1=A4("(1,2)(3,4)")
1101 r2=A4("(1,3)(2,4)")
1102 r3=A4("(1,4)(2,3)")
1103 H=A4.subgroup([r1,r2,r3])
1104 H.is_normal(A4)
1105 ///
1106 }}}
1107
1108 <!--l. 511--><p class="noindent" >
1109 </p>
1110 <h5 class="likesubsubsectionHead"><a
1111 id="x1-35000"></a>Quotient Group</h5>
1112 <!--l. 512--><p class="noindent" >Extending the previous example, we can create the quotient (factor) group of
1113 <!--l. 512--><span class="math"
1114 >{A}_{4}</span> by
1115 <!--l. 512--><span class="math"
1116 >H</span>. </p>
1117
1118 {{{id=39|
1119 A4.quotient_group(H)
1120 ///
1121 }}}
1122
1123 <!--l. 518--><p class="indent" > will return a permutation group generated by <span
1124 class="cmtt-12">(1,2,3)</span>. As expected this is a group of order 3. Notice
1125 that we do not get back a group of the actual cosets, but instead we get a group <span
1126 class="cmti-12">isomorphic </span>to the factor
1127 group.
1128 </p>
1129 <h5 class="likesubsubsectionHead"><a
1130 id="x1-36000"></a>Simple Groups</h5>
1131 <!--l. 522--><p class="noindent" >It is easy to check to see if a group is void of any normal subgroups. </p>
1132
1133 {{{id=40|
1134 print AlternatingGroup(5).is_simple()
1135 print AlternatingGroup(4).is_simple()
1136 ///
1137 }}}
1138
1139 <!--l. 529--><p class="indent" > will print <span
1140 class="cmtt-12">True</span> and then <span
1141 class="cmtt-12">False</span>.
1142 </p>
1143 <h5 class="likesubsubsectionHead"><a
1144 id="x1-37000"></a>Composition Series</h5>
1145 <!--l. 534--><p class="noindent" >For any group, it is easy to obtain a composition series. There is an element of randomness in the algorithm, so
1146 you may not always get the same results. (But the list of factor groups is unique, according to the
1147 Jordan-Hölder theorem.) Also, the subgroups generated sometimes have more generators than necessary, so you
1148 might want to study each subgroup carefully by checking properties like its order. An interesting example is: </p>
1149
1150 {{{id=41|
1151 DihedralGroup(105).composition_series()
1152 ///
1153 }}}
1154
1155 <!--l. 542--><p class="indent" > The output will be a list of 5 subgroups of <!--l. 542--><span class="math"
1156 >{D}_{105}</span>,
1157 each a normal subgroup of its predecessor.
1158 </p><!--l. 544--><p class="indent" > Several other series are possible, such as the derived series. Use tab-completion to see the
1159 possibilities.
1160 </p>
1161 <h3 class="likesectionHead"><a
1162 id="x1-38000"></a>Conjugacy</h3>
1163 <!--l. 549--><p class="noindent" >Given a group <!--l. 549--><span class="math"
1164 >G</span>, we
1165 can define a relation <!--l. 549--><span class="math"
1166 > ∼</span>
1167 on <!--l. 549--><span class="math"
1168 >G</span> by:
1169 for <!--l. 549--><span class="math"
1170 >a,\kern 1.95872pt b ∈ G</span>,
1171 <!--l. 549--><span class="math"
1172 >a ∼ b</span> if and only if there
1173 exists an element <!--l. 549--><span class="math"
1174 >g ∈ G</span>
1175 such that <!--l. 549--><span class="math"
1176 >ga{g}^{−1} = b</span>.
1177 </p><!--l. 551--><p class="indent" > Since this is an equivalence relation, there is an associated partition of the elements of
1178 <!--l. 551--><span class="math"
1179 >G</span> into
1180 equivalence classes. For this very important relation, the classes are known as conjugacy classes. A
1181 representative of each of these equivalence classes can be found as follows. Suppose <span
1182 class="cmtt-12">G</span> is a
1183 permutation group, then <span
1184 class="cmtt-12">G.conjugacy</span><span
1185 class="cmtt-12">_classes</span><span
1186 class="cmtt-12">_representatives()</span> will return a list of elements of
1187 <!--l. 551--><span class="math"
1188 >G</span>, one
1189 per conjugacy class.
1190 </p><!--l. 553--><p class="indent" > Given an element <!--l. 553--><span class="math"
1191 >g ∈ G</span>,
1192 the centralizer of <!--l. 553--><span class="math"
1193 >g</span>
1194 is the set <!--l. 553--><span class="math"
1195 >C(g) = \{h ∈ G\mathrel{∣}hg{h}^{−1} = g\}</span>, which
1196 is a subgroup of <!--l. 553--><span class="math"
1197 >G</span>.
1198 A theorem tells us that the size of each conjugagcy class is the order of the group divided
1199 by the order of the centralizer of an element of the class. With the following code we can
1200 determine the size of the conjugacy classes of the full symmetric group on 5 symbols, </p>
1201
1202 {{{id=42|
1203 G = SymmetricGroup(5)
1204 group_order = G.order()
1205 reps = G.conjugacy_classes_representatives()
1206 class_sizes = []
1207 for g in reps:
1208 class_sizes.append( group_order/G.centralizer(g).order() )
1209 print class_sizes
1210 ///
1211 }}}
1212
1213 <!--l. 565--><p class="indent" > This should produce the list <span
1214 class="cmtt-12">[1, 10, 15, 20, 20, 30, 24]</span> which you can check sums to 120, the
1215 order of the group. You might be able to produce this list by counting elements of the group
1216 <!--l. 565--><span class="math"
1217 >{S}_{5}</span> with
1218 identical cycle structure (which will require a few simple combinatorial arguments).
1219
1220 </p>
1221 <h3 class="likesectionHead"><a
1222 id="x1-39000"></a>Sylow Subgroups</h3>
1223 <!--l. 570--><p class="noindent" >Sylows Theorems assert the existence of certain subgroups. For example, if
1224 <!--l. 570--><span class="math"
1225 >p</span> is a prime, and
1226 <!--l. 570--><span class="math"
1227 >{p}^{r}</span> divides the order
1228 of a group <!--l. 570--><span class="math"
1229 >G</span>, then
1230 <!--l. 570--><span class="math"
1231 >G</span> must have a
1232 subgroup of order <!--l. 570--><span class="math"
1233 >{p}^{r}</span>.
1234 Such a subgroup could be found among the output of the <span
1235 class="cmtt-12">conjugacy</span><span
1236 class="cmtt-12">_classes</span><span
1237 class="cmtt-12">_subgroups()</span> command by checking
1238 the orders of the subgroups produced. The <span
1239 class="cmtt-12">map()</span> command is a quick way to do this. The symmetric group on 8
1240 symbols, <!--l. 570--><span class="math"
1241 >{S}_{8}</span>, has order
1242 <!--l. 570--><span class="math"
1243 >8! = 40, 320</span> and is divisible by
1244 <!--l. 570--><span class="math"
1245 >{2}^{7} = 128</span>. Lets find one example of a
1246 subgroup of permutations on <!--l. 570--><span class="math"
1247 >8</span>
1248 symbols with order <!--l. 570--><span class="math"
1249 >128</span>.
1250 The next command takes a few minutes to run, so go get a cup of coffee after you set it in motion. </p>
1251
1252 {{{id=43|
1253 G = SymmetricGroup(8)
1254 subgroups = G.conjugacy_classes_subgroups()
1255 map( order, subgroups )
1256 ///
1257 }}}
1258
1259 <!--l. 578--><p class="indent" > The <span
1260 class="cmtt-12">map(order, subgroups)</span> command will apply the <span
1261 class="cmtt-12">order()</span> method to each
1262 of the subgroups in the list <span
1263 class="cmtt-12">subgroups</span>. The output is thus a large list of the orders
1264 of many subgroups (296 to be precise). if you count carefully, you will see that
1265 259<!--l. 578--><span class="math"
1266 >{}^{th}</span>
1267 subgroup has order 128. You can retrieve this group for further study by referencing it as <span
1268 class="cmtt-12">subgroups[258]</span>
1269 (remember that counting starts at zero).
1270 </p><!--l. 580--><p class="indent" > If <!--l. 580--><span class="math"
1271 >{p}^{r}</span> is the highest power
1272 of <!--l. 580--><span class="math"
1273 >p</span> to divide the order of
1274 <!--l. 580--><span class="math"
1275 >G</span>, then a subgroup of order
1276 <!--l. 580--><span class="math"
1277 >{p}^{r}</span> is known as a Sylow
1278 <!--l. 580--><span class="math"
1279 >p</span>-subgroup. Sylows Theorems
1280 also say any two Sylow <!--l. 580--><span class="math"
1281 >p</span>-subgroups
1282 are conjugate, so the output of <span
1283 class="cmtt-12">conjugacy</span><span
1284 class="cmtt-12">_classes</span><span
1285 class="cmtt-12">_subgroups()</span> should only contain each Sylow
1286 <!--l. 580--><span class="math"
1287 >p</span>-subgroup once.
1288 But there is an easier way, <span
1289 class="cmtt-12">sylow</span><span
1290 class="cmtt-12">_subgroup(p)</span> will return one. Notice that the argument of the command is just
1291 the prime <!--l. 580--><span class="math"
1292 >p</span>, not
1293 the full power <!--l. 580--><span class="math"
1294 >{p}^{r}</span>.
1295 Failure to use a prime will generate an informative error message.
1296
1297 </p>
1298 <h3 class="likesectionHead"><a
1299 id="x1-40000"></a>Groups of Small Order as Permutation Groups</h3>
1300 <!--l. 586--><p class="noindent" >We list here constructions, as permutation groups, for all of the groups of order less than
1301 <!--l. 586--><span class="math"
1302 >16</span>.<br
1303 class="newline" /><!--tex4ht:inline--></p><div class="tabular"> <table id="TBL-1" class="tabular"
1304 cellspacing="0" cellpadding="0" rules="groups"
1305 ><colgroup id="TBL-1-1g"><col
1306 id="TBL-1-1" /></colgroup><colgroup id="TBL-1-2g"><col
1307 id="TBL-1-2" /></colgroup><colgroup id="TBL-1-3g"><col
1308 id="TBL-1-3" /></colgroup><tr
1309 style="vertical-align:baseline;" id="TBL-1-1-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-1-1"
1310 class="td11">Size</td><td style="text-align:left;" id="TBL-1-1-2"
1311 class="td11"><!--l. 589--><p class="noindent" >Construction </p></td><td style="text-align:left;" id="TBL-1-1-3"
1312 class="td11"><!--l. 589--><p class="noindent" >Notes </p></td></tr><tr
1313 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1314 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1315 style="vertical-align:baseline;" id="TBL-1-2-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-2-1"
1316 class="td11">1 </td><td style="text-align:left;" id="TBL-1-2-2"
1317 class="td11"><!--l. 590--><p class="noindent" ><span
1318 class="cmtt-12">SymmetricGroup(1)</span> </p> </td><td style="text-align:left;" id="TBL-1-2-3"
1319 class="td11"><!--l. 590--><p class="noindent" >Trivial</p></td>
1320 </tr><tr
1321 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1322 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1323 style="vertical-align:baseline;" id="TBL-1-3-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-3-1"
1324 class="td11">2 </td><td style="text-align:left;" id="TBL-1-3-2"
1325 class="td11"><!--l. 591--><p class="noindent" ><span
1326 class="cmtt-12">SymmetricGroup(2)</span> </p></td><td style="text-align:left;" id="TBL-1-3-3"
1327 class="td11"><!--l. 591--><p class="noindent" >Also <span
1328 class="cmtt-12">CyclicPermutationGroup(2)</span> </p></td>
1329 </tr><tr
1330 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1331 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1332 style="vertical-align:baseline;" id="TBL-1-4-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-4-1"
1333 class="td11">3 </td><td style="text-align:left;" id="TBL-1-4-2"
1334 class="td11"><!--l. 592--><p class="noindent" ><span
1335 class="cmtt-12">CyclicPermutationGroup(3)</span> </p></td><td style="text-align:left;" id="TBL-1-4-3"
1336 class="td11"><!--l. 592--><p class="noindent" >Prime order </p></td>
1337 </tr><tr
1338 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1339 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1340 style="vertical-align:baseline;" id="TBL-1-5-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-5-1"
1341 class="td11">4 </td><td style="text-align:left;" id="TBL-1-5-2"
1342 class="td11"><!--l. 593--><p class="noindent" ><span
1343 class="cmtt-12">CyclicPermutationGroup(4)</span> </p></td><td style="text-align:left;" id="TBL-1-5-3"
1344 class="td11"><!--l. 593--><p class="noindent" >Cyclic </p></td>
1345 </tr><tr
1346 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1347 style="vertical-align:baseline;" id="TBL-1-6-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-6-1"
1348 class="td11">4 </td><td style="text-align:left;" id="TBL-1-6-2"
1349 class="td11"><!--l. 594--><p class="noindent" ><span
1350 class="cmtt-12">KleinFourGroup()</span> </p></td><td style="text-align:left;" id="TBL-1-6-3"
1351 class="td11"><!--l. 594--><p class="noindent" >Abelian, non-cyclic </p></td>
1352 </tr><tr
1353 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1354 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1355 style="vertical-align:baseline;" id="TBL-1-7-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-7-1"
1356 class="td11">5 </td><td style="text-align:left;" id="TBL-1-7-2"
1357 class="td11"><!--l. 595--><p class="noindent" ><span
1358 class="cmtt-12">CyclicPermutationGroup(5)</span> </p></td><td style="text-align:left;" id="TBL-1-7-3"
1359 class="td11"><!--l. 595--><p class="noindent" >Prime order </p></td>
1360 </tr><tr
1361 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1362 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1363 style="vertical-align:baseline;" id="TBL-1-8-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-8-1"
1364 class="td11">6 </td><td style="text-align:left;" id="TBL-1-8-2"
1365 class="td11"><!--l. 596--><p class="noindent" ><span
1366 class="cmtt-12">CyclicPermutationGroup(6)</span> </p></td><td style="text-align:left;" id="TBL-1-8-3"
1367 class="td11"><!--l. 596--><p class="noindent" >Cyclic </p></td>
1368 </tr><tr
1369 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1370 style="vertical-align:baseline;" id="TBL-1-9-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-9-1"
1371 class="td11">6 </td><td style="text-align:left;" id="TBL-1-9-2"
1372 class="td11"><!--l. 597--><p class="noindent" ><span
1373 class="cmtt-12">SymmetricGroup(3)</span> </p></td><td style="text-align:left;" id="TBL-1-9-3"
1374 class="td11"><!--l. 597--><p class="noindent" >Non-abelian, also <span
1375 class="cmtt-12">DihedralGroup(3)</span> </p></td>
1376 </tr><tr
1377 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1378 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1379 style="vertical-align:baseline;" id="TBL-1-10-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-10-1"
1380 class="td11">7 </td><td style="text-align:left;" id="TBL-1-10-2"
1381 class="td11"><!--l. 598--><p class="noindent" ><span
1382 class="cmtt-12">CyclicPermutationGroup(7)</span> </p></td><td style="text-align:left;" id="TBL-1-10-3"
1383 class="td11"><!--l. 598--><p class="noindent" >Prime order </p></td>
1384 </tr><tr
1385 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1386 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1387 style="vertical-align:baseline;" id="TBL-1-11-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-11-1"
1388 class="td11">8 </td><td style="text-align:left;" id="TBL-1-11-2"
1389 class="td11"><!--l. 599--><p class="noindent" ><span
1390 class="cmtt-12">CyclicPermutationGroup(8)</span> </p></td><td style="text-align:left;" id="TBL-1-11-3"
1391 class="td11"><!--l. 599--><p class="noindent" >Cyclic </p></td>
1392 </tr><tr
1393 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1394 style="vertical-align:baseline;" id="TBL-1-12-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-12-1"
1395 class="td11">8 </td><td style="text-align:left;" id="TBL-1-12-2"
1396 class="td11"><!--l. 600--><p class="noindent" ><span
1397 class="cmtt-12">D1=CyclicPermutationGroup(4)</span><br
1398 class="newline" /><span
1399 class="cmtt-12">D2=CyclicPermutationGroup(2)</span><br
1400 class="newline" /><span
1401 class="cmtt-12">G=direct</span><span
1402 class="cmtt-12">_product</span><span
1403 class="cmtt-12">_permgroups([D1,D2])</span> </p></td><td style="text-align:left;" id="TBL-1-12-3"
1404 class="td11"><!--l. 602--><p class="noindent" >Abelian, non-cyclic </p></td>
1405 </tr><tr
1406 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1407 style="vertical-align:baseline;" id="TBL-1-13-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-13-1"
1408 class="td11">8 </td><td style="text-align:left;" id="TBL-1-13-2"
1409 class="td11"><!--l. 603--><p class="noindent" ><span
1410 class="cmtt-12">D1=CyclicPermutationGroup(2)</span><br
1411 class="newline" /><span
1412 class="cmtt-12">D2=CyclicPermutationGroup(2)</span><br
1413 class="newline" /><span
1414 class="cmtt-12">D3=CyclicPermutationGroup(2)</span><br
1415 class="newline" /><span
1416 class="cmtt-12">G=direct</span><span
1417 class="cmtt-12">_product</span><span
1418 class="cmtt-12">_permgroups([D1,D2,D3])</span> </p></td><td style="text-align:left;" id="TBL-1-13-3"
1419 class="td11"><!--l. 606--><p class="noindent" >Abelian, non-cyclic </p></td>
1420 </tr><tr
1421 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1422 style="vertical-align:baseline;" id="TBL-1-14-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-14-1"
1423 class="td11">8 </td><td style="text-align:left;" id="TBL-1-14-2"
1424 class="td11"><!--l. 607--><p class="noindent" ><span
1425 class="cmtt-12">DihedralGroup(4)</span> </p></td><td style="text-align:left;" id="TBL-1-14-3"
1426 class="td11"><!--l. 607--><p class="noindent" >Non-abelian </p></td>
1427 </tr><tr
1428 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1429 style="vertical-align:baseline;" id="TBL-1-15-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-15-1"
1430 class="td11">8 </td><td style="text-align:left;" id="TBL-1-15-2"
1431 class="td11"><!--l. 608--><p class="noindent" ><span
1432 class="cmtt-12">PermutationGroup(["(1,2,5,6)(3,4,7,8)",</span><br
1433 class="newline" /><span
1434 class="cmtt-12"> "(1,3,5,7)(2,8,6,4)" ])</span> </p></td><td style="text-align:left;" id="TBL-1-15-3"
1435 class="td11"><!--l. 609--><p class="noindent" >Quaternions<br
1436 class="newline" />The two generators are
1437 <!--l. 609--><span class="math"
1438 >I</span>
1439 and
1440 <!--l. 609--><span class="math"
1441 >J</span></p></td>
1442 </tr><tr
1443 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1444 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1445 style="vertical-align:baseline;" id="TBL-1-16-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-16-1"
1446 class="td11">9 </td><td style="text-align:left;" id="TBL-1-16-2"
1447 class="td11"><!--l. 610--><p class="noindent" ><span
1448 class="cmtt-12">CyclicPermutationGroup(9)</span> </p></td><td style="text-align:left;" id="TBL-1-16-3"
1449 class="td11"><!--l. 610--><p class="noindent" >Cyclic </p></td>
1450 </tr><tr
1451 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1452 style="vertical-align:baseline;" id="TBL-1-17-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-17-1"
1453 class="td11">9 </td><td style="text-align:left;" id="TBL-1-17-2"
1454 class="td11"><!--l. 611--><p class="noindent" ><span
1455 class="cmtt-12">D1=CyclicPermutationGroup(3)</span><br
1456 class="newline" /><span
1457 class="cmtt-12">D2=CyclicPermutationGroup(3)</span><br
1458 class="newline" /><span
1459 class="cmtt-12">G=direct</span><span
1460 class="cmtt-12">_product</span><span
1461 class="cmtt-12">_permgroups([D1,D2])</span> </p></td><td style="text-align:left;" id="TBL-1-17-3"
1462 class="td11"><!--l. 613--><p class="noindent" >Abelian, non-cyclic </p></td>
1463 </tr><tr
1464 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1465 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1466 style="vertical-align:baseline;" id="TBL-1-18-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-18-1"
1467 class="td11">10 </td><td style="text-align:left;" id="TBL-1-18-2"
1468 class="td11"><!--l. 614--><p class="noindent" ><span
1469 class="cmtt-12">CyclicPermutationGroup(10)</span> </p></td><td style="text-align:left;" id="TBL-1-18-3"
1470 class="td11"><!--l. 614--><p class="noindent" >Cyclic </p></td>
1471 </tr><tr
1472 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1473 style="vertical-align:baseline;" id="TBL-1-19-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-19-1"
1474 class="td11">10 </td><td style="text-align:left;" id="TBL-1-19-2"
1475 class="td11"><!--l. 615--><p class="noindent" ><span
1476 class="cmtt-12">DihedralGroup(5)</span> </p></td><td style="text-align:left;" id="TBL-1-19-3"
1477 class="td11"><!--l. 615--><p class="noindent" >Non-abelian </p></td>
1478 </tr><tr
1479 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1480 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1481 style="vertical-align:baseline;" id="TBL-1-20-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-20-1"
1482 class="td11">11 </td><td style="text-align:left;" id="TBL-1-20-2"
1483 class="td11"><!--l. 616--><p class="noindent" ><span
1484 class="cmtt-12">CyclicPermutationGroup(11)</span> </p></td><td style="text-align:left;" id="TBL-1-20-3"
1485 class="td11"><!--l. 616--><p class="noindent" >Prime order </p></td>
1486 </tr><tr
1487 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1488 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1489 style="vertical-align:baseline;" id="TBL-1-21-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-21-1"
1490 class="td11">12 </td><td style="text-align:left;" id="TBL-1-21-2"
1491 class="td11"><!--l. 617--><p class="noindent" ><span
1492 class="cmtt-12">CyclicPermutationGroup(12)</span> </p></td><td style="text-align:left;" id="TBL-1-21-3"
1493 class="td11"><!--l. 617--><p class="noindent" >Cyclic </p></td>
1494 </tr><tr
1495 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1496 style="vertical-align:baseline;" id="TBL-1-22-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-22-1"
1497 class="td11">12 </td><td style="text-align:left;" id="TBL-1-22-2"
1498 class="td11"><!--l. 618--><p class="noindent" ><span
1499 class="cmtt-12">D1=CyclicPermutationGroup(6)</span><br
1500 class="newline" /><span
1501 class="cmtt-12">D2=CyclicPermutationGroup(2)</span><br
1502 class="newline" /><span
1503 class="cmtt-12">G=direct</span><span
1504 class="cmtt-12">_product</span><span
1505 class="cmtt-12">_permgroups([D1,D2])</span> </p></td><td style="text-align:left;" id="TBL-1-22-3"
1506 class="td11"><!--l. 620--><p class="noindent" >Abelian, non-cyclic </p></td>
1507 </tr><tr
1508 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1509 style="vertical-align:baseline;" id="TBL-1-23-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-23-1"
1510 class="td11">12 </td><td style="text-align:left;" id="TBL-1-23-2"
1511 class="td11"><!--l. 621--><p class="noindent" ><span
1512 class="cmtt-12">DihedralGroup(6)</span> </p></td><td style="text-align:left;" id="TBL-1-23-3"
1513 class="td11"><!--l. 621--><p class="noindent" >Non-abelian </p></td>
1514 </tr><tr
1515 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1516 style="vertical-align:baseline;" id="TBL-1-24-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-24-1"
1517 class="td11">12 </td><td style="text-align:left;" id="TBL-1-24-2"
1518 class="td11"><!--l. 622--><p class="noindent" ><span
1519 class="cmtt-12">AlternatingGroup(4)</span> </p></td><td style="text-align:left;" id="TBL-1-24-3"
1520 class="td11"><!--l. 622--><p class="noindent" >Non-abelian, symmetries of tetrahedron</p></td>
1521 </tr><tr
1522 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1523 style="vertical-align:baseline;" id="TBL-1-25-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-25-1"
1524 class="td11">12 </td><td style="text-align:left;" id="TBL-1-25-2"
1525 class="td11"><!--l. 623--><p class="noindent" ><span
1526 class="cmtt-12">PermutationGroup(["(1,2,3)(4,6)(5,7)",</span><br
1527 class="newline" /><span
1528 class="cmtt-12"> "(1,2)(4,5,6,7)"])</span> </p></td><td style="text-align:left;" id="TBL-1-25-3"
1529 class="td11"><!--l. 624--><p class="noindent" >Non-abelian<br
1530 class="newline" />Semi-direct product
1531 <!--l. 624--><span class="math"
1532 >{Z}_{3} ⋊ {Z}_{4}</span></p></td>
1533 </tr><tr
1534 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1535 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1536 style="vertical-align:baseline;" id="TBL-1-26-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-26-1"
1537 class="td11">13 </td><td style="text-align:left;" id="TBL-1-26-2"
1538 class="td11"><!--l. 625--><p class="noindent" ><span
1539 class="cmtt-12">CyclicPermutationGroup(13)</span> </p></td><td style="text-align:left;" id="TBL-1-26-3"
1540 class="td11"><!--l. 625--><p class="noindent" >Prime order </p></td>
1541 </tr><tr
1542 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1543 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1544 style="vertical-align:baseline;" id="TBL-1-27-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-27-1"
1545 class="td11">14 </td><td style="text-align:left;" id="TBL-1-27-2"
1546 class="td11"><!--l. 626--><p class="noindent" ><span
1547 class="cmtt-12">CyclicPermutationGroup(14)</span> </p></td><td style="text-align:left;" id="TBL-1-27-3"
1548 class="td11"><!--l. 626--><p class="noindent" >Cyclic </p></td>
1549 </tr><tr
1550 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1551 style="vertical-align:baseline;" id="TBL-1-28-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-28-1"
1552 class="td11">14 </td><td style="text-align:left;" id="TBL-1-28-2"
1553 class="td11"><!--l. 627--><p class="noindent" ><span
1554 class="cmtt-12">DihedralGroup(7)</span> </p></td><td style="text-align:left;" id="TBL-1-28-3"
1555 class="td11"><!--l. 627--><p class="noindent" >Non-abelian </p></td>
1556 </tr><tr
1557 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1558 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1559 style="vertical-align:baseline;" id="TBL-1-29-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-29-1"
1560 class="td11">15 </td><td style="text-align:left;" id="TBL-1-29-2"
1561 class="td11"><!--l. 628--><p class="noindent" ><span
1562 class="cmtt-12">CyclicPermutationGroup(15)</span> </p></td><td style="text-align:left;" id="TBL-1-29-3"
1563 class="td11"><!--l. 628--><p class="noindent" >Cyclic </p></td>
1564 </tr><tr
1565 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1566 class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
1567 style="vertical-align:baseline;" id="TBL-1-30-"><td style="text-align:left; white-space:nowrap;" id="TBL-1-30-1"
1568 class="td11"> </td></tr></table></div>
1569 <h3 class="likesectionHead"><a
1570 id="x1-41000"></a>Acknowledgements</h3>
1571 <!--l. 634--><p class="noindent" >The construction of SAGE is the work of many people, and the group theory portion is made possible by
1572 the extensive work of the creators of GAP. However, we will single out three people from the SAGE team
1573 to thank for major contributions toward bringing you the group theory portion of SAGE: David Joyner,
1574 William Stein, and Robert Bradshaw. Thanks!
1575 </p>
1576
1577 {{{id=89|
1578
1579 ///
1580 }}}
Attached Files
To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.You are not allowed to attach a file to this page.