Skip to Content
About

About the Parma Polyhedra Library

Here is, more or less, the history of the Parma Polyhedra Library.

The Beginning

The Parma Polyhedra Library began as the project of an advanced programming techniques course, Programmazione (Metodi Avanzati), taught by Roberto Bagnara with the help of Enea Zaffanella at the Department of Mathematics of the University of Parma, Italy.

The course ran from October 2000 to mid June 2001, and was taken by a select group of good (undergraduate) students: Sara Bonini, Andrea Pescetti, Elisa Ricci, and Tatiana Zolo.

The course project that has become known as the Parma Polyhedra Library project was chosen for the following reasons:

  • the teachers needed a powerful C++ convex polyhedra library for use in the China project and other research projects they are involved in;
  • all the students were about to graduate in Mathematics, so they were not scared of seemingly misspelled terms like lineality space;
  • moreover, in case of any trouble, we had a good security net: the Department of Mathematics, where we had no difficulty in obtaining expert advice (see the credits page download area for more on this);
  • people like Hervé Le Verge, Doran Wilde, Bertrand Jeannet, Komei Fukuda and others have published code and information that provided something to start and experiment with (more on the credits and the links pages).

Angela

For three months, starting from April 2001, Angela Stazzone had a consultancy contract to work full-time on the library. She worked on the documentation of the library.

Pat Joins the Team

Since the beginning of June 2001 Patricia M. Hill joined the effort and has been, since then, part of the stable development team.

Elisa

On September 2001, Elisa Ricci started working on her dissertation for the laurea degree in Mathematica. The dissertation, which is focused on the theoretical aspects of double descriptions and of the algorithms that operate upon them, was brilliantly defended on July 23, 2002.

For three months, starting from September 2002, Elisa had a consultancy contract to work full-time on the library. During that period she, among other things, extended the PPL testsuite so as to cover 100% of the library’s code.

Elena and Barbara

The 2002-2003 edition of the course Programmazione (Metodi Avanzati), again taught by Roberto Bagnara with the help of Enea Zaffanella, was followed, among others, by Elena Mazzi and Barbara Quartieri.

The course ran from October 2002 to mid June 2003. Starting from May 2003, Elena and Barbara started their project on extending the PPL with an implementation of bounded differences and simple sections/octagons. They developed prototype implementations that now form the basis of the BD_Shape class that was included in version 0.9 and the Octagonal_Shape class included in version 0.10.

Maximiliano

A course on writing for mathematics and computer science, Scrittura Matematica e Informatica, taught in the second semester of academic year 2003-2004 by Roberto Bagnara with the help of Alessandro Zaccagnini at the Department of Mathematics of the University of Parma, was followed, among others, by Maximiliano Marchesi. Maximiliano did a course project in which he worked at the PPL documentation.

Gang of Five

Another course on programming techniques, Metodologie di Programmazione, taught by Enea Zaffanella with the help of Roberto Bagnara for the students of the first-level degree in Computer Science at the University of Parma, ran from October 2003 to January 2004. Several small/medium sized programming projects were assigned that are related to the development of the PPL. In particular:

  • Irene Bacchi worked on an implementation of the algorithms proposed in the paper Convexity Recognition of the Union of Polyhedra by Alberto Bemporad, Komei Fukuda, and Fabio Torrisi;
  • Danilo Bonardi worked on so-called expression templates for the optimization of the allocation of temporaries;
  • Andrea Cimino worked on an implementation of the simplex algorithm based on integer arithmetic;
  • Giordano Fracasso worked on alternative coefficient implementations, including native integer types with overflow detection;
  • Fabio Trabucchi worked on serialization and deserialization operators for the objects manipulated by the PPL.

The contribution of Andrea Cimino is part of the PPL since version 0.8. The contribution of Giordano Fracasso has been superseded by the work of Abramo Bagnara (see below). All of the other contributions, when suitably engineered and integrated in the main development line, will appear in future releases of the library.

Katy

After investigating previous work on a domain called Z-polyhedra [Anc91], Patricia Hill began a project aimed at the development of a domain of grids, a generalization of the well-known lattice domain.

In October 2003, Katy Dobson started work as a research student at the University of Leeds under the supervision of Patricia Hill to work on the representation of the Grid Domain and algorithms needed for the main operators on this domain.

More recently, Katy has studied reduction algorithms needed for the product of the grids with other polyhedral domains, including the octagonal shape and bounded difference shape domains. It is expected that some of these will be implemented and included in future releases of the library.

OCaml Interface

Claudio Trento, a student of the first-level degree in Computer Science of the University of Pisa, decided to devote the final project of his course of studies to an OCaml interface for the PPL. He obtained a preliminary, very rough interface and then vanished. His work has been superseded by the work of Andrea Cimino (see below).

Abramo Joins the Team

At the end of June 2004, Abramo Bagnara, an independent consultant and software professional, began a short contract, engineering some experimental features of the PPL. His first task was to provide a robust and general implementation of checked native integer arithmetic, which first appeared in PPL 0.7. He then started drafting a brand new and wholly generic implementation of intervals. This appears, in draft form, in PPL 0.10. Abramo is part now part of the core development team.

Matthew

Matthew Mundell joined the group in Leeds for 14 months in 2005-2006 and implemented the domain of grids that was included in the 0.9 release of the PPL. Matthew also helped in improving the design of the PPL testsuite and initiated work on a product domain which has subsequently been developed into the templatic partially reduced product domain that is included in PPL 0.10.

Andrea Strikes Back

From July to November 2006, Andrea Cimino has done contract work on the refinement of the PPL mixed integer linear programming solver and on the development of the Java and OCaml interfaces of the libraries. The latter were first released as part of PPL 0.10. Andrea, who continues to work with us in his spare time as an unpaid volunteer, also developed an experimental interface between the PPL and GLPK, the GNU linear programming kit.

Graphite

On Sunday, August 3, 2008, the core development team was enjoying summer when Sebastian Pop sent this message. At that time we came from a period where we had been working full-time on a program analyzer and, while we knew that we would have released PPL 0.10 one day, this was not yet scheduled. We thus changed our priorities and said that we “[expected] the release to occur in a month or so.” In reality, the release took three full months of hard work: this was the punishment for not having followed the first part of the motto

Release early. Release often. And listen to your customers.

But hey, concerning the second part of the motto, we believe no one can complain!

To Be Continued

About these Pages

These pages have been produced with the help of:

  • The GNU Project: home and source of dozens ofwonderful free software tools;
  • WPP: a small perl5 scriptthat allows preprocessing of HTML files;
  • Doxygen: Source code documentationgenerator tool;
  • bibtex2html: a collection of tools for translating from BibTeX to HTML.
Last updated on