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
