Пример #1
0
    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)
Пример #2
0
 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]))
Пример #3
0
 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)
Пример #4
0
    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)
Пример #5
0
    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)
Пример #6
0
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 = []