Ask Your Question

Formal Group Law on Elliptic Curves

asked 2022-09-28 07:12:35 +0200

Fhn gravatar image

updated 2022-10-27 08:25:08 +0200

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/\mathbb Z_p$ and $M=(p)$ the maximal ideal of $\mathbb Z_p$.

I am considering $\hat 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:

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

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 $\mathbb Z_p[[t]]$ over which, indeed a,b have valuation 0. But, unless I am misunderstanding something, since a and b have positive valuation in $\mathbb Z_p$, 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?

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted

answered 2022-10-06 18:14:40 +0200

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()

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

edit flag offensive delete link more

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


Asked: 2022-09-28 07:12:35 +0200

Seen: 1,085 times

Last updated: Oct 06 '22