Elements of arithmetic subgroups¶
- class sage.modular.arithgroup.arithgroup_element.ArithmeticSubgroupElement[source]¶
Bases:
MultiplicativeGroupElement
An element of the group \(\SL_2(\ZZ)\), i.e. a 2x2 integer matrix of determinant 1.
- a()[source]¶
Return the upper left entry of
self
.EXAMPLES:
sage: Gamma0(13)([7,1,13,2]).a() 7
>>> from sage.all import * >>> Gamma0(Integer(13))([Integer(7),Integer(1),Integer(13),Integer(2)]).a() 7
- acton(z)[source]¶
Return the result of the action of
self
on z as a fractional linear transformation.EXAMPLES:
sage: G = Gamma0(15) sage: g = G([1, 2, 15, 31])
>>> from sage.all import * >>> G = Gamma0(Integer(15)) >>> g = G([Integer(1), Integer(2), Integer(15), Integer(31)])
An example of g acting on a symbolic variable:
sage: z = var('z') # needs sage.symbolic sage: g.acton(z) # needs sage.symbolic (z + 2)/(15*z + 31)
>>> from sage.all import * >>> z = var('z') # needs sage.symbolic >>> g.acton(z) # needs sage.symbolic (z + 2)/(15*z + 31)
An example involving the Gaussian numbers:
sage: # needs sage.rings.number_field sage: x = polygen(ZZ, 'x') sage: K.<i> = NumberField(x^2 + 1) sage: g.acton(i) 1/1186*i + 77/1186
>>> from sage.all import * >>> # needs sage.rings.number_field >>> x = polygen(ZZ, 'x') >>> K = NumberField(x**Integer(2) + Integer(1), names=('i',)); (i,) = K._first_ngens(1) >>> g.acton(i) 1/1186*i + 77/1186
An example with complex numbers:
sage: C.<i> = ComplexField() sage: g.acton(i) 0.0649241146711636 + 0.000843170320404721*I
>>> from sage.all import * >>> C = ComplexField(names=('i',)); (i,) = C._first_ngens(1) >>> g.acton(i) 0.0649241146711636 + 0.000843170320404721*I
An example with the cusp infinity:
sage: g.acton(infinity) 1/15
>>> from sage.all import * >>> g.acton(infinity) 1/15
An example which maps a finite cusp to infinity:
sage: g.acton(-31/15) +Infinity
>>> from sage.all import * >>> g.acton(-Integer(31)/Integer(15)) +Infinity
Note that when acting on instances of cusps the return value is still a rational number or infinity (Note the presence of ‘+’, which does not show up for cusp instances):
sage: g.acton(Cusp(-31/15)) +Infinity
>>> from sage.all import * >>> g.acton(Cusp(-Integer(31)/Integer(15))) +Infinity
- b()[source]¶
Return the upper right entry of
self
.EXAMPLES:
sage: Gamma0(13)([7,1,13,2]).b() 1
>>> from sage.all import * >>> Gamma0(Integer(13))([Integer(7),Integer(1),Integer(13),Integer(2)]).b() 1
- c()[source]¶
Return the lower left entry of
self
.EXAMPLES:
sage: Gamma0(13)([7,1,13,2]).c() 13
>>> from sage.all import * >>> Gamma0(Integer(13))([Integer(7),Integer(1),Integer(13),Integer(2)]).c() 13
- d()[source]¶
Return the lower right entry of
self
.EXAMPLES:
sage: Gamma0(13)([7,1,13,2]).d() 2
>>> from sage.all import * >>> Gamma0(Integer(13))([Integer(7),Integer(1),Integer(13),Integer(2)]).d() 2
- det()[source]¶
Return the determinant of
self
, which is always 1.EXAMPLES:
sage: Gamma1(11)([12,11,-11,-10]).det() 1
>>> from sage.all import * >>> Gamma1(Integer(11))([Integer(12),Integer(11),-Integer(11),-Integer(10)]).det() 1
- determinant()[source]¶
Return the determinant of
self
, which is always 1.EXAMPLES:
sage: Gamma0(691)([1,0,691,1]).determinant() 1
>>> from sage.all import * >>> Gamma0(Integer(691))([Integer(1),Integer(0),Integer(691),Integer(1)]).determinant() 1
- matrix()[source]¶
Return the matrix corresponding to
self
.EXAMPLES:
sage: x = Gamma1(3)([4,5,3,4]) ; x [4 5] [3 4] sage: x.matrix() [4 5] [3 4] sage: type(x.matrix()) <class 'sage.matrix.matrix_integer_dense.Matrix_integer_dense'>
>>> from sage.all import * >>> x = Gamma1(Integer(3))([Integer(4),Integer(5),Integer(3),Integer(4)]) ; x [4 5] [3 4] >>> x.matrix() [4 5] [3 4] >>> type(x.matrix()) <class 'sage.matrix.matrix_integer_dense.Matrix_integer_dense'>
- multiplicative_order()[source]¶
Return the multiplicative order of this element.
EXAMPLES:
sage: SL2Z.one().multiplicative_order() 1 sage: SL2Z([-1,0,0,-1]).multiplicative_order() 2 sage: s,t = SL2Z.gens() sage: ((t^3*s*t^2) * s * ~(t^3*s*t^2)).multiplicative_order() 4 sage: (t^3 * s * t * t^-3).multiplicative_order() 6 sage: (t^3 * s * t * s * t^-2).multiplicative_order() 3 sage: SL2Z([2,1,1,1]).multiplicative_order() +Infinity sage: SL2Z([-2,1,1,-1]).multiplicative_order() +Infinity
>>> from sage.all import * >>> SL2Z.one().multiplicative_order() 1 >>> SL2Z([-Integer(1),Integer(0),Integer(0),-Integer(1)]).multiplicative_order() 2 >>> s,t = SL2Z.gens() >>> ((t**Integer(3)*s*t**Integer(2)) * s * ~(t**Integer(3)*s*t**Integer(2))).multiplicative_order() 4 >>> (t**Integer(3) * s * t * t**-Integer(3)).multiplicative_order() 6 >>> (t**Integer(3) * s * t * s * t**-Integer(2)).multiplicative_order() 3 >>> SL2Z([Integer(2),Integer(1),Integer(1),Integer(1)]).multiplicative_order() +Infinity >>> SL2Z([-Integer(2),Integer(1),Integer(1),-Integer(1)]).multiplicative_order() +Infinity