Congruence Subgroup \Gamma(N)

class sage.modular.arithgroup.congroup_gamma.Gamma_class(*args, **kwds)

Bases: sage.modular.arithgroup.congroup_generic.CongruenceSubgroup

The principal congruence subgroup \Gamma(N).

are_equivalent(x, y, trans=False)

Check if the cusps x and y are equivalent under the action of this group.

ALGORITHM: The cusps u_1 / v_1 and u_2 / v_2 are equivalent modulo \Gamma(N) if and only if (u_1, v_1) = \pm (u_2, v_2) \bmod N.

EXAMPLE:

sage: Gamma(7).are_equivalent(Cusp(2/3), Cusp(5/4))
True
image_mod_n()

Return the image of this group modulo N, as a subgroup of SL(2, \ZZ
/ N\ZZ). This is just the trivial subgroup.

EXAMPLE:

sage: Gamma(3).image_mod_n()
Matrix group over Ring of integers modulo 3 with 1 generators (
[1 0]
[0 1]
)
index()

Return the index of self in the full modular group. This is given by

\prod_{\substack{p \mid N \\ \text{$p$ prime}}}\left(p^{3e}-p^{3e-2}\right).

EXAMPLE::
sage: [Gamma(n).index() for n in [1..19]] [1, 6, 24, 48, 120, 144, 336, 384, 648, 720, 1320, 1152, 2184, 2016, 2880, 3072, 4896, 3888, 6840] sage: Gamma(32041).index() 32893086819240
ncusps()

Return the number of cusps of this subgroup \Gamma(N).

EXAMPLES:

sage: [Gamma(n).ncusps() for n in [1..19]]
[1, 3, 4, 6, 12, 12, 24, 24, 36, 36, 60, 48, 84, 72, 96, 96, 144, 108, 180]
sage: Gamma(30030).ncusps()
278691840
sage: Gamma(2^30).ncusps() 
432345564227567616
nirregcusps()

Return the number of irregular cusps of self. For principal congruence subgroups this is always 0.

EXAMPLE:

sage: Gamma(17).nirregcusps()
0
nu3()

Return the number of elliptic points of order 3 for this arithmetic subgroup. Since this subgroup is \Gamma(N) for N \ge 2, there are no such points, so we return 0.

EXAMPLE:

sage: Gamma(89).nu3()
0
reduce_cusp(c)

Calculate the unique reduced representative of the equivalence of the cusp c modulo this group. The reduced representative of an equivalence class is the unique cusp in the class of the form u/v with u, v \ge 0 coprime, v minimal, and u minimal for that v.

EXAMPLES:

sage: Gamma(5).reduce_cusp(1/5)
Infinity
sage: Gamma(5).reduce_cusp(7/8)
3/2
sage: Gamma(6).reduce_cusp(4/3)
2/3

TESTS:

sage: G = Gamma(50); all([c == G.reduce_cusp(c) for c in G.cusps()])
True
sage.modular.arithgroup.congroup_gamma.Gamma_constructor(N)

Return the congruence subgroup \Gamma(N).

EXAMPLES:

sage: Gamma(5) # indirect doctest
Congruence Subgroup Gamma(5)
sage: G = Gamma(23)
sage: G is Gamma(23)
True
sage: TestSuite(G).run()

Test global uniqueness:

sage: G = Gamma(17)
sage: G is loads(dumps(G))
True
sage: G2 = sage.modular.arithgroup.congroup_gamma.Gamma_class(17)
sage: G == G2
True
sage: G is G2
False
sage.modular.arithgroup.congroup_gamma.is_Gamma(x)

Return True if x is a congruence subgroup of type Gamma.

EXAMPLES:

sage: from sage.modular.arithgroup.all import is_Gamma
sage: is_Gamma(Gamma0(13))
False
sage: is_Gamma(Gamma(4))
True

Previous topic

Congruence Subgroup \Gamma_0(N)

Next topic

The modular group {\rm SL}_2(\ZZ)

This Page