Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9...
-
Upload
reine-lepine -
Category
Documents
-
view
108 -
download
1
Transcript of Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9...
![Page 1: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/1.jpg)
Jean-Jacques Lévy
INRIA
Preuves de programmes et
méthodes formelles
Microsoft TechDays - 9 février 2010
![Page 2: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/2.jpg)
Plan
• Logique de Hoare– fibonacci
– terminaison
– drapeau hollandais
– formules et règles d'inférence
– fonctions récursives
• Logiques de programmes
• Mathématiques formelles
• Conclusion
![Page 3: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/3.jpg)
Logique de Hoare
![Page 4: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/4.jpg)
![Page 5: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/5.jpg)
![Page 6: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/6.jpg)
![Page 7: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/7.jpg)
![Page 8: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/8.jpg)
Trouver l'invariant !!!
![Page 9: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/9.jpg)
![Page 10: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/10.jpg)
![Page 11: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/11.jpg)
![Page 12: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/12.jpg)
![Page 13: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/13.jpg)
![Page 14: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/14.jpg)
![Page 15: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/15.jpg)
![Page 16: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/16.jpg)
![Page 17: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/17.jpg)
![Page 18: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/18.jpg)
![Page 19: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/19.jpg)
Assertions
• les variables ont des valeurs modifiables
• une assertion est une propriété logique sur les valeurs de ces variables
• une assertion est attachée à un point du programme
• on montre l'assertion de fin à partir de l'assertion d'entrée par implications successives grâce à des assertions intermédiaires
![Page 20: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/20.jpg)
![Page 21: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/21.jpg)
![Page 22: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/22.jpg)
![Page 23: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/23.jpg)
![Page 24: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/24.jpg)
Correction partielle – Correction totale
• dans un triplet
• il y a correction partielle
• pour la correction totale, on utilise d'autres méthodes (ordinaux, ...) pour démontrer la terminaison
• les assertions doivent correspondre aux spécifications
• il y a toujours un fossé entre spécifications et assertions
, rien ne garantit que termine
![Page 25: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/25.jpg)
![Page 26: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/26.jpg)
![Page 27: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/27.jpg)
Logiques de programme
![Page 28: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/28.jpg)
logiques d’ordre supérieure
logique de la séparation
environnements de programmation
analyse statique
tests
vérification formelle spécification formelle
logique de Hoarelogiques temporelles
CAO matériel
Hoare et le reste
model checking
![Page 29: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/29.jpg)
emacs, visual studio, eclipse
logiques d’ordre supérieure
logique de la séparation
environnements de programmation
analyse statique
tests
vérification formelle spécification formelle
logique de Hoarelogiques temporelles
CAO matériel
astrée, slam, fluctuat
coq, isabelle, hol
z, tla+
smallfoot
krakatoa, spec#, frama-c
Hoare et le reste
bdds, sat solvers, smt (z3)
model checkingpvs
![Page 30: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/30.jpg)
Krakatoa Frama-C
![Page 31: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/31.jpg)
![Page 32: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/32.jpg)
![Page 33: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/33.jpg)
Avec des pointeurs
static Liste miroir (Liste y, Liste x) { while (x != null) {
Liste z = x.suivant;x.suivant = y;y = x; x = z;
} return y;}
miroir (null, x)
Invariant où est la liste initiale
et est l'image miroir de
logique de la séparation
![Page 34: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/34.jpg)
Avec des pointeurs
• cet invariant n'est vrai que si les deux listes sont disjointes
• la logique de la séparation formule des propriétés par rapport à un certain tas[o'hearn, reynolds]
• un connecteur logique de base exprime que 2 tas sont disjoints
• propriétés modulaires sur les tas mémoire
• ...
![Page 35: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/35.jpg)
Les diverses logiques de programme
• logique de Hoare pour programmes impératifs
• logique de la séparation pour programmes impératifs avec pointeurs
• logique temporelle pour programmes concurrents
• logique d’ordre supérieur pour programmes fonctionnels et mathématiques formelles
• démonstration automatique (model checking) pour calcul booléen et logique sur domaines finis.
![Page 36: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/36.jpg)
Mathématiques formelles
(logique mathématique)
![Page 37: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/37.jpg)
Mathématiques formelles
• calcul booléen[bdds,sat solvers]
• logique de 1er ordre [smt solvers, z3, zenon]
• logique de 1er ordre + théorie des ensembles [tla+]
• logique d'ordre supérieure[coq, ssreflect]
• ...
• théories utiles pour les preuves de programme
• théorème des 4 couleurs [gonthier], Feit-Thompson[?]
• ...
![Page 38: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/38.jpg)
Conclusion
![Page 39: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/39.jpg)
Quelques succès
• spécification système Météor (ligne 14) en Z [abrial]
• analyse statique PV Ariane 5 [deutsch et al, inria]
• analyse statique A380 [astrée, cousot et al, ens]
• compilateur C minor certifié [leroy, inria]
• slam/terminator/spec# teste les drivers de Windows [ball, cook, leino, rajamani, msr]
• ...
• protocoles de sécurité[msr, inria, ens, cachan]
![Page 40: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/40.jpg)
Futur
• méthodes formelles moins chères (bibliothèques, modularité)
• programmes certifiés (avec certificat vérifiable)
• langages de programmation avec plus de facilités pour des spécifications logiques [F7]
• environnements de programmation avec analyses statiques
• vérification des programmes mobiles
• formation des ingénieurs
• processus biologiques vérifiés
![Page 41: Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.](https://reader038.fdocument.pub/reader038/viewer/2022102900/551d9d8c497959293b8c1ab8/html5/thumbnails/41.jpg)