J1(29) - 2011-09-29
system:sage


{{{id=1|
time M = ModularSymbols(Gamma1(29))
///
Time: CPU 0.10 s, Wall: 0.24 s
}}}

{{{id=2|
M
///
Modular Symbols space of dimension 71 for Gamma_1(29) of weight 2 with sign 0 and over Rational Field
}}}

{{{id=3|
time S = M.cuspidal_submodule()
///
Time: CPU 0.29 s, Wall: 0.34 s
}}}

{{{id=4|
S
///
Modular Symbols subspace of dimension 44 of Modular Symbols space of dimension 71 for Gamma_1(29) of weight 2 with sign 0 and over Rational Field
}}}

{{{id=5|
time I = M.integral_structure()
///
Time: CPU 0.05 s, Wall: 0.06 s
}}}

{{{id=138|
# verify default structure happens to already be integral (by accident), which simplifies things.
I.basis_matrix() == 1
///
True
}}}

{{{id=8|
time db3 = S.diamond_bracket_operator(3).matrix()
///
Time: CPU 0.09 s, Wall: 0.12 s
}}}

{{{id=9|
db3.fcp()
///
(x - 1)^4 * (x + 1)^4 * (x^6 + x^5 + x^4 + x^3 + x^2 + x + 1)^2 * (x^6 - x^5 + x^4 - x^3 + x^2 - x + 1)^4
}}}

{{{id=12|
def eta(ell):
    T = S.hecke_matrix(ell)
    dbd = S.diamond_bracket_operator(ell).matrix()
    return T - (1 + dbd * ell)
///
}}}

{{{id=14|
eta(3).det().factor()
///
2^30 * 3^4 * 7^2 * 43^2 * 17837^2
}}}

{{{id=15|
eta(5).det().factor()
///
2^24 * 3^8 * 7^6 * 13^4 * 43^2 * 17837^2
}}}

{{{id=19|
time phi = S.integral_period_mapping()
///
Time: CPU 1.44 s, Wall: 1.45 s
}}}

{{{id=20|
phi(M.0).denominator().factor()
///
2^2 * 3 * 7^2 * 43 * 17837
}}}

{{{id=23|
E = End(ZZ^44)
///
}}}

{{{id=28|
psi = E(eta(3))
///
}}}

{{{id=29|
Q0 = psi.codomain() / psi.image()
///
}}}

{{{id=30|
Q0.cardinality().factor()
///
2^30 * 3^4 * 7^2 * 43^2 * 17837^2
}}}

{{{id=32|
Q0
///
Finitely generated module V/W over Integer Ring with invariants (4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 386563464, 386563464)
}}}

<p>Next chop $\ker(\eta_3)$ down using $\eta_5$.</p>

{{{id=33|
E0 = End(Q0); E0
///
Set of Morphisms from Finitely generated module V/W over Integer Ring with invariants (4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 386563464, 386563464) to Finitely generated module V/W over Integer Ring with invariants (4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 386563464, 386563464) in Category of modules over Integer Ring
}}}

{{{id=37|
psi = E(eta(5))
///
}}}

{{{id=39|
im_gens = [Q0(psi(x.lift())) for x in Q0.gens()]; im_gens
///
[(0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 193281732), (0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 193281732, 193281732), (0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 193281732, 0), (0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 193281732, 0), (0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 193281732, 0), (0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 193281732, 0), (0, 0, 0, 0, 2, 0, 4, 2, 0, 0, 193281732, 0), (0, 0, 0, 0, 0, 2, 6, 4, 0, 0, 289922598, 0), (2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 289922598, 193281732), (0, 0, 0, 0, 2, 2, 2, 4, 4, 2, 96640866, 96640866), (0, 0, 2, 0, 2, 2, 0, 2, 0, 0, 96640866, 0), (2, 0, 2, 2, 0, 2, 2, 4, 6, 0, 193281732, 0)]
}}}

{{{id=36|
psi5 = Q0.hom(im_gens)
///
}}}

{{{id=35|
E5 = psi5.kernel(); E5
///
Finitely generated module V/W over Integer Ring with invariants (2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 193281732, 193281732)
}}}

{{{id=41|
psi = E(eta(7))
im_gens = [Q0(psi(x.lift())) for x in E5.gens()]
psi_mod = E5.hom(im_gens)
E7 = psi_mod.kernel()
///
}}}

{{{id=42|
E7
///
Finitely generated module V/W over Integer Ring with invariants (2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 64427244, 64427244)
}}}

{{{id=43|
E7.cardinality().factor()
///
2^18 * 3^2 * 7^2 * 43^2 * 17837^2
}}}

{{{id=44|
%time
psi = E(eta(11))
im_gens = [Q0(psi(x.lift())) for x in E7.gens()]
psi_mod = E7.hom(im_gens)
E11 = psi_mod.kernel()
///
CPU time: 1.62 s,  Wall time: 1.64 s
}}}

{{{id=45|
E11.cardinality().factor()
///
2^18 * 3^2 * 7^2 * 43^2 * 17837^2
}}}

{{{id=46|
eta(11).det().factor()
///
2^24 * 3^2 * 5^2 * 7^8 * 17^2 * 43^2 * 1933^2 * 17837^2 * 28547^2
}}}

{{{id=50|

///
}}}

{{{id=49|
M = ModularSymbols(Gamma1(29), sign=1)
S = M.cuspidal_subspace()
///
}}}

{{{id=57|
dbd = lambda d: S.diamond_bracket_operator(d).matrix()
///
}}}

{{{id=48|
eta = lambda ell: (S.hecke_matrix(ell) - (1 + dbd(ell)*ell))
///
}}}

{{{id=71|
for ell in primes(3,24):
    print ell, eta(ell).det().factor()
///
3 2^15 * 3^2 * 7 * 43 * 17837
5 2^12 * 3^4 * 7^3 * 13^2 * 43 * 17837
7 2^17 * 3^2 * 7 * 43^2 * 113 * 463 * 17837
11 2^12 * 3 * 5 * 7^4 * 17 * 43 * 1933 * 17837 * 28547
13 2^12 * 3^2 * 5^2 * 7 * 31 * 43 * 2521 * 17837 * 7334699
17 2^17 * 3 * 7^2 * 13^2 * 23 * 43^2 * 71 * 83^2 * 659 * 17837
19 2^19 * 3^4 * 7^3 * 29 * 43 * 281 * 17837 * 100095451
23 2^22 * 3^4 * 7 * 23 * 43 * 9157 * 17837 * 2651342387
}}}

{{{id=47|
factor(gcd([ZZ(eta(ell).det()) for ell in [3,5,7,11]]))
///
2^12 * 3 * 7 * 43 * 17837
}}}

{{{id=55|
factor(gcd([ZZ(eta(ell).det()) for ell in [3,5,7,11,13,17,19,23]]))
///
2^12 * 3 * 7 * 43 * 17837
}}}

{{{id=144|

///
}}}

{{{id=143|

///
}}}

{{{id=142|

///
}}}

{{{id=65|
M = ModularSymbols(Gamma1(29))
S = M.cuspidal_subspace()
SZ = S.integral_structure()
assert S.free_module().basis_matrix() == SZ.basis_matrix()
///
}}}

{{{id=59|
dbd = lambda d: S.diamond_bracket_operator(d).matrix()
eta0 = lambda ell: (S.hecke_matrix(ell) - (1 + dbd(ell)*ell))
eta = lambda ell: eta0(ell).change_ring(ZZ)
///
}}}

{{{id=68|
E = End(ZZ^S.dimension())
phi = E(eta(3))
Q3 = phi.codomain() / phi.image()
Q3.invariants(), Q3.cardinality().factor()
///
((4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 386563464, 386563464), 2^30 * 3^4 * 7^2 * 43^2 * 17837^2)
}}}

{{{id=67|
phi5 = E(eta(5))
psi5 = Q3.hom([Q3(phi5(x.lift())) for x in Q3.gens()])
Q5 = psi5.kernel()
Q5.invariants(), Q5.cardinality().factor()
///
((2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 193281732, 193281732), 2^18 * 3^4 * 7^2 * 43^2 * 17837^2)
}}}

{{{id=66|
phi7 = E(eta(7))
psi7 = Q5.hom([Q5(phi7(x.lift())) for x in Q5.gens()])
Q7 = psi7.kernel()
Q7.invariants(), Q7.cardinality().factor()
///
((2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 64427244, 64427244), 2^18 * 3^2 * 7^2 * 43^2 * 17837^2)
}}}

{{{id=82|
t = E(S.star_involution().matrix() - 1)
T = Q7.hom([Q7(t(x.lift())) for x in Q7.gens()])
Q7plus = T.kernel()
Q7plus.invariants(), Q7plus.cardinality().factor()
///
((2, 2, 2, 4, 4, 64427244), 2^9 * 3 * 7 * 43 * 17837)
}}}

<p>Is Q7 cuspidal??? &nbsp; To decide, we explicitly find the module in rational homodule the defines Q7. &nbsp; &nbsp;Modular symbols allow us to compute the modular symbol module in a similar way. &nbsp;We then just test for inclusion.</p>

{{{id=96|
A = eta(3)^(-1)
///
}}}

{{{id=92|
W3 = A.row_module(ZZ)
W3
///
Free module of degree 44 and rank 44 over Integer Ring
Echelon basis matrix:
44 x 44 dense matrix over Rational Field
}}}

{{{id=91|
factor((ZZ^44).index_in(W3))
///
2^30 * 3^4 * 7^2 * 43^2 * 17837^2
}}}

{{{id=100|
Ws = [(eta(ell)^(-1)).row_module(ZZ) for ell in [3,5,7]]
W = Ws[0].intersection(Ws[1]).intersection(Ws[2])
///
}}}

{{{id=127|
Q = W/ZZ^44
s_mat = S.star_involution().matrix() - 1
im_gens = [Q(x.lift()*s_mat) for x in Q.gens()]
///
}}}

{{{id=126|
Q.hom(im_gens).kernel().cardinality().factor()
///
2^9 * 3 * 7 * 43 * 17837
}}}

{{{id=147|
Q.hom(im_gens).kernel()
///
Finitely generated module V/W over Integer Ring with invariants (2, 2, 2, 4, 4, 64427244)
}}}

{{{id=146|
Q
///
Finitely generated module V/W over Integer Ring with invariants (2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 64427244, 64427244)
}}}

{{{id=128|
Q.cardinality().factor()
///
2^18 * 3^2 * 7^2 * 43^2 * 17837^2
}}}

{{{id=125|

///
}}}

<p>A double check (which works):</p>

{{{id=98|
factor((ZZ^44).index_in(W))
///
2^18 * 3^2 * 7^2 * 43^2 * 17837^2
}}}

<p>Now find the modular symbols module.</p>

{{{id=106|
pi = S.projection()
///
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_346.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("cGkgPSBTLnByb2plY3Rpb24oKQ=="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))' + '\n', '', 'single')
  File "", line 1, in <module>
    
  File "/private/var/folders/7y/7y-O1iZOGTmMUMnLq7otq++++TI/-Tmp-/tmpJFJBF_/___code___.py", line 2, in <module>
    exec compile(u'pi = S.projection()' + '\n', '', 'single')
  File "", line 1, in <module>
    
  File "/Users/wstein/sage/install/current/local/lib/python2.6/site-packages/sage/modular/hecke/module.py", line 1512, in projection
    "for decomposition factors."
NotImplementedError: Computation of projection only implemented for decomposition factors.
}}}

<p>So we have to code projection by hand. &nbsp;We just concate our choice of basis for the cuspidal subspace with any basis for eisenstein subspace. &nbsp;Projection is "write in terms of this basis, then forget eisenstein part".</p>

{{{id=103|
V = M.free_module()
V0 = V.span_of_basis(S.free_module().basis() + M.eisenstein_submodule().free_module().basis())
pi = lambda x: V0.coordinates(x.element())[:44]
///
}}}

{{{id=102|
pi(M.0)
///
[9/2107, 1192179/37582559, 10963823/225495354, 906229/112747677, 1407997/75165118, -468991/112747677, -12608/112747677, -2206123/112747677, 115/17837, 323957/75165118, 12929755/225495354, 7162025/450990708, 8615135/450990708, 1945957/225495354, -4681396/112747677, 4366816/112747677, 9126149/225495354, -1020854/37582559, -433298/37582559, 8257933/112747677, 468991/112747677, 130839/75165118, -40903/112747677, 3247555/150330236, -3438478/112747677, 128705/2300973, -136077/5368937, 3438478/112747677, -29764403/450990708, 4362985/225495354, 11884751/225495354, 4077139/112747677, 9/2107, -4681396/112747677, -1195906/112747677, 12060235/112747677, 8829451/450990708, -9975409/450990708, 2536271/150330236, -1990741/150330236, -411/17837, -2510163/75165118, -11639435/225495354, -205533/10737874]
}}}

{{{id=109|
C = (QQ^44).span([pi(x) for x in M.gens()], ZZ)
///
}}}

<p>The order of the cuspidal subgroup...</p>

{{{id=108|
factor((ZZ^44).index_in(C))
///
2^12 * 3^2 * 7^2 * 43^2 * 17837^2
}}}

{{{id=111|
W.index_in(C)
///
1/64
}}}

{{{id=145|
C.is_submodule(W)
///
False
}}}

<p>Ouch; so it turns out W is not cuspidal. &nbsp;Annoying, but not surprising (?). But maybe we can also use * involution to cut down to the real part?</p>

{{{id=101|
factor(C.intersection(W).index_in(W))
///
2^9 * 3 * 7 * 43 * 17837
}}}

{{{id=117|
factor(W.intersection(C).index_in(C))
///
2^3 * 3 * 7 * 43 * 17837
}}}

{{{id=148|
W.is_submodule(C)
///
False
}}}

{{{id=119|
plus = (S.star_involution().matrix().change_ring(QQ) - 1).kernel(); plus
///
Vector space of degree 44 and dimension 22 over Rational Field
Basis matrix:
22 x 44 dense matrix over Rational Field
}}}

{{{id=115|
Wplus = W.intersection(plus) + ZZ^44; Wplus
///
Free module of degree 44 and rank 44 over Integer Ring
Echelon basis matrix:
44 x 44 dense matrix over Rational Field
}}}

{{{id=149|
Wplus.is_submodule(C)
///
True
}}}

<p>FUCK YEAH!</p>

{{{id=123|
factor(Wplus.index_in(C))
///
2^3 * 3 * 7 * 43 * 17837
}}}

{{{id=122|
factor((ZZ^44).index_in(Wplus))
///
2^9 * 3 * 7 * 43 * 17837
}}}

<p>Conclusion: &nbsp;The above means that $T \subset J(\RR)[\eta_3, \eta_5, \eta_7] \subset C$. &nbsp;This implies that $T=C(\QQ)$, as claimed.</p>

{{{id=152|

///
}}}

{{{id=151|

///
}}}

{{{id=150|

///
}}}

<p>Issues...</p>

{{{id=131|
s = S.star_involution().matrix().change_ring(ZZ)
///
}}}

{{{id=134|
A = (s-1).kernel(); B = (s+1).kernel()
///
}}}

{{{id=137|
(A+B).index_in(ZZ^44)
///
4194304
}}}

{{{id=130|
f = End(ZZ^44)(s-1); f
///
Free module morphism defined by the matrix
(not printing 44 x 44 matrix)
Domain: Ambient free module of rank 44 over the principal ideal domain ...
Codomain: Ambient free module of rank 44 over the principal ideal domain ...
}}}

{{{id=129|
f.codomain()/f.image()
///
Finitely generated module V/W over Integer Ring with invariants (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
}}}

{{{id=133|
(s-1).change_ring(GF(2)).rank()
///
22
}}}

{{{id=121|

///
}}}

{{{id=90|

///
}}}

{{{id=64|
phi11 = E(eta(11))
psi11 = Q7.hom([Q7(phi11(x.lift())) for x in Q7.gens()])
Q11 = psi11.kernel()
Q11.invariants(), Q11.cardinality().factor()
///
((2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 64427244, 64427244), 2^18 * 3^2 * 7^2 * 43^2 * 17837^2)
}}}

{{{id=70|
phi13 = E(eta(13))
psi13 = Q11.hom([Q11(phi13(x.lift())) for x in Q11.gens()])
Q13 = psi13.kernel()
Q13.invariants(), Q13.cardinality().factor()
///
((2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 64427244, 64427244), 2^18 * 3^2 * 7^2 * 43^2 * 17837^2)
}}}

{{{id=72|
phi17 = E(eta(17))
psi17 = Q13.hom([Q13(phi17(x.lift())) for x in Q13.gens()])
Q17 = psi17.kernel()
Q17.invariants(), Q17.cardinality().factor()
///
((2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 64427244, 64427244), 2^18 * 3^2 * 7^2 * 43^2 * 17837^2)
}}}

{{{id=75|
t = E(S.star_involution().matrix() - 1)
T = Q17.hom([Q17(t(x.lift())) for x in Q17.gens()])
Q17plus = T.kernel()
Q17plus.invariants(), Q17plus.cardinality().factor()
///
((2, 2, 2, 4, 4, 64427244), 2^9 * 3 * 7 * 43 * 17837)
}}}

{{{id=76|
factor(64427244)
///
2^2 * 3 * 7 * 43 * 17837
}}}

{{{id=79|
phi2 = E(eta(2))
psi2 = Q17plus.hom([Q17plus(phi2(x.lift())) for x in Q17plus.gens()])
Q02 = psi2.kernel()
///
}}}

{{{id=81|
Q17plus.V().1
///
(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 3, 23, 0, 1, 1, 0, 1, 0, 0, 0, 100655855)
}}}

{{{id=80|
psi2
///
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_283.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("cHNpMg=="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))' + '\n', '', 'single')
  File "", line 1, in <module>
    
  File "/private/var/folders/7y/7y-O1iZOGTmMUMnLq7otq++++TI/-Tmp-/tmpiT4Tga/___code___.py", line 2, in <module>
    exec compile(u'psi2' + '\n', '', 'single')
  File "", line 1, in <module>
    
NameError: name 'psi2' is not defined
}}}

{{{id=77|
Q02.invariants(), Q02.cardinality().factor()
///
^C/site-packages/sage/modules/fg_pid/fgp_module.py", line 1423, in _hom_from_smith
    M, _ = self.optimized()


__SAGE__
}}}

{{{id=154|

///
}}}

{{{id=157|

///
}}}

<p>Just try to do above as directly as we can.</p>

{{{id=156|
M = ModularSymbols(Gamma1(29))
S = M.cuspidal_subspace()
SZ = S.integral_structure()
assert S.free_module().basis_matrix() == SZ.basis_matrix()
dbd = lambda d: S.diamond_bracket_operator(d).matrix()
eta0 = lambda ell: (S.hecke_matrix(ell) - (1 + dbd(ell)*ell))
eta = lambda ell: eta0(ell).change_ring(ZZ)
///
}}}

{{{id=162|
def cuspidal_subgroup():
    n = S.dimension()
    V = M.free_module()
    V0 = V.span_of_basis(S.free_module().basis() + M.eisenstein_submodule().free_module().basis())
    pi = lambda x: V0.coordinates(x.element())[:n]
    C = (QQ^n).span([pi(x) for x in M.gens()], ZZ)
    return C
///
}}}

{{{id=159|
def computeW(primes):
    W = None
    for ell in primes:
        V = (eta(ell)^(-1)).row_module(ZZ)
        if W is None:
            W = V
        else:
            W = W.intersection(V)
    return W
///
}}}

{{{id=155|
W = computeW([3])
///
}}}

{{{id=160|
def plus_part(X):
    P = (S.star_involution().matrix().change_ring(QQ) - 1).kernel()
    return X.intersection(P) + ZZ^S.dimension()
///
}}}

{{{id=78|
Wplus = plus_part(W)
///
}}}

{{{id=163|
C = cuspidal_subgroup()
///
}}}

{{{id=161|
Wplus.is_submodule(C)
///
False
}}}

{{{id=164|
plus_part(computeW([3,5])).is_submodule(C)
///
False
}}}

{{{id=165|
plus_part(computeW([3,5,7])).is_submodule(C)
///
True
}}}

{{{id=167|
plus_part(computeW([5,7])).is_submodule(C)
///
True
}}}

{{{id=172|

///
}}}

<p>Write code that works for any $p$?</p>

{{{id=171|
class TorGroup:
    def __init__(self, p, assume_integral=False):
        self.p = p
        t = cputime(); self.M = ModularSymbols(Gamma1(p)); print "got M", cputime(t)
        t = cputime(); self.S = self.M.cuspidal_subspace(); print "got S", cputime(t)
        if assume_integral:
            self.is_integral = True
        else:
            t = cputime(); self.SZ = self.S.integral_structure(); print "got S_Z", cputime(t)
            self.is_integral = (self.S.free_module().basis_matrix() == self.SZ.basis_matrix())
            
    def change_basis(self, A):
        if self.is_integral:
            return A
        else:
            return A.restrict(self.SZ)
        
    def dbd(self, d):
        return self.change_basis(self.S.diamond_bracket_operator(d).matrix())       
        
    def eta(self, ell):
        z = (self.change_basis(self.S.hecke_matrix(ell)) - (1 + self.dbd(ell)*ell))
        return z.change_ring(ZZ)

    def C_lattice(self):
        n = self.S.dimension()
        V = self.M.free_module()
        m = V.dimension() - n
        V0 = V.span_of_basis(self.S.free_module().basis() + self.M.eisenstein_submodule().free_module().basis())
        if self.is_integral:
            pi = lambda x: V0.coordinates(x.element())[:n]
        else:
            pi = lambda x: self.SZ.coordinates(V0.coordinates(x.element())[:n] + [0]*m)
        C = (QQ^n).span([pi(x) for x in self.M.gens()], ZZ)
        return C 
        
    def W_lattice(self, primes):
        W = None
        for ell in primes:
            V = (self.eta(ell)**(-1)).row_module(ZZ)
            if W is None:
                W = V
            else:
                W = W.intersection(V)
        return W
        
    def Wplus_lattice(self, primes):
        P = (self.change_basis(self.S.star_involution().matrix()).change_ring(QQ) - 1).kernel() 
        W = self.W_lattice(primes)
        return W.intersection(P) + ZZ**self.S.dimension()
///
}}}

{{{id=170|
time T = TorGroup(97, assume_integral=True)
///
got M 0.0
got S 0.0
Time: CPU 0.00 s, Wall: 0.00 s
}}}

{{{id=181|
T.is_integral
///
True
}}}

{{{id=169|
time Wplus = T.Wplus_lattice([3,5]); Wplus
///
^C
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_171.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("dGltZSBXcGx1cyA9IFQuV3BsdXNfbGF0dGljZShbMyw1XSk7IFdwbHVz"),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))' + '\n', '', 'single')
  File "", line 1, in <module>
    
  File "/tmp/tmp6CcW_q/___code___.py", line 3, in <module>
    exec compile(u'__time__=misc.cputime(); __wall__=misc.walltime(); Wplus = T.Wplus_lattice([_sage_const_3 ,_sage_const_5 ]); print "Time: CPU %.2f s, Wall: %.2f s"%(misc.cputime(__time__), misc.walltime(__wall__)); Wplus' + '\n', '', 'single')
  File "", line 1, in <module>
    
  File "/tmp/tmpQMQI3B/___code___.py", line 50, in Wplus_lattice
    P = (self.change_basis(self.S.star_involution().matrix()).change_ring(QQ) - _sage_const_1 ).kernel() 
  File "/home/wstein/sage/sage-4.7.2.alpha2/local/lib/python2.6/site-packages/sage/modular/modsym/subspace.py", line 476, in star_involution
    self.__star_involution = S.restrict(self)
  File "/home/wstein/sage/sage-4.7.2.alpha2/local/lib/python2.6/site-packages/sage/modules/matrix_morphism.py", line 741, in restrict
    A = self.matrix().restrict(V)
  File "matrix2.pyx", line 4169, in sage.matrix.matrix2.Matrix.restrict (sage/matrix/matrix2.c:21896)
  File "/home/wstein/sage/sage-4.7.2.alpha2/local/lib/python2.6/site-packages/sage/modules/free_module.py", line 6261, in coordinate_vector
    def coordinate_vector(self, v, check=True):
KeyboardInterrupt
__SAGE__
__SAGE__
KeyboardInterrupt
__SAGE__
__SAGE__
KeyboardInterrupt
__SAGE__
__SAGE__
KeyboardInterrupt
__SAGE__
__SAGE__
KeyboardInterrupt
__SAGE__
}}}

{{{id=168|
C = T.C_lattice()
///
}}}

{{{id=174|
Wplus.is_submodule(C)
///
True
}}}

{{{id=175|
C/Wplus
///
Finitely generated module V/W over Integer Ring with invariants (2, 2, 32213622)
}}}

{{{id=176|
factor(32213622)
///
2 * 3 * 7 * 43 * 17837
}}}

{{{id=177|
time T = TorGroup(31)
///
Time: CPU 0.29 s, Wall: 0.29 s
}}}

{{{id=182|
T.is_integral
///
True
}}}

{{{id=178|
time Wplus = T.Wplus_lattice([3,5]); Wplus
///
Time: CPU 2.29 s, Wall: 2.31 s
Free module of degree 52 and rank 52 over Integer Ring
Echelon basis matrix:
52 x 52 dense matrix over Rational Field
}}}

{{{id=179|
time C = T.C_lattice(); C
///
Time: CPU 1.53 s, Wall: 1.55 s
Free module of degree 52 and rank 52 over Integer Ring
Echelon basis matrix:
52 x 52 dense matrix over Rational Field
}}}

{{{id=180|
Wplus.is_submodule(C)
///
True
}}}

{{{id=183|
C/Wplus
///
Finitely generated module V/W over Integer Ring with invariants (10, 1772833370)
}}}

{{{id=184|
Wplus/ZZ^(Wplus.degree())
///
Finitely generated module V/W over Integer Ring with invariants (10, 1772833370)
}}}

{{{id=185|
time T = TorGroup(37)
///
Time: CPU 1.30 s, Wall: 1.32 s
}}}

{{{id=186|

///
}}}