CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

| Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

Views: 418346
1
<Chapter Label="Gens">
2
<Heading>Farey symbols for congruence subgroups</Heading>
3
4
The package &Congruence; provides functions to construct Farey symbols
5
for finite index subgroups. The algorithm used in the package allows
6
to construct a Farey symbol for any finite index subgroup of <M>SL_2(&ZZ;)</M>
7
for which it is possible to check whether a given matrix belongs to this
8
subgroup or not. <P/>
9
10
The development of an algorithm to determine the Farey symbol for a
11
subgroup G of a finite index in <M>SL_2(&ZZ;)</M> was started by Ravi
12
Kulkarni in <Cite Key="Kulkarni" /> and later it was improved by Mong-Lung Lang,
13
Chong-Hai Lim and Ser-Peow Tan in <Cite Key="LLT-Hecke" />, <Cite Key="LLT-Algorithm" />.
14
15
<Section Label="CompFarey">
16
<Heading>Computation of the Farey symbol for a finite index subgroup</Heading>
17
18
<ManSection>
19
<Attr Name="FareySymbol"
20
Arg="G"
21
Comm="" />
22
<Description>
23
For a subgroup of a finite index G, this attribute stores one of the
24
Farey symbols corresponding
25
to the congruence subgroup <A>G</A>. The algorithm for its computation will work
26
for any matrix group for which a membership test is available.
27
</Description>
28
</ManSection>
29
30
<Example>
31
<![CDATA[
32
gap> FareySymbol(PrincipalCongruenceSubgroup(8));
33
[ infinity, 0, 1/4, 1/3, 3/8, 2/5, 1/2, 3/5, 5/8, 2/3, 3/4, 1, 5/4, 4/3,
34
11/8, 7/5, 3/2, 8/5, 13/8, 5/3, 7/4, 2, 9/4, 7/3, 19/8, 12/5, 5/2, 13/5,
35
21/8, 8/3, 11/4, 3, 13/4, 10/3, 27/8, 17/5, 7/2, 18/5, 29/8, 11/3, 15/4, 4,
36
17/4, 13/3, 9/2, 14/3, 19/4, 5, 21/4, 16/3, 11/2, 17/3, 23/4, 6, 25/4,
37
19/3, 13/2, 20/3, 27/4, 7, 29/4, 22/3, 15/2, 23/3, 31/4, 8, infinity ]
38
[ 1, 17, 10, 26, 32, 18, 19, 27, 30, 5, 2, 2, 13, 28, 26, 20, 21, 29, 27, 7,
39
3, 3, 16, 31, 28, 22, 23, 33, 29, 9, 4, 4, 5, 30, 31, 24, 25, 32, 33, 12,
40
6, 6, 7, 19, 18, 15, 8, 8, 9, 21, 20, 10, 11, 11, 12, 23, 22, 13, 14, 14,
41
15, 25, 24, 16, 17, 1 ]
42
gap> FareySymbol(CongruenceSubgroupGamma0(20));
43
[ infinity, 0, 1/5, 1/4, 2/7, 3/10, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1,
44
infinity ]
45
[ 1, 3, 4, 6, 7, 7, 5, 2, 2, 3, 6, 4, 5, 1 ]
46
]]>
47
</Example>
48
49
</Section>
50
51
<!-- ********************************************************* -->
52
53
<Section Label="CompGens">
54
<Heading>Computation of generators of a finite index subgroup from its Farey symbol</Heading>
55
If <A>fs</A> is the Farey symbol for a group <M>G</M> with <M>r_1</M> even
56
labels, <M>r_2</M> odd labels and <M>r_3</M> pairs of intervals, then <M>G</M> is
57
generated by <M>r_1+r_2+r_3</M> matrices, which form a set of independent
58
generators for <M>G</M>. These matrices are constructed as follows:<P/>
59
60
for each even interval <M>[x_i, x_{i+1}]</M>, take the matrix
61
<Alt Only="LaTeX">
62
<Display>
63
<![CDATA[
64
A=\left(
65
\begin{array}{rr}
66
a_{i+1} b_{i+1} + a_i b_i & -a_i^2 - a_{i+1}^2 \\
67
b_i^2 + b_{i+1}^2 & -a_{i+1} b_{i+1} - a_i b_i
68
\end{array}
69
\right)
70
]]>
71
</Display>
72
</Alt>
73
<Alt Only="Text,HTML"><Verb><![CDATA[
74
A= [a_{i+1} b_{i+1} + a_i b_i -a_i^2 - a_{i+1}^2 ]
75
[b_i^2 +b_{i+1}^2 -a_{i+1} b_{i+1} - a_i b_i]
76
]]></Verb></Alt>
77
<P/>
78
79
for each odd interval <M>[x_j,x_{j+1}]</M>, take the matrix
80
<Alt Only="LaTeX">
81
<Display>
82
<![CDATA[
83
B=\left(
84
\begin{array}{rr}
85
a_{j+1} b_{j+1} + a_j b_{j+1} + a_j b_j & -a_j^2 - a_j a_{j+1} -
86
a_{j+1}^2 \\ b_j^2 + b_j b_{j+1} + b_{j+1}^2 & -a_{j+1}
87
b_{j+1} - a_{j+1} b_j - a_j b_j
88
\end{array}
89
\right)
90
]]>
91
</Display>
92
</Alt>
93
<Alt Only="Text,HTML"><Verb><![CDATA[
94
B= [a_{j+1} b_{j+1} + a_j b_{j+1} + a_j b_j -a_j^2 - a_j a_{j+1} -a_{j+1}^2]
95
[ b_j^2 + b_j b_{j+1} + b_{j+1}^2 -a_{j+1} b_{j+1} - a_{j+1} b_j - a_j b_j]
96
]]></Verb></Alt>
97
<P/>
98
99
for each pair of free intervals <M>[x_k,x_{k+1}]</M> and
100
<M>[x_s,x_{s+1}]</M>, take the matrix
101
<Alt Only="LaTeX">
102
<Display>
103
<![CDATA[
104
\left(
105
\begin{array}{rr}
106
a_{s+1} b_{k+1} + a_s b_k & -a_s a_k - a_{s+1} a_{k+1} \\ b_s b_k
107
- b_{s+1} b_{k+1} & -a_{k+1} b_{s+1} - a_k b_s
108
\end{array}
109
\right)
110
]]>
111
</Display>
112
</Alt>
113
<Alt Only="Text,HTML"><Verb><![CDATA[
114
C= [a_{s+1} b_{k+1} + a_s b_k -a_s a_k - a_{s+1} a_{k+1}]
115
[b_s b_k- b_{s+1} b_{k+1}c -a_{k+1} b_{s+1} - a_k b_s]
116
]]></Verb></Alt>
117
118
119
<ManSection>
120
<Func Name="MatrixByEvenInterval"
121
Arg="gfs i"
122
Comm="" />
123
<Description>
124
Returns the matrix corresponding to the even interval i in the generalized Farey sequence <A>gfs</A>.
125
</Description>
126
</ManSection>
127
128
<Example>
129
<![CDATA[
130
gap> H:=CongruenceSubgroupGamma0(5);
131
<congruence subgroup CongruenceSubgroupGamma_0(5) in SL_2(Z)>
132
gap> fs:=FareySymbol(H);
133
[ infinity, 0, 1/2, 1, infinity ]
134
[ 1, "even", "even", 1 ]
135
gap> gfs:=GeneralizedFareySequence(fs);
136
[ infinity, 0, 1/2, 1, infinity ]
137
gap> MatrixByEvenInterval(gfs,2);
138
[ [ 2, -1 ], [ 5, -2 ] ]
139
]]>
140
</Example>
141
142
143
<ManSection>
144
<Func Name="MatrixByOddInterval"
145
Arg="gfs i"
146
Comm="" />
147
<Description>
148
Returns the matrix corresponding to the odd interval i in the generalized Farey sequence <A>gfs</A>.
149
</Description>
150
</ManSection>
151
152
<Example>
153
<![CDATA[
154
gap> fs_oo:=FareySymbolByData([infinity,0,infinity],["odd","odd"]);;
155
gap> gfs_oo:=GeneralizedFareySequence(fs_oo);
156
[ infinity, 0, infinity ]
157
gap> MatrixByOddInterval(gfs_oo,1);
158
[ [ -1, -1 ], [ 1, 0 ] ]
159
]]>
160
</Example>
161
162
163
<ManSection>
164
<Func Name="MatrixByFreePairOfIntervals"
165
Arg="gfs k kp"
166
Comm="" />
167
<Description>
168
Returns the matrix corresponding to the pair of free intervals k and kp in the generalized Farey sequence <A>gfs</A>.
169
</Description>
170
</ManSection>
171
172
<Example>
173
<![CDATA[
174
gap> fs_free:=FareySymbolByData([infinity,0,1,2,infinity],[1,2,2,1]);;
175
gap> gfs_free:=GeneralizedFareySequence(fs_free);;
176
gap> MatrixByFreePairOfIntervals(gfs_free,2,3);
177
[ [ 3, -2 ], [ 2, -1 ] ]
178
]]>
179
</Example>
180
181
182
<ManSection>
183
<Func Name="GeneratorsByFareySymbol"
184
Arg="fs"
185
Comm="" />
186
<Description>
187
Returns a set of matrices constructed as above.
188
</Description>
189
</ManSection>
190
191
<Example>
192
<![CDATA[
193
gap> fs_eo:=FareySymbolByData([infinity,0,infinity],["even","odd"]);;
194
gap> GeneratorsByFareySymbol(last);
195
[ [ [ 0, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ]
196
gap> GeneratorsByFareySymbol(fs);
197
[ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ]
198
gap> GeneratorsByFareySymbol(fs_oo);
199
[ [ [ -1, -1 ], [ 1, 0 ] ], [ [ 0, -1 ], [ 1, -1 ] ] ]
200
gap> GeneratorsByFareySymbol(fs_free);
201
[ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ]
202
]]>
203
</Example>
204
205
206
<ManSection>
207
<Func Name="GeneratorsOfGroup"
208
Arg="G"
209
Comm="" />
210
<Description>
211
Returns a set of generators for the finite index group G in <M>SL_2(Z)</M>.
212
</Description>
213
</ManSection>
214
215
<Example>
216
<![CDATA[
217
gap> G:=PrincipalCongruenceSubgroup(2);
218
<principal congruence subgroup of level 2 in SL_2(Z)>
219
gap> FareySymbol(G);
220
[ infinity, 0, 1, 2, infinity ]
221
[ 2, 1, 1, 2 ]
222
gap> GeneratorsOfGroup(G);
223
#I Using the Congruence package for GeneratorsOfGroup ...
224
[ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 3, -2 ], [ 2, -1 ] ] ]
225
gap> H:=CongruenceSubgroupGamma0(5);
226
<congruence subgroup CongruenceSubgroupGamma_0(5) in SL_2(Z)>
227
gap> GeneratorsOfGroup(H);
228
#I Using the Congruence package for GeneratorsOfGroup ...
229
[ [ [ 1, 1 ], [ 0, 1 ] ], [ [ 2, -1 ], [ 5, -2 ] ], [ [ 3, -2 ], [ 5, -3 ] ] ]
230
gap> I:=IntersectionOfCongruenceSubgroups(PrincipalCongruenceSubgroup(2),CongruenceSubgroupGamma0(3));
231
<intersection of congruence subgroups of resulting level 6 in SL_2(Z)>
232
gap> FareySymbol(I);
233
[ infinity, 0, 1/3, 1/2, 2/3, 1, 4/3, 3/2, 5/3, 2, infinity ]
234
[ 1, 5, 4, 3, 2, 2, 3, 4, 5, 1 ]
235
gap> GeneratorsOfGroup(I);
236
#I Using the Congruence package for GeneratorsOfGroup ...
237
[ [ [ 1, 2 ], [ 0, 1 ] ], [ [ 11, -2 ], [ 6, -1 ] ],
238
[ [ 19, -8 ], [ 12, -5 ] ], [ [ 17, -10 ], [ 12, -7 ] ],
239
[ [ 7, -6 ], [ 6, -5 ] ] ]
240
]]>
241
</Example>
242
243
</Section>
244
245
<!-- ********************************************************* -->
246
247
<Section Label="CompOther">
248
<Heading>Other properties derived from Farey symbols</Heading>
249
250
<ManSection>
251
<Func Name="IndexInPSL2ZByFareySymbol"
252
Arg="fs"
253
Comm="" />
254
<Description>
255
By Proposition 7.2 in [Kulkarni], for the Farey symbol with underlying
256
generalized Farey sequence [infinity, x0, x1, ..., xn, infinity], the
257
index in <M>PSL_2(Z)</M> is given by the formula d = 3*n + e3, where e3 is the
258
number of odd intervals.
259
</Description>
260
</ManSection>
261
262
<Example>
263
<![CDATA[
264
gap> IndexInPSL2ZByFareySymbol(fs);
265
6
266
gap> IndexInPSL2ZByFareySymbol(fs_oo);
267
2
268
gap> IndexInPSL2ZByFareySymbol(fs_free);
269
6
270
]]>
271
</Example>
272
273
</Section>
274
275
</Chapter>
276
277