Yes, but *after* implementing the coercion for the homsets I'm getting the 
behavior above. The 'a==0' doesn't go through the coecion framework, but 
the a==P(0) does. So one returns true and the other false. I'm trying to 
figure out why == is not utilizing the coercion/richcmp in that case.

You'd be surprised at how often in Sage the shorthand of leaving of the 
last coordinate occurs. But, yes, it is just a shorthand and is used in the 
__init__() for point.

On Thursday, September 7, 2017 at 12:53:05 PM UTC-5, David Roe wrote:
>
>
>
> On Thu, Sep 7, 2017 at 1:46 PM, Ben Hutz <bn4...@gmail.com <javascript:>> 
> 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+...@googlegroups.com <javascript:>.
>> To post to this group, send email to sage-...@googlegroups.com 
>> <javascript:>.
>> 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