calegari-stein-2011-04-17-quotient_by_eis_ideal
system:sage


<p>Level 559</p>
<p>&nbsp;</p>

{{{id=1|
M = ModularSymbols(559,sign=1); M
///
Modular Symbols space of dimension 52 for Gamma_0(559) of weight 2 with sign 1 over Rational Field
}}}

{{{id=3|
S = M.cuspidal_subspace()
///
}}}

{{{id=4|
S
///
Modular Symbols subspace of dimension 49 of Modular Symbols space of dimension 52 for Gamma_0(559) of weight 2 with sign 1 over Rational Field
}}}

{{{id=6|
def eta(ell):
    T = S.hecke_matrix(ell)
    if ell == 13:
        return T + 1
    elif ell == 43:
        return T - 1
    return T - (ell+1)
///
}}}

{{{id=7|
d = 0
for ell in primes(100):
    de = ZZ(eta(ell).det())
    d = gcd(de, d)
    print ell, d.factor()
///
2 2^2 * 3 * 5^3 * 7^4 * 11^2 * 17 * 31 * 59 * 101 * 1031
3 2^2 * 3 * 5^3 * 7^4 * 11 * 17
5 2^2 * 3 * 5^2 * 7^4 * 11
7 2^2 * 3 * 5^2 * 7^4 * 11
11 2^2 * 3 * 5 * 7^4 * 11
13 2^2 * 3 * 5 * 7^4 * 11
17 2^2 * 3 * 7^4 * 11
19 2^2 * 3 * 7^4 * 11
23 2^2 * 3 * 7^4 * 11
29 2^2 * 3 * 7^4 * 11
31 2^2 * 3 * 7^4 * 11
37 2^2 * 3 * 7^4 * 11
41 2^2 * 3 * 7^4 * 11
43 2^2 * 3 * 7^4 * 11
47 2^2 * 3 * 7^4 * 11
53 2^2 * 3 * 7^4 * 11
59 2^2 * 3 * 7^4 * 11
61 2^2 * 3 * 7^4 * 11
67 2^2 * 3 * 7^4 * 11
71 2^2 * 3 * 7^4 * 11
73 2^2 * 3 * 7^4 * 11
79 2^2 * 3 * 7^4 * 11
83 2^2 * 3 * 7^4 * 11
89 2^2 * 3 * 7^4 * 11
97 2^2 * 3 * 7^4 * 11
}}}

<p>Find a random vector v such that the map $t \to vt$ is injective on the Hecke algebra.</p>

{{{id=12|
def hecke_image(v, B):
    X = []
    for i in [1..B]:
        T = S.hecke_matrix(i)
        w = v*T
        X.append(w)
    return X    
///
}}}

{{{id=11|
v = vector(QQ,49)
v[0]=2
time X = hecke_image(v, 49)
///
Time: CPU 0.11 s, Wall: 0.11 s
}}}

{{{id=10|
L49 = span(ZZ,hecke_image(v,49)); L49
///
Free module of degree 49 and rank 49 over Integer Ring
Echelon basis matrix:
49 x 49 dense matrix over Rational Field
}}}

{{{id=8|
S.sturm_bound()
///
103
}}}

{{{id=14|
time L103 = span(ZZ,hecke_image(v,103)); L103
///
Time: CPU 3.76 s, Wall: 3.79 s
Free module of degree 49 and rank 49 over Integer Ring
Echelon basis matrix:
49 x 49 dense matrix over Rational Field
}}}

{{{id=19|
L49.index_in(L103).factor()
///
2^8 * 3967 * 2392141
}}}

{{{id=18|
L49.index_in(span(ZZ,hecke_image(v,52))).factor()
///
2^8 * 3967 * 2392141
}}}

{{{id=17|
hecke_bound = 52   # this is enough to get the whole Hecke algebra
TT = span(ZZ, hecke_image(v, hecke_bound))
///
}}}

{{{id=27|
TT.index_in(span(ZZ,hecke_image(v,103)))
///
1
}}}

{{{id=28|

///
}}}

<p>Now the Eisenstein ideal we are interested in is generated by</p>
<p>&nbsp; &nbsp;$T_n - e_n$&nbsp;</p>
<p>for $1 \leq n\leq 52$, where the $e_n$ are integers.</p>

{{{id=25|
def evec(B=hecke_bound):
    # compute the vector of e, so e[n] = e_n above for all n<=hecke_bound
    e = [0,1] + [None for i in range(B-1)]
    # first primes:
    for p in primes(B+1):
        if p == 13:
            e[p] = -1
        elif p == 43:
            e[p] = 1
        else:
            e[p] = p+1
        # now powers of p
        k = 2
        while p^k <= B:
            if p == 13 or p == 43:
                e[p^k] = e[p]^k
            else:
                e[p^k] = e[p^(k-1)]*e[p] - p*e[p^(k-2)]
            k += 1    
    # next composite non-prime powers: extend multiplicatively
    for n in [1..B]:
        if not n.is_prime_power():
            e[n] = prod(e[F[0]^F[1]] for F in factor(n))
    return e
///
}}}

{{{id=29|
hecke_bound+13
///
65
}}}

{{{id=24|
e = evec(hecke_bound+13); e
///
[0, 1, 3, 4, 7, 6, 12, 8, 15, 13, 18, 12, 28, -1, 24, 24, 31, 18, 39, 20, 42, 32, 36, 24, 60, 31, -3, 40, 56, 30, 72, 32, 63, 48, 54, 48, 91, 38, 60, -4, 90, 42, 96, 1, 84, 78, 72, 48, 124, 57, 93, 72, -7, 54, 120, 72, 120, 80, 90, 60, 168, 62, 96, 104, 127, -6]
}}}

{{{id=23|
def eisenstein_ideal(v, e):
    X = []
    for i in [1..len(e)-1]:
        t = S.hecke_matrix(i) - e[i]
        w = v*t
        X.append(w)
    return X
///
}}}

{{{id=21|
I = eisenstein_ideal(v, e)
///
}}}

{{{id=20|
span(ZZ,I).index_in(TT).factor()
///
2 * 7^2
}}}

{{{id=16|
TT/span(ZZ,I)
///
Finitely generated module V/W over Integer Ring with invariants (98)
}}}

<p>The problem is that using only the operators up to the hecke bound gives us generators for the ideal, but not the ideal itself.</p>
<p>I think what we need to do is come up with a candidate bound $m$ such that we guess that $T_n-e_n$ for $n\leq m$ are $\ZZ$-module generators for the ideal itself.</p>
<p>Then, check that the module over $\ZZ$ generated by that list of elements is closed under multiplication by the Hecke operators $T_p$ for $p$ up to the Hecke bound, since those $T_p$ generate the Hecke algebra as a ring. &nbsp;</p>

{{{id=31|

///
}}}

<p>It would surely be useful to write the Hecke algebra $T$ as a subring of a polynomial ring $\QQ[x]/(f(x))$. &nbsp;We can do this by finding one element $t \in T$ with squarefree characteristic polynomial $f(x)$, i.e., with minpoly = charpoly. &nbsp;But there is no such thing, since there are oldforms!</p>

{{{id=15|
S.hecke_matrix(2).fcp()
///
(x + 2)^2 * (x^2 - 2)^2 * (x^3 + 3*x^2 - 3) * (x^4 + x^3 - 5*x^2 - 3*x + 1) * (x^7 + 2*x^6 - 6*x^5 - 9*x^4 + 11*x^3 + 10*x^2 - 5*x - 1) * (x^14 - 7*x^13 + 3*x^12 + 78*x^11 - 145*x^10 - 243*x^9 + 758*x^8 + 83*x^7 - 1422*x^6 + 532*x^5 + 1004*x^4 - 525*x^3 - 224*x^2 + 82*x + 23) * (x^15 - 2*x^14 - 22*x^13 + 43*x^12 + 187*x^11 - 354*x^10 - 769*x^9 + 1395*x^8 + 1553*x^7 - 2684*x^6 - 1328*x^5 + 2265*x^4 + 241*x^3 - 606*x^2 + 33*x + 13)
}}}

<p>So instead we could hope to write $T$ as a subring of $\QQ[x,y]/(f(x,y), g(x,y))$? &nbsp; &nbsp;Actually, make it of the form $R=\QQ[x]/(f(x))$, then $S = R[y]/(g(x,y))$. &nbsp;We get $R$ by computing the minpoly of a Hecke operator. &nbsp;Then we get $S$ in the same way with another Hecke operator, and we ensure somehow that $S$ contains $T$.</p>

{{{id=36|

///
}}}

<p>Ohh, I just thought of an awesome trick! &nbsp; &nbsp;Suppose we have what we think is a basis $g_1, \ldots, g_n$ for $I$, where the $g_i$ are in the Hecke algebra, represented as $49 \times 49$ matrices. &nbsp; We have fixed a vector $v$ so we get to $\QQ^{49}$ by the map $t\mapsto v\cdot t$. &nbsp; &nbsp; &nbsp; Let $T_p$ be one of the generators of the Hecke algebra as a ring. &nbsp;To compute the $\ZZ$-module generated by all $T_p(g_i)$, note that $v T_p(g_i) = (v T_p) g_i$. &nbsp;I.e., we can just compute the embedding again, but instead of using $v$, use $v T_p$. &nbsp; &nbsp; &nbsp; &nbsp;Thus if $T_2, T_3, \ldots, T_b$ are generators for the Hecke algebra, we compute the modules got by mapping to $\QQ^{49}$ by using $v, v T_2, \ldots, v T_b$, then add them all together. &nbsp; Alternatively, for each $T_p$ we just check that embedding using $v T_p$ gives a submodule of the embedding of the span of the $g_i$. &nbsp;Let's try this:</p>

{{{id=39|

///
}}}

<p>First, one that must fail:</p>

{{{id=38|
e = evec(hecke_bound)
I = span(ZZ,eisenstein_ideal(v, e))
///
}}}

{{{id=34|
J = span(ZZ, eisenstein_ideal(v * S.hecke_matrix(2), e))
///
}}}

{{{id=41|
J.is_submodule(I)
///
False
}}}

<p>Now try with a big enough bound that we think each should work.</p>

{{{id=43|
e = evec(hecke_bound+13)
I = span(ZZ,eisenstein_ideal(v, e))
///
}}}

{{{id=42|
J = span(ZZ, eisenstein_ideal(v * S.hecke_matrix(2), e))
///
}}}

{{{id=45|
J.is_submodule(I)
///
True
}}}

<p>Now use all $T_p$ for $p\leq 52$:</p>

{{{id=47|
for p in primes(53):
    J = span(ZZ, eisenstein_ideal(v * S.hecke_matrix(2), e))
    print J.is_submodule(I)
///
True
True
True
True
True
True
True
True
True
True
True
True
True
True
True
}}}

<p>Yeah!</p>

{{{id=46|

///
}}}