Hi David, Thanks for your reply! It's a good test to do (that I hadn't thought of before), but unfortunately even with 'ModularSymbols_clear_cache()' in between the two runs, the 'good' code is still printing the wrong answer in a second run. Could it be another (i.e. non-modular symbols) caching problem?
Misja On Tuesday, 3 May 2016 13:08:29 UTC+1, David Loeffler wrote: > > What happens if you run the bad code, then run > "ModularSymbols_clear_cache()", then the good code? Do you get the same > discrepancy? > > David > > On 28 April 2016 at 15:16, Misja <[email protected] <javascript:>> wrote: > >> Thank you very much! I didn't know sage-nt existed :-) >> >> Misja >> >> On Thursday, 28 April 2016 15:13:20 UTC+1, John Cremona wrote: >>> >>> I have forwarded your question to sage-nt@googlegroups since there are >>> people who read that who may be able to answer yet do not read >>> sage-support. >>> >>> Feel free to apply to join sage-nt. >>> >>> John Cremona >>> >>> On 28 April 2016 at 15:09, Misja <[email protected]> wrote: >>> > When understand the specific reason why my code is not working >>> properly, I >>> > managed to pin it down to the following mysterious behaviour of >>> q_eigenform. >>> > >>> > First run the following code in sage. >>> > >>> > G=DirichletGroup(80); >>> > chi=G[22]; >>> > >>> D=ModularSymbols(chi,2,-1).cuspidal_subspace().new_subspace().decomposition(); >>> >>> >>> > for f in D: >>> > elt=f.q_eigenform(10,'alpha')[3]; >>> > N=elt.parent().absolute_field('a'); >>> > fact=N.factor(2); >>> > for P,e in fact: >>> > res_field=N.residue_field(P); >>> > print res_field(elt); >>> > >>> > >>> > It will print >>> > >>> > 0 >>> > 0 >>> > 0 >>> > 0 >>> > >>> > which, I think, is the 'right' answer. >>> > >>> > >>> > Now close your sage session entirely. Open a new session and then run >>> the >>> > following *silly* code: >>> > >>> > G=DirichletGroup(80); >>> > for chi in G: >>> > >>> > >>> D=ModularSymbols(chi,2,-1).cuspidal_subspace().new_subspace().decomposition(); >>> >>> >>> > for f in D: >>> > elt=f.q_eigenform(10,'alpha')[3]; >>> > if not elt.parent()==QQ: >>> > K=elt.parent().absolute_field('b'); >>> > if chi==G[22]: >>> > fact=K.factor(2); >>> > for P,e in fact: >>> > res_field=K.residue_field(P); >>> > print res_field(elt); >>> > >>> > >>> > It will print: >>> > >>> > 0 >>> > 0 >>> > 1 >>> > 0 >>> > >>> > As far as I understand the theory, this cannot happen. If you let sage >>> print >>> > the alpha^3 coefficient of you see that in both cases it picks a >>> different >>> > q_eigenform in f, the Galois conjugacy class of newforms. Although >>> this can >>> > be a bit annoying, in theory it is fine. But I am pretty sure that >>> when your >>> > reduce this coefficient modulo some prime P, any two elements of the >>> same >>> > Galois conjugacy class can differ at most by some automorphism of the >>> > residue field (and obviously 1 and 0 do not satisfy this criterion). >>> > >>> > >>> > To make matters worse: if you run a single sage session and you run >>> the >>> > 'good' code first and the 'bad' code second, then suddenly the 'bad' >>> code is >>> > fixed and printing only 0s. If you run the 'bad' code first and the >>> 'good' >>> > code second, then they are both 'bad' and the 'good' code suddenly >>> prints >>> > 0,0,1,0 as well. >>> > >>> > By trying I found out that this is because somehow q_eigenform picks >>> the >>> > same q_eigenform as whichever code that ran first and somehow these >>> choices >>> > are not compatible! I don't know the inner workings of q_eigenform, >>> but this >>> > behaviour seems strange to me. >>> > >>> > Can anyone explain what is going on here? Is it a bug? >>> > >>> > Thanks! >>> > >>> > -- >>> > You received this message because you are subscribed to the Google >>> Groups >>> > "sage-support" group. >>> > To unsubscribe from this group and stop receiving emails from it, send >>> an >>> > email to [email protected]. >>> > To post to this group, send email to [email protected]. >>> > Visit this group at https://groups.google.com/group/sage-support. >>> > For more options, visit https://groups.google.com/d/optout. >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "sage-support" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at https://groups.google.com/group/sage-support. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sage-support. For more options, visit https://groups.google.com/d/optout.
