# Revision history [back]

The elliptic curve functionality is restricted on general fields, for instance:

sage: R.<t> = QQ[]
sage: F = R.fraction_field()
sage: E = EllipticCurve(F, [1, t + t^3])
sage: E.point( (-t,0) )
(-t : 0 : 1)
sage: P = E.point( (-t,0) )
sage: P.is_finite_order()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-39-27a368cc0c53> in <module>()
----> 1 P.is_finite_order()
::::: many lines
NotImplementedError: Computation of order of a point not implemented over general fields.


I took above a simpler curve with an obvious torsion point.

Even the method is_finite_order failed to be executed.

Although in the above case we can at least see that $2P$ is $0$, if we ask for it:

sage: 2*P
(0 : 1 : 0)
sage: 2*P == E(0)
True


So if we get problems with the method is_finite_order, asking for the rank and/or for generators...

We can still use sage (and the own devices) to study the posted curve. After a quick pessimistic search of a polynomial $x=x(t)$ (divided by a power of $t$ maybe), such that $x^3 + t^4x + (t^3+t)$ should at least have an even order of $t$, i've got an optimistic point of view, that there should be no point on the curve $$y^2 = x^3 + t^4 + (t^3+t)\ .$$ Why? Since if there would be one, say $(x,y) = (\ P_x(t)/Q_x(t)\ ,\ P_y(t)/Q_y(t)\ )$, then using specialization (not everywhere defined) morphisms $\mathbb{Q}(t)\to\mathbb{Q}$, $t\to t_0$ we would get some rational points on the elliptic curves defined over $\mathbb Q$, $$y^2 = x^3 + t_0^4 + (t_0^3+t_0)\ .$$ Unless there is a division by zero in the one or the other denominator, when specializing $t$ to $t_0$. But even so, the denominators would have been already very complicated, since...

# for t0 in [ -29..29 ]:
for t0 in [ -25, -24, -20, -8, -3, -2, 2, 8, 12, 18, 22, 24, 29 ]:
try:
E = EllipticCurve( QQ, ( t0^4, t0^3 + t0 ) )
ETP = E.torsion_points()
if len( ETP ) > 1:
print "... t0 = %3s | rank = ? | torsion points = %s" % ( t0, ETP )
continue
r = E.rank()
if r > 0:
print "... t0 = %3s | rank = %s | torsion points = %s" % ( t0, r, ETP )
continue
print "*** t0 = %3s | rank = %s | torsion points = %s" % ( t0, r, ETP )
except Exception:
pass


And we get:

*** t0 = -25 | rank = 0 | torsion points = [(0 : 1 : 0)]
*** t0 = -24 | rank = 0 | torsion points = [(0 : 1 : 0)]
*** t0 = -20 | rank = 0 | torsion points = [(0 : 1 : 0)]
*** t0 =  -8 | rank = 0 | torsion points = [(0 : 1 : 0)]
*** t0 =  -3 | rank = 0 | torsion points = [(0 : 1 : 0)]
*** t0 =  -2 | rank = 0 | torsion points = [(0 : 1 : 0)]
*** t0 =   2 | rank = 0 | torsion points = [(0 : 1 : 0)]
*** t0 =   8 | rank = 0 | torsion points = [(0 : 1 : 0)]
*** t0 =  12 | rank = 0 | torsion points = [(0 : 1 : 0)]
*** t0 =  18 | rank = 0 | torsion points = [(0 : 1 : 0)]
*** t0 =  22 | rank = 0 | torsion points = [(0 : 1 : 0)]
*** t0 =  24 | rank = 0 | torsion points = [(0 : 1 : 0)]
*** t0 =  29 | rank = 0 | torsion points = [(0 : 1 : 0)]


So an "unexpected" $\mathbb{Q}(t)$-rational point on $E$ is comming - in view of our first (naive) sieve - with denominators containing the factor $$Q=(t+25)(t+24)(t+20)(t+8)(t+3)(t+2)(t-2)(t-8)(t-12)(t-18)(t-22)(t-24)(t-29)\ .$$ (In fact $Q^2$ and $Q^3$ in $x$ and $y$.) This is not much, from an algorithmic point of view, but a good start.

For a family with one generating point $P(x(t),y(t)), we can still use the specialization to "guess"$P$. The elliptic curve functionality is restricted on general fields, for instance: sage: R.<t> = QQ[] sage: F = R.fraction_field() sage: E = EllipticCurve(F, [1, t + t^3]) sage: E.point( (-t,0) ) (-t : 0 : 1) sage: P = E.point( (-t,0) ) sage: P.is_finite_order() --------------------------------------------------------------------------- NotImplementedError Traceback (most recent call last) <ipython-input-39-27a368cc0c53> in <module>() ----> 1 P.is_finite_order() ::::: many lines NotImplementedError: Computation of order of a point not implemented over general fields.  I took above a simpler curve with an obvious torsion point. Even the method is_finite_order failed to be executed. Although in the above case we can at least see that$2P$is$0$, if we ask for it: sage: 2*P (0 : 1 : 0) sage: 2*P == E(0) True  So if we get problems with the method is_finite_order, asking for the rank and/or for generators... We can still use sage (and the own devices) to study the posted curve. After a quick pessimistic search of a polynomial$x=x(t)$(divided by a power of$t$maybe), such that$x^3 + t^4x + (t^3+t)$should at least have an even order of$t$, i've got an optimistic point of view, that there should be no point on the curve $$y^2 = x^3 + t^4 + (t^3+t)\ .$$ Why? Since if there would be one, say$(x,y) = (\ P_x(t)/Q_x(t)\ ,\ P_y(t)/Q_y(t)\ )$, then using specialization (not everywhere defined) morphisms$\mathbb{Q}(t)\to\mathbb{Q}$,$t\to t_0$we would get some rational points on the elliptic curves defined over$\mathbb Q$, $$y^2 = x^3 + t_0^4 + (t_0^3+t_0)\ .$$ Unless there is a division by zero in the one or the other denominator, when specializing$t$to$t_0$. But even so, the denominators would have been already very complicated, since... # for t0 in [ -29..29 ]: for t0 in [ -25, -24, -20, -8, -3, -2, 2, 8, 12, 18, 22, 24, 29 ]: try: E = EllipticCurve( QQ, ( t0^4, t0^3 + t0 ) ) ETP = E.torsion_points() if len( ETP ) > 1: print "... t0 = %3s | rank = ? | torsion points = %s" % ( t0, ETP ) continue r = E.rank() if r > 0: print "... t0 = %3s | rank = %s | torsion points = %s" % ( t0, r, ETP ) continue print "*** t0 = %3s | rank = %s | torsion points = %s" % ( t0, r, ETP ) except Exception: pass  And we get: *** t0 = -25 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = -24 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = -20 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = -8 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = -3 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = -2 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 2 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 8 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 12 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 18 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 22 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 24 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 29 | rank = 0 | torsion points = [(0 : 1 : 0)]  So an "unexpected"$\mathbb{Q}(t)$-rational point on$E$is comming - in view of our first (naive) sieve - with denominators containing the factor $$Q=(t+25)(t+24)(t+20)(t+8)(t+3)(t+2)(t-2)(t-8)(t-12)(t-18)(t-22)(t-24)(t-29)\$$\small Q=(t+25)(t+24)(t+20)(t+8)(t+3)(t+2)(t-2)(t-8)(t-12)(t-18)(t-22)(t-24)(t-29)\ .$$(In fact Q^2 and Q^3 in x and y.) This is not much, from an algorithmic point of view, but a good start. For a family with one generating point P(x(t),y(t)), A(x(t),y(t)), we can still use the specialization to "guess" P.A. The elliptic curve functionality is restricted on general fields, for instance: sage: R.<t> = QQ[] sage: F = R.fraction_field() sage: E = EllipticCurve(F, [1, t + t^3]) sage: E.point( (-t,0) ) (-t : 0 : 1) sage: P = E.point( (-t,0) ) sage: P.is_finite_order() --------------------------------------------------------------------------- NotImplementedError Traceback (most recent call last) <ipython-input-39-27a368cc0c53> in <module>() ----> 1 P.is_finite_order() ::::: many lines NotImplementedError: Computation of order of a point not implemented over general fields.  I took above a simpler curve with an obvious torsion point. Even the method is_finite_order failed to be executed. Although in the above case we can at least see that 2P is 0, if we ask for it: sage: 2*P (0 : 1 : 0) sage: 2*P == E(0) True  So if we get problems with the method is_finite_order, asking for the rank and/or for generators... We can still use sage (and the own devices) to study the posted curve. After a quick pessimistic search of a polynomial x=x(t) (divided by a power of t maybe), such that x^3 + t^4x + (t^3+t) should at least have an even order of t, i've got an optimistic point of view, that there should be no point on the curve$$ y^2 = x^3 + t^4 t^4x + (t^3+t)\ . $$Why? Since if there would be one, say (x,y) = (\ P_x(t)/Q_x(t)\ ,\ P_y(t)/Q_y(t)\ ), then using specialization (not everywhere defined) morphisms \mathbb{Q}(t)\to\mathbb{Q}, t\to t_0 we would get some rational points on the elliptic curves defined over \mathbb Q,$$ y^2 = x^3 + t_0^4 t_0^4x + (t_0^3+t_0)\ . $$Unless there is a division by zero in the one or the other denominator, when specializing t to t_0. But even so, the denominators would have been already very complicated, since... # for t0 in [ -29..29 ]: for t0 in [ -25, -24, -20, -8, -3, -2, 2, 8, 12, 18, 22, 24, 29 ]: try: E = EllipticCurve( QQ, ( t0^4, t0^3 + t0 ) ) ETP = E.torsion_points() if len( ETP ) > 1: print "... t0 = %3s | rank = ? | torsion points = %s" % ( t0, ETP ) continue r = E.rank() if r > 0: print "... t0 = %3s | rank = %s | torsion points = %s" % ( t0, r, ETP ) continue print "*** t0 = %3s | rank = %s | torsion points = %s" % ( t0, r, ETP ) except Exception: pass  And we get: *** t0 = -25 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = -24 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = -20 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = -8 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = -3 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = -2 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 2 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 8 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 12 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 18 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 22 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 24 | rank = 0 | torsion points = [(0 : 1 : 0)] *** t0 = 29 | rank = 0 | torsion points = [(0 : 1 : 0)]  So an "unexpected" \mathbb{Q}(t)-rational point on E is comming - in view of our first (naive) sieve - with denominators containing the factor$$\small Q=(t+25)(t+24)(t+20)(t+8)(t+3)(t+2)(t-2)(t-8)(t-12)(t-18)(t-22)(t-24)(t-29)\ .$$(In fact$Q^2$and$Q^3$in$x$and$y$.) This is not much, from an algorithmic point of view, but a good start. For a family with one generating point$A(x(t),y(t))$, we can still use the specialization to "guess"$A\$.