Original author(s)Ewgenij Gawrilow and Michael Joswig
Initial release1997; 27 years ago (1997)
Stable release
4.11 / 6 November 2023; 8 months ago (2023-11-06)
Repository
Written inC++, Perl
Operating systemLinux, Mac
Available inEnglish
LicenseGNU General Public License
Websitepolymake.org

polymake is software for the algorithmic treatment of convex polyhedra.[1]

Albeit primarily a tool to study the combinatorics and the geometry of convex polytopes and polyhedra,[2] it is by now also capable of dealing with simplicial complexes, matroids, polyhedral fans, graphs, tropical objects, toric varieties and other objects. In particular, its capability to compute the convex hull and lattice points of a polytope proved itself to be of quiet use for different kinds of research.[3]

polymake has been cited in over 300 recent articles indexed by Zentralblatt MATH as can be seen from its entry in the swMATH database.[4]

Special features and applications

[edit]

polymake exhibits a few particularities, making it special to work with.

Firstly, polymake can be used within a Perl script. Moreover, users can extend polymake and define new objects, properties, rules for computing properties, and algorithms.[5]

Secondly, it exhibits an internal client-server scheme to accommodate the usage of Perl for object management and interfaces as well as C++ for mathematical algorithms.[6] The server holds information about each object (e.g., a polytope), and the client sends requests to compute properties. The server has the job of determining how to complete each request from information already known about each object using a rule-based system. For example, there are many rules on how to compute the facets of a polytope. Facets can be computed from a vertex description of the polytope, and from a (possibly redundant) inequality description. polymake builds a dependency graph outlining the steps to process each request and selects the best path via a Dijkstra-type algorithm.[6]

polymake divides its collection of functions and objects into 10 different groups called applications. They behave like C++ namespaces. The polytope application was the first one developed and it is the largest.[7]

Development History

[edit]

polymake version 1.0 first appeared in the proceedings of DMV-Seminar "Polytopes and Optimization" held in Oberwolfach, November 1997.[2] Version 1.0 only contained the polytope application, but the system of "applications" was not yet developed. Version 2.0 was in July 2003, [17] and version 3.0 was released in 2016.[18] The last big revision, version 4.0, was released in January 2020.[19]

Interaction with other software packages

[edit]

polymake is highly modularly built and, therefore, displays great interaction with third party software packages for specialized computations, thereby providing a common interface and bridge between different tools. A user can easily (and unknowingly) switch between using different software packages in the process of computing properties of a polytope.[20]

Used within polymake

[edit]

Below is a list of third-party software packages that polymake can interface with as of version 4.0. Users are also able to write new rule files for interfacing with any software package. Note that there is some redundancy in this list (e.g., a few different packages can be used for finding the convex hull of a polytope). Because polymake uses rule files and a dependency graph for computing properties,[5] most of these software packages are optional. However, some become necessary for specialized computations.

Used in conjunction with polymake

[edit]

References

[edit]
  1. ^ Official Website
  2. ^ a b Gawrilow, Ewgenij; Joswig, Michael (2000-01-01). Kalai, Gil; Ziegler, Günter M. (eds.). polymake: a Framework for Analyzing Convex Polytopes. Polytopes—combinatorics and computation, DMV Seminar. Birkhäuser Basel. pp. 43–73. doi:10.1007/978-3-0348-8438-9_2. ISBN 9783764363512.
  3. ^ Assarf, Benjamin; Gawrilow, Ewgenij; Herr, Katrin; Joswig, Michael; Lorenz, Benjamin; Paffenholz, Andreas; Rehn, Thomas (2017-03-01). "Computing convex hulls and counting integer points with polymake". Mathematical Programming Computation. 9 (1): 1–38. arXiv:1408.4653. doi:10.1007/s12532-016-0104-z. ISSN 1867-2957. S2CID 5594262.
  4. ^ "Polymake - Mathematical software - swMATH".
  5. ^ a b Joswig, Michael; Müller, Benjamin; Paffenholz, Andreas (2009-02-17). "Polymake and Lattice Polytopes". arXiv:0902.2919 [math.CO].
  6. ^ a b Gawrilow, Ewgenij; Joswig, Michael (2005-07-13). "Geometric Reasoning with polymake". arXiv:math/0507273.
  7. ^ a b "polymake documentation, application: polytope". polymake.org. Retrieved 2016-06-11.
  8. ^ "polymake documentation, application: common". polymake.org. Retrieved 2016-06-11.
  9. ^ "polymake documentation, application: fan". polymake.org. Retrieved 2016-06-11.
  10. ^ "polymake documentation, application: fulton". polymake.org. Retrieved 2016-06-11.
  11. ^ "polymake documentation, application: graph". polymake.org. Retrieved 2016-06-11.
  12. ^ "polymake documentation, application: group". polymake.org. Retrieved 2016-06-11.
  13. ^ "polymake documentation, application: ideal". polymake.org. Retrieved 2016-06-11.
  14. ^ "polymake documentation, application: matroid". polymake.org. Retrieved 2016-06-11.
  15. ^ "polymake documentation, application: topaz". polymake.org. Retrieved 2016-06-11.
  16. ^ "polymake documentation, application: tropical". polymake.org. Retrieved 2016-06-11.
  17. ^ "release of polymake 2.0". www.computational-geometry.org. Retrieved 2023-11-13.
  18. ^ "Polymake 3.0". GitHub. Retrieved 2016-06-28.
  19. ^ "Polymake 4.0 [polymake wiki]". polymake.org. Retrieved 2023-11-13.
  20. ^ Gawrilow, Ewgenij; Joswig, Michael (2001-06-01). "Polymake: An approach to modular software design in computational geometry". Proceedings of the seventeenth annual symposium on Computational geometry. SCG '01. New York, NY, USA: Association for Computing Machinery. pp. 222–231. doi:10.1145/378583.378673. ISBN 978-1-58113-357-8. S2CID 16519425.