Number of Elliptic Curves over Fp

338 Views Asked by At

I am a beginner/amateur in the topic

according to https://www.math.brown.edu/~jhs/Presentations/WyomingEllipticCurve.pdf on page 45,

There are approximately 2p different elliptic curves defined over $F_p$.

On SAGE, I tried to enumerate elliptic curves over $F_5$ looking at all curves $Y^2 = X^3 + iX+j$ with a non-null discriminant $\Delta = 4i^3 + 27j^2$

> p = 5 Fp = FiniteField(p)
  R = IntegerModRing(p) 
  A = matrix(R, p, p, lambda i,j: 4*i*i*i+27*j*j)
> L= [] 
> for i in range(p): 
>     for j in range(p):
>         if A[i,j]!=0 :
>            E = EllipticCurve(Fp,[i,j])
>            L.append(E.points()) 
> S = list (set(L))
> S

and i get 20 answers

[[(0 : 0 : 1), (0 : 1 : 0)],
 [(0 : 1 : 0), (0 : 2 : 1), (0 : 3 : 1), (2 : 1 : 1), (2 : 4 : 1), (4 : 1 : 1), (4 : 4 : 1)],
 [(0 : 1 : 0), (3 : 1 : 1), (3 : 4 : 1)],
 [(0 : 1 : 0), (0 : 1 : 1), (0 : 4 : 1), (2 : 1 : 1), (2 : 4 : 1), (3 : 1 : 1), (3 : 4 : 1), (4 : 2 : 1), (4 : 3 : 1)],
 [(0 : 1 : 0), (2 : 0 : 1), (3 : 2 : 1), (3 : 3 : 1), (4 : 1 : 1), (4 : 4 : 1)],
 [(0 : 1 : 0), (3 : 2 : 1), (3 : 3 : 1), (4 : 2 : 1), (4 : 3 : 1)],
 [(0 : 1 : 0), (0 : 1 : 1), (0 : 4 : 1), (1 : 1 : 1), (1 : 4 : 1), (3 : 0 : 1), (4 : 1 : 1), (4 : 4 : 1)],
 [(0 : 1 : 0), (0 : 1 : 1), (0 : 4 : 1), (2 : 2 : 1), (2 : 3 : 1), (4 : 0 : 1)],
 [(0 : 1 : 0), (0 : 2 : 1), (0 : 3 : 1), (1 : 2 : 1), (1 : 3 : 1), (2 : 0 : 1), (4 : 2 : 1), (4 : 3 : 1)],
 [(0 : 1 : 0), (1 : 2 : 1), (1 : 3 : 1), (2 : 1 : 1), (2 : 4 : 1), (3 : 0 : 1)],
 [(0 : 0 : 1), (0 : 1 : 0), (1 : 2 : 1), (1 : 3 : 1), (2 : 2 : 1), (2 : 3 : 1), (3 : 1 : 1), (3 : 4 : 1), (4 : 1 : 1), (4 : 4 : 1)],
 [(0 : 1 : 0), (0 : 2 : 1), (0 : 3 : 1), (1 : 1 : 1), (1 : 4 : 1), (2 : 2 : 1), (2 : 3 : 1), (3 : 2 : 1), (3 : 3 : 1)],
 [(0 : 1 : 0), (1 : 0 : 1), (4 : 1 : 1), (4 : 4 : 1)],
 [(0 : 0 : 1), (0 : 1 : 0), (1 : 0 : 1), (2 : 1 : 1), (2 : 4 : 1), (3 : 2 : 1), (3 : 3 : 1), (4 : 0 : 1)],
 [(0 : 1 : 0), (0 : 2 : 1), (0 : 3 : 1), (1 : 0 : 1), (3 : 1 : 1), (3 : 4 : 1)],
 [(0 : 1 : 0), (1 : 2 : 1), (1 : 3 : 1), (4 : 0 : 1)],
 [(0 : 1 : 0), (2 : 2 : 1), (2 : 3 : 1)],
 [(0 : 1 : 0), (0 : 1 : 1), (0 : 4 : 1), (1 : 2 : 1), (1 : 3 : 1), (3 : 2 : 1), (3 : 3 : 1)],
 [(0 : 0 : 1), (0 : 1 : 0), (2 : 0 : 1), (3 : 0 : 1)],
 [(0 : 1 : 0), (1 : 1 : 1), (1 : 4 : 1), (2 : 1 : 1), (2 : 4 : 1)]]

have i done something wrong ? or am I missing something ? According to Silverman i was expecting around 2x5 = 10 different curves. are some identifiable by some symmetry ? i can see there are indeed pairs of curves with the same number of points but they don't really look obviously the same to me, nor can i see an obvious relationship between the coefficients of those having the same number of points.

1

There are 1 best solutions below

0
On BEST ANSWER

Elliptic curves over an algebraically closed field are isomorphic if and only if they have the same $j$-invariant, so computing the $j$-invariants will tell you when two curves are not isomorphic at least (if the $j$-invariants are different!)

Over a non-algebraically closed field elliptic curves of fixed $j$-invariant (not equal to 0, 1728) are all quadratic twists of each other, that is there exists $D\in \mathbf F_p^\times$ s.t. $E_1\cong E_2^{(D)}$, where the $D$th quadratic twist is defined by $$y^2 = x^3 + ax +b \mapsto Dy^2 = x^3 +ax+b$$ this is short Weierstrass form, so lets use $p\ne 2,3$, the quadratic twist is isomorphic to the original curve when $D$ is a square. For a finite field the group $\mathbf F_p^\times/(\mathbf F_p^\times)^2 \cong C_2$, there every non-square differs from each other by a square, so there is only one possible quadratic twist of each elliptic curve, which is not isomorphic to the original, this is what gives us that there are roughly $2p$ curves, excluding $0, 1728$ we have $\approx p-2$ $j$-invariants, each of which gives two non-isomorphic quadratic twists over $\mathbf F_p$.

In Sage you can use the .is_quadratic_twist method of an elliptic curve to check if two curves are quadratic twists, and .is_isomorphic to check isomorphism. You can also find the twisted curves using .quadratic_twist.

Using these methods you can reduce your list down to the exact number of curves, or build up the complete list starting from the set of all $j$-invariants.

Note that when $j = 0,1728$ this is more complicated as you also get sextic and quartic twists!