# Roadmap to Computer Algebra Systems Usage for Algebraic Geometry

I've decided it's time to start learning how to use a computer to do calculations... I've used Singular to some small extent so far, but I want to start relying on computer algebra systems more.

### Question

Which computer algebra system is best for what, and what is the easiest/most fun(?) way to learn how to deal with them?

I should mention that I do (arguably) Arithmetic Geometry. So, ideally I should invest my time in learning something that is capable of making the abstract existence theorems in that field explicit (see for example: How to get explicit unramified covers of an elliptic curve?, or another example is normalizations).

P.S. I don't have access to Magma. How powerful is their "online calculator", and is it worthwhile to learn Magma just to use the online version?

-
Some arithmetic geometers I know use Mathematica, and appear to lead happy, productive lives. I have no idea whether it would work for you. –  Igor Rivin Jan 15 '11 at 3:52
Sage can handle quite a bit, though for hardcore routines it typically calls to Magma (so if you do not have this installed, they will not work in Sage either). On that note, one of the postdocs with my supervisor uses Sage and the online Magma calculator in combination, and seems happy with it. –  mathic Jan 15 '11 at 6:43
I like Macaulay 2. It's quite good for commutative algebra and there are several packages to deal with various algebro-geometric problems. –  Baptiste Calmès Jan 15 '11 at 11:04
If you ever get seriously involved in computer calculations, chances are that you will end up using a variety of programs. Symbolic computation is extremely heavy-duty, and for almost any non-trivial task, performance varies wildly from software to software, with no single program being best for everything. –  Thierry Zell Jan 16 '11 at 2:43
Mathic's comment above about Sage calling to Magma for "hardcore stuff" is utterly and completely false. –  William Stein Jan 16 '11 at 3:24

Your question is "Which computer algebra system is best for what, and what is the easiest/most fun(?) way to learn how to deal with them?"

• Regarding community, I think Sage (http://sagemath.org) is the best CAS, since Sage is completely open and free, and there are about a dozen mailing lists, and thousands of subscribers and messages a month. There is also a forum like mathoverflow for Sage: http://ask.sagemath.org/questions/. Also, Sage builds heavily on Singular, so it may feel familiar. See this 1-page article I published in the Notices for more about motivation: http://www.ams.org/notices/200710/tx071001279p.pdf For a sense of the capabilities of Sage, skim the reference manual: http://sagemath.org/doc/reference/. There is also an optional package of more unstable code for arithmetic geometry here: http://code.google.com/p/purplesage/

• Regarding raw interpreted speed, it's been claimed that the Magma interpreter is often faster than the Sage interpreter (=Python). However, Sage has Cython http://cython.org, which can produce code that is much faster than anything one can produce using the Magma (or any other CAS) interpreter.

• Magma is the only existing CAS that has well developed capabilities for computing with function fields of transcendance degree 1 over $\mathbf{F}_p$, i.e., the function field analogue of algebraic number theory. Chris Hall and I are working on something similar for Sage right now, but this will take a long time.

• Magma is also the only CAS that can compute fairly general spaces of Hilbert Modular Forms (again, work is also under way to add this to Sage, but it is a nontrivial project). Someday you might care about this.

• Regarding elliptic curves, Sage has much more related to $p$-adic $L$-functions and Heegner points, but Magma has 3 and 4 descent.

The answer to your question: "Is it worth learning Magma?" is definitely still yes, since there are still many algorithms today in arithmetic geometry that are only implemented in Magma, and available nowhere else (definitely not in Macaulay2, Singular, Mathematica, Sage, etc.). It will only take a few days, and you will have a better sense of what is possible. The exact same argument applies to Sage as well. Learn both. For Sage, you basically should: 1. learn Python, and 2. go through the Sage tutorial, which takes 2-3 hours.

Another point: Sage and Magma have a huge overlap in functionality related to arithmetic geometry, but the overlap in code bases is almost zero (and in many cases the people who implemented the algorithms in both systems are disjoint too). Thus there is some nontrivial value in comparing the output of both systems. See, e.g., this trac ticket about implementation of a function for computing all integral points on an elliptic curve for a nice example of this http://trac.sagemath.org/sage_trac/ticket/3674 This ticket also illustrates how the code that goes into Sage is all publicly peer reviewed (unlike this case with Magma).

-

I use Macaulay2 for standard computations in commutative algebra/algebraic geometry, like Gröbner bases, graded free resolutions, Tor/Ext groups etc. There are also a lot of add-on packages you can import for working with say, intersection theory, toric varieties and convex geometry. M2 is easy to learn and runs quite smoothly, especially using the interface in emacs.

In addition to the M2-documentation, which is very complete, there is also a really nice book, Computations in algebraic geometry with Macaulay 2 available freely on-line.

-