4751
Comment:

13034

Deletions are marked like this.  Additions are marked like this. 
Line 2:  Line 2: 
Project ideas for [:days4:SAGE Days 4].  
Line 3:  Line 4: 
Project ideas for [:days4: SAGE Days 4].  At some point a day or 2 before SD4, we'll have to: flesh these out more and print up the result in a nice latex document for everybody. Then when people choose actual projects, they will create subpages on the wiki to track their progress, etc. 
Line 5:  Line 6: 
* Nick Alexander: I'd like to implement some basic linear algebra over Z/nZ, following perhaps ``Algorithms for Linear Algebra Problems over Principal Ideal Rings'' (1996), Johannes Buchmann, Stefan Neis at http://citeseer.ist.psu.edu/719844.html. I'm also very interested in working on the commutative diagram coercion model proposed by David Roe.  * W Stein: Go through all the standard SAGE packages and, when possible, '''add an spkgcheck''', which runs some sort of analogue of "make check" when possible. * W Stein: '''Documentation'''. Have teams describe how to do the following in tutorial fashion, with all examples automatically doctested: * Use dsage to task farm a couple of standard example problems. * Use SageX to create an interface to a C library (case study  GMPECM). * Convert a program from .sage files to .py library code. * Convert a .py Python program to SageX for speed. * Create publicationquality graphics for inclusion in latex documents. * Port code from Magma to SAGE. * Make an existing PARIGP / GAP / Singular / Lisp / Maxima program easily usable from SAGE. * M Albrecht: Go through the wiki and clean it up, write more documentation, and check what content should be added to the documentation * W Stein: Implement a global '''proof = True''' or '''proof = False''' option that is queried by algorithms when proof=None. * David Roe: General elliptic curve '''height bound''' code (port Cremona's GPL'd MAGMA code to SAGE.) * W Stein: Implement '''Tate's algorithm over number fields''' (again, this involves porting Cremona's GPL'd MAGMA code to SAGE). * W Stein, Tom Boothby, Dorian Raymer, Alex Clemesha, and Yi Qiang: Improve '''The SAGE Notebook''': 1. Convert the web server so that it uses twisted's multithreaded server (either twisted web like moinmoin or twisted web2) 1. Make it so that the server use https to secure all communications and logins 1. Figure out precisely why the notebook feels sluggish when running locally on _certain_ platforms. Consider removing features in the interest of speed. Also seriously consider making it so maybe 3 SAGE instances are prestarted by the notebook server when it is fairly idle so that new worksheets appear to starting working immediately. 1. Make it so each user of the notebook has an account on the notebook, and can only see worksheets that are explicitly shared by other users. Worksheet names would internally be prefaced with the user name. 1. Interface issues: 1. Highlighting a block of text and pressing tab indents it four spaces; similarly, pressing shifttab dedents it four spaces. 1. Uploading a worksheet should not display an empty page. 1. Create a worksheet settings panel; use this to: 1. Set the math software system used to evaluate cells 1. Determine whether pressing shiftenter jumps to the next cell or stays in current one. 1. Determine whether or not the side bar is displayed (the left button wall could still be used to toggle it). 1. In the notebook some input cell should *always* have focus, if this is possible. I hate typing into a worksheet and having random movement happen. 1. Create a notebook settings panel: 1. Whether or not panel is displayed by default 2. Whether shift enter or enter evaluates a cell (Mathematica or Maple mode) 3. Default CAS for new worksheets. 4. Whether or not SAGE logo at top left is displayed (or another log is displayed in its place, which is copied to .sage when selected). 1. Change "slideshow mode" to "single cell mode". Make it so the editor in this mode is a fullfledged code editor. 1. Slideshow mode should flip through slides, which should be welldefined sections of the worksheet. 1. Printing needs to be rewritten as follows: Given a single worksheet, print it by (1) saving it to a latex file with embedded (vector, if possible) images, and (2) running pdflatex on the result, then return the resulting pdf file and/or a tarball with the images and latex. This would be very high quality, and will also be something that would be easily included in latex documents. Printing a notebook (=all worksheets owned by a given user) would create a document with a section for each notebook. 1. Rewrite saving/loading of worksheets, so it doesn't use pickle. Instead use the {{{'}}}'s text encoding and the images in directories. 1. Finish implementing the html/edit mode: (1) images shouldn't get deleted on saving, (2) inserting new cells shouldn't be broken, and (3) it would be really nice, and probably easy, to have a WYSIWYG html editor mode like the one in moinmoin in which I'm writing this right now. 1. Fix the bug where variables aren't listed in the sidebar. 1. Implement correct tab completion in the worksheet when in systemotherthansage mode (i.e., don't put magma.foo[tab]) 1. Add support for user javascript in the worksheet cells along with basic graphics (Robert Miller). See http://www.sagemath.org:9002/sage_trac/ticket/359 1. Create an option so that processes that run the actual worksheets can be started as a different user. This will be slower, but could be vastly more robust. With sufficient thought there might be a trick to implement this in a few lines of code. 1. Add a lock button in upper left that looks like a lock. When clicked one can't accidentally navigate away from a worksheet with out confirming. 1. Fix bugs: 1. The interactive help at sagenb.org and sagenb.com often doesn't appear unless one hits refresh a few times. 1. New directory structure / never an sobj. * /notebook * config.txt #config file for notebook in standard config file format * /history * /data (contains objects & stuff) * /codes (contains attachable scripts & stuff) * /worksheets * /_scratch_ (for example) * _scratch_.txt (contains worksheet wiki text + configfile format header) * /cells * /images? * /userinfo (contains SQLite database to control access / session / user stuff & stuff) 1. click & drag on a plot to zoom! PLEASE! 
Line 7:  Line 63: 
* David Joyner: I'm interested in adding functionality to the group theory functionality in SAGE. I'm also interested in coding theory and in particular Robert Miller's work on (now GPL'd) Leon's partition backtracking programs.  
Line 9:  Line 64: 
* 3d Graphics (Kirsten Fagnan) * Numerical Methods (Kirsten Fagnan) * pAdic Arithmetic: Design and implement highly optimized algorithms for arithmetic with padic numbers. The current implementation is already extensive, containing a wide range of different models of padic arithmetic (capped relative, capped absolute, lazy, extensions, etc.) but many new algorithms need to be developed, especially for arithmetic with polynomials over the padics, for padic linear algebra, for computing in the lattice of extensions of a padic ring, and for computing with completions of a number field. (This project started at SAGE Days 2, and has been very actively pursued, especially by David Roe during the last 7 months.) * Applications of MonskyWashnitzer Cohomology: Investigate algorithms for fast point counting on elliptic and hyperelliptic curves, computation of padic height pairings, and computations of padic Coleman integrals. This project began in 2006 at an MSRI workshop, and has been an active area of work during the last year by Kiran Kedlaya, David Harvey, and Robert Bradshaw. In particular, Harvey has recently developed new algorithms that will be explored at the workshop, which allow for new efficient point counting on Jacobians of hyperelliptic curves, Bradshaw and Kedlaya have implemented Coleman integration which has application to the study of rational points on curves, and Stein has been investigating padic analogues of the Birch and SwinnertonDyer conjecture in many new cases using a new algorithm for computing padic heights. * Quaternion Algebra Arithmetic and Modular Forms: Create and implement algorithms for efficient arithmetic in quaternion algebras, and apply this work to computation of Hecke operators, modular forms, Tamagawa numbers of modular abelian varieties, and enumeration of elliptic curves of large conductor. Gonzalo Tornaria has long worked in this area, and William Stein is working with David Kohel and Lassina Dembele on the design of better algorithms. * Distributed Parallel Computation: Continuing a major trend started at the MSRI workshop in January 2007 on parallel computation, participants will design algorithms for parallel distributed integer factorization, computation of Hecke eigenvalues, and other algorithms. In particular, participants will explore several of the other ideas listed above in the context of parallel computation. Implementing these algorithms will likely vastly improve the stability and reliability of distributed computation in SAGE. * Optimized Polynomial Arithmetic: David Harvey and Bill Hart (Postdoc, Warwick) have recently created and implemented what is by far the world’s fastest code for univariate polynomial arithmetic. Explore how to fill in the remaining gaps in order to make the results of their work easily available to a larger user community. Similarly, Tom Boothby has worked for about 9 months on algorithms for very fast evaluation of polynomials at points, and another project will be to explore how to deploy this. * Commutative Diagram Coercion Model: The current SAGE coercion model has some advantages (speed, ability to override for new classes) but also some issues. A user is not able to override the coercion system at runtime and use their own coercion maps (this could be incredibly useful for polynomials, or systems of field extensions). It is difficult to get a systemwide picture of what coercion maps exist: as SAGE grows, this will introduce bugs when the rules for transitivity of coercion are not followed. It is also difficult, though not impossible, to implement coercion systems where the computation of the coercion map requires effort (creating a coercion map from GF(7^8) > GF(7^24)). I want to discuss a new coercion model, either replacing over built on top of the old, that addresses these problems. Currently I have some ideas for a system based on commutative diagrams, but I want to brainstorm some more before implementing it. This project will include discussions on ways to improve category theory in SAGE. 
* W Stein: Continue to flesh out ideas for '''JSAGE  the open source math software journal'''. I announced JSAGE at SD3, and it's been very interesting to see it start to take off. It's critical that we actually *write* some code to manage JSAGE, and figure out how to really do it right  much more work is needed. In particular, a good way of dealing with code submissions from people that don't know much about SAGE development, but have awesome code and ideas to contribute. * Nick Alexander (from UCI) and Thea (from SFU): I'd like to implement some basic''' linear algebra over Z/nZ''', following perhaps '' Algorithms for Linear Algebra Problems over Principal Ideal Rings '' (1996), Johannes Buchmann, Stefan Neis at http://citeseer.ist.psu.edu/719844.html. The algorithms of that paper apply to principal ideal '''rings''', and in the case of a principal ideal '''domain''', reduce to computing the Hermite normal form. So this could expand to trying to compute the Hermite normal form in the manner of Steel's unpublished algorithm as implemented in MAGMA. * David Joyner: I'm interested in adding functionality to the '''group theory''' functionality in SAGE. * David Joyner: I'm also interested in coding theory and in particular Robert Miller's work on (now GPL'd) '''Leon's partition backtracking''' programs. * Kirsten Fagnan, Peter Clark: '''3d Graphics''' * Kirsten Fagnan, Josh Kantor: '''Numerical Computation''' 1. Incorporate superLU into SAGE with appropriate wrapping via sagex 2. Incorporate clapack into SAGE 3. Incorporate something that depends on clapack 4. Improve SAGE's support for octave and matlab * David Roe:''' pAdic Arithmetic'''  Design and implement highly optimized algorithms for arithmetic with padic numbers. The current implementation is already extensive, containing a wide range of different models of padic arithmetic (capped relative, capped absolute, lazy, extensions, etc.) but many new algorithms need to be developed, especially for arithmetic with polynomials over the padics, for padic linear algebra, for computing in the lattice of extensions of a padic ring, and for computing with completions of a number field. (This project started at SAGE Days 2, and has been very actively pursued, especially by David Roe during the last 7 months.) * Applications of '''MonskyWashnitzer Cohomology''': Investigate algorithms for''' fast point counting''' on elliptic and hyperelliptic curves, computation of padic height pairings, and computations of''' ''p''adic Coleman integrals'''. This project began in 2006 at an MSRI workshop, and has been an active area of work during the last year by Kiran Kedlaya, David Harvey, and Robert Bradshaw. In particular, Harvey has recently developed new algorithms that will be explored at the workshop, which allow for new efficient point counting on Jacobians of hyperelliptic curves, Bradshaw and Kedlaya have implemented Coleman integration which has application to the study of rational points on curves, and Stein has been investigating padic analogues of the Birch and SwinnertonDyer conjecture in many new cases using a new algorithm for computing padic heights. Kiran Kedlaya: for applications to rational points on curves, it would be useful to have '''iterated Coleman integrals'''. Also, what about padic heights on hyperelliptic curves with good ordinary reduction? Amnon Besser has a recipe for computing heights using Coleman integrals, but it would be easier if one could use only the Frobenius matrix, since then Harvey's improvements become available. * '''Quaternion Algebra Arithmetic''' and Modular Forms: Create and implement algorithms for efficient arithmetic in quaternion algebras, and apply this work to computation of Hecke operators, modular forms, Tamagawa numbers of modular abelian varieties, and enumeration of elliptic curves of large conductor. Gonzalo Tornaria has long worked in this area, and William Stein is working with David Kohel and Lassina Dembele on the design of better algorithms. This could also involve porting code from MAGMA to SAGE  the two authors of Magma's quaternion algebra arithmetic have both strongly encouraged me to port their code to SAGE (or have partly done so themselves already). * '''Distributed Parallel Computation''': Continuing a major trend started at the MSRI workshop in January 2007 on parallel computation, participants will design algorithms for parallel distributed integer factorization, computation of Hecke eigenvalues, and other algorithms. In particular, participants will explore several of the other ideas listed above in the context of parallel computation. Implementing these algorithms will likely vastly improve the stability and reliability of distributed computation in SAGE. * '''Optimized Polynomial Arithmetic''': David Harvey and Bill Hart (Postdoc, Warwick) have recently created and implemented what is by far the '''world’s fastest code for univariate polynomial arithmetic'''. Explore how to fill in the remaining gaps in order to make the results of their work easily available to a larger user community. Similarly, Tom Boothby has worked for about 9 months on algorithms for very '''fast evaluation of polynomials''' at points, and another project will be to explore how to deploy this. * '''Commutative Diagram Coercion Model''': The current SAGE coercion model has some advantages (speed, ability to override for new classes) but also some issues. A user is not able to override the coercion system at runtime and use their own coercion maps (this could be incredibly useful for polynomials, or systems of field extensions). It is difficult to get a systemwide picture of what coercion maps exist: as SAGE grows, this will introduce bugs when the rules for transitivity of coercion are not followed. It is also difficult, though not impossible, to implement coercion systems where the computation of the coercion map requires effort (creating a coercion map from $\mathbf{F}_{7^8} \to \mathbf{F}_{7^{24}}$). I, David Roe, want to discuss a new coercion model, either replacing over built on top of the old, that addresses these problems. Currently I have some ideas for a system based on commutative diagrams, but I want to brainstorm some more before implementing it. This project will include discussions on ways to improve category theory in SAGE. Nick Alexander is also very interested in working on the proposed commutative diagram coercion model. * '''padic Lseries of elliptic curves''': Christian Wuthrich and I will do a lot along these lines the week before. Finishing this off at SAGE Days might be really interesting. * Kiran Kedlaya: I would love to have '''Arithmetic on Jacobians of Hyperelliptic Curves''' (Cantor's method), ideally SageX'd. I don't know whether this could be ported from MAGMA. 
Projects
Project ideas for [:days4:SAGE Days 4].
At some point a day or 2 before SD4, we'll have to: flesh these out more and print up the result in a nice latex document for everybody. Then when people choose actual projects, they will create subpages on the wiki to track their progress, etc.
W Stein: Go through all the standard SAGE packages and, when possible, add an spkgcheck, which runs some sort of analogue of "make check" when possible.
W Stein: Documentation. Have teams describe how to do the following in tutorial fashion, with all examples automatically doctested:
 Use dsage to task farm a couple of standard example problems.
 Use SageX to create an interface to a C library (case study  GMPECM).
 Convert a program from .sage files to .py library code.
 Convert a .py Python program to SageX for speed.
 Create publicationquality graphics for inclusion in latex documents.
 Port code from Magma to SAGE.
 Make an existing PARIGP / GAP / Singular / Lisp / Maxima program easily usable from SAGE.
 M Albrecht: Go through the wiki and clean it up, write more documentation, and check what content should be added to the documentation
W Stein: Implement a global proof = True or proof = False option that is queried by algorithms when proof=None.
David Roe: General elliptic curve height bound code (port Cremona's GPL'd MAGMA code to SAGE.)
W Stein: Implement Tate's algorithm over number fields (again, this involves porting Cremona's GPL'd MAGMA code to SAGE).
W Stein, Tom Boothby, Dorian Raymer, Alex Clemesha, and Yi Qiang: Improve The SAGE Notebook:
 Convert the web server so that it uses twisted's multithreaded server (either twisted web like moinmoin or twisted web2)
 Make it so that the server use https to secure all communications and logins
 Figure out precisely why the notebook feels sluggish when running locally on _certain_ platforms. Consider removing features in the interest of speed. Also seriously consider making it so maybe 3 SAGE instances are prestarted by the notebook server when it is fairly idle so that new worksheets appear to starting working immediately.
 Make it so each user of the notebook has an account on the notebook, and can only see worksheets that are explicitly shared by other users. Worksheet names would internally be prefaced with the user name.
 Interface issues:
 Highlighting a block of text and pressing tab indents it four spaces; similarly, pressing shifttab dedents it four spaces.
 Uploading a worksheet should not display an empty page.
 Create a worksheet settings panel; use this to:
 Set the math software system used to evaluate cells
 Determine whether pressing shiftenter jumps to the next cell or stays in current one.
 Determine whether or not the side bar is displayed (the left button wall could still be used to toggle it).
 In the notebook some input cell should *always* have focus, if this is possible. I hate typing into a worksheet and having random movement happen.
 Create a notebook settings panel:
 Whether or not panel is displayed by default
 Whether shift enter or enter evaluates a cell (Mathematica or Maple mode)
 Default CAS for new worksheets.
 Whether or not SAGE logo at top left is displayed (or another log is displayed in its place, which is copied to .sage when selected).
 Change "slideshow mode" to "single cell mode". Make it so the editor in this mode is a fullfledged code editor.
 Slideshow mode should flip through slides, which should be welldefined sections of the worksheet.
 Printing needs to be rewritten as follows: Given a single worksheet, print it by (1) saving it to a latex file with embedded (vector, if possible) images, and (2) running pdflatex on the result, then return the resulting pdf file and/or a tarball with the images and latex. This would be very high quality, and will also be something that would be easily included in latex documents. Printing a notebook (=all worksheets owned by a given user) would create a document with a section for each notebook.
Rewrite saving/loading of worksheets, so it doesn't use pickle. Instead use the ''s text encoding and the images in directories.
 Finish implementing the html/edit mode: (1) images shouldn't get deleted on saving, (2) inserting new cells shouldn't be broken, and (3) it would be really nice, and probably easy, to have a WYSIWYG html editor mode like the one in moinmoin in which I'm writing this right now.
 Fix the bug where variables aren't listed in the sidebar.
 Implement correct tab completion in the worksheet when in systemotherthansage mode (i.e., don't put magma.foo[tab])
Add support for user javascript in the worksheet cells along with basic graphics (Robert Miller). See http://www.sagemath.org:9002/sage_trac/ticket/359
 Create an option so that processes that run the actual worksheets can be started as a different user. This will be slower, but could be vastly more robust. With sufficient thought there might be a trick to implement this in a few lines of code.
 Add a lock button in upper left that looks like a lock. When clicked one can't accidentally navigate away from a worksheet with out confirming.
 Fix bugs:
 The interactive help at sagenb.org and sagenb.com often doesn't appear unless one hits refresh a few times.
 New directory structure / never an sobj.
 /notebook
 config.txt #config file for notebook in standard config file format
 /history
/data (contains objects & stuff)
/codes (contains attachable scripts & stuff)
 /worksheets
 /_scratch_ (for example)
 _scratch_.txt (contains worksheet wiki text + configfile format header)
 /cells
 /images?
 /_scratch_ (for example)
/userinfo (contains SQLite database to control access / session / user stuff & stuff)
click & drag on a plot to zoom! PLEASE!
 /notebook
W Stein: Continue to flesh out ideas for JSAGE  the open source math software journal. I announced JSAGE at SD3, and it's been very interesting to see it start to take off. It's critical that we actually *write* some code to manage JSAGE, and figure out how to really do it right  much more work is needed. In particular, a good way of dealing with code submissions from people that don't know much about SAGE development, but have awesome code and ideas to contribute.
Nick Alexander (from UCI) and Thea (from SFU): I'd like to implement some basic linear algebra over Z/nZ, following perhaps Algorithms for Linear Algebra Problems over Principal Ideal Rings (1996), Johannes Buchmann, Stefan Neis at http://citeseer.ist.psu.edu/719844.html. The algorithms of that paper apply to principal ideal rings, and in the case of a principal ideal domain, reduce to computing the Hermite normal form. So this could expand to trying to compute the Hermite normal form in the manner of Steel's unpublished algorithm as implemented in MAGMA.
David Joyner: I'm interested in adding functionality to the group theory functionality in SAGE.
David Joyner: I'm also interested in coding theory and in particular Robert Miller's work on (now GPL'd) Leon's partition backtracking programs.
Kirsten Fagnan, Peter Clark: 3d Graphics
Kirsten Fagnan, Josh Kantor: Numerical Computation
 Incorporate superLU into SAGE with appropriate wrapping via sagex
 Incorporate clapack into SAGE
 Incorporate something that depends on clapack
 Improve SAGE's support for octave and matlab
David Roe: pAdic Arithmetic  Design and implement highly optimized algorithms for arithmetic with padic numbers. The current implementation is already extensive, containing a wide range of different models of padic arithmetic (capped relative, capped absolute, lazy, extensions, etc.) but many new algorithms need to be developed, especially for arithmetic with polynomials over the padics, for padic linear algebra, for computing in the lattice of extensions of a padic ring, and for computing with completions of a number field. (This project started at SAGE Days 2, and has been very actively pursued, especially by David Roe during the last 7 months.)
Applications of MonskyWashnitzer Cohomology: Investigate algorithms for fast point counting on elliptic and hyperelliptic curves, computation of padic height pairings, and computations of padic Coleman integrals. This project began in 2006 at an MSRI workshop, and has been an active area of work during the last year by Kiran Kedlaya, David Harvey, and Robert Bradshaw. In particular, Harvey has recently developed new algorithms that will be explored at the workshop, which allow for new efficient point counting on Jacobians of hyperelliptic curves, Bradshaw and Kedlaya have implemented Coleman integration which has application to the study of rational points on curves, and Stein has been investigating padic analogues of the Birch and SwinnertonDyer conjecture in many new cases using a new algorithm for computing padic heights. Kiran Kedlaya: for applications to rational points on curves, it would be useful to have iterated Coleman integrals. Also, what about padic heights on hyperelliptic curves with good ordinary reduction? Amnon Besser has a recipe for computing heights using Coleman integrals, but it would be easier if one could use only the Frobenius matrix, since then Harvey's improvements become available.
Quaternion Algebra Arithmetic and Modular Forms: Create and implement algorithms for efficient arithmetic in quaternion algebras, and apply this work to computation of Hecke operators, modular forms, Tamagawa numbers of modular abelian varieties, and enumeration of elliptic curves of large conductor. Gonzalo Tornaria has long worked in this area, and William Stein is working with David Kohel and Lassina Dembele on the design of better algorithms. This could also involve porting code from MAGMA to SAGE  the two authors of Magma's quaternion algebra arithmetic have both strongly encouraged me to port their code to SAGE (or have partly done so themselves already).
Distributed Parallel Computation: Continuing a major trend started at the MSRI workshop in January 2007 on parallel computation, participants will design algorithms for parallel distributed integer factorization, computation of Hecke eigenvalues, and other algorithms. In particular, participants will explore several of the other ideas listed above in the context of parallel computation. Implementing these algorithms will likely vastly improve the stability and reliability of distributed computation in SAGE.
Optimized Polynomial Arithmetic: David Harvey and Bill Hart (Postdoc, Warwick) have recently created and implemented what is by far the world’s fastest code for univariate polynomial arithmetic. Explore how to fill in the remaining gaps in order to make the results of their work easily available to a larger user community. Similarly, Tom Boothby has worked for about 9 months on algorithms for very fast evaluation of polynomials at points, and another project will be to explore how to deploy this.
Commutative Diagram Coercion Model: The current SAGE coercion model has some advantages (speed, ability to override for new classes) but also some issues. A user is not able to override the coercion system at runtime and use their own coercion maps (this could be incredibly useful for polynomials, or systems of field extensions). It is difficult to get a systemwide picture of what coercion maps exist: as SAGE grows, this will introduce bugs when the rules for transitivity of coercion are not followed. It is also difficult, though not impossible, to implement coercion systems where the computation of the coercion map requires effort (creating a coercion map from \mathbf{F}_{7^8} \to \mathbf{F}_{7^{24}}). I, David Roe, want to discuss a new coercion model, either replacing over built on top of the old, that addresses these problems. Currently I have some ideas for a system based on commutative diagrams, but I want to brainstorm some more before implementing it. This project will include discussions on ways to improve category theory in SAGE. Nick Alexander is also very interested in working on the proposed commutative diagram coercion model.
padic Lseries of elliptic curves: Christian Wuthrich and I will do a lot along these lines the week before. Finishing this off at SAGE Days might be really interesting.
Kiran Kedlaya: I would love to have Arithmetic on Jacobians of Hyperelliptic Curves (Cantor's method), ideally SageX'd. I don't know whether this could be ported from MAGMA.