Polymake is accompanied by a moderate collection of template classes that have proved to be useful for development of the client programs. Throughout this documentation it is called Polymake Template Library (PTL). It is designed in the spirit of and based on the STL. It should by no means be seen as an independent, self-consistent, or in whatever sense complete product, as it is being developed gradually and by demand, along with new polymake clients. On the other hand, there is no reason to hide it from the polymake users, as it provides a good starting point for any individual extension of the polymake system.

Not every class defined in PTL is of interest to a developer of client programs. There are a lot of auxiliary helper classes, whose purpose one could classify, according to the recent trends, as a sort of meta-programming. Therefore the main focus of this documentation lies on the really important classes, such as vectors, matrices or graphs. The separation in "important" and "auxiliary" classes is also manifested in their assigning to various namespaces: the "important" classes are available in the client programs without explicit qualification, while "auxiliary" need an pm:: prefix.

Design principles