Hello Jack!

Heights are definitely implemented over number fields, but there is
still one comment a the top of elliptic_curves/ell_point.py which says
the contrary, so it's just an unfortunate documentation glitch.
What's not yet implemented over number fields is height *bounds*, i.e.
bounds between naive and canonical height.  There's a 3-digit trac
ticket for this but no-one has got around to it.

You can see examples in the reference manual at

http://www.sagemath.org/doc/reference/sage/schemes/elliptic_curves/ell_point.html

As for your example, try defining the number fields using a monic
integer polynomial and see if that helps.

John

On Jul 29, 7:45 pm, jack <[email protected]> wrote:
> On Jul 29, 12:03 am, William Stein <[email protected]> wrote:
>
>
>
>
>
>
>
>
>
> > On Thursday, July 28, 2011, Jack Fearnley <[email protected]> wrote:
> > > I read in the help that heights have only been implemented for elliptic
>
> > curves over the rationals.  My research involves computing heights of
> > algebraic points on elliptic curves and I have been using Magma for this.
>
> > > A colleague of mine claimed that Sage could compute heights over number
>
> > fields and demonstrated with example 2 from Siverman's 1988 paper*
>
> > > I confirmed this on my Sage (version 4.6.2) and also successfully
>
> > reproduced example 1.
>
> > > Suitably encouraged, I attempted to compute some heights on E37b over a
>
> > cyclic cubic extension and failed with error messages.
>
> > > Is anyone working on implementing this functionality?
> > > Can anyone explain why Silverman's examples work?
>
> > My understanding is that heights over number fields are fully implemented in
> > Sage and have been for *years*.   What doc says otherwise?  What exactly
> > fails?  Post an exact session.
>
> > > Best wishes,
> > >                     Jack Fearnley
>
> > > * Computing Heights on Elliptic Curves
> > > Math. Comp. vol 51 No 183 (Jul 1988) pp 339-358
> > >http://www.jstor.org/pss/2008597
>
> > > --
> > > To post to this group, send email to [email protected]
> > > To unsubscribe from this group, send email to
>
> > [email protected]> For more options, visit this 
> > group at
>
> >http://groups.google.com/group/sage-support
>
> > > URL:http://www.sagemath.org
>
> > --
> > William Stein
> > Professor of Mathematics
> > University of Washingtonhttp://wstein.org
>
> Thanks for your prompt reply.  I must have triggered some old
> documentation which said heights were not implemented over number
> fields but now I cannot find it.  Anything I can find says they are
> implemented!  My apologies.
>
> I would still like to know why my example fails.  Perhaps the curve
> ceases to be minimal?  The following sample compute two heights. the
> first, with r=1 seems to work.  The second, with r=2, fails with a
> long traceback ending with a Pari error code.
>
> ----------------------------------------------------------------------
> | Sage Version 4.6.2, Release Date: 2011-02-25                       |
> | Type notebook() for the GUI, and license() for information.        |
> ----------------------------------------------------------------------
> sage:  r=1
> sage: sage: u1=7*r^2+12*r+9
> sage: sage: u2=9*r^2-12*r+7
> sage: sage: ur=u1/u2;ur
> 7
> sage: sage: Kr.<a>=NumberField(x^3-ur-4*ur*x-ur^2);Kr
> Number Field in a with defining polynomial x^3 - 28*x - 56
> sage: sage: E37r=EllipticCurve(Kr,[4,0,1,0,0]);E37r
> Elliptic Curve defined by y^2 + 4*x*y + y = x^3 over Number Field in a
> with defining polynomial x^3 - 28*x - 56
> sage: sage: Pr=E37r(a,ur)
> sage: sage: Pr
> (a : 7 : 1)
> sage: sage: Pr.height()/2
> 0.687081703215067
> sage: r=2
> sage: u1=7*r^2+12*r+9
> sage: sage: u2=9*r^2-12*r+7
> sage: sage: ur=u1/u2;ur
> 61/19
> sage: sage: Kr.<a>=NumberField(x^3-ur-4*ur*x-ur^2);Kr
> Number Field in a with defining polynomial x^3 - 244/19*x - 4880/361
> sage: sage: E37r=EllipticCurve(Kr,[4,0,1,0,0]);E37r
> Elliptic Curve defined by y^2 + 4*x*y + y = x^3 over Number Field in a
> with defining polynomial x^3 - 244/19*x - 4880/361
> sage: sage: Pr=E37r(a,ur)
> sage: sage: Pr
> (a : 61/19 : 1)
> sage: sage: Pr.height()/2
> ---------------------------------------------------------------------------
> PariError                                 Traceback (most recent call
> last)
>
> /home/jack/<ipython console> in <module>()
>
> /home/jack/Tools/sage-4.6.2-linux-64bit-ubuntu_10.04.1_lts-x86_64-
> Linux/local/lib/python2.6/site-packages/sage/schemes/elliptic_curves/
> ell_point.pyc in height(self, precision)
>    1934
>    1935         """
> -> 1936         if self.has_finite_order():
>    1937             return rings.QQ(0)
>    1938
>
> /home/jack/Tools/sage-4.6.2-linux-64bit-ubuntu_10.04.1_lts-x86_64-
> Linux/local/lib/python2.6/site-packages/sage/schemes/elliptic_curves/
> ell_point.pyc in has_finite_order(self)
>    1542         """
>    1543         if self.is_zero(): return True
> -> 1544         return self.order() != oo
>    1545
>    1546     def has_infinite_order(self):
>
> /home/jack/Tools/sage-4.6.2-linux-64bit-ubuntu_10.04.1_lts-x86_64-
> Linux/local/lib/python2.6/site-packages/sage/schemes/elliptic_curves/
> ell_point.pyc in order(self)
>    1509             N = E._torsion_order
>    1510         except AttributeError:
> -> 1511             N = E._torsion_bound()
>    1512
>    1513         # Now self is a torsion point iff it is killed by N:
>
> /home/jack/Tools/sage-4.6.2-linux-64bit-ubuntu_10.04.1_lts-x86_64-
> Linux/local/lib/python2.6/site-packages/sage/schemes/elliptic_curves/
> ell_number_field.pyc in _torsion_bound(self, number_of_places)
>    1379         k = 0
>    1380         K = E.base_field()
> -> 1381         OK = K.ring_of_integers()
>    1382         disc = E.discriminant()
>    1383         p = Integer(1)
>
> /home/jack/Tools/sage-4.6.2-linux-64bit-ubuntu_10.04.1_lts-x86_64-
> Linux/local/lib/python2.6/site-packages/sage/rings/number_field/
> number_field_base.so in
> sage.rings.number_field.number_field_base.NumberField.ring_of_integers
> (sage/rings/number_field/number_field_base.c:1310)()
>
> /home/jack/Tools/sage-4.6.2-linux-64bit-ubuntu_10.04.1_lts-x86_64-
> Linux/local/lib/python2.6/site-packages/sage/rings/number_field/
> number_field.pyc in maximal_order(self, v)
>    5410             pass
>    5411
> -> 5412         B = map(self, self._pari_integral_basis(v = v))
>    5413
>    5414         if len(v) == 0 or v is None:
>
> /home/jack/Tools/sage-4.6.2-linux-64bit-ubuntu_10.04.1_lts-x86_64-
> Linux/local/lib/python2.6/site-packages/sage/rings/number_field/
> number_field.pyc in _pari_integral_basis(self, v)
>    3827             f = self.pari_polynomial()
>    3828             if len(v) == 0:
> -> 3829                 B = f.nfbasis(1 if self._assume_disc_small
> else 0)
>    3830             else:
>    3831                 m = self._pari_disc_factorization_matrix(v)
>
> /home/jack/Tools/sage-4.6.2-linux-64bit-ubuntu_10.04.1_lts-x86_64-
> Linux/local/lib/python2.6/site-packages/sage/libs/pari/gen.so in
> sage.libs.pari.gen._pari_trap (sage/libs/pari/gen.c:46023)()
>
> PariError:  (5)
> sage:

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org

Reply via email to