
Enhancements for PPL 0.10
=========================

- Develop a C and Prolog interfaces for all the supported domains.
- Incorporate the domain of intervals.
- Reduce the number of FIXMEs to no more than 20.
- Complete the manual pages for ppl-config, ppl_lpsol and ppl_lcdd.
- Write a manual page for ppl (3).
- Ensure that the Grid tests cover all the code.
- Provide a single, generic implementation to replace all our status
  classes.
- Clearly explain, in the documentation, how (not) to use
  set_GMP_memory_allocation_functions().  More generally, explain how
  to have memory-guarded computations.
- Reconsider the handling of temporary coefficients.
- Provide a generic implementation for the `widening with tokens'.
- Transform LP_Problem into an incremental solver and add to it support
  for abandoning costly computations.
- Add a widening for grids using only generator representations.


Enhancements for PPL 0.10 or later versions
==========================================

- Implement void Polyhedron::envelope_assign(const Polyhedron& y).
- Implement the extrapolation operators defined in HenzingerH95
  and HenzingerPW01.
- See whether, using the techniques described in
  ftp://ftp.ifor.math.ethz.ch/pub/fukuda/reports/polyunion001120.ps.gz
  we can implement bool poly_hull_assign_if_exact(PH& p, const PH& q),
  temporarily in algorithms.hh, more efficiently.
- Provide optimized implementations of Polyhedron::expand_dimension()
  Polyhedron::fold_dimensions().
- Experiment with different compilation flags, such as GCC's
  `-fno-threadsafe-statics'.
- Reimplement the ask-and-tell generic construction.
- Suppose we are only interested in integral solutions (as is the
  case, e.g., in most termination analyses).  Then cutting-plane methods
  (Gomory, Chvtal, ...) allow to shrink polyhedra still not losing any
  integral solution.
  See http://www.cs.unipr.it/ppl/Documentation/bibliography#NemhauserW88


Efficiency Issues
=================

- There must be a more efficient way to implement
  bool Polyhedron::is_disjoint_from(const Polyhedron&).
- There must be a more efficient way to compute convex
  differences.
- We are being rather careless about the creation of temporaries
  as far as the classes Linear_Expression, Constraint and Generator
  are concerned.


Debian packaging
================

- Add an interface package for each Prolog as a suitable version of
  that Prolog appears in Debian.  Control entries for these are in
  control.prologs.
- Find out if /usr/lib/pkgconfig entries are required in any packages.
- libppl-dev is very large.  Consider moving the docs to libppl-doc
  and the other files into libppl.
- Verify the Build-Depends and Build-Depends-Indep settings, as per
  the Debian Developers Reference section 5.10.1 point 1.
- Consider renaming libppl-pwl to libpwl.
