Why does the code not work?
I want to write a program which gives me all prime ideals in the ring of integers $\mathcal{O}_K $, $K= \mathbb{Q}(\sqrt{-5})$ . They should have the property to be principal. My problem is that the condition if(J.gens()[0]-1 in L): does not really work. By this I want that the generator of the principal ideal minus 1 is contained in the ideal L.
sage: K.<a> = QuadraticField(-5)
cl = K.class_group()
g = cl.gens()[0]
L=K.fractional_ideal(-a-1)
sage: for norm, ideals in K.ideals_of_bdd_norm(10).items():
for J in ideals:
if (J.is_prime()):
if (cl(J)==g^4):
if(J.gens()[0]-1 in L):
print norm,J
Have you look at what J.gens() looks like for the various ideals J you are considering?
If i leave out the condtion if(J.gens()[0]-1 in L):, then it prints this: 5 Fractional ideal (-a). Now -a is the generator of the principal ideal (-a). If I take again the condition if(J.gens()[0]-1 in L), then this means whether -a-1 is in L and it is but sage does not print me out J.
That -a-1 lies in L should hold, and sage does seem to agree with that. However, J.gens()[0]-1 apparently doesn't, so you should probably print J.gens()[0], or more generally J.gens(), to see why that is the case. That's either going to give you a good, reportable, bug or it shows you what's going wrong.