% Consider adding problem on elliptic divisibility sequences Silverman II.3.34-35
\documentclass[11pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{hyperref}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{hyperref}
\usepackage{enumerate}
\hypersetup{colorlinks=true,urlcolor=blue,citecolor=blue,linkcolor=blue}
\usepackage{listings}
\usepackage{courier}
\usepackage{color}
\lstset{
	basicstyle=\small\ttfamily,
	keywordstyle=\color{blue},
	language=python,
	xleftmargin=16pt,
}

\textwidth=5.8in
\textheight=9in
\topmargin=-0.5in
\headheight=0in
\headsep=.5in
\hoffset  -.4in
\pagestyle{plain}

\newcommand{\Fl}{\mathbb{F}_\ell}
\newcommand{\Fp}{\mathbb{F}_p}
\newcommand{\FF}{\mathbb{F}}
\newcommand{\Q}{\mathbb{Q}}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\Aut}{{\rm Aut}}
\newcommand{\End}{{\rm End}}
\newcommand{\M}{\textsf{M}}
\newcommand{\Gal}{{\rm Gal}}
\newcommand{\GL}{{\rm GL}}
\newcommand{\Frob}{{\rm Frob}}
\newcommand{\im}{\operatorname{im}}
\newcommand{\tr}{\operatorname{tr}}
\newcommand{\lcm}{{\rm lcm}}

\begin{document}
\setlength{\unitlength}{1in}
\begin{center}
\large
\textbf{18.783 Elliptic Curves\hspace{220pt}Spring~2015}\\\vspace{4pt}
\textbf{Problem Set \#3\hspace{222pt}Due: 02/27/2015}
\normalsize
\begin{picture}(5.8,.1) 
\put(0,0) {\line(1,0){5.8}}
\end{picture}
\end{center}

\subsection*{Description}

These problems are related to the material covered in Lectures 5-6.
I have made every effort to proof-read the problems, but there may well be errors that I have missed.
The first person to spot each error will receive 1-3 points of extra credit on their problem set, depending on the severity of the error.
\medskip

\noindent\textbf{Instructions}: Solve just \textbf{one} of the first three problems.
Then complete Problem~4, which is a survey.
When you submit your solutions via e-mail, please give the attached file a name of the form \texttt{LastnamePset3.pdf}.
\medskip

\noindent
I recommend reading through all three problems before you pick your poison.  My take on the problems:
\begin{itemize}
\item Problem 1 involves a happy mixture of theory, coding, and complexity analysis.
The coding should be easy, but the complexity analysis will require some care.
If you have already taken 18.782, please do not choose this problem.

\item Problem 2 requires no coding but will involve a longer write up than the other two problems.
It is probably a bit more difficult conceptually.
If you solve this problem you will have proved a result that does not seem to appear in the literature.

\item Problem 3 requires more coding than the others, but should be the easiest to write up (and it has some neat practical applications that we may see later).
\end{itemize}

Of course your mileage may vary.  Whichever problem you choose, I would urge you not to wait until the last minute to start it (none of these problems is particularly hard, but they are probably best solved in more than one sitting).

\subsection*{Problem 1. Root-finding over $\Z$ (100 points)}
In this problem you will develop an algorithm to find integer roots of polynomials in $\Z[x]$ using a $p$-adic version of Newton's method (also known as Hensel lifting).
As an application, this gives us an efficient way to factor perfect powers (a special case that we will need to handle when we come to the elliptic curve factorization method),
and it will be used as a black box in Problem 2 to find integer roots of division polynomials.

In the questions below, $p$ can be any integer greater than 1, but you may assume it is a prime power if you wish.

\begin{enumerate}[{\bf (a)}]
\item Let $x_0\in\Z$ and $f\in\Z[x]$.  Prove that the following equivalence holds in $\Z[x]$:
\[
f(x) \equiv f(x_0) + f'(x_0)(x-x_0)\bmod (x-x_0)^2.
\]
\item
Let $x_0,z_0\in\Z$ and $f\in\Z[x]$ satisfy $f(x_0)\equiv 0\bmod p$ and $f'(x_0)z_0\equiv 1\bmod p$.
Let
\begin{align*}
x_1 &\equiv x_0-f(x_0)z_0 \bmod p^2,\\
z_1 &\equiv 2z_0-f'(x_1)z_0^2\bmod p^2.
\end{align*}
Prove that that the following three equivalences hold:
\begin{align}
x_1&\equiv x_0\bmod p,\tag{i}\\
f(x_1)&\equiv 0\bmod p^2,\tag{ii}\\
f'(x_1)z_1&\equiv 1\bmod p^2.\tag{iii}
\end{align}
Show that (i) and (ii) characterize $x_1\bmod p^2$ uniquely by proving that if $x_2\in\Z$ also satisfies $x_2\equiv x_0\bmod p$ and $f(x_2)=0\bmod p^2$, then $x_1\equiv x_2\bmod p^2$.
\end{enumerate}

\noindent
Iteratively applying (b) yields an algorithm that, given an integer $k$ and $x_0,z_0$, and~$f$ satisfying the hypothesis (a), outputs an integer $x_k$ that satisfies $f(x_k)\equiv 0\bmod p^{2^k}$.

\begin{enumerate}[{\bf (a)}]
\setcounter{enumi}{2}
\item
Prove that if $f$ has an integer root $r$ for which $f'(r)$ is invertible modulo $p$, then given $x_0\equiv r\bmod p$, $z_0\equiv 1/f'(x_0)\bmod p$, and $k$ such that $|r| < p^{2^k}/2$, this algorithm outputs $x_k$ such that $r$ is the unique integer $r\equiv x_k \bmod p^{2^k}$ satisfying $|r| < p^{2^k}/2$.
\end{enumerate}

\noindent
To apply the result in (c), we need to know a suitable starting value (or values) for $x_0$.  For the two applications we have in mind, this is will be straightforward, so let us proceed on the assumption that we are given a suitable $x_0$ with $f'(x_0)$ invertible modulo~$p$.

Let $B$ be the maximum of the absolute values of the coefficients of~$f$, and let $B_0$ be an upper bound on the absolute value of its largest integer root.  It suffices to choose the least~$k$ such that $p^{2^k} > 2B_0$, and since any integer root of $f$ must divide its constant coefficient, we can assume that $B_0\le B$.
We can also assume $p < 2B_0$, since otherwise the problem is trivial ($k=0$ and $x_k=x_0$).

\begin{enumerate}[{\bf (a)}]
\setcounter{enumi}{3}
\item
Prove that with this choice of $k$ the algorithm can be implemented to run in time $O(d\ \M(\log B))$, where $d$ is the degree of~$f$ (be careful here, the most obvious implementation will not achieve this time bound).
Prove that if $f$ has $O(1)$ terms, then the algorithm can be implemented to run in time $O(\M(\log B) + \M(\log B_0)\log d)$.

\item
Using the primes $p=2$ and $p=3$, describe an efficient algorithm that, given an integer $N$ relatively prime to 6, either outputs an integer~$a$ and a prime~$q$ such that $a^q=N$, or proves that $N$ is not a perfect power.
Prove that your algorithm runs in quasi-quadratic time (meaning $O(n^2(\log n)^e)$ for some $e$, where $n=\log N$).
\end{enumerate}

\begin{enumerate}[{\bf (a)}]
\setcounter{enumi}{5}
\item
Implement your algorithm and report the result and running time on the each of the following inputs:
$2^{1000}+297,\ 5^{503},\ (2^{500}+55)^2,\ (2^{333}+285)^3$, $(2^{32}+15)^{31}$, $100!+1$.
To time your code in sage, use the \texttt{time} command (e.g. \texttt{time 1+1}).
\item
Prove that the algorithm you gave in (e) can be implemented to run in sub-quadratic time (meaning $o(n^2)$ where $n=\log N$).  You may need to modify the algorithm slightly in order to achieve this.\footnote{In fact, this problem can be solved in quasi-linear time \cite{bernstein}.}
\end{enumerate}

\subsection*{Problem 2. The torsion subgroup of $E(\Q)$ (100 points)}

Let $E$ be an elliptic curve over $\Q$.
The problem of determining the rational points on~$E$ is a famously hard problem that is still unsolved.
However, determining the rational points of finite order is easy.
In this problem you will design (but need not implement) an efficient algorithm for doing so.

We shall assume that $E$ is defined by a Weierstrass equation $y^2=x^3+Ax+B$, where $A$ and $B$ are \emph{integers}.
This assumption is not restrictive: we can always pick $u\in\Z$ so that the isomorphic curve $y^2=x^3+u^4Ax+u^6B$ has integer coefficients.

Let $P=(x_1,y_1)$ be a point of finite order $m>0$ in $E(\Q)$.
Our first goal is to prove that~$P$ must have integer coordinates.
This was proved independently first by Nagell \cite{nagell} and then by Lutz \cite{lutz} in the 1930's and is the first half of the Nagell-Lutz Theorem.
The standard proof \cite[\S 8.1]{washington} relies on a $p$-adic filtration, but in this problem you will give a shorter and simpler proof that relies only on properties of the division polynomials.
As shown in lecture, for any integer $n$ not divisible by $m$, the $x$-coordinate $x_n$ of the point $nP=(x_n,y_n)$ is given by $x_n=\phi_n(x_1)/\psi_n^2(x_1)$ where
\begin{align*}
\phi_n(x) &= x^{n^2} + \cdots,\\
\psi_n^2(x) &= n^2x^{n^2-1} + \cdots,
\end{align*}
with each ellipsis denoting lower order terms; see Problem 3 for the full definition of $\phi_n$ and~$\psi_n$, which depend on the curve coefficients $A$ and $B$.
\begin{enumerate}[{\bf (a)}]
\item Prove that for any positive integer $n<m$, if $x_n$ is an integer, then $x_1$ must be an integer.  Use this to reduce to the case that $m$ is prime.
\item Prove that if $m=2$ then $P$ has integer coordinates.
\item If $m$ is an odd prime then $x_1$ is a root of $\psi_m(x)=mx^{(m^2-1)/2}+\cdots\in \Z[x]$.  Using this, prove that $x_1$ is an integer, and then show that $y_1$ must also be an integer (thus~$P$ has integer coordinates as claimed).
\end{enumerate}

\noindent
We now need a few facts about the image of the torsion subgroup under reduction modulo a prime $p$ of good reduction for $E$.
So let $\Delta(E)=-16(4A^3+27B^2)$ be the discriminant of~$E$, and let $p$ be a prime that does not divide $\Delta$.
Reducing the coefficients $A$ and $B$ modulo $p$ then gives an elliptic curve $E_p/\Fp$.
Since we know that torsion points in $E(\Q)$ have integer coordinates, we can always reduce the coordinates of such a point modulo~$p$ to get the coordinates of a point in $E_p(\Fp)$.

\begin{enumerate}[{\bf (a)}]
\setcounter{enumi}{3}
\item Prove that if $P\in E(\Q)$ has order $m$, then its reduction in $E_p(\Fp)$ has order $m$.
Deduce that the reduction map from $E(\Q)$ to $E_p(\Fp)$ is injective at torsion points.
\end{enumerate}

We now recall Mazur's theorem from Lecture 1, which tells us that the order of a torsion point in $E(\Q)$ can be at most $12$ (and cannot be $11$).  Our strategy is to pick a prime $p \ge 11$ of good reduction for $E$, find all the points of order less than or equal to $12$ in $E_p(\Fp)$, and use the algorithm from Problem 1 to try and lift these points to $E(\Q)$ (you don't need to implement or prove anything about the algorithm in Problem 1, for the purposes of this problem we will take it as given).

The first step is to find a prime $p$ that does not divide the discriminant $\Delta$.
Doing this by trial division is not fast enough to give a quasi-linear running time, so we need to be a bit more clever.
We will instead use an algorithm for fast simultaneous modular reduction \cite[Alg. 10.16]{gg}. to compute $\Delta \bmod p_i$ for the first several primes $p_1,\cdots, p_k$ greater than $11$, where $k$ is chosen so that $M=p_1\cdots p_k>\Delta$ (so we know that $\Delta\bmod p_i$ is nonzero for some $p_i$, we'll just pick the least one).

This is accomplished using a \emph{product tree}, a binary tree of integers whose bottom level (the leaves of the tree) consists of the primes $p_i$; for the sake of simplicity let us assume we round $k$ up to a power of $2$ so that we have a complete binary tree.
Working our way up from the leaves, we set the value of each internal node to the product of its children; eventually we reach the root of the tree, which then has the value $M=p_1\cdots p_k$.
We then replace the root $M$ with $d=|\Delta|\bmod M$, and for each of its children $m_1$ and $m_2$ we replace $m_i$ with $d_i=d\bmod m_i$ (which is $|\Delta|\bmod m_i$).
Recursively working our way down the tree, we eventually get $|\Delta|\bmod p_i$ in the leaves.

In order to bound the complexity of our algorithm, we define
\[
n:=\lg|A|+\lg|B|,
\]
which represents the bit-size of the input, the elliptic curve $E/\Q$ given as $y^2=x^3+Ax+B$ with $A,B\in\Z$.
Note that we then also have $\log |\Delta| = O(n)$.

\begin{enumerate}[{\bf (a)}]
\setcounter{enumi}{4}
\item Prove that we can determine the least prime $p\ge 11$ that does not divide $\Delta$ in time $O(\M(n)\log n)$, and use the Prime Number Theorem to show that $p=O(n)$.
\end{enumerate}

For each integer $m>1$, define the polynomial $f_m\in\Z[x]$ as follows:
\[
f_m(x) = \begin{cases}
x^3+Ax+B\qquad&\text{if $m=2$},\\
\psi_m/\psi_2 &\text{if $m>2$ is even},\\
\psi_m & \text{if $m$ is odd},
\end{cases}
\]
where $\psi_m$ denotes the $m$th division polynomial of  the elliptic curve $E\colon y^2=x^3+Ax+B$.

\begin{enumerate}[{\bf (a)}]
\setcounter{enumi}{5}
\item Prove that if $P=(x_1,y_1)\in E(\Q)$ has finite order $m$ not divisible by $p$ then we have $f_m(x_1)=0\bmod p$ and $f_m'(x_1)\ne 0\bmod p$.
\end{enumerate}

It follows that their exist suitable starting values $x_0$ and $z_0$ to which we can apply the algorithm in Problem 1 to obtain an integer root of $f_m(x)$ that is congruent to $x_0$ modulo $p$.
By part (c), this root must be equal to $x_1$.
This still leaves the question of how to find such an $x_0$.
We know it must appear as the $x$-coordinate of some point in $E_p(\Fp)$ of order $m$, so it suffices to find all such points for all the values of $m\le 12$ permitted by Mazur's theorem.

\begin{enumerate}[{\bf (a)}]
\setcounter{enumi}{6}
\item Give an algorithm to enumerate all the points $(x_0,y_0)\in E_p(\Fp)$ in time $O(n\M(\log n))$.

\item Give an algorithm to construct the set $S$ consisting of all points in $E_p(\Fp)$ of order at most 12 in time $O(n\M(\log n))$, and prove that the cardinality of $S$ is $O(1)$ (meaning it is bounded by a constant that does not depend on $n$).

\item Prove that there is a bound $H>0$ with $\log H=O(n)$ such that the coefficients of $f_m$ all have absolute value bounded by $H$, for $2\le m\le 12$.
You don't need to give an explicit value for $H$, just show that it exists and can be effectively computed.

\item Using the $O(d\M(\log H))$ complexity bound of the root-finding algorithm from Problem 1 (proved in part (d) of Problem 1), show that for any point $Q\in S$ of order $m$ you can either find a point $P\in E(\Q)$ of order $m$ that reduces to $Q$ modulo $p$, or prove that no such $P$ exists\footnote{Note that not every point $Q\in S$ is necessarily the reduction of a point $P\in E(\Q)$.} in time $O(\M(n))$.

\item Conclude that you can enumerate the torsion points in $E(\Q)$ in $O(\M(n)\log n)$ time.
\end{enumerate}

It is worth noting that the algorithm you have just designed is asymptotically faster than both of the algorithms given in \cite{washington}: one is based on the the Lutz--Nagell Theorem \cite[Thm.\ 8.7]{washington}, which requires factoring $\Delta$ and is not polynomial time, and the other uses Doud's algorithm~\cite{doud} which is quasi-quadratic but not quasi-linear.\footnote{Doud gives a quasi-cubic complexity bound in \cite{doud} but with fast arithmetic it is quasi-quadratic.}

\subsection*{Problem 3. Computing division polynomials (100 points)}
For integers $n\ge 0$, define $\psi_n\in\Z[x,y,A,B]$ by
\begin{align*}
\psi_0 &= 0,\\
\psi_1 &= 1,\\
\psi_2 &= 2y,\\
\psi_3 &= 3x^4+6Ax^2+12Bx-A^2,\\
\psi_4 &= 4y(x^6+5Ax^4+20Bx^3-5A^2x^2-4ABx-8B^2-A^3),\\
\psi_{2m}&=\frac{1}{2y}\psi_m(\psi_{m+2}\psi_{m-1}^2-\psi_{m-2}\psi_{m+1}^2)\qquad(m\ge 3),\\
\psi_{2m+1}&=\psi_{m+2}\psi_m^3-\psi_{m-1}\psi_{m+1}^3 \hspace{70pt}(m\ge 2).
\end{align*}
Let $\phi_1=x$ and $\omega_1=y$, and for integers $n>1$ define
\begin{align*}
\phi_m &=x\psi_m^2-\psi_{m+1}\psi_{m-1},\\
\omega_m &=\frac{1}{4y}(\psi_{m+2}\psi_{m-1}^2-\psi_{m-2}\psi_{m+1}^2).
\end{align*}
 It is a straight-forward exercise (which you are not required to do) to show that these polynomials have the form
\begin{align*}
\phi_n(x) &= x^{n^2} +\  \cdots,\\
\omega_n(x,y) &=
\begin{cases}
y(x^{3(n^2-1)/2} +\  \cdots)\qquad &n \text{ odd},\\
x^{3n^2/2} +\  \cdots\qquad&n \text { even},\\
\end{cases}\\
\psi_n(x,y) &=
\begin{cases}
nx^{(n^2-1)/2} +\  \cdots\qquad& n \text{ odd},\\
y(nx^{(n^2-4)/2} +\  \cdots)\qquad &n \text { even},\\
\end{cases}
\end{align*}
where each ellipsis denotes terms of lower degree in $x$.
\bigskip

\noindent
In practical applications it is more convenient to work with the univariate polynomials
\[
f_n(x) = \begin{cases}
\psi_n\qquad&n \text{ odd},\\
\psi_n/\psi_2&n \text{ even}.\\
\end{cases}
\]
Note that $\psi_2=2y$, and it follows from the formulas above that $f_n$ does not depend on~$y$.  If $P=(x_0,y_0)$ is
a point on the elliptic curve $y^2=x^3+Ax+B$ with $y_0\ne 0$ (so $P$ is not a 2-torsion point), then $f_n(x_0)=0$ if and only if $nP=0$.
In this problem you will develop an efficient algorithm to compute $f_n$.

\begin{enumerate}[{\bf (a)}]
\item Let $F(x)=4(x^3+Ax+B)$.  Using the recursion formulas for $\psi_{2m}$ and $\psi_{2m+1}$, derive recursion formulas for $f_{2m}$ and $f_{2m+1}$ that involve $f_{m-2},\ldots,f_{m+2}$ and $F$.  Note that for $f_{2m+1}$ you will need to distinguish the cases where $m$ is odd and even.
\item Show that for any $k\ge 3$, if you are given the polynomials $f_{k-3},\ldots,f_{k+5}$ and $F$, you can compute the polynomials
$f_{2k-3},\ldots,f_{2k+5}$ (call this \emph{doubling}), and you can also compute the polynomials $f_{2(k+1)-3},\ldots,f_{2(k+1)+5}$ (call this \emph{doubling-and-adding}).
\item Implement an algorithm that, given a positive integer $n$, a prime $p$, and coefficients $A$ and $B$, computes the division polynomial $f_n\in\Fp[x]$ for the elliptic curve $E/\Fp$ defined by $y^2=x^3+Ax+B$, using a left-to-right binary exponentiation approach.
Here are a few tips, but you are free to use any design you like.
\begin{itemize}
\item
Work in the polynomial ring $\Fp[x]$, which you can create in Sage by typing \texttt{R.<x>=PolynomialRing(GF(p))}.
Note that $A$ and $B$ are now scalars in $\Fp$, not variables.  Precompute $F=4(x^3+Ax+B)\in\Fp[x]$.
\item 
You need an initial vector of division polynomials $v=[f_{k-3},\ldots,f_{k+5}]$ to get started.
If the leading two bits of $n$ are ``11", then let $v=[f_0,\ldots,f_8]$ and $k=3$. Otherwise, let $[f_1,\ldots,f_9]$ and $k=4$ if the top three bits of $n$ are ``100", and let $v = [f_2,\ldots,f_{10}]$ and $k=5$ if the top three bits of $n$ are ``101".
\item
Implement a function that, given $k$, $v=[f_{k-3},\ldots,f_{k+5}]$, $F$, and a bit $b$, computes $k'=2k+b$ and $v=[f_{k'-3},\ldots,f_{k'+5}]$.  To perform left-to-right binary exponentiation, call this function repeatedly, passing in the bits of $n$ starting from either 2 or 3 bits from in the top and working down to the low order bit.
\item
To test your code, you can compare results with Sage, which already knows how to compute $f_n$, via
\begin{lstlisting}
FF=GF(p); R.<x>=PolynomialRing(FF)
E=EllipticCurve([FF(A),FF(B)])
E.division_polynomial(n,x,0)
\end{lstlisting}
\item
Your program should be quite fast, but be careful not to test it with values of $n$ that are too large --- the degree of $f_n$ is quadratic in $n$, so if $n$ is, say, a million, you would need several terabytes of memory to store $f_n$.
\end{itemize}
\item
Analyze the asymptotic complexity (in terms of time and space) of your program as a function of $\log p$ and $n$.
Use $\M(b)$ to denote the time to multiply two $b$-bit integers.

\item
Modify your program so that it performs its computations modulo $x^7$ (to compute $f(x)\bmod x^7$ in Sage use \texttt{f.mod(x\^{}7)}).
Now let $A$ be the least prime greater than the last two digits of your student ID, let $B$ be the least prime greater than the first two digits of your student ID, and let $p=65537$.  Let $E/\Fp$ be the elliptic curve defined by $y^2=x^3+Ax+B$, and let $n=N^{100}+1$, where $N$ is the integer formed by adding the last three digits of your student ID to 9000.
\begin{enumerate}[{\bf (i)}]
\item
Use your modified program to compute $f_n\bmod x^7$ and record the result in your problem set.
Be sure to first test your program with smaller values of $n$ and verify the results with Sage (your answer to this question will be heavily weighted when grading this problem, so please be careful).
\item
Time your program using the \texttt{time} command in Sage.
How long does it take?
\end{enumerate}
\end{enumerate}

\subsection*{Problem 4. Survey}
Complete the following survey by rating each of the problems you attempted on a scale of 1 to~10 according to how interesting you found the problem (1 = ``mind-numbing," 10 = ``mind-blowing"), and how difficult you found the problem (1 = ``trivial," 10 = ``brutal").  Also estimate the time you spent on each problem to the nearest half hour.

\begin{center}
\begin{tabular}{l|r|r|r|}
& Interest & Difficulty & Time Spent\\\hline
Problem 1 & & & \\\hline
Problem 2 & & & \\\hline
Problem 3 & & & \\\hline
\end{tabular}
\end{center}
\noindent
Also, please rate each of the following lectures that you attended, according to the quality of the material (1=``useless", 10=``fascinating"), the presentation (1=``epic fail", 10=``perfection"), the pace (1=``way too slow", 10=``way too fast"), and the novelty of the material (1=``old hat", 10=``all new").

\begin{center}
\begin{tabular}{l|l|r|r|r|r|}
Date & Lecture Topic & Material & Presentation & Pace & Novelty\\\hline
2/19 & Isogenies and endomorphisms & & & & \\\hline 
2/24 & Division polynomials & & & & \\\hline 
\end{tabular}
\end{center}

\noindent
Feel free to record any additional comments you have on the problem sets or lectures.

\begin{thebibliography}{9}
\bibitem{bernstein} D. J. Bernstein, \href{http://www.ams.org/journals/mcom/1998-67-223/S0025-5718-98-00952-1/}{\textit{Detecting perfect powers in essentially linear time}}, Mathematics of Computation \textbf{67} (1998), 1252--1283.
\bibitem{doud} D. Doud, \href{http://link.springer.com/article/10.1007%2FBF02678043}{\textit{A procedure to calculate torsion of elliptic curves over $\Q$}}, Manuscripta Mathematica \textbf{95} (1998), 463--469.
\bibitem{gg} J. von zur Gathen and J. Gerhard, \href{http://ebooks.cambridge.org/ebook.jsf?bid=CBO9781139856065}{\textit{Modern Computer Algebra}}, third edition, Cambridge University Press, 2013.
\bibitem{lutz} E. Lutz, \href{http://gdz.sub.uni-goettingen.de/dms/load/img/?PPN=PPN243919689_0177&DMDID=DMDLOG_0024}{\textit{Sur l'equation $y^2=x^3-ax-b$ dans les corps $p$-adic}}, J. Reine Angew. Math. \textbf{177} (1937), 237--247.
\bibitem{nagell} T. Nagell, \textit{Solution de quelque probl\`{e}mes dans la th\'{e}orie arithm\'{e}tique des cubiques planes du premier genre}, Wid. Akad. Skrifter Oslo I \textbf{1} (1935).
\bibitem{washington}
     L. Washington, \href{http://www.crcnetbase.com/isbn/978-1-4200-7146-7}{\textit{Elliptic curves: Number theory and cryptography}}, second edtion, CRC press, 2008.
\end{thebibliography}
\end{document}