Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/congruence/doc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 29.7.2024 mit Größe 32 kB image not shown  

Quelle  chap2.html   Sprache: HTML

 
 products/Sources/formale Sprachen/GAP/pkg/congruence/doc/chap2.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 (Congruence) - Chapter 2: Construction of congruence subgroups</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="chap2"  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="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="chap1.html">[Previous Chapter]</a>    <a href="chap3.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chap2_mj.html">[MathJax on]</a></p>
<p><a id="X7B010EE67FACF45E" name="X7B010EE67FACF45E"></a></p>
<div class="ChapSects"><a href="chap2.html#X7B010EE67FACF45E">2 <span class="Heading">Construction of congruence subgroups</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X7B010EE67FACF45E">2.1 <span class="Heading">Construction of congruence subgroups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7A61F693873F7136">2.1-1 PrincipalCongruenceSubgroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7B8DB77B81BE58D7">2.1-2 CongruenceSubgroupGamma0</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7B4FBED17ECE2A7F">2.1-3 CongruenceSubgroupGammaUpper0</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7CFDC47279AC0E85">2.1-4 CongruenceSubgroupGamma1</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7C3FCDD878FE57ED">2.1-5 CongruenceSubgroupGammaUpper1</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7FE839377D7F45EB">2.1-6 IntersectionOfCongruenceSubgroups</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X8267F261874959E5">2.2 <span class="Heading">Properties of congruence subgroups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X828F7E08787650DC">2.2-1 IsPrincipalCongruenceSubgroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X85124A697E826AB4">2.2-2 IsCongruenceSubgroupGamma0</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7A03633C83A286F5">2.2-3 IsCongruenceSubgroupGammaUpper0</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X8262396080F3B0DD">2.2-4 IsCongruenceSubgroupGamma1</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7D731035834CF878">2.2-5 IsCongruenceSubgroupGammaUpper1</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X83B4E4FA7F4DFB97">2.2-6 IsIntersectionOfCongruenceSubgroups</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X8664A60E875EA5DE">2.3 <span class="Heading">Attributes of congruence subgroups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7D5696F584970D21">2.3-1 LevelOfCongruenceSubgroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X87302F8A7E44D67B">2.3-2 IndexInSL2Z</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7BF57D157824FFC8">2.3-3 DefiningCongruenceSubgroups</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X7B15B49583DC9EF5">2.4 <span class="Heading">Operations for congruence subgroups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X8146AC8587C65DEE">2.4-1 Random</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X87BDB89B7AAFE8AD"><code>2.4-2 \in</code></a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7FC5BF527931FF4C">2.4-3 CanEasilyCompareCongruenceSubgroups</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X79CA175481F8105F">2.4-4 IsSubset</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X83A0356F839C696F">2.4-5 Index</a></span>
</div></div>
</div>

<h3>2 <span class="Heading">Construction of congruence subgroups</span></h3>

<p>The package <strong class="pkg">Congruence</strong> provides functions to construct several types of canonical congruence subgroups in <span class="SimpleMath">SL_2(ℤ)</span>, and also intersections of a finite number of such subgroups. They will return a matrix group in the category <code class="code">IsCongruenceSubgroup</code>, which is defined as a subcategory of <code class="code">IsMatrixGroup</code>, and which will have a distinguishing property determining whether it is a congruence subgroup of one of the canonical types, or an intersection of such congruence subgroups (if it can not be reduced to one of the canonical congruence subgroups). To start to work with the package, you need first to load it as follows:</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">LoadPackage("congruence");</span>
-----------------------------------------------------------------------------
Loading Congruence 1.2.7 (Congruence subgroups of SL(2,Integers))
by Ann Dooms (http://homepages.vub.ac.be/~andooms),
   Eric Jespers (http://homepages.vub.ac.be/~efjesper),
   Olexandr Konovalov (https://olexandr-konovalov.github.io/), and
   Helena Verrill (http://www.math.lsu.edu/~verrill).
maintained by:
   Ann Dooms (http://homepages.vub.ac.be/~andooms),
   Olexandr Konovalov (https://olexandr-konovalov.github.io/), and
   Helena Verrill (http://www.math.lsu.edu/~verrill).
Homepage: https://gap-packages.github.io/congruence
Report issues at https://github.com/gap-packages/congruence/issues
-----------------------------------------------------------------------------
true
</pre></div>

<p><a id="X7B010EE67FACF45E" name="X7B010EE67FACF45E"></a></p>

<h4>2.1 <span class="Heading">Construction of congruence subgroups</span></h4>

<p><a id="X7A61F693873F7136" name="X7A61F693873F7136"></a></p>

<h5>2.1-1 PrincipalCongruenceSubgroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ PrincipalCongruenceSubgroup</code>( <var class="Arg">N</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns the principal congruence subgroup <span class="SimpleMath">Γ(N)</span> of level <var class="Arg">N</var> in <span class="SimpleMath">SL_2(ℤ)</span>.</p>

<p>This subgroup consists of all matrices of the form</p>


<pre class="normal">

                         [1+N*a    N*b]
                         [  N*c  1+N*d]

</pre>

<p>where <span class="SimpleMath">a</span>,<span class="SimpleMath">b</span>,<span class="SimpleMath">c</span>,<span class="SimpleMath">d</span> are integers. The returned group will have the property <code class="func">IsPrincipalCongruenceSubgroup</code> (<a href="chap2.html#X828F7E08787650DC"><span class="RefLink">2.2-1</span></a>).</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G_8:=PrincipalCongruenceSubgroup(8);</span>
<principal congruence subgroup of level 8 in SL_2(Z)>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsGroup(G_8);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsMatrixGroup(G_8);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">DimensionOfMatrixGroup(G_8);</span>
2
<span class="GAPprompt">gap></span> <span class="GAPinput">MultiplicativeNeutralElement(G_8);</span>
[ [ 1, 0 ], [ 0, 1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">One(G);</span>
[ [ 1, 0 ], [ 0, 1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">[[1,2],[3,4]] in G_8;</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">[[1,8],[8,65]] in G_8;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">SL_2:=SL(2,Integers);</span>
SL(2,Integers)
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSubgroup(SL_2,G_8);</span>
true
</pre></div>

<p><a id="X7B8DB77B81BE58D7" name="X7B8DB77B81BE58D7"></a></p>

<h5>2.1-2 CongruenceSubgroupGamma0</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CongruenceSubgroupGamma0</code>( <var class="Arg">N</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns the congruence subgroup <span class="SimpleMath">Γ_0(N)</span> of level <var class="Arg">N</var> in <span class="SimpleMath">SL_2(ℤ)</span>.</p>

<p>This subgroup consists of all matrices of the form</p>


<pre class="normal">

                         [a    b]
                         [N*c  d]

</pre>

<p>where <span class="SimpleMath">a</span>,<span class="SimpleMath">b</span>,<span class="SimpleMath">c</span>,<span class="SimpleMath">d</span> are integers. The returned group will have the property <code class="func">IsCongruenceSubgroupGamma0</code> (<a href="chap2.html#X85124A697E826AB4"><span class="RefLink">2.2-2</span></a>).</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G0_4:=CongruenceSubgroupGamma0(4);</span>
<congruence subgroup CongruenceSubgroupGamma_0(4) in SL_2(Z)>
</pre></div>

<p><a id="X7B4FBED17ECE2A7F" name="X7B4FBED17ECE2A7F"></a></p>

<h5>2.1-3 CongruenceSubgroupGammaUpper0</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CongruenceSubgroupGammaUpper0</code>( <var class="Arg">N</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns the congruence subgroup <span class="SimpleMath">Γ^0(N)</span> of level <var class="Arg">N</var> in <span class="SimpleMath">SL_2(ℤ)</span>.</p>

<p>This subgroup consists of all matrices of the form</p>


<pre class="normal">

                         [a  N*b]
                         [c    d]

</pre>

<p>where <span class="SimpleMath">a</span>,<span class="SimpleMath">b</span>,<span class="SimpleMath">c</span>,<span class="SimpleMath">d</span> are integers. The returned group will have the property <code class="func">IsCongruenceSubgroupGammaUpper0</code> (<a href="chap2.html#X7A03633C83A286F5"><span class="RefLink">2.2-3</span></a>).</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">GU0_2:=CongruenceSubgroupGammaUpper0(2);</span>
<congruence subgroup CongruenceSubgroupGamma^0(2) in SL_2(Z)>
</pre></div>

<p><a id="X7CFDC47279AC0E85" name="X7CFDC47279AC0E85"></a></p>

<h5>2.1-4 CongruenceSubgroupGamma1</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CongruenceSubgroupGamma1</code>( <var class="Arg">N</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns the congruence subgroup <span class="SimpleMath">Γ_1(N)</span> of level <var class="Arg">N</var> in <span class="SimpleMath">SL_2(ℤ)</span>.</p>

<p>This subgroup consists of all matrices of the form</p>


<pre class="normal">

                         [1+N*a      b]
                         [  N*c  1+N*d]

</pre>

<p>where <span class="SimpleMath">a</span>,<span class="SimpleMath">b</span>,<span class="SimpleMath">c</span>,<span class="SimpleMath">d</span> are integers. The returned group will have the property <code class="func">IsCongruenceSubgroupGamma1</code> (<a href="chap2.html#X8262396080F3B0DD"><span class="RefLink">2.2-4</span></a>).</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G1_6:=CongruenceSubgroupGamma1(6);</span>
<congruence subgroup CongruenceSubgroupGamma_1(6) in SL_2(Z)>
</pre></div>

<p><a id="X7C3FCDD878FE57ED" name="X7C3FCDD878FE57ED"></a></p>

<h5>2.1-5 CongruenceSubgroupGammaUpper1</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CongruenceSubgroupGammaUpper1</code>( <var class="Arg">N</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns the congruence subgroup <span class="SimpleMath">Γ^1(N)</span> of level <var class="Arg">N</var> in <span class="SimpleMath">SL_2(ℤ)</span>.</p>

<p>This subgroup consists of all matrices of the form</p>


<pre class="normal">

                         [1+N*a    N*b]
                         [    c  1+N*d]

</pre>

<p>where <span class="SimpleMath">a</span>,<span class="SimpleMath">b</span>,<span class="SimpleMath">c</span>,<span class="SimpleMath">d</span> are integers. The returned group will have the property <code class="func">IsCongruenceSubgroupGammaUpper1</code> (<a href="chap2.html#X7D731035834CF878"><span class="RefLink">2.2-5</span></a>).</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">GU1_4:=CongruenceSubgroupGammaUpper1(4);</span>
<congruence subgroup CongruenceSubgroupGamma^1(4) in SL_2(Z)>
</pre></div>

<p><a id="X7FE839377D7F45EB" name="X7FE839377D7F45EB"></a></p>

<h5>2.1-6 IntersectionOfCongruenceSubgroups</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IntersectionOfCongruenceSubgroups</code>( <var class="Arg">G1</var>, <var class="Arg">G2</var>, <var class="Arg">...</var>, <var class="Arg">GN</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Intersection</code>( <var class="Arg">G1</var>, <var class="Arg">G2</var>, <var class="Arg">...</var>, <var class="Arg">GN</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns the intersection of its arguments, which can be congruence subgroups or their intersections, constructed with the same function. It is not necessary for the user to use <code class="code">IntersectionOfCongruenceSubgroups</code>, since it will be called automatically from <code class="code">Intersection</code>.</p>

<p>The returned group will have the property <code class="func">IsIntersectionOfCongruenceSubgroups</code> (<a href="chap2.html#X83B4E4FA7F4DFB97"><span class="RefLink">2.2-6</span></a>).</p>

<p>The list of congruence subgroups that form the intersection can be obtained using <code class="func">DefiningCongruenceSubgroups</code> (<a href="chap2.html#X7BF57D157824FFC8"><span class="RefLink">2.3-3</span></a>). Note, that when the intersection appears to be one of the canonical congruence subgroups, the package will recognize this and will return a canonical subgroup of the appropriate type.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">I:=IntersectionOfCongruenceSubgroups(G0_4,GU1_4);</span>
<principal congruence subgroup of level 4 in SL_2(Z)>
<span class="GAPprompt">gap></span> <span class="GAPinput">J:=IntersectionOfCongruenceSubgroups(G0_4,G1_6);</span>
<intersection of congruence subgroups of resulting level 12 in SL_2(Z)>
</pre></div>

<p><a id="X8267F261874959E5" name="X8267F261874959E5"></a></p>

<h4>2.2 <span class="Heading">Properties of congruence subgroups</span></h4>

<p>A congruence subgroup constructed by one of the five above listed functions will have certain properties determining its type. These properties will be used for method selection by <strong class="pkg">Congruence</strong> algorithms. Note that they do not provide an actual test whether a certain matrix group is a congruence subgroup or not.</p>

<p><a id="X828F7E08787650DC" name="X828F7E08787650DC"></a></p>

<h5>2.2-1 IsPrincipalCongruenceSubgroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsPrincipalCongruenceSubgroup</code>( <var class="Arg">G</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>For a congruence subgroup <var class="Arg">G</var> in the category <code class="code">IsCongruenceSubgroup</code>, returns <code class="keyw">true</code> if <var class="Arg">G</var> was constructed by <code class="func">PrincipalCongruenceSubgroup</code> (<a href="chap2.html#X7A61F693873F7136"><span class="RefLink">2.1-1</span></a>) (or reduced to one as a result of an intersection) and returns <code class="keyw">false</code> otherwise.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsPrincipalCongruenceSubgroup(G_8);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsPrincipalCongruenceSubgroup(G0_4);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">IsPrincipalCongruenceSubgroup(I);</span>
true
</pre></div>

<p><a id="X85124A697E826AB4" name="X85124A697E826AB4"></a></p>

<h5>2.2-2 IsCongruenceSubgroupGamma0</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCongruenceSubgroupGamma0</code>( <var class="Arg">G</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>For a congruence subgroup <var class="Arg">G</var> in the category <code class="code">IsCongruenceSubgroup</code>, returns <code class="keyw">true</code> if <var class="Arg">G</var> was constructed by <code class="func">CongruenceSubgroupGamma0</code> (<a href="chap2.html#X7B8DB77B81BE58D7"><span class="RefLink">2.1-2</span></a>) (or reduced to one as a result of an intersection) and returns <code class="keyw">false</code> otherwise.</p>

<p><a id="X7A03633C83A286F5" name="X7A03633C83A286F5"></a></p>

<h5>2.2-3 IsCongruenceSubgroupGammaUpper0</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCongruenceSubgroupGammaUpper0</code>( <var class="Arg">G</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>For a congruence subgroup <var class="Arg">G</var> in the category <code class="code">IsCongruenceSubgroup</code>, returns <code class="keyw">true</code> if <var class="Arg">G</var> was constructed by <code class="func">CongruenceSubgroupGammaUpper0</code> (<a href="chap2.html#X7B4FBED17ECE2A7F"><span class="RefLink">2.1-3</span></a>) (or reduced to one as a result of an intersection) and returns <code class="keyw">false</code> otherwise.</p>

<p><a id="X8262396080F3B0DD" name="X8262396080F3B0DD"></a></p>

<h5>2.2-4 IsCongruenceSubgroupGamma1</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCongruenceSubgroupGamma1</code>( <var class="Arg">G</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>For a congruence subgroup <var class="Arg">G</var> in the category <code class="code">IsCongruenceSubgroup</code>, returns <code class="keyw">true</code> if <var class="Arg">G</var> was constructed by <code class="func">CongruenceSubgroupGamma1</code> (<a href="chap2.html#X7CFDC47279AC0E85"><span class="RefLink">2.1-4</span></a>) (or reduced to one as a result of an intersection) and returns <code class="keyw">false</code> otherwise.</p>

<p><a id="X7D731035834CF878" name="X7D731035834CF878"></a></p>

<h5>2.2-5 IsCongruenceSubgroupGammaUpper1</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCongruenceSubgroupGammaUpper1</code>( <var class="Arg">G</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>For a congruence subgroup <var class="Arg">G</var> in the category <code class="code">IsCongruenceSubgroup</code>, returns <code class="keyw">true</code> if <var class="Arg">G</var> was constructed by <code class="func">CongruenceSubgroupGammaUpper1</code> (<a href="chap2.html#X7C3FCDD878FE57ED"><span class="RefLink">2.1-5</span></a>) (or reduced to one as a result of an intersection) and returns <code class="keyw">false</code> otherwise.</p>

<p><a id="X83B4E4FA7F4DFB97" name="X83B4E4FA7F4DFB97"></a></p>

<h5>2.2-6 IsIntersectionOfCongruenceSubgroups</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsIntersectionOfCongruenceSubgroups</code>( <var class="Arg">G</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>For a congruence subgroup <var class="Arg">G</var> in the category <code class="code">IsCongruenceSubgroup</code>, returns <code class="keyw">true</code> if <var class="Arg">G</var> was constructed by <code class="func">IntersectionOfCongruenceSubgroups</code> (<a href="chap2.html#X7FE839377D7F45EB"><span class="RefLink">2.1-6</span></a>) and without being one of the canonical congruence subgroups, otherwise it returns <code class="keyw">false</code>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsIntersectionOfCongruenceSubgroups(I);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">IsIntersectionOfCongruenceSubgroups(J);</span>
true
</pre></div>

<p><a id="X8664A60E875EA5DE" name="X8664A60E875EA5DE"></a></p>

<h4>2.3 <span class="Heading">Attributes of congruence subgroups</span></h4>

<p>The next three attributes store key properties of congruence subgroups.</p>

<p><a id="X7D5696F584970D21" name="X7D5696F584970D21"></a></p>

<h5>2.3-1 LevelOfCongruenceSubgroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ LevelOfCongruenceSubgroup</code>( <var class="Arg">G</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Stores the level of the congruence subgroup <var class="Arg">G</var>. The (arithmetic) level of a congruence subgroup G is the smallest positive number N such that G contains the principal congruence subgroup of level N.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">LevelOfCongruenceSubgroup(G_8);</span>
8
<span class="GAPprompt">gap></span> <span class="GAPinput">LevelOfCongruenceSubgroup(G1_6);</span>
6
<span class="GAPprompt">gap></span> <span class="GAPinput">LevelOfCongruenceSubgroup(I);</span>
4
<span class="GAPprompt">gap></span> <span class="GAPinput">LevelOfCongruenceSubgroup(J);</span>
12
</pre></div>

<p><a id="X87302F8A7E44D67B" name="X87302F8A7E44D67B"></a></p>

<h5>2.3-2 IndexInSL2Z</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IndexInSL2Z</code>( <var class="Arg">G</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Stores the index of the congruence subgroup <var class="Arg">G</var> in <span class="SimpleMath">SL_2(ℤ)</span>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">IndexInSL2Z(G_8);</span>
384
<span class="GAPprompt">gap></span> <span class="GAPinput">G_2:=PrincipalCongruenceSubgroup(2);</span>
<principal congruence subgroup of level 2 in SL_2(Z)>
<span class="GAPprompt">gap></span> <span class="GAPinput">IndexInSL2Z(G_2);</span>
12
<span class="GAPprompt">gap></span> <span class="GAPinput">IndexInSL2Z(GU1_4);</span>
12
</pre></div>

<p><a id="X7BF57D157824FFC8" name="X7BF57D157824FFC8"></a></p>

<h5>2.3-3 DefiningCongruenceSubgroups</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DefiningCongruenceSubgroups</code>( <var class="Arg">G</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: list of congruence subgroups</p>

<p>For an intersection of congruence subgroups, returns the list of congruence subgroups forming this intersection. For a canonical congruence subgroup returns a list of length one containing that subgroup.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">DefiningCongruenceSubgroups(J);</span>
[ <congruence subgroup CongruenceSubgroupGamma_0(4) in SL_2(Z)>,
  <congruence subgroup CongruenceSubgroupGamma_1(6) in SL_2(Z)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">P:=PrincipalCongruenceSubgroup(6);</span>
<principal congruence subgroup of level 6 in SL_2(Z)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Q:=PrincipalCongruenceSubgroup(10); </span>
<principal congruence subgroup of level 10 in SL_2(Z)>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=IntersectionOfCongruenceSubgroups(Q,P);  </span>
<principal congruence subgroup of level 30 in SL_2(Z)>
<span class="GAPprompt">gap></span> <span class="GAPinput">DefiningCongruenceSubgroups(G);</span>
[ <principal congruence subgroup of level 30 in SL_2(Z)> ] 
</pre></div>

<p><a id="X7B15B49583DC9EF5" name="X7B15B49583DC9EF5"></a></p>

<h4>2.4 <span class="Heading">Operations for congruence subgroups</span></h4>

<p><strong class="pkg">Congruence</strong> installs several special methods for operations already available in <strong class="pkg">GAP</strong>.</p>

<p><a id="X8146AC8587C65DEE" name="X8146AC8587C65DEE"></a></p>

<h5>2.4-1 Random</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Random</code>( <var class="Arg">G</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Random</code>( <var class="Arg">G</var>, <var class="Arg">m</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>For a congruence subgroup <var class="Arg">G</var> in the category <code class="code">IsCongruenceSubgroup</code>, returns random element. In the two-argument form, the second parameter will control the absolute value of randomly selected entries of the matrix.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Random(G_2) in G_2;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">Random(G_8,2) in G_8;</span>
true
</pre></div>

<p><a id="X87BDB89B7AAFE8AD" name="X87BDB89B7AAFE8AD"></a></p>

<h5><code>2.4-2 \in</code></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \in</code>( <var class="Arg">m</var>, <var class="Arg">G</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>It is easy to implement the membership test for congruence subgroups and their intersections.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">\in([ [ 21, 10 ], [ 2, 1 ] ],G_2);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">\in([ [ 21, 10 ], [ 2, 1 ] ],G_8);</span>
false
</pre></div>

<p><a id="X7FC5BF527931FF4C" name="X7FC5BF527931FF4C"></a></p>

<h5>2.4-3 CanEasilyCompareCongruenceSubgroups</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CanEasilyCompareCongruenceSubgroups</code>( <var class="Arg">G</var>, <var class="Arg">H</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>For congruence subgroups <var class="Arg">G,H</var> in the category <code class="code">IsCongruenceSubgroup</code>, returns <code class="keyw">true</code> if <var class="Arg">G</var> and <var class="Arg">H</var> are of the same type listed in <code class="func">PrincipalCongruenceSubgroup</code> (<a href="chap2.html#X7A61F693873F7136"><span class="RefLink">2.1-1</span></a>) --> <code class="func">CongruenceSubgroupGammaUpper1</code> (<a href="chap2.html#X7C3FCDD878FE57ED"><span class="RefLink">2.1-5</span></a>) and have the same <code class="func">LevelOfCongruenceSubgroup</code> (<a href="chap2.html#X7D5696F584970D21"><span class="RefLink">2.3-1</span></a>) or if <var class="Arg">G</var> and <var class="Arg">H</var> are of the type <code class="func">IntersectionOfCongruenceSubgroups</code> (<a href="chap2.html#X7FE839377D7F45EB"><span class="RefLink">2.1-6</span></a>) and the groups from <code class="func">DefiningCongruenceSubgroups</code(<a href="chap2.html#X7BF57D157824FFC8"><span class="RefLink">2.3-3</span></a>) are in one to one correspondence, otherwise it returns <code class="keyw">false</code>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">CanEasilyCompareCongruenceSubgroups(G_8,I);</span>
false
</pre></div>

<p><a id="X79CA175481F8105F" name="X79CA175481F8105F"></a></p>

<h5>2.4-4 IsSubset</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsSubset</code>( <var class="Arg">G</var>, <var class="Arg">H</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><strong class="pkg">Congruence</strong> provides methods for <code class="code">IsSubset</code> for congruence subgroups. <code class="code">IsSubset</code> returns <code class="keyw">true</code> if <var class="Arg">H</var> is a subset of <var class="Arg">G</var>. These methods make it possible to use <code class="code">IsSubgroup</code> operation for congruence subgroups.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSubset(G_2,G_8);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSubset(G_8,G_2);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">f:=[PrincipalCongruenceSubgroup,CongruenceSubgroupGamma1,CongruenceSubgroupGammaUpper1,CongruenceSubgroupGamma0,CongruenceSubgroupGammaUpper0];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g1:=List(f, t -> t(2));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g2:=List(f, t -> t(4));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">for g in g2 do</span>
<span class="GAPprompt">></span> <span class="GAPinput">Print( List( g1, x -> IsSubgroup(x,g) ), "\n");</span>
<span class="GAPprompt">></span> <span class="GAPinput">od;</span>
[ true, true, true, true, true ]
[ false, true, false, true, false ]
[ false, false, true, false, true ]
[ false, false, false, true, false ]
[ false, false, false, false, true ]
</pre></div>

<p><a id="X83A0356F839C696F" name="X83A0356F839C696F"></a></p>

<h5>2.4-5 Index</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Index</code>( <var class="Arg">G</var>, <var class="Arg">H</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>If a congruence subgroup <var class="Arg">H</var> is a subgroup of a congruence subgroup <var class="Arg">G</var>, we can easily compute the index of <var class="Arg">H</var> in <var class="Arg">G</var>, since we know the index of both subgroups in <span class="SimpleMath">SL_2(ℤ)</span>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Index(G_2,G_8);</span>
32
</pre></div>


<div class="chlinkprevnextbot"> <a href="chap0.html">[Top of Book]</a>   <a href="chap0.html#contents">[Contents]</a>    <a href="chap1.html">[Previous Chapter]</a>    <a href="chap3.html">[Next Chapter]</a>   </div>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<hr />
<p class="foot">generated by <a href="https://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>

96%


¤ Dauer der Verarbeitung: 0.23 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.