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 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655
|
<?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 (HAP commands) - Chapter 6: Group theoretic computations</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="chap6" 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="chapBib.html">Bib</a> <a href="chapInd.html">Ind</a> </div>
<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap5.html">[Previous Chapter]</a> <a href="chap7.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap6_mj.html">[MathJax on]</a></p>
<p><a id="X7C07F4BD8466991A" name="X7C07F4BD8466991A"></a></p>
<div class="ChapSects"><a href="chap6.html#X7C07F4BD8466991A">6 <span class="Heading">Group theoretic computations</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X86D7FBBD7E5287C9">6.1 <span class="Heading">Third homotopy group of a supsension of an Eilenberg-MacLane space </span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X803FDFFE78A08446">6.2 <span class="Heading">Representations of knot quandles</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X7E4EFB987DA22017">6.3 <span class="Heading">Identifying knots</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X8664E986873195E6">6.4 <span class="Heading">Aspherical <span class="SimpleMath">2</span>-complexes</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X84C0CB8B7C21E179">6.5 <span class="Heading">Group presentations and homotopical syzygies</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X7F719758856A443D">6.6 <span class="Heading">Bogomolov multiplier</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X8333413B838D787D">6.7 <span class="Heading">Second group cohomology and group extensions</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X7F04FA5E81FFA848">6.8 <span class="Heading">Cocyclic groups: a convenient way of representing certain groups</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X863080FE8270468D">6.9 <span class="Heading">Effective group presentations</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X7C60E2B578074532">6.10 <span class="Heading">Second group cohomology and cocyclic Hadamard matrices</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X78040D8580D35D53">6.11 <span class="Heading">Third group cohomology and homotopy <span class="SimpleMath">2</span>-types</span></a>
</span>
</div>
</div>
<h3>6 <span class="Heading">Group theoretic computations</span></h3>
<p><a id="X86D7FBBD7E5287C9" name="X86D7FBBD7E5287C9"></a></p>
<h4>6.1 <span class="Heading">Third homotopy group of a supsension of an Eilenberg-MacLane space </span></h4>
<p>The following example uses the nonabelian tensor square of groups to compute the third homotopy group</p>
<p><span class="SimpleMath">π_3(S(K(G,1))) = Z^30</span></p>
<p>of the suspension of the Eigenberg-MacLane space <span class="SimpleMath">K(G,1)</span> for <span class="SimpleMath">G</span> the free nilpotent group of class <span class="SimpleMath">2</span> on four generators.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">F:=FreeGroup(4);;G:=NilpotentQuotient(F,2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ThirdHomotopyGroupOfSuspensionB(G);</span>
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 ]
</pre></div>
<p><a id="X803FDFFE78A08446" name="X803FDFFE78A08446"></a></p>
<h4>6.2 <span class="Heading">Representations of knot quandles</span></h4>
<p>The following example constructs the finitely presented quandles associated to the granny knot and square knot, and then computes the number of quandle homomorphisms from these two finitely prresented quandles to the <span class="SimpleMath">17</span>-th quandle in <strong class="button">HAP</strong>'s library of connected quandles of order <span class="SimpleMath">24</span>. The number of homomorphisms differs between the two cases. The computation therefore establishes that the complement in <span class="SimpleMath">R^3</span> of the granny knot is not homeomorphic to the complement of the square knot.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Q:=ConnectedQuandle(24,17,"import");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=PureCubicalKnot(3,1);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">L:=ReflectedCubicalKnot(K);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">square:=KnotSum(K,L);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">granny:=KnotSum(K,K);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">gcsquare:=GaussCodeOfPureCubicalKnot(square);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">gcgranny:=GaussCodeOfPureCubicalKnot(granny);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Qsquare:=PresentationKnotQuandle(gcsquare);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Qgranny:=PresentationKnotQuandle(gcgranny);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">NumberOfHomomorphisms(Qsquare,Q);</span>
408
<span class="GAPprompt">gap></span> <span class="GAPinput">NumberOfHomomorphisms(Qgranny,Q);</span>
24
</pre></div>
<p>The following commands compute a knot quandle directly from a pdf file containing the following hand-drawn image of the knot.</p>
<p><img src="images/myknot.png" align="center" height="160" alt="hand-drawn image of the trefoil knot"/></p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput"> gc:=ReadLinkImageAsGaussCode("myknot.pdf");</span>
[ [ [ -2, 4, -1, 3, -3, 2, -4, 1 ] ], [ -1, -1, 1, -1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Q:=PresentationKnotQuandle(gc);</span>
Quandle presentation of 4 generators and 4 relators.
</pre></div>
<p><a id="X7E4EFB987DA22017" name="X7E4EFB987DA22017"></a></p>
<h4>6.3 <span class="Heading">Identifying knots</span></h4>
<p>Low index subgrops of the knot group can be used to identify knots with few crossings. For instance, the following commands read in the following image of a knot and identify it as a sum of two trefoils. The commands determine the prime components only up to reflection, and so they don't distinguish between the granny and square knots.</p>
<p><img src="images/myknot2.png" align="center" height="160" alt="hand-drawn image of a knot"/></p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gc:=ReadLinkImageAsGaussCode("myknot2.png");</span>
[ [ [ -4, 7, -5, 4, -7, 5, -3, 6, -2, 3, 8, -8, -6, 2, 1, -1 ] ],
[ 1, -1, -1, -1, -1, -1, -1, 1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">IdentifyKnot(gc);;</span>
PrimeKnot(3,1) + PrimeKnot(3,1) modulo reflections of components.
</pre></div>
<p><a id="X8664E986873195E6" name="X8664E986873195E6"></a></p>
<h4>6.4 <span class="Heading">Aspherical <span class="SimpleMath">2</span>-complexes</span></h4>
<p>The following example uses Polymake's linear programming routines to establish that the <span class="SimpleMath">2</span>-complex associated to the group presentation <span class="SimpleMath"><x,y,z : xyx=yxy, yzy=zyz, xzx=zxz></span> is aspherical (that is, has contractible universal cover). The presentation is Tietze equivalent to the presentation used in the computer code, and the associated <span class="SimpleMath">2</span>-complexes are thus homotopy equivalent.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">F:=FreeGroup(6);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=F.1;;y:=F.2;;z:=F.3;;a:=F.4;;b:=F.5;;c:=F.6;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">rels:=[a^-1*x*y, b^-1*y*z, c^-1*z*x, a*x*(y*a)^-1,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> b*y*(z*b)^-1, c*z*(x*c)^-1];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Print(IsAspherical(F,rels),"\n");</span>
Presentation is aspherical.
true
</pre></div>
<p><a id="X84C0CB8B7C21E179" name="X84C0CB8B7C21E179"></a></p>
<h4>6.5 <span class="Heading">Group presentations and homotopical syzygies</span></h4>
<p>Free resolutons for a group <span class="SimpleMath">G</span> are constructed in <strong class="button">HAP</strong> as the cellular chain complex <span class="SimpleMath">R_∗=C_∗(tilde X)</span> of the universal cover of some CW-complex <span class="SimpleMath">X=K(G,1)</span>. The <span class="SimpleMath">2</span>-skeleton of <span class="SimpleMath">X</span> gives rise to a free presentation for the group <span class="SimpleMath">G</span>. This presentation depends on a choice of maximal tree in the <span class="SimpleMath">1</span>-skeleton of <span class="SimpleMath">X</span> in cases where <span class="SimpleMath">X</span> has more than one <span class="SimpleMath">0</span>-cell. The attaching maps of <span class="SimpleMath">3</span>-cells in <span class="SimpleMath">X</span> can be regarded as <em>homotopical syzygies</em> or van Kampen diagrams over the group presentation whose boundaries spell the trivial word.</p>
<p>The following example constructs four terms of a resolution for the free abelian group <span class="SimpleMath">G</span> on <span class="SimpleMath">n=3</span> generators, and then extracts the group presentation from the resolution as well as the unique homotopical syzygy. The syzygy is visualized in terms of its graph of edges, directed edges being coloured according to the corresponding group generator. (In this example the CW-complex <span class="SimpleMath">tilde X</span> is regular, but in cases where it is not the visualization may be a quotient of the <span class="SimpleMath">1</span>-skeleton of the syzygy.)</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">n:=3;;c:=1;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=Image(NqEpimorphismNilpotentQuotient(FreeGroup(n),c));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=ResolutionNilpotentGroup(G,4);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">P:=PresentationOfResolution(R);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">P.freeGroup;</span>
<free group on the generators [ x, y, z ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">P.relators;</span>
[ y^-1*x^-1*y*x, z^-1*x^-1*z*x, z^-1*y^-1*z*y ]
<span class="GAPprompt">gap></span> <span class="GAPinput">IdentityAmongRelatorsDisplay(R,1);</span>
</pre></div>
<p><img src="images/syzfab.gif" align="center" height="160" alt="Homotopical syzygy for the free abelian group on three generators"/></p>
<p>This homotopical syzygy represents a relationship between the three relators <span class="SimpleMath">[x,y]</span>, <span class="SimpleMath">[x,z]</span> and <span class="SimpleMath">[y,z]</span> where <span class="SimpleMath">[x,y]=xyx^-1y^-1</span>. The syzygy can be thought of as a geometric relationship between commutators corresponding to the well-known Hall-Witt identity:</p>
<p><span class="SimpleMath">[ [x,y], ^yz ] [ [y,z], ^zx ] [ [z,x], ^xy ] = 1 .</span></p>
<p>The homotopical syzygy is special since in this example the edge directions and labels can be understood as specifying three homeomorphisms between pairs of faces. Viewing the syzygy as the boundary of the <span class="SimpleMath">3</span>-ball, by using the homeomorphisms to identify the faces in each face pair we obtain a quotient CW-complex <span class="SimpleMath">M</span> involving one vertex, three edges, three <span class="SimpleMath">2</span>-cells and one <span class="SimpleMath">3</span>-cell. The cell structure on the quotient exists because, under the restrictions of homomorphisms to the edges, any cycle of edges retricts to the identity map on any given edge. The following result tells us that <span class="SimpleMath">M</span> is in fact a closed oriented compact <span class="SimpleMath">3</span>-manifold.</p>
<p><strong class="button">Theorem.</strong> [Seifert u. Threlfall, Topologie, p.208] <em>Let <span class="SimpleMath">S^2</span> denote the boundary of the <span class="SimpleMath">3</span>-ball <span class="SimpleMath">B^3</span> and suppose that the sphere <span class="SimpleMath">S^2</span> is given a regular CW-structure in which the faces are partitioned into a collection of face pairs. Suppose that for each face pair there is an orientation reversing homeomorphism between the two faces that sends edges to edges and vertices to vertices. Suppose that by using these homeomorphisms to identity face pairs we obtain a (not necessarily regular) CW-structure on the quotient <span class="SimpleMath">M</span>. Then <span class="SimpleMath">M</span> is a closed compact orientable manifold if and only if its Euler characteristic is <span class="SimpleMath">χ(M)=0</span>.</em></p>
<p>The next commands construct a presentation and associated unique homotopical syzygy for the free nilpotent group of class <span class="SimpleMath">c=2</span> on <span class="SimpleMath">n=2</span> generators.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">n:=2;;c:=2;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=Image(NqEpimorphismNilpotentQuotient(FreeGroup(n),c));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=ResolutionNilpotentGroup(G,4);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">P:=PresentationOfResolution(R);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">P.freeGroup;</span>
<free group on the generators [ x, y, z ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">P.relators;</span>
[ z*x*y*x^-1*y^-1, z*x*z^-1*x^-1, z*y*z^-1*y^-1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">IdentityAmongRelatorsDisplay(R,1);</span>
</pre></div>
<p><img src="images/syznil.gif" align="center" height="160" alt="Homotopical syzygy for the free nilpotent group of class two on two generators"/></p>
<p>The syzygy represents the following relationship between commutators (in a free group).</p>
<p><span class="SimpleMath">[ [x^-1,y][x,y] , [y,x][y^-1,x]y^-1 ] [ [y,x][y^-1,x] , x^-1 ] = 1</span></p>
<p>Again, using the theorem of Seifert and Threlfall we see that the free nilpotent group of class two on two generators arises as the fundamental group of a closed compact orientable <span class="SimpleMath">3</span>-manifold <span class="SimpleMath">M</span>.</p>
<p><a id="X7F719758856A443D" name="X7F719758856A443D"></a></p>
<h4>6.6 <span class="Heading">Bogomolov multiplier</span></h4>
<p>The Bogomolov multiplier of a group is an isoclinism invariant. Using this property, the following example shows that there are precisely three groups of order <span class="SimpleMath">243</span> with non-trivial Bogomolov multiplier. The groups in question are numbered 28, 29 and 30 in <strong class="button">GAP</strong>'s library of small groups of order <span class="SimpleMath">243</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">L:=AllSmallGroups(3^5);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C:=IsoclinismClasses(L);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">for c in C do</span>
<span class="GAPprompt">></span> <span class="GAPinput">if Length(BogomolovMultiplier(c[1]))>0 then</span>
<span class="GAPprompt">></span> <span class="GAPinput">Print(List(c,g->IdGroup(g)),"\n\n\n"); fi;</span>
<span class="GAPprompt">></span> <span class="GAPinput">od;</span>
[ [ 243, 28 ], [ 243, 29 ], [ 243, 30 ] ]
</pre></div>
<p><a id="X8333413B838D787D" name="X8333413B838D787D"></a></p>
<h4>6.7 <span class="Heading">Second group cohomology and group extensions</span></h4>
<p>Any group extension <span class="SimpleMath">N↣ E ↠ G</span> gives rise to:</p>
<ul>
<li><p>an outer action <span class="SimpleMath">α: G→ Out(N)</span> of <span class="SimpleMath">G</span> on <span class="SimpleMath">N</span>.</p>
</li>
<li><p>an action <span class="SimpleMath">G→ Aut(Z(N))</span> of <span class="SimpleMath">G</span> on the centre of <span class="SimpleMath">N</span>, uniquely induced by the outer action <span class="SimpleMath">α</span> and the canonical action of <span class="SimpleMath">Out(N)</span> on <span class="SimpleMath">Z(N)</span>.</p>
</li>
<li><p>a "<span class="SimpleMath">2</span>-cocycle" <span class="SimpleMath">f: G× G→ N</span>.</p>
</li>
</ul>
<p>Any outer homomorphism <span class="SimpleMath">α: G→ Out(N)</span> gives rise to a cohomology class <span class="SimpleMath">k</span> in <span class="SimpleMath">H^3(G,Z(N))</span>. It was shown by Eilenberg and Mac<span class="SimpleMath"></span>Lane that the class <span class="SimpleMath">k</span> is trivial if and only if the outer action <span class="SimpleMath">α</span> arises from some group extension <span class="SimpleMath">N↣ E↠ G</span>. If <span class="SimpleMath">k</span> is trivial then there is a (non-canonical) bijection between the second cohomology group <span class="SimpleMath">H^2(G,Z(N))</span> and Yoneda equivalence classes of extensions of <span class="SimpleMath">G</span> by <span class="SimpleMath">N</span> that are compatible with <span class="SimpleMath">α</span>.</p>
<p><strong class="button">First Example.</strong></p>
<p>Consider the group <span class="SimpleMath">H=SmallGroup(64,134)</span>. Consider the normal subgroup <span class="SimpleMath">N=NormalSubgroups(G)[15]</span> and quotient group <span class="SimpleMath">G=H/N</span>. We have <span class="SimpleMath">N=C_2× D_4</span>, <span class="SimpleMath">A=Z(N)=C_2× C_2</span> and <span class="SimpleMath">G=C_2× C_2</span>.</p>
<p>Suppose we wish to classify all extensions <span class="SimpleMath">C_2× D_4 ↣ E ↠ C_2× C_2</span> that induce the given outer action of <span class="SimpleMath">G</span> on <span class="SimpleMath">N</span>. The following commands show that, up to Yoneda equivalence, there are two such extensions.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">H:=SmallGroup(64,134);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">N:=NormalSubgroups(H)[15];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:=Centre(GOuterGroup(H,N));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=ActingGroup(A);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=ResolutionFiniteGroup(G,3);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C:=HomToGModule(R,A);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Cohomology(C,2);</span>
[ 2 ]
</pre></div>
<p>The following additional commands return a standard <span class="SimpleMath">2</span>-cocycle <span class="SimpleMath">f:G× G→ A =C_2× C_2</span> corresponding to the non-trivial element in <span class="SimpleMath">H^2(G,A)</span>. The value <span class="SimpleMath">f(g,h)</span> of the <span class="SimpleMath">2</span>-cocycle is calculated for all <span class="SimpleMath">16</span> pairs <span class="SimpleMath">g,h ∈ G</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">CH:=CohomologyModule(C,2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Elts:=Elements(ActedGroup(CH));</span>
[ <identity> of ..., f1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Elts[2];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c:=CH!.representativeCocycle(x);</span>
Standard 2-cocycle
<span class="GAPprompt">gap></span> <span class="GAPinput">f:=Mapping(c);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">for g in G do for h in G do</span>
<span class="GAPprompt">></span> <span class="GAPinput">Print(f(g,h),"\n");</span>
<span class="GAPprompt">></span> <span class="GAPinput">od;</span>
<span class="GAPprompt">></span> <span class="GAPinput">od;</span>
<identity> of ...
<identity> of ...
<identity> of ...
<identity> of ...
<identity> of ...
f6
<identity> of ...
f6
<identity> of ...
<identity> of ...
<identity> of ...
<identity> of ...
<identity> of ...
f6
<identity> of ...
f6
</pre></div>
<p>The following commands will then construct and identify all extensions of <span class="SimpleMath">N</span> by <span class="SimpleMath">G</span> corresponding to the given outer action of <span class="SimpleMath">G</span> on <span class="SimpleMath">N</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">H := SmallGroup(64,134);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">N := NormalSubgroups(H)[15];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ON := GOuterGroup(H,N);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">A := Centre(ON);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=ActingGroup(A);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=ResolutionFiniteGroup(G,3);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C:=HomToGModule(R,A);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CH:=CohomologyModule(C,2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Elts:=Elements(ActedGroup(CH));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">lst := List(Elts{[1..Length(Elts)]},x->CH!.representativeCocycle(x));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ccgrps := List(lst, x->CcGroup(ON, x));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">#So ccgrps is a list of groups, each being an extension of G by N, corresponding</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">#to the two elements in H^2(G,A).</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">#The following command produces the GAP identification number for each group.</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">L:=List(ccgrps,IdGroup);</span>
[ [ 64, 134 ], [ 64, 135 ] ]
</pre></div>
<p><strong class="button">Second Example</strong></p>
<p>The following example illustrates how to construct a cohomology class <span class="SimpleMath">k</span> in <span class="SimpleMath">H^2(G, A)</span> from a cocycle <span class="SimpleMath">f:G × G → A</span>, where <span class="SimpleMath">G=SL_2( Z_4)</span> and <span class="SimpleMath">A= Z_8</span> with trivial action.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">#We'll construct G=SL(2,Z_4) as a permutation group.</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=SL(2,ZmodnZ(4));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=Image(IsomorphismPermGroup(G));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">#We'll construct Z_8=Z/8Z as a G-outer group</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">z_8:=Group((1,2,3,4,5,6,7,8));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Z_8:=TrivialGModuleAsGOuterGroup(G,z_8);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">#We'll compute the group h=H^2(G,Z_8)</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=ResolutionFiniteGroup(G,3);; #R is a free resolution</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C:=HomToGModule(R,Z_8);; # C is a chain complex</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">H:=CohomologyModule(C,2);; #H is the second cohomology H^2(G,Z_8)</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">h:=ActedGroup(H);; #h is the underlying group of H</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">#We'll compute cocycles c2, c5 for the second and fifth cohomology classs</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c2:=H!.representativeCocycle(Elements(h)[2]);</span>
Standard 2-cocycle
<span class="GAPprompt">gap></span> <span class="GAPinput">c5:=H!.representativeCocycle(Elements(h)[5]);</span>
Standard 2-cocycle
<span class="GAPprompt">gap></span> <span class="GAPinput">#Now we'll construct the cohomology classes C2, C5 in the group h corresponding to the cocycles c2, c5.</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C2:=CohomologyClass(H,c2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C5:=CohomologyClass(H,c5);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">#Finally, we'll show that C2, C5 are distinct cohomology classes, both of order 4.</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C2=C5;</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(C2);</span>
4
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(C5);</span>
4
</pre></div>
<p><a id="X7F04FA5E81FFA848" name="X7F04FA5E81FFA848"></a></p>
<h4>6.8 <span class="Heading">Cocyclic groups: a convenient way of representing certain groups</span></h4>
<p><strong class="button">GAP</strong> offers a number of data types for representing groups, including those of fp-groups (<em>finitely presented groups</em>), pc-groups (<em>power-conjugate presentated groups</em> for finite polycyclic groups), pcp-groups (<em>polycyclically presented groups</em> for finite and infinite polycyclic groups), permutation groups (for finite groups), and matrix groups over a field or ring. Each data type has its advantages and limitations.</p>
<p>Based on the definitions and examples in Section <a href="chap6.html#X8333413B838D787D"><span class="RefLink">6.7</span></a> the additional data type of a cc-group (<em>cocyclic group</em>) is provided in <strong class="button">HAP</strong>. This can be used for a group <span class="SimpleMath">E</span> arising as a group extension <span class="SimpleMath">N↣ E ↠ G</span> and is a component object involving:</p>
<ul>
<li><p><code class="code">E!.Base</code> consisting of some representation of a group <span class="SimpleMath">G</span>.</p>
</li>
<li><p><code class="code">E!.Fibre</code> consisting of some representation of a group <span class="SimpleMath">N</span>.</p>
</li>
<li><p><code class="code">E!.OuterGroup</code> consisting of an outer action <span class="SimpleMath">α: G→ Out(N)</span> of <span class="SimpleMath">G</span> on <span class="SimpleMath">N</span>.</p>
</li>
<li><p><code class="code">E!.Cocycle</code> consisting of a "<span class="SimpleMath">2</span>-cocycle" <span class="SimpleMath">f: G× G→ N</span>.</p>
</li>
</ul>
<p>The first example in Section <a href="chap6.html#X8333413B838D787D"><span class="RefLink">6.7</span></a> illustrates the construction of cc-groups for which both the base <span class="SimpleMath">G</span> and fibre <span class="SimpleMath">N</span> are finite pc-groups. That example extends to any scenario in which the base <span class="SimpleMath">G</span> is a group for which:</p>
<ol>
<li><p>we can construct the first 3 degrees of a free <span class="SimpleMath">ZG</span>-resolution <span class="SimpleMath">C_∗ X</span>.</p>
</li>
<li><p>we can construct the first 2 terms of a contracting homotopy <span class="SimpleMath">h_i: C_nX→ C_n+1X</span> for <span class="SimpleMath">i=0,1</span>.</p>
</li>
<li><p><span class="SimpleMath">N</span> is a group in which we can multiply elements effectively and for which we can determine the centre <span class="SimpleMath">Z(N)</span> and outer automorphism group <span class="SimpleMath">Out(N)</span>.</p>
</li>
</ol>
<p>As an illustration where the base group is a non-solvable finite group and the fibre is the infinite cyclic group, with base group acting trivially on the fibre, the following commands list up to Yoneda equivalence all central extensions <span class="SimpleMath">Z ↣ E ↠ G</span> for <span class="SimpleMath">G=A_5:C_16</span>. The base group is a non-solvable semi-direct product of order <span class="SimpleMath">960</span> and thus none of the <span class="SimpleMath">16</span> extensions are polycyclic. The commands classify the extensions according to their integral homology in degrees <span class="SimpleMath">≤ 2</span>, showing that there are precisely 5 such equivalence classes of extensions. Thus, there are at least 5 distinct isomorphism types among the <span class="SimpleMath">16</span> extensions. A presentation is constructed for the group corresponding to the sixteenth extension. The final command lists the orders of the 16 cohomology group elements corresponding to the 16 extensions. The 16th element has order 1, meaning that the sixteenth extension is the direct product <span class="SimpleMath">C_∞ × A_5:C_16</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=SmallGroup(960,637);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">StructureDescription(G);</span>
"A5 : C16"
<span class="GAPprompt">gap></span> <span class="GAPinput">N:=AbelianPcpGroup([0]);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">N:=TrivialGModuleAsGOuterGroup(G,N);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=ResolutionFiniteGroup(G,3);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C:=HomToGModule(R,N);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CH:=CohomologyModule(C,2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Elts:=Elements(ActedGroup(CH));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">lst := List(Elts{[1..Length(Elts)]},x->CH!.representativeCocycle(x));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ccgrps := List(lst, x->CcGroup(N, x));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">inv:=function(gg)</span>
<span class="GAPprompt">></span> <span class="GAPinput">local T;</span>
<span class="GAPprompt">></span> <span class="GAPinput">T:=ResolutionInfiniteCcGroup(gg,3);</span>
<span class="GAPprompt">></span> <span class="GAPinput">return List([1..2],i->Homology(TensorWithIntegers(T),i));</span>
<span class="GAPprompt">></span> <span class="GAPinput">end;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">EquivClasses:=Classify(ccgrps,inv);</span>
[ <Cc-group of Size infinity>, <Cc-group of Size infinity>,
<Cc-group of Size infinity>, <Cc-group of Size infinity>,
<Cc-group of Size infinity>, <Cc-group of Size infinity>,
<Cc-group of Size infinity>, <Cc-group of Size infinity> ],
[ <Cc-group of Size infinity>, <Cc-group of Size infinity>,
<Cc-group of Size infinity>, <Cc-group of Size infinity> ],
[ <Cc-group of Size infinity>, <Cc-group of Size infinity> ],
[ <Cc-group of Size infinity> ], [ <Cc-group of Size infinity> ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(EquivClasses,Size);</span>
[ 8, 4, 2, 1, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">F16:=Image(IsomorphismFpGroup(ccgrps[16]));</span>
<fp group on the generators [ x, y, z, w, v ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">RelatorsOfFpGroup(F16);</span>
[ (x^2*y*z*w*z*y)^3*x^2*(y*x*w*y^2*z*x*y*z*y)^3*y*x*w*y^2*z*x*y^2*z*w*y^2*z*y,
x*y^-2*w^-1*z^-1*y^-1*x^-1*y, x*z^-1*y^-1*z^-1*w^-1*z^-1*y^-1*x^-1*z,
x*y^-2*z^-1*w^-1*z^-1*y^-1*x^-1*w, z^-2, w^-2, y^-3, w*y^-1*w^-1*y^-1,
w*z*w^-1*z^-1*w^-1*z, z*y^2*(z^-1*y^-1)^2, v^-1*x^-1*v*x, v*y*v^-1*y^-1,
v*z*v^-1*z^-1, v*w*v^-1*w^-1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(Elts,Order);</span>
[ 16, 16, 16, 16, 16, 16, 16, 16, 8, 8, 8, 8, 4, 4, 2, 1 ]
</pre></div>
<p><a id="X863080FE8270468D" name="X863080FE8270468D"></a></p>
<h4>6.9 <span class="Heading">Effective group presentations</span></h4>
<p>For any free <span class="SimpleMath">ZG</span>-resolution <span class="SimpleMath">R_∗=C_∗ X</span> arising as the cellular chain complex of a contractible CW-complex, the terms in degrees <span class="SimpleMath">≤ 2</span> correspond to a free presentation for the group <span class="SimpleMath">G</span>. The following example accesses this presentation for the group <span class="SimpleMath">PGL_3( Z[sqrt-1])</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=ContractibleGcomplex("PGL(3,Z[i])");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=FreeGResolution(K,2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">P:=PresentationOfResolution(R);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=P.freeGroup/P.relators;</span>
<fp group on the generators [ v, w, x, y, z ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">P.relators;</span>
[ v^2, w^-1*v*w*v^-1, w^-1*v^-1*w^-1, (x^-1*w)^3, (y^-1*w)^3, (z^-1*w)^4,
y^-1*v^-1*z*y^-1*x, y^-1*v*x*v^-1*x*v, v^-1*z*v^-1*x*y, v^-1*x*v*y*v*x*v*y,
x^3, x*z*y, y^-1*v^-1*y^2*v*y^-1, (v*y)^4, z^-1*y*v*z^-1, (v*y*z)^2,
v^-1*(z*v)^2*z ]
</pre></div>
<p>The homomorphism <span class="SimpleMath">h_0: R_0 → R_1</span> of a contracting homotopy provides a unique expression for each element of <span class="SimpleMath">G</span> as a word in the free generators. To illustrate this, we consider the Sylow <span class="SimpleMath">2</span>-subgroup <span class="SimpleMath">H=Syl_2(M_24)</span> of the Mathieu group <span class="SimpleMath">M_24</span>. We obtain a resolution <span class="SimpleMath">R_∗</span> for <span class="SimpleMath">H</span> by recursively applying perturbation techniques to a composition series for <span class="SimpleMath">H</span>. Such a resolution will yield a "kind of" power-conjugate presentation for <span class="SimpleMath">H</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">H:=SylowSubgroup(MathieuGroup(24),2);</span>
<permutation group of size 1024 with 10 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(H);</span>
1024
<span class="GAPprompt">gap></span> <span class="GAPinput">C:=CompositionSeries(H);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=ResolutionSubnormalSeries(C,2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">P:=PresentationOfResolution(R);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">P.freeGroup/P.relators;</span>
<fp group on the generators [ q, r, s, t, u, v, w, x, y, z ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">P.relators;</span>
[ q^-2*z*y*x*w*v, q*r^-1*q^-1*y*u*r, s*q*s^-1*q^-1, t*q*t^-1*q^-1,
q*u^-1*q^-1*y*v*u, y*q*v^-1*q^-1, q*w^-1*q^-1*z*x, w*q*x^-1*q^-1,
q*y^-1*q^-1*z*v, z*q*z^-1*q^-1, r^-2, t*r*s^-1*r^-1, s*r*t^-1*r^-1,
u*r*u^-1*r^-1, v*r*v^-1*r^-1, r*w^-1*r^-1*y*w*u, r*x^-1*r^-1*y*x*u,
y*r*y^-1*r^-1, z*r*z^-1*r^-1, s^-2, t*s*t^-1*s^-1, x*s*u^-1*s^-1,
s*v^-1*s^-1*z*y*w*u, s*w^-1*s^-1*y*v*u, u*s*x^-1*s^-1, s*y^-1*s^-1*y*x*u,
z*s*z^-1*s^-1, t^-2, t*u^-1*t^-1*y*x*u, t*v^-1*t^-1*z*w, t*w^-1*t^-1*z*v,
y*t*x^-1*t^-1, x*t*y^-1*t^-1, z*t*z^-1*t^-1, u^-2, v*u*v^-1*u^-1,
u*w^-1*u^-1*z*w, x*u*x^-1*u^-1, y*u*y^-1*u^-1, z*u*z^-1*u^-1, v^-2,
w*v*w^-1*v^-1, v*x^-1*v^-1*z*x, y*v*y^-1*v^-1, z*v*z^-1*v^-1, w^-2,
x*w*x^-1*w^-1, w*y^-1*w^-1*z*y, z*w*z^-1*w^-1, x^-2, y*x*y^-1*x^-1,
z*x*z^-1*x^-1, y^-2, z*y*z^-1*y^-1, z^-2 ]
</pre></div>
<p>The following additional commands use the contracting homotopy homomorphism <span class="SimpleMath">h_0: R_0→ R_1</span> to express some random elements of <span class="SimpleMath">H</span> as words in the free generators.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=Random(H);</span>
(1,6)(2,3)(4,9)(5,16)(7,10)(8,21)(11,18)(12,17)(13,19)(14,20)(15,22)(23,24)
<span class="GAPprompt">gap></span> <span class="GAPinput">P.wordInFreeGenerators(g);</span>
q^-1*t^-1*x^-1*y^-1
<span class="GAPprompt">gap></span> <span class="GAPinput"></span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=Random(H);</span>
(1,6)(2,23,10,18)(3,22,19,24)(4,11,15,9)(7,8,21,13)(12,14)
<span class="GAPprompt">gap></span> <span class="GAPinput">P.wordInFreeGenerators(g);</span>
q^-1*u^-1*w^-1*x^-1*z^-1
<span class="GAPprompt">gap></span> <span class="GAPinput"></span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=Random(H);</span>
(1,14,5,17)(2,7,9,19)(3,11,4,22)(6,12,16,20)(8,18,24,15)(10,23,13,21)
<span class="GAPprompt">gap></span> <span class="GAPinput">P.wordInFreeGenerators(g);</span>
q^-1*r^-1*t^-1*v^-1*x^-1*z^-1
<span class="GAPprompt">gap></span> <span class="GAPinput"></span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=Random(H);</span>
(1,14,5,17)(2,21)(3,9)(4,24)(6,12,16,20)(7,11,15,13)(8,23)(10,18,22,19)
<span class="GAPprompt">gap></span> <span class="GAPinput">P.wordInFreeGenerators(g);</span>
q^-1*r^-1*t^-1*v^-1*w^-1*z^-1
</pre></div>
<p>Because the resolution <span class="SimpleMath">R_∗</span> was obtained from a composition series, the unique word associated to an element <span class="SimpleMath">g∈ H</span> always has the form <span class="SimpleMath">q^ϵ_1 r^ϵ_2 s^ϵ_3 t^ϵ_4 u^ϵ_5 v^ϵ_6 w^ϵ_7 x^ϵ_8 y^ϵ_9 z^ϵ_10}</span> determined by the exponent vector <span class="SimpleMath">(ϵ_1,⋯,ϵ_10) ∈ ( Z_2)^10</span>.</p>
<p><a id="X7C60E2B578074532" name="X7C60E2B578074532"></a></p>
<h4>6.10 <span class="Heading">Second group cohomology and cocyclic Hadamard matrices</span></h4>
<p>An <em>Hadamard matrix</em> is a square <span class="SimpleMath">n× n</span> matrix <span class="SimpleMath">H</span> whose entries are either <span class="SimpleMath">+1</span> or <span class="SimpleMath">-1</span> and whose rows are mutually orthogonal, that is <span class="SimpleMath">H H^t = nI_n</span> where <span class="SimpleMath">H^t</span> denotes the transpose and <span class="SimpleMath">I_n</span> denotes the <span class="SimpleMath">n× n</span> identity matrix.</p>
<p>Given a group <span class="SimpleMath">G={g_1,g_2,...,g_n}</span> of order <span class="SimpleMath">n</span> and the abelian group <span class="SimpleMath">A={1,-1}</span> of square roots of unity, any <span class="SimpleMath">2</span>-cocycle <span class="SimpleMath">f: G× G→ A</span> corresponds to an <span class="SimpleMath">n× n</span> matrix <span class="SimpleMath">F=(f(g_i,g_j))_1≤ i,j≤ n</span> whose entries are <span class="SimpleMath">± 1</span>. If <span class="SimpleMath">F</span> is Hadamard it is called a <em>cocyclic Hadamard matrix</em> corresponding to <span class="SimpleMath">G</span>.</p>
<p>The following commands compute all <span class="SimpleMath">192</span> of the cocyclic Hadamard matrices for the abelian group <span class="SimpleMath">G= Z_4⊕ Z_4</span> of order <span class="SimpleMath">n=16</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=AbelianGroup([4,4]);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">F:=CocyclicHadamardMatrices(G);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(F);</span>
192
</pre></div>
<p><a id="X78040D8580D35D53" name="X78040D8580D35D53"></a></p>
<h4>6.11 <span class="Heading">Third group cohomology and homotopy <span class="SimpleMath">2</span>-types</span></h4>
<p><strong class="button">Homotopy 2-types</strong></p>
<p>The third cohomology <span class="SimpleMath">H^3(G,A)</span> of a group <span class="SimpleMath">G</span> with coefficients in a <span class="SimpleMath">G</span>-module <span class="SimpleMath">A</span>, together with the corresponding <span class="SimpleMath">3</span>-cocycles, can be used to classify homotopy <span class="SimpleMath">2</span>-types. A <em>homotopy 2-type</em> is a CW-complex whose homotopy groups are trivial in dimensions <span class="SimpleMath">n=0</span> and <span class="SimpleMath">n>2</span>. There is an equivalence between the two categories</p>
<ol>
<li><p>(Homotopy category of connected CW-complexes <span class="SimpleMath">X</span> with trivial homotopy groups <span class="SimpleMath">π_n(X)</span> for <span class="SimpleMath">n>2</span>)</p>
</li>
<li><p>(Localization of the category of simplicial groups with Moore complex of length <span class="SimpleMath">1</span>, where localization is with respect to homomorphisms inducing isomorphisms on homotopy groups)</p>
</li>
</ol>
<p>which reduces the homotopy theory of <span class="SimpleMath">2</span>-types to a 'computable' algebraic theory. Furthermore, a simplicial group with Moore complex of length <span class="SimpleMath">1</span> can be represented by a group <span class="SimpleMath">H</span> endowed with two endomorphisms <span class="SimpleMath">s: H→ H</span> and <span class="SimpleMath">t: H→ H</span> satisfying the axioms</p>
<ul>
<li><p><span class="SimpleMath">ss=s</span>, <span class="SimpleMath">ts=s</span>,</p>
</li>
<li><p><span class="SimpleMath">tt=t</span>, <span class="SimpleMath">st=t</span>,</p>
</li>
<li><p><span class="SimpleMath">[ker s, ker t] = 1</span>.</p>
</li>
</ul>
<p>Ths triple <span class="SimpleMath">(H,s,t)</span> was termed a <em>cat<span class="SimpleMath">^1</span>-group</em> by J.-L. Loday since it can be regarded as a group <span class="SimpleMath">H</span> endowed with one compatible category structure.</p>
<p>The <em>homotopy groups</em> of a cat<span class="SimpleMath">^1</span>-group <span class="SimpleMath">H</span> are defined as: <span class="SimpleMath">π_1(H) = image(s)/t(ker(s))</span>; <span class="SimpleMath">π_2(H)=ker(s) ∩ ker(t)</span>; <span class="SimpleMath">π_n(H)=0</span> for <span class="SimpleMath">n> 2</span> or <span class="SimpleMath">n=0</span>. Note that <span class="SimpleMath">π_2(H)</span> is a <span class="SimpleMath">π_1(H)</span>-module where the action is induced by conjugation in <span class="SimpleMath">H</span>.</p>
<p>A homotopy <span class="SimpleMath">2</span>-type <span class="SimpleMath">X</span> can be represented by a cat<span class="SimpleMath">^1</span>-group <span class="SimpleMath">H</span> or by the homotopy groups <span class="SimpleMath">π_1X=π_1H</span>, <span class="SimpleMath">π_2X=π_2H</span> and a cohomology class <span class="SimpleMath">k∈ H^3(π_1X,π_2X)</span>. This class <span class="SimpleMath">k</span> is the <em>Postnikov invariant</em>.</p>
<p><strong class="button">Relation to Group Theory</strong></p>
<p>A number of standard group-theoretic constructions can be viewed naturally as a cat<span class="SimpleMath">^1</span>-group.</p>
<ol>
<li><p>A <span class="SimpleMath">ZG</span>-module <span class="SimpleMath">A</span> can be viewed as a cat<span class="SimpleMath">^1</span>-group <span class="SimpleMath">(H,s,t)</span> where <span class="SimpleMath">H</span> is the semi-direct product <span class="SimpleMath">A⋊ G</span> and <span class="SimpleMath">s(a,g)=(1,g)</span>, <span class="SimpleMath">t(a,g)=(1,g)</span>. Here <span class="SimpleMath">π_1(H)=G</span> and <span class="SimpleMath">π_2(H)=A</span>.</p>
</li>
<li><p>A group <span class="SimpleMath">G</span> with normal subgroup <span class="SimpleMath">N</span> can be viewed as a cat<span class="SimpleMath">^1</span>-group <span class="SimpleMath">(H,s,t)</span> where <span class="SimpleMath">H</span> is the semi-direct product <span class="SimpleMath">N⋊ G</span> and <span class="SimpleMath">s(n,g)=(1,g)</span>, <span class="SimpleMath">t(n,g)=(1,ng)</span>. Here <span class="SimpleMath">π_1(H)=G/N</span> and <span class="SimpleMath">π_2(H)=0</span>.</p>
</li>
<li><p>The homomorphism <span class="SimpleMath">ι : G→ Aut(G)</span> which sends elements of a group <span class="SimpleMath">G</span> to the corresponding inner automorphism can be viewed as a cat<span class="SimpleMath">^1</span>-group <span class="SimpleMath">(H,s,t)</span> where <span class="SimpleMath">H</span> is the semi-direct product <span class="SimpleMath">G⋊ Aut(G)</span> and <span class="SimpleMath">s(g,a)=(1,a)</span>, <span class="SimpleMath">t(g,a)=(1,ι (g)a)</span>. Here <span class="SimpleMath">π_1(H)=Out(G)</span> is the outer automorphism group of <span class="SimpleMath">G</span> and <span class="SimpleMath">π_2(H)=Z(G)</span> is the centre of <span class="SimpleMath">G</span>.</p>
</li>
</ol>
<p>These three constructions are implemented in <strong class="button">HAP</strong>.</p>
<p><strong class="button">Example</strong></p>
<p>The following commands begin by constructing the cat<span class="SimpleMath">^1</span>-group <span class="SimpleMath">H</span> of Construction 3 for the group <span class="SimpleMath">G=SmallGroup(64,134)</span>. They then construct the fundamental group of <span class="SimpleMath">H</span> and the second homotopy group of as a <span class="SimpleMath">π_1</span>-module. These homotopy groups have orders <span class="SimpleMath">8</span> and <span class="SimpleMath">2</span> respectively.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=SmallGroup(64,134);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">H:=AutomorphismGroupAsCatOneGroup(G);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">pi_1:=HomotopyGroup(H,1);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">pi_2:=HomotopyModule(H,2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(pi_1);</span>
8
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(ActedGroup(pi_2));</span>
2
</pre></div>
<p>The following additional commands show that there are <span class="SimpleMath">1024</span> Yoneda equivalence classes of cat<span class="SimpleMath">^1</span>-groups with fundamental group <span class="SimpleMath">π_1</span> and <span class="SimpleMath">π_1</span>- module equal to <span class="SimpleMath">π_2</span> in our example.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=ResolutionFiniteGroup(pi_1,4);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C:=HomToGModule(R,pi_2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CH:=CohomologyModule(C,3);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">AbelianInvariants(ActedGroup(CH));</span>
[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ]
</pre></div>
<p>A <span class="SimpleMath">3</span>-cocycle <span class="SimpleMath">f : π_1 × π_1 × π_1 → π_2</span> corresponding to a random cohomology class <span class="SimpleMath">k∈ H^3(π_1,π_2)</span> can be produced using the following command.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Random(Elements(ActedGroup(CH)));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">f:=CH!.representativeCocycle(x);</span>
Standard 3-cocycle
</pre></div>
<p>The <span class="SimpleMath">3</span>-cocycle corresponding to the Postnikov invariant of <span class="SimpleMath">H</span> itself can be easily constructed directly from its definition in terms of a set-theoretic 'section' of the crossed module corresponding to <span class="SimpleMath">H</span>.</p>
<div class="chlinkprevnextbot"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap5.html">[Previous Chapter]</a> <a href="chap7.html">[Next Chapter]</a> </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="chapBib.html">Bib</a> <a href="chapInd.html">Ind</a> </div>
<hr />
<p class="foot">generated by <a href="https://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>
|