# ZPolyTrans

## A library for computing and enumerating integer transformations of Z-polyhedra

ZPolyTrans is based on PolyLib and Barvinok library.

-- latest version

### What's inside?

ZPolyTrans contains two executables, enumerate_image and enumerate_zp_union. The first one takes as input a set of polyhedra (constraints format, like PolyLib), and the number of integer variables to be projected out. The second one, enumerate_zp_union, takes as input a set of Z-polyhedra (as couples of lattice and polyhedron).

The output is a union of Z-polyhedra (lattice, polyhedron), and the Ehrhart polynomial expressing the number of integer points of the result.

See the README in the distribution for more information.

### How does it work?

It's complicated... See our CASES paper for a short explanation, and the TACO one for a complete explanation (links below).

### It doesn't work!

Sorry about that. Please use the forum to report bugs and problems.

### Installation

See the INSTALL file in the distribution.

You will need to install NTL with GMP support and the Barvinok library before building ZPolyTrans.

### License

ZPolyTrans is open-source software distributed under the terms of the GNU General Public License (version 3+).

### Authors

Main author:

- Rachid Seghir (rachid.seghir@gmail.com)

Other contributors:

- Vincent Loechner (loechner@unistra.fr)

### Bibliography

- Rachid Seghir, Vincent Loechner, and Benoit Meister,
*Integer Affine Transformations of Parametric Z-polytopes and Applications to Loop Nest Optimization*, to appear in Transactions on Architecture and Code Optimization (TACO). (research report) - Rachid Seghir and Vincent Loechner, Memory Optimization by Counting Points in Integer Transformations of Parametric Polytopes, In Proceedings of International Conference on Compilers, Architectures, and Synthesis for Embedded Systems, CASES 2006, pages 74-82, Seoul, Korea, October 2006.