I am implementing a method for elliptic curves over number fields to detect CM. I want to distingish between E.has_cm() and E.has_potential_cm(). The latter only depends on the j-invariant, and will return either (False, None) or (True, (d,f)) if j(E) is the j-invariant of the order with discriminant d*f^2 (of index f in the maximal order with discriminant d). The former, E.has_cm(), will only retrun True (with (d,f) as above if in addition d is a square in E.base_field() so that the additional endomorphisms are defined over the base field.
With this convention, elliptic curves over Q never have CM, they can only have potential CM (iff the j-invariant is one of the 13 famous values). BUT the class EllipticCurve_rational_field already has a method has_cm() which returns the same as what I want to call has_potential_cm() (but without the discriminant), so this is inconsistent with what I want to do over other number fields. The only places in the Sage library where the function has_cm() is used (for elliptic curves over Q) are in BSD.py, sha_tate.py and gal_reps.py. It would be easy to adapt those to fit if I simply deleted the Q-specific version. But should I do something else instead? Will it just confuse people to see this: sage: E = EllipticCurve([0,0,0,0,1]); E Elliptic Curve defined by y^2 = x^3 + 1 over Rational Field sage: E.has_cm() (False, None) Since with my new code we have: sage: K.<i> = QuadraticField(-1) sage: E = EllipticCurve(K, [0,0,0,0,1]); E Elliptic Curve defined by y^2 = x^3 + 1 over Number Field in i with defining polynomial x^2 + 1 sage: E.has_cm() (False, None) sage: E.has_potential_cm() (True, (-3, 1)) and sage: K.<a> = QuadraticField(-3) sage: E = EllipticCurve(K, [0,0,0,0,1]); E Elliptic Curve defined by y^2 = x^3 + 1 over Number Field in a with defining polynomial x^2 + 3 sage: E.has_cm() (True, -3) sage: E.has_potential_cm() (True, (-3, 1)) John -- You received this message because you are subscribed to the Google Groups "sage-nt" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send an email to [email protected]. Visit this group at http://groups.google.com/group/sage-nt. For more options, visit https://groups.google.com/d/optout.
