def katz_expansions(k0, p, ellp, mdash, n): r""" Returns a list e of q-expansions, and the Eisenstein series `E_{p-1} = 1 + \dots`, all modulo `(p^\text{mdash},q^\text{ellp})`. The list e contains the elements `e_{i,s}` in the Katz expansions basis in Step 3 of Algorithm 1 in [AGBL]_ when one takes as input to that algorithm p,m and k and define ``k0``, ``mdash``, n, ``ellp = ell*p`` as in Step 1. INPUT: - ``k0`` -- integer in range 0 to p-1. - ``p`` -- prime at least 5. - ``ellp,mdash,n`` -- positive integers. OUTPUT: - list of q-expansions and the Eisenstein series E_{p-1} modulo `(p^\text{mdash},q^\text{ellp})`. EXAMPLES:: sage: from sage.modular.overconvergent.hecke_series import katz_expansions sage: katz_expansions(0,5,10,3,4) ([1 + O(q^10), q + 6*q^2 + 27*q^3 + 98*q^4 + 65*q^5 + 37*q^6 + 81*q^7 + 85*q^8 + 62*q^9 + O(q^10)], 1 + 115*q + 35*q^2 + 95*q^3 + 20*q^4 + 115*q^5 + 105*q^6 + 60*q^7 + 25*q^8 + 55*q^9 + O(q^10)) """ S = Zmod(p**mdash) Ep1 = eisenstein_series_qexp(p - 1, ellp, K=S, normalization="constant") E4 = eisenstein_series_qexp(4, ellp, K=S, normalization="constant") E6 = eisenstein_series_qexp(6, ellp, K=S, normalization="constant") delta = delta_qexp(ellp, K=S) h = delta / E6**2 hj = delta.parent()(1) e = [] # We compute negative powers of E_(p-1) successively (this saves a great # deal of time). The effect is that Ep1mi = Ep1 ** (-i). Ep1m1 = ~Ep1 Ep1mi = 1 for i in xrange(0, n + 1): Wi, hj = compute_Wi(k0 + i * (p - 1), p, h, hj, E4, E6) for bis in Wi: eis = p**floor(i / (p + 1)) * Ep1mi * bis e.append(eis) Ep1mi = Ep1mi * Ep1m1 return e, Ep1
def katz_expansions(k0,p,ellp,mdash,n): r""" Returns a list e of q-expansions, and the Eisenstein series `E_{p-1} = 1 + \dots`, all modulo `(p^\text{mdash},q^\text{ellp})`. The list e contains the elements `e_{i,s}` in the Katz expansions basis in Step 3 of Algorithm 1 in [AGBL]_ when one takes as input to that algorithm p,m and k and define ``k0``, ``mdash``, n, ``ellp = ell*p`` as in Step 1. INPUT: - ``k0`` -- integer in range 0 to p-1. - ``p`` -- prime at least 5. - ``ellp,mdash,n`` -- positive integers. OUTPUT: - list of q-expansions and the Eisenstein series E_{p-1} modulo `(p^\text{mdash},q^\text{ellp})`. EXAMPLES:: sage: from sage.modular.overconvergent.hecke_series import katz_expansions sage: katz_expansions(0,5,10,3,4) ([1 + O(q^10), q + 6*q^2 + 27*q^3 + 98*q^4 + 65*q^5 + 37*q^6 + 81*q^7 + 85*q^8 + 62*q^9 + O(q^10)], 1 + 115*q + 35*q^2 + 95*q^3 + 20*q^4 + 115*q^5 + 105*q^6 + 60*q^7 + 25*q^8 + 55*q^9 + O(q^10)) """ S = Zmod(p**mdash) Ep1 = eisenstein_series_qexp(p-1, ellp, K=S, normalization="constant") E4 = eisenstein_series_qexp(4, ellp, K=S, normalization="constant") E6 = eisenstein_series_qexp(6, ellp, K=S, normalization="constant") delta = delta_qexp(ellp, K=S) h = delta / E6**2 hj = delta.parent()(1) e = [] # We compute negative powers of E_(p-1) successively (this saves a great # deal of time). The effect is that Ep1mi = Ep1 ** (-i). Ep1m1 = ~Ep1 Ep1mi = 1 for i in xrange(0,n+1): Wi,hj = compute_Wi(k0 + i*(p-1),p,h,hj,E4,E6) for bis in Wi: eis = p**floor(i/(p+1)) * Ep1mi * bis e.append(eis) Ep1mi = Ep1mi * Ep1m1 return e,Ep1