jsMath

# Tutorial: Computing With Modular Forms Using SAGE

Contents, General, Modular Forms, Modular Symbols, Future

# Congruence Subgroups

`G = Gamma0(11); G`
 `Congruence Subgroup Gamma0(11)` `Congruence Subgroup Gamma0(11)`
```# I haven't finished implementing a G.generators() command..., but you probably
# don't care.```
`G.coset_reps()`
 `` ``
`list(G.coset_reps())`
 ```[[1, 0, 0, 1], [0, -1, 1, 0], [0, -1, 1, 1], [0, -1, 1, 2], [0, -1, 1, 3], [0, -1, 1, 4], [0, -1, 1, 5], [0, -1, 1, 6], [0, -1, 1, 7], [0, -1, 1, 8], [0, -1, 1, 9], [0, -1, 1, 10]]``` `[[1, 0, 0, 1], [0, -1, 1, 0], [0, -1, 1, 1], [0, -1, 1, 2], [0, -1, 1, 3], [0, -1, 1, 4], [0, -1, 1, 5], [0, -1, 1, 6], [0, -1, 1, 7], [0, -1, 1, 8], [0, -1, 1, 9], [0, -1, 1, 10]]`

# Dimension Formulas

`dimension_cusp_forms(11,2)`
 `1` `1`
`dimension_cusp_forms(Gamma1(13),2)`
 `2` `2`
`dimension_cusp_forms(100,2)`
 `7` `7`
`dimension_new_cusp_forms(Gamma1(100),2)`
 `141` `141`

# Dirichlet Characters

```G.<a,b> = DirichletGroup(4*37)
G```
 ```Group of Dirichlet characters of modulus 148 over Cyclotomic Field of order 36 and degree 12``` `Group of Dirichlet characters of modulus 148 over Cyclotomic Field of order 36 and degree 12`
`G.unit_gens()`
 `[75, 113]` `[75, 113]`
```# Printing a character gives the values of the character on the
# generators 75 and 113 for (Z/NZ)^*

print "a = ", a
print "b = ", b```
 ```a = [-1, 1] b = [1, zeta36]``` ```a = [-1, 1] b = [1, zeta36]```
`order(b)`
 `36` `36`
`[b(n) for n in range(1,11)]`
 ```[1, 0, -zeta36^8, 0, -zeta36^5, 0, -zeta36^8 + zeta36^2, 0, zeta36^10 - zeta36^4, 0]``` `[1, 0, -zeta36^8, 0, -zeta36^5, 0, -zeta36^8 + zeta36^2, 0, zeta36^10 - zeta36^4, 0]`
`b.element()`
 `(0, 1)` `(0, 1)`
`b.values_on_gens()`
 `(1, zeta36)` `(1, zeta36)`
`G([-1,-1])`
 `[-1, -1]` `[-1, -1]`
`dimension_cusp_forms(a,3)`
 `36` `36`
`dimension_cusp_forms(b,3)`
 `35` `35`