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
|
<?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 14: Fundamental domains for Bianchi groups</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="chap14" 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="chap13.html">[Previous Chapter]</a> <a href="chap15.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap14_mj.html">[MathJax on]</a></p>
<p><a id="X805848868005D528" name="X805848868005D528"></a></p>
<div class="ChapSects"><a href="chap14.html#X805848868005D528">14 <span class="Heading">Fundamental domains for Bianchi groups</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap14.html#X858B1B5D8506FE81">14.1 <span class="Heading">Bianchi groups</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap14.html#X872D22507F797001">14.2 <span class="Heading">Swan's description of a fundamental domain</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap14.html#X7B9DE54F7ECB7E44">14.3 <span class="Heading">Computing a fundamental domain</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap14.html#X7A489A5D79DA9E5C">14.4 <span class="Heading">Examples</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap14.html#X86CD59CB7A04EE5A">14.5 <span class="Heading">Establishing correctness of a fundamental domain</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap14.html#X78476F127B73BBD1">14.6 <span class="Heading">Computing a free resolution for <span class="SimpleMath">SL_2(mathcal O_-d)</span></span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap14.html#X784B2156823AEB15">14.7 <span class="Heading">Some sanity checks</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap14.html#X7E5A36D47F9D4A47">14.7-1 <span class="Heading">Equivariant Euler characteristic</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap14.html#X852CDAFF84C5DF01">14.7-2 <span class="Heading">Boundary squares to zero</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap14.html#X7E64819A7C058EDD">14.7-3 <span class="Heading">Compare different algorithms or implementations</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap14.html#X8223864085412705">14.7-4 <span class="Heading">Compare geometry to algebra</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap14.html#X78BC9D077956089A">14.8 <span class="Heading">Group presentations</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap14.html#X786CFAA17C0A6E7A">14.9 <span class="Heading">Finite index subgroups</span></a>
</span>
</div>
</div>
<h3>14 <span class="Heading">Fundamental domains for Bianchi groups</span></h3>
<p><a id="X858B1B5D8506FE81" name="X858B1B5D8506FE81"></a></p>
<h4>14.1 <span class="Heading">Bianchi groups</span></h4>
<p>The <em>Bianchi groups</em> are the groups <span class="SimpleMath">G_-d=PSL_2(cal O_-d)</span> where <span class="SimpleMath">d</span> is a square free positive integer and <span class="SimpleMath">cal O_-d</span> is the ring of integers of the imaginary quadratic field <span class="SimpleMath">Q(sqrt-d)</span>. These groups act on <em>upper-half space</em></p>
<p class="pcenter">{\frak h}^3 =\{(z,t) \in \mathbb C\times \mathbb R\ |\ t > 0\} </p>
<p>by the formula</p>
<p class="pcenter">\left(\begin{array}{ll}a&b\\ c &d \end{array}\right)\cdot (z+tj) \ = \ \left(a(z+tj)+b\right)\left(c(z+tj)+d\right)^{-1}\ </p>
<p>where we use the symbol <span class="SimpleMath">j</span> satisfying <span class="SimpleMath">j^2=-1</span>, <span class="SimpleMath">ij=-ji</span> and write <span class="SimpleMath">z+tj</span> instead of <span class="SimpleMath">(z,t)</span>. Alternatively, the action is given by</p>
<p class="pcenter">\left(\begin{array}{ll}a&b\\ c &d \end{array}\right)\cdot (z+tj) \ = \
\frac{(az+b)\overline{(cz+d) } + a\overline c t^2}{|cz +d|^2 + |c|^2t^2} \ +\
\frac{t}{|cz+d|^2+|c|^2t^2}\, j
\ .</p>
<p>We take the boundary <span class="SimpleMath">∂ frak h^3</span> to be the Riemann sphere <span class="SimpleMath">C ∪ ∞</span> and let <span class="SimpleMath">overlinefrak h^3</span> denote the union of <span class="SimpleMath">frak h^3</span> and its boundary. The action of <span class="SimpleMath">G_-d</span> extends to the boundary. The element <span class="SimpleMath">∞</span> and each element of the number field <span class="SimpleMath">Q(sqrt-d)</span> are thought of as lying in the boundary <span class="SimpleMath">∂ frak h^3</span> and are referred to as <em>cusps</em>. Let <span class="SimpleMath">X</span> denote the union of <span class="SimpleMath">frak h^3</span> with the set of cusps, <span class="SimpleMath">X=frak h^3 ∪ {∞} ∪ Q(sqrt-d)</span>. It follows from work of Bianchi and Humbert that the space <span class="SimpleMath">X</span> admits the structure of a regular CW-complex (depending on <span class="SimpleMath">d</span>) for which the action of <span class="SimpleMath">G_-d</span> on <span class="SimpleMath">frak h^3</span> extends to a cellular action on <span class="SimpleMath">X</span> which permutes cells. Moreover, <span class="SimpleMath">G_-d</span> acts transitively on the <span class="SimpleMath">3</span>-cells of <span class="SimpleMath">X</span> and each <span class="SimpleMath">3</span>-cell has trivial stabilizer in <span class="SimpleMath">G_-d</span>. Details are provided in Richard Swan's paper <a href="chapBib.html#biBswanB">[Swa71b]</a>.</p>
<p>We refer to the closure in <span class="SimpleMath">X</span> of any one of these <span class="SimpleMath">3</span>-cells as a <em>fundamental domain</em> for the action <span class="SimpleMath">G_-d</span>. Cohomology of <span class="SimpleMath">G_-d</span> can be computed from a knowledge of the combinatorial structure of this fundamental domain together with a knowledge of the stabilizer groups of the cells of dimension <span class="SimpleMath">≤ 2</span>.</p>
<p><a id="X872D22507F797001" name="X872D22507F797001"></a></p>
<h4>14.2 <span class="Heading">Swan's description of a fundamental domain</span></h4>
<p>A pair <span class="SimpleMath">(a,b)</span> of elements in <span class="SimpleMath">cal O_-d</span> is said to be <em>unimodular</em> if the ideal generated by <span class="SimpleMath">a,b</span> is the whole ring <span class="SimpleMath">cal O_-d</span> and <span class="SimpleMath">ane 0</span>. A unimodular pair can be represented by a hemisphere in <span class="SimpleMath">overlinefrak h^3</span> with base centred at the point <span class="SimpleMath">b/a ∈ C</span> and of radius <span class="SimpleMath">|1/a|</span>. The radius is <span class="SimpleMath">≤ 1</span>. Think of the points in <span class="SimpleMath">frak h^3</span> as lying strictly above <span class="SimpleMath">C</span>. Let <span class="SimpleMath">B</span> denote the space obtained by removing all such hemispheres from <span class="SimpleMath">frak h^3</span>.</p>
<p>When <span class="SimpleMath">d ≡ 3 mod 4</span> let <span class="SimpleMath">F</span> be the subspace of <span class="SimpleMath">overlinefrak h^3</span> consisting of the points <span class="SimpleMath">x+iy+jt</span> with <span class="SimpleMath">-1/2 ≤ x ≤ 1/2</span>, <span class="SimpleMath">-1/4 ≤ y ≤ 1/4</span>, <span class="SimpleMath">t ≥ 0</span>. Otherwise, let <span class="SimpleMath">F</span> be the subspace of <span class="SimpleMath">overlinefrak h^3</span> consisting of the points <span class="SimpleMath">x+iy+jt</span> with <span class="SimpleMath">-1/2 ≤ x ≤ 1/2</span>, <span class="SimpleMath">-1/2 ≤ y ≤ 1/2</span>, <span class="SimpleMath">t ≥ 0</span>.</p>
<p>It is explained in <a href="chapBib.html#biBswanB">[Swa71b]</a> that <span class="SimpleMath">F∩ B</span> is a <span class="SimpleMath">3</span>-cell in the above mentioned regular CW-complex structure on <span class="SimpleMath">X</span>.</p>
<p><a id="X7B9DE54F7ECB7E44" name="X7B9DE54F7ECB7E44"></a></p>
<h4>14.3 <span class="Heading">Computing a fundamental domain</span></h4>
<p>Explicit fundamental domains for certain values of <span class="SimpleMath">d</span> were calculated by Bianchi in the 1890s and further calculations were made by Swan in 1971 <a href="chapBib.html#biBswanB">[Swa71b]</a>. In the 1970s, building on Swan's work, <span class="URL"><a href="https://www.sciencedirect.com/science/article/pii/S0723086913000042">Robert Riley</a></span> developed a computer program for computing fundamental domains of certain Kleinian groups (including Bianchi groups). In their 2010 PhD theses <span class="URL"><a href="https://theses.hal.science/tel-00526976/en/">Alexander Rahm</a></span> and <span class="URL"><a href="https://wrap.warwick.ac.uk/id/eprint/35128/">M.T. Aranes</a></span> independently developed Pari/GP and Sage software based on Swan's ideas. In 2011 <span class="URL"><a href="https://mathstats.uncg.edu/sites/yasaki/publications/bianchipolytope.pdf">Dan Yasaki</a></span> used a different approach based on Voronoi's theory of perfect forms in his Magma software for fundamental domains of Bianchi groups. <span class="URL"><a href="http://www.normalesup.org/~page/Recherche/Logiciels/logiciels-en.html">Aurel Page</a></span> developed software for fundamental domains of Kleinian groups in his 2010 masters thesis. In 2018 <span class="URL"><a href="https://github.com/schoennenbeck/VMH-DivisionAlgebras">Sebastian Schoennenbeck</a></span> used a more general approach based on perfect forms in his Magma software for computing fundamental domains of Bianchi and other groups. Output from the code of Alexander Rahm and Sebastian Schoennenbeck for certain Bianchi groups has been stored iin <strong class="button">HAP</strong> for use in constructing free resolutions.</p>
<p>More recently a <strong class="button">GAP</strong> implementation of Swan's algorithm has been included in <strong class="button">HAP</strong>. The implementation uses exact computations in <span class="SimpleMath">Q(sqrt-d)</span> and in <span class="SimpleMath">Q(sqrtd)</span>. A bespoke implementation of these two fields is part of the implementation so as to avoid making apparently slower computations with cyclotomic numbers. The account of Swan's algorithm in the thesis of Alexander Rahm was the main reference during the implementation.</p>
<p><a id="X7A489A5D79DA9E5C" name="X7A489A5D79DA9E5C"></a></p>
<h4>14.4 <span class="Heading">Examples</span></h4>
<p>The fundamental domain <span class="SimpleMath">D=overlineF ∩ B</span> (where the overline denotes closure) has boundary <span class="SimpleMath">∂ D</span> involving the four vertical quadrilateral <span class="SimpleMath">2</span>-cells contained in the four vertical quadrilateral <span class="SimpleMath">2</span>-cells of <span class="SimpleMath">∂ F</span>. We refer to these as the <em>vertical <span class="SimpleMath">2</span>-cells</em> of <span class="SimpleMath">D</span>. When visualizing <span class="SimpleMath">D</span> we ignore the <span class="SimpleMath">3</span>-cell and the four vertical <span class="SimpleMath">2</span>-cells entirely and visualize only the remaining <span class="SimpleMath">2</span>-cells. These <span class="SimpleMath">2</span>-cells can be viewed as a <span class="SimpleMath">2</span>-dimensional image by projecting them onto the complex plane, or they can be viewed as an interactive <span class="SimpleMath">3</span>-dimensional image.</p>
<p>A fundamental domain for <span class="SimpleMath">G_-39</span> can be visualized using the following commands.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">D:=BianchiPolyhedron(-39);</span>
3-dimensional Bianchi polyhedron over OQ( Sqrt(-39) )
involving hemispheres of minimum squared radius 1/39
and non-cuspidal vertices of minimum squared height 1/49 .
<span class="GAPprompt">gap></span> <span class="GAPinput">Display3D(D);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display2D(D);;</span>
</pre></div>
<p><img src="images/bianchi3D39.png" align="center" height="550" alt="Fundamental domain for a Bianchi group"/> <img src="images/bianchi2D39.png" align="center" width="350" alt="Fundamental domain for a Bianchi group"/></p>
<p>A <em>cusp vertex</em> of <span class="SimpleMath">D</span> is any vertex of <span class="SimpleMath">D</span> lying in <span class="SimpleMath">C ∪ ∞</span>. In the above visualizations for <span class="SimpleMath">G_-39</span> several cusp vertices in <span class="SimpleMath">C</span> are : in the 2-dimensional visualization they are represented by red dots. Computer calculations show that these cusps lie in precisely three orbits under the action of <span class="SimpleMath">G_-d</span>. Thus, together with the orbit of <span class="SimpleMath">∞</span> there are four distinct orbits of cusps. By the well-known correspondence between cusp orbits and elements of the class group it follows that the class group of <span class="SimpleMath">Q(sqrt-39)</span> is of order <span class="SimpleMath">4</span>.</p>
<p>The following additional commands comvert the Bianchi polyhedron <span class="SimpleMath">D</span> to a regular CW-complex and then display its <span class="SimpleMath">1</span>-skeleton.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">D:=BianchiPolyhedron(-39);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Y:=RegularCWComplex(D);</span>
Regular CW-complex of dimension 2
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(GraphOfRegularCWComplex(Y));</span>
</pre></div>
<p><img src="images/bianchi1skeleton.gif" align="center" height="350" alt="Fundamental domain for a Bianchi group"/></p>
<p>A fundamental domain for <span class="SimpleMath">G_-22</span> can be visualized using the following commands.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">D:=BianchiPolyhedron(-22);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display3D(OQ,D);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display2D(OQ,D);;</span>
</pre></div>
<p><img src="images/bianchi3D22.png" align="center" height="550" alt="Fundamental domain for a Bianchi group"/> <img src="images/bianchi2D22.png" align="center" width="350" alt="Fundamental domain for a Bianchi group"/></p>
<p>Two cusps are visible in the visualizations for <span class="SimpleMath">G_-22</span>. They lie in a single orbit. Thus, together with the orbit of <span class="SimpleMath">∞</span>, there are two orbits of cusps for this group.</p>
<p>A fundamental domain for <span class="SimpleMath">G_-163</span> can be visualized using the following commands.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">D:=BianchiPolyhedron(-163);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display3D(OQ,D);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display2D(OQ,D);;</span>
</pre></div>
<p><img src="images/bianchi3D163.png" align="center" height="550" alt="Fundamental domain for a Bianchi group"/> <img src="images/bianchi2D163.png" align="center" width="350" alt="Fundamental domain for a Bianchi group"/></p>
<p>There is just a single orbit of cusps in this example, the orbit containing <span class="SimpleMath">∞</span>, since <span class="SimpleMath">Q(sqrt-163)</span> is a principal ideal domain and hence has trivial class group.</p>
<p>A fundamental domain for <span class="SimpleMath">G_-33</span> is visualized using the following commands.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">D:=BianchiPolyhedron(-33);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display3D(OQ,D);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display2D(OQ,D);;</span>
</pre></div>
<p><img src="images/bianchi3D33.png" align="center" height="550" alt="Fundamental domain for a Bianchi group"/> <img src="images/bianchi2D33.png" align="center" width="350" alt="Fundamental domain for a Bianchi group"/></p>
<p><a id="X86CD59CB7A04EE5A" name="X86CD59CB7A04EE5A"></a></p>
<h4>14.5 <span class="Heading">Establishing correctness of a fundamental domain</span></h4>
<p>The cusps of a fundamental domain can be calculated independently of the domain computation. The remaining vertices of the domain will have positive heights. To prove that the computation is correct we need to establish that no non-cuspidal vertex lies below any hemishpere centered on the complex plane at <span class="SimpleMath">b/a∈ C</span> with <span class="SimpleMath">(a,b)</span> a unimodular pair. As these hemispheres have increasingly smaller radius we only need to check those finitely many hemispheres with radius smaller than the height of the lowest non-cuspidal vertex.</p>
<p>For a few values of <span class="SimpleMath">d</span> the smallest radius <span class="SimpleMath">r</span> of a hemisphere contributing to the fundamental domain boundary has been stored. For cases where this smallest radius is not stored a very slow method for finding <span class="SimpleMath">r</span> is implemented and the user is advised to speed things up by guessiing a value <span class="SimpleMath">N=1/r^2</span> and then test that this value of <span class="SimpleMath">N</span> is indeed large enough. The following commands illustrate this for <span class="SimpleMath">d=-46</span> with a guess of <span class="SimpleMath">N=600</span>. Once the test is done we can see that in fact a smaller guess of <span class="SimpleMath">N=441</span> would have sufficed.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">P:=BianchiPolyhedron(-46);</span>
Try
P:=BianchiPolyhedron(OQ,N);
for some guessed positive integer value of N and then try
SwanBianchiCriterion(P);
to test if the value of N was large enough. If the test returns false then you\
'll need to try a larger value of N.
A successful value of N can be stored as a pair [d,N] in the list HAPRECORD wh\
ich can be edited manually in the file hap/lib/Congruence/bianchi.gi .
<span class="GAPprompt">gap></span> <span class="GAPinput">P:=BianchiPolyhedron(-46,600);</span>
3-dimensional Bianchi polyhedron over OQ( Sqrt(
-46) ) involving hemispheres of minimum squared radius 1/
441 and non-cuspidal vertices of minimum squared height 1/8280 .
<span class="GAPprompt">gap></span> <span class="GAPinput">SwanBianchiCriterion(P);</span>
true
</pre></div>
<p><a id="X78476F127B73BBD1" name="X78476F127B73BBD1"></a></p>
<h4>14.6 <span class="Heading">Computing a free resolution for <span class="SimpleMath">SL_2(mathcal O_-d)</span></span></h4>
<p>The above fundamental domains can be used to construct free resolutions for <span class="SimpleMath">SL_2(mathcal O_-d)</span> and <span class="SimpleMath">PSL_2(mathcal O_-d)</span>. The following commands illustrate the computation of free resolutions for <span class="SimpleMath">SL_2(mathcal O_-43)</span> and <span class="SimpleMath">SL_2(mathcal O_-10)</span> and <span class="SimpleMath">SL_2(mathcal O_-14)</span> and their integral homology (which in each case is periodic of period dividing <span class="SimpleMath">4</span> in degrees <span class="SimpleMath">≥ 3</span>). The computation of fundamental domains uses exact arithmetic in the two field extensions <span class="SimpleMath">Q(sqrtd)</span> and <span class="SimpleMath">Q(sqrt-d)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-43);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=FreeGResolution(K,11);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C:=TensorWithIntegers(R);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List([0..10],n->Homology(C,n));</span>
[ [ 0 ], [ 0, 0 ], [ 2, 2, 12, 0 ], [ 2, 2, 24 ], [ 2, 2 ], [ 2 ],
[ 2, 2, 12 ], [ 2, 2, 24 ], [ 2, 2 ], [ 2 ], [ 2, 2, 12 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-10);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=FreeGResolution(K,11);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List([0..10],k->Homology(TensorWithIntegers(R),k));</span>
[ [ 0 ], [ 2, 2, 0, 0, 0 ], [ 2, 2, 2, 12, 0, 0 ], [ 2, 2, 2, 24 ],
[ 2, 4, 12 ], [ 2, 2, 2, 6 ], [ 2, 2, 2, 12 ], [ 2, 2, 2, 24 ],
[ 2, 4, 12 ], [ 2, 2, 2, 6 ], [ 2, 2, 2, 12 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-14);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=FreeGResolution(K,11);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List([0..10],k->Homology(TensorWithIntegers(R),k));</span>
[ [ 0 ], [ 6, 0, 0, 0, 0, 0 ], [ 2, 2, 2, 4, 12, 0, 0, 0, 0 ],
[ 2, 2, 2, 2, 24 ], [ 2, 2, 2, 4, 12 ], [ 2, 2, 2, 2, 24 ],
[ 2, 2, 2, 4, 12 ], [ 2, 2, 2, 2, 24 ], [ 2, 2, 2, 4, 12 ],
[ 2, 2, 2, 2, 24 ], [ 2, 2, 2, 4, 12 ] ]
</pre></div>
<p>The following commands count the number of orbits of cusps (in addition to the orbit of <span class="SimpleMath">∞</span>). They determine that there is precisely one element in the ideal class group of <span class="SimpleMath">mathcal O_-43</span> (i.e it is a principal ideal domain) and that there are precisely two elements in the ideal class group of <span class="SimpleMath">mathcal O_-10</span> and precisely four elements in the ideal class group of <span class="SimpleMath">mathcal O_-14</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-43);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List([1..K!.dimension(0)],k->Order(K!.stabilizer(0,k)));</span>
[ 24, 24, 6, 6, 4, 4, 12, 12 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-10);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List([1..K!.dimension(0)],k->Order(K!.stabilizer(0,k)));</span>
[ 6, 6, 4, 4, 6, infinity ]
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-14);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List([1..K!.dimension(0)],k->Order(K!.stabilizer(0,k)));</span>
[ 6, 6, 2, 2, 2, infinity, infinity, 2, infinity, 6, 4 ]
</pre></div>
<p><a id="X784B2156823AEB15" name="X784B2156823AEB15"></a></p>
<h4>14.7 <span class="Heading">Some sanity checks</span></h4>
<p>There is ample scope for bugs in the implementation of the above method for computing resolutions of Bianchi groups. The following sanity checks lend confidence to the implementation.</p>
<p><a id="X7E5A36D47F9D4A47" name="X7E5A36D47F9D4A47"></a></p>
<h5>14.7-1 <span class="Heading">Equivariant Euler characteristic</span></h5>
<p>Let <span class="SimpleMath">X</span> be any cell complex with an action of a group <span class="SimpleMath">G</span> such that (i) <span class="SimpleMath">X</span> has finitely many <span class="SimpleMath">G</span>-orbits of cells, and (ii) the stabilizer subgroup in <span class="SimpleMath">G</span> for each cell is either finite or free abelian. One defines the <em>equivariant Euler characteristic</em> $$\chi_G(X) = \sum_e (-1)^{dim~ e} / |Stab_G(e)|$$ where <span class="SimpleMath">e</span> ranges over a set of representatives of the orbits of those cells with finite stabilizers. If <span class="SimpleMath">G</span> has a finite index torsion free subgroup and if the complex <span class="SimpleMath">X</span> is contractible then one can define the Euler characteristic of the group to be <span class="SimpleMath">χ(G) = χ_G(X)</span>. It is known that <span class="SimpleMath">χ (SL_n(mathcal O)) = χ(GL_n(mathcal O)) =0</span> for <span class="SimpleMath">mathcal O</span> the ring of integers of a number field <a href="chapBib.html#biBGangl">[DSGG+16]</a>.</p>
<p>One easy test to make in our computations is to check that the equivariant Euler characteristic of the <span class="SimpleMath">2</span>-complex is indeed zero. The following commands perform this test for the group <span class="SimpleMath">SL_2(mathcal O_-23)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-23);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">chi:=0;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">for n in [0..2] do</span>
<span class="GAPprompt">></span> <span class="GAPinput">for k in [1..K!.dimension(n)] do</span>
<span class="GAPprompt">></span> <span class="GAPinput">g:=Order(K!.stabilizer(n,k));</span>
<span class="GAPprompt">></span> <span class="GAPinput">if g < infinity then chi:=chi + (-1)^n/g; fi;</span>
<span class="GAPprompt">></span> <span class="GAPinput">od;od;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">chi;</span>
0
</pre></div>
<p><a id="X852CDAFF84C5DF01" name="X852CDAFF84C5DF01"></a></p>
<h5>14.7-2 <span class="Heading">Boundary squares to zero</span></h5>
<p>The signs in the boundary maps of the free resolution are delicate. Another easy test is to check that the boundary in the resolution squares to zero. The following commands perform this check for the group <span class="SimpleMath">SL_2(mathcal O_-23)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-23);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=FreeGResolution(K,10);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">n:=2;;List([1..R!.dimension(n)],k->ResolutionBoundaryOfWord(R,n-1,R!.boundary(n,k)));</span>
[ [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ],
[ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ],
[ ], [ ], [ ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">n:=3;;List([1..R!.dimension(n)],k->ResolutionBoundaryOfWord(R,n-1,R!.boundary(n,k)));</span>
[ [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ],
[ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ],
[ ], [ ], [ ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">n:=4;;List([1..R!.dimension(n)],k->ResolutionBoundaryOfWord(R,n-1,R!.boundary(n,k)));</span>
[ [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ],
[ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ],
[ ], [ ], [ ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">n:=5;;List([1..R!.dimension(n)],k->ResolutionBoundaryOfWord(R,n-1,R!.boundary(n,k)));</span>
[ [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ],
[ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ ],
[ ], [ ], [ ] ]
</pre></div>
<p><a id="X7E64819A7C058EDD" name="X7E64819A7C058EDD"></a></p>
<h5>14.7-3 <span class="Heading">Compare different algorithms or implementations</span></h5>
<p>Sebastian Schoennenbeck in his thesis work computed some contractible <span class="SimpleMath">2</span>-complexes on which Bianchi groups act with finite stabilizers (even when the ideal class is greater than <span class="SimpleMath">1</span>) using a different approach to that of Swan. These computed complexes are stored in <strong class="button">HAP</strong> and provide an alternative way of computing cohomology for the stored groups. Alexander Rahm in his thesis work implemented Swan's approach and has provided some <span class="SimpleMath">2</span>-complexes that are also stored in <strong class="button">HAP</strong> in cases where the ideal class is equal to <span class="SimpleMath">1</span>.</p>
<p>The following commands test that Sebastian Schoennenbeck's <span class="SimpleMath">2</span>-complex for <span class="SimpleMath">SL_2(mathcal O_-23)</span> yields the same integral homology as the above <strong class="button">HAP</strong> implementation. Both computations use <strong class="button">HAP</strong>'s implementation of Wall's perturbation technique for computing the resolution from the <span class="SimpleMath">2</span>-complex.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=ContractibleGcomplex("SL(2,O-23)");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=FreeGResolution(K,10);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List([0..9],n->Homology(TensorWithIntegers(R),n));</span>
[ [ 0 ], [ 12, 0, 0, 0 ], [ 2, 2, 12, 0, 0 ], [ 2, 2, 12 ], [ 2, 2, 12 ],
[ 2, 2, 12 ], [ 2, 2, 12 ], [ 2, 2, 12 ], [ 2, 2, 12 ], [ 2, 2, 12 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-23);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=FreeGResolution(K,10);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List([0..9],n->Homology(TensorWithIntegers(R),n));</span>
[ [ 0 ], [ 12, 0, 0, 0 ], [ 2, 2, 12, 0, 0 ], [ 2, 2, 12 ], [ 2, 2, 12 ],
[ 2, 2, 12 ], [ 2, 2, 12 ], [ 2, 2, 12 ], [ 2, 2, 12 ], [ 2, 2, 12 ] ]
</pre></div>
<p><a id="X8223864085412705" name="X8223864085412705"></a></p>
<h5>14.7-4 <span class="Heading">Compare geometry to algebra</span></h5>
<p>The number of cusps (i.e. the number of orbits of vertices with infinite stabilizer subgroup) must be precisely one less than the number of elements in the ideal class group of <span class="SimpleMath">mathcal O_-d</span>. The following commands check this for <span class="SimpleMath">SL_2(mathcal O_-23)</span> where <span class="SimpleMath">mathcal O_-23</span> is known to have class number 3. (This class number is easily computed from a formula in Swan's paper.)</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-23);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List([1..K!.dimension(0)],k->Order(K!.stabilizer(0,k)));</span>
[ 6, 2, 2, 4, infinity, infinity ]
</pre></div>
<p>A visualization of the fundamental domain tells us a certain amount about the algebra. In the case of <span class="SimpleMath">SL_2(mathcal O_-23)</span></p>
<p><img src="images/sl2O-23.png" align="center" height="300" alt="Fundamental domain for a Bianchi group"/></p>
<p>a fundamental domain for the action on <span class="SimpleMath">C</span> by the translation subgroup generated by the matrices $$ \left(\begin{array}{ll} 1 &1\\ 0 &1\end{array}\right), \left(\begin{array}{ll} 1 &\omega\\ 0 &1\end{array}\right) $$ <span class="SimpleMath">ω = (1+sqrt-23)/2</span> is indicated by the white rectangle. From this we see that under the action of <span class="SimpleMath">SL_2(mathcal O_-23)</span> there are at most <span class="SimpleMath">11</span> orbits of <span class="SimpleMath">2</span>-cells, the central decagon and ten quadrilaterals. However, the matrix $$ \left(\begin{array}{rr} 0 &-1\\ 1 &0\end{array}\right) $$ maps <span class="SimpleMath">(z,0)</span> to <span class="SimpleMath">(-1/z,0)</span> and fixes <span class="SimpleMath">(0,1)</span>. This isometry identifies points on the boundary of the decagon pairwise. These observations are consistent with the above listing of the six orbit stabilizers and the following algebraic information on the boundaries of the <span class="SimpleMath">2</span>-cells in the Bianchi <span class="SimpleMath">2</span>-complex.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-23);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List([1..K!.dimension(2)],k->Length(K!.boundary(2,k)));</span>
[ 10, 4, 4, 4, 4, 4 ]
</pre></div>
<p><a id="X78BC9D077956089A" name="X78BC9D077956089A"></a></p>
<h4>14.8 <span class="Heading">Group presentations</span></h4>
<p>Swan's reason for studying fundamental domains was to obtain explicit group presentations for <span class="SimpleMath">SL_2(mathcal O_-d)</span> for various values of <span class="SimpleMath">d</span>. The following commands obtain a presentation for <span class="SimpleMath">SL_2(mathcal O_-23)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-23);;</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:=SimplifiedFpGroup(P!.freeGroup/P!.relators);</span>
<fp group on the generators [ k, r, s, w, x ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">RelatorsOfFpGroup(G);</span>
[ w^-1*k*w*k^-1, s^-1*r*s*r^-1, k^6, x^-1*k^-3*x*k^-3, s^-1*k^-3*s*k^-3,
r^-1*w*x^-1*s*r*w^-1*x*s^-1, r^-1*k^-3*r*k^-3,
x*k^-2*r^-1*x*r^-1*s^-1*k^-1*s^-1, x^-1*k^3*s*r*x^-1*s*r ]
<span class="GAPprompt">gap></span> <span class="GAPinput">#Next we identify the generators as matrices</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfGroup(P!.freeGroup);</span>
[ k, m, n, p, q, r, s, t, u, v, w, x, y, z ]
<span class="GAPprompt">gap></span> <span class="GAPinput">P!.gens;</span>
[ 19, 6, 6, 20, 6, 21, 22, 6, 52, 53, 2, 50, 1, 4 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">k:=R!.elts[19];</span>
[ [ 1, 1 ],
[ -1, 0 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">r:=R!.elts[21];</span>
[ [ 3, 3 + -1 Sqrt(-23) ],
[ -3/2 + -1/2 Sqrt(-23), -5 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=R!.elts[22];</span>
[ [ 2 + 1 Sqrt(-23), 13/2 + 1/2 Sqrt(-23) ],
[ 5/2 + -1/2 Sqrt(-23), -1 Sqrt(-23) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">w:=R!.elts[2];</span>
[ [ 3/2 + 1/2 Sqrt(-23), -3/2 + 1/2 Sqrt(-23) ],
[ 3/2 + -1/2 Sqrt(-23), 3 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=R!.elts[50];</span>
[ [ 11/2 + 1/2 Sqrt(-23), 15/2 + -1/2 Sqrt(-23) ],
[ -1 Sqrt(-23), -4 + -1 Sqrt(-23) ] ]
</pre></div>
<p><a id="X786CFAA17C0A6E7A" name="X786CFAA17C0A6E7A"></a></p>
<h4>14.9 <span class="Heading">Finite index subgroups</span></h4>
<p>The following commands compute the integral homology of a congruence subgroup <span class="SimpleMath">G</span> of index 24 in <span class="SimpleMath">SL_2(mathcal O_-23)</span>. They also compute a presentation for <span class="SimpleMath">G</span> with 13 generators and 24 relators.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">OQ:=RingOfIntegers(QuadraticNumberField(-23));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">I:=QuadraticIdeal(OQ,[Sqrt(-23)]);</span>
ideal of norm 23 in O(Q(Sqrt(-23)))
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=HAP_CongruenceSubgroupGamma0(I);</span>
<group of 2x2 matrices in characteristic 0>
<span class="GAPprompt">gap></span> <span class="GAPinput">IndexInSL2O(G);</span>
24
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=BianchiGcomplex(-23);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=FreeGResolution(K,11);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=QuadraticToCyclotomicCoefficients(R);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">S:=ResolutionFiniteSubgroup(R,G);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List([0..10],n->Homology(TensorWithIntegers(S),n));</span>
[ [ 0 ], [ 2, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0 ], [ 2, 2, 2, 2, 2, 2, 2, 2 ],
[ 2, 2, 2, 2, 2, 2, 2, 2 ], [ 2, 2, 2, 2, 2, 2, 2, 2 ],
[ 2, 2, 2, 2, 2, 2, 2, 2 ], [ 2, 2, 2, 2, 2, 2, 2, 2 ],
[ 2, 2, 2, 2, 2, 2, 2, 2 ], [ 2, 2, 2, 2, 2, 2, 2, 2 ],
[ 2, 2, 2, 2, 2, 2, 2, 2 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">P:=PresentationOfResolution(S);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">H:=SimplifiedFpGroup(P!.freeGroup/P!.relators);</span>
<fp group on the generators [ f8, f10, f15, f70, f86, f125, f132, f138, f182,
f187, f191, f273, f279 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(RelatorsOfFpGroup(H));</span>
24
</pre></div>
<div class="chlinkprevnextbot"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap13.html">[Previous Chapter]</a> <a href="chap15.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>
|