roed314 / OMS

Converting Rob Pollack's overconvergent modular symbols .sage code to .py and putting it in Sage
4 stars 4 forks source link

bug in lift for modular symbols #36

Open rpollack9974 opened 11 years ago

rpollack9974 commented 11 years ago

Not sure the problem -- after applying T_19 the symbol becomes eisenstein. Lift to eigen won't work then (because it tries to find a non-eisenstein e-value). But here it is only trying to lift to some symbol.

sage: MS = PSModularSymbols(Gamma0(11),coefficients=Symk(0))
sage: phi = MS.random_element()
sage: phi.lift(11,5)
Modular symbol of level 11 with values in Space of 11-adic distributions with k=0 action and precision cap 5
sage: phi = phi.hecke(19)
sage: phi.lift(11,5)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)

/Applications/sage-5.6/devel/sage-main/sage/modular/pollack_stevens/<ipython console> in <module>()

/Applications/sage-5.6/local/lib/python2.7/site-packages/sage/modular/pollack_stevens/modsym.pyc in lift(self, p, M, alpha, new_base_ring, algorithm, eigensymbol, check)
   1038                 return self._lift_to_OMS_eigen(p, M, new_base_ring, alpha, newM, eisenloss, q, aq, check)
   1039             else:
-> 1040                 return self._lift_to_OMS(p, M, new_base_ring, check)
   1041         elif algorithm == 'greenberg':
   1042             return self._lift_greenberg(p, M, new_base_ring, check)

/Applications/sage-5.6/local/lib/python2.7/site-packages/sage/modular/pollack_stevens/modsym.pyc in _lift_to_OMS(self, p, M, new_base_ring, check)
   1260         ## (Here I'm using the opposite sign convention of [PS1] regarding D'_i and D''_i)
   1261 
-> 1262         D[manin.gen(0)] = -t.solve_diff_eqn()  ###### Check this!
   1263 
   1264         return MSS(D)

/Applications/sage-5.6/local/lib/python2.7/site-packages/sage/modular/pollack_stevens/dist.so in sage.modular.pollack_stevens.dist.Dist_vector.solve_diff_eqn (sage/modular/pollack_stevens/dist.c:12987)()
    949         else:
    950             ans = self._new_c()
--> 951             ans.ordp = min(a.valuation(p) for a in v)
    952             if ans.ordp < 0:
    953                 scalar = K(p) ** (-ans.ordp)

TypeError: an integer is required