Congruence Subgroups

We denote by SL2(Z) the group of 2 by 2 matrices with integer coefficients and determinant 1. The group PSL2(Z) is the projectivization of SL2(Z). For any integer N we have groups Γ0(N)={pmatrix(a & b
c & d)∈SL2(Z) Big| pmatrix(a & b
c & d) ≡ pmatrix(* & *
0 & * ) mod N} Γ1(N)={pmatrix(a & b
c & d)∈SL2(Z) Big| pmatrix(a & b
c & d) ≡ pmatrix(1 & *
0 & 1) mod N} Γ(N)={pmatrix(a & b
c & d)∈SL2(Z) Big| pmatrix(a & b
c & d) ≡ pmatrix(1 & 0
0 & 1) mod N} Γ1(N)={pmatrix(a & b
c & d)∈SL2(Z) Big| pmatrix(a & b
c & d) ≡ pmatrix(1 & 0
* & 1) mod N} Γ0(N)={pmatrix(a & b
c & d)∈SL2(Z) Big| pmatrix(a & b
c & d) ≡ pmatrix(* & 0
* & * ) mod N} A congruence subgroup is any discrete subgroup Γ of SL2(R) which is commensurable with SL2(Z), that is, Γ∩SL2(Z) has finite index in Γ and in SL2(Z), and such that Γ(N) is contained in G for some N. The level N of a congruence subgroup G is the greatest integer N such that Γ(N) is contained in Γ. We will abuse notation and also refer to the projectivizations of these groups by the same names.

Creation of Subgroups of PSL2(R)

PSL2(R) : Rng -> GrpPSL2
Returns PSL2(R), the projective linear group over the ring R.
Gamma0(N) : RngIntElt -> GrpPSL2
The group Γ0(N) for any positive integer N.
Gamma1(N) : RngIntElt -> GrpPSL2
The group Γ1(N) for any positive integer N.
GammaUpper0(N) : RngIntElt -> GrpPSL2
The group Γ0(N) for any positive integer N.
GammaUpper1(N) : RngIntElt -> GrpPSL2
The group Γ1(N) for any positive integer N.
CongruenceSubgroup(N) : RngIntElt -> GrpPSL2
The group Γ(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 Γ0(N), Γ1(N), Γ(N), Γ1(N) or Γ0(N) respectively.
CongruenceSubgroup([N,M,P]) : SeqEnum -> GrpPSL2
This is the congruence subgroup consisting of 2 by 2 matrices with integer coefficients [a, b, c, d] with b = 0 mod P, c = 0 mod N, and a = d = 1 mod M. It is required that M divides NP.
Intersection(G,H) : GrpPSL2, GrpPSL2 -> GrpPSL2
G meet H : GrpPSL2, GrpPSL2 -> GrpPSL2
The intersection of congruence subgroups G and H.

Example GrpPSL2_Creation (H142E2)

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.
H subset G : GrpPSL2, GrpPSL2 -> BoolElt
For congruence subgroups G and H contained in PSL2(Z), returns true if and only if H is a subgroup of G.
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 PSL2(Z), returns the index in PSL2(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 Γ0(N) for some integer N.
IsGamma1(G) : GrpPSL2 -> BoolElt
Returns true if and only if G is equal to Γ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]


Version: V2.29 of Fri Nov 28 15:14:01 AEDT 2025