Hi Chris, Thanks for the advice, but I can't seem to get this to work either. I get the error "ValueError: element must have non-negative valuation in order to compute residue".
Any idea how to make this work without errors? Or should I just give up and use magma instead? E=EllipticCurve(Qp(2,5),[0, 0, 1, -1, 0]); E Elliptic Curve defined by y^2 + (1+O(2^5))*y = x^3 + (1+2+2^2+2^3+2^4+O(2^5))*x over 2-adic Field with capped relative precision 5 P=E(2,-3,8); P (2^-2 + O(2^3) : 2^-3 + 2^-1 + 1 + 2 + O(2^2) : 1 + O(2^5)) 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) ValueError: element must have non-negative valuation in order to compute residue. Dan On Friday, 15 May 2020 09:44:43 UTC+1, chris wuthrich wrote: > > Dear Daniel > > indeed elliptic curves over rings (what should be called technically > Weierstrass equations with non-zero discriminant, instead of unit > discriminant) are rather useless in Sage. > I would recommend to work with 2-adics in your case and to reduce modulo 4 > in the end. You could work over Qp(p,k) if you want modulo p^k. > > I hope that this may help with what you do. Of course, one should > implement this properly one day. > > Chris > > On Thursday, 14 May 2020 11:41:04 UTC+1, 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. >> >> 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 sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/6d5a9cd1-dfb2-4cd1-baba-6e51f1f39d15%40googlegroups.com.