Example #1
0
def _anihilate_pol(k, M):
    '''
    k: The weight of an element c, where c is a construction
    for generators of M_{det^* sym(10)} and an instance of
    ConstDivision.
    M: an instance of Sym10EvenDiv or Sym10OddDiv.
    Return a polynomial pl such that the subspace of M anihilated by pl(T(2))
    is equal to the subspace of holomorphic modular forms.
    '''
    R = PolynomialRing(QQ, names="x")
    x = R.gens()[0]
    if k % 2 == 0:
        # Klingen-Eisenstein series
        f = CuspForms(1, k + 10).basis()[0]
        return x - f[2] * (1 + QQ(2) ** (k - 2))
    elif k == 13:
        # Kim-Ramakrishnan-Shahidi lift
        f = CuspForms(1, 12).basis()[0]
        a = f[2]
        return x - f[2] ** 3 + QQ(2) ** 12 * f[2]
    else:
        chrply = M.hecke_charpoly(2)
        dim = hilbert_series_maybe(10)[k]
        l = [(a, b) for a, b in chrply.factor() if a.degree() == dim]
        if len(l) > 1 or l[0][1] != 1:
            raise RuntimeError
        else:
            return l[0][0]
Example #2
0
 def dimension(self):
     if self.sym_wt == 8 and self.wt == 4:
         return 1
     elif self.sym_wt <= 10 and self.wt <= 4:
         return 0
     elif self.wt > 4:
         pl = hilbert_series_maybe(self.sym_wt, prec=self.wt + 1)
         return pl[self.wt]
     else:
         raise NotImplementedError(
             "The dimensions of small determinant weights" +
             " are not known in general.")
Example #3
0
 def test_ramanujan_conj(self):
     '''Test Ramanujan conjectures for eigenforms of determinant weights
     less than or equal to 29.
     '''
     prec = 6
     hpl = hilbert_series_maybe(10)
     for k in range(22, 30):
         if hpl[k] != 0:
             N = sym10_space(k, prec, data_directory=data_dir)
             self.assertEqual(N.dimension(), len(N.basis()))
             _chply = N.hecke_charpoly(2)
             for cply, _ in _chply.factor():
                 K = NumberField(cply, names="a")
                 a = K.gens()[0]
                 f = N.eigenform_with_eigenvalue_t2(a)
                 self.assert_ramanujan_conj_eigenform(f)
Example #4
0
 def dimension(self):
     return hilbert_series_maybe(10)[self.wt]