[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Congruence Subgroups

We denote by SL_2(Z) the group of 2 by 2 matrices with integer coefficients and determinant 1. The group PSL_2(Z) is the projectivization of SL_2(Z). For any integer N we have groups Gamma_0(N)={pmatrix(a & b cr c & d) in SL_2(Z) | pmatrix(a & b cr c & d) = pmatrix(* & * cr 0 & * ) mod N.} Gamma_1(N)={pmatrix(a & b cr c & d) in SL_2(Z) | pmatrix(a & b cr c & d) = pmatrix(1 & * cr 0 & 1) mod N.} Gamma(N)={pmatrix(a & b cr c & d) in SL_2(Z) | pmatrix(a & b cr c & d) = pmatrix(1 & 0cr 0 & 1) mod N.} Gamma^1(N)={pmatrix(a & b cr c & d) in SL_2(Z) | pmatrix(a & b cr c & d) = pmatrix(1 & 0cr * & 1) mod N.} Gamma^0(N)={pmatrix(a & b cr c & d) in SL_2(Z) | pmatrix(a & b cr c & d) = pmatrix(* & 0cr * & * ) mod N.}

A congruence subgroup is any discrete subgroup Gamma of SL_2(R) which is commensurable with SL_2(Z), that is, Gammaintersect SL_2(Z) has finite index in Gamma and in SL_2(Z), and such that Gamma(N) is contained in G for some N. The level N of a congruence subgroup G is the greatest integer N such that Gamma(N) is contained in Gamma. We will abuse notation and also refer to the projectivizations of these groups by the same names.

Subsections

Creation of Subgroups of PSL_2(R)

PSL2(R) : Rng -> GrpPSL2
Returns PSL_2(R), the projective linear group over the ring R.
Gamma0(N) : RngIntElt -> GrpPSL2
The group Gamma_0(N) for any positive integer N.
Gamma1(N) : RngIntElt -> GrpPSL2
The group Gamma_1(N) for any positive integer N.
GammaUpper0(N) : RngIntElt -> GrpPSL2
The group Gamma^0(N) for any positive integer N.
GammaUpper1(N) : RngIntElt -> GrpPSL2
The group Gamma^1(N) for any positive integer N.
CongruenceSubgroup(N) : RngIntElt -> GrpPSL2
The group Gamma(N) for any positive integer N.
CongruenceSubgroup(i,N) : RngIntElt, RngIntElt -> GrpPSL2
For a positive integer N and i=0, 1, 2, 3, or 4, this is the group Gamma_0(N), Gamma_1(N), Gamma(N), Gamma^1(N) or Gamma^0(N) respectively.
CongruenceSubgroup([N,M,P]) : SeqEnum -> GrpPSL2
For integers N, M, P, with M|NP, the congruence subgroup {.pmatrix(a & b cr c & d) in SL_2(Z) | c = 0 mod N, a = d = 1 mod M, b = 0 mod P}.
Intersection(G,H) : GrpPSL2, GrpPSL2 -> GrpPSL2
G meet H : GrpPSL2, GrpPSL2 -> GrpPSL2
The intersection of congruence subgroups G and H.

Example GrpPSL2_Creation (H33E2)

Examples of defining different congruence subgroups:


> G := PSL2(Integers());
> H := CongruenceSubgroup([2,3,6]);
> H;
Gamma_0(2) intersection Gamma^1(3) intersection Gamma^0(2)
> K := CongruenceSubgroup(0,5);
> K meet H;
Gamma_0(10) intersection Gamma^1(3) intersection Gamma^0(2)


Relations

G eq H : GrpPSL2, GrpPSL2 -> BoolElt
Returns true if and only if the congruence subgroups G and H are equal.
IsSubgroup(G,H) : GrpPSL2, GrpPSL2 -> BoolElt
For congruence subgroups G and H, returns true if and only if G is a subgroup of H.
Index(G,H) : GrpPSL2, GrpPSL2 -> RngIntElt
For congruence subgroups G and H, returns the index of G in H provided G is a subgroup of H.
Index(G) : GrpPSL2 -> RngIntElt
For G a congruence subgroup in PSL_2(Z), returns the index in PSL_2(Z).

Basic Attributes

Level(G) : GrpPSL2 -> RngIntElt
The Level of a congruence subgroup G.
IsCongruence(G) : GrpPSL2 -> BoolElt
Returns true if and only if G is a congruence subgroup.
IsGamma0(G) : GrpPSL2 -> BoolElt
Returns true if and only if G is equal to Gamma_0(N) for some integer N.
IsGamma1(G) : GrpPSL2 -> BoolElt
Returns true if and only if G is equal to Gamma_1(N) for some integer N.
BaseRing(G) : GrpPSL2 -> Rng
Returns the base ring over which matrices of the congruence subgroup G are defined.
Identity(G) : GrpPSL2 -> GrpPSL2Elt
Returns the identity matrix in the congruence subgroup G.
 [Next][Prev] [Right] [Left] [Up] [Index] [Root]