def test_differential_operator(self): def load_cache(f): return SymWtModFmElt.load_from(opath.join( data_dir("vector_valued_differential"), f)) p_e4_e4 = load_cache("pair_sym4_e4_e4_prec7.sobj") p_e4_x10 = load_cache("pair_sym4_e4_x10_prec7.sobj") p_det2_e4_e6 = load_cache("pair_sym4_det2_e4_e6_prec7.sobj") t_det_sym4_e4_e4_e6 = load_cache( "triple_det_sym4_e4_e4_e6_prec10.sobj") t_det_sym4_e4_e6_x12 = load_cache( "triple_det_sym4_e4_e6_x12_prec10.sobj") # prec 7 es4, es6, x10, x12, _ = degree2_modular_forms_ring_level1_gens(7) self.assertEqual(rankin_cohen_pair_sym(4, es4, es4), p_e4_e4) self.assertEqual(rankin_cohen_pair_sym(4, es4, x10), p_e4_x10) self.assertEqual(rankin_cohen_pair_det2_sym(4, es4, es6), p_det2_e4_e6) # prec 10 es4, es6, x10, x12, _ = degree2_modular_forms_ring_level1_gens(10) self.assertEqual(rankin_cohen_triple_det_sym4(es4, es4, es6), t_det_sym4_e4_e4_e6) self.assertEqual(rankin_cohen_triple_det_sym4(es4, es6, x12), t_det_sym4_e4_e6_x12)
def test_t_2_action(self): es4 = eisenstein_series_degree2(4, 10) es6 = eisenstein_series_degree2(6, 10) F10 = rankin_cohen_pair_sym(2, es4, es6) ev2 = -24 * (1 + 2 ** 8) prec5 = PrecisionDeg2(5) self.assertTrue( all([F10.hecke_operator(2, t) == ev2 * F10[t] for t in prec5]))
def test_vector_vald_klingen_hecke_pol(self): es4 = eisenstein_series_degree2(4, 5) es6 = eisenstein_series_degree2(6, 5) F10 = rankin_cohen_pair_sym(2, es4, es6) pl = F10.euler_factor_of_spinor_l(2) x = pl.parent().gens()[0] f = 1 + 24 * x + 2048 * x ** 2 self.assertTrue(f * f.subs({x: 2 ** 8 * x}) == pl)
def test_vector_valued_rankin_cohen(self): prec = 5 M4_10 = vvld_smfs(4, 10, prec) f4_10 = M4_10.basis()[0] f4_15 = vvld_smfs(4, 15, prec).basis()[0] e4 = eisenstein_series_degree2(4, prec) g4_15 = vector_valued_rankin_cohen(e4, f4_10) t = ((1, 1, 1), 0) self.assertEqual(f4_15 * g4_15[t], g4_15 * f4_15[t]) es4, es6, _, _, _ = degree2_modular_forms_ring_level1_gens(5) f = es6 x5 = x5__with_prec(5) f_even_sym2 = rankin_cohen_pair_sym(2, f, x5) f_odd_sym2 = vector_valued_rankin_cohen(es4 * x5, f_even_sym2) a = f_odd_sym2[(1, 0, 2)].vec[1] g_sym2_21 = vvld_smfs(2, 21, 4).basis()[0] b = g_sym2_21[(1, 0, 2)].vec[1] self.assertEqual(f_odd_sym2 * b, g_sym2_21 * a)
rankin_cohen_pair_sym, eisenstein_series_degree2, x10_with_prec, x12_with_prec, x35_with_prec, rankin_cohen_pair_det2_sym, rankin_cohen_triple_det_sym4) from degree2.interpolate import det_deg2 prec_ev = 7 phi4 = eisenstein_series_degree2(4, prec_ev) phi6 = eisenstein_series_degree2(6, prec_ev) x10 = x10_with_prec(prec_ev) x12 = x12_with_prec(prec_ev) x35 = x35_with_prec(prec_ev) f1 = rankin_cohen_pair_sym(4, phi4, phi4) f2 = rankin_cohen_pair_sym(4, phi4, phi6) f3 = rankin_cohen_pair_det2_sym(4, phi4, phi6) f4 = rankin_cohen_pair_sym(4, phi4, x10) f5 = rankin_cohen_pair_sym(4, phi6, x10) x70 = det_deg2([f.forms for f in [f1, f2, f3, f4, f5]], wt=sum([f.wt for f in [f1, f2, f3, f4, f5]]) + 10) y70 = x70 * QQ(-19945421021123916595200000)**(-1) assert y70 == x35**2 prec_od = 10 e4 = eisenstein_series_degree2(4, prec_od) e6 = eisenstein_series_degree2(6, prec_od)
f21 = f21_sym6(prec_od) f23 = f23_sym6(prec_od) # The rank of A_{Sym(6)}^{1}(Gamma_2) is equal to 7. # Therefore we need other two vector valued Siegel modular forms. # We construct two modular forms f17_1 and f17_2 by # Siegel modualr forms of weight det^12 Sym(6) and # Rankin-Cohen type differential operator defined by Dorp # (i.e. function vector_valued_rankin_cohen). es4 = eisenstein_series_degree2(4, prec_od) es6 = eisenstein_series_degree2(6, prec_od) x35 = x35_with_prec(prec_od) f12 = rankin_cohen_pair_det2_sym(6, es4, es6) h12 = rankin_cohen_pair_sym(6, es4, es4**2) f17_1 = vector_valued_rankin_cohen(es4, f12) # f12_prect2 is {phi4, phi6}_{det^2 Sym(6)}. # The prec of f12_prect2 is larger than other forms. f12_prect2 = rankin_cohen_pair_det2_sym( 6, eisenstein_series_degree2(4, prec_od*2), eisenstein_series_degree2(6, prec_od*2)) def _g12(): g12_fc_dct = {} for t in PrecisionDeg2(prec_od): g12_fc_dct[t] = f12_prect2.hecke_operator(2, t) g12_forms = []