MathOverflow is a question and answer site for professional mathematicians. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want some recommendation on which software I should install on my computer. I'm looking for an open source program for general abstract mathematical purposes (as opposed to applied mathematics).

I would likely use it for group theory, number theory, algebraic geometry and probably polytopes.

The kind of program I have in mind is Mathematica or Matlab. Although probably those are not designed for abstract mathematics.

Any suggestions?

share|cite|improve this question

23 Answers 23

up vote 59 down vote accepted

Here are some links.

  • Axiom and Maxima are good general purpose computer algebra systems.
  • DataMelt is a free Java-based math software with a lot of examples
  • GAP is a system for computational discrete algebra (with particular emphasis on computational group theory).
  • PARI/GP is a CAS for fast computations in number theory.
  • SAGE is a kind of unified framework for several systems, including GAP, PARI, and Maxima.
  • Octave is a system for numerical computations (it is close to Matlab).
  • Cadabra is a computer algebra system designed for the solution of the field theory problems.
  • CoCoA stands for "Computations in commutative algebra".
  • KANT / KASH stands for "Computational Algebraic Number Theory".
  • Macaulay 2 is a system for research in commutative algebra and algebraic geometry.
  • Snap is a computer program for studying arithmetic invariants of hyperbolic 3-manifolds.
  • Symmetrica is an object oriented computer algebra system for representations, combinatorics and applications of symmetric groups.
share|cite|improve this answer
I would like to add FriCAS ( which is a fork of Axiom, to this very nice list. – Martin Rubey Mar 22 '10 at 20:06
A propos Maxima, I also recommend wxMaxima for a good front end. – Willie Wong Mar 22 '10 at 20:35
He wants to do algebraic geometry, and there's no mention of Singular?? – Mikael Vejdemo-Johansson Mar 22 '10 at 20:55
@Mikael +1. It is also included in SAGE [cf.] – AlB Mar 22 '10 at 21:01
Polymake ( is a system for studying convex polytopes and related objects such as fans and simplicial complexes. – Tom Braden Jul 25 '10 at 13:32

GAP is fantastic for group theory, combinatorics and and number theory. Sage is becoming very popular and essentially includes GAP as well.

share|cite|improve this answer
Why "essentially"? Doesn't SAGE straight up include GAP? – Omar Antolín-Camarena May 18 '12 at 15:22
@OmarAntolín-Camarena: For some reason SAGE only includes GAP without any of its (very useful) packages. Most of them can be easily installed later (there are a few tricky ones, however). But this is why "essentially" is quite appropriate here, I think. – eins6180 Aug 7 '15 at 7:47

Oberwolfach recently started a site listing mathematical software, sorted by subject: Oberwolfach References on Mathematical Software.

share|cite|improve this answer

The kind of program I have in mind is Mathematica or Matlab. Altough probably those are not designed por abstract mathematics.

What would be extremely useful to the progress of abstract mathematics would be a library of mathematical algorithms which were formally verified for correctness. Results obtained via such a library could be routinely cited in research papers without any doubt as to their correctness. The authors of SAGE suggest open source software as a means of achieving "research grade" mathematical software in [ ][ ], but arguably they don't go far enough.

None of the "open source" mathematical software mentioned here currently meets this standard; the closest is C-CoRN [ ], a library of constructive mathematics for the Coq proof assistant.

Now don't get me wrong, building a comprehensive library of formalized mathematics covering even the undergrad curriculum would be a vast undertaking. But the benefits would be huge, not just for computational mathematics but for all kinds of mathematical practice. The main obstacle is the nature of the work involved, which tends to be tedious and offering little reward to professional mathematicians, if occasionally playful and addictive. Perhaps undergraduate students should be encouraged to take courses in logic and contribute to such efforts.

share|cite|improve this answer
Computer scientists are working on this (formally verified mathematical software). Most of them bemoan the fact that they can't seem to attract the attention of very many mathematicians. If you know enough mathematics and enough computer science, it's not as big a job as it looks. Ideas from category theory to code generation can all be brought to bear, which significantly reduce the amount of work which needs to be done 'by hand'. This is a very active area of research - see the Calculemus community for example. – Jacques Carette Mar 22 '10 at 21:39
I personally do not find this project of extreme importance: A software used extensively enough by mathematicians is likely to be very reliable, at least for the proofs based on it. Trusting referees or intuition is often no less a gamble, and the best sieve for errors is time and usage of the results, which is applicable to both types of results. – Boaz Tsaban Jul 31 '15 at 2:57

For commutative algebra and algebraic geometry, in addition to the already mentioned CoCoA, there is Singular.

share|cite|improve this answer

Kenzo and Chomp are for computing homology. Kenzo for instance can take an arbitrary abstract simplicial complex and compute the simplicial homology groups, and it has various spaces already built in. You can compute the homology of products and other neat things with it.

share|cite|improve this answer

For all sorts of Groebner bases-related computation (I believe you might need some at least for questions in algebraic geometry), I would recommend Bergman (

share|cite|improve this answer

I like LiE for computations with Lie algebras, especially roots and weights computations, plethysms,... It also has a web form interface.

share|cite|improve this answer

The only mathematical software I've learned to use so far is gnuplot, which does 2D and 3D plots.

It's very easy to use, at least for basic tasks such as "plot $x \log(x)$ for $0 \leq x \leq 1$". It comes ready-installed on many Linux distributions.

share|cite|improve this answer
OP wanted abstract mathematics, and plotting is mostly about numerical mathematics and applied mathematics. – P Vanchinathan Apr 24 '15 at 10:58

I am using SAGE for computing over elliptic curves. It is very convenient and has lots of implementations of algorithms. But I have not found a way to instal in under windows environment without virtual box.

share|cite|improve this answer

I'll second the votes for Sage, Macsyma as Maxima and Wxmaxima, Scilab, Octave, R, and GAP.

For kids to play with are KGeometry KiG (K-interactive-Geometry), letting you draw out geometric relationships and actively move points around, letting all defined subcomponents change with it: e.g. draw three points, define+draw the line segments between the points, define+draw the perpendicular bisectors of these line segments, define+draw a circle that touches the three points of the triangle. Now drag any of the three points of the triangle around and watch all of the defined components move along to remain the bisectors / intersections / circles consistently. It's a great way to play around with geometric constructions.

Also, you can't go wrong with using awk, sed, and bash on the command line.

share|cite|improve this answer
"For kids to play with": geogebra is used a lot in schools. – kjetil b halvorsen Jul 7 '12 at 4:08
@KjetilBHalvorsen I am not sure that Geogebra is open source. Its webpage claims that: (1) Geogebra is open source (2) Geogebra is free of charge for non-commercial use only (3) the Geogebra source code is available under the GPL. As far as I know, (2) is in contradiction with both (1) (per the OSI open source definition) and (3) (per the GPL terms). Strange indeed. – Federico Poloni Mar 29 '14 at 18:56
@FedericoPoloni: Not at all. The GPL certainly doesn't forbid charging for software. You just have to provide the source code to whoever you sell it to. In fact, a great deal of software which costs money is open source. – kundor Nov 16 '14 at 3:28
@kundor Sure, but you cannot forbid those who already have the software from redistributing it (even to commercial users), which usually makes selling it quite pointless. The commercial use clause falls under the "further restrictions" cause and is invalid in my view. And the contradiction (1)-(2) stands clear in the OSI definition, if one assumes that as the definition of open source. – Federico Poloni Nov 16 '14 at 11:01
@kundor Actually the Geogebra page on licensing now seems clearer than when I wrote my previous comment. The program itself is GPL, and the additional restrictions are on additional components such as the web plugin, the installer and the translations of the interface in other languages. I still disagree with the claim "GeoGebra is open source software", but at least everything is consistent. – Federico Poloni Nov 16 '14 at 11:07

Michael Rubinstein's lcalc is a fast and easy-to-use program for calculating values of L-functions including the Riemann zeta function. It can be downloaded from:

share|cite|improve this answer

I like kig. Very useful software for simple geometric constructions. Also it can help if you want to make a figure for a paper.

share|cite|improve this answer

... and probably polytopes.

I recommend polymake for general polytope computations, LattE for lattice-point enumeration, Normaliz for computations related to lattice polytopes, and 4ti2 for Gröbner basis computations.

share|cite|improve this answer

We are taught to use Sage to replace Matlab and Mathematica, now it also supports the online version via web browser which is very convenient and cross-platform.

In addition, Sage is python based, it's easy to combine python programming which is more and more popular in scientific computation nowadays.

share|cite|improve this answer

Scilab ( is also numerical software which is free and open source, akin to Octave and Matlab. It's been developed at INRIA and ENPC. I also highly recommend Octave for numerical analysis and statistical analysis.

Maxima is also on many gnu/linux installations and can be used in a text window or terminal without any graphics. The WxMaxima front end works in a graphical-user-environment and has better visualization of formulas and allows for menu-level interaction, instead of having to have all of the commands memorized.

share|cite|improve this answer

I can't believe that Python and its vast scientific application libraries are not mentioned in this thread. Let me be little bit bias and mention projects like PyDSTool. What makes Maple or Mathematica language simpler than Python? Similarly time proven but proprietary computer algebra system MuPad now a part of MATLAB is not mentioned. FreeMat, the cleanest (other two being GNU Octabe and Scilab) reimplementation of MATLAB API, is also not mentioned. PostScript, page description language (arguably proprietary), is not mentioned. It is wonderful language for teaching geometry and programming pictures.

P.S. I was surprised that people even mentioned things like Maple and Mathematica. I personally have not meet a person who had a look at the source code of these two systems. However, I have friends who have worked for MathWorks and have seen the source code of MATLAB.

share|cite|improve this answer
Neither Python nor PostScript seem to qualify as software for general abstract mathematical purposes (which is what the question was about). However, software written in these langes of course may fall into this category (such as Sage, PyDSTool, which have been mentioned). – Max Horn Jan 12 '12 at 10:00

I recommend PascGalois Project software for visualizing abstract mathematics. Classroom resources also available.

share|cite|improve this answer

REDUCE is also an interesting free computer algebra system to have a look at. It allows especially quantifier elimination by means of Redlog library ( The following is from the REDUCE homepage (

REDUCE is an interactive system for general algebraic computations of interest to mathematicians, scientists and engineers. It has been produced by a collaborative effort involving many contributors. Its capabilities include:

  • expansion and ordering of polynomials and rational functions;
  • substitutions and pattern matching in a wide variety of forms;
  • automatic and user controlled simplification of expressions;
  • calculations with symbolic matrices;
  • arbitrary precision integer and real arithmetic;
  • facilities for defining new functions and extending program syntax;
  • analytic differentiation and integration; bullet factorization of polynomials;
  • facilities for the solution of a variety of algebraic equations;
  • facilities for the output of expressions in a variety of formats;
  • facilities for generating optimized numerical programs from symbolic input;
  • calculations with a wide variety of special functions;
  • Dirac matrix calculations of interest to high energy physicists.


share|cite|improve this answer
Is the list of capabilities missing, or is it the empty set? :) – Federico Poloni Nov 16 '14 at 13:27
Sorry, the set of capabilities has now some elements. – Jae Nov 16 '14 at 19:25

Haven't yet tried it out, but Julia seems to be an interesting recent language with focus on (fast) mathematics.

share|cite|improve this answer

I would recommend SCaVis (Scientific Computation and Visualization Environment). First, it is Java and runs on any platform. I has a nice editor and you can program in 4 scripting languages (including Python, Ruby). The graphics includes 3D. There is also about 300 examples and very extensive SCaVis online manual which covers

  • Functions (parametric, not-parametric)
  • General math (integration, differentiations)
  • Linear algebra
  • Data analysis, mining, histograms
  • Statistics
  • Symbolic calculations

and all of this can be integrated with plot canvaces in 2D and 3D.

share|cite|improve this answer

DataMelt numeric software is close to what you need. This math program is free and includes many numeric libraries.

share|cite|improve this answer
Thank you for your contribution. PLease note however that this software was already mentioned – user9072 Apr 24 '15 at 11:24

protected by quid Apr 24 '15 at 11:25

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.