GAP: is a free system for computational discrete algebra.
Magma: a large, well-supported software package designed to solve computationally hard problems in algebra, number theory, geometry and combinatorics.
MuPAD-Combinat: maintained by Nicolas Thiéry, is an open-source algebraic combinatorics package for the computer algebra system MuPAD 2.0 and higher. Since MuPAD was withdrawn from the market in 2008, the development was stopped. The various packages have been and are integrated in SAGE-combinat (see below).
SAGE-Combinat: is a software project whose mission is to improve the open source mathematical system SAGE as an extensible toolbox for computer exploration in (algebraic) combinatorics; it is developed by a worldwide community of researchers.
Combinatorica: written by Sriram Pemmaraju and Stephen Skiena, is a Mathematica collection of over 230 functions in combinatorics and graph theory.
Vega: is a system for manipulating discrete mathematical structures.
The (Combinatorial) Object Server: maintained by Frank Ruskey, is an on-line device, which, on specifying a type of combinatorial object, together with specific parameter values, will return to you a list of all such objects.
Stony Brook Algorithm Repository: maintained by Stephen Skiena, serves as a comprehensive collection of algorithm implementations for over seventy of the most fundamental problems in combinatorial algorithms.
Combinatorial Structures
combstruct: written in Maple by Marni Mishna, Eithne Murray and Paul Zimmermann, is used to define and manipulate a wide range of combinatorial structures. Structures can be counted and generated uniformly at random, and in some cases it is possible to generate all the structures of a given size.
CS: is a MuPAD package for counting and randomly generating combinatorial structures. It has aims similar to those ofcombstruct. The version for MuPAD 2.0 is included in theMuPAD-Combinat package.
encyclopedia: written in Maple by Stéphanie Petit, is an encyclopedia of combinatorial structures. It is intended to be the young cousin of Sloane's Encyclopedia of Integer Sequenceswith an emphasis on sequences that arise in the context of decomposable combinatorial structures. Like in the EIS, it is possible to search the database by the first terms in the sequence, which are then viewed as the sequence of numbers of objects of increasing size in a specified combinatorial structure. It is also possible to search the database by keyword, generating function, or closed form.
See also: devmol.
Permutation Groups, Group Actions, Redfield-Pólya Theory
CoCo: developed by Igor Faradzev, Mikhail Klin et al., at the Moscow Institute for System Studies, ported to UNIX by Andries E. Brouwer, is a package for the computation with permutations groups, group actions, association schemes, strongly regular graphs, and related objects.
PermGroup: written in Mathematica by Thomas Bayer, is a package dealing with permutation groups, group actions and Redfield-Pólya theory.
MOLGEN: developed in C++ by Thomas Grüner, Adalbert Kerber, Reinhard Laue and André Ruckdeschel, is a program for the computation of all structural formulae (= connectivity isomers) that correspond to a given molecular formula, with (optional) further conditions (e.g., substructures).
See also: devmol.
Enumeration of Tilings and Perfect Matchings
vaxmaple: developed by Greg Kuperberg, Jim Propp and David Wilson, is a C program for computing the number of tilings of certain regions, or, equivalently, for computing the number of perfect matchings of certain graphs. It also needs Maple. The program file is vaxmaple.c, and the documentation isvaxmaple.doc.
vaxmacs: developed by David Wilson, integrates vaxmaple in an emacs environment, and makes it, thus, much more convenient to use.
Posets
posets: written in Maple by John Stembridge, provides an environment for computations involving partially ordered sets and related structures.
Posets.m: written in Mathematica by Curtis Greene, designed to generate, display, and explore partially ordered sets.
P.I.G.A.L.E.: developed by H. de Fraysseix and P. Ossona de Mendez, has a C++ graph algorithm library and a graph editor, which are primarily concerned with planar graphs and are particularly intended for graph theoretic research.
GraphBase: is a collection of more than 30 CWEB programs oriented to graphs and networks. It also includes a collection of interesting data that can be used to test combinatorial algorithms.
CaGe: is an Open Source software package, implemented in C and Java. It generates mathematical graphs of different types - often types that relate to interesting chemical molecules - and allows the user to view selected graphs in various ways or save them in several formats.
nauty: written in C by Brendan McKay, is a program for computing automorphism groups of graphs and digraphs. It can also produce a canonical labelling.
Free Graph Theory Software: developed by Bertram Steinsky, allows to construct graphs with the mouse, to calculate parameters of graphs "live" during their construction, to visualize graphs, and to select from graph lists according to their parameters. The program is for online use.
Groups and Graphs: is a software package for graphs, digraphs, geometric configurations, combinatorial designs, and their automorphism groups.
GRAPE: written in GAP and C by Leonard Soicher, is a system for computing with graphs, and is primarily designed for constructing and analysing graphs related to groups, finite geometries, and designs.
Cliquer: written in C by Sampo Niskanen and Patric Östergård, is a set of C routines for finding cliques in an arbitrary weighted graph.
MACEK: written by Petr Hlineny, is for practical structural computations with matroids representable over finite (partial) fields. This package supports easy manipulation with matrices representing matroids over finite partial fields. There are tests for minors, equivalence, branch-width three, connectivity, and other structural properties available. One can also generate all nonequivalent 3-connected extensions of matroids.
DISCRETA: written in C by Anton Betten, Evi Haberberger, Reinhard Laue, and Alfred Wassermann, a program to construct _t_-designs with prescribed automorphism group.
Identify Your Sequence Knowing The First Few Terms
RATE: written in Mathematica by Christian Krattenthaler, allows you to guess a closed form expression (if existent) for a sequence of numbers, given the first few terms of the sequence.
GUESS: written in Maple by François Béraud and Bruno Gauthier, allows you to guess a closed form expression (if existent) for a sequence of numbers, given the first few terms of the sequence.
DEVINE: written in Maxima by Martin Rubey, allows you to guess a closed form expression (if existent) for a sequence of numbers, given the first few terms of the sequence.
Guess: written in Axiom by Martin Rubey, allows you to guess a closed form expression (if existent) for a sequence of numbers, given the first few terms of the sequence. It is based on an extended algorithm, and is therefore more powerful than RATE/GUESS/DEVINE.
Guess.m: written in Mathematica by Manuel Kauers, provides commands for guessing multivariate recurrence equations, as well as for efficiently guessing minimal order univariate recurrence, differential, or algebraic equations given the initial terms of a sequence or power series.
See also: gfun.
Generating Functions, holonomic functions
gfun: written in Maple by Bruno Salvy, Paul Zimmermann and Eithne Murray, is used for the manipulation and discovery of generating functions and sequences.
Mgfun: written in Maple by Frédéric Chyzak, is a package for calculations with multivariate generating functions, in particular for their symbolic summation and integration, and for the proof of special function and combinatorial identities. It also allows operations in non-commutative algebras of operators (such as Weyl or Ore algebras), elimination in these algebras, and operations on holonomic functions.
GeneratingFunctions: written in Mathematica by Christian Mallinger, provides tools to work with these holonomic objects, i.e., to perform some unary, binary and _n_-ary operations with these objects. Moreover it is possible to easily verify identities of holonomic functions or sequences.
SumCracker: written in Mathematica by Manuel Kauers, contains routines for manipulating a large class of sequences (admissible sequences). It can prove identities and inequalities for these sequences, simplify expressions, evaluate symbolic sums, and solve certain difference equations.
HolonomicFunctions: written in Mathematica by Christoph Koutschan, provides tools to deal with multivariate holonomic functions and sequences in an algorithmic fashion. It allows one to do summation and integration of multivariate holonomic functions, computations in Ore algebras, with noncommutative Gröbner bases, and to solve coupled linear systems of differential or difference equations.
ore_algebra: written in Sage by Manuel Kauers, Maximilian Jaroschek, and Fredrik Johansson, provides tools to deal with Ore algebras in an algorithmic fashion. It includes basic arithmetic and actions; gcrd and lclm; D-finite closure properties; natural transformations between related algebras; guessing; desingularization; solvers for polynomials, rational functions and (generalized) power series.
Omega: written in Mathematica by Axel Riese, is an implementation of MacMahon's Partition Analysis for the computation of generating functions for the integer solutions to systems of linear equations and inequalities.
devmol: written in Maple by Pierre Auger, computes molecular expansions for species.
Binomial and Hypergeometric Series, Special Functions
HYP and HYPQ: written in Mathematica by Christian Krattenthaler, are packages, written in Mathematica, for the manipulation and identification of binomial and hypergeometric series and _q_-series, identities and _q_-identities.
HYPERG: written in Maple by Bruno Gauthier, is a package, written in Maple, for the manipulation and identification of binomial and hypergeometric series and _q_-series, identities and _q_-identities.
q-series: written in Maple by Frank Garvan, is a package for the manipulation of _q_-series.
Engel: written in Mathematica by Burkhard Zimmermann, is an implementation of the _q_-Engel Expansion algorithm which expands_q_-series into inverse polynomial series.
Implementations of the Gosper-Zeilberger Algorithm
EKHAD: written in Maple by Doron Zeilberger, is an implementation of the Gosper-Zeilberger algorithm.
qEKHAD: written in Maple by Doron Zeilberger, is an implementation of the _q_-Zeilberger algorithm.
fastzeil: written in Mathematica by Peter Paule and Markus Schorn, is an implementation of the Gosper-Zeilberger algorithm.
qZeil: written in Mathematica by Peter Paule and Axel Riese, is an implementation of the _q_-Zeilberger algorithm.
zeilb and qzeilb: written in Maple by Tom Koornwinder, is an implementation of the Gosper-Zeilberger algorithm.
Zeilberger: written in Maxima by Fabrizio Caruso, is an implementation of the Gosper-Zeilberger algorithm.
zeilberg: written in Reduce by Wolfram Koepf and Gregor Stölting, is an implementation of the Gosper-Zeilberger algorithm.
qsum: written in Reduce by Harald Böing and Wolfram Koepf is an implementation of the _q_-Zeilberger algorithm.
Bibasic Telescope: written in Mathematica by Axel Riese, is an implementation of a generalization of Gosper's algorithm to indefinite bibasic hypergeometric summation.
Mixed Gosper: written in Mathematica by Marko Petkovsek, is an implementation of a generalization of Gosper's algorithm to indefinite bibasic hypergeometric summation.
See also: gfun, Mgfun.
Summation algorithms based on difference fields
Sigma: written in Mathematica by Carsten Schneider, is an implementation of algorithms for finding linear recurrences for sums that may go beyond binomial and hypergeometric sums, finding solutions for linear recurrences in difference fields, for simplifying nested sums. The underlying machinery of Sigma is based on difference field theory.
Other recurrence finders
Stirling: written in Mathematica by Manuel Kauers, computes recurrence equations for sums involving Stirling numbers or Eulerian numbers.
Implementations of the Petkovsek Algorithm
Hyper: written in Mathematica by Marko Petkovsek, is an implementation of the Petkovsek algorithm for finding hypergeometric solutions for linear recurrences with rational coefficients.
qHyper: written in Mathematica by Marko Petkovsek, is an implementation of the _q_-Petkovsek algorithm for finding _q_-hypergeometric solutions for linear recurrences with rational coefficients.
Multisum Algorithms
MultiSum: written in Mathematica by Kurt Wegschaider, is a package for proving hypergeometric multi-sum identities.
qMultiSum: written in Mathematica by Axel Riese, is a package for proving _q_-hypergeometric multiple summation identities.
Special Functions Databases
Digital Library of Special Functions: will be the (printed and electronic) replacement for the famous " Handbook of Mathematical Functions" by Abramowitz and Stegun.
CAOP: written in _Maple_by René Swarttouw, and maintained by Tom Koornwinder, is a package for calculating formulas for orthogonal polynomials belonging to the Askey scheme.
The Askey Scheme: written by Roelof Koekoek and René Swarttouw, is a compilation of the Askey Scheme of hypergeometric orthogonal polynomials, complete with definitions, recurrences, differential equations, orthogonality measures, and limit relations.
Asymptotic Enumeration
gdev: written in Maple by Bruno Salvy, computes asymptotic expansions of generating functions.
luo: written in Caml and Maple by Bruno Salvy and Paul Zimmermann, performs average-case complexity analysis of algorithms.
Asymptotics: written in Mathematica by Manuel Kauers, computes asymptotic series expansions of solutions of _P_-finite recurrence equations.
Symmetric Functions, Schubert Polynomials, Combinatorial Representation Theory
SF: written in Maple by John Stembridge, provides an environment for computations involving symmetric functions and related structures, such as the characters of the symmetric groups.
ACE: written in Maple by the Marne-la-Vallée team under the lead of Sébastien Veigneau, is a huge collection of packages for computations in algebraic combinatorics, from partitions, tableaux, permutations, symmetric functions, symmetric group characters, Hecke algebras, to the free Lie algebra and noncommutative symmetric functions.
µ-EC: written in MuPAD by the Marne-la-Vallée team under the lead of Sébastien Veigneau, is a (partial) conversion of ACE into MuPAD. It is included in MuPAD-Combinat.
LRCALC: written in C and Maple by Anders Buch, is a package for computing Littlewood-Richardson coefficients. The C programs form the engine of the package, providing fast calculation of single Littlewood-Richardson coefficients, products of Schur functions, and skew Schur functions. It is included in MuPAD-Combinat and SAGE-Combinat..
Symmetrica: written in C by Axel Kohnert, is a collection of routines to compute with symmetric functions and Schubert polynomials, ordinary, modular, and projective representations of the symmetric group and Hecke algebras of type_A_. It is included in MuPAD-Combinat and SAGE-Combinat.
Schur: written in C by Brian Wybourne, is an interactive program for calculating properties of Lie groups and symmetric functions.
LiE: written in C by Marc van Leeuwen, Arjeh M. Cohen, and Bert Lisser, is a computer algebra system that is specialised in computations involving (reductive) Lie groups and their representions.
Computations with Polynomials, Commutative Algebra
Singular: is a computer algebra system for polynomial computations with special emphasis on the needs of commutative algebra, algebraic geometry, and singularity theory. It includes a very efficient implementation of Gröbner basis algorithms.
Macaulay: developed by Daniel R. Grayson and Michael E. Stillman, is a software system devoted to supporting research in algebraic geometry and commutative algebra.
Coxeter and Weyl Groups
coxeter/weyl: written in Maple by John Stembridge, is a package for working with root systems and finite Coxeter groups. It provides facilities for manipulating roots, reflections, reduced expressions, for generating permutation representations and irreducible characters of finite Coxeter groups, and for retrieving information such as one finds in the appendices of Bourbaki. The weylsubpackage provides additional procedures for manipulating weights and characters of irreducible representations of semisimple Lie algebras, including functions for computing weight multiplicities, tensor product decompositions, and branching.
CHEVIE: written in GAP3 by Meinolf Geck, Gerhard Hiß, Frank Lübeck, Gunter Malle, Jean Michel, Götz Pfeiffer, is a package for working with finite (real and complex) reflection groups. It works within SAGE-Combinat.
PyCox: written in Python by Meinolf Geck, is a package for working with finite (real and complex) reflection groups. It is intended to be the "successor" toCHEVIE, since the latter depends on GAP3, which is no longer supported. It works within SAGE-Combinat.
Polytopes and Simplicial Complexes
polymake: written in C++ and perl by Ewgenij Gawrilow and Michael Joswig, is a versatile tool for the algorithmic treatment of polytopes and polyhedra. It offers access to a wide variety of algorithms and packages within a common framework.
cdd: written in C++ by Komei Fukuda, is an implementation of the Double Description Method of Motzkin et al. for generating all vertices (i.e. extreme points) and extreme rays of a general convex polyhedron in _Rd_given by a system of linear inequalities. The program can be also used for the reverse operation (i.e. convex hull computation). An implementation of the simplex algorithm for solving linear programming problems is also contained.
lrs: written in ANSI C by David Avis, is an implementation of the reverse search algorithm for vertex enumeration/convex hull problems.
Simplicial Homology: written in GAP, Pascal and C++ by Jean-Guillaume Dumas, Frank Heckenbach, B. David Saunders and Volkmar Welker, is a programme for calculating homology of simplicial complexes, and, more generally, contains efficient algorithms for exact matrix computations (e.g., Smith normal form) for sparse matrices with integer entries.
Algorithms in Operations Research
totORial: The objective of this project is to develop, over the next three years, a comprehensive web-based on-line tutorial system for Operations Research (OR) and Management Science topics.
Miscellaneous
Combinatorial Statistics Finder: created by Chris Berg, Franco Saliola and Christian Stump, provides a platform to collect information about combinatorial objects and statistics, and about their relations.
Novelli-Pak-Stoyanovskii Algorithm: created by Jean Betrema, is an on-line visual implementation of the Novelli-Pak-Stoyanovskii algorithm which provides a bijective proof of the hook formula for the number of standard Young tableau of a given shape.