APRON numerical abstract domain library

The APRON library is dedicated to the static analysis of the numerical variables of a program by Abstract Interpretation. The aim of such an analysis is to infer invariants about these variables. like 1<=x+y<=z, which holds during any execution of the program. You may look at to the Interproc analyzer for an online demonstration of static analysis.

The APRON library is intended to be a common interface to various underlying libraries/abstract domains and to provide additional services that can be implemented independently from the underlying library/abstract domain, as shown by the poster on the right (presented at the SAS 2007 conference. You may also look at:

the associated flyer;

a 15 minutes presentation made at CAV 2009 conference in Grenoble [JM09];

a detailed presentation by Antoine Miné.

Currently, APRON provides a C interface and an OCaml interface. There also exists a C++ interface, which is more experimental.

The version 0.9.10 (10th septembre 2009) contains 3 libraries and 4 abstract domains:

The BOX intervals library

The OCT octagon library

The NEWPOLKA Convex Polyhedra and Linear Equalities library

It also provides an optional interface to the Parma Polyhedra Library, which adds

the Convex Polyhedra and Linear Congruences (grid) domains

the reduced product of NewPolka convex polyhedra and PPL linear congruences

The online Interproc static analyzer illustrates the use of the APRON library in static analysis.

APRON is a free software under LGPL license, except the wrappers related to the PPL library, which follows the GPL license of the PPL library.

An ANSI C compiler (only gcc with ansi option has been tested)

The GMP library, version 4.2 or up, and the MPFR library, version 2.2 or up;

Optionally, Parma Polyhedra Library, and GMP compiled with -enable-cxx configuration option)

configuration option) If you want the C++ interface (still experimental), GCC 4.1.2 or up

If you want to use the OCaml interface, you need the OCaml system, version 3.09 or up, the CamlIDL 1.05 stub code generator for the OCaml interface, as well as GNU SED 4.1 or up, and GNU m4 (if you download from subversion repository). You also need MLGMPIDL, but it can be included if you opt for the "distribution" version of APRON (see below).

Changes

The best way is to access to the SUBVERSION REPOSITORY, by typing something like svn list svn://scm.gforge.inria.fr/svnroot/apron svn co svn://scm.gforge.inria.fr/svnroot/apron/apron/trunk apron svn co svn://scm.gforge.inria.fr/svnroot/apron/apron-dist/trunk apron-dist http://svn.cri.ensmp.fr/svn/apron/ is obsolete)

As the library may still contain subtle bugs, we strongly suggest to be up-to-date with the most recent version.