Ha that is quite a funny mistake. The outputs of my experiments start to make more sense now.
Does this also explain the error I found when working modulo 16? Just this was slightly different in nature. On Thursday, 14 May 2020 16:17:59 UTC+1, Reimundo Heluani wrote: > > On May 14, Daniel Loughran wrote: > >Hello. I think that I may have found a bug involving elliptic curves > modulo > >powers of primes. I have attached the working jupyter notebook, but my > code and > >results are also below. > > > >In my code I have an elliptic curve E over Q with good reduction at 2 and > the > >point P = (2:-3:8) (homogeneous coordinates). > > > >It is clear that the reduction modulo 4 of this point in projective space > is > >(2:1:0). > > > >However, sage is telling me that when I reduce the curve modulo 4 then > ask what > >point P reduces to, I get the identity element (0:1:0). > > > >My guess is that sage does something like put this point into the form > (1/4:-3/ > >8:1), then notices that 4 divides the denominator of the x-coordinate so > just > >kills it. But really it should be clearing denominators before it tries > to > >reduce modulo 4. > > > Ok the issue is in ell_generic.__call__() that calls _reduce_point with > characteristic > p=4 which is not a prime. This function in turn creates the curve > > E' = E.change_ring(GF(4)) > instead of your > E4 = E.change_ring(Integers(4)) > > And then returns the point E'(P) which indeed is the identity. > > > R > > > >There is another related bug: if I try to instead reduce this point > modulo 16, > >then I just get the error "inverse of Mod(4, 16) does not exist". I guess > this > >is a similar problem to the above. > > > > > >------------------------------------------------------------------------------------------------------------------------------ > > > > >[ ] > > > >E=EllipticCurve([0, 0, 1, -1, 0]); E > > > >Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field > > > > > >[ ] > > > >P=E(2,-3,8); P > > > >(1/4 : -3/8 : 1) > > > > > >[ ] > > > >E4=E.change_ring(Integers(4)); E4 > > > >Elliptic Curve defined by y^2 + y = x^3 + 3*x over Ring of integers > modulo 4 > > > > > >[ ] > > > >E4(P) > > > >(0 : 1 : 0) > > > > > >[ ] > > > >P2.<X,Y,Z> = ProjectiveSpace(Integers(4),2); P2 > > > >Projective Space of dimension 2 over Ring of integers modulo 4 > > > > > >[ ] > > > >P2(2,-3,8) > > > >(2 : 1 : 0) > > > > > >[ ] > > > >P2(0,1,0) > > > >(0 : 1 : 0) > > > > > >[ ] > > > >P2(2,-3,8)==P2(0,1,0) > > > >False > > > > > >[ ] > > > >E16=E.change_ring(Integers(16)); E16 > > > >Elliptic Curve defined by y^2 + y = x^3 + 15*x over Ring of integers > modulo 16 > > > > > >[ ] > > > >E16(P) > >ZeroDivisionError: inverse of Mod(4, 16) does not exist > > > >-- > >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 [11]sage-...@googlegroups.com <javascript:>. > >To view this discussion on the web visit [12] > https://groups.google.com/d/msgid/ > >sage-devel/f2900af4-6aad-4450-9e12-6f1ec95596f8%40googlegroups.com. > > > >References: > > > >[11] mailto:sage-...@googlegroups.com <javascript:> > >[12] > https://groups.google.com/d/msgid/sage-devel/f2900af4-6aad-4450-9e12-6f1ec95596f8%40googlegroups.com?utm_medium=email&utm_source=footer > > > > -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/e174eb2c-f21b-402d-b0f0-fac380916650%40googlegroups.com.