On Thu, Sep 7, 2017 at 1:46 PM, Ben Hutz <bn4...@gmail.com> wrote:

> Yes, I'm working on the coercion now.
>
> However, isn't a==0 checking coercion from the parent of a to the parent
> of 0. In other words, the homset of rational points on P and QQ.
>

Yes, I got confused by the notation, since normally in Sage P(0) would
create an element of P.   But there's still no coercion:

sage: a.parent().has_coerce_map_from(QQ)
False

In dimension 1, there is a canonical coercion, but not in higher dimensions.
>

Sure, but only for P^1 and A^1, not other curves.  Is there value in having
coercions just for those two, for dynamics for example?
David

On Thursday, September 7, 2017 at 12:17:57 PM UTC-5, David Roe wrote:
>>
>> The reason that a==0 returns false is that there is no coercion map from
>> QQ to P:
>>
>> sage: P.has_coerce_map_from(QQ)
>> False
>>
>> I'm not convinced that there should be a coercion, it's pretty rare that
>> a scheme has a natural map from its base ring.
>> However, it seems like there's also a problem hiding here, probably
>> because schemes don't use the coercion model properly:
>>
>> sage: P.convert_map_from(QQ)
>> Traceback (most recent call last)
>> ...
>> RuntimeError: BUG in coercion model, no element constructor for <class
>> 'sage.schemes.projective.projective_space.ProjectiveSpace_
>> rational_field_with_category'>
>>
>> David
>>
>> On Thu, Sep 7, 2017 at 1:11 PM, Ben Hutz <bn4...@gmail.com> wrote:
>>
>>> I'm working on implementing coercion for scheme points and had a
>>> question about how comparison is done. As an explicit example consider the
>>> following point
>>>
>>> P.<u,v>= ProjectiveSpace (QQ ,1)
>>> a=P(0)
>>>
>>> in particular, the integer 0 is coerced into the projective point (0:1).
>>> For comparisons it appears that
>>>
>>> a == P(0)  (returns to True)
>>>
>>> calls the _richcmp_() function so uses the coercion framework, but
>>>
>>> a==0  (returns False even though it knows there is a coercion from the
>>> integer ring to P)
>>>
>>> is calling something else. There does not appear to be an  __eq__()
>>> operator implemented for scheme points, but it does show up in tab
>>> completion in the notebook, but can't tell me where the code is from. Is
>>> this an artifact of starting to transition the code to python3. Or this
>>> just broken somewhere?
>>>
>>> Thanks,
>>>   Ben
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "sage-devel" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to sage-devel+...@googlegroups.com.
>>> To post to this group, send email to sage-...@googlegroups.com.
>>> Visit this group at https://groups.google.com/group/sage-devel.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sage-devel+unsubscr...@googlegroups.com.
> To post to this group, send email to sage-devel@googlegroups.com.
> Visit this group at https://groups.google.com/group/sage-devel.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to