THERREZINHAFERNANDES Algèbres de Kleene pour l’analyse statique des programmes Un nouveau cadre Thèseprésentée àlaFacultédesétudessupérieuresdel’UniversitéLaval danslecadreduprogrammededoctorateninformatique pourl’obtentiondugradedePhilosophiaeDoctor(Ph.D.) FACULTÉDESSCIENCESETDEGÉNIE UNIVERSITÉLAVAL QUÉBEC 2008 (cid:13)c TherrezinhaFernandes,2008 Résumé L’analyse statique des programmes consiste en un ensemble de techniques permettant de déterminer des propriétés des programmes sans avoir à les exécuter. Parmi les applications del’analysestatiquedesprogrammes,nousretrouvonsl’optimisationducodesourcepardes compilateurs et la détection de code malveillant ou de code qui pourrait être exploité à des fins malveillantes. L’évidente pertinence et l’importance (parfois critique) de telles applica- tions expliquent les nombreuses tentatives de compréhension du cadre théorique général de l’analysestatiquedesprogrammes. Les algèbres de Kleene sont la théorie algébrique des automates finis et des expressions régulières. Cet outil algébrique s’est avéré très approprié pour l’analyse statique et la vérifi- cationdesprogrammes. LebutdecettethèseestdedévelopperuncadrealgébriquebasésurlesalgèbresdeKleene pourcalculerlessolutionsd’uneclassegénéraledeproblèmesintraprocédurauxd’analysede flot de données. Ce cadre permet de représenter les programmes, ainsi que leurs propriétés, d’une manière homogène, compacte et expressive. Les algorithmes traditionnels employés pourcalculerlerésultatd’uneanalysesontalorsremplacéspardesmanipulationsalgébriques desélémentsd’unealgèbredeKleene. Abstract Static program analysis consists of techniques for determining properties of programs without actually running them. Among the applications of static program analysis are the optimization by compilers of object code and the detection of malicious code or code that might be maliciously exploited. The obvious relevance and (sometimes critical) importance of such applications explain the many attempts to try to understand the general theoretical frameworkofstaticprogramanalysis. Kleene algebra is the algebraic theory of finite automata and regular expressions. This algebraictoolhasproventobeverysuitableforthepurposeofstaticanalysisandverification ofprograms. The goal of this thesis is to develop an algebraic framework based on Kleene algebra to compute the solutions to a general class of intraprocedural dataflow analysis problems. The framework allows one to represent both the programs and the relevant properties in an homogeneous, compact and readable way. Traditional algorithms used to compute the result ofananalysisarethenreplacedbyalgebraicmanipulationsofelementsofaKleenealgebra. Avant-propos Je souhaite remercier en premier lieu mon directeur de recherche, le professeur Jules Desharnais, pour sa patience, sa compréhension et sa générosité. Son enthousiasme pour la recherche, sa curiosité intellectuelle et son souci du détail ont été des inspirations pour moi etjeluisuistrèsreconnaissantedem’avoirtoujoursencouragée. Jetiensensuiteàremerciermesamisetcollègues,quim’ontbeaucoupsoutenueuxaussi et avec lesquels j’ai vécu de très beaux moments. Je pense plus particulièrement à Lamine Sow, Vincent Mathieu, Beatriz Dias Miranda, Marcelo Ribeiro, Olivia Wu, Michael Canti- notti, Samia El Daoud, Yan Ngoun et Lamia Ketari. Merci aussi aux membres du LSFM, étudiantsetprofesseurs,quej’aicôtoyésavecbeaucoupdeplaisircesdernièresannées.Sans oublier le personnel du Département d’informatique et de génie logiciel, et plus précisément LyndaGoulet. Enfin,merciàmesparents,pourtout! Àmesparents Table des matières Résumé ii Abstract iii Avant-propos iv Tabledesmatières vi Listedestableaux ix Tabledesfigures x 1 Introduction 1 1.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Structuredelathèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Notionspréliminaires 5 2.1 Ensemblesetrelationsd’ordre . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Fonctionsetopérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Treillisetpointsfixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.4 Structuresalgébriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4.1 Demi-anneauidempotent . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4.2 AlgèbredeBoole . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4.3 Algèbredeslangagesformels . . . . . . . . . . . . . . . . . . . . . 18 2.4.4 Treillisetdemi-treillis . . . . . . . . . . . . . . . . . . . . . . . . . 20 3 Analysedeflotdedonnées 21 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2 Langageetabstractionsgraphiques . . . . . . . . . . . . . . . . . . . . . . . 23 3.2.1 Langagewhile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2.2 Abstractionsgraphiques . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3 Cadred’analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Tabledesmatières vii 3.3.1 Dualitésentreanalyses . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3.2 SolutionsMOPetMFP . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3.3 Algorithmeitératif . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.4 Exemples:analysesgen/kill . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.4.1 Classedesanalysesgen/kill . . . . . . . . . . . . . . . . . . . . . . 35 3.4.2 Approchedirigéeparlasyntaxe . . . . . . . . . . . . . . . . . . . . 40 4 AlgèbresdeKleene,extensionsetapplications 44 4.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2 Axiomatisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.1 AlgèbredeKleene . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2.2 AlgèbredeKleeneétoile-continue . . . . . . . . . . . . . . . . . . . 51 4.3 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.3.1 AlgèbredeKleeneavectests . . . . . . . . . . . . . . . . . . . . . . 53 4.3.2 AlgèbredeKleenebooléenne . . . . . . . . . . . . . . . . . . . . . 58 4.3.3 Autresextensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4 Modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.1 Modèlebooléen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.4.2 Modèlematriciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.4.3 Modèle«tropical» . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.5 Applicationàl’analyseetàlavérification . . . . . . . . . . . . . . . . . . . 68 5 AnalysedeflotdedonnéesbaséesurlesalgèbresdeKleene 70 5.1 Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.2 Cas particulier des analyses gen/kill : les analyses classiques DV, VV, ED et ETU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.2.1 ReprésentationdesGFC . . . . . . . . . . . . . . . . . . . . . . . . 74 5.2.2 ReprésentationdesSTE . . . . . . . . . . . . . . . . . . . . . . . . 81 5.2.3 LiensentrelesexpressionspourlesGFCetlesSTE . . . . . . . . . . 84 5.3 Cadregénéral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 5.3.1 Analyses(t,·) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 5.3.2 ExpressionsenAK . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 6 Preuvesd’intégrité 98 6.1 Preuved’intégritédel’approchebaséesurlesalgèbresdeKleeneversusl’ap- prochedirigéeparlasyntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . 98 6.1.1 Correspondanceentregen,killetG,K . . . . . . . . . . . . . . . . 99 6.1.2 Correspondanceentrein,outetI,O . . . . . . . . . . . . . . . . . . 101 6.2 Preuved’intégritédel’approchebaséesurlesalgèbresdeKleeneversusl’ap- procheitérative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 6.2.1 ApprochedeKotetKozen . . . . . . . . . . . . . . . . . . . . . . . 111 Tabledesmatières viii 6.2.2 Preuved’intégrité . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 7 Complexitéetalgorithmes 130 7.1 Complexitédel’approched’analysebaséesurlesalgèbresdeKleene . . . . . 130 7.2 UnalgorithmeenO(h·n)pourlesanalyses(t,·) . . . . . . . . . . . . . . . 132 7.3 Uneimplantationdenotreapproche . . . . . . . . . . . . . . . . . . . . . . 141 8 Conclusion 142 8.1 Travauxliés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 8.2 Travauxfuturs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Bibliographie 147 A AlgèbredeKleene:axiomatisation 153 B Listedelois 154 C Étoiled’unematricededimensionn×n,n > 2 157 Index 158 Liste des tableaux 3.1 Syntaxedulangagewhile. . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2 Valeursdegenetkillpourlesopérationsdeprogramme. . . . . . . . . . . . 38 3.3 Expressionsdegenetkillpourlesinstructionscomposites. . . . . . . . . . . 41 3.4 Liensentreinetout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.1 Syntaxedulangagewhile étendu. . . . . . . . . . . . . . . . . . . . . . . . 55 4.2 AbstractionenAKTdulangagewhileétendu. . . . . . . . . . . . . . . . . . 57 5.1 Paramètresgen/killexistentiels(«may»)deDVpourlesGFC. . . . . . . . . 76 5.2 Paramètresgen/killexistentiels(«may»)pourlesGFC. . . . . . . . . . . . . 79 5.3 Paramètresgen/killexistentiels(«may»)deDVpourlesSTE. . . . . . . . . 82 5.4 Paramètresgen/killexistentiels(«may»)pourlesSTE. . . . . . . . . . . . . 84 Table des figures 3.1 GFCetSTEdesstructuresdeprogrammecomposites. . . . . . . . . . . . . 25 3.2 GFCdel’exempled’analyseDV. . . . . . . . . . . . . . . . . . . . . . . . . 38 4.1 AutomatecorrespondantàlamatriceA. . . . . . . . . . . . . . . . . . . . . 62 4.2 Exempled’ungraphe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5.1 STEdel’exempled’analyseDV. . . . . . . . . . . . . . . . . . . . . . . . . 82 5.2 GFCversSTE:ajoutd’unnouveaunoeudd’entrée. . . . . . . . . . . . . . . 92
Description: