Combinatorial Software and Databases
General
- 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 of
combstruct. The version for MuPAD 2.0
is included in the
MuPAD-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 Sequences
with 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 is
vaxmaple.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.
-
The SAGE
Poset Theory Package:
provides tools for handling partially ordered sets.
Graphs
- 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.
-
The SAGE
Graph Theory Package:
provides tools for handling undirected and directed graphs.
See also: MOLGEN.
Matroids
- 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.
-
The SAGE
Matroid Theory Package:
provides tools for handling matroids.
Designs
- 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
-
The On-Line Encyclopedia of Integer Sequences:
maintained by Neil Sloane, is a huge database of integer sequences.
- 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
Orthogonal Polynomials
- 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 weyl
subpackage 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" to
CHEVIE, 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.