Section: New Results
Design of the Apron Library
Participants : Bertrand Jeannet [ INRIA Rhône-Alpes ] , Antoine Miné.
In  , we describe Apron , a freely available library dedicated to the static analysis of the numerical variables of programs by abstract interpretation ( 5.2 ). Its goal is to provide analysis implementers with reference implementations of classic domains, encourage the research in new numerical abstract domains, and provide a teaching and demonstration tool to disseminate knowledge on abstract interpretation. The tool paper describes the different components of Apron and, more importantly, its unique design philosophy. The core idea is that the API corresponds to a concrete semantics that domains are free to approximate in any sound way, thus enabling efficient abstract algorithms and incremental development with a precise control over trade-offs between semantic precision, algorithmic cost, and human cost of domain development. This is in contrast to other libraries that hardcode an abstract semantics into their API, which then becomes tied to particular abstraction choices. Our concrete semantics is rich, allowing to express in particular non-linear and floating-point computations, but we provide default abstractions for these complex cases. Indeed, Apron aims at conciliating two kinds of users with conflicting requirements: analysis designers wishing for a rich, high-level, and domain-independent API, and domain designers, wishing to implement a minimal set of low-level entry-points.