Automatisation de la certification formelle de systèmes critiques par instrumentation d interpréteurs abstraits



Documents pareils
Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Des réels aux flottants : préservation automatique de preuves de stabilité de Lyapunov

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Resolution limit in community detection

Cours 1 : La compilation

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Évaluation et implémentation des langages

Vérification formelle de la plate-forme Java Card

Model checking temporisé

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Cours de Master Recherche

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit.

Intelligence Artificielle Planification

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Tâche complexe produite par l académie de Clermont-Ferrand. Mai 2012 LE TIR A L ARC. (d après une idée du collège des Portes du Midi de Maurs)

Théorie de la Programmation

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Analyse de sécurité de logiciels système par typage statique

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Processus d Informatisation

Formula Negator, Outil de négation de formule.

Introduction au langage C

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Conception des systèmes répartis

Certification de l assemblage de composants dans le développement de logiciels critiques

Décision Markovienne appliquée à un jeu de stop ou encore : Pickomino (Heckmeck Am Bratwurmeck)

Cours 1 : Qu est-ce que la programmation?

4.2 Unités d enseignement du M1

Initiation à l algorithmique

Intelligence Artificielle et Robotique

Comment réussir le déploiement de votre communauté B2B et réduire les coûts de votre chaîne logistique?

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Sujet de thèse CIFRE RESULIS / LGI2P

Utilisation des tableaux sémantiques dans les logiques de description

TP3 : Manipulation et implantation de systèmes de fichiers 1

Vers l'orchestration de grilles de PC par les mécanismes de publicationsouscription

MABioVis. Bio-informatique et la

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Université de Bangui. Modélisons en UML

Programmation Objet Java Correction

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Cours Composant 2. Qualité logicielle et spécications algébriques

Francis BISSON ( ) Kenny CÔTÉ ( ) Pierre-Luc ROGER ( ) IFT702 Planification en intelligence artificielle

La gestion des contraintes pour modéliser les stratégies humaines d'ordonnancement et concevoir des interfaces homme-machine ergonomiques

La Certification de la Sécurité des Automatismes de METEOR

Analyse,, Conception des Systèmes Informatiques

Machines virtuelles Cours 1 : Introduction

Apprentissage Automatique

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

TP 1. Prise en main du langage Python

Le Collège de France crée une chaire pérenne d Informatique, Algorithmes, machines et langages, et nomme le Pr Gérard BERRY titulaire

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Peut-on imiter le hasard?

L apprentissage automatique

Calculabilité Cours 3 : Problèmes non-calculables.

Structuration des décisions de jurisprudence basée sur une ontologie juridique en langue arabe

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

Modélisation multi-agents - Agents réactifs

Générer du code à partir d une description de haut niveau

Vérification formelle de la plate-forme Java Card

Étude de l'analyse statique de programmes synchrones par interprétation abstraite

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Problème : Calcul d'échéanciers de prêt bancaire (15 pt)

Notre modèle d engagement

LES GENERATEURS DE NOMBRES ALEATOIRES

Plan. Un modèle d organisation. Pour les Archives numériques. Présentation Groupe PIN. Claude HUC (CNES)

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Programmer en JAVA. par Tama

Université Libre de Tunis

DEMANDE D INFORMATION RFI (Request for information)

Les apports de l informatique. Aux autres disciplines

Programmation Par Contraintes

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Optimisation multi-critère pour l allocation de ressources sur Clouds distribués avec prise en compte de l énergie

MATH ELEMENTS DU CALCUL DES PROBABILITES

La demande Du consommateur. Contrainte budgétaire Préférences Choix optimal

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Sujet 1 : Diagnostique du Syndrome de l apnée du sommeil par des techniques d analyse discriminante.

BACCALAURÉAT PROFESSIONNEL ÉPREUVE DE MATHEMATIQUES. EXEMPLE DE SUJET n 2

Tout au long de votre cursus Quel métier futur? Dans quel secteur d activité? En fonction de vos goûts et aptitudes et du «niveau d emploi» dans ce

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Diagramme de classes

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P

OCL - Object Constraint Language

Urbanisation de système d'information. PLM 6 (Product Lifecycle Management) Collaboration et partage d'informations

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE

Introduction au datamining

INGENIERIE DES SYSTEMES INFORMATIQUES - PARCOURS : MOBILITE ET CLOUD COMPUTING

Classification non supervisée

Introduction à la sécurité Cours 8 Infrastructure de clés publiques. Catalin Dima

Transcription:

1 d Automatisation de la certification formelle de systèmes critiques par instrumentation d sous la direction de Michaël Périn Soutenance de Thèse de Doctorat Université de Grenoble - Laboratoire Verimag 27 Août 2010

2 Global d La programmation des ordinateurs est une activité difficile Il existe des programmes dont l utilisation est critique Il est nécessaire de valider la correction des programmes développés avant leur utilisation

3 Global d Pour résoudre ce problème il faut des méthodes à la fois efficaces et précises Développement de théories permettant de valider les programmes (Depuis Floyd-Hoare 1969) Ces théories conduisent à des outils de validation automatique (model-checkers,, prouveurs,...)

4 La Validation d Les Vérificateurs automatiques vérifient des propriétés données : Programme p Outil de Validation OK Propriété Ψ Ψ = def n i n + 2

4 La Validation d Les Vérificateurs automatiques vérifient des propriétés données : Programme p Outil de Validation OK Propriété Ψ Ψ = def n i n + 2

5 La Validation d Les Analyseurs statiques découvrent des propritétés Programme p Outil de Validation Programme p annoté par Ψ

6 Illustration d un outil de Validation d Example void exemple(int n){ int i = 0 ; while (i <= n) do { i = i + 2 ; } }

7 Illustration d un outil de Validation d Un programme peut être vu comme un système de transitions Example q 0 i := 0 i > n q 1 q 3 i <= n q 2 i := i + 2 void exemple(int n){ int i = 0 ; while (i <= n) do { i = i + 2 ; } } Les analyseurs statiques permettent de calculer des propriétés sur les programmes aux différents points de contrôle

7 Illustration d un outil de Validation d Un programme peut être vu comme un système de transitions Example q 0 i := 0 i > n q 1 q 3 i <= n q 2 i := i + 2 void exemple(int n){ int i = 0 ; while (i <= n) do { i = i + 2 ; } } Les analyseurs statiques permettent de calculer des propriétés sur les programmes aux différents points de contrôle

8 Illustration d un outil de Validation d Un programme peut être vu comme un système de transitions Example q 0 i := 0 {i n + 2} i > n q 1 q 3 i <= n q 2 {i n} i := i + 2 {n + 1 i i n + 2} void exemple(int n){ int i = 0 ; while (i <= n) do { i = i + 2 ; } } Les analyseurs statiques permettent de calculer des propriétés sur les programmes aux différents points de contrôle

9 d Quelle confiance avoir dans les outils de validation? Générale Les outils de validation sont des programmes Leur correction est à leur tour mise en question Objectif de la Certification Casser la chaîne de validation à l aide d arguments formels convaincants Garantir la correction des programmes avec un niveau de confiance optimal Solution employée Fournir des s formelles de correction des programmes

9 d Quelle confiance avoir dans les outils de validation? Générale Les outils de validation sont des programmes Leur correction est à leur tour mise en question Objectif de la Certification Casser la chaîne de validation à l aide d arguments formels convaincants Garantir la correction des programmes avec un niveau de confiance optimal Solution employée Fournir des s formelles de correction des programmes

9 d Quelle confiance avoir dans les outils de validation? Générale Les outils de validation sont des programmes Leur correction est à leur tour mise en question Objectif de la Certification Casser la chaîne de validation à l aide d arguments formels convaincants Garantir la correction des programmes avec un niveau de confiance optimal Solution employée Fournir des s formelles de correction des programmes

10 d La de programme Certifier un programme consiste à fournir une démonstration de sa correction Trois questions fondamentales : Comment modéliser les démonstrations? Les démonstrations sont des arbres exprimées dans un système formel de logique mathématique encodable en langage machine Comment construire les démonstrations? Les démonstrations sont construites interactivement avec des assistants à la (Coq, hol) Comment vérifier la validité des démonstrations? Les démonstrations sont vérifiées automatiquement par des critères syntaxiques

10 d La de programme Certifier un programme consiste à fournir une démonstration de sa correction Trois questions fondamentales : Comment modéliser les démonstrations? Les démonstrations sont des arbres exprimées dans un système formel de logique mathématique encodable en langage machine Comment construire les démonstrations? Les démonstrations sont construites interactivement avec des assistants à la (Coq, hol) Comment vérifier la validité des démonstrations? Les démonstrations sont vérifiées automatiquement par des critères syntaxiques

10 d La de programme Certifier un programme consiste à fournir une démonstration de sa correction Trois questions fondamentales : Comment modéliser les démonstrations? Les démonstrations sont des arbres exprimées dans un système formel de logique mathématique encodable en langage machine Comment construire les démonstrations? Les démonstrations sont construites interactivement avec des assistants à la (Coq, hol) Comment vérifier la validité des démonstrations? Les démonstrations sont vérifiées automatiquement par des critères syntaxiques

10 d La de programme Certifier un programme consiste à fournir une démonstration de sa correction Trois questions fondamentales : Comment modéliser les démonstrations? Les démonstrations sont des arbres exprimées dans un système formel de logique mathématique encodable en langage machine Comment construire les démonstrations? Les démonstrations sont construites interactivement avec des assistants à la (Coq, hol) Comment vérifier la validité des démonstrations? Les démonstrations sont vérifiées automatiquement par des critères syntaxiques

11 d faire confiance au vérificateur de s? La vérification des démonstrations est un problème de type-checking, algorithmiquement simple. Le vérificateur de est un programme de petite taille Respecte le critère de debruijn Les outils de développement de s n ont pas à être validés La certification a un niveau de confiance optimal

11 d faire confiance au vérificateur de s? La vérification des démonstrations est un problème de type-checking, algorithmiquement simple. Le vérificateur de est un programme de petite taille Respecte le critère de debruijn Les outils de développement de s n ont pas à être validés La certification a un niveau de confiance optimal

12 De la Validation à la Certification d Récapitulons la situation actuelle Valider outils complexes automatique Objectifs Lier le meilleurs des deux approches : Certifier simple vérificateur de s interactif Faciliter d utilisation des outils de validation Niveau de confiance optimal de la certification

12 De la Validation à la Certification d Récapitulons la situation actuelle Valider outils complexes automatique Objectifs Lier le meilleurs des deux approches : Certifier simple vérificateur de s interactif Faciliter d utilisation des outils de validation Niveau de confiance optimal de la certification

13 d Que faut-il certifier? Les outils de validation sont des programmes 2 approches : 1- Preuve de correction des outils de validation (Monniaux 98, Genet 03) Certification de l outil de validation Une unique, construite interactivement lors du développement de l outil 2 - Preuve de correction des verdicts des outils de validation (Pnueli et al 98) Certifier chaque verdict de l outil de validation Une par verdict, construite à chaque exécution de l outil Étendre l outil pour automatiser la certification

13 d Que faut-il certifier? Les outils de validation sont des programmes 2 approches : 1- Preuve de correction des outils de validation (Monniaux 98, Genet 03) Certification de l outil de validation Une unique, construite interactivement lors du développement de l outil 2 - Preuve de correction des verdicts des outils de validation (Pnueli et al 98) Certifier chaque verdict de l outil de validation Une par verdict, construite à chaque exécution de l outil Étendre l outil pour automatiser la certification

13 d Que faut-il certifier? Les outils de validation sont des programmes 2 approches : 1- Preuve de correction des outils de validation (Monniaux 98, Genet 03) Certification de l outil de validation Une unique, construite interactivement lors du développement de l outil 2 - Preuve de correction des verdicts des outils de validation (Pnueli et al 98) Certifier chaque verdict de l outil de validation Une par verdict, construite à chaque exécution de l outil Étendre l outil pour automatiser la certification

13 d Que faut-il certifier? Les outils de validation sont des programmes 2 approches : 1- Preuve de correction des outils de validation (Monniaux 98, Genet 03) Certification de l outil de validation Une unique, construite interactivement lors du développement de l outil 2 - Preuve de correction des verdicts des outils de validation (Pnueli et al 98) Certifier chaque verdict de l outil de validation Une par verdict, construite à chaque exécution de l outil Étendre l outil pour automatiser la certification

14 Travaux de doctorat réalisés d 1- Proposition d une méthodologie d analyseurs statiques à l aide de patrons de 2- Étude de cas sur un analyseur non-trivial d un analyseur statique de programmes manipulant des tableaux 3- Utilisation sur un système critique Certification à l aide de cet analyseur instrumenté de programmes critiques embarqués dans l avionique

14 Travaux de doctorat réalisés d 1- Proposition d une méthodologie d analyseurs statiques à l aide de patrons de 2- Étude de cas sur un analyseur non-trivial d un analyseur statique de programmes manipulant des tableaux 3- Utilisation sur un système critique Certification à l aide de cet analyseur instrumenté de programmes critiques embarqués dans l avionique

15 Plan d 1 2 3 4 5

16 Méthode suivie d q 0 i := 0 {i n + 2} i > n q 1 q 3 i <= n q 2 {i n} i := i + 2 {n + 1 i i n + 2} Utilisation de la méthode de Floyd-Hoare pour certifier que les propriétés calculées sont correctes

17 Méthode suivie d q 0 i := 0 {i n + 2} i > n q 1 q 3 i <= n q 2 {i n} i := i + 2 {n + 1 i i n + 2} Utilisation de la Logique de Hoare pour spécifier la correction de chaque transition du programme {i n + 2}i > n{n + 1 i i n + 2}

18 Méthode suivie d q 0 i := 0 {i n + 2} i > n q 1 q 3 i <= n q 2 {i n} i := i + 2 {n + 1 i i n + 2} Utilisation du calcul de plus faible pré-condition (wp) pour se ramener à des sous-buts de logique mathématique. i n + 2 wp((n + 1 i i n + 2), i > n) sem {i n + 2}i > n{n + 1 i i n + 2}

19 Méthode suivie d q 0 i := 0 {i n + 2} i > n q 1 q 3 i <= n q 2 {i n} i := i + 2 {n + 1 i i n + 2} Utilisation du calcul de plus faible pré-condition (wp) pour se ramener à des sous-buts de logique mathématique. i n + 2 (i > n n + 1 i i n + 2) sem {i n + 2}i > n{n + 1 i i n + 2}

20 Méthode suivie d q 0 i := 0 {i n + 2} i > n q 1 q 3 i <= n q 2 {i n} i := i + 2 {n + 1 i i n + 2} Utilisation de la déduction naturelle pour formaliser les s de ces sous-buts de logique mathématique.... i > n n + 1 i i n + 2 i i n + 2 (i > n n + 1 i i n + 2) sem {i n + 2}i > n{n + 1 i i n + 2}

21 d Prouver la correction de l analyse d une transition Analyze(Ψ, τ) {Ψ} q q {Ψ } τ {Ψ} τ {Ψ } Soit une propriété Ψ en q et une transition τ vers q

22 d Prouver la correction de l analyse d une transition Analyze(Ψ, τ) {Ψ} q q {Ψ } τ {Ψ} τ {Ψ } L analyseur calcule une propriété Ψ en q

23 d Prouver la correction de l analyse d une transition Analyze(Ψ, τ) {Ψ} q q {Ψ } τ {Ψ} τ {Ψ } Utilisation de la logique de Hoare pour spécifier τ

24 d {Ψ} Prouver la correction de l analyse d une transition q Analyze(Ψ, τ) τ Ψ = wp(ψ, τ) {Ψ} τ {Ψ } sem Utilisation du calcul de plus faible pré-condition q wp(ψ, τ) {Ψ }

25 d {Ψ} Prouver la correction de l analyse d une transition q Analyze(Ψ, τ) τ? Ψ = wp(ψ, τ) {Ψ} τ {Ψ } Comment prouver cette implication? sem q wp(ψ, τ) {Ψ }

26 Comment obtenir cette? d Utilisation d outils d aide à la Environnement de du système Coq Existence d heuristiques pour accélérer la construction de la Tout est possible mais tout est difficile car non entièrement automatique Exploitation de l intelligence des analyseurs statiques Se limiter aux programmes traités par l analyseur Se limiter aux propriétés calculées par l analyseur Exploiter les stratégies de l analyseur pour obtenir une stratégie de automatique et complète

26 Comment obtenir cette? d Utilisation d outils d aide à la Environnement de du système Coq Existence d heuristiques pour accélérer la construction de la Tout est possible mais tout est difficile car non entièrement automatique Exploitation de l intelligence des analyseurs statiques Se limiter aux programmes traités par l analyseur Se limiter aux propriétés calculées par l analyseur Exploiter les stratégies de l analyseur pour obtenir une stratégie de automatique et complète

27 d Intuition Les arguments pour justifier la correction d un calcul sont dans les étapes de ce calcul. Structurer les principes calculatoires sous forme d arbres de formelle Apporter des patrons de aux fonctions des programmes pour qu elles puissent justifier leurs résultats Définition Un patron de est une d ordre supérieur avec des sous-s variables, déterminées dynamiquement à l exécution.

27 d Intuition Les arguments pour justifier la correction d un calcul sont dans les étapes de ce calcul. Structurer les principes calculatoires sous forme d arbres de formelle Apporter des patrons de aux fonctions des programmes pour qu elles puissent justifier leurs résultats Définition Un patron de est une d ordre supérieur avec des sous-s variables, déterminées dynamiquement à l exécution.

28 Exemple d instrumentation d On considère la fonction Analyze() qui traite les transitions gardées des programmes : Analyze(Ψ, g) = def let r := conj(ψ, g) in r } {{ } Ψ Analyze π (Ψ, g) = def let r := conj(ψ, g) in (r, π(ψ, g)) H 1 {}}{ H 2 {}}{ Ψ g i Ψ g avec π(ψ, g) = g Ψ g i (H 2 ) φ (g Ψ g) i (H 1 ) {Ψ}g{Ψ g} } {{ } Ψ sem

28 Exemple d instrumentation d On considère la fonction Analyze() qui traite les transitions gardées des programmes : Analyze(Ψ, g) = def let r := conj(ψ, g) in r } {{ } Ψ Analyze π (Ψ, g) = def let r := conj(ψ, g) in (r, π(ψ, g)) H 1 {}}{ H 2 {}}{ Ψ g i Ψ g avec π(ψ, g) = g Ψ g i (H 2 ) φ (g Ψ g) i (H 1 ) {Ψ}g{Ψ g} } {{ } Ψ sem

28 Exemple d instrumentation d On considère la fonction Analyze() qui traite les transitions gardées des programmes : Analyze(Ψ, g) = def let r := conj(ψ, g) in r } {{ } Ψ Analyze π (Ψ, g) = def let r := conj(ψ, g) in (r, π(ψ, g)) H 1 {}}{ H 2 {}}{ Ψ g i Ψ g avec π(ψ, g) = g Ψ g i (H 2 ) φ (g Ψ g) i (H 1 ) {Ψ}g{Ψ g} } {{ } Ψ sem

29 d d une fonction Soit f un fonction qui pour une entrée x retourne r Soit Ψ la propriété exprimant la correction du résultat r Entrée x Fonction f Sortie r la fonction f consiste à lui fournir un patron de π(x) lui permettant de générer une π Ψ. Entrée x Fonction instrumentée f π Fonction f π(x) r, Sortie π Ψ Ψ

30 d let f = let f 1 =... let f 2 =.... let f n =... r = F (r 1,..., r n) Stratégies d instrumentation let f π = let f π 1 =... π1 let f π 2 =... π2. let f π n =... πn r = F (r 1, r 2,..., r n) π = C(π 1, π 2,..., π n) let f π = let f 1 =... let f 2 =.... let f n =... let t π =... π t r = F (r 1, r 2,...r 2) π = π t

30 d let f = let f 1 =... let f 2 =.... let f n =... r = F (r 1,..., r n) Stratégies d instrumentation let f π = let f π 1 =... π1 let f π 2 =... π2. let f π n =... πn r = F (r 1, r 2,..., r n) π = C(π 1, π 2,..., π n) let f π = let f 1 =... let f 2 =.... let f n =... let t π =... π t r = F (r 1, r 2,...r 2) π = π t

30 d let f = let f 1 =... let f 2 =.... let f n =... r = F (r 1,..., r n) Stratégies d instrumentation let f π = let f π 1 =... π1 let f π 2 =... π2. let f π n =... πn r = F (r 1, r 2,..., r n) π = C(π 1, π 2,..., π n) let f π = let f 1 =... let f 2 =.... let f n =... let t π =... π t r = F (r 1, r 2,...r 2) π = π t

31 Plan d 1 2 3 4 5

32 Interpréteurs d Les sont des analyseurs statiques de programmes s appuyant sur une abstraction (Cousot 77) Les propriétés satisfaites par les programmes analysés sont exprimées dans un domaine abstrait A (une syntaxe bien précise) : x = 3 x [3, 3] Ces propriétés sont d abord sur-approximées par une formule grossière de A : x [1, + [ La sur-approximation est ensuite améliorée jusqu à atteindre une propriété stable (non-améliorable) : x [2, 4] La stabilité est établie à l aide d un test d inclusion A qui décide l implication entre deux propriétés de A

32 Interpréteurs d Les sont des analyseurs statiques de programmes s appuyant sur une abstraction (Cousot 77) Les propriétés satisfaites par les programmes analysés sont exprimées dans un domaine abstrait A (une syntaxe bien précise) : x = 3 x [3, 3] Ces propriétés sont d abord sur-approximées par une formule grossière de A : x [1, + [ La sur-approximation est ensuite améliorée jusqu à atteindre une propriété stable (non-améliorable) : x [2, 4] La stabilité est établie à l aide d un test d inclusion A qui décide l implication entre deux propriétés de A

32 Interpréteurs d Les sont des analyseurs statiques de programmes s appuyant sur une abstraction (Cousot 77) Les propriétés satisfaites par les programmes analysés sont exprimées dans un domaine abstrait A (une syntaxe bien précise) : x = 3 x [3, 3] Ces propriétés sont d abord sur-approximées par une formule grossière de A : x [1, + [ La sur-approximation est ensuite améliorée jusqu à atteindre une propriété stable (non-améliorable) : x [2, 4] La stabilité est établie à l aide d un test d inclusion A qui décide l implication entre deux propriétés de A

32 Interpréteurs d Les sont des analyseurs statiques de programmes s appuyant sur une abstraction (Cousot 77) Les propriétés satisfaites par les programmes analysés sont exprimées dans un domaine abstrait A (une syntaxe bien précise) : x = 3 x [3, 3] Ces propriétés sont d abord sur-approximées par une formule grossière de A : x [1, + [ La sur-approximation est ensuite améliorée jusqu à atteindre une propriété stable (non-améliorable) : x [2, 4] La stabilité est établie à l aide d un test d inclusion A qui décide l implication entre deux propriétés de A

33 d Exemple d interprétation Utilisation du domaine abstrait des intervalles : q 0 i := 0 { } i > n q 1 q 3 i <= n q 2 { } i := i + 2 { }

33 d Exemple d interprétation Utilisation du domaine abstrait des intervalles : q 0 i := 0 { } i > n q 1 q 3 i <= n q 2 { } i := i + 2 { }

34 d Exemple d interprétation Utilisation du domaine abstrait des intervalles : q 0 i := 0 {[0, 0]} i > n q 1 q 3 i <= n q 2 {[0, 0]} i := i + 2 { }

35 d Exemple d interprétation Utilisation du domaine abstrait des intervalles : q 0 i := 0 {[0, 2]} i > n q 1 q 3 i <= n q 2 {[0, 0]} i := i + 2 { }

36 d Exemple d interprétation Utilisation du domaine abstrait des intervalles : q 0 i := 0 {[0, 2]} i > n q 1 q 3 i <= n q 2 {[0, 2]} i := i + 2 { }

37 d Exemple d interprétation Utilisation du domaine abstrait des intervalles : q 0 i := 0 {[0, + [} i > n q 1 q 3 i <= n { } q 2 {[0, 2]} i := i + 2 L analyse effectue un élargissement pour surapproximer l intervalle en q 1

38 d Exemple d interprétation Utilisation du domaine abstrait des intervalles : q 0 i := 0 {[0, + [} i > n q 1 q 3 i <= n q 2 {[0, n]} i := i + 2 { } Par la garde i<= n, entre q 1 et q 2, l intervalle calculé en q 1 est réduit à [0, n] en q 2

39 d Exemple d interprétation Utilisation du domaine abstrait des intervalles : q 0 i := 0 {[0, + [} i > n q 1 q 3 i <= n q 2 {[0, n]} i := i + 2 { } L intervalle calculé en q 1 satisfait désormais la garde entre q 1 et q 3

40 d Exemple d interprétation Utilisation du domaine abstrait des intervalles : q 0 i := 0 {[0, + [} i > n q 1 q 3 i <= n q 2 {[0, n]} i := i + 2 {[n + 1, + [} Par la garde i > n entre q 1 et q 3, l intervalle calculé en q 1 est réduit à [n + 1, + ] en q 3

41 d Exemple d interprétation Utilisation du domaine abstrait des intervalles : q 0 i := 0 {[0, n + 2]} i > n q 1 q 3 i <= n q 2 {[0, n]} i := i + 2 {[n + 1, + [} L intervalle obtenu en q 2 induit une amélioration de l intervalle calculé en q 1 L amélioration est détectée à l aide du test d inclusion I Par exemple, [0, n + 2] I [0, + ], car (0 i n + 2) (0 i)

42 d Exemple d interprétation Utilisation du domaine abstrait des intervalles : q 0 i := 0 {[0, n + 2]} i > n q 1 q 3 i <= n q 2 {[0, n]} i := i + 2 {[n + 1, n + 2]} L amélioration obtenue en q 1 est propagée en q 3 L analyse se stabilise et s arrête La stabilité est testée à l aide du test d inclusion I

42 d Exemple d interprétation Utilisation du domaine abstrait des intervalles : q 0 i := 0 {[0, n + 2]} i > n q 1 q 3 i <= n q 2 {[0, n]} i := i + 2 {[n + 1, n + 2]} L amélioration obtenue en q 1 est propagée en q 3 L analyse se stabilise et s arrête La stabilité est testée à l aide du test d inclusion I

43 d d Que faut-il instrumenter pour justifier les analyses? Notre objectif est de minimiser le nombre de fonctions à instrumenter 1 Seule la dernière étape est utile pour apporter des s de correction Les fonctions utiles pour découvrir les propriétés ne sont pas à instrumenter 2 Seuls les opérateurs du domaine abstrait sont à instrumenter pour générer les s! A décide la validité d une implication de deux formules de A Sa version instrumentée, ( π A ), prouve cette implication

43 d d Que faut-il instrumenter pour justifier les analyses? Notre objectif est de minimiser le nombre de fonctions à instrumenter 1 Seule la dernière étape est utile pour apporter des s de correction Les fonctions utiles pour découvrir les propriétés ne sont pas à instrumenter 2 Seuls les opérateurs du domaine abstrait sont à instrumenter pour générer les s! A décide la validité d une implication de deux formules de A Sa version instrumentée, ( π A ), prouve cette implication

43 d d Que faut-il instrumenter pour justifier les analyses? Notre objectif est de minimiser le nombre de fonctions à instrumenter 1 Seule la dernière étape est utile pour apporter des s de correction Les fonctions utiles pour découvrir les propriétés ne sont pas à instrumenter 2 Seuls les opérateurs du domaine abstrait sont à instrumenter pour générer les s! A décide la validité d une implication de deux formules de A Sa version instrumentée, ( π A ), prouve cette implication

44 d d par Ψ π A wp(ψ, τ) Ψ = wp(ψ, τ) {Ψ} τ {Ψ } sem Résultat Les fonctions d analyse ne sont pas à instrumenter : évite de définir des patrons de pour des heuristiques complexes (faisabilité) ne dépend pas de l analyse mais seulement du domaine abstrait (portabilité)

44 d d par Ψ π A wp(ψ, τ) Ψ = wp(ψ, τ) {Ψ} τ {Ψ } sem Résultat Les fonctions d analyse ne sont pas à instrumenter : évite de définir des patrons de pour des heuristiques complexes (faisabilité) ne dépend pas de l analyse mais seulement du domaine abstrait (portabilité)

45 d d par Ψ π A wp(ψ, τ) Ψ = wp(ψ, τ) {Ψ} τ {Ψ } Problème Si la formule wp(ψ, τ) n appartient pas au domaine abstrait A : sem développer un patron de pour justifier la normalisation de wp(ψ, τ) vers A ne dépend toujours pas de l analyse

46 d Méthodologie proposée d 1 Calculer les propriétés avec l analyseur statique 2 Rejouer la dernière itération avec la version instrumentée pour obtenir des s à partir des patrons de.

47 d Méthodologie proposée d 1 Calculer les propriétés avec l analyseur statique 2 Rejouer la dernière itération avec la version instrumentée pour obtenir des s à partir des patrons de. analyse stabilité A π A justification

48 d Méthodologie proposée d 1 Calculer les propriétés avec l analyseur statique 2 Rejouer la dernière itération avec la version instrumentée pour obtenir des s à partir des patrons de. analyse élargissement stabilité A π A justification

49 d Méthodologie proposée d 1 Calculer les propriétés avec l analyseur statique 2 Rejouer la dernière itération avec la version instrumentée pour obtenir des s à partir des patrons de. analyse élargissement amélioration stabilité A π A justification

50 d Méthodologie proposée d 1 Calculer les propriétés avec l analyseur statique 2 Rejouer la dernière itération avec la version instrumentée pour obtenir des s à partir des patrons de. analyse élargissement amélioration stabilité A π A justification

51 d Méthodologie proposée d 1 Calculer les propriétés avec l analyseur statique 2 Rejouer la dernière itération avec la version instrumentée pour obtenir des s à partir des patrons de. analyse élargissement amélioration stabilité A π A justification

52 d Résultats expérimentaux Étude de Cas : l interpréteur abstrait Enkidu Appliquer notre méthodologie générique sur le cas particulier Définition de patrons de pour instrumenter le test d inclusion (et deux autres opérateurs) du domaine abstrait utilisé par Enkidu Certifier automatiquement les propriétés de programmes calculées par Enkidu

53 d Enkidu est un analyseur statique de programmes manipulant des tableaux (Péron et Halbwachs 08) : Partitionne les tableaux selon un ensemble de tranches {ϕ 1, ϕ 2,..., ϕ n } Calcule et associe à chaque tranche une propriété logique sur leur contenu {ψ 1, ψ 2,..., ψ n } Associe à chaque point de contrôle du programme une propriété Ψ du contenu des tableaux par une conjonction des propriétés de tranche Ψ def = l, n k=1 ϕ k (l) ψ k (l) Les ϕ k et les ψ k sont des éléments du domaine des zones

53 d Enkidu est un analyseur statique de programmes manipulant des tableaux (Péron et Halbwachs 08) : Partitionne les tableaux selon un ensemble de tranches {ϕ 1, ϕ 2,..., ϕ n } Calcule et associe à chaque tranche une propriété logique sur leur contenu {ψ 1, ψ 2,..., ψ n } Associe à chaque point de contrôle du programme une propriété Ψ du contenu des tableaux par une conjonction des propriétés de tranche Ψ def = l, n k=1 ϕ k (l) ψ k (l) Les ϕ k et les ψ k sont des éléments du domaine des zones

54 Exemple d void exemple(int n){ int i = 0 ; while (i <= n) do { A[i] = 0 ; i = i + 1 ; } } On choisit la partition P : def ϕ 1 = l [0, i[ ψ 1 def ϕ 2 = l [i, i] ψ 2 def ϕ 3 = l [i +1, n] ψ 3 Représentation graphique des propriétés du tableau A[] : 0 i n ψ 1 ψ 2 ψ 3

55 d q 0 i := 0 i <= n i > n q 1 q 4 q 2 i := i + 1 A[i] := 0 q 3 Exemple On choisit la partition P : def ϕ 1 = l [0, i[ ψ 1 def ϕ 2 = l [i, i] ψ 2 def ϕ 3 = l [i +1, n] ψ 3 Représentation graphique de A[] aux points q 1 et q 3 : 0 ψ 1 i ψ 2 ψ 3 0 i n n i := i + 1 ψ 1 ψ 2 ψ 3

56 d q 0 i := 0 i <= n i > n q 1 q 4 q 2 i := i + 1 A[i] := 0 q 3 Exemple On choisit la partition P : def ϕ 1 = l [0, i[ ψ 1 def ϕ 2 = l [i, i] ψ 2 def ϕ 3 = l [i +1, n] ψ 3 La version instrumentée doit prouver le triplet : { l, l < i ψ 1 l = i ψ 2 }i := i+1{ l, l < i ψ 1 }

57 d q 0 i := 0 i <= n i > n q 1 q 4 q 2 i := i + 1 A[i] := 0 q 3 Exemple On choisit la partition P : def ϕ 1 = l [0, i[ ψ 1 def ϕ 2 = l [i, i] ψ 2 def ϕ 3 = l [i +1, n] ψ 3 Après application du calcul de plus faible pré-condition, il faut montrer l implication suivante : ( l, l < i ψ 1 ) ( l, l < i + 1 ψ l = i ψ 1 ) 2 sem { l, l < i ψ 1 }i := i+1{ l, l < i ψ l = i ψ 1 } 2

58 d Objectif Prouver l implication suivante : ( l, l < i ψ 1 l = i ψ 2 ) } {{ } Ψ Test d inclusion du domaine abstrait ( l, l < i + 1 ψ 1) } {{ } Ψ Utilisation du test d inclusion instrumenté Définition du test d inclusion Ψ = Ψ A Ψ ( q [1, n ], p [1, n], ϕ q I ϕ p ψ p I ψ q) avec P = def {ϕ 1..., ϕ n } et P = def {ϕ 1..., ϕ n }

58 d Objectif Prouver l implication suivante : ( l, l < i ψ 1 l = i ψ 2 ) } {{ } Ψ Test d inclusion du domaine abstrait ( l, l < i + 1 ψ 1) } {{ } Ψ Utilisation du test d inclusion instrumenté Définition du test d inclusion Ψ = Ψ A Ψ ( q [1, n ], p [1, n], ϕ q I ϕ p ψ p I ψ q) avec P = def {ϕ 1..., ϕ n } et P = def {ϕ 1..., ϕ n }

59 d du test d inclusion Patron de associé à A : H 2 z} { ϕ q par π I ϕ q ϕp ϕ p e H 9 1 z } { n^ φ l, ϕ p ψ p p=1 e nv l, ϕ p ψ p p=1 e [l/l ] >= pour nv tout ϕ p ψ p q [1, n ] p=1 e ϕ p ψ par π p I e ψ p ψ p ψ q ψ q e ϕ i (H 2 ) >; q ψ q... i Vn ϕ q ψ q q=1 n i [l /l] V l, ϕ q ψ q q=1 nv n i (H 1 ) V ( l, ϕ p ψ p) ( l, ϕ q ψ q ) p=1 q=1

60 d du test d inclusion Patron de associé à A : H 2 z} { ϕ q par π I ϕ q ϕp ϕ p e H 9 1 z } { n^ φ l, ϕ p ψ p p=1 e nv l, ϕ p ψ p p=1 e [l/l ] >= pour nv tout ϕ p ψ p q [1, n ] p=1 e ϕ p ψ par π p I e ψ p ψ p ψ q ψ q e ϕ i (H 2 ) >; q ψ q... i Vn ϕ q ψ q q=1 n i [l /l] V l, ϕ q ψ q q=1 nv n i (H 1 ) V ( l, ϕ p ψ p) ( l, ϕ q ψ q ) p=1 q=1

61 Implantation d Enkidu est codé en Ocaml et compte environ 10000 lignes. L implantation de comporte deux parties indépendantes : Librairies pour coder la logique et les s + traducteur de s vers le langage Coq (2000 lignes) Implantation des patrons de pour les domaine abstrait des zones et des propriétés de tableaux (500 lignes)

62 d Contributions et Perspectives Une méthodologie de certification par instrumentation : Automatise la construction de s Coq Nombre limité de fonctions à instrumenter Adaptée à des analyseurs statiques existants Expérimentation sur un analyseur complexe : Transformation d un l analyseur en un outil de certification automatique des opérateurs du domaine abstrait des propriétés de tableaux Application à une protocole de communication pour systèmes multi-tâches Perspectives : Appliquer notre méthodologie à des analyseurs de taille industrielle Appliquer notre méthodologie à des vérificateurs de propriétés de logique temporelle

63 d Merci de votre attention.