The modular group \({\rm SL}_2(\ZZ)\)¶
AUTHORS:
Niles Johnson (2010-08): trac ticket #3893:
random_element()
should pass on*args
and**kwds
.
-
class
sage.modular.arithgroup.congroup_sl2z.
SL2Z_class
¶ Bases:
sage.modular.arithgroup.congroup_gamma0.Gamma0_class
The full modular group \({\rm SL}_2(\ZZ)\), regarded as a congruence subgroup of itself.
-
is_subgroup
(right)¶ Return True if self is a subgroup of right.
EXAMPLES:
sage: SL2Z.is_subgroup(SL2Z) True sage: SL2Z.is_subgroup(Gamma1(1)) True sage: SL2Z.is_subgroup(Gamma0(6)) False
-
random_element
(bound=100, *args, **kwds)¶ Return a random element of \({\rm SL}_2(\ZZ)\) with entries whose absolute value is strictly less than bound (default 100). Additional arguments and keywords are passed to the random_element method of ZZ.
(Algorithm: Generate a random pair of integers at most bound. If they are not coprime, throw them away and start again. If they are, find an element of \({\rm SL}_2(\ZZ)\) whose bottom row is that, and left-multiply it by \(\begin{pmatrix} 1 & w \\ 0 & 1\end{pmatrix}\) for an integer \(w\) randomly chosen from a small enough range that the answer still has entries at most bound.)
It is, unfortunately, not true that all elements of SL2Z with entries < bound appear with equal probability; those with larger bottom rows are favoured, because there are fewer valid possibilities for w.
EXAMPLES:
sage: SL2Z.random_element() [60 13] [83 18] sage: SL2Z.random_element(5) [-1 3] [ 1 -4]
Passes extra positional or keyword arguments through:
sage: SL2Z.random_element(5, distribution='1/n') [ 1 -4] [ 0 1]
-
reduce_cusp
(c)¶ Return the unique reduced cusp equivalent to c under the action of self. Always returns Infinity, since there is only one equivalence class of cusps for \(SL_2(Z)\).
EXAMPLES:
sage: SL2Z.reduce_cusp(Cusps(-1/4)) Infinity
-
-
sage.modular.arithgroup.congroup_sl2z.
is_SL2Z
(x)¶ Return True if x is the modular group \({\rm SL}_2(\ZZ)\).
EXAMPLES:
sage: from sage.modular.arithgroup.all import is_SL2Z sage: is_SL2Z(SL2Z) True sage: is_SL2Z(Gamma0(6)) False