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.

Reply via email to