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.

Contents

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 (H139E2)

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.
V2.28, 13 July 2023