Elliptic curves over \(p\)-adic fields

class sage.schemes.elliptic_curves.ell_padic_field.EllipticCurve_padic_field(R, data, category=None)[source]

Bases: EllipticCurve_field, HyperellipticCurve_padic_field

Elliptic curve over a \(p\)-adic field.

EXAMPLES:

sage: Qp = pAdicField(17)
sage: E = EllipticCurve(Qp,[2,3]); E
Elliptic Curve defined by y^2  = x^3 + (2+O(17^20))*x + (3+O(17^20))
 over 17-adic Field with capped relative precision 20
sage: E == loads(dumps(E))
True
>>> from sage.all import *
>>> Qp = pAdicField(Integer(17))
>>> E = EllipticCurve(Qp,[Integer(2),Integer(3)]); E
Elliptic Curve defined by y^2  = x^3 + (2+O(17^20))*x + (3+O(17^20))
 over 17-adic Field with capped relative precision 20
>>> E == loads(dumps(E))
True
Qp = pAdicField(17)
E = EllipticCurve(Qp,[2,3]); E
E == loads(dumps(E))
frobenius(P=None)[source]

Return the Frobenius as a function on the group of points of this elliptic curve.

EXAMPLES:

sage: Qp = pAdicField(13)
sage: E = EllipticCurve(Qp,[1,1])
sage: type(E.frobenius())
<... 'function'>
sage: point = E(0,1)
sage: E.frobenius(point)
(0 : 1 + O(13^20) : 1 + O(13^20))
>>> from sage.all import *
>>> Qp = pAdicField(Integer(13))
>>> E = EllipticCurve(Qp,[Integer(1),Integer(1)])
>>> type(E.frobenius())
<... 'function'>
>>> point = E(Integer(0),Integer(1))
>>> E.frobenius(point)
(0 : 1 + O(13^20) : 1 + O(13^20))
Qp = pAdicField(13)
E = EllipticCurve(Qp,[1,1])
type(E.frobenius())
point = E(0,1)
E.frobenius(point)

Check that Issue #29709 is fixed:

sage: Qp = pAdicField(13)
sage: E = EllipticCurve(Qp,[0,0,1,0,1])
sage: E.frobenius(E(1,1))
Traceback (most recent call last):
...
NotImplementedError: Curve must be in weierstrass normal form.
sage: E = EllipticCurve(Qp,[0,1,0,0,1])
sage: E.frobenius(E(0,1))
(0 : 1 + O(13^20) : 1 + O(13^20))
>>> from sage.all import *
>>> Qp = pAdicField(Integer(13))
>>> E = EllipticCurve(Qp,[Integer(0),Integer(0),Integer(1),Integer(0),Integer(1)])
>>> E.frobenius(E(Integer(1),Integer(1)))
Traceback (most recent call last):
...
NotImplementedError: Curve must be in weierstrass normal form.
>>> E = EllipticCurve(Qp,[Integer(0),Integer(1),Integer(0),Integer(0),Integer(1)])
>>> E.frobenius(E(Integer(0),Integer(1)))
(0 : 1 + O(13^20) : 1 + O(13^20))
Qp = pAdicField(13)
E = EllipticCurve(Qp,[0,0,1,0,1])
E.frobenius(E(1,1))
E = EllipticCurve(Qp,[0,1,0,0,1])
E.frobenius(E(0,1))