jsMath

# Tutorial: Computing With Modular Forms Using Magma

Contents, General, Modular Forms, Modular Symbols, Future

# Defining Ambient Spaces of Modular Symbols

`ModularSymbols(11)`
 ```Full modular symbols space for Gamma_0(11) of weight 2 and dimension 3 over Rational Field``` `Full modular symbols space for Gamma_0(11) of weight 2 and dimension 3 over Rational Field`
`ModularSymbols(Gamma1(13),3)`
 ```Full modular symbols space for Gamma_1(13) of weight 3 and dimension 28 over Rational Field``` `Full modular symbols space for Gamma_1(13) of weight 3 and dimension 28 over Rational Field`
```G<a> := DirichletGroup(13,CyclotomicField(12));
ModularSymbols(a^2,2)```
 ```Full modular symbols space of level 13, weight 2, character a^2, and dimension 4 over Cyclotomic Field of order 12 and degree 4``` `Full modular symbols space of level 13, weight 2, character a^2, and dimension 4 over Cyclotomic Field of order 12 and degree 4`

# Cutting Out Submodules: Eisenstein, Cuspidal, New, Old

`M := ModularSymbols(Gamma0(33)); M`
 ```Full modular symbols space for Gamma_0(33) of weight 2 and dimension 9 over Rational Field``` `Full modular symbols space for Gamma_0(33) of weight 2 and dimension 9 over Rational Field`
`Basis(EisensteinSubspace(M))`
 ```[ {oo, 0} + {1/3, 4/11}, {-1/6, 0} + 4*{-1/15, 0} + -6*{-1/22, 0} + 6*{-1/24, 0} + {-1/27, 0} + 4*{-1/30, 0} + 14*{1/3, 4/11}, {-1/12, 0} + -1*{-1/15, 0} + 3*{-1/22, 0} + -2*{-1/24, 0} + -1*{-1/30, 0} + -7*{1/3, 4/11} ]``` ```[ {oo, 0} + {1/3, 4/11}, {-1/6, 0} + 4*{-1/15, 0} + -6*{-1/22, 0} + 6*{-1/24, 0} + {-1/27, 0} + 4*{-1/30, 0} + 14*{1/3, 4/11}, {-1/12, 0} + -1*{-1/15, 0} + 3*{-1/22, 0} + -2*{-1/24, 0} + -1*{-1/30, 0} + -7*{1/3, 4/11} ]```
`Basis(CuspidalSubspace(M))`
 ```[ {-1/6, 0} + -1*{-1/30, 0}, {-1/12, 0} + -1*{-1/30, 0}, {-1/15, 0} + -1*{-1/30, 0}, {-1/22, 0} + -1*{-1/30, 0} + {1/3, 4/11}, {-1/24, 0} + -1*{-1/30, 0}, {-1/27, 0} + -1*{-1/30, 0} ]``` ```[ {-1/6, 0} + -1*{-1/30, 0}, {-1/12, 0} + -1*{-1/30, 0}, {-1/15, 0} + -1*{-1/30, 0}, {-1/22, 0} + -1*{-1/30, 0} + {1/3, 4/11}, {-1/24, 0} + -1*{-1/30, 0}, {-1/27, 0} + -1*{-1/30, 0} ]```
`Basis(NewSubspace(M))`
 ```[ {oo, 0} + -4/5*{-1/15, 0} + 2/5*{-1/22, 0} + -2/5*{-1/24, 0} + -2/5*{-1/27, 0} + -4/5*{-1/30, 0} + 7/5*{1/3, 4/11}, {-1/6, 0} + -1*{-1/27, 0}, {-1/12, 0} + -1*{-1/15, 0} + {-1/22, 0} + -1*{-1/30, 0} + {1/3, 4/11} ]``` ```[ {oo, 0} + -4/5*{-1/15, 0} + 2/5*{-1/22, 0} + -2/5*{-1/24, 0} + -2/5*{-1/27, 0} + -4/5*{-1/30, 0} + 7/5*{1/3, 4/11}, {-1/6, 0} + -1*{-1/27, 0}, {-1/12, 0} + -1*{-1/15, 0} + {-1/22, 0} + -1*{-1/30, 0} + {1/3, 4/11} ]```
`Basis(OldSubspace(M))`
 ```Exception (click to the left for traceback): ... Runtime error in 'OldSubspace': Argument 1 must be cuspidal.``` ```Traceback (most recent call last): File "", line 1, in File "/home/was/talks/2007-06-04-banff-modform-magma/sage_notebook/worksheets/modsymspaces/code/18.py", line 4, in print _support_.syseval(magma, ur'''Basis(OldSubspace(M))''') File "/home/was/s/local/lib/python2.5/site-packages/sage/server/support.py", line 252, in syseval return system.eval(cmd) File "/home/was/s/local/lib/python2.5/site-packages/sage/interfaces/magma.py", line 260, in eval raise RuntimeError, "Error evaluation Magma code.\nIN:%s\nOUT:%s"%(x, ans) RuntimeError: Error evaluation Magma code. IN:Basis(OldSubspace(M)); OUT: >> Basis(OldSubspace(M)); ^ Runtime error in 'OldSubspace': Argument 1 must be cuspidal.```
`Basis(OldSubspace(CuspidalSubspace(M)))`
 ```[ {-1/6, 0} + -3*{-1/24, 0} + 2*{-1/27, 0}, {-1/12, 0} + -3*{-1/24, 0} + {-1/27, 0} + {-1/30, 0}, {-1/15, 0} + -2*{-1/24, 0} + {-1/27, 0}, {-1/22, 0} + -2*{-1/24, 0} + {-1/30, 0} + {1/3, 4/11} ]``` ```[ {-1/6, 0} + -3*{-1/24, 0} + 2*{-1/27, 0}, {-1/12, 0} + -3*{-1/24, 0} + {-1/27, 0} + {-1/30, 0}, {-1/15, 0} + -2*{-1/24, 0} + {-1/27, 0}, {-1/22, 0} + -2*{-1/24, 0} + {-1/30, 0} + {1/3, 4/11} ]```
`HeckeOperator(OldSubspace(CuspidalSubspace(M)),3)`
 ```[-4 0 3 6] [-2 -1 1 5] [-3 2 1 2] [-1 -1 1 2]``` ```[-4 0 3 6] [-2 -1 1 5] [-3 2 1 2] [-1 -1 1 2]```

# Newforms Corresponding to Simple Modular Symbols Factors

`M := ModularSymbols(389,2,1); M`
 ```Full modular symbols space for Gamma_0(389) of weight 2 and dimension 33 over Rational Field``` `Full modular symbols space for Gamma_0(389) of weight 2 and dimension 33 over Rational Field`
`time D := Decomposition(M,2); D`
 ```[ Modular symbols space for Gamma_0(389) of weight 2 and dimension 1 over Rational Field, Modular symbols space for Gamma_0(389) of weight 2 and dimension 1 over Rational Field, Modular symbols space for Gamma_0(389) of weight 2 and dimension 2 over Rational Field, Modular symbols space for Gamma_0(389) of weight 2 and dimension 3 over Rational Field, Modular symbols space for Gamma_0(389) of weight 2 and dimension 6 over Rational Field, Modular symbols space for Gamma_0(389) of weight 2 and dimension 20 over Rational Field ] CPU time: 0.00 s, Wall time: 0.16 s``` ```[ Modular symbols space for Gamma_0(389) of weight 2 and dimension 1 over Rational Field, Modular symbols space for Gamma_0(389) of weight 2 and dimension 1 over Rational Field, Modular symbols space for Gamma_0(389) of weight 2 and dimension 2 over Rational Field, Modular symbols space for Gamma_0(389) of weight 2 and dimension 3 over Rational Field, Modular symbols space for Gamma_0(389) of weight 2 and dimension 6 over Rational Field, Modular symbols space for Gamma_0(389) of weight 2 and dimension 20 over Rational Field ] CPU time: 0.00 s, Wall time: 0.16 s```
```for A in D do
if IsCuspidal(A) then
print qEigenform(A, 4);
end if;
end for;```
 ```q - 2*q^2 - 2*q^3 + O(q^4) q + a*q^2 + (a - 2)*q^3 + O(q^4) q + a*q^2 - a*q^3 + O(q^4) q + a*q^2 + (a^5 + 3*a^4 - 2*a^3 - 8*a^2 + a + 2)*q^3 + O(q^4) q + a*q^2 + (-20146763/1097385680*a^19 + 20466323/219477136*a^18 + 119884773/274346420*a^17 - 753611053/274346420*a^16 - 381358355/109738568*a^15 + 3611475535/109738568*a^14 + 6349339639/1097385680*a^13 - 56878934241/274346420*a^12 + 71555185319/1097385680*a^11 + 163330998525/219477136*a^10 - 223188336749/548692840*a^9 - 169878973265/109738568*a^8 + 265944624817/274346420*a^7 + 199655892261/109738568*a^6 - 1167579836501/1097385680*a^5 - 619178000979/548692840*a^4 + 261766056911/548692840*a^3 + 4410485304/13717321*a^2 - 14646077211/274346420*a - 1604641167/68586605)*q^3 + O(q^4)``` ```q - 2*q^2 - 2*q^3 + O(q^4) q + a*q^2 + (a - 2)*q^3 + O(q^4) q + a*q^2 - a*q^3 + O(q^4) q + a*q^2 + (a^5 + 3*a^4 - 2*a^3 - 8*a^2 + a + 2)*q^3 + O(q^4) q + a*q^2 + (-20146763/1097385680*a^19 + 20466323/219477136*a^18 + 119884773/274346420*a^17 - 753611053/274346420*a^16 - 381358355/109738568*a^15 + 3611475535/109738568*a^14 + 6349339639/1097385680*a^13 - 56878934241/274346420*a^12 + 71555185319/1097385680*a^11 + 163330998525/219477136*a^10 - 223188336749/548692840*a^9 - 169878973265/109738568*a^8 + 265944624817/274346420*a^7 + 199655892261/109738568*a^6 - 1167579836501/1097385680*a^5 - 619178000979/548692840*a^4 + 261766056911/548692840*a^3 + 4410485304/13717321*a^2 - 14646077211/274346420*a - 1604641167/68586605)*q^3 + O(q^4)```
`Parent(qEigenform(D))`
 ```Power series ring in q over Univariate Quotient Polynomial Algebra in a over Rational Field with modulus a^3 - 4*a - 2``` ```Power series ring in q over Univariate Quotient Polynomial Algebra in a over Rational Field with modulus a^3 - 4*a - 2```

# Atkin-Lehner Operators

`M := ModularSymbols(33,2,1); M`
 ```Full modular symbols space for Gamma_0(33) of weight 2 and dimension 6 over Rational Field``` `Full modular symbols space for Gamma_0(33) of weight 2 and dimension 6 over Rational Field`
`AtkinLehnerOperator(M, 3)`
 ```[ 0 0 0 0 0 -1] [ 0 -1 0 0 0 0] [ 0 0 0 0 -1 0] [ 0 0 -1 1 -1 0] [ 0 0 -1 0 0 0] [-1 0 0 0 0 0]``` ```[ 0 0 0 0 0 -1] [ 0 -1 0 0 0 0] [ 0 0 0 0 -1 0] [ 0 0 -1 1 -1 0] [ 0 0 -1 0 0 0] [-1 0 0 0 0 0]```
`S := CuspidalSubspace(M);`
`AtkinLehnerOperator(S, 3)`
 ```[-1 1 0] [ 0 1 0] [ 0 0 1]``` ```[-1 1 0] [ 0 1 0] [ 0 0 1]```