Development of Safe and Efficient Programs using Abstract Interpretation and the CiaoPP System

Manuel Hermenegildo
Technical University of Madrid and University of New Mexico, Spain
Friday, 11 May, 2007 (All day)

One of the fundamental challenges in program development, from large applications to embedded code, is to be able to develop, in the shortest time possible, programs that are efficient and correct. We argue that in order to achieve this goal, in addition to factors such as better programming languages, substantially improved functionality is needed from programming environments. We present a novel program development framework which uses "Abstract Interpretation" as a fundamental component. Abstract interpretation is a technique which has allowed the development of very sophisticated program analyzers and transformers, which are at the same time provably correct and highly practical. The framework that we present uses this type of program analysis to obtain information about the program. This information is then used to validate programs with respect to partial specifications written using assertions, to detect and locate bugs, to simplify run-time tests, to perform high-level program transformations (such as specialization, parallelization, or resource usage control), and to enrich mobile code with safety certificates. The system can reason with much richer information than, for example, traditional type declarations. This includes pointer aliasing, shapes, exceptions, determinacy, abounds on resource consumption (such as computational cost or sizes of data in the program), etc. CiaoPP, the preprocessor of the Ciao multi-paradigm programming system is an implementation of this framework and will be used to illustrate these ideas.