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]
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.")
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)
def dimension(self): return hilbert_series_maybe(10)[self.wt]