# Revision history [back]

There are structure theorems related to this. Given a "good equation" defined over $\mathbb Z_p$, for a "good prime" $p$, a first try is to get the $p$-division points for the reduction modulo $p$. For instance:

sage: p = 3
sage: R, F, f = Zp(p), Qp(p), GF(p)
sage: E = EllipticCurve( f, [1,0,0,0,1] )
sage: E.order().factor()
2 * 3
sage: E(0).division_points(3)
[(0 : 1 : 0), (2 : 0 : 1), (2 : 1 : 1)]


Teichmüller lifts can (?!) then be constructed... For instance:

p = 3
R, F, f = Zp( p,4 ), Qp( p,4 ), GF(p)

Ef = EllipticCurve( f, [1,0,0,0,1] )
EF = EllipticCurve( F, [1,0,0,3,4] )

for point in Ef.points():
a,b,c = point
A,B,C = F(a.lift()), F(b.lift()), F(c.lift())
try:
POINT = EF.teichmuller( (A,B,C) )
print "%s -> %s" % ( point, POINT )
except:
print "%s -> ***" % point


This gives some lifts for the points where the valuation condition is verified:

(0 : 1 : 0) -> (0 : 1 + 2*3 + 2*3^2 + 2*3^3 + O(3^4) : 1 + O(3^4))
(0 : 1 : 1) -> (0 : 1 + 2*3 + 2*3^2 + 2*3^3 + O(3^4) : 1 + O(3^4))
(0 : 2 : 1) -> (0 : 2 + O(3^4) : 1 + O(3^4))
(1 : 1 : 1) -> ***
(2 : 0 : 1) -> (2 + 2*3 + 2*3^2 + 2*3^3 + O(3^4) : O(3^4) : 1 + O(3^4))
(2 : 1 : 1) -> (2 + 2*3 + 2*3^2 + 2*3^3 + O(3^4) : 1 + O(3^4) : 1 + O(3^4))