Independence of points on Elliptic curve

Let $$P_1(x_1,y_1),P_2(x_2,y_2)...P_n(x_n,y_n)$$ be $$n$$ rational points on given Elliptic curve. How do we prove they are independent? Are there any theorems/results/algorithms/softwares to prove their independence?

• In general, this is a difficult problem. I think that they are $\Bbb Z$-linearly independent iff the determinant of the matrix $(\langle P_i, P_j \rangle)_{i,j}$ is not zero, where $\langle -,- \rangle$ is the Néron-Tate height pairing. – Watson Dec 1 '18 at 15:14
• @Watson The application of this result is exactly what I found in one of the papers. But, I am not able to find resources/references for this result? – ersh Dec 1 '18 at 18:06
• See §2.7 in Lozano-Robledo Elliptic curves, modular forms, and their L-functions, or prop. 4.10 here (click on "view" on the bottom of the page). – Watson Dec 1 '18 at 18:46
• Thank you! This is very helpful! – ersh Dec 1 '18 at 22:07

This has already somewhat been answered in the comments but I'd like to add a little example of a Sage session playing with this.

The point is that the canonical height pairing is a symmetric bilinear map $$E(\mathbf Q ) \times E(\mathbf Q) \to \mathbf R$$ so if there is a linear relationship between some points, their should be the same relationship between all of their heights.

You should be able to do all of this in a Sage session (Sage is free!) (there was a bug with the rational_points command in some recent versions of sage so that might not work depending on your version)

Let's start with a not-so-randomly-chosen elliptic curve (I picked this one to have rank 4 so that this would be interesting, see http://www.lmfdb.org/EllipticCurve/Q/?rank=4)

sage: E = EllipticCurve([1, -1, 0, -79, 289])
sage: E.rational_points(bound=10)
[(-10 : 3 : 1),
(-10 : 7 : 1),
(-9 : -10 : 1),
(0 : 1 : 0),
(3 : -10 : 1),
(3 : 7 : 1),
(4 : -7 : 1),
(4 : 3 : 1),
(5 : -3 : 1),
(5 : -2 : 1),
(6 : -5 : 1),
(6 : -1 : 1),
(7 : -10 : 1),
(7 : 3 : 1),
(8 : 7 : 1)]
sage: L = E.rational_points(bound=10)

L is the list of a whole bunch of points we found now

We take the pairing matrix of the first two points, looks rank 1 so determinant 0!

sage: E.height_pairing_matrix(L[0:2])
[ 2.38682061714418 -2.38682061714418]
[-2.38682061714418  2.38682061714418]

and it is! we should expect this though, points 0 and 1 have the same x-coord so are inverses of each other

sage: E.height_pairing_matrix(L[0:2]).determinant()
0.000000000000000

what about points 1,2?

sage: E.height_pairing_matrix(L[1:3])
[ 2.38682061714418 0.126691370405363]
[0.126691370405363  2.68947630168514]

doesn't look rank $$\lt 2$$ at all! though it is always symmetric

Similar for points 7,8

sage: E.height_pairing_matrix(L[7:9])
[ 1.17647633591898 0.167621062889770]
[0.167621062889770  1.20262600414243]
sage: E.height_pairing_matrix(L[7:9]).determinant()
1.38676421411007

We can try 3 other points now

sage: L[5:10:2]
[(3 : 7 : 1), (4 : 3 : 1), (5 : -2 : 1)]
sage: E.height_pairing_matrix(L[5:10:2]).determinant()
1.30015022478383

this is clearly non-zero so assuming correctness of the software these three points are independent.

What about non-independence, in general it is notoriously hard to prove real numbers are zero on a computer, leading to problems when trying to prove dependence in general. With rational points of elliptic curves though we are fundamentally in a finitely generated abelian group though, so we can do more

Here are 4 points, which don't have an obvious relationship by glancing at!

sage: L[4:12:2]
[(3 : -10 : 1), (4 : -7 : 1), (5 : -3 : 1), (6 : -5 : 1)]
sage: E.height_pairing_matrix(L[4:12:2])
[  1.72683492334016 -0.959801459379726  0.222652978555837  0.767033463960439]
[-0.959801459379726   1.17647633591898 -0.167621062889770  0.216674876539249]
[ 0.222652978555837 -0.167621062889770   1.20262600414243 0.0550319156660674]
[ 0.767033463960439  0.216674876539249 0.0550319156660674  0.983708340499687]

Looks like the determinant is zero:

sage: E.height_pairing_matrix(L[4:12:2]).det()
-2.66453525910038e-15

So are they dependent? Lets give the matrix we think has some kernel a name.

sage: M = E.height_pairing_matrix(L[4:12:2])

Sage will complain if you ask it for the kernel as we are over the reals to some finite precision, so we use a little trick:

sage: M.change_ring(QQ).eigenvectors_right()
[(1.833143676963028?e-16,
[(1, 1.000000000000000?, 1.?e-16, -1.000000000000000?)],
1),
(1.135131138616548?,
[(1, -2.478168820884934?, -8.24803196664211?, -1.478168820884934?)],
1),
(1.289199998123811?,
[(1, 3.978262464606312?, -1.966228843927413?, 4.978262464606312?)],
1),
(2.665314467160902?,
[(1, -0.615399695397310?, 0.2372153947344239?, 0.3846003046026902?)],
1)]

So it looks like $$(1,1,0,-1)$$ is a kernel vector (i.e. $$L + L = L$$)

sage: M*matrix([,,,[-1]])
[    0.000000000000000]
[ 5.55111512312578e-17]
[-5.55111512312578e-17]
[-1.11022302462516e-16]
sage: L + L - L
(0 : 1 : 0)

indeed this is a relation.

• That is very helpful . Thanks for your time! – ersh Dec 4 '18 at 1:12