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.