M2-6: Abstract interpretation: application to verification and static analysis
This page describes the organization of the course and gives access to the course slides and material.
The course is presented (in French) on the M2-6 page on the MPRI site.
Organization
The course takes place on Monday, from 8:45 to 11:45, at University Paris Cité, in Sophie Germain Building, room 1002.
The course is organized in two periods of 8 courses each.
The first period will begin on 23 September 2024.
The first period will end with a 3-hour written exam on 2 December 2024 from 8:45 to 11:45 AM.
The second period will end with an oral exam. The oral exam consists in the presentation of a research article; the list of articles will be provided a few weeks before the exam.
You will find here the provisional course plan.
The dates may change, so, please consult this page regularly for updates.
The course slides will be put on-line before or shortly after each course.
Reading materials are provided below, including introductory articles and course notes for the first part of the course.
The courses are accompanied with a suggestion of homework assignments.
They consist in course-specific reading assignments, exercises to complete, or experiments to perform.
Assignments are not evaluated by the teachers and give no credit: they are for self-evaluation, to prepare you for the exams.
Although they are optional, it is highly recommended that you complete these assignments.
To complete the theoretical study with implementation, we propose a project (in French).
It is also optional and not evaluated by the teachers.
First Period
-
Lesson 1: 23 September 2024, by Antoine Miné.
Topics: Introduction [slides]; Order theory [slides].
Assignments:
-
Lesson 2: 30 September 2024, by Antoine Miné.
Topics: Program semantics and properties [slides].
Assignments:
-
Lesson 3: 7 October 2024, by Antoine Miné.
Topics: Non-relational numeric abstract domains [slides].
Assignments:
-
Lesson 4: 14 October 2024, by Antoine Miné.
Topics: Relational numeric abstract domains [slides].
Assignments:
- Exercise: Part II of the 2013-2014 exam (Template abstract domain); see the correction.
- Optionally: part III of the same 2013-2014 exam (backward under-approximations with relational numeric domains).
-
Lesson 5: 21 October 2024, by Antoine Miné.
Topics: Analysis of concurrent programs [slides]; Implementation of the MOPSA analyzer [slides].
Assignments:
- Exercise 2 from the 2020-2021 exam (concurrent programs with weak memories, no correction available).
- Practical activity: install the MOPSA academic static analyzer, available as open-source in a GitLab project. Experiment with it. Its on-line documentation provides installation instructions and how to run sample analyses for C and Python programs.
-
Lesson 6: 28 October 2024, by Xavier Rival.
Topics: Partitioning abstract domains [slides].
Assignments: Assignments on the last slide.
-
Lesson 7: 4 November 2024, by Caterina Urban.
Topics: Termination analysis [slides].
-
Lesson 8: 18 November 2024, by Caterina Urban.
Topics: Termination resilience anaysis [slides]; Analysis of CTL properties [slides]; Automatic detection of vulnerable variables for CTL properties of programs [slides].
Mid-term written exam: 2 December 2024 from 8:45 to 11:45 AM.
See also the former written exams.
Second Period
-
Lesson 9: 9 December 2024, by Jérôme Feret.
Lesson 10: 16 December 2024, by Jérôme Feret.
Topics: Abstract interpretation of mobile systems [slides].
-
Lesson 11: 6 January 2025, by Jérôme Feret.
Topics: Static analysis of digital filters; .
-
Lesson 12: 13 January 2025, by Caterina Urban.
Topics: Formal verification of Machine Learning.
-
Lesson 13: 20 January 2025, by Caterina Urban.
Topics: Static analysis for Data Science.
-
Lesson 14: 27 January 2025, by Xavier Rival.
Topics: Memory abstraction.
-
Lesson 15: 3 February 2025, by Xavier Rival.
Topics: Shape analysis abstractions.
-
Lesson 16: 10 February 2025, by Xavier Rival.
Topics: Security analysis.
Final oral exam: TBA.
The following articles give an taste of the contents and the goal of the course:
- P. Cousot. Verification by Abstract Interpretation. In International Symposium on Verification (Theory & Practice) celebrating Zohar Manna's 10000002-th birthday, volume 2472 of LNCS, Springer, 2003.
- J. Bertrane, P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné, X. Rival.
Static analysis and verification of aerospace software by abstract interpretation.
In Foundations and Trends in Programming Languages (FnTPL), 2(2–3), 71–190, 2015. Now Publishers.
Several recent books have been published on Abstract Interpretation:
Course notes are available for the beginning of the course.
They cover roughly lessons 1 to 4.
The contents of the later lessons is generally covered in articles.
Each course will thus provide a specific bibliography in the course slides, for reference (reading is them is not mandatory).
An example programming project (in French) is available, with associated source code.
The goal is to extend a small analyzer for a toy language written in OCaml.
This completely optional project will not be evaluated by the teachers and will not give credit.
It is here for students wishing to practice the implementation of some principles seen during the course.
The project is based on a course given at École normle supérieure and at Sorbonne Université.
We provide here a list of M2 internship proposals related to the course, either in the Antique team at the ENS (Paris), the APR team at Sorbonne Université (Paris), or the SyCoMoRES team (Lille).
The list is updated regularly!
- Evaluating the Experimental Complexity of Program Analysis, Raphaël Monat & Julien Forget (SyCoMoRES team of Inria Lille & CRIStAL lab)
- Combining Query Languages and Semantic Analysis by Abstract Interpretation to Verify Program Correctness, Antoine Miné (APR, LIP6, Sorbonne Université)
- Verification of Unsafe Code in Rust Programs by Abstract Interpretation, Antoine Miné (APR, LIP6, Sorbonne Université)
- Static Analysis by Abstract Interpretation of Library Bindings in Multi-Language Applications, Antoine Miné (APR, LIP6, Sorbonne Université)
- more to come!
Feel also free to contact directly the teachers for more information and more proposals.
Contact: