Upload
hakien
View
214
Download
0
Embed Size (px)
Citation preview
1/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Analyse statique de SCADEpar interprétation abstraite
soutenance de stage
Alex AUVOLATANSYS-Esterel Technologies
sous l’encadrement de Jean-Louis Colaço
Juin-Juillet 2014
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
2/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Introduction
SCADE : programmation de systèmes embarqués critiqueForte motivation pour la vérification formelleTechniques : interprétation abstraite (Astrée), model checking(DV, Kind, GATeL)Objectif du stage : nouvelle technique d’analyseNombreux avantages à analyser directement le code SCADE
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
3/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Plan
1 Généralités sur SCADE
2 Interprétation abstraite
3 Domaines à disjonction de cas
4 Contribution personnelle
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
4/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Section 1
Généralités sur SCADE
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
5/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Programme synchrone
Le temps est discretToutes les variables évoluent en même temps
Example
x = 0 -> (pre y + 1)y = x + 1
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
6/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Environnements mémoire
Soit un programme SCADE, on note :X : ensemble des variablesV : ensemble des valeurs
Ce modèle simple suffit !
Definition
Environnement mémoire : fonction de X→ V = M
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
7/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Système de transition, fonction de transition
Un programme SCADE représente une fonction de transition :
s0i1−→ s1
i2−→ s2i3−→ · · ·
Autre écriture :sn = f (c(sn−1) + in)
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
8/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Sémantique collectrice
But : prouver des propriétés généralesOn considère ensemble toutes les entrées possible duprogramme (première abstraction)On considère ensemble tous les moments de l’exécution duprogramme (seconde abstraction)Sémantique collectrice : S ⊂ P(M)
Elle peut s’exprimer comme un point fixe :
S = lfpS0(λA.A ∪ g(A))
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
9/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Preuve de propriétés
Prouver une propriété P , c’est montrer que ∀s ∈ S , s |= P .
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
10/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Section 2
Interprétation abstraite
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
11/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Abstraction
Pas d’algorithmes sur P(M) (problème de terminaison)Domaine abstrait D] : représentation pouvant exprimer uneclasse d’éléments de P(M).Fonction de concrétisation γ : permet de comprendre ce quereprésente une valeur abstraite.Abstraction sûre : s] |= s ⇐⇒ s ⊂ γ(s])
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
12/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Abstraction
concret abstrait
α
γ
Exécutions du programme
Sur-approximationReprésentation abstraite
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
13/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Domaines abstraits numériques
Plusieurs domaines bien connus : intervalles, polyèdres,octogones.Implémentation dans la bibliothèque ApronNe savent gérer que les variables numériques (entières ourationnelles)
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
14/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Abstraction de la sémantique collectrice, preuve depropriétés
On abstrait S par S ] tel que S ⊂ γ(S ]).S ] est également défini comme un point fixe :
S ] = lfpS]0(λs.s] t g ](s))
Si on montre que p = true dans S ], c’est gagné.
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
15/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Preuve de propriété
P
P SS ]
SS ]
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
16/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Section 3
Domaines à disjonction de cas
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
17/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Besoin d’une abstraction performante
Problème : le programme est considéré comme un seul lieuOn veut faire des disjonctions de casOn veut étudier les conditions qui passent d’un cas à l’autreEn résumé : notre programme encode un système detransitions (automate)
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
18/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Un exemple
Étudions un programme simple :
lx = 0 -> pre xc = (lx >= 10)x = if c then 0 else lx + 1
On aimerait prouver x ∈ [0, 10]
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
19/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Disjonctions de cas selon des variables
On se done un ensemble Xd de variables énuméréesOn considère séparément chaque valuation de ces variables
D]d = Md → D]
Chaque valuation correspond à un état du système detransition
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
20/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Exemple
Une représentation appropriée pour traiter notre exemple serait :
init ctt tt ⊥tt ff lx = 0; x = 1ff tt lx = 10; x = 0ff ff 0 ≤ lx ≤ 9; x = lx + 1
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
21/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Principe d’itération
On construit S ] incrémentalement.Prendre un cas nouveau qÉtudier la boucle q → q : on trouve un point fixe précisÉtudier les nouveaux cas accessibles q → q′.Répéter
C’est le principe des itérations chaotiques.
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
22/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Itérations chaotiques sur notre exemple
init lx c x0 ? tt 0 ff 11 tt 0 ff 1
? ff 1 ff 22 tt 0 ff 1
ff [1, 9] ff [2, 10]? ff 10 tt 0
3 tt 0 ff 1? ff [0, 9] ff [1, 10]
ff 10 tt 04 tt 0 ff 1
ff [0, 9] ff [1, 10]ff 10 tt 0
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
23/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Problème d’explosion
On est souvent confronté à des représentations comme celle-ci :
init la lbtt tt tt a = 0; b = 0tt tt ff a = 0; b = 0tt ff tt a = 0; b = 0tt ff ff a = 0; b = 0ff tt tt a = 0; b ∈ [1,∞[
ff tt ff a = 1; b ∈ [1,∞[
ff ff tt a = −1; b ∈ [1,∞[
ff ff ff a = 0; b ∈ [1,∞[
Il y a beaucoup de redondance !
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
24/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
La solution
init
la
lb lb
a = -1b ∈ [1,∞[
a = 0b ∈ [1,∞[
a = 1b ∈ [1,∞[
a = 0b = 0
tt
ff
ff tt
tt ff tt ff
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
25/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Disjonctions de cas avec graphe de décision
Graphe de décision, représenté par un type somme :
T := V(s), s ∈ D]
| C(xi , v1 → T1, . . . , vk → Tk)
Unicité de la représentation garantie par une condition simpleLe partage de sous-graphes permet de gagner en compacité
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
26/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Retour à notre exemple
Notre exemple peut être représenté par la structure suivante :
init
c
⊥
tt
lx = 0x = 1
ff
tt
c
lx = 10x = 0
tt
0 ≤ lx ≤ 9x = lx + 1
ff
ff
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
27/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Principe d’itération
Problème : un cas ne correspond plus à une valuation desvariables Xd . Que faire ?On définit un cas comme étant tous les chemins menant à unefeuille donnée.
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
28/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Section 4
Contribution personnelle
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
29/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Contribution théorique
Formalisation de la sémantique concrète de SCADE (d’unsous-ensemble)Représentation d’un programme SCADE sous la forme d’uneformule logique, adaptée pour l’interprétation abstraiteDomaine abstrait à base de graphes de décision et itérationschaotiques associées
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
30/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Implémentation
Sélection d’un sous-ensemble de SCADEImplémentation d’un interprète concretImplémentation de la transformation en formule logiqueImplémentation du domaine abstrait à disjonction de cas defaçon naïveRé-implémentation avec les graphes de décision
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
31/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Comparaison avec Astrée
Astrée : analyse de C généré par SCADE.Astrée n’implémente pas d’itérations chaotiques : ça neconvient pas du tout à l’analyse de CAstrée implémente un domaine avec des graphes de décision,mais il est moins puissant.Astrée implémente de nombreuses techniques permettant detravailler sur de gros programmes (en particulier le variablepacking)Astrée se pose des questions inutiles en SCADE (typiquementles questions d’initialisation de mémoire)
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
32/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Résultats
Quelques programmes sur lesquels j’ai pu prouver des propriétésintéressantes :
compteursupdowndouble updownsuite de cartesun train (Halbwachs, 1994)un demi-tour pour des rames de metro (Halbwachs, Lagnier, &Ratel, 1992)
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT
33/33
Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références
Références
Halbwachs, N. (1994, September). About synchronousprogramming and abstract interpretation. In B. LeCharlier(Ed.), International symposium on static analysis, sas’94.Namur (belgium) : LNCS 864, Springer Verlag.
Halbwachs, N., Lagnier, F., & Ratel, C. (1992, September).Programming and verifying real-time systems by means of thesynchronous data-flow programming language lustre. IEEETransactions on Software Engineering, Special Issue on theSpecification and Analysis of Real-Time Systems.
Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT