Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: _header_elliptic_curves Class: header Section: elliptic_curves Doc: \section{Elliptic curves} \subsec{Elliptic curve structures} %GPHELPskip An elliptic curve is given by a Weierstrass model\sidx{Weierstrass equation} $$ y^2 + a_1 xy + a_3 y = x^3 + a_2 x^2 + a_4 x + a_6, $$ whose discriminant is nonzero. Affine points on \kbd{E} are represented as two-component vectors \kbd{[x,y]}; the point at infinity, i.e.~the identity element of the group law, is represented by the one-component vector \kbd{[0]}. Given a vector of coefficients $[a_1,a_2,a_3,a_4,a_6]$, the function \tet{ellinit} initializes and returns an \tev{ell} structure. An additional optional argument allows to specify the base field in case it cannot be inferred from the curve coefficients. This structure contains data needed by elliptic curve related functions, and is generally passed as a first argument. Expensive data are skipped on initialization: they will be dynamically computed when (and if) needed, and then inserted in the structure. The precise layout of the \tev{ell} structure is left undefined and should never be used directly. The following \idx{member functions} are available, depending on the underlying domain. \misctitle{All domains} %GPHELPskip \item \tet{a1}, \tet{a2}, \tet{a3}, \tet{a4}, \tet{a6}: coefficients of the elliptic curve. \item \tet{b2}, \tet{b4}, \tet{b6}, \tet{b8}: $b$-invariants of the curve; in characteristic $\neq 2$, for $Y = 2y + a_1x+a3$, the curve equation becomes $$ Y^2 = 4 x^3 + b_2 x^2 + 2b_4 x + b_6 =: g(x). $$ \item \tet{c4}, \tet{c6}: $c$-invariants of the curve; in characteristic $\neq 2,3$, for $X = x + b_2/12$ and $Y = 2y + a_1x+a3$, the curve equation becomes $$ Y^2 = 4 X^3 - (c_4/12) X - (c_6/216). $$ \item \tet{disc}: discriminant of the curve. This is only required to be nonzero, not necessarily a unit. \item \tet{j}: $j$-invariant of the curve. \noindent These are used as follows: \bprog ? E = ellinit([0,0,0, a4,a6]); ? E.b4 %2 = 2*a4 ? E.disc %3 = -64*a4^3 - 432*a6^2 @eprog \misctitle{Curves over $\C$} %GPHELPskip This in particular includes curves defined over $\Q$. All member functions in this section return data, as it is currently stored in the structure, if present; and otherwise compute it to the default accuracy, that was fixed \emph{at the time of ellinit} (via a \typ{REAL} $D$ domain argument, or \kbd{realprecision} by default). The function \tet{ellperiods} allows to recompute (and cache) the following data to \emph{current} \kbd{realprecision}. \item \tet{area}: volume of the complex lattice defining $E$. \item \tet{roots} is a vector whose three components contain the complex roots of the right hand side $g(x)$ of the attached $b$-model $Y^2 = g(x)$. If the roots are all real, they are ordered by decreasing value. If only one is real, it is the first component. \item \tet{omega}: $[\omega_1,\omega_2]$, periods forming a basis of the complex lattice defining $E$. The first component $\omega_1$ is the (positive) real period, in other words the integral of the N\'eron differential $dx/(2y+a_1x+a_3)$ over the connected component of the identity component of $E(\R)$. The second component $\omega_2$ is a complex period, such that $\tau=\dfrac{\omega_1}{\omega_2}$ belongs to Poincar\'e's half-plane (positive imaginary part); not necessarily to the standard fundamental domain. It is normalized so that $\Im(\omega_2) < 0$ and either $\Re(\omega_2) = 0$, when \kbd{E.disc > 0} ($E(\R)$ has two connected components), or $\Re(\omega_2) = \omega_1/2$ \item \tet{eta} is a row vector containing the quasi-periods $\eta_1$ and $\eta_2$ such that $\eta_i = 2\zeta(\omega_i/2)$, where $\zeta$ is the Weierstrass zeta function attached to the period lattice; see \tet{ellzeta}. In particular, the Legendre relation holds: $\eta_2\omega_1 - \eta_1\omega_2 = 2\pi i$. \misctitle{Warning} As for the orientation of the basis of the period lattice, beware that many sources use the inverse convention where $\omega_2/\omega_1$ has positive imaginary part and our $\omega_2$ is the negative of theirs. Our convention $\tau = \omega_1/\omega_2$ ensures that the action of $\text{PSL}_2$ is the natural one: $$[a,b;c,d]\cdot\tau = (a\tau+b)/(c\tau+d) = (a \omega_1 + b\omega_2)/(c\omega_1 + d\omega_2),$$ instead of a twisted one. (Our $\tau$ is $-1/\tau$ in the above inverse convention.) \misctitle{Curves over $\Q_p$} %GPHELPskip We advise to input a model defined over $\Q$ for such curves. In any case, if you input an approximate model with \typ{PADIC} coefficients, it will be replaced by a lift to $\Q$ (an exact model ``close'' to the one that was input) and all quantities will then be computed in terms of this lifted model. For the time being only curves with multiplicative reduction (split or nonsplit), i.e. $v_p(j) < 0$, are supported by nontrivial functions. In this case the curve is analytically isomorphic to $\bar{\Q}_p^*/q^\Z := E_q(\bar{\Q}_p)$, for some $p$-adic integer $q$ (the Tate period). In particular, we have $j(q) = j(E)$. \item \tet{p} is the residual characteristic \item \tet{roots} is a vector with a single component, equal to the $p$-adic root $e_1$ of the right hand side $g(x)$ of the attached $b$-model $Y^2 = g(x)$. The point $(e_1,0)$ corresponds to $-1 \in \bar{\Q}_p^*/q^\Z$ under the Tate parametrization. \item \tet{tate} returns $[u^2,u,q,[a,b],Ei,L]$ in the notation of Henniart-Mestre (CRAS t. 308, p.~391--395, 1989): $q$ is as above, $u\in \Q_p(\sqrt{-c_6})$ is such that $\phi^* dx/(2y + a_1x+a3) = u dt/t$, where $\phi: E_q\to E$ is an isomorphism (well defined up to sign) and $dt/t$ is the canonical invariant differential on the Tate curve; $u^2\in\Q_p$ does not depend on $\phi$. (Technicality: if $u\not\in\Q_p$, it is stored as a quadratic \typ{POLMOD}.) The parameters $[a,b]$ satisfy $4u^2 b \cdot \text{agm}(\sqrt{a/b},1)^2 = 1$ as in Theorem~2 (\emph{loc.~cit.}). \kbd{Ei} describes the sequence of 2-isogenous curves (with kernel generated by $[0,0]$) $E_i: y^2=x(x+A_i)(x+A_i-B_i)$ converging quadratically towards the singular curve $E_\infty$. Finally, $L$ is Mazur-Tate-Teitelbaum's ${\cal L}$-invariant, equal to $\log_p q / v_p(q)$. \misctitle{Curves over $\F_q$} %GPHELPskip \item \tet{p} is the characteristic of $\F_q$. \item \tet{no} is $\#E(\F_q)$. \item \tet{cyc} gives the cycle structure of $E(\F_q)$. \item \tet{gen} returns the generators of $E(\F_q)$. \item \tet{group} returns $[\kbd{no},\kbd{cyc},\kbd{gen}]$, i.e. $E(\F_q)$ as an abelian group structure. \misctitle{Curves over $\Q$} %GPHELPskip All functions should return a correct result, whether the model is minimal or not, but it is a good idea to stick to minimal models whenever $\gcd(c_4,c_6)$ is easy to factor (minor speed-up). The construction \bprog E = ellminimalmodel(E0, &v) @eprog\noindent replaces the original model $E_0$ by a minimal model $E$, and the variable change $v$ allows to go between the two models: \bprog ellchangepoint(P0, v) ellchangepointinv(P, v) @eprog\noindent respectively map the point $P_0$ on $E_0$ to its image on $E$, and the point $P$ on $E$ to its pre-image on $E_0$. A few routines --- namely \tet{ellgenerators}, \tet{ellidentify}, \tet{ellsearch}, \tet{forell} --- require the optional package \tet{elldata} (John Cremona's database) to be installed. In that case, the function \tet{ellinit} will allow alternative inputs, e.g.~\kbd{ellinit("11a1")}. Functions using this package need to load chunks of a large database in memory and require at least 2MB stack to avoid stack overflows. \item \tet{gen} returns the generators of $E(\Q)$, if known (from John Cremona's database) \misctitle{Curves over number fields} %GPHELPskip \item \tet{nf} return the \var{nf} structure attached to the number field over which $E$ is defined. \item \tet{bnf} return the \var{bnf} structure attached to the number field over which $E$ is defined or raise an error (if only an \var{nf} is available). \item \tet{omega}, \tet{eta}, \tet{area}: vectors of complex periods, quasi-periods and lattice areas attached to the complex embeddings of $E$, in the same order as \kbd{E.nf.roots}. \subsec{Reduction} %GPHELPskip Let $E$ be a curve defined over $\Q_p$ given by a $p$-integral model; if the curve has good reduction at $p$, we may define its reduction $\tilde{E}$ over the finite field $\F_p$: \bprog ? E = ellinit([-3,1], O(5^10)); \\ @com $E/\Q_5$ ? Et = ellinit(E, 5) ? ellcard(Et) \\ @com $\tilde{E}/\F_5$ has 7 points %3 = 7 ? ellinit(E, 7) *** at top-level: ellinit(E,7) *** ^------------ *** ellinit: inconsistent moduli in ellinit: 5 != 7 @eprog\noindent Likewise, if a curve is defined over a number field $K$ and $\goth{p}$ is a maximal ideal with finite residue field $\F_q$, we define the reduction $\tilde{E}/\F_q$ provided $E$ has good reduction at $\goth{p}$. $E/\Q$ is an important special case: \bprog ? E = ellinit([-3,1]); ? factor(E.disc) %2 = [2 4] [3 4] ? Et = ellinit(E, 5); ? ellcard(Et) \\ @com $\tilde{E} / \F_5$ has 7 points %4 = 7 ? ellinit(E, 3) \\ bad reduction at 3 %5 = [] @eprog\noindent General number fields are similar: \bprog ? K = nfinit(x^2+1); E = ellinit([x,x+1], K); ? idealfactor(K, E.disc) \\ three primes of bad reduction %2 = [ [2, [1, 1]~, 2, 1, [1, -1; 1, 1]] 10] [ [5, [-2, 1]~, 1, 1, [2, -1; 1, 2]] 2] [[5, [2, 1]~, 1, 1, [-2, -1; 1, -2]] 2] ? P = idealprimedec(K, 3); \\ a prime of good reduction ? idealnorm(K, P) %4 = 9 ? Et = ellinit(E, P); ? ellcard(Et) \\ @com $\tilde{E} / \F_9$ has 4 points %6 = 4 @eprog\noindent If the model is not locally minimal at $\goth{p}$, the above will fail: \kbd{elllocalred} and \kbd{ellchangecurve} allow to reduce to that case. Some functions such as \kbd{ellap}, \kbd{ellcard}, \kbd{ellgroup} and \kbd{ellissupersingular} even implicitly replace the given equation by a local minimal model and consider the group of nonsingular points $\tilde{E}^{ns}$ so they make sense even when the curve has bad reduction.