# Open source mathematical software.

I want some recomendation on which software I should install on my computer, 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. Altough probably those are not designed por abstract mathematics.

Any suggestions?

-

• Axiom and Maxima are good general purpose computer algebra systems.
• 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.
-
I would like to add FriCAS (fricas.sourceforge.net) 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. sagemath.org/links-components.html] –  AlB Mar 22 '10 at 21:01
Polymake (opt.tu-darmstadt.de/polymake/doku.php/start) 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.

-
Why "essentially"? Doesn't SAGE straight up include GAP? –  Omar Antolín-Camarena May 18 '12 at 15:22

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 [ http://www.ams.org/notices/200710/tx071001279p.pdf ][ http://wstein.org/mathsoftbio/history.pdf ], 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 [ http://c-corn.cs.ru.nl/ ], 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.

-
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

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

-

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

-

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.

-

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.

-
OP wanted abstract mathematics, and plotting is mostly about numerical mathematics and applied mathematics. –  P Vanchinathan Apr 24 at 10:58

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 (http://servus.math.su.se/bergman/).

-

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.

-

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.

-
"For kids to play with": geogebra is used a lot in schools. geogebra.org/cms –  kjetil b halvorsen Jul 7 '12 at 4:08
@KjetilBHalvorsen I am not sure that Geogebra is open source. Its webpage geogebra.org/cms/en/license 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

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

-

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:

http://pmmac03.math.uwaterloo.ca/~mrubinst/L_function_public/L.html

-

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.

-

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

-

Scilab (http://www.scilab.org/) 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.

-

... 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.

-

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.

-
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.

-

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.

-

REDUCE is also an interesting free computer algebra system to have a look at. It allows especially quantifier elimination by means of Redlog library (http://redlog.eu) The following is from the REDUCE homepage (http://reduce-algebra.com):

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.

-
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

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

-
Thank you for your contribution. PLease note however that this software was already mentioned mathoverflow.net/a/161805 –  quid Apr 24 at 11:24

## protected by quidApr 24 at 11:25

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.