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.

Reply via email to