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.