sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.22k stars 424 forks source link

incorrect degree of ring class fields #15218

Closed mstreng closed 10 years ago

mstreng commented 10 years ago

The degree function returns incorrect answers for ring class fields over QQ(zeta_3) and QQ(i).

See also The second part of this thread on sage-nt, the part with title "Computing ring class fields".

E=EllipticCurve("19a"); 
s = E.heegner_point(-3,2).ring_class_field().galois_group().complex_conjugation() 
H=s.domain(); H.absolute_degree()
6

The output should be 2, since ZZ[sqrt(-3)] has trivial picard group.

The problem is that there is a bug in the degree function for these ring class fields. The fields themselves seem to be correct.

In the method degree_over_H of the RingClassField class in sage/schemes/elliptic_curves/heegner.py, the degree is calculated using the following formula:

        # Let K_c be the ring class field.  We have by class field theory that
        #           Gal(K_c / H) = (O_K/c*O_K)^* / (Z/cZ)^*.

However, one should also divide out by units in O_K^* other than {+/- 1}. This explains the factor 3 that the degree function is off for K=QQ(sqrt(-3)). This is also exactly the difference between equation (7.27) of Cox's book (Primes of the form ...) and exercise 7.30 of the same book.

Component: number fields

Author: Frédéric Chapoton

Branch/Commit: 25588d5

Reviewer: Peter Bruin

Issue created by migration from https://trac.sagemath.org/ticket/15218

fchapoton commented 10 years ago

Branch: u/chapoton/15218

fchapoton commented 10 years ago
comment:2

I have tried to do what was suggested. Not able to say if this is correct mathematically.

If yes, then there remains to add a doctest checking that this has been corrected.


New commits:

a7290d3trac #15218 first try : divide by K.number_of_roots_of_unity
fchapoton commented 10 years ago

Commit: a7290d3

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 10 years ago

Branch pushed to git repo; I updated commit sha1. New commits:

0293a71trac #15218 added the doctest and correct parentheses
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 10 years ago

Changed commit from a7290d3 to 0293a71

fchapoton commented 10 years ago

Author: Frédéric Chapoton

pjbruin commented 10 years ago

Changed branch from u/chapoton/15218 to u/pbruin/15218-ring_class_field_degree

pjbruin commented 10 years ago
comment:5

Looks good; just a small reviewer patch to also fix the formula in the comment.

pjbruin commented 10 years ago

Reviewer: Peter Bruin

pjbruin commented 10 years ago

Changed commit from 0293a71 to 25588d5

vbraun commented 10 years ago

Changed branch from u/pbruin/15218-ring_class_field_degree to 25588d5