|
|
|
|
Quelle chap13_mj.html
Sprache: HTML
|
|
| products/Sources/formale Sprachen/GAP/pkg/hap/tutorial/chap13_mj.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>
< script type= "text/javascript"
src= "https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</ script>
< 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_mj.html">Top</a> <a href="chap1_mj.html">1</a> <a href="chap2_mj.html">2</a> <a href="chap3_mj.html">3</a> <a href="chap4_mj.html">4</a> <a href="chap5_mj.html">5</a> <a href="chap6_mj.html">6</a> <a href="chap7_mj.html">7</a> <a href="chap8_mj.html">8</a> <a href="chap9_mj.html">9</a> <a href="chap10_mj.html">10</a> <a href="chap11_mj.html">11</a> <a href="chap12_mj.html">12</a> <a href="chap13_mj.html">13</a> <a href="chap14_mj.html">14</a> <a href="chap15_mj.html">15</a> <a href="chap16_mj.html">16</a> <a href="chapBib_mj.html">Bib</a> <a href="chapInd_mj.html">Ind</a> </div>
<div class="chlinkprevnexttop"> <a href="chap0_mj.html">[Top of Book]</a> <a href="chap0_mj.html#contents">[Contents]</a> <a href="chap12_mj.html">[Previous Chapter]</a> <a href="chap14_mj.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap13.html">[MathJax off]</a></p>
<p><a id="X86D5DB887ACB1661" name="X86D5DB887ACB1661"></a></p>
<div class="ChapSects"><a href="chap13_mj.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_mj.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_mj.html#X7BFA2C91868255D9">13.2 <span class="Heading">Generators for <span class="SimpleMath">\(SL_2(\mathbb Z)\)</span> and the cubic tree</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13_mj.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_mj.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_mj.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_mj.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_mj.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_mj.html#X831BB0897B988DA3">13.7 <span class="Heading">Hecke operators on forms of weight <span class="SimpleMath">\( \ge 2\)</span></span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap13_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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">\(\Gamma\)</span> of <span class="SimpleMath">\(SL_2(\mathbb Z)\)</span>. Also, in Subsection 10.8 onwards, we demonstrate cohomology computations for the <em>Picard group</em> <span class="SimpleMath">\(SL_2(\mathbb 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">\(\mathbb 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}=\mathbb 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_mj.html#biBeichler">[Eic57]</a><a href="chapBib_mj.html#biBshimura">[Shi59]</a></p>
<p class="center">\[ 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">\(\Gamma\)</span> of <span class="SimpleMath">\(SL_2(\mathbb 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">\(\Gamma\)</span> of <span class="SimpleMath">\(SL_2(\mathbb 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">\(\pi_N\colon SL_2(\mathbb Z) \rightarrow SL_2(\mathbb Z/N\mathbb Z)\)</span>. So any congruence subgroup is of finite index in <span class="SimpleMath">\(SL_2(\mathbb Z)\)</span>, but the converse is not true.</p>
<p>One congruence subgroup of particular interest is the group <span class="SimpleMath">\(\Gamma_1(N)=\ker(\pi_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">\(\Gamma_0(N)\)</span> of those matrices that project to upper triangular matrices in <span class="SimpleMath">\(SL_2(\mathbb Z/N\mathbb Z)\)</span>.</p>
<p>A <em>modular form</em> of weight <span class="SimpleMath">\(k\)</span> for a congruence subgroup <span class="SimpleMath">\(\Gamma\)</span> is a complex valued function on the upper-half plane, <span class="SimpleMath">\(f\colon {\frak{h}}=\{z\in \mathbb C : Re(z)>0\} \rightarrow \mathbb C\)</span>, satisfying:</p>
<ul>
<li><p><span class="SimpleMath">\(\displaystyle f(\frac{az+b}{cz+d}) = (cz+d)^k f(z)\)</span> for <span class="SimpleMath">\(\left(\begin{array}{ll}a&b\\ c &d \end{array}\right) \in \Gamma\)</span>,</p>
</li>
<li><p><span class="SimpleMath">\(f\)</span> is `holomorphic' on the <em>extended upper-half plane</em> <span class="SimpleMath">\(\frak{h}^\ast = \frak{h} \cup \mathbb Q \cup \{\infty\}\)</span> 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">\(\Gamma\)</span> form a vector space <span class="SimpleMath">\(M_k(\Gamma)\)</span> over <span class="SimpleMath">\(\mathbb 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(\infty)=0\)</span>. The collection of all weight <span class="SimpleMath">\(k\)</span> cusp forms for <span class="SimpleMath">\(\Gamma\)</span> form a vector subspace <span class="SimpleMath">\(S_k(\Gamma)\)</span>. There is a decomposition</p>
<p class="center">\[M_k(\Gamma) \cong S_k(\Gamma) \oplus E_k(\Gamma)\]</p>
<p>involving a summand <span class="SimpleMath">\(E_k(\Gamma)\)</span> known as the <em>Eisenstein space</em>. See <a href="chapBib_mj.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_mj.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">\(\mathbb Z\Gamma\)</span>-module <span class="SimpleMath">\(P_{\mathbb C}(k-2)\subset \mathbb C[x,y]\)</span> denotes the space of homogeneous degree <span class="SimpleMath">\(k-2\)</span> polynomials with action of <span class="SimpleMath">\(\Gamma\)</span> given by</p>
<p class="center">\[\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_{\mathbb C}(0)=\mathbb C\)</span> is the trivial module. Below we shall compute with the integral analogue <span class="SimpleMath">\(P_{\mathbb Z}(k-2) \subset \mathbb 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(\Gamma)\)</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(\mathbb Z)\)</span> and the cubic tree</span></h4>
<p>The matrices <span class="SimpleMath">\(S=\left(\begin{array}{rr}0&-1\\ 1 &0 \end{array}\right)\)</span> and <span class="SimpleMath">\(T=\left(\begin{array}{rr}1&1\\ 0 &1 \end{array}\right)\)</span> generate <span class="SimpleMath">\(SL_2(\mathbb 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 = \left(\begin{array}{rr}0&-1\\ 1 &1 \end{array}\right)\)</span>. The matrices <span class="SimpleMath">\(S\)</span> and <span class="SimpleMath">\(U\)</span> also generate <span class="SimpleMath">\(SL_2(\mathbb Z)\)</span>. In fact we have a free presentation <span class="SimpleMath">\(SL_2(\mathbb Z)= \langle S,U\, |\, S^4=U^6=1, S^2=U^3 \rangle \)</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}=\langle U\rangle\)</span> in <span class="SimpleMath">\(SL_2(\mathbb Z)\)</span> as vertices, and joining cosets <span class="SimpleMath">\(x\,{\cal U} \)</span> and <span class="SimpleMath">\(y\,{\cal U}\)</span> by an edge if, and only if, <span class="SimpleMath">\(x^{-1}y \in {\cal U}\, S\,{\cal U}\)</span>. Thus the vertex <span class="SimpleMath">\(\cal U \)</span> is joined to <span class="SimpleMath">\(S\,{\cal U} \)</span>, <span class="SimpleMath">\(US\,{\cal U}\)</span> and <span class="SimpleMath">\(U^2S\,{\cal 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(\mathbb 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}=\langle U\rangle\)</span> and each edge is stabilized by a cyclic subgroup conjugate to <span class="SimpleMath">\({\cal S} =\langle S \rangle\)</span>.</p>
<p>In order to store this action of <span class="SimpleMath">\(SL_2(\mathbb 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(\mathbb Z)\)</span> is isomorphic, as an abstract group, to the free product <span class="SimpleMath">\(\mathbb Z_2\ast \mathbb Z_3\)</span>. By the Kurosh subgroup theorem, any finite index subgroup <span class="SimpleMath">\(M \subset {\cal M}\)</span> is isomorphic to the free product of finitely many copies of <span class="SimpleMath">\(\mathbb Z_2\)</span>s, <span class="SimpleMath">\(\mathbb Z_3\)</span>s and <span class="SimpleMath">\(\mathbb Z\)</span>s. A subset <span class="SimpleMath">\(\underline x \subset 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(\mathbb Z)\)</span> is <em>projectively independent</em> if it maps injectively onto an independent set of subgroup generators <span class="SimpleMath">\(\underline x\subset {\cal M}\)</span>. The generating set <span class="SimpleMath">\(\{S,U\}\)</span> for <span class="SimpleMath">\(SL_2(\mathbb 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">\(\Gamma\)</span>. If a small generating set for <span class="SimpleMath">\(\Gamma\)</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">\(\mathbb ZG\)</span>-resolutons in <a href="chapBib_mj.html#biBellisharrisskoldberg">[EHS06, Theorem 2]</a> and an old observation of John Milnor that a free <span class="SimpleMath">\(\mathbb 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_\ast X\)</span> is a <span class="SimpleMath">\(\mathbb ZG\)</span>-resolution of <span class="SimpleMath">\(\mathbb 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} \le 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]\otimes [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\setminus 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">\(\Gamma=\Gamma_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">\(\Gamma\)</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_{\Gamma}\setminus T\)</span> we need to determine a cellular subspace <span class="SimpleMath">\(D_\Gamma \subset \cal T\)</span> whose images under the action of <span class="SimpleMath">\(\Gamma\)</span> cover <span class="SimpleMath">\(\cal T\)</span> and are pairwise either disjoint or identical. The subspace <span class="SimpleMath">\(D_\Gamma\)</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 <span class="SimpleMath">\(D_\Gamma\)</span> a <em>fundamental region</em> for <span class="SimpleMath">\(\Gamma\)</span>. We denote by <span class="SimpleMath">\(\mathring D_\Gamma\)</span> the largest CW-subcomplex of <span class="SimpleMath">\(D_\Gamma\)</span>. The vertices of <span class="SimpleMath">\(\mathring D_\Gamma\)</span> are the same as the vertices of <span class="SimpleMath">\(D_\Gamma\)</span>. Thus <span class="SimpleMath">\(\mathring D_\Gamma\)</span> is a subtree of the cubic tree with <span class="SimpleMath">\(|\Gamma|/6\)</span> vertices. For each vertex <span class="SimpleMath">\(v\)</span> in the tree <span class="SimpleMath">\(\mathring D_\Gamma\)</span> define <span class="SimpleMath">\(\eta(v)=3 -{\rm degree}(v)\)</span>. Then the number of generators for <span class="SimpleMath">\( \Gamma \)</span> will be <span class="SimpleMath">\((1/2)\sum_{v\in \mathring D_\Gamma} \eta(v)\)</span>.</p>
<p>The following commands determine projectively independent generators for <span class="SimpleMath">\(\Gamma_1(6)\)</span> and display <span class="SimpleMath">\(\mathring D_{\Gamma_1(6)}\)</span>. The subgroup <span class="SimpleMath">\(\Gamma_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(\mathbb Z)\)</span> is described in <a href="chapBib_mj.html#biBkulkarni">[Kul91]</a>.</p>
<p>The congruence subgroup <span class="SimpleMath">\(\Gamma_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}'\)</span> on whose vertex set <span class="SimpleMath">\(\Gamma_0(N)\)</span> acts freely. This alternative approach will produce a redundant set of generators. The following commands display <span class="SimpleMath">\(\mathring D_{\Gamma_0(39)}\)</span> for a fundamental region in <span class="SimpleMath">\({\cal T}'\)</span>. They also use the corresponding generating set for <span class="SimpleMath">\(\Gamma_0(39)\)</span>, involving <span class="SimpleMath">\(18\)</span> generators, to compute the abelianization <span class="SimpleMath">\(\Gamma_0(39)^{ab}= \mathbb Z_2 \oplus \mathbb Z_3^2 \oplus \mathbb 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_\Gamma\)</span> one only needs to be able to test whether a given matrix lies in <span class="SimpleMath">\(\Gamma\)</span> or not. Given an inclusion <span class="SimpleMath">\(\Gamma'\subset \Gamma\)</span> of congruence subgroups, it is straightforward to use the trees <span class="SimpleMath">\(\mathring D_{\Gamma'}\)</span> and <span class="SimpleMath">\(\mathring D_{\Gamma}\)</span> to compute a system of coset representative for <span class="SimpleMath">\(\Gamma'\setminus \Gamma\)</span>.</p>
<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(\Gamma,A)\)</span> of a congruence subgroup <span class="SimpleMath">\(\Gamma\)</span> with coefficients in a <span class="SimpleMath">\(\mathbb Z\Gamma\)</span>-module <span class="SimpleMath">\(A\)</span> we need to construct <span class="SimpleMath">\(n+1\)</span> terms of a free <span class="SimpleMath">\(\mathbb Z\Gamma\)</span>-resolution of <span class="SimpleMath">\(\mathbb Z\)</span>. We can do this by first using perturbation techniques (as described in <a href="chapBib_mj.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">\(\mathbb ZG\)</span>-resolution <span class="SimpleMath">\(R_\ast\)</span> for <span class="SimpleMath">\(G=SL_2(\mathbb Z)\)</span>. This resolution is also a free <span class="SimpleMath">\(\mathbb Z\Gamma\)</span>-resolution with each term of rank</p>
<p class="center">\[{\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="center">\[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(\Gamma_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">\({\rm rank}_{\mathbb Z\Gamma_0(39)} R_1 = 112\)</span> but that it is possible to apply `Tietze like' simplifications to <span class="SimpleMath">\(R_\ast\)</span> to obtain a free <span class="SimpleMath">\(\mathbb Z\Gamma_0(39)\)</span>-resolution <span class="SimpleMath">\(T_\ast\)</span> with <span class="SimpleMath">\({\rm rank}_{\mathbb Z\Gamma_0(39)} T_1 = 11\)</span>. It is more efficient to work with <span class="SimpleMath">\(T_\ast\)</span> when making cohomology computations with coefficients in a module <span class="SimpleMath">\(A\)</span> of large rank.</p>
<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="center">\[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="center">\[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}(\Gamma_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}(\Gamma_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(\Gamma)=0\)</span> for all odd <span class="SimpleMath">\(k\)</span> and any congruence subgroup <span class="SimpleMath">\(\Gamma\)</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(\Gamma,A)\)</span> with coefficients in a <span class="SimpleMath">\(\mathbb Q\Gamma\)</span>-module <span class="SimpleMath">\(A\)</span> it suffices to construct a resolution of <span class="SimpleMath">\(\mathbb Z\)</span> by non-free <span class="SimpleMath">\(\mathbb Z\Gamma\)</span>-modules where <span class="SimpleMath">\(\Gamma\)</span> acts with finite stabilizer groups on each module in the resolution. Computing over <span class="SimpleMath">\(\mathbb Q\)</span> is computationally less expensive than computing over <span class="SimpleMath">\(\mathbb Z\)</span>. The following commands first compute <span class="SimpleMath">\(H^1(\Gamma_0(39),\mathbb Q) = H_1(\Gamma_0(39),\mathbb Q)= \mathbb Q^9\)</span>. As a larger example, they then compute <span class="SimpleMath">\(H^1(\Gamma_0(2^{13}-1),\mathbb Q) =\mathbb Q^{1365}\)</span> where <span class="SimpleMath">\(\Gamma_0(2^{13}-1)\)</span> has index <span class="SimpleMath">\(8192\)</span> in <span class="SimpleMath">\(SL_2(\mathbb 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(\mathbb Z)\)</span> on the upper-half plane <span class="SimpleMath">\({\frak h}\)</span> given by</p>
<p class="center">\[\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="center">\[\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(\mathbb Z) =SL_2(\mathbb Z)/\langle \left(\begin{array}{rr}-1&0\\ 0 &-1 \end{array}\right)\rangle\)</span>. The images of <span class="SimpleMath">\(D\)</span> under the action of <span class="SimpleMath">\(PSL_2(\mathbb 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">\(\langle U\rangle\)</span>, and the bottom middle point which is stabilized by <span class="SimpleMath">\(\langle S\rangle\)</span>.</p>
<p>A congruence subgroup <span class="SimpleMath">\(\Gamma\)</span> has a `fundamental domain' <span class="SimpleMath">\(D_\Gamma\)</span> equal to a union of finitely many copies of <span class="SimpleMath">\(D\)</span>, one copy for each coset in <span class="SimpleMath">\(\Gamma\setminus SL_2(\mathbb Z)\)</span>. The quotient space <span class="SimpleMath">\(X=\Gamma\setminus {\frak h}\)</span> is not compact, and can be compactified in several ways. We are interested in the Borel-Serre compactification. This is a space <span class="SimpleMath">\(X^{BS}\)</span> for which there is an inclusion <span class="SimpleMath">\(X\hookrightarrow X^{BS}\)</span> and this inclusion is a homotopy equivalence. One defines the <em>boundary</em> <span class="SimpleMath">\(\partial X^{BS} = X^{BS} - X\)</span> and uses the inclusion <span class="SimpleMath">\(\partial X^{BS} \hookrightarrow X^{BS} \simeq X\)</span> to define the cuspidal cohomology group, over the ground ring <span class="SimpleMath">\(\mathbb C\)</span>, as</p>
<p class="center">\[ 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(\Gamma,P_{\mathbb C}(k-2))\)</span> which in general contains the cuspidal cohomology as a subgroup. However, for congruence subgroups of <span class="SimpleMath">\(SL_2(\mathbb Z)\)</span> there is equality <span class="SimpleMath">\(H_!^n(\Gamma,P_{\mathbb C}(k-2)) = H_{cusp}^n(\Gamma,P_{\mathbb C}(k-2))\)</span>.</p>
<p>Working over <span class="SimpleMath">\(\mathbb C\)</span> has the advantage of avoiding the technical issue that <span class="SimpleMath">\(\Gamma \)</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(\mathbb 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">\(\Gamma\)</span> acts freely, and <span class="SimpleMath">\(\Gamma\)</span>-equivariant inclusion <span class="SimpleMath">\(\partial \tilde X^{BS} \hookrightarrow \tilde X^{BS}\)</span>. The definition of cuspidal cohomology that we use, which coincides with the above definition when working over <span class="SimpleMath">\(\mathbb C\)</span>, is</p>
<p class="center">\[ 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="center">\[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(\Gamma_0(39))\cong \mathbb C^9\)</span>, we deduce from this cuspidal cohomology that the space <span class="SimpleMath">\(S_2(\Gamma_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(\Gamma_0(39))\cong \mathbb 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(\Gamma_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">\(\Gamma \le SL_2(\mathbb Z)\)</span> and element <span class="SimpleMath">\(g\in SL_2(\mathbb Q)\)</span> determine the subgroup <span class="SimpleMath">\(\Gamma' = \Gamma \cap g\Gamma g^{-1} \)</span> and homomorphisms</p>
<p class="center">\[ \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="center">\[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">\(\alpha\)</span>, <span class="SimpleMath">\(\beta\)</span> functorial maps, and <span class="SimpleMath">\(tr\)</span> the transfer map. We define the composite <span class="SimpleMath">\(T_g=tr \circ \alpha \circ \beta\colon H^n(\Gamma, \mathbb Z) \rightarrow H^n(\Gamma, \mathbb Z)\)</span> to be the <em> Hecke component </em> determined by <span class="SimpleMath">\(g\)</span>.</p>
<p>For <span class="SimpleMath">\(\Gamma=\Gamma_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=\left(\begin{array}{cc}1&0\\0&p\end{array}\right)\)</span>. Further details on this description of Hecke operators can be found in <a href="chapBib_mj.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">\(\Gamma=\Gamma_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">\( \ge 2\)</span></span></h4>
<p>The above definition of Hecke operator <span class="SimpleMath">\(T_p\)</span> for <span class="SimpleMath">\(\Gamma=\Gamma_0(N)\)</span> extends to a Hecke operator <span class="SimpleMath">\(T_p\colon H^1(\Gamma,P_{\mathbb Q}(k-2) ) \rightarrow H^1(\Gamma,P_{\mathbb Q}(k-2) )\)</span> for <span class="SimpleMath">\(k\ge 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\colon H^1(\Gamma,P_{\mathbb Q}(k-2) ) \rightarrow H^1(\Gamma,P_{\mathbb Q}(k-2) )\)</span> for <span class="SimpleMath">\(\Gamma=SL_2(\mathbb 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\colon {\frak h} \rightarrow \mathbb C\)</span> associated to a congruence subgroup <span class="SimpleMath">\(\Gamma\)</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(\mathbb Z)\)</span>, we can evaluate</p>
<p class="center">\[\int_e f(z)\,dz \ .\]</p>
<p>In this way we obtain a cochain <span class="SimpleMath">\(f_1\colon C_1({\cal T}) \rightarrow \mathbb C\)</span> in <span class="SimpleMath">\(Hom_{\mathbb Z\Gamma}(C_1({\cal T}), \mathbb C)\)</span> representing a cohomology class <span class="SimpleMath">\(c(f) \in H^1(\, Hom_{\mathbb Z\Gamma}(C_\ast({\cal T}), \mathbb C) \,) = H^1(\Gamma,\mathbb C)\)</span>. The correspondence <span class="SimpleMath">\(f\mapsto 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">\(\Gamma=\Gamma_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\colon S_2(\Gamma) \rightarrow S_2(\Gamma)\)</span> for <span class="SimpleMath">\(s\ge 1\)</span>.</p>
<p>Consider the function <span class="SimpleMath">\(q=q(z)=e^{2\pi i z}\)</span> which is holomorphic on <span class="SimpleMath">\(\mathbb C\)</span>. For any modular form <span class="SimpleMath">\(f(z) \in M_k(\Gamma)\)</span> there are numbers <span class="SimpleMath">\(a_s\)</span> such that</p>
<p class="center">\[f(z) = \sum_{s=0}^\infty a_sq^s \]</p>
<p>for all <span class="SimpleMath">\(z\in {\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\in S_2(\Gamma)\)</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,\cdots\)</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_mj.html#biBstein">[Ste07]</a> for details). It can be shown <a href="chapBib_mj.html#biBatkinlehner">[AL70]</a> that <span class="SimpleMath">\(S_2(\Gamma_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(\Gamma_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(\Gamma_0(11))\)</span>. The following commands first show that <span class="SimpleMath">\(H^1_{cusp}(\Gamma_0(11),\mathbb Z)=\mathbb Z\oplus \mathbb Z\)</span> from which we deduce that <span class="SimpleMath">\(S_2(\Gamma_0(11)) =\mathbb 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="center">\[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(\Gamma_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 + \sum_{s=2}^\infty 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">\(\Gamma\)</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 < | | |