PPL

Home

Documentation

FAQ

Download

Applications

Credits

Mailing Lists

Bugs

Contribute

Links

About

About the Parma Polyhedra Library

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

Genesis

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 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).

Exodus

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.

Leviticus

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

Numbers

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.

Deuteronomy

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.

Joshua

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.

Judges

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.

Ruth

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.

Samuel

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).

Kings

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 continues to work with us in his spare time, as an unpaid volunteer. Which is a pity, since his implementation of intervals has the potential of evolving into a truly remarkable piece of software, and we would like that to happen sooner rather than later.

Chronicles

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.

Ezra

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.

Nehemiah

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!

About these Pages

These pages have been produced with the help of:
  • The GNU Project: home and source of dozens of wonderful free software tools;
  • WPP: a small perl5 script that allows preprocessing of HTML files;
  • Doxygen: Source code documentation generator tool.
  • bibtex2html: a collection of tools for translating from BibTeX to HTML.

[Page last updated on November 13, 2009, 08:30:50.]

© Roberto Bagnara

Home | Documentation | FAQ | Download | Applications | Credits | Mailing Lists | Bugs | Contribute | Links | About