Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.

Slides:



Advertisements
Présentations similaires
Yassine Lakhnech Prof. UJF Verimag
Advertisements

Qualité en Développement Laurent Henocque Enseignant Chercheur ESIL/INFO France
Correction de Programmes H. Wertz1 Correction de Programmes Soit lorganigramme suivant : M 0, M,N Ent. Nat. J = I N invariante de boucle I = M condition.
Tests et Validation du logiciel
Introduction. Les pointeurs Bête noir des programmeurs Pas daide de Visual Studio Sauf en utilisant les « break point » Pas toujours intuitif Facile de.
LIST/DTSI 1 15/11/2002 Journées SECC R&D en Validation/Vérification outils pilotée par des besoins industriels Principales réalisations : Claire : environnement.
2002 Exploratoire ASTRÉE : Analyse Statique de logiciels Temps-RÉel Embarqués 1)Le problème considéré est de démontrer statiquement (à la compilation)
Projet FIACRE 1 ACI Sécurité InformatiqueToulouse, novembre 2004 FIACRE Fiabilité des Assemblages de Composants Répartis Modèles et outils pour lanalyse.
Structures de données et complexité
Spécification et qualité du logiciel
Introduction à l’Algorithmique
Raisonnements sur le temps : au carrefour des disciplines
Activités de Recherche et Intégration à l’Equipe SIMBAD
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours dAlgorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
M.E.D.A.L. Module dEnseignement à Distance pour lArchitecture Logicielle Alain VAILLY Diapositive n° 1 IUP MIAGE - Université de NANTES IUP-MIAGE 3ème.
Page 1 Déboguer un programme Java Jacques Lonchamp.
Algèbre relationnelle
la programmation en langage C
Les méthodes formelles en ingénierie des connaissances Damien Lhomme-Desages Jérémie Barlet.
Système formel Nous avons introduit : signes de variables (x, y, z, …), de constantes (0, 1), d’opérations (+, ), de relations (=, ) Axiomes : ce sont.
Version du 22 juin Un outil danalyse statique (synthèse de propriétés) de preuve de propriétés de logiciels écrits en langage C ANSI, utilisé dans.
Quoi ? Un tampon.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Processus de validation basée sur la notion de propriété
Logiques Mathématiques
Graphes Conceptuels J.F. Baget Inria.
Initiation à la conception de systèmes d'information
Programmation logique Logique des prédicats du premier ordre
Sémantique axiomatique
Calcul Relationnel Chapitre 4, Section 4.3.
Programmation logique Démonstrateur automatique
Algorithmique et Programmation
Rappels de logique des prédicats du 1er ordre
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
Présentation du mémoire
1 CSI3525: Concepts des Languages de Programmation Notes # 4: Description Semantique des Languages.
CSI3525: Concepts des Languages de Programmation
Partie II Sémantique.
Sémantique dénotationnelle
Méthodes formelles pour la conception de systèmes répartis par Luigi Logrippo et tous ses collaborateurs et étudiants École d`ingénierie et technologie.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Calcul Relationnel Chapitre 4, Section 4.3.
Programmation non procédurale Le projet ECOLE 2000
326 UMLV Méthodes de classement destinées à de grandes masses de données Applicables à des fichiers séquentiels Complexité : évaluée surtout en nombre.
Jacques Nicolas INRIA /IRISA Rennes
Les assertions en Java.
Algo-Prog en Ada TD1 2 MIC Romaric GUILLERM
Spécification de Demoney en JML par raffinement Pierre-Alain Masson, Julien Groslambert LIFC Besançon Réunion GECCOO - 10 mars 2006 FRE 2661.
Paradigmes des Langages de Programmation
LES PILES ET FILES.
Suites numériques Définitions.
Construire un exposé  Pourquoi ? - but et objectif ?  Pour qui ? - analyse des auditeurs  Quoi ? - essence du message  Dans quel ordre ?
La Logique du premier ordre LPO
D.E ZEGOUR Ecole Supérieure d’Informatique
ALGORITHMIQUE ET PROGRAMMATION C
Approches Formelles en Systèmes d'information
Specifications de Systemes Logiciels المواصفات الشكلية Software Specifications Chapitre 7.
Programmation procédurale preuves D. Preuves Preuves sur les R-algorithmes. Règle de l'appel (Hoare). Exemple Preuves sur les B-algorithmes (Floyd) Automatisation.
Tutorat en bio-informatique
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Le langage Racket (Lisp)
Pour les nuls débutants
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
François CARCENAC,Frédéric BONIOL ONERA-DTIM Zoubir MAMMERI IRIT
Programmation fonctionnelle Preuve
Conception Formelle en PVS Master 2 ISC Chef de Projet: M. Pierre Castéran Présenté par: Roland Atoui Xavier Dumas Sébastien Jardel Laurent Vendredi.
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Raisonnement et logiques
LOGIQUE ET PROGRAMMATION LOGIQUE
Café In: A quoi ca sert la recherche sur la programmation? Comment peut on faire travailler des ordinateurs ensemble? Ludovic Henrio SCALE TeamSCALE Team.
Transcription de la présentation:

Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010

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

Logique de Hoare

Trouver l'invariant !!!

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

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

Logiques de programme

logiques dordre supérieure logique de la séparation environnements de programmation analyse statique tests vérification formelle spécification formelle logique de Hoare logiques temporelles CAO matériel Hoare et le reste model checking

emacs, visual studio, eclipse logiques dordre supérieure logique de la séparation environnements de programmation analyse statique tests vérification formelle spécification formelle logique de Hoare logiques 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 checking pvs

Krakatoa Frama-C

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

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...

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 dordre supérieur pour programmes fonctionnels et mathématiques formelles démonstration automatique (model checking) pour calcul booléen et logique sur domaines finis.

Mathématiques formelles (logique mathématique)

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[?]...

Conclusion

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]

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