Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
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
Project: cocalc-sagemath-dev-slelievre
Views: 4183461[1X2 [33X[0;0YConstruction of congruence subgroups[133X[101X23[33X[0;0YThe package [5XCongruence[105X provides functions to construct several types of4canonical congruence subgroups in [22XSL_2(ℤ)[122X, and also intersections of a5finite number of such subgroups. They will return a matrix group in the6category [10XIsCongruenceSubgroup[110X, which is defined as a subcategory of7[10XIsMatrixGroup[110X, and which will have a distinguishing property determining8whether it is a congruence subgroup of one of the canonical types, or an9intersection of such congruence subgroups (if it can not be reduced to one10of the canonical congruence subgroups). To start to work with the package,11you need first to load it as follows:[133X1213[4X[32X Example [32X[104X14[4X[28X[128X[104X15[4X[25Xgap>[125X [27XLoadPackage("congruence");[127X[104X16[4X[28X-----------------------------------------------------------------------------[128X[104X17[4X[28XLoading Congruence 1.1.0 (Congruence subgroups of SL(2,Integers))[128X[104X18[4X[28Xby Ann Dooms (http://homepages.vub.ac.be/~andooms),[128X[104X19[4X[28X Eric Jespers (http://homepages.vub.ac.be/~efjesper),[128X[104X20[4X[28X Alexander Konovalov (http://www.cs.st-andrews.ac.uk/~alexk/), and[128X[104X21[4X[28X Helena Verrill (http://www.math.lsu.edu/~verrill).[128X[104X22[4X[28X-----------------------------------------------------------------------------[128X[104X23[4X[28Xtrue[128X[104X24[4X[28X[128X[104X25[4X[32X[104X262728[1X2.1 [33X[0;0YConstruction of congruence subgroups[133X[101X2930[1X2.1-1 PrincipalCongruenceSubgroup[101X3132[29X[2XPrincipalCongruenceSubgroup[102X( [3XN[103X ) [32X operation3334[33X[0;0YReturns the principal congruence subgroup [22XΓ(N)[122X of level [3XN[103X in [22XSL_2(ℤ)[122X.[133X3536[33X[0;0YThis subgroup consists of all matrices of the form[133X3738[1+N*a N*b]39[ N*c 1+N*d]4041[33X[0;0Ywhere [22Xa[122X,[22Xb[122X,[22Xc[122X,[22Xd[122X are integers. The returned group will have the property42[2XIsPrincipalCongruenceSubgroup[102X ([14X2.2-1[114X).[133X4344[4X[32X Example [32X[104X45[4X[28X[128X[104X46[4X[25Xgap>[125X [27XG_8:=PrincipalCongruenceSubgroup(8);[127X[104X47[4X[28X<principal congruence subgroup of level 8 in SL_2(Z)>[128X[104X48[4X[25Xgap>[125X [27XIsGroup(G_8);[127X[104X49[4X[28Xtrue[128X[104X50[4X[25Xgap>[125X [27XIsMatrixGroup(G_8);[127X[104X51[4X[28Xtrue[128X[104X52[4X[25Xgap>[125X [27XDimensionOfMatrixGroup(G_8);[127X[104X53[4X[28X2[128X[104X54[4X[25Xgap>[125X [27XMultiplicativeNeutralElement(G_8);[127X[104X55[4X[28X[ [ 1, 0 ], [ 0, 1 ] ][128X[104X56[4X[25Xgap>[125X [27XOne(G);[127X[104X57[4X[28X[ [ 1, 0 ], [ 0, 1 ] ][128X[104X58[4X[25Xgap>[125X [27X[[1,2],[3,4]] in G_8;[127X[104X59[4X[28Xfalse[128X[104X60[4X[25Xgap>[125X [27X[[1,8],[8,65]] in G_8;[127X[104X61[4X[28Xtrue[128X[104X62[4X[25Xgap>[125X [27XSL_2:=SL(2,Integers);[127X[104X63[4X[28XSL(2,Integers)[128X[104X64[4X[25Xgap>[125X [27XIsSubgroup(SL_2,G_8);[127X[104X65[4X[28Xtrue[128X[104X66[4X[28X[128X[104X67[4X[32X[104X6869[1X2.1-2 CongruenceSubgroupGamma0[101X7071[29X[2XCongruenceSubgroupGamma0[102X( [3XN[103X ) [32X operation7273[33X[0;0YReturns the congruence subgroup [22XΓ_0(N)[122X of level [3XN[103X in [22XSL_2(ℤ)[122X.[133X7475[33X[0;0YThis subgroup consists of all matrices of the form[133X7677[a b]78[N*c d]7980[33X[0;0Ywhere [22Xa[122X,[22Xb[122X,[22Xc[122X,[22Xd[122X are integers. The returned group will have the property81[2XIsCongruenceSubgroupGamma0[102X ([14X2.2-2[114X).[133X8283[4X[32X Example [32X[104X84[4X[28X[128X[104X85[4X[25Xgap>[125X [27XG0_4:=CongruenceSubgroupGamma0(4);[127X[104X86[4X[28X<congruence subgroup CongruenceSubgroupGamma_0(4) in SL_2(Z)>[128X[104X87[4X[28X[128X[104X88[4X[32X[104X8990[1X2.1-3 CongruenceSubgroupGammaUpper0[101X9192[29X[2XCongruenceSubgroupGammaUpper0[102X( [3XN[103X ) [32X operation9394[33X[0;0YReturns the congruence subgroup [22XΓ^0(N)[122X of level [3XN[103X in [22XSL_2(ℤ)[122X.[133X9596[33X[0;0YThis subgroup consists of all matrices of the form[133X9798[a N*b]99[c d]100101[33X[0;0Ywhere [22Xa[122X,[22Xb[122X,[22Xc[122X,[22Xd[122X are integers. The returned group will have the property102[2XIsCongruenceSubgroupGammaUpper0[102X ([14X2.2-3[114X).[133X103104[4X[32X Example [32X[104X105[4X[28X[128X[104X106[4X[25Xgap>[125X [27XGU0_2:=CongruenceSubgroupGammaUpper0(2);[127X[104X107[4X[28X<congruence subgroup CongruenceSubgroupGamma^0(2) in SL_2(Z)>[128X[104X108[4X[28X[128X[104X109[4X[32X[104X110111[1X2.1-4 CongruenceSubgroupGamma1[101X112113[29X[2XCongruenceSubgroupGamma1[102X( [3XN[103X ) [32X operation114115[33X[0;0YReturns the congruence subgroup [22XΓ_1(N)[122X of level [3XN[103X in [22XSL_2(ℤ)[122X.[133X116117[33X[0;0YThis subgroup consists of all matrices of the form[133X118119[1+N*a b]120[ N*c 1+N*d]121122[33X[0;0Ywhere [22Xa[122X,[22Xb[122X,[22Xc[122X,[22Xd[122X are integers. The returned group will have the property123[2XIsCongruenceSubgroupGamma1[102X ([14X2.2-4[114X).[133X124125[4X[32X Example [32X[104X126[4X[28X[128X[104X127[4X[25Xgap>[125X [27XG1_6:=CongruenceSubgroupGamma1(6);[127X[104X128[4X[28X<congruence subgroup CongruenceSubgroupGamma_1(6) in SL_2(Z)>[128X[104X129[4X[28X[128X[104X130[4X[32X[104X131132[1X2.1-5 CongruenceSubgroupGammaUpper1[101X133134[29X[2XCongruenceSubgroupGammaUpper1[102X( [3XN[103X ) [32X operation135136[33X[0;0YReturns the congruence subgroup [22XΓ^1(N)[122X of level [3XN[103X in [22XSL_2(ℤ)[122X.[133X137138[33X[0;0YThis subgroup consists of all matrices of the form[133X139140[1+N*a N*b]141[ c 1+N*d]142143[33X[0;0Ywhere [22Xa[122X,[22Xb[122X,[22Xc[122X,[22Xd[122X are integers. The returned group will have the property144[2XIsCongruenceSubgroupGammaUpper1[102X ([14X2.2-5[114X).[133X145146[4X[32X Example [32X[104X147[4X[28X[128X[104X148[4X[25Xgap>[125X [27XGU1_4:=CongruenceSubgroupGammaUpper1(4);[127X[104X149[4X[28X<congruence subgroup CongruenceSubgroupGamma^1(4) in SL_2(Z)>[128X[104X150[4X[28X[128X[104X151[4X[32X[104X152153[1X2.1-6 IntersectionOfCongruenceSubgroups[101X154155[29X[2XIntersectionOfCongruenceSubgroups[102X( [3XG1[103X, [3XG2[103X, [3X...[103X, [3XGN[103X ) [32X function156[29X[2XIntersection[102X( [3XG1[103X, [3XG2[103X, [3X...[103X, [3XGN[103X ) [32X function157158[33X[0;0YReturns the intersection of its arguments, which can be congruence subgroups159or their intersections, constructed with the same function. It is not160necessary for the user to use [10XIntersectionOfCongruenceSubgroups[110X, since it161will be called automatically from [10XIntersection[110X.[133X162163[33X[0;0YThe returned group will have the property164[2XIsIntersectionOfCongruenceSubgroups[102X ([14X2.2-6[114X).[133X165166[33X[0;0YThe list of congruence subgroups that form the intersection can be obtained167using [2XDefiningCongruenceSubgroups[102X ([14X2.3-3[114X). Note, that when the intersection168appears to be one of the canonical congruence subgroups, the package will169recognize this and will return a canonical subgroup of the appropriate type.[133X170171[4X[32X Example [32X[104X172[4X[28X[128X[104X173[4X[25Xgap>[125X [27XI:=IntersectionOfCongruenceSubgroups(G0_4,GU1_4);[127X[104X174[4X[28X<principal congruence subgroup of level 4 in SL_2(Z)>[128X[104X175[4X[25Xgap>[125X [27XJ:=IntersectionOfCongruenceSubgroups(G0_4,G1_6);[127X[104X176[4X[28X<intersection of congruence subgroups of resulting level 12 in SL_2(Z)>[128X[104X177[4X[28X[128X[104X178[4X[32X[104X179180181[1X2.2 [33X[0;0YProperties of congruence subgroups[133X[101X182183[33X[0;0YA congruence subgroup constructed by one of the five above listed functions184will have certain properties determining its type. These properties will be185used for method selection by [5XCongruence[105X algorithms. Note that they do not186provide an actual test whether a certain matrix group is a congruence187subgroup or not.[133X188189[1X2.2-1 IsPrincipalCongruenceSubgroup[101X190191[29X[2XIsPrincipalCongruenceSubgroup[102X( [3XG[103X ) [32X property192193[33X[0;0YFor a congruence subgroup [3XG[103X in the category [10XIsCongruenceSubgroup[110X, returns194[9Xtrue[109X if [3XG[103X was constructed by [2XPrincipalCongruenceSubgroup[102X ([14X2.1-1[114X) (or reduced195to one as a result of an intersection) and returns [9Xfalse[109X otherwise.[133X196197[4X[32X Example [32X[104X198[4X[28X[128X[104X199[4X[25Xgap>[125X [27XIsPrincipalCongruenceSubgroup(G_8);[127X[104X200[4X[28Xtrue[128X[104X201[4X[25Xgap>[125X [27XIsPrincipalCongruenceSubgroup(G0_4);[127X[104X202[4X[28Xfalse[128X[104X203[4X[25Xgap>[125X [27XIsPrincipalCongruenceSubgroup(I);[127X[104X204[4X[28Xtrue[128X[104X205[4X[28X[128X[104X206[4X[32X[104X207208[1X2.2-2 IsCongruenceSubgroupGamma0[101X209210[29X[2XIsCongruenceSubgroupGamma0[102X( [3XG[103X ) [32X property211212[33X[0;0YFor a congruence subgroup [3XG[103X in the category [10XIsCongruenceSubgroup[110X, returns213[9Xtrue[109X if [3XG[103X was constructed by [2XCongruenceSubgroupGamma0[102X ([14X2.1-2[114X) (or reduced to214one as a result of an intersection) and returns [9Xfalse[109X otherwise.[133X215216[1X2.2-3 IsCongruenceSubgroupGammaUpper0[101X217218[29X[2XIsCongruenceSubgroupGammaUpper0[102X( [3XG[103X ) [32X property219220[33X[0;0YFor a congruence subgroup [3XG[103X in the category [10XIsCongruenceSubgroup[110X, returns221[9Xtrue[109X if [3XG[103X was constructed by [2XCongruenceSubgroupGammaUpper0[102X ([14X2.1-3[114X) (or222reduced to one as a result of an intersection) and returns [9Xfalse[109X otherwise.[133X223224[1X2.2-4 IsCongruenceSubgroupGamma1[101X225226[29X[2XIsCongruenceSubgroupGamma1[102X( [3XG[103X ) [32X property227228[33X[0;0YFor a congruence subgroup [3XG[103X in the category [10XIsCongruenceSubgroup[110X, returns229[9Xtrue[109X if [3XG[103X was constructed by [2XCongruenceSubgroupGamma1[102X ([14X2.1-4[114X) (or reduced to230one as a result of an intersection) and returns [9Xfalse[109X otherwise.[133X231232[1X2.2-5 IsCongruenceSubgroupGammaUpper1[101X233234[29X[2XIsCongruenceSubgroupGammaUpper1[102X( [3XG[103X ) [32X property235236[33X[0;0YFor a congruence subgroup [3XG[103X in the category [10XIsCongruenceSubgroup[110X, returns237[9Xtrue[109X if [3XG[103X was constructed by [2XCongruenceSubgroupGammaUpper1[102X ([14X2.1-5[114X) (or238reduced to one as a result of an intersection) and returns [9Xfalse[109X otherwise.[133X239240[1X2.2-6 IsIntersectionOfCongruenceSubgroups[101X241242[29X[2XIsIntersectionOfCongruenceSubgroups[102X( [3XG[103X ) [32X property243244[33X[0;0YFor a congruence subgroup [3XG[103X in the category [10XIsCongruenceSubgroup[110X, returns245[9Xtrue[109X if [3XG[103X was constructed by [2XIntersectionOfCongruenceSubgroups[102X ([14X2.1-6[114X) and246without being one of the canonical congruence subgroups, otherwise it247returns [9Xfalse[109X.[133X248249[4X[32X Example [32X[104X250[4X[28X[128X[104X251[4X[25Xgap>[125X [27XIsIntersectionOfCongruenceSubgroups(I);[127X[104X252[4X[28Xfalse[128X[104X253[4X[25Xgap>[125X [27XIsIntersectionOfCongruenceSubgroups(J);[127X[104X254[4X[28Xtrue[128X[104X255[4X[28X[128X[104X256[4X[32X[104X257258259[1X2.3 [33X[0;0YAttributes of congruence subgroups[133X[101X260261[33X[0;0YThe next three attributes store key properties of congruence subgroups.[133X262263[1X2.3-1 LevelOfCongruenceSubgroup[101X264265[29X[2XLevelOfCongruenceSubgroup[102X( [3XG[103X ) [32X attribute266267[33X[0;0YStores the level of the congruence subgroup [3XG[103X. The (arithmetic) level of a268congruence subgroup G is the smallest positive number N such that G contains269the principal congruence subgroup of level N.[133X270271[4X[32X Example [32X[104X272[4X[28X[128X[104X273[4X[25Xgap>[125X [27XLevelOfCongruenceSubgroup(G_8);[127X[104X274[4X[28X8[128X[104X275[4X[25Xgap>[125X [27XLevelOfCongruenceSubgroup(G1_6);[127X[104X276[4X[28X6[128X[104X277[4X[25Xgap>[125X [27XLevelOfCongruenceSubgroup(I);[127X[104X278[4X[28X4[128X[104X279[4X[25Xgap>[125X [27XLevelOfCongruenceSubgroup(J);[127X[104X280[4X[28X12[128X[104X281[4X[28X[128X[104X282[4X[32X[104X283284[1X2.3-2 IndexInSL2Z[101X285286[29X[2XIndexInSL2Z[102X( [3XG[103X ) [32X attribute287288[33X[0;0YStores the index of the congruence subgroup [3XG[103X in [22XSL_2(ℤ)[122X.[133X289290[4X[32X Example [32X[104X291[4X[28X[128X[104X292[4X[25Xgap>[125X [27XIndexInSL2Z(G_8);[127X[104X293[4X[28X384[128X[104X294[4X[25Xgap>[125X [27XG_2:=PrincipalCongruenceSubgroup(2);[127X[104X295[4X[28X<principal congruence subgroup of level 2 in SL_2(Z)>[128X[104X296[4X[25Xgap>[125X [27XIndexInSL2Z(G_2);[127X[104X297[4X[28X12[128X[104X298[4X[25Xgap>[125X [27XIndexInSL2Z(GU1_4);[127X[104X299[4X[28X12[128X[104X300[4X[28X[128X[104X301[4X[32X[104X302303[1X2.3-3 DefiningCongruenceSubgroups[101X304305[29X[2XDefiningCongruenceSubgroups[102X( [3XG[103X ) [32X attribute306[6XReturns:[106X [33X[0;10Ylist of congruence subgroups[133X307308[33X[0;0YFor an intersection of congruence subgroups, returns the list of congruence309subgroups forming this intersection. For a canonical congruence subgroup310returns a list of length one containing that subgroup.[133X311312[4X[32X Example [32X[104X313[4X[28X[128X[104X314[4X[25Xgap>[125X [27XDefiningCongruenceSubgroups(J);[127X[104X315[4X[28X[ <congruence subgroup CongruenceSubgroupGamma_0(4) in SL_2(Z)>,[128X[104X316[4X[28X <congruence subgroup CongruenceSubgroupGamma_1(6) in SL_2(Z)> ][128X[104X317[4X[25Xgap>[125X [27XP:=PrincipalCongruenceSubgroup(6);[127X[104X318[4X[28X<principal congruence subgroup of level 6 in SL_2(Z)>[128X[104X319[4X[25Xgap>[125X [27XQ:=PrincipalCongruenceSubgroup(10); [127X[104X320[4X[28X<principal congruence subgroup of level 10 in SL_2(Z)>[128X[104X321[4X[25Xgap>[125X [27XG:=IntersectionOfCongruenceSubgroups(Q,P); [127X[104X322[4X[28X<principal congruence subgroup of level 30 in SL_2(Z)>[128X[104X323[4X[25Xgap>[125X [27XDefiningCongruenceSubgroups(G);[127X[104X324[4X[28X[ <principal congruence subgroup of level 30 in SL_2(Z)> ] [128X[104X325[4X[28X[128X[104X326[4X[32X[104X327328329[1X2.4 [33X[0;0YOperations for congruence subgroups[133X[101X330331[33X[0;0Y[5XCongruence[105X installs several special methods for operations already available332in [5XGAP[105X.[133X333334[1X2.4-1 Random[101X335336[29X[2XRandom[102X( [3XG[103X ) [32X operation337[29X[2XRandom[102X( [3XG[103X, [3Xm[103X ) [32X operation338339[33X[0;0YFor a congruence subgroup [3XG[103X in the category [10XIsCongruenceSubgroup[110X, returns340random element. In the two-argument form, the second parameter will control341the absolute value of randomly selected entries of the matrix.[133X342343[4X[32X Example [32X[104X344[4X[28X[128X[104X345[4X[25Xgap>[125X [27XRandom(G_2) in G_2;[127X[104X346[4X[28Xtrue[128X[104X347[4X[25Xgap>[125X [27XRandom(G_8,2) in G_8;[127X[104X348[4X[28Xtrue[128X[104X349[4X[28X[128X[104X350[4X[32X[104X351352[1X2.4-2 \in[101X353354[29X[2X\in[102X( [3Xm[103X, [3XG[103X ) [32X operation355356[33X[0;0YIt is easy to implement the membership test for congruence subgroups and357their intersections.[133X358359[4X[32X Example [32X[104X360[4X[28X[128X[104X361[4X[25Xgap>[125X [27X\in([ [ 21, 10 ], [ 2, 1 ] ],G_2);[127X[104X362[4X[28Xtrue[128X[104X363[4X[25Xgap>[125X [27X\in([ [ 21, 10 ], [ 2, 1 ] ],G_8);[127X[104X364[4X[28Xfalse[128X[104X365[4X[28X[128X[104X366[4X[32X[104X367368[1X2.4-3 CanEasilyCompareCongruenceSubgroups[101X369370[29X[2XCanEasilyCompareCongruenceSubgroups[102X( [3XG[103X, [3XH[103X ) [32X operation371372[33X[0;0YFor congruence subgroups [3XG,H[103X in the category [10XIsCongruenceSubgroup[110X, returns373[9Xtrue[109X if [3XG[103X and [3XH[103X are of the same type listed in [2XPrincipalCongruenceSubgroup[102X374([14X2.1-1[114X) --> [2XCongruenceSubgroupGammaUpper1[102X ([14X2.1-5[114X) and have the same375[2XLevelOfCongruenceSubgroup[102X ([14X2.3-1[114X) or if [3XG[103X and [3XH[103X are of the type376[2XIntersectionOfCongruenceSubgroups[102X ([14X2.1-6[114X) and the groups from377[2XDefiningCongruenceSubgroups[102X ([14X2.3-3[114X) are in one to one correspondence,378otherwise it returns [9Xfalse[109X.[133X379380[4X[32X Example [32X[104X381[4X[28X[128X[104X382[4X[25Xgap>[125X [27XCanEasilyCompareCongruenceSubgroups(G_8,I);[127X[104X383[4X[28Xfalse[128X[104X384[4X[28X[128X[104X385[4X[32X[104X386387[1X2.4-4 IsSubset[101X388389[29X[2XIsSubset[102X( [3XG[103X, [3XH[103X ) [32X operation390391[33X[0;0Y[5XCongruence[105X provides methods for [10XIsSubset[110X for congruence subgroups. [10XIsSubset[110X392returns [9Xtrue[109X if [3XH[103X is a subset of [3XG[103X. These methods make it possible to use393[10XIsSubgroup[110X operation for congruence subgroups.[133X394395[4X[32X Example [32X[104X396[4X[28X[128X[104X397[4X[25Xgap>[125X [27XIsSubset(G_2,G_8);[127X[104X398[4X[28Xtrue[128X[104X399[4X[25Xgap>[125X [27XIsSubset(G_8,G_2);[127X[104X400[4X[28Xfalse[128X[104X401[4X[25Xgap>[125X [27Xf:=[PrincipalCongruenceSubgroup,CongruenceSubgroupGamma1,CongruenceSubgroupGammaUpper1,CongruenceSubgroupGamma0,CongruenceSubgroupGammaUpper0];;[127X[104X402[4X[25Xgap>[125X [27Xg1:=List(f, t -> t(2));;[127X[104X403[4X[25Xgap>[125X [27Xg2:=List(f, t -> t(4));;[127X[104X404[4X[25Xgap>[125X [27Xfor g in g2 do[127X[104X405[4X[25X>[125X [27XPrint( List( g1, x -> IsSubgroup(x,g) ), "\n");[127X[104X406[4X[25X>[125X [27Xod;[127X[104X407[4X[28X[ true, true, true, true, true ][128X[104X408[4X[28X[ false, true, false, true, false ][128X[104X409[4X[28X[ false, false, true, false, true ][128X[104X410[4X[28X[ false, false, false, true, false ][128X[104X411[4X[28X[ false, false, false, false, true ][128X[104X412[4X[28X[128X[104X413[4X[32X[104X414415[1X2.4-5 Index[101X416417[29X[2XIndex[102X( [3XG[103X, [3XH[103X ) [32X operation418419[33X[0;0YIf a congruence subgroup [3XH[103X is a subgroup of a congruence subgroup [3XG[103X, we can420easily compute the index of [3XH[103X in [3XG[103X, since we know the index of both421subgroups in [22XSL_2(ℤ)[122X.[133X422423[4X[32X Example [32X[104X424[4X[28X[128X[104X425[4X[25Xgap>[125X [27XIndex(G_2,G_8);[127X[104X426[4X[28X32[128X[104X427[4X[28X[128X[104X428[4X[32X[104X429430431432