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.
Documentation
The Convex package comes with an extensive
online documentation.
You can download the documentation along with the package.
Download
The
current version
as well as earlier versions
are available in the
download area.
All versions are distributed under the
GNU General Public License.
Applications
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
Interfaces
-
ConvexInterface
by Janko Böhm
-
connects Maple/Convex with
Macaulay2
Research
Click
here
to see a list of publications using the Convex package.
Teaching
Matthias Franz,
2019-10-17