Abstract Interpretation

Abstract Interpretation
  • Course home page
DAIMI / Courses / Abstract Interpretation

News

The course homepage will be updated continuously. Please check back regularly.

Recent updates:
  • Jan 11, 2010: Added a potential case study, project details and exam details.
  • Oct 30, 2009: Added possible case studies, CodeHawk and SPARROW links.
  • Sep 24, 2009: Added project proposals.
  • Sep 23, 2009: Initial home page created.

Description

The course provides a basic knowledge about abstract interpretation. In the classical framework the execution of programs is modelled by a transition system. The space of possible executions (the collecting semantics) is then systematically over-approximated through Galois connections.

We will study both the theoretical, mathematical foundation, as well as implement the resulting analyses in practice as executable abstract interpreters.

The official course description

Time and place

Lectures: Tuesday 12.15-15.00, in Shannon-157

Lecturer

Jan Midtgaard <>

Please do not hesitate to contact me in case of comments or questions regarding the course.

Course Plan (subject to rearrangements)

Lecture Topic Course Material Exercises
Tue
April 13
Course intro +
Basic concepts of abstract interpretation
Cousot-Cousot:BIS04
Tue
April 20
Operational semantics: transition systems TBA
Tue
April 27
Advanced concepts of abstract interpretation I Cousot-Cousot:JLP92
Tue
May 4
Advanced concepts of abstract interpretation II Cousot-Cousot:JLP92
Tue
May 11
Numeric abstractions Miné:thesis
Tue
May 18
Case study: control-flow analysis by abstract interpretation Midtgaard-Jensen:ICFP08
Tue
May 25
Case study: (one or more of the following)
C Global Surveyor,
The ASTRÉE Static Analyzer,
Context-Sensitive Analysis of Obfuscated x86 Executables
Venet-Brat:PLDI04
Blanchet-al:PLDI03
Lakhotia-al:PEPM10

Project ideas (ranging from easy to more challenging)

  • Implement the CFA from Midtgaard-Jensen:08 by extending the given lexer and parser. Extend it minimally by an numeric abstract domain of your choice.
  • Implement a (non-trivial) analysis for the imperative core language.
  • Implement a (non-trivial) analysis of the Integer Java Virtual Machine (IJVM) (or some extension hereof).
Alternatively, you are very welcome to make a project of your own choice applying some of the abstract interpretation principles and techniques acquired in the course. If you have an idea for such a project, please contact me (for pointers to get you started etc.).

Library links for inspiration:

  • APRON - numerical abstract domain library
  • JavaLib - Java class file parser
  • ...
Paper links (approaching propaganda):

Exam

Date: TBA (between June 4th - July 2nd)

You must have the (bi)weekly hand-ins accepted in order to attend the exam.

Participants will be evaluated on both the course project and a 20-min oral examination (without preparation) after which a combined (7-scale) grade is given.

The best entry to the oral exam is thus a completed/successful project. The oral exam is an opportunity to talk about your project.


Last update: 30 October 2009,