Loading [MathJax]/jax/output/HTML-CSS/jax.js

First time here? Check out the FAQ!

Ask Your Question
1

Formal Group Law on Elliptic Curves

asked 2 years ago

Fhn gravatar image

updated 2 years ago

FrédéricC gravatar image

It is very likely I am misunderstanding something, in which case I apologize in advance. Here's my question.

Start with an elliptic curve E/Zp and M=(p) the maximal ideal of Zp.

I am considering ˆE the formal group and say F its group law.

I am trying to take two points in M and add them using the group law, something that should be possible and converge (see Silverman AEC pg 119).

On Sage, this is easy to set up:

E=EllipticCurve('61a1')
Ep=E.change_ring(Qp(5))
Ef=Ep.formal_group()
F=Ef.group_law(16)
a=Qp(5, prec=16)(5+3*5^2)
b=Qp(5, prec=16)(5^2-2*5^3)
X=Ef.x(16)
Y=Ef.y(16)
I=Ef.inverse(16)

Now the command F(a,b) pops an error saying that a,b need to have positive valuation. The issue is that it is working over the ring Zp[[t]] over which, indeed a,b have valuation 0. But, unless I am misunderstanding something, since a and b have positive valuation in Zp, we should be allowed to add them, right?

The same issue does not exist with the other functions, like X(a), Y(a), I(a) etc.

I have found a way to get around this issue by taking exp(log(a)+log(b)) where exp and log are the formal group logarithmic and exponential functions, but surely this is not a nice way.

So is this indeed a bug or am I misunderstanding something? And if it is a bug, is there an easy/good way to fix/get around it?

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
1

answered 2 years ago

dan_fulea gravatar image

The following worked for me, regarding the computation of F(a,b).

E  = EllipticCurve('61a1')
Ep = E.change_ring(Qp(5))
Ef = Ep.formal_group()
F  = Ef.group_law(16)

# t1, t2 = F.parent().gens()

a  = Qp(5, prec=16)(5+3*5^2)
b  = Qp(5, prec=16)(5^2-2*5^3)

print( F.polynomial()(a, b) )

which delivers

5 + 4*5^2 + 2*5^3 + 3*5^4 + 3*5^7 + 3*5^8 + 3*5^9 + 4*5^10 + 3*5^11 + 5^12 + 3*5^13 + 2*5^14 + 5^15 + 3*5^16 + O(5^17)

Here, we may go wrong with the "last p-adic digits", when precisions do not match in the sense of the (default) precision used inside F.parent().

Note: Unfortunately the base ring

sage: R = Qp(5)
sage: R
5-adic Field with capped relative precision 20
sage: R.is_exact()
False

is not an exact field. So sage lets the programmer arrange for controlling precision in the performed operations.

Preview: (hide)
link

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2 years ago

Seen: 1,274 times

Last updated: Oct 06 '22