Convex - a Maple package for convex geometry

Current version: 1.2.0 (2016-06-07)

Copyright © 1999-2016 Matthias Franz

Convex is a Maple package for convex geometry. It can deal with polytopes, cones and, more generally, with all kinds of polyhedra of (in principle) arbitrary dimension. The only restriction is that all coordinates must be rational.

The integration into the computer algebra system Maple makes Convex particularly suited for "applied" problems where polyhedra arise together with other mathematical structures. Examples we had in mind while writing the package were toric varieties (which are defined by fans) and moment polytopes related to representation theory. But of course the package is not restricted to these kinds of applications — see the list of papers citing Convex. On the other hand, if you want to break the current record for dualizing polytopes, you will probably choose a different program.

The main design principles of Convex are:

Easy to use
One quickly learns how to use it. (See the example.) Part of this strategy is some kind of "object-oriented approach": functions accept different types as input and automatically choose the right subroutine. Moreover, Convex is very easy to install (if you have already installed Maple).
Full generality
No restrictions are imposed on the polyhedra (apart from being rational). They may be unbounded or even contain lines. They may also be empty or not full-dimensional or live in 0-dimensional space. This is important in applications where one wants to apply functions to (many) polyhedra that are the result of previous calculations.
Separate treatment of polyhedra and cones
Though cones are special kinds of polyhedra, they are implemented as a separate type. One reason is that internally polyhedra are reduced to cones (by homogenization). Another reason is that some results depend on whether a cone is considered as cone or as polyhedron. For example, the minimal face of a polyhedron is always the empty face, while the minimal face of a cone is the largest linear subspace it contains (its so-called "lineality space").
The basic functions provided by the package are of course those for convex hull computations and, dually, to compute the vertices and rays of a polyhedron given as the intersection of finitely many halfspaces. Convex uses an implementation of the double description method.

Other functions for polyhedra include: image and preimage under affine maps, Cartesian products and joins, tests for containment and other elementary properties, computations in the face lattice, volumes and distances, drawing polytopes (up to dimension 3). Moreover, one can apply a given function to all faces of a polyhedron, or to all pairs of faces (f1, f2) where f1 is a facet of f2. This is analogous to the Maple function map, which applies a given function to all elements of a list or set.

For cones, there are "linear" analogs of many functions for polyhedra, as well as others.

Convex can also deal with polyhedral complexes (in particular, with simplicial complexes) and with fans. Here functions include: test whether a fan is polytopal, again some map-like function to transverse a fan or polyhedral complex, integral and rational homology computation of polyhedral complexes.


The Convex package comes with an extensive online documentation. You can download the documentation along with the package.


The current version as well as earlier versions are available in the download area. All versions are distributed under the GNU General Public License.


Maple packages based on Convex

TorDiv by Florian Berchtold, Jürgen Hausen and Marcel Widmann
Divisors on toric varieties
Torhom by Matthias Franz
Homology of real and complex toric varieties
ViroHS by Florian Schwerteck
Homology of real Viro hypersurfaces of projective toric varieties
MDSpackage by Jürgen Hausen and Simon Keicher
Mori dream spaces


ConvexInterface by Janko Böhm
connects Maple/Convex with Macaulay2


Click here to see a list of publications using the Convex package.


Matthias Franz, 2019-10-17