Université Paris 7 École Normale Supérieure de Cachan École Normale Supérieure École Polytechnique
Université Paris 6 Université Paris 11 École Nationale Supérieure des Télécommunications
Centre National de la Recherche Scientifique Commissariat à l'Energie Atomique Institut National de Recherche en Informatique et en Automatique

Parisian Master of Research in Computer Science

Master Parisien de Recherche en Informatique (MPRI)

[Home page] [The MPRI course] [Practical information]


Interprétation abstraite : application à la vérification et à l'analyses statique (48h, 6 ECTS)

Responsables : Patrick Cousot et Radhia Cousot

Lieu : École normale supérieure, Salle Samuel Beckett, 8h45-11h45

Plan du cours et intervenants (le cours commence le 2 Octobre 2009)

  1. Fondements (Patrick Cousot)
  2. Analyses statiques et vérification (Julien Bertrane, Radhia Cousot, Jérôme Feret, Antoine Miné)

Objectifs

L'analyse statique de programmes consiste à vérifier statiquement (sans les exécuter) des propriétés dynamiques (à l'exécution) des programmes.

Les classes de propriétés à vérifier sont très diverses comme la sûreté (par exemple, absence d'erreurs à l'exécution), la vivacité (par exemple, garantie de réponse à un signal), la sécurité (par exemple, confidentialité d'informations traitées par un programme), etc.

La grande difficulté pour démontrer automatiquement ces propriétés dynamiques est de trouver les arguments inductifs pour faire la preuve (par exemple, par induction sur le nombre de pas de calcul). Diverses solution sont possibles : demander à l'utilisateur (méthodes déductives), utiliser un modèle finitaire (vérification exhaustive) ou calculer l'argument inductif par approximation de la sémantique du programme (en utilisant les techniques d'approximation de point fixe de l'interprétation abstraite).

Le cours explore cette dernière technique, en rappelle rapidement les bases, afin d'explorer un certain nombre d'abstractions infinitaires qui permettent de traiter un grand nombre d'applications à systèmes d'états infinis, qu'elles soient émergentes, classiques ou industrialisées.

Plan du cours (à titre indicatif)

  1. Introduction à l'interprétation abstraite ;
  2. Domaines abstraits numériques ;
  3. Domaines abstraits symboliques ;
  4. Combinaison et raffinement de domaines abstraits ;
  5. Conception d'un analyseur statique par interprétation abstraite ;
  6. Analyse statique de programmes séquentiels, procéduraux, récursifs, modularité ;
  7. Domaines abstraits probabilistes ;
  8. Vérification de la sécurité de protocoles cryptographiques ;
  9. Estimation de la précision de logiciels numériques ;
  10. Analyse statique de programmes paralléles asynchrones ;
  11. Analyse statique de programmes distribués ;
  12. Analyse statique de code mobile ;
  13. Vérification de systèmes complexes intégrés sur puces ;
  14. Vérification par abstraction paramétrée de prédicats ;
  15. Vérifications statiques sur des logiciels critiques embarqués temps-réel ;
  16. Sujets pratiques et théoriques ouverts en analyse statique par interprétation abstraite, perspectives.

Bibliographie

Les années précédentes

Équipe pédagogique

J. Bertrane ATER ENS LIENS
P. Cousot PU ENS Ulm LIENS
R. Cousot DR CNRS LIENS
J. Feret CR INRIA LIENS
A. Miné CR CNRS LIENS