def dimension_cuspforms_sqrt5(k1, k2): ''' Return the dimension of hilbert cusp forms of weight (k1, k2) where k1 > 2 and k2 > 2. cf. K. Takase, on the trace formula of the Hecke operators and the special values of the second L-functions attached to the Hilbert modular forms. manuscripta math. 55, 137 -- 170 (1986). ''' k = (k1, k2) F = QuadraticField(5) rho = (1 + F.gen()) / ZZ(2) a = c_km2_1_rho(k, rho) return (ZZ((k1 - 1) * (k2 - 1)) / ZZ(60) + ZZ(c_km2_1_01(k)) / ZZ(4) + ZZ(c_km2_1_11(k)) / ZZ(3) + ZZ(a + F(a).galois_conjugate()) / ZZ(5))
def c_km2_1_sqrt2(k): K = QuadraticField(2) a = K.gen() k1, k2 = k k1 = k1 % 8 k2 = k2 % 8 k = (k1, k2) if k in [(0, 0), (2, 2), (4, 4), (6, 6), (0, 6), (6, 0), (2, 4), (4, 2)]: return 1 if k in [(3, 7), (7, 3)]: return 2 if k in [(0, 7), (2, 3), (3, 0), (3, 6), (4, 3), (6, 7), (7, 2), (7, 4)]: return a if k1 in [1, 5] or k2 in [1, 5]: return 0 if k in [(0, 3), (2, 7), (3, 2), (3, 4), (4, 7), (6, 3), (7, 0), (7, 6)]: return -a if k in [(3, 3), (7, 7)]: return -2 else: return -1
==================================================================== """ import pytest from sage.all import EllipticCurve_from_j, GF, QQ, QuadraticField from sage.rings.polynomial.polynomial_ring import polygen from sage.schemes.elliptic_curves.constructor import EllipticCurve from sage_code.frobenius_polynomials import ( semi_stable_frobenius_polynomial, isogeny_character_values_12, ) K = QuadraticField(-127, "D") D = K.gen(0) j = 20 * (3 * (-26670989 - 15471309 * D) / 2**26)**3 # this is one of the curves from the Gonzaléz, Lario, and Quer article E = EllipticCurve_from_j(j) def test_semi_stable_frobenius_polynomial(): # test that we indeed have a 73 isogeny mod p for p in 2, 3, 5, 7, 11, 19: for pp, e in (p * K).factor(): f = semi_stable_frobenius_polynomial(E, pp) assert not f.change_ring(GF(73)).is_irreducible() def test_semi_stable_frobenius_polynomial_t():