Quelle chap13.html
Sprache: HTML
|
|
| products/Sources/formale Sprachen/GAP/pkg/hap/tutorial/chap13.html |
 |
<?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 13: Congruence Subgroups, Cuspidal Cohomology and Hecke Op erators</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="chap13" 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="chap12.html">[Previous Chapter]</a> <a href="chap14.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap13_mj.html">[MathJax on]</a></p>
<p><a id="X86D5DB887ACB1661" name="X86D5DB887ACB1661"></a></p>
<div class="ChapSects"><a href="chap13.html#X86D5DB887ACB1661">13 <span class="Heading">Congruence Subgroups, Cuspidal Cohomology and Hecke Operators</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X79A1974B7B4987DE">13.1 <span class="Heading">Eichler-Shimura isomorphism</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X7BFA2C91868255D9">13.2 <span class="Heading">Generators for <span class="SimpleMath">SL_2( Z)</span> and the cubic tree</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X7D1A56967A073A8B">13.3 <span class="Heading">One-dimensional fundamental domains and
generators for congruence subgroups</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X818BFA9A826C0DB3">13.4 <span class="Heading">Cohomology of congruence subgroups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap13.html#X7F55F8EA82FE9122">13.4-1 <span class="Heading">Cohomology with rational coefficients</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X84D30F1580CD42D1">13.5 <span class="Heading">Cuspidal cohomology</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X80861D3F87C29C43">13.6 <span class="Heading">Hecke operators on forms of weight 2</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X831BB0897B988DA3">13.7 <span class="Heading">Hecke operators on forms of weight <span class="SimpleMath">≥ 2</span></span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X84CC51EE8525E0D9">13.8 <span class="Heading">Reconstructing modular forms from cohomology computations</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X8180E53C834301EF">13.9 <span class="Heading">The Picard group</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X858B1B5D8506FE81">13.10 <span class="Heading">Bianchi groups</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X851390E07C3B3BB1">13.11 <span class="Heading">(Co)homology of Bianchi groups and <span class="SimpleMath">SL_2(cal O_-d)</span></span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X86A6858884B9C05B">13.12 <span class="Heading">Some other infinite matrix groups</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X7EF5D97281EB66DA">13.13 <span class="Heading">Ideals and finite quotient groups</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X7D1F72287F14C5E1">13.14 <span class="Heading">Congruence subgroups for ideals</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13.html#X85E912617AFE03F4">13.15 <span class="Heading">First homology</span></a>
</span>
</div>
</div>
<h3>13 <span class="Heading">Congruence Subgroups, Cuspidal Cohomology and Hecke Operators</span></h3>
<p>In this chapter we explain how HAP can be used to make computions about modular forms associated to congruence subgroups <span class="SimpleMath">Γ</span> of <span class="SimpleMath">SL_2( Z)</span>. Also, in Subsection 10.8 onwards, we demonstrate cohomology computations for the <em>Picard group</em> <span class="SimpleMath">SL_2( Z[i])</span>, some <em>Bianchi groups</em> <span class="SimpleMath">PSL_2(cal O_-d)</span> where <span class="SimpleMath">cal O_d</span> is the ring of integers of <span class="SimpleMath">Q(sqrt-d)</span> for square free positive integer <span class="SimpleMath">d</span>, and some other groups of the form <span class="SimpleMath">SL_m(cal O)</span>, <span class="SimpleMath">GL_m(cal O)</span>, <span class="SimpleMath">PSL_m(cal O)</span>, <span class="SimpleMath">PGL_m(cal O)</span>, for <span class="SimpleMath">m=2,3,4</span> and certain <span class="SimpleMath">cal O= Z, cal O_-d</span>.</p>
<p><a id="X79A1974B7B4987DE" name="X79A1974B7B4987DE"></a></p>
<h4>13.1 <span class="Heading">Eichler-Shimura isomorphism</span></h4>
<p>We begin by recalling the Eichler-Shimura isomorphism <a href="chapBib.html#biBeichler">[Eic57]</a><a href="chapBib.html#biBshimura">[Shi59]</a></p>
<p class="pcenter"> S_k(\Gamma) \oplus \overline{S_k(\Gamma)} \oplus E_k(\Gamma) \cong_{\sf Hecke} H^1(\Gamma,P_{\mathbb C}(k-2))</p>
<p>which relates the cohomology of groups to the theory of modular forms associated to a finite index subgroup <span class="SimpleMath">Γ</span> of <span class="SimpleMath">SL_2( Z)</span>. In subsequent sections we explain how to compute with the right-hand side of the isomorphism. But first, for completeness, let us define the terms on the left-hand side.</p>
<p>Let <span class="SimpleMath">N</span> be a positive integer. A subgroup <span class="SimpleMath">Γ</span> of <span class="SimpleMath">SL_2( Z)</span> is said to be a <em>congruence subgroup</em> of level <span class="SimpleMath">N</span> if it contains the kernel of the canonical homomorphism <span class="SimpleMath">π_N: SL_2( Z) → SL_2( Z/N Z)</span>. So any congruence subgroup is of finite index in <span class="SimpleMath">SL_2( Z)</span>, but the converse is not true.</p>
<p>One congruence subgroup of particular interest is the group <span class="SimpleMath">Γ_1(N)=ker(π_N)</span>, known as the <em>principal congruence subgroup</em> of level <span class="SimpleMath">N</span>. Another congruence subgroup of particular interest is the group <span class="SimpleMath">Γ_0(N)</span> of those matrices that project to upper triangular matrices in <span class="SimpleMath">SL_2( Z/N Z)</span>.</p>
<p>A <em>modular form</em> of weight <span class="SimpleMath">k</span> for a congruence subgroup <span class="SimpleMath">Γ</span> is a complex valued function on the upper-half plane, <span class="SimpleMath">f: frakh}={z∈ C : Re(z)>0} → C</span>, satisfying:</p>
<ul>
<li><p><span class="SimpleMath">displaystyle f(fracaz+bcz+d) = (cz+d)^k f(z)</span> for <span class="SimpleMath">(beginarraylla&b c &d endarray) ∈ Γ</span>,</p>
</li>
<li><p><span class="SimpleMath">f</span> is `holomorphic' on the extended upper-half plane frakh^∗ = frakh ∪ Q ∪ {∞} obtained from the upper-half plane by `adjoining a point at each cusp'.</p>
</li>
</ul>
<p>The collection of all weight <span class="SimpleMath">k</span> modular forms for <span class="SimpleMath">Γ</span> form a vector space <span class="SimpleMath">M_k(Γ)</span> over <span class="SimpleMath">C</span>.</p>
<p>A modular form <span class="SimpleMath">f</span> is said to be a <em>cusp form</em> if <span class="SimpleMath">f(∞)=0</span>. The collection of all weight <span class="SimpleMath">k</span> cusp forms for <span class="SimpleMath">Γ</span> form a vector subspace <span class="SimpleMath">S_k(Γ)</span>. There is a decomposition</p>
<p class="pcenter">M_k(\Gamma) \cong S_k(\Gamma) \oplus E_k(\Gamma)</p>
<p>involving a summand <span class="SimpleMath">E_k(Γ)</span> known as the <em>Eisenstein space</em>. See <a href="chapBib.html#biBstein">[Ste07]</a> for further introductory details on modular forms.</p>
<p>The Eichler-Shimura isomorphism is more than an isomorphism of vector spaces. It is an isomorphism of Hecke modules: both sides admit notions of <em>Hecke operators</em>, and the isomorphism preserves these operators. The bar on the left-hand side of the isomorphism denotes complex conjugation, or <em>anti-holomorphic</em> forms. See <a href="chapBib.html#biBwieser">[Wie78]</a> for a full account of the isomorphism.</p>
<p>On the right-hand side of the isomorphism, the <span class="SimpleMath">ZΓ</span>-module <span class="SimpleMath">P_ C(k-2)⊂ C[x,y]</span> denotes the space of homogeneous degree <span class="SimpleMath">k-2</span> polynomials with action of <span class="SimpleMath">Γ</span> given by</p>
<p class="pcenter">\left(\begin{array}{ll}a&b\\ c &d \end{array}\right)\cdot p(x,y) = p(dx-by,-cx+ay)\ .</p>
<p>In particular <span class="SimpleMath">P_ C(0)= C</span> is the trivial module. Below we shall compute with the integral analogue <span class="SimpleMath">P_ Z(k-2) ⊂ Z[x,y]</span>.</p>
<p>In the following sections we explain how to use the right-hand side of the Eichler-Shimura isomorphism to compute eigenvalues of the Hecke operators restricted to the subspace <span class="SimpleMath">S_k(Γ)</span> of cusp forms.</p>
<p><a id="X7BFA2C91868255D9" name="X7BFA2C91868255D9"></a></p>
<h4>13.2 <span class="Heading">Generators for <span class="SimpleMath">SL_2( Z)</span> and the cubic tree</span></h4>
<p>The matrices <span class="SimpleMath">S=(beginarrayrr0&-1 1 &0 endarray)</span> and <span class="SimpleMath">T=(beginarrayrr1&1 0 &1 endarray)</span> generate <span class="SimpleMath">SL_2( Z)</span> and it is not difficult to devise an algorithm for expressing an arbitrary integer matrix <span class="SimpleMath">A</span> of determinant <span class="SimpleMath">1</span> as a word in <span class="SimpleMath">S</span>, <span class="SimpleMath">T</span> and their inverses. The following illustrates such an algorithm.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:=[[4,9],[7,16]];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">word:=AsWordInSL2Z(A);</span>
[ [ [ 1, 0 ], [ 0, 1 ] ], [ [ 0, 1 ], [ -1, 0 ] ], [ [ 1, -1 ], [ 0, 1 ] ],
[ [ 0, 1 ], [ -1, 0 ] ], [ [ 1, 1 ], [ 0, 1 ] ], [ [ 0, 1 ], [ -1, 0 ] ],
[ [ 1, -1 ], [ 0, 1 ] ], [ [ 1, -1 ], [ 0, 1 ] ], [ [ 1, -1 ], [ 0, 1 ] ],
[ [ 0, 1 ], [ -1, 0 ] ], [ [ 1, 1 ], [ 0, 1 ] ], [ [ 1, 1 ], [ 0, 1 ] ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Product(word);</span>
[ [ 4, 9 ], [ 7, 16 ] ]
</pre></div>
<p>It is convenient to introduce the matrix <span class="SimpleMath">U=ST = (beginarrayrr0&-1 1 &1 endarray)</span>. The matrices <span class="SimpleMath">S</span> and <span class="SimpleMath">U</span> also generate <span class="SimpleMath">SL_2( Z)</span>. In fact we have a free presentation <span class="SimpleMath">SL_2( Z)= ⟨ S,U | S^4=U^6=1, S^2=U^3 ⟩</span>.</p>
<p>The <em>cubic tree</em> <span class="SimpleMath">cal T</span> is a tree (<em>i.e.</em> a <span class="SimpleMath">1</span>-dimensional contractible regular CW-complex) with countably infinitely many edges in which each vertex has degree <span class="SimpleMath">3</span>. We can realize the cubic tree <span class="SimpleMath">cal T</span> by taking the left cosets of <span class="SimpleMath">cal U=⟨ U⟩</span> in <span class="SimpleMath">SL_2( Z)</span> as vertices, and joining cosets <span class="SimpleMath">xcal U</span> and <span class="SimpleMath">ycal U</span> by an edge if, and only if, <span class="SimpleMath">x^-1y ∈ cal U Scal U</span>. Thus the vertex <span class="SimpleMath">cal U</span> is joined to <span class="SimpleMath">Scal U</span>, <span class="SimpleMath">UScal U</span> and <span class="SimpleMath">U^2Scal U</span>. The vertices of this tree are in one-to-one correspondence with all reduced words in <span class="SimpleMath">S</span>, <span class="SimpleMath">U</span> and <span class="SimpleMath">U^2</span> that, apart from the identity, end in <span class="SimpleMath">S</span>.</p>
<p>From our realization of the cubic tree <span class="SimpleMath">cal T</span> we see that <span class="SimpleMath">SL_2( Z)</span> acts on <span class="SimpleMath">cal T</span> in such a way that each vertex is stabilized by a cyclic subgroup conjugate to <span class="SimpleMath">cal U=⟨ U⟩</span> and each edge is stabilized by a cyclic subgroup conjugate to <span class="SimpleMath">cal S =⟨ S ⟩</span>.</p>
<p>In order to store this action of <span class="SimpleMath">SL_2( Z)</span> on the cubic tree <span class="SimpleMath">cal T</span> we just need to record the following finite amount of information.</p>
<p><img src="images/fdsl2.png" align="center" width="350" alt="Information for the cubic tree"/></p>
<p><a id="X7D1A56967A073A8B" name="X7D1A56967A073A8B"></a></p>
<h4>13.3 <span class="Heading">One-dimensional fundamental domains and
generators for congruence subgroups</span></h4>
<p>The modular group <span class="SimpleMath">cal M=PSL_2( Z)</span> is isomorphic, as an abstract group, to the free product <span class="SimpleMath">Z_2∗ Z_3</span>. By the Kurosh subgroup theorem, any finite index subgroup <span class="SimpleMath">M ⊂ cal M</span> is isomorphic to the free product of finitely many copies of <span class="SimpleMath">Z_2</span>s, <span class="SimpleMath">Z_3</span>s and <span class="SimpleMath">Z</span>s. A subset <span class="SimpleMath">underline x ⊂ M</span> is an <em>independent</em> set of subgroup generators if <span class="SimpleMath">M</span> is the free product of the cyclic subgroups <span class="SimpleMath"><x ></span> as <span class="SimpleMath">x</span> runs over <span class="SimpleMath">underline x</span>. Let us say that a set of elements in <span class="SimpleMath">SL_2( Z)</span> is <em>projectively independent</em> if it maps injectively onto an independent set of subgroup generators <span class="SimpleMath">underline x⊂ cal M</span>. The generating set <span class="SimpleMath">{S,U}</span> for <span class="SimpleMath">SL_2( Z)</span> given in the preceding section is projectively independent.</p>
<p>We are interested in constructing a set of generators for a given congruence subgroup <span class="SimpleMath">Γ</span>. If a small generating set for <span class="SimpleMath">Γ</span> is required then we should aim to construct one which is close to being projectively independent.</p>
<p>It is useful to invoke the following general result which follows from a perturbation result about free <span class="SimpleMath">ZG</span>-resolutons in <a href="chapBib.html#biBellisharrisskoldberg">[EHS06, Theorem 2]</a> and an old observation of John Milnor that a free <span class="SimpleMath">ZG</span>-resolution can be realized as the cellular chain complex of a CW-complex if it can be so realized in low dimensions.</p>
<p><strong class="button">Theorem.</strong> Let <span class="SimpleMath">X</span> be a contractible CW-complex on which a group <span class="SimpleMath">G</span> acts by permuting cells. The cellular chain complex <span class="SimpleMath">C_∗ X</span> is a <span class="SimpleMath">ZG</span>-resolution of <span class="SimpleMath">Z</span> which typically is not free. Let <span class="SimpleMath">[e^n]</span> denote the orbit of the n-cell <span class="SimpleMath">e^n</span> under the action. Let <span class="SimpleMath">G^e^n ≤ G</span> denote the stabilizer subgroup of <span class="SimpleMath">e^n</span>, in which group elements are not required to stabilize <span class="SimpleMath">e^n</span> point-wise. Let <span class="SimpleMath">Y_e^n</span> denote a contractible CW-complex on which <span class="SimpleMath">G^e^n</span> acts cellularly and freely. Then there exists a contractible CW-complex <span class="SimpleMath">W</span> on which <span class="SimpleMath">G</span> acts cellularly and freely, and in which the orbits of <span class="SimpleMath">n</span>-cells are labelled by <span class="SimpleMath">[e^p]⊗ [f^q]</span> where <span class="SimpleMath">p+q=n</span> and <span class="SimpleMath">[e^p]</span> ranges over the <span class="SimpleMath">G</span>-orbits of <span class="SimpleMath">p</span>-cells in <span class="SimpleMath">X</span>, <span class="SimpleMath">[f^q]</span> ranges over the <span class="SimpleMath">G^e^p</span>-orbits of <span class="SimpleMath">q</span>-cells in <span class="SimpleMath">Y_e^p</span>.</p>
<p>Let <span class="SimpleMath">W</span> be as in the theorem. Then the quotient CW-complex <span class="SimpleMath">B_G=W/G</span> is a classifying space for <span class="SimpleMath">G</span>. Let <span class="SimpleMath">T</span> denote a maximal tree in the <span class="SimpleMath">1</span>-skeleton <span class="SimpleMath">B^1_G</span>. Basic geometric group theory tells us that the <span class="SimpleMath">1</span>-cells in <span class="SimpleMath">B^1_G∖ T</span> correspond to a generating set for <span class="SimpleMath">G</span>.</p>
<p>Suppose we wish to compute a set of generators for a principal congruence subgroup <span class="SimpleMath">Γ=Γ_1(N)</span>. In the above theorem take <span class="SimpleMath">X=cal T</span> to be the cubic tree, and note that <span class="SimpleMath">Γ</span> acts freely on <span class="SimpleMath">cal T</span> and thus that <span class="SimpleMath">W=cal T</span>. To determine the <span class="SimpleMath">1</span>-cells of <span class="SimpleMath">B_Γ∖ T</span> we need to determine a cellular subspace <span class="SimpleMath">D_Γ ⊂ cal T</span> whose images under the action of <span class="SimpleMath">Γ</span> cover <span class="SimpleMath">cal T</span> and are pairwise either disjoint or identical. The subspace <span class="SimpleMath">D_Γ</span> will not be a CW-complex as it won't be closed, but it can be chosen to be connected, and hence contractible. We call D_Γ a fundamental region for Γ. We denote by mathring D_Γ the largest CW-subcomplex of D_Γ. The vertices of mathring D_Γ are the same as the vertices of D_Γ. Thus mathring D_Γ is a subtree of the cubic tree with |Γ|/6 vertices. For each vertex v in the tree mathring D_Γ define η(v)=3 - degree(v). Then the number of generators for Γ will be (1/2)∑_v∈ mathring D_Γ η(v).
<p>The following commands determine projectively independent generators for <span class="SimpleMath">Γ_1(6)</span> and display <span class="SimpleMath">mathring D_Γ_1(6)</span>. The subgroup <span class="SimpleMath">Γ_1(6)</span> is free on <span class="SimpleMath">13</span> generators.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=HAP_PrincipalCongruenceSubgroup(6);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">HAP_SL2TreeDisplay(G);</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">gens:=GeneratorsOfGroup(G);</span>
[ [ [ -83, -18 ], [ 60, 13 ] ], [ [ -77, -18 ], [ 30, 7 ] ],
[ [ -65, -12 ], [ 168, 31 ] ], [ [ -53, -12 ], [ 84, 19 ] ],
[ [ -47, -18 ], [ 222, 85 ] ], [ [ -41, -12 ], [ 24, 7 ] ],
[ [ -35, -6 ], [ 6, 1 ] ], [ [ -11, -18 ], [ 30, 49 ] ],
[ [ -11, -6 ], [ 24, 13 ] ], [ [ -5, -18 ], [ 12, 43 ] ],
[ [ -5, -12 ], [ 18, 43 ] ], [ [ -5, -6 ], [ 6, 7 ] ],
[ [ 1, 0 ], [ -6, 1 ] ] ]
</pre></div>
<p><img src="images/pctree6.gif" align="center" width="350" alt="Fundamental region in the cubic tree"/></p>
<p>An alternative but very related approach to computing generators of congruence subgroups of <span class="SimpleMath">SL_2( Z)</span> is described in <a href="chapBib.html#biBkulkarni">[Kul91]</a>.</p>
<p>The congruence subgroup <span class="SimpleMath">Γ_0(N)</span> does not act freely on the vertices of <span class="SimpleMath">cal T</span>, and so one needs to incorporate a generator for the cyclic stabilizer group according to the above theorem. Alternatively, we can replace the cubic tree by a six-fold cover <span class="SimpleMath">cal T' on whose vertex set Γ_0(N) acts freely. This alternative approach will produce a redundant set of generators. The following commands display mathring D_Γ_0(39) for a fundamental region in cal T'</span>. They also use the corresponding generating set for <span class="SimpleMath">Γ_0(39)</span>, involving <span class="SimpleMath">18</span> generators, to compute the abelianization <span class="SimpleMath">Γ_0(39)^ab= Z_2 ⊕ Z_3^2 ⊕ Z^9</span>. The abelianization shows that any generating set has at least <span class="SimpleMath">11</span> generators.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=HAP_CongruenceSubgroupGamma0(39);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">HAP_SL2TreeDisplay(G);</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(GeneratorsOfGroup(G));</span>
18
<span class="GAPprompt">gap></span> <span class="GAPinput">AbelianInvariants(G);</span>
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3 ]
</pre></div>
<p><img src="images/g0tree39.gif" align="center" width="350" alt="Fundamental region in the cubic tree"/></p>
<p>Note that to compute <span class="SimpleMath">D_Γ</span> one only needs to be able to test whether a given matrix lies in <span class="SimpleMath">Γ</span> or not. Given an inclusion <span class="SimpleMath">Γ'⊂ Γ of congruence subgroups, it is straightforward to use the trees mathring D_Γ'</span> and <span class="SimpleMath">mathring D_Γ</span> to compute a system of coset representative for <span class="SimpleMath">Γ'∖ Γ.
<p><a id="X818BFA9A826C0DB3" name="X818BFA9A826C0DB3"></a></p>
<h4>13.4 <span class="Heading">Cohomology of congruence subgroups</span></h4>
<p>To compute the cohomology <span class="SimpleMath">H^n(Γ,A)</span> of a congruence subgroup <span class="SimpleMath">Γ</span> with coefficients in a <span class="SimpleMath">ZΓ</span>-module <span class="SimpleMath">A</span> we need to construct <span class="SimpleMath">n+1</span> terms of a free <span class="SimpleMath">ZΓ</span>-resolution of <span class="SimpleMath">Z</span>. We can do this by first using perturbation techniques (as described in <a href="chapBib.html#biBbuiellis">[BE14]</a>) to combine the cubic tree with resolutions for the cyclic groups of order <span class="SimpleMath">4</span> and <span class="SimpleMath">6</span> in order to produce a free <span class="SimpleMath">ZG</span>-resolution <span class="SimpleMath">R_∗</span> for <span class="SimpleMath">G=SL_2( Z)</span>. This resolution is also a free <span class="SimpleMath">ZΓ</span>-resolution with each term of rank</p>
<p class="pcenter">{\rm rank}_{\mathbb Z\Gamma} R_k = |G:\Gamma|\times {\rm rank}_{\mathbb ZG} R_k\ .</p>
<p>For congruence subgroups of lowish index in <span class="SimpleMath">G</span> this resolution suffices to make computations.</p>
<p>The following commands compute</p>
<p class="pcenter">H^1(\Gamma_0(39),\mathbb Z) = \mathbb Z^9\ .</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=ResolutionSL2Z_alt(2);</span>
Resolution of length 2 in characteristic 0 for SL(2,Integers) .
<span class="GAPprompt">gap></span> <span class="GAPinput">gamma:=HAP_CongruenceSubgroupGamma0(39);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">S:=ResolutionFiniteSubgroup(R,gamma);</span>
Resolution of length 2 in characteristic 0 for
CongruenceSubgroupGamma0( 39) .
<span class="GAPprompt">gap></span> <span class="GAPinput">Cohomology(HomToIntegers(S),1);</span>
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
</pre></div>
<p>This computation establishes that the space <span class="SimpleMath">M_2(Γ_0(39))</span> of weight <span class="SimpleMath">2</span> modular forms is of dimension <span class="SimpleMath">9</span>.</p>
<p>The following commands show that <span class="SimpleMath">rank_ ZΓ_0(39) R_1 = 112</span> but that it is possible to apply `Tietze like' simplifications to R_∗ to obtain a free ZΓ_0(39)-resolution T_∗ with rank_ ZΓ_0(39) T_1 = 11. It is more efficient to work with T_∗ when making cohomology computations with coefficients in a module A of large rank.
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S!.dimension(1);</span>
112
<span class="GAPprompt">gap></span> <span class="GAPinput">T:=TietzeReducedResolution(S);</span>
Resolution of length 2 in characteristic 0 for CongruenceSubgroupGamma0(
39) .
<span class="GAPprompt">gap></span> <span class="GAPinput">T!.dimension(1);</span>
11
</pre></div>
<p>The following commands compute</p>
<p class="pcenter">H^1(\Gamma_0(39),P_{\mathbb Z}(8)) = \mathbb Z_3 \oplus \mathbb Z_6
\oplus \mathbb Z_{168} \oplus \mathbb Z^{84}\ ,</p>
<p class="pcenter">H^1(\Gamma_0(39),P_{\mathbb Z}(9)) = \mathbb Z_2 \oplus \mathbb Z_2 .</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">P:=HomogeneousPolynomials(gamma,8);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c:=Cohomology(HomToIntegralModule(T,P),1);</span>
[ 3, 6, 168, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(c);</span>
87
<span class="GAPprompt">gap></span> <span class="GAPinput">P:=HomogeneousPolynomials(gamma,9);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c:=Cohomology(HomToIntegralModule(T,P),1);</span>
[ 2, 2 ]
</pre></div>
<p>This computation establishes that the space <span class="SimpleMath">M_10(Γ_0(39))</span> of weight <span class="SimpleMath">10</span> modular forms is of dimension <span class="SimpleMath">84</span>, and <span class="SimpleMath">M_11(Γ_0(39))</span> is of dimension <span class="SimpleMath">0</span>. (There are never any modular forms of odd weight, and so <span class="SimpleMath">M_k(Γ)=0</span> for all odd <span class="SimpleMath">k</span> and any congruence subgroup <span class="SimpleMath">Γ</span>.)</p>
<p><a id="X7F55F8EA82FE9122" name="X7F55F8EA82FE9122"></a></p>
<h5>13.4-1 <span class="Heading">Cohomology with rational coefficients</span></h5>
<p>To calculate cohomology <span class="SimpleMath">H^n(Γ,A)</span> with coefficients in a <span class="SimpleMath">QΓ</span>-module <span class="SimpleMath">A</span> it suffices to construct a resolution of <span class="SimpleMath">Z</span> by non-free <span class="SimpleMath">ZΓ</span>-modules where <span class="SimpleMath">Γ</span> acts with finite stabilizer groups on each module in the resolution. Computing over <span class="SimpleMath">Q</span> is computationally less expensive than computing over <span class="SimpleMath">Z</span>. The following commands first compute <span class="SimpleMath">H^1(Γ_0(39), Q) = H_1(Γ_0(39), Q)= Q^9</span>. As a larger example, they then compute <span class="SimpleMath">H^1(Γ_0(2^13-1), Q) = Q^1365</span> where <span class="SimpleMath">Γ_0(2^13-1)</span> has index <span class="SimpleMath">8192</span> in <span class="SimpleMath">SL_2( Z)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=ContractibleGcomplex("SL(2,Z)");</span>
Non-free resolution in characteristic 0 for SL(2,Integers) .
<span class="GAPprompt">gap></span> <span class="GAPinput">gamma:=HAP_CongruenceSubgroupGamma0(39);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">KK:=NonFreeResolutionFiniteSubgroup(K,gamma);</span>
Non-free resolution in characteristic 0 for <matrix group with
18 generators> .
<span class="GAPprompt">gap></span> <span class="GAPinput">C:=TensorWithRationals(KK);</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Homology(C,1);</span>
9
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=HAP_CongruenceSubgroupGamma0(2^13-1);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IndexInSL2Z(G);</span>
8192
<span class="GAPprompt">gap></span> <span class="GAPinput">KK:=NonFreeResolutionFiniteSubgroup(K,G);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C:=TensorWithRationals(KK);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Homology(C,1);</span>
1365
</pre></div>
<p><a id="X84D30F1580CD42D1" name="X84D30F1580CD42D1"></a></p>
<h4>13.5 <span class="Heading">Cuspidal cohomology</span></h4>
<p>To define and compute cuspidal cohomology we consider the action of <span class="SimpleMath">SL_2( Z)</span> on the upper-half plane <span class="SimpleMath">frak h</span> given by</p>
<p class="pcenter">\left(\begin{array}{ll}a&b\\ c &d \end{array}\right) z =
\frac{az +b}{cz+d}\ .</p>
<p>A standard 'fundamental domain' for this action is the region</p>
<p class="pcenter">\begin{array}{ll}
D=&\{z\in {\frak h}\ :\ |z| > 1, |{\rm Re}(z)| < \frac{1}{2}\} \\
&
\cup\ \{z\in {\frak h} \ :\ |z| \ge 1, {\rm Re}(z)=-\frac{1}{2}\}\\
& \cup\ \{z \in {\frak h}\ :\ |z|=1, -\frac{1}{2} \le {\rm Re}(z) \le 0\}
\end{array}
</p>
<p>illustrated below.</p>
<p><img src="images/filename-1.png" align="center" width="450" alt="Fundamental domain in the upper-half plane"/></p>
<p>The action factors through an action of <span class="SimpleMath">PSL_2( Z) =SL_2( Z)/⟨ (beginarrayrr-1&0 0 &-1 endarray)⟩</span>. The images of <span class="SimpleMath">D</span> under the action of <span class="SimpleMath">PSL_2( Z)</span> cover the upper-half plane, and any two images have at most a single point in common. The possible common points are the bottom left-hand corner point which is stabilized by <span class="SimpleMath">⟨ U⟩</span>, and the bottom middle point which is stabilized by <span class="SimpleMath">⟨ S⟩</span>.</p>
<p>A congruence subgroup <span class="SimpleMath">Γ</span> has a `fundamental domain' D_Γ equal to a union of finitely many copies of D, one copy for each coset in Γ∖ SL_2( Z). The quotient space X=Γ∖ frak h is not compact, and can be compactified in several ways. We are interested in the Borel-Serre compactification. This is a space X^BS for which there is an inclusion X↪ X^BS and this inclusion is a homotopy equivalence. One defines the boundary ∂ X^BS = X^BS - X and uses the inclusion ∂ X^BS ↪ X^BS ≃ X to define the cuspidal cohomology group, over the ground ring C, as
<p class="pcenter"> H_{cusp}^n(\Gamma,P_{\mathbb C}(k-2)) = \ker (\ H^n(X,P_{\mathbb C}(k-2)) \rightarrow
H^n(\partial X^{BS},P_{\mathbb C}(k-2)) \ ).</p>
<p>Strictly speaking, this is the definition of <em>interior cohomology</em> <span class="SimpleMath">H_!^n(Γ,P_ C(k-2))</span> which in general contains the cuspidal cohomology as a subgroup. However, for congruence subgroups of <span class="SimpleMath">SL_2( Z)</span> there is equality <span class="SimpleMath">H_!^n(Γ,P_ C(k-2)) = H_cusp^n(Γ,P_ C(k-2))</span>.</p>
<p>Working over <span class="SimpleMath">C</span> has the advantage of avoiding the technical issue that <span class="SimpleMath">Γ</span> does not necessarily act freely on <span class="SimpleMath">frak h</span> since there are points with finite cyclic stabilizer groups in <span class="SimpleMath">SL_2( Z)</span>. But it has the disadvantage of losing information about torsion in cohomology. So HAP confronts the issue by working with a contractible CW-complex <span class="SimpleMath">tilde X^BS</span> on which <span class="SimpleMath">Γ</span> acts freely, and <span class="SimpleMath">Γ</span>-equivariant inclusion <span class="SimpleMath">∂ tilde X^BS ↪ tilde X^BS</span>. The definition of cuspidal cohomology that we use, which coincides with the above definition when working over <span class="SimpleMath">C</span>, is</p>
<p class="pcenter"> H_{cusp}^n(\Gamma,A) = \ker (\ H^n({\rm Hom}_{\, \mathbb Z\Gamma}(C_\ast(\tilde X^{BS}), A)\, ) \rightarrow
H^n(\ {\rm Hom}_{\, \mathbb Z\Gamma}(C_\ast(\tilde \partial X^{BS}), A)\, \ ).</p>
<p>The following data is recorded and, using perturbation theory, is combined with free resolutions for <span class="SimpleMath">C_4</span> and <span class="SimpleMath">C_6</span> to constuct <span class="SimpleMath">tilde X^BS</span>.</p>
<p><img src="images/filename-2.png" align="center" width="450" alt="Borel-Serre compactified fundamental domain in the upper-half plane"/></p>
<p>The following commands calculate</p>
<p class="pcenter">H^1_{cusp}(\Gamma_0(39),\mathbb Z) = \mathbb Z^6\ .</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gamma:=HAP_CongruenceSubgroupGamma0(39);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">k:=2;; deg:=1;; c:=CuspidalCohomologyHomomorphism(gamma,deg,k);</span>
[ g1, g2, g3, g4, g5, g6, g7, g8, g9 ] -> [ g1^-1*g3, g1^-1*g3, g1^-1*g3,
g1^-1*g3, g1^-1*g2, g1^-1*g3, g1^-1*g4, g1^-1*g4, g1^-1*g4 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">AbelianInvariants(Kernel(c));</span>
[ 0, 0, 0, 0, 0, 0 ]
</pre></div>
<p>From the Eichler-Shimura isomorphism and the already calculated dimension of <span class="SimpleMath">M_2(Γ_0(39))≅ C^9</span>, we deduce from this cuspidal cohomology that the space <span class="SimpleMath">S_2(Γ_0(39))</span> of cuspidal weight <span class="SimpleMath">2</span> forms is of dimension <span class="SimpleMath">3</span>, and the Eisenstein space <span class="SimpleMath">E_2(Γ_0(39))≅ C^3</span> is of dimension <span class="SimpleMath">3</span>.</p>
<p>The following commands show that the space <span class="SimpleMath">S_4(Γ_0(39))</span> of cuspidal weight <span class="SimpleMath">4</span> forms is of dimension <span class="SimpleMath">12</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gamma:=HAP_CongruenceSubgroupGamma0(39);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">k:=4;; deg:=1;; c:=CuspidalCohomologyHomomorphism(gamma,deg,k);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">AbelianInvariants(Kernel(c));</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 ]
</pre></div>
<p><a id="X80861D3F87C29C43" name="X80861D3F87C29C43"></a></p>
<h4>13.6 <span class="Heading">Hecke operators on forms of weight 2</span></h4>
<p>A congruence subgroup <span class="SimpleMath">Γ ≤ SL_2( Z)</span> and element <span class="SimpleMath">g∈ SL_2( Q)</span> determine the subgroup <span class="SimpleMath">Γ' = Γ ∩ gΓ g^-1 and homomorphisms
<p class="pcenter"> \Gamma\ \hookleftarrow\ \Gamma'\ \ \stackrel{\gamma \mapsto g^{-1}\gamma g}{\longrightarrow}\ \ g^{-1}\Gamma' g\ \hookrightarrow \Gamma\ . </p>
<p>These homomorphisms give rise to homomorphisms of cohomology groups</p>
<p class="pcenter">H^n(\Gamma,\mathbb Z)\ \ \stackrel{tr}{\leftarrow} \ \ H^n(\Gamma',\mathbb Z) \ \ \stackrel{\alpha}{\leftarrow} \ \ H^n(g^{-1}\Gamma' g,\mathbb Z) \ \ \stackrel{\beta}{\leftarrow} H^n(\Gamma, \mathbb Z) </p>
<p>with <span class="SimpleMath">α</span>, <span class="SimpleMath">β</span> functorial maps, and <span class="SimpleMath">tr</span> the transfer map. We define the composite <span class="SimpleMath">T_g=tr ∘ α ∘ β: H^n(Γ, Z) → H^n(Γ, Z)</span> to be the <em> Hecke component </em> determined by <span class="SimpleMath">g</span>.</p>
<p>For <span class="SimpleMath">Γ=Γ_0(N)</span>, prime integer <span class="SimpleMath">p</span> coprime to <span class="SimpleMath">N</span>, and cohomology degree <span class="SimpleMath">n=1</span> we define the <em>Hecke operator</em> <span class="SimpleMath">T_p =T_g</span> where <span class="SimpleMath">g=(beginarraycc1&00&pendarray)</span>. Further details on this description of Hecke operators can be found in <a href="chapBib.html#biBstein">[Ste07, Appendix by P. Gunnells]</a>.</p>
<p>The following commands compute <span class="SimpleMath">T_2</span> and <span class="SimpleMath">T_5</span> and <span class="SimpleMath">Γ=Γ_0(39)</span>. The commands also compute the eigenvalues of these two Hecke operators. The final command confirms that <span class="SimpleMath">T_2</span> and <span class="SimpleMath">T_5</span> commute. (It is a fact that <span class="SimpleMath">T_pT_q=T_qT_p</span> for all <span class="SimpleMath">p,q</span>.)</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gamma:=HAP_CongruenceSubgroupGamma0(39);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">p:=2;;k:=2;;T2:=HeckeOperator(gamma,p,k);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(T2);</span>
[ [ -2, -2, 2, 2, 1, 2, 0, 0, 0 ],
[ -2, 0, 1, 2, -2, 2, 2, 2, -2 ],
[ -2, -1, 2, 2, -1, 2, 1, 1, -1 ],
[ -2, -1, 2, 2, 1, 1, 0, 0, 0 ],
[ -1, 0, 0, 2, -3, 2, 3, 3, -3 ],
[ 0, 1, 1, 1, -1, 0, 1, 1, -1 ],
[ -1, 1, 1, -1, 0, 1, 2, -1, 1 ],
[ -1, -1, 0, 2, -3, 2, 1, 4, -1 ],
[ 0, 1, 0, -1, -2, 1, 1, 1, 2 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Eigenvalues(Rationals,T2);</span>
[ 3, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">p:=5;;k:=2;;h:=HeckeOperator(gamma,p,k);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(T5);</span>
[ [ -1, -1, 3, 4, 0, 0, 1, 1, -1 ],
[ -5, -1, 5, 4, 0, 0, 3, 3, -3 ],
[ -2, 0, 4, 4, 1, 0, -1, -1, 1 ],
[ -2, 0, 3, 2, -3, 2, 4, 4, -4 ],
[ -4, -2, 4, 4, 3, 0, 1, 1, -1 ],
[ -6, -4, 5, 6, 1, 2, 2, 2, -2 ],
[ 1, 5, 0, -4, -3, 2, 5, -1, 1 ],
[ -2, -2, 2, 4, 0, 0, -2, 4, 2 ],
[ 1, 3, 0, -4, -4, 2, 2, 2, 4 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Eigenvalues(Rationals,T5);</span>
[ 6, 2 ]
gap>T2*T5=T5*T2;
true
</pre></div>
<p><a id="X831BB0897B988DA3" name="X831BB0897B988DA3"></a></p>
<h4>13.7 <span class="Heading">Hecke operators on forms of weight <span class="SimpleMath">≥ 2</span></span></h4>
<p>The above definition of Hecke operator <span class="SimpleMath">T_p</span> for <span class="SimpleMath">Γ=Γ_0(N)</span> extends to a Hecke operator <span class="SimpleMath">T_p: H^1(Γ,P_ Q(k-2) ) → H^1(Γ,P_ Q(k-2) )</span> for <span class="SimpleMath">k≥ 2</span>. We work over the rationals since that is a setting of much interest. The following commands compute the matrix of <span class="SimpleMath">T_2: H^1(Γ,P_ Q(k-2) ) → H^1(Γ,P_ Q(k-2) )</span> for <span class="SimpleMath">Γ=SL_2( Z)</span> and <span class="SimpleMath">k=4</span>;</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">H:=HAP_CongruenceSubgroupGamma0(1);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">h:=HeckeOperator(H,2,12);;Display(h);</span>
[ [ 2049, -7560, 0 ],
[ 0, -24, 0 ],
[ 0, 0, -24 ] ]
</pre></div>
<p><a id="X84CC51EE8525E0D9" name="X84CC51EE8525E0D9"></a></p>
<h4>13.8 <span class="Heading">Reconstructing modular forms from cohomology computations</span></h4>
<p>Given a modular form <span class="SimpleMath">f: frak h → C</span> associated to a congruence subgroup <span class="SimpleMath">Γ</span>, and given a compact edge <span class="SimpleMath">e</span> in the tessellation of <span class="SimpleMath">frak h</span> (<em>i.e.</em> an edge in the cubic tree <span class="SimpleMath">cal T</span>) arising from the above fundamental domain for <span class="SimpleMath">SL_2( Z)</span>, we can evaluate</p>
<p class="pcenter">\int_e f(z)\,dz \ .</p>
<p>In this way we obtain a cochain <span class="SimpleMath">f_1: C_1(cal T) → C</span> in <span class="SimpleMath">Hom_ ZΓ(C_1(cal T), C)</span> representing a cohomology class <span class="SimpleMath">c(f) ∈ H^1( Hom_ ZΓ(C_∗(cal T), C) ) = H^1(Γ, C)</span>. The correspondence <span class="SimpleMath">f↦ c(f)</span> underlies the Eichler-Shimura isomorphism. Hecke operators can be used to recover modular forms from cohomology classes.</p>
<p>Let <span class="SimpleMath">Γ=Γ_0(N)</span>. The above defined Hecke operators restrict to operators on cuspidal cohomology. On the left-hand side of the Eichler-Shimura isomorphism Hecke operators restrict to operators <span class="SimpleMath">T_s: S_2(Γ) → S_2(Γ)</span> for <span class="SimpleMath">s≥ 1</span>.</p>
<p>Consider the function <span class="SimpleMath">q=q(z)=e^2π i z</span> which is holomorphic on <span class="SimpleMath">C</span>. For any modular form <span class="SimpleMath">f(z) ∈ M_k(Γ)</span> there are numbers <span class="SimpleMath">a_s</span> such that</p>
<p class="pcenter">f(z) = \sum_{s=0}^\infty a_sq^s </p>
<p>for all <span class="SimpleMath">z∈ frak h</span>. The form <span class="SimpleMath">f</span> is a cusp form if <span class="SimpleMath">a_0=0</span>.</p>
<p>A non-zero cusp form <span class="SimpleMath">f∈ S_2(Γ)</span> is a cusp <em>eigenform</em> if it is simultaneously an eigenvector for the Hecke operators <span class="SimpleMath">T_s</span> for all <span class="SimpleMath">s =1,2,3,⋯</span> coprime to the level <span class="SimpleMath">N</span>. A cusp eigenform is said to be <em>normalized</em> if its coefficient <span class="SimpleMath">a_1=1</span>. It turns out that if <span class="SimpleMath">f</span> is normalized then the coefficient <span class="SimpleMath">a_s</span> is an eigenvalue for <span class="SimpleMath">T_s</span> (see for instance <a href="chapBib.html#biBstein">[Ste07]</a> for details). It can be shown <a href="chapBib.html#biBatkinlehner">[AL70]</a> that <span class="SimpleMath">S_2(Γ_0(N))</span> admits a "basis constructed from eigenforms".</p>
<p>This all implies that, in principle, we can construct an approximation to an explicit basis for the space <span class="SimpleMath">S_2(Γ_0(N))</span> of cusp forms by computing eigenvalues for Hecke operators.</p>
<p>Suppose that we would like a basis for <span class="SimpleMath">S_2(Γ_0(11))</span>. The following commands first show that <span class="SimpleMath">H^1_cusp(Γ_0(11), Z)= Z⊕ Z</span> from which we deduce that <span class="SimpleMath">S_2(Γ_0(11)) = C</span> is <span class="SimpleMath">1</span>-dimensional and thus admits a basis of eigenforms. Then eigenvalues of Hecke operators are calculated to establish that the modular form</p>
<p class="pcenter">f = q -2q^2 -q^3 +2q^4 +q^5 +2q^6 -2q^7 + -2q^9 -2q^{10} + \cdots </p>
<p>constitutes a basis for <span class="SimpleMath">S_2(Γ_0(11))</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gamma:=HAP_CongruenceSubgroupGamma0(11);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">AbelianInvariants(Kernel(CuspidalCohomologyHomomorphism(gamma,1,2)));</span>
[ 0, 0 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">T1:=HeckeOperator(gamma,1,2);; Display(T1);</span>
[ [ 1, 0, 0 ],
[ 0, 1, 0 ],
[ 0, 0, 1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">T2:=HeckeOperator(gamma,2,2);; Display(T2);</span>
[ [ 3, -4, 4 ],
[ 0, -2, 0 ],
[ 0, 0, -2 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">T3:=HeckeOperator(gamma,3,2);; Display(T3);</span>
[ [ 4, -4, 4 ],
[ 0, -1, 0 ],
[ 0, 0, -1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">T5:=HeckeOperator(gamma,5,2);; Display(T5);</span>
[ [ 6, -4, 4 ],
[ 0, 1, 0 ],
[ 0, 0, 1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">T7:=HeckeOperator(gamma,7,2);; Display(T7);</span>
[ [ 8, -8, 8 ],
[ 0, -2, 0 ],
[ 0, 0, -2 ] ]
</pre></div>
<p>For a normalized eigenform <span class="SimpleMath">f=1 + ∑_s=2^∞ a_sq^s</span> the coefficients <span class="SimpleMath">a_s</span> with <span class="SimpleMath">s</span> a composite integer can be expressed in terms of the coefficients <span class="SimpleMath">a_p</span> for prime <span class="SimpleMath">p</span>. If <span class="SimpleMath">r,s</span> are coprime then <span class="SimpleMath">T_rs =T_rT_s</span>. If <span class="SimpleMath">p</span> is a prime that is not a divisor of the level <span class="SimpleMath">N</span> of <span class="SimpleMath">Γ</span> then <span class="SimpleMath">a_p^m =a_p^m-1}a_p - p a_p^m-2}.</span> If the prime <span class="SimpleMath">p</span> divides <span class="SimpleMath">N</span> then <span class="SimpleMath">a_p^m = (a_p)^m</span>. It thus suffices to compute the coefficients <span class="SimpleMath">a_p</span> for prime integers <span class="SimpleMath">p</span> only.</p>
<p>The following commands establish that <span class="SimpleMath">S_12(SL_2( Z))</span> has a basis consisting of one cusp eigenform</p>
<p><span class="SimpleMath">q - 24q^2 + 252q^3 - 1472q^4 + 4830q^5 - 6048q^6 - 16744q^7 + 84480q^8 - 113643q^9</span></p>
<p><span class="SimpleMath">- 115920q^10 + 534612q^11 - 370944q^12 - 577738q^13 + 401856q^14 + 1217160q^15 + 987136q^16</span></p>
<p><span class="SimpleMath">- 6905934q^17 + 2727432q^18 + 10661420q^19 + ...</span></p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=ResolutionSL2Z_alt(2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=R!.group;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">P:=HomogeneousPolynomials(G,14);</span>
MappingByFunction( SL(2,Integers), <matrix group with
2 generators>, function( x ) ... end )
<span class="GAPprompt">gap></span> <span class="GAPinput">Cohomology(HomToIntegralModule(R,P),1);</span>
[ 2, 2, 156, 0, 0, 0 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">#Thus the space S_12 of cusp forms is of dimension 1</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=HAP_CongruenceSubgroupGamma0(1);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">for p in [2,3,5,7,11,13,17,19] do</span>
<span class="GAPprompt">></span> <span class="GAPinput">T:=HeckeOperator(G,p,12);;</span>
<span class="GAPprompt">></span> <span class="GAPinput">Print("eigenvalues= ",Eigenvalues(Rationals,T), " and eigenvectors = ", Eigenvectors(Rationals,T)," for p= ",p,"\n");</span>
<span class="GAPprompt">></span> <span class="GAPinput">od;</span>
eigenvalues= [ 2049, -24 ] and eigenvectors = [ [ 1, -2520/691, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] for p= 2
eigenvalues= [ 177148, 252 ] and eigenvectors = [ [ 1, -2520/691, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] for p= 3
eigenvalues= [ 48828126, 4830 ] and eigenvectors = [ [ 1, -2520/691, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] for p= 5
eigenvalues= [ 1977326744, -16744 ] and eigenvectors = [ [ 1, -2520/691, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] for p= 7
eigenvalues= [ 285311670612, 534612 ] and eigenvectors = [ [ 1, -2520/691, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] for p= 11
eigenvalues= [ 1792160394038, -577738 ] and eigenvectors = [ [ 1, -2520/691, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] for p= 13
eigenvalues= [ 34271896307634, -6905934 ] and eigenvectors = [ [ 1, -2520/691, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] for p= 17
eigenvalues= [ 116490258898220, 10661420 ] and eigenvectors = [ [ 1, -2520/691, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] for p= 19
</pre></div>
<p><a id="X8180E53C834301EF" name="X8180E53C834301EF"></a></p>
<h4>13.9 <span class="Heading">The Picard group</span></h4>
<p>Let us now consider the <em>Picard group</em> <span class="SimpleMath">G=SL_2( Z[ i])</span> and its action 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>To describe the action we introduce 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>. The action is given by</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>Alternatively, and more explicitly, 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>A standard 'fundamental domain' <span class="SimpleMath">D</span> for this action is the following region (with some of the boundary points removed).</p>
<p class="pcenter">
\{z+tj\in {\frak h}^3\ |\ 0 \le |{\rm Re}(z)| \le \frac{1}{2}, 0\le {\rm Im}(z) \le \frac{1}{2}, z\overline z +t^2 \ge 1\}
</p>
<p><img src="images/picarddomain.png" align="center" width="350" alt="Fundamental domain for the Picard group"/></p>
<p>The four bottom vertices of <span class="SimpleMath">D</span> are <span class="SimpleMath">a = -frac12 +frac12i +fracsqrt2}2j</span>, <span class="SimpleMath">b = -frac12 +fracsqrt3}2j</span>, <span class="SimpleMath">c = frac12 +fracsqrt3}2j</span>, <span class="SimpleMath">d = frac12 +frac12i +fracsqrt2}2j</span>.</p>
<p>The upper-half space <span class="SimpleMath">frak h^3</span> can be retracted onto a <span class="SimpleMath">2</span>-dimensional subspace <span class="SimpleMath">cal T ⊂ frak h^3</span>. The space <span class="SimpleMath">cal T</span> is a contractible <span class="SimpleMath">2</span>-dimensional regular CW-complex, and the action of the Picard group <span class="SimpleMath">G</span> restricts to a cellular action of <span class="SimpleMath">G</span> on <span class="SimpleMath">cal T</span>.</p>
<p>Using perturbation techniques, the <span class="SimpleMath">2</span>-complex <span class="SimpleMath">cal T</span> can be combined with free resolutions for the cell stabilizer groups to contruct a regular CW-complex <span class="SimpleMath">X</span> on which the Picard group <span class="SimpleMath">G</span> acts freely. The following commands compute the first few terms of the free <span class="SimpleMath">ZG</span>-resolution <span class="SimpleMath">R_∗ =C_∗ X</span>. Then <span class="SimpleMath">R_∗</span> is used to compute</p>
<p class="pcenter">H^1(G,\mathbb Z) =0\ ,</p>
<p class="pcenter">H^2(G,\mathbb Z) =\mathbb Z_2\oplus \mathbb Z_2\ ,</p>
<p class="pcenter">H^3(G,\mathbb Z) =\mathbb Z_6\ ,</p>
<p class="pcenter">H^4(G,\mathbb Z) =\mathbb Z_4\oplus \mathbb Z_{24}\ ,</p>
<p>and compute a free presentation for <span class="SimpleMath">G</span> involving four generators and seven relators.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">K:=ContractibleGcomplex("SL(2,O-1)");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=FreeGResolution(K,5);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Cohomology(HomToIntegers(R),1);</span>
[ ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Cohomology(HomToIntegers(R),2);</span>
[ 2, 2 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Cohomology(HomToIntegers(R),3);</span>
[ 6 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Cohomology(HomToIntegers(R),4);</span>
[ 4, 24 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">P:=PresentationOfResolution(R);</span>
rec( freeGroup := <free group on the generators [ f1, f2, f3, f4 ]>,
gens := [ 184, 185, 186, 187 ],
relators := [ f1^2*f2^-1*f1^-1*f2^-1, f1*f2*f1*f2^-2,
f3*f2^2*f1*(f2*f1^-1)^2*f3^-1*f1^2*f2^-2,
f1*(f2*f1^-1)^2*f3^-1*f1^2*f2^-1*f3^-1,
f4*f2*f1*(f2*f1^-1)^2*f4^-1*f1*f2^-1, f1*f4^-1*f1^-2*f4^-1,
f3*f2*f1*(f2*f1^-1)^2*f4^-1*f1*f2^-1*f3^-1*f4*f2 ] )
</pre></div>
<p>We can also compute the cohomology of <span class="SimpleMath">G=SL_2( Z[i])</span> with coefficients in a module such as the module <span class="SimpleMath">P_ Z[i](k)</span> of degree <span class="SimpleMath">k</span> homogeneous polynomials with coefficients in <span class="SimpleMath">Z[i]</span> and with the action described above. For instance, the following commands compute</p>
<p class="pcenter">H^1(G,P_{\mathbb Z[i]}(24)) = (\mathbb Z_2)^4 \oplus \mathbb Z_4
\oplus \mathbb Z_8 \oplus \mathbb Z_{40} \oplus \mathbb Z_{80}\, ,</p>
<p class="pcenter">H^2(G,P_{\mathbb Z[i]}(24)) = (\mathbb Z_2)^{24} \oplus \mathbb Z_{520030}\oplus \mathbb Z_{1040060} \oplus \mathbb Z^2\, ,</p>
<p class="pcenter">H^3(G,P_{\mathbb Z[i]}(24)) = (\mathbb Z_2)^{22} \oplus \mathbb Z_{4}\oplus (\mathbb Z_{12})^2 \, .</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=R!.group;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">M:=HomogeneousPolynomials(G,24);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C:=HomToIntegralModule(R,M);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Cohomology(C,1);</span>
[ 2, 2, 2, 2, 4, 8, 40, 80 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Cohomology(C,2);</span>
[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
520030, 1040060, 0, 0 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Cohomology(C,3);</span>
[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 12, 12
]
</pre></div>
<p><a id="X858B1B5D8506FE81" name="X858B1B5D8506FE81"></a></p>
<h4>13.10 <span class="Heading">Bianchi groups</span></h4>
<p>The <em>Bianchi groups</em> are the groups <span class="SimpleMath">G=PSL_2(cal O_-d)</span> where <span class="SimpleMath">d</span> is a square free positive integer and <span class="SimpleMat | |