Team Pop Art

Members
Overall Objectives
Scientific Foundations
Application Domains
Software
New Results
Contracts and Grants with Industry
Other Grants and Activities
Dissemination
Bibliography

Section: Software

APRON libray

Participant : Bertrand Jeannet.

The APRON library (http://apron.cri.ensmp.fr/library/ )is dedicated to the static analysis of the numerical variables of a program by Abstract Interpretation  [47] . Its goal is threefold: provide ready-to-use numerical abstractions for analysis implementers, encourage the research in numerical abstract domains by providing a platform for integration and comparison, and provide a teaching and demonstration tool to disseminate knowledge on abstract interpretation.

Figure 1. Typical static analyser and examples of abstract domains
IMG/bertrand1

Motivation and Principles.

Many abstract domains have been designed and implemented for analysing the possible values of numerical variables during the execution of a program, cf. Fig.  1 . However their API diverge largely (datatypes, signatures, ...), which does not facilitate their diffusion and experimental comparison w.r.t. efficiency and precision aspects.

The APRON library aims to provide:

From an abstract domain implementor point of view, the benefits of the APRON library are:

For the client static analysis community, the benefits are an unified, higher-level interface, allows experimenting, comparing and combining abstract domains.

Implementation.

Fig.  2 depicts the organisation of the APRON library. The existing underlying libraries connect to the developer interface, using domain-independent datatypes, and exploiting common services. Independent libraries like PPL [38] can be connected using a wrapper. Client tools connect to the higher-level user interface, where variables (or addresses) and environments replace geometrical notions like dimensions and space dimensionality.

The APRON library is written in C ANSI, with an object-oriented and thread-safe design. Both multi-precision and floating-point numbers are supported. A wrapper for the OCaml language is available, and a C++ wrapper is on the way. It is distributed since June 2006 under the LGPL license and available at http://apron.cri.ensmp.fr/ .

Its development has still progressed much since. There are already many external users ( ProVal/Démons, LRI Orsay, France — Analysis of Computer Systems Group, New-York University, USA — Sierum software analysis platform, Kansas State University, USA — NEC Labs, Princeton, USA — EADS CCR, Paris, France — IRIT, Toulouse, France )

Figure 2. Organisation of the APRON library
IMG/bertrand2

previous
next

Logo Inria