1 | initial version |
This is the same answer, with one more touch about how to work around in the given and in similar situations. I am using the interpreter, and for some comfort let it be the ipython
code eating machine.
[dan@k9 ~]$ ipython
Python 3.11.5 (main, Sep 2 2023, 14:16:33) [GCC 13.2.1 20230801]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.16.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from sage.all import *
In [2]: E = EllipticCurve('37a')
In [3]: E
Out[3]: Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field
In [4]: E.lift_x?
The last question mark asks for the doc string of the method. And here it comes:
Signature: E.lift_x(x, all=False, extend=False)
Docstring:
Return one or all points with given `x`-coordinate.
This method is deterministic: It returns the same data each
time when called again with the same `x`.
INPUT:
- ``x`` -- an element of the base ring of the curve, or of an extension.
- ``all`` (bool, default False) -- if True, return a (possibly
empty) list of all points; if False, return just one point,
or raise a ValueError if there are none.
- ``extend`` (bool, default False) --
- if ``False``, extend the base if necessary and possible to
include `x`, and only return point(s) defined over this
ring, or raise an error when there are none with this
`x`-coordinate;
- If ``True``, the base ring will be extended if necessary
to contain the `y`-coordinates of the point(s) with this
`x`-coordinate, in addition to a possible base change to
include `x`.
OUTPUT:
... and so on. For us, the parameter x
is the interesting one. And it must be an element of the base ring of the curve, of of an extension of the curve. So if we want to lift the integer one, we make an element of the base field of the curve from it.
In [6]: E.lift_x( QQ(1) )
Out[6]: (1 : -1 : 1)
In [7]: E.lift_x( QQ(1), all=True )
Out[7]: [(1 : -1 : 1), (1 : 0 : 1)]