Determining Elliptic Curve Components
Say we have an elliptic curve:
R.<a,b,c> = QQ[]
cubic = a*(a+c)*(a+b)+b*(b+c)*(a+b)+c*(b+c)*(a+c)-4*(a+b)*(a+c)*(b+c)
E = EllipticCurve_from_cubic(cubic, morphism=False)
print(E)
print(E.minimal_model())
f = EllipticCurve_from_cubic(cubic, morphism=True)
finv = f.inverse()
generators = E.gens()
print
print("generators = %s" %(generators))
Output:
Elliptic Curve defined by y^2 + x*y = x^3 + 69*x^2 + 1365*x + 8281 over Rational Field
Elliptic Curve defined by y^2 + x*y + y = x^3 - 234*x + 1352 over Rational Field
generators = [(-39 : 52 : 1)]
How do we determine which of the two elliptic curve components a particular point is on? If we had this elliptic curve in the form $y^2 = x^3 + 109 x^2 + 234 x$ it'd be quite simple (if $x<0$ it's on the egg). Is there a nice way to automate this process in SageMath? For example, in this case the generator is on the egg.