Analyse de programme et analyse d automate



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

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Objectifs. Clustering. Principe. Applications. Applications. Cartes de crédits. Remarques. Biologie, Génomique

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)

1. Structure d'un programme FORTRAN 95

Cours Informatique Master STEP

Gestion des Clés Publiques (PKI)

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

Sanity Check. bgcolor mgcolor fgcolor

Arbres binaires de recherche

Bernard HAMM, Évelyne LAVOISIER

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

Programmation linéaire

Corrigé des TD 1 à 5

FaceBook aime les Maths!

Cours d analyse numérique SMI-S4

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

Cours d algorithmique pour la classe de 2nde

Résolution de systèmes linéaires par des méthodes directes

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

3 Approximation de solutions d équations

Algorithmique et Programmation, IMA

Qualité du logiciel: Méthodes de test

Algorithmique et structures de données I

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Rapport de stage de première année de Master Optimisation de cache d instructions

INTRODUCTION. 1 k 2. k=1

Objets et Programmation. origine des langages orientés-objet

Rappels sur les suites - Algorithme

Programmes des classes préparatoires aux Grandes Ecoles

Continuité et dérivabilité d une fonction

Apprentissage non paramétrique en régression

Matrice d accès. Master SEMS, Pierre Paradinas. October 16, 2013

Modèles et Méthodes de Réservation

Optimisation, traitement d image et éclipse de Soleil

Programmer en JAVA. par Tama

OPTIMISATION À UNE VARIABLE

Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane

Découverte de Python

Examen Médian - 1 heure 30

Plus courts chemins, programmation dynamique

Sujet 4: Programmation stochastique propriétés de fonction de recours

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments

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

Programmation linéaire

Techniques d ordonnancement pour les SoC

Chp. 4. Minimisation d une fonction d une variable

1 Recherche en table par balayage

Exemple d implantation de fonction mathématique sur ST240

Algorithmes pour la planification de mouvements en robotique non-holonome

Chapitre 7. Récurrences

Etude d Algorithmes Parallèles de Data Mining

Géométrie Algorithmique Plan du cours

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

OASIS Date de publication

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Pourquoi l apprentissage?

Resolution limit in community detection

Modélisation et Simulation

Gestion mémoire et Représentation intermédiaire

Les diagrammes de modélisation

Algorithmique I. Algorithmique I p.1/??

Chapitre 5 : Flot maximal dans un graphe

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

La classification automatique de données quantitatives

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Retournement Temporel

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

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

Cours de Génie Logiciel

L ALGORITHMIQUE. Algorithme

Organigramme / Algorigramme Dossier élève 1 SI

Circuits RL et RC. Chapitre Inductance

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Initiation à l algorithmique

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

RESULTATS DE L ENQUETE DU 25/03/2011 AU 31/03/2011

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

Le théorème de Perron-Frobenius, les chaines de Markov et un célèbre moteur de recherche

Utilisation des tableaux sémantiques dans les logiques de description

Programmation Linéaire - Cours 1

Cours de Master Recherche

Complément d information concernant la fiche de concordance

Économetrie non paramétrique I. Estimation d une densité

Intégration de la dimension sémantique dans les réseaux sociaux

Projet de programmation (IK3) : TP n 1 Correction

Algorithmique, graphes et programmation dynamique Notes de Cours Rapport de Travaux Pratiques. Laurent Canet

Compilation (INF 564)

Introduction au langage C

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Équations d amorçage d intégrales premières formelles

Quatrième partie IV. Test. Test 15 février / 71

Table des matières. Avant-propos... 5 Préface... 9 Introduction Principaux arrêtés royaux et lois étudiés dans cet ouvrage...

DT ULYSSE SERVICE PARTAGE GUIDE UTILISATEUR POUR LA SAISIE DES FRAIS DE DEPLACEMENT

Cours 7 : Utilisation de modules sous python

L informatique en BCPST

Langage Java. Classe de première SI

Transcription:

Introduction Analyse de programme et analyse d automate Projet 2004 François Irigoin École des Mines de Paris - Centre de Recherche en Informatique 20 septembre 2005

Introduction Les questions posées Pas d élargissement? Quel est l algorithme utilisé dans PIPS? Pourquoi marche-t-il en analyse de programmes scientifiques? Marche-t-il aussi en analyse d automate?

Introduction Les questions posées Pas d élargissement? Quel est l algorithme utilisé dans PIPS? Pourquoi marche-t-il en analyse de programmes scientifiques? Marche-t-il aussi en analyse d automate?

Introduction Les questions posées Pas d élargissement? Quel est l algorithme utilisé dans PIPS? Pourquoi marche-t-il en analyse de programmes scientifiques? Marche-t-il aussi en analyse d automate?

Algorithme utilisé dans PIPS Première partie Algorithme utilisé dans PIPS

Algorithme utilisé dans PIPS Analyse modulaire Graphe de contrôle hiérarchique Algorithme Exemple de la voiture Analyse modulaire transformers comme abstraction des commandes et des procédures calculés de bas en haut préconditions comme abstraction des états calculées de haut en bas

Algorithme utilisé dans PIPS Analyse modulaire Graphe de contrôle hiérarchique Algorithme Exemple de la voiture Analyse modulaire transformers comme abstraction des commandes et des procédures calculés de bas en haut préconditions comme abstraction des états calculées de haut en bas

Algorithme utilisé dans PIPS Analyse modulaire Graphe de contrôle hiérarchique Algorithme Exemple de la voiture Analyse modulaire transformers comme abstraction des commandes et des procédures calculés de bas en haut préconditions comme abstraction des états calculées de haut en bas

Algorithme utilisé dans PIPS Analyse modulaire Graphe de contrôle hiérarchique Algorithme Exemple de la voiture Analyse modulaire transformers comme abstraction des commandes et des procédures calculés de bas en haut préconditions comme abstraction des états calculées de haut en bas

Algorithme utilisé dans PIPS Analyse modulaire Graphe de contrôle hiérarchique Algorithme Exemple de la voiture Graphe de contrôle hiérarchique les parties structurées sont conservées et analysées en tant que telles les parties non-structurées sont mise sous la forme de graphe un noeud de graphe peut correspondre à n importe quelle commande complexe les parties structurées et non-structurées se contiennent récursivement on utilise une variante de l algorithme de Bourdoncle pour n avoir à analyser que des boucles WHILE

Algorithme utilisé dans PIPS Analyse modulaire Graphe de contrôle hiérarchique Algorithme Exemple de la voiture Algorithme : approximation de la fermeture transitive d un transformer 1 T (x k 1, x k ) 2 T dx = x k x k 1 3 T (dx) 4 T (dx) = {dx Adx = b A dx b } 5 postcondition : P = {x k [0, [ Ax = Ax 0 + kb A x A x 0 + kb }

Algorithme utilisé dans PIPS Analyse modulaire Graphe de contrôle hiérarchique Algorithme Exemple de la voiture Exemple de la voiture s = 0, t = 0, d = 0 do while(s.le.2.and.t.le.3) read *, x if(x.gt.0.) then t = t + 1 s = 0 else d = d + 1 s = s + 1 endif enddo if(d.le.10) then print *, "healthy" else

Algorithme utilisé dans PIPS Analyse modulaire Graphe de contrôle hiérarchique Algorithme Exemple de la voiture Exemple de la voiture (suite) 1 T(t,s)={s =0, t =t+1, d =d, s<=2, t<=3} 2 T(d,s)={d =d+1, s =s+1, s <=3, t=t <=3} 3 T(d,s,t)={d +t =d+t+1,s+3t+1<=s +3t <=3t+3, t<=t,t <=t+1,t<=4} 4 T (dd,ds,dt){dd+dt=1, 1<=ds+3dt, 0<=dt<=1} 5 dd<=1ds+2dt

Extension de l algorithme Deuxième partie Extensions de l algorithme

Extension de l algorithme Assignations dans les boucles Assignations Comportements périodiques Utilisation de T k Comportements exponentiels Différences d ordre supérieur et polynôme Analyses de monotonicité read *, x while(x.gt.0) { read *, x m = 10 }

Extension de l algorithme Comportements périodiques Assignations Comportements périodiques Utilisation de T k Comportements exponentiels Différences d ordre supérieur et polynôme Analyses de monotonicité real x(0:1,0:9) old = 0 new = 1 do i = 0, 9 x(old,i) = f(i) enddo do t = 1, 1000 do i = 0, 9 x(new,i) = g(x(old,i)) enddo old = new new = 1 - old enddo

Utilisation de T k Extension de l algorithme Assignations Comportements périodiques Utilisation de T k Comportements exponentiels Différences d ordre supérieur et polynôme Analyses de monotonicité non implanté T k = i=0,k 1 T k + = i=1,k T = T i ( T k) (1) T i ( T k) (2) i [0,k[ T k (3)

Extension de l algorithme Comportements exponentiels Assignations Comportements périodiques Utilisation de T k Comportements exponentiels Différences d ordre supérieur et polynôme Analyses de monotonicité n = 2**m nu = n ku = 2 kn = ku + nu ln = 1 do 110 j = 1, m do 100 i = 0, ln-1 print *, i+kn 100 continue ku = ku + ln kn = ku + nu ln = 2 * ln 110 continue

Extension de l algorithme Assignations Comportements périodiques Utilisation de T k Comportements exponentiels Différences d ordre supérieur et polynôme Analyses de monotonicité Différences d ordre supérieur et polynôme Jamais vu dans un code : i = 0 j = 2 do k = 1, 10 j = j - 1 i = i + j enddo print *, i, j

Extension de l algorithme Analyses de monotonicité Assignations Comportements périodiques Utilisation de T k Comportements exponentiels Différences d ordre supérieur et polynôme Analyses de monotonicité tous les cas de la littérature ne sont pas traités les cas qui ne sont pas traités n apparaissent pas dans les codes expériences à poursuivre

Extensions de l analyse des transformers Troisième partie Extensions de l analyse des transformers

Extensions de l analyse des transformers Adaptation de l approche de bas en haut Recalcul des transformers pour les préconditions Recalcul des transformers avec les préconditions Calcul des transformers dans le contexte Adaptation de l approche de bas en haut do ix = 1, nx2 ij = ix do iy = 1, ny2 a(ij) = 0. ij = ij + nx2 enddo enddo

Extensions de l analyse des transformers Adaptation de l approche de bas en haut Recalcul des transformers pour les préconditions Recalcul des transformers avec les préconditions Calcul des transformers dans le contexte Recalcul des transformers pour les préconditions Les transformers sont recalculés pour propager les préconditions implanté

Extensions de l analyse des transformers Adaptation de l approche de bas en haut Recalcul des transformers pour les préconditions Recalcul des transformers avec les préconditions Calcul des transformers dans le contexte Recalcul des transformers avec les préconditions Les transformers sont recalculés avec les préconditions déjà calculées implanté

Extensions de l analyse des transformers Adaptation de l approche de bas en haut Recalcul des transformers pour les préconditions Recalcul des transformers avec les préconditions Calcul des transformers dans le contexte Calcul des transformers dans le contexte (intraprocédural) T (S 1 ; S 2 ) = T (S 1 ) T (S 2 ) T (S 1 ; S 2 ) = T (S 1 ) T S1 (S 2 ) implanté

Extensions de l état et des points de contrôle Quatrième partie Extensions de l état et des points de contrôle

Extensions de l état et des points de contrôle Extensions de l état Résumé de la trace Clonage et expansion de procédure Extensions de l état DO I = 1, IA(N) X(I) = 0. ENDDO M = IA(N) DO I = 1, M X(I) = 0. ENDDO

Extensions de l état et des points de contrôle Extensions de l état Résumé de la trace Clonage et expansion de procédure Résumé de la trace Si i et j se trouvent toujours dans l intervalle [0, 255] : C C T(I,J,K) {I#init<=I+253K, I<=I#init+2K, 2K<=I, I+253K<=255, J#init+252K<=J+252, J+3K<=J#init+3, 3<=J+3K, J<=252K+3} if(x.gt.0.) then k = 1 i = 2 else k = 0 j = 3 endif

Extensions de l état et des points de contrôle Extensions de l état Résumé de la trace Clonage et expansion de procédure Clonage et expansion de procédure subroutine motor(a,c,n) if(a.eq.1.and.c.eq.n) stop "error" if(a.eq.2.and.c.eq.1) stop "error" if(a.eq.1) then a = 0 c = c + 1 endif if(a.eq.2) then a = 0 c = c - 1 endif

Extensions de l abstraction Cinquième partie Extensions de l abstraction

Extensions de l abstraction Transformer pseudo-affine Encodage de valeurs non-entières Transformer pseudo-affine j = i % 2 k = i+1 % 2 i == 2 * l + j i+1 == 2*m + k

Extensions de l abstraction Transformer pseudo-affine Encodage de valeurs non-entières Encodage de valeurs non-entières booléens chaînes de caractères flottants

Questions de la communauté interprétation abstraite Sixième partie Questions de la communauté interprétation abstraite

Questions de la communauté interprétation abstraite Élargissement sur P Élargissement sur T Comportement non-affine Enveloppe convexe retardée Élargissement sur P P 0, T (P 0 ), T 2 (P 0 ), T 3 (P 0 ),...?

Questions de la communauté interprétation abstraite Élargissement sur P Élargissement sur T Comportement non-affine Enveloppe convexe retardée Élargissement sur T Que donne l élargissement de T, T 2, T 3,...?

Questions de la communauté interprétation abstraite Élargissement sur P Élargissement sur T Comportement non-affine Enveloppe convexe retardée Comportement non-affine (1) X = 0 DO I = 0, N X = X + 1 + X*(X-1)*(X-2)*(X-3)... ENDDO

Questions de la communauté interprétation abstraite Élargissement sur P Élargissement sur T Comportement non-affine Enveloppe convexe retardée Comportement non-affine (2) i = 0 do while(x.gt.0.) read *, y if(y.gt.0.) then i = 0 endif read *, x enddo

Questions de la communauté interprétation abstraite Élargissement sur P Élargissement sur T Comportement non-affine Enveloppe convexe retardée Enveloppe convexe retardée J = 0 DO I = 0, N IF(I.EQ.1) THEN J = J + 3 ELSEIF(I.EQ.2) THEN J = J - 1 ELSEIF(I.EQ.3) THEN J = 5 ELSEIF(I.EQ.4) THEN... ENDIF ENDDO

Comparaison expérimentale Septième partie Comparaison expérimentale

Comparaison expérimentale Cas de l ascenseur Cas de l ascenseur (Boigelot & al.) impact du choix des constantes sur la convexité : ajouter des dimensions? suppression des cycles identité? faut-il utiliser l algorithme de Bourdoncle? la minimisation du nombre de WHILE génère davantage d enveloppes convexes de transformers

Conclusion Huitième partie Conclusion

Conclusion Conclusion algorithme développé expérimentalement (Béatrice Creusillet, Nga Nguyen) vitesse et précision pour l analyse des codes scientifiques des extensions nombreuses, implantées ou pas de nouveaux challenges avec les codes d automates

Conclusion Planning du projet réunion de lancement : 28 octobre 2004 6 mois : interfaces génériques, avec support pour exactitude et robustesse définition des benchmarks 12 mois : bibliothèques C pour les domaines existants avec la nouvelle interface nouveaux algorithmes pour élargissement, itération, accélération et partitionnement dynamique 18 mois : bibliothèques C pour les nouveaux domaines abstraits version multidomaine de NBAC (polyèdre, octogone, intervalle) nouvel outil interprocédural, INBAC

Conclusion Planning du projet (suite) 24 mois : intégration de la nouvelle API dans les outils existants pour certains domaines nouveaux algorithmes (slicing, élargissement, accélération, partitionnement) algorithmes adaptatifs : partitionnements dynamiques, partitionnement de traces, partitionnement du contrôle, listes de polyèdres 30 mois : INBAC and NBAC avec produits cartésiens et réduits PIPS avec un nouveau domaine abstrait et des algorithmes adaptatifs partitionnement de traces, partitionnement du contrôle, listes de polyèdres 36 mois : résultats expérimentaux avec les nouveaux domaines et les nouvelles strategies de resolution