Thanks for joining in with constructive suggestions!  I was rather
deliberately trying to goad at least some people into coming up with
better suggestions, since I entirely agree that we all want to talk
about an elliptic curve over Q having CM even though the additional
endomorphisms are not defined over Q.

At least one person told me they had seen "potential CM" somewhere...

I'll come back to this after the long weekend I'm about to leave for.
Meanwhile more suggestions are welcome!

John

On 31 July 2014 06:37, William Stein <[email protected]> wrote:
> On Wed, Jul 30, 2014 at 7:51 AM, John Cremona <[email protected]> wrote:
>> 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.
>
> If a mathematician says "let E/Q be an elliptic curve with CM" that
> *means* something.
> Sage shouldn't be inconsistent with that...  Also, I've never
> seen the phrase "potential CM" in any paper (though maybe you have).
>
>>
>> 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))
>
>
> I'm concerned about this because:
>
>    - it will it break all existing code that uses "has_cm()"; it's an
> incompatible API change so would have to have a 1-year deprecation
> period
>
>    - just because only a little code in Sage uses has_cm(), doesn't
> mean that there isn't code "out there" that uses it. Not all Sage code
> is in Sage.  I'm the guy that regularly hears complaints about us
> changing things in Sage, and breaking user code (we've been much
> better lately than we used to be).
>
>    - To me, the change replaces standard mathematical usage by
> something that I find less standard.
>
> I haven't thought more than a few seconds about other names, but how
> about if E.has_cm() stays exactly as is right now.  If somebody wants
> the discriminant, they can call the function already there:
>
> 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()
> True
> sage: E.cm_discriminant()
> -3
>
> Can you call your new function that determines whether there are CMs
> (complex multiplications) defined over
> the base field "has_rational_cm()"?
>
>    E.has_rational_cm()
>
> The phrase "rational CM" comes up some in the context of modular points, e.g.,
>
>   "The first author computed the Q-rational CM points of "
>
> One could also support
>
>     E.has_rational_cm(K)
>
> to tell whether or not there are CMs that are rational over K, e.g.,
> whether End(E/K) > Z.
>
> And add something to the docstring of has_cm that points to has_rational_cm.
>
>  -- William
>
>
>>
>> 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.
>
>
>
> --
> William Stein
> Professor of Mathematics
> University of Washington
> http://wstein.org
>
> --
> 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.

-- 
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.

Reply via email to