22
Introduction Interpr´ etation abstraite Conception de l’analyseur esultats Analyse de programmes par interpr´ etation abstraite Marc PEGON [email protected] Ensimag - Grenoble INP Encadrants David MONNIAUX Matthieu MOY 1 / 21

Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Analyse de programmes par interpretation abstraite

Marc [email protected]

Ensimag - Grenoble INP

Encadrants

David MONNIAUX Matthieu MOY

1 / 21

Page 2: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Analyse statique : obtenir automatiquement des informationssur le comportement d’un programme, sans reellementl’executer

model-checkinginterpretation abstraite

Outils d’analyse utilises dans l’industrie : Polyspace, Astree,Coverity (?)..

Contribution : developpement d’un outil d’analyse deprogrammes C par interpretation abstraite

2 / 21

Page 3: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

1 Interpretation abstraite

2 Conception de l’analyseurObjectifLLVMApronAlgorithme simplifie

3 Resultats

3 / 21

Page 4: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Plan

1 Interpretation abstraite

2 Conception de l’analyseur

3 Resultats

4 / 21

Page 5: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Prouver des proprietes de surete (debordementsarithmetiques, divisions par 0, ..)

Etat indesirable = Point de programme + Valeurs desvariables

Idee : Determiner toutes les valeurs prises par les variables

Probleme : Trop complexe (theorie)

Solution : Approximation (Abstraction)

5 / 21

Page 6: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Calcul d’intervalles

Calculer un intervalle de valeurs possibles pour chaque variable

Exemple

// x ∈ [2, 5]y = 2 * x;// y ∈ [4, 10]if (y <= 4) {

z = y - 2;// z ∈ [2, 2]

} else {z = y + 2;// z ∈ [7, 12]

}// z ∈ [2, 12]

6 / 21

Page 7: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Et avec des boucles ?

Rechercher un invariant :

Exemple

x = 2;

// [2, 2], [2, 4], .., [2, 12], [2, 12]while (x <= 10) {

x += 2;// [4, 4], [4, 6], .., [4, 12]

}

// ∅, ∅, .., [11, 12]

7 / 21

Page 8: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Elargissement

”Extrapolation” pour accelerer/permettre la convergence

Exemple

x = 2;

// [2, 2], [2, 4]→ [2,+∞[, [2, 12]→ [2,+∞[while (x <= 10) {

x += 2;// [4, 4], [4, 12]

}

// ∅, [11,+∞[

8 / 21

Page 9: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Reduction de l’invariant

Par un pas de calcul supplementaire

Exemple

x = 2;

// [2,+∞[, [2, 12]while (x <= 10) {

x += 2;// [4, 12], [4, 12]

}

// [11,+∞[, [11, 12]

9 / 21

Page 10: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Probleme avec les intervalles : aucune relation entre les variables

Exemple

// x ∈ [0, 1]y = x;// y ∈ [0, 1]z = x-y;// z ∈ [−1, 1]

Solution : polyedres convexes

10 / 21

Page 11: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Probleme avec les intervalles : aucune relation entre les variables

Exemple

// x ∈ [0, 1]y = x;// y ∈ [0, 1]z = x-y;// z ∈ [−1, 1]

Solution : polyedres convexes

10 / 21

Page 12: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

ObjectifLLVMApronAlgorithme simplifie

Plan

1 Interpretation abstraite

2 Conception de l’analyseurObjectifLLVMApronAlgorithme simplifie

3 Resultats

11 / 21

Page 13: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

ObjectifLLVMApronAlgorithme simplifie

Verifier des proprietes : check

Faire des hypotheses sur les variables : assume

Analyseur correct (sound)

Ne se trompe jamais quand il ne signale pas d’erreurPeut emettre des fausses alarmes

Exemple

assume(x >= 5);y = x / 2;check(y > 0);

12 / 21

Page 14: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

ObjectifLLVMApronAlgorithme simplifie

On n’analyse pas directement du code C

Representation intermediaire : bitcode LLVM

Programme : graphe de flot de controleNoeuds : blocs de baseArcs : sauts (conditionnels ou non)

13 / 21

Page 15: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

ObjectifLLVMApronAlgorithme simplifie

int i = 2;int j = 0;

while (i+j <= 20){if (i >= 10) {

i += 4;} else if (j <= 4){

i += 2;j++;

}}

i+j ≤ 20

i ≥ 10 i > 10 ^ j ≤ 4

i+j > 20

14 / 21

Page 16: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

ObjectifLLVMApronAlgorithme simplifie

Utilisation de Apron pour les calculs sur les polyedres(enveloppe convexe, affectation, ..)

Apron = bibliotheque de calcul pour les domaines numeriquesabstraits

IntervallesEgalites lineairesOctogonesPolyedres convexes

Interface commune entre differentes bibliotheques de calcul⇒ une ligne a changer dans le code de l’analyseur pour

changer de domaine

15 / 21

Page 17: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

ObjectifLLVMApronAlgorithme simplifie

Calcul d’un polyedre par bloc de base : approximationsuperieure des etats possibles du programme au niveau de cebloc

b

prédécesseurs

successeurs

Arret quand tous les polyedres sont stabilises

Phase de descente : visite des blocs sans elargissement

16 / 21

Page 18: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Plan

1 Interpretation abstraite

2 Conception de l’analyseur

3 Resultats

17 / 21

Page 19: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Peu de lignes de code (' 1000)

Analyseur correct

Limitations :

Seule la fonction main est analyseeVariables numeriques entieres uniquementEntiers = elements de Z

18 / 21

Page 20: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Exemple

i n t i = 2 ;i n t j = 0 ;

whi le ( i <= 10) {i = i + 2 ;j = j + 1 ;check ( i == 2∗( j +1) ) ;

}

check ( j == 5) ;}

Les deux proprietes sont prouvees automatiquement parl’analyseur.

19 / 21

Page 21: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Perspectives

Analyse de plusieurs fonctions et gestion des appels defonction

Gestion des variables flottantes (possible grace a Apron)

Gestion des variables booleennes (model checking ?)

Reduction des invariants (en elargissant en moins de points)

Evaluation et amelioration des performances (reduire lenombre de dimensions, ..)

20 / 21

Page 22: Analyse de programmes par interprétation abstraiteIntroduction Interpr etation abstraite Conception de l’analyseur R esultats Analyse de programmes par interpr etation abstraite

IntroductionInterpretation abstraite

Conception de l’analyseurResultats

Merci

21 / 21