# Degeneracy maps#

class sage.modular.hecke.degenmap.DegeneracyMap(matrix, domain, codomain, t)[source]#

A degeneracy map between Hecke modules of different levels.

EXAMPLES:

We construct a number of degeneracy maps:

```sage: M = ModularSymbols(33)
sage: d = M.degeneracy_map(11)
sage: d
Hecke module morphism degeneracy map corresponding to f(q) |--> f(q)
defined by the matrix
[ 1  0  0]
[ 0  0  1]
[ 0  0 -1]
[ 0  1 -1]
[ 0  0  1]
[ 0 -1  1]
[-1  0  0]
[-1  0  0]
[-1  0  0]
Domain: Modular Symbols space of dimension 9 for Gamma_0(33) of weight ...
Codomain: Modular Symbols space of dimension 3 for Gamma_0(11) of weight ...
sage: d.t()
1
sage: d = M.degeneracy_map(11,3)
sage: d.t()
3
```
```>>> from sage.all import *
>>> M = ModularSymbols(Integer(33))
>>> d = M.degeneracy_map(Integer(11))
>>> d
Hecke module morphism degeneracy map corresponding to f(q) |--> f(q)
defined by the matrix
[ 1  0  0]
[ 0  0  1]
[ 0  0 -1]
[ 0  1 -1]
[ 0  0  1]
[ 0 -1  1]
[-1  0  0]
[-1  0  0]
[-1  0  0]
Domain: Modular Symbols space of dimension 9 for Gamma_0(33) of weight ...
Codomain: Modular Symbols space of dimension 3 for Gamma_0(11) of weight ...
>>> d.t()
1
>>> d = M.degeneracy_map(Integer(11),Integer(3))
>>> d.t()
3
```

The parameter d must be a divisor of the quotient of the two levels:

```sage: d = M.degeneracy_map(11,2)
Traceback (most recent call last):
...
ValueError: the level of self (=33) must be a divisor or multiple
of level (=11) and t (=2) must be a divisor of the quotient
```
```>>> from sage.all import *
>>> d = M.degeneracy_map(Integer(11),Integer(2))
Traceback (most recent call last):
...
ValueError: the level of self (=33) must be a divisor or multiple
of level (=11) and t (=2) must be a divisor of the quotient
```

Degeneracy maps can also go from lower level to higher level:

```sage: M.degeneracy_map(66,2)
Hecke module morphism degeneracy map corresponding to f(q) |--> f(q^2)
defined by the matrix
[ 2  0  0  0  0  0  1  0  0  0  1 -1  0  0  0 -1  1  0  0  0  0  0  0  0 -1]
[ 0  0  1 -1  0 -1  1  0 -1  2  0  0  0 -1  0  0 -1  1  2 -2  0  0  0 -1  1]
[ 0  0  1  0  0  0  0  0  1  0  0  0  1  0  0  0 -1  1  0  0 -1  1  0  0  0]
[ 0  0  0  0  0  0  0  0  0  2 -1  0  0  1  0  0 -1  1  0  0  1  0 -1 -1  1]
[ 0 -1  0  0  1  0  0  0  0  0  0  1  0  0  1  1 -1  0  0 -1  0  0  0  0  0]
[ 0  0  0  0  0  0  0  1 -1  0  0  2 -1  0  0  1  0  0  0 -1  0 -1  1 -1  1]
[ 0  0  0  0  1 -1  0  1 -1  0  0  0  0  0 -1  2  0  0  0  0  1  0  1  0  0]
[ 0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  1  0  0]
[ 0  0  0  0  0  0  0  0  0  0 -1  0  0  0  0  0  0  0  0  1  1  1  0  0  0]
Domain: Modular Symbols space of dimension 9 for Gamma_0(33) of weight ...
Codomain: Modular Symbols space of dimension 25 for Gamma_0(66) of weight ...
```
```>>> from sage.all import *
>>> M.degeneracy_map(Integer(66),Integer(2))
Hecke module morphism degeneracy map corresponding to f(q) |--> f(q^2)
defined by the matrix
[ 2  0  0  0  0  0  1  0  0  0  1 -1  0  0  0 -1  1  0  0  0  0  0  0  0 -1]
[ 0  0  1 -1  0 -1  1  0 -1  2  0  0  0 -1  0  0 -1  1  2 -2  0  0  0 -1  1]
[ 0  0  1  0  0  0  0  0  1  0  0  0  1  0  0  0 -1  1  0  0 -1  1  0  0  0]
[ 0  0  0  0  0  0  0  0  0  2 -1  0  0  1  0  0 -1  1  0  0  1  0 -1 -1  1]
[ 0 -1  0  0  1  0  0  0  0  0  0  1  0  0  1  1 -1  0  0 -1  0  0  0  0  0]
[ 0  0  0  0  0  0  0  1 -1  0  0  2 -1  0  0  1  0  0  0 -1  0 -1  1 -1  1]
[ 0  0  0  0  1 -1  0  1 -1  0  0  0  0  0 -1  2  0  0  0  0  1  0  1  0  0]
[ 0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  1  0  0]
[ 0  0  0  0  0  0  0  0  0  0 -1  0  0  0  0  0  0  0  0  1  1  1  0  0  0]
Domain: Modular Symbols space of dimension 9 for Gamma_0(33) of weight ...
Codomain: Modular Symbols space of dimension 25 for Gamma_0(66) of weight ...
```
t()[source]#

Return the divisor of the quotient of the two levels associated to the degeneracy map.

EXAMPLES:

```sage: M = ModularSymbols(33)
sage: d = M.degeneracy_map(11,3)
sage: d.t()
3
sage: d = M.degeneracy_map(11,1)
sage: d.t()
1
```
```>>> from sage.all import *
>>> M = ModularSymbols(Integer(33))
>>> d = M.degeneracy_map(Integer(11),Integer(3))
>>> d.t()
3
>>> d = M.degeneracy_map(Integer(11),Integer(1))
>>> d.t()
1
```